Skip to content

Commit

Permalink
support for parameters without slashes
Browse files Browse the repository at this point in the history
  • Loading branch information
kefi550 committed Oct 20, 2024
1 parent 9d2871b commit 98f4809
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 15 deletions.
49 changes: 36 additions & 13 deletions custom-resource-handler/remote-parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

import boto3
from boto3.session import Session
from botocore.exceptions import ClientError
import traceback

def get_ssm_client(region_name, role_arn=None, session_name=None):
if role_arn:
Expand All @@ -18,19 +20,40 @@ def get_ssm_client(region_name, role_arn=None, session_name=None):

def get_parameters(region_name, path, role_arn=None, session_name=None):
client = get_ssm_client(region_name, role_arn, session_name)
paginator = client.get_paginator('get_parameters_by_path')
response_iterator = paginator.paginate(
Path=path,
Recursive=True,
WithDecryption=True,
PaginationConfig={
'MaxItems': 100,
'PageSize': 10,
}
)
result = []
for x in response_iterator:
result += x["Parameters"]

try:
response = client.get_parameter(
Name=path,
WithDecryption=True,
)
if response["Parameter"]:
result += [response["Parameter"]]
except ClientError as e:
if e.response['Error']['Code'] == 'ValidationException':
traceback.print_exc()
else:
raise

try:
paginator = client.get_paginator('get_parameters_by_path')
response_iterator = paginator.paginate(
Path=path,
Recursive=True,
WithDecryption=True,
PaginationConfig={
'MaxItems': 100,
'PageSize': 10,
}
)
for x in response_iterator:
result += x["Parameters"]
except ClientError as e:
# Continue when ValidationException due to parameters without slashes
if e.response['Error']['Code'] == 'ValidationException':
traceback.print_exc()
else:
raise
output = {}
for x in result:
output[x["Name"]] = x["Value"]
Expand Down Expand Up @@ -74,4 +97,4 @@ def on_update(event):

def on_delete(event):
physical_id = event.get("PhysicalResourceId")
print("delete resource %s" % physical_id)
print("delete resource %s" % physical_id)
5 changes: 4 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,10 @@ export class RemoteParameters extends Construct {
});

onEvent.addToRolePolicy(new iam.PolicyStatement({
actions: ['ssm:GetParametersByPath'],
actions: [
'ssm:GetParameter',
'ssm:GetParametersByPath',
],
resources: ['*'],
}));

Expand Down
2 changes: 1 addition & 1 deletion test/__snapshots__/integ.main.test.ts.snap

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 98f4809

Please sign in to comment.