Skip to content

Commit d5e03a0

Browse files
committed
working on metric/filters deployed via sns config
1 parent 1643e63 commit d5e03a0

File tree

1 file changed

+26
-18
lines changed
  • aws_sra_examples/solutions/genai/bedrock_org/lambda/src

1 file changed

+26
-18
lines changed

aws_sra_examples/solutions/genai/bedrock_org/lambda/src/app.py

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,8 @@ def get_filter_params(filter_name, resource_properties):
316316
Returns:
317317
tuple: (filter_deploy, filter_pattern)
318318
filter_deploy (bool): whether to deploy the filter
319+
filter_accounts (list): list of accounts to deploy the filter to
320+
filter_regions (list): list of regions to deploy the filter to
319321
filter_params (dict): dictionary of filter parameters
320322
"""
321323
if filter_name.upper() in resource_properties:
@@ -333,20 +335,20 @@ def get_filter_params(filter_name, resource_properties):
333335
else:
334336
LOGGER.info(f"{filter_name.upper()} 'deploy' parameter not found in event ResourceProperties; setting to False")
335337
filter_deploy = False
336-
# if "accounts" in metric_filter_params:
337-
# LOGGER.info(f"{filter_name.upper()} 'accounts' parameter found in event ResourceProperties")
338-
# filter_accounts = metric_filter_params["accounts"]
339-
# LOGGER.info(f"{filter_name.upper()} accounts: {filter_accounts}")
340-
# else:
341-
# LOGGER.info(f"{filter_name.upper()} 'accounts' parameter not found in event ResourceProperties")
342-
# filter_accounts = []
343-
# if "regions" in metric_filter_params:
344-
# LOGGER.info(f"{filter_name.upper()} 'regions' parameter found in event ResourceProperties")
345-
# filter_regions = metric_filter_params["regions"]
346-
# LOGGER.info(f"{filter_name.upper()} regions: {filter_regions}")
347-
# else:
348-
# LOGGER.info(f"{filter_name.upper()} 'regions' parameter not found in event ResourceProperties")
349-
# filter_regions = []
338+
if "accounts" in metric_filter_params:
339+
LOGGER.info(f"{filter_name.upper()} 'accounts' parameter found in event ResourceProperties")
340+
filter_accounts = metric_filter_params["accounts"]
341+
LOGGER.info(f"{filter_name.upper()} accounts: {filter_accounts}")
342+
else:
343+
LOGGER.info(f"{filter_name.upper()} 'accounts' parameter not found in event ResourceProperties")
344+
filter_accounts = []
345+
if "regions" in metric_filter_params:
346+
LOGGER.info(f"{filter_name.upper()} 'regions' parameter found in event ResourceProperties")
347+
filter_regions = metric_filter_params["regions"]
348+
LOGGER.info(f"{filter_name.upper()} regions: {filter_regions}")
349+
else:
350+
LOGGER.info(f"{filter_name.upper()} 'regions' parameter not found in event ResourceProperties")
351+
filter_regions = []
350352
if "filter_params" in metric_filter_params:
351353
LOGGER.info(f"{filter_name.upper()} 'filter_params' parameter found in event ResourceProperties")
352354
filter_params = metric_filter_params["filter_params"]
@@ -356,8 +358,8 @@ def get_filter_params(filter_name, resource_properties):
356358
filter_params = {}
357359
else:
358360
LOGGER.info(f"{filter_name.upper()} filter parameter not found in event ResourceProperties; skipping...")
359-
return False, {}
360-
return filter_deploy, filter_params
361+
return False, [], [], {}
362+
return filter_deploy, filter_accounts, filter_regions, filter_params
361363

362364

363365
def build_s3_metric_filter_pattern(bucket_names: list, filter_pattern_template: str) -> str:
@@ -527,12 +529,15 @@ def deploy_metric_filters_and_alarms(region, accounts, resource_properties):
527529
global DRY_RUN_DATA
528530
global LIVE_RUN_DATA
529531
global CFN_RESPONSE_DATA
530-
531532
LOGGER.info(f"CloudWatch Metric Filters: {CLOUDWATCH_METRIC_FILTERS}")
532533
for filter in CLOUDWATCH_METRIC_FILTERS:
533-
filter_deploy, filter_params = get_filter_params(filter, resource_properties)
534+
filter_deploy, filter_accounts, filter_regions, filter_params = get_filter_params(filter, resource_properties)
534535
LOGGER.info(f"{filter} parameters: {filter_params}")
535536
if filter_deploy is False:
537+
LOGGER.info(f"{filter} filter not requested (deploy set to false). Skipping...")
538+
continue
539+
if region not in filter_regions:
540+
LOGGER.info(f"{filter} filter not requested for {region}. Skipping...")
536541
continue
537542
LOGGER.info(f"Raw filter pattern: {CLOUDWATCH_METRIC_FILTERS[filter]}")
538543
if "BUCKET_NAME_PLACEHOLDER" in CLOUDWATCH_METRIC_FILTERS[filter]:
@@ -548,6 +553,9 @@ def deploy_metric_filters_and_alarms(region, accounts, resource_properties):
548553
# for region in regions:
549554
# 4a) Deploy KMS keys
550555
# 4ai) KMS key for SNS topic used by CloudWatch alarms
556+
if acct not in filter_accounts:
557+
LOGGER.info(f"{filter} filter not requested for {acct}. Skipping...")
558+
continue
551559
kms.KMS_CLIENT = sts.assume_role(acct, sts.CONFIGURATION_ROLE, "kms", region)
552560
search_alarm_kms_key, alarm_key_alias, alarm_key_id = kms.check_alias_exists(kms.KMS_CLIENT, f"alias/{ALARM_SNS_KEY_ALIAS}")
553561
if search_alarm_kms_key is False:

0 commit comments

Comments
 (0)