@@ -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
363365def 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