Skip to content

Commit 3b35473

Browse files
committed
skip filter deploy if log group doesn't exist
1 parent 6c1a61f commit 3b35473

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1058,6 +1058,11 @@ def deploy_metric_filters_and_alarms(region: str, accounts: list, resource_prope
10581058
cloudwatch.CWLOGS_CLIENT = sts.assume_role(acct, sts.CONFIGURATION_ROLE, "logs", region)
10591059
cloudwatch.CLOUDWATCH_CLIENT = sts.assume_role(acct, sts.CONFIGURATION_ROLE, "cloudwatch", region)
10601060
LOGGER.info(f"Filter deploy parameter is 'true'; deploying {filter_name} CloudWatch metric filter...")
1061+
search_log_group, log_group_arn = cloudwatch.find_log_group(filter_params["log_group_name"])
1062+
if search_log_group is False:
1063+
LOGGER.info(f"Log group {filter_params['log_group_name']} not found! Skipping {filter_name} filter deployment...")
1064+
LIVE_RUN_DATA[f"{filter_name}_CloudWatch"] = f"Log group {filter_params['log_group_name']} not found! Skipped {filter_name} filter deployment."
1065+
continue
10611066
deploy_metric_filter(
10621067
region, acct, filter_params["log_group_name"], filter_name, filter_pattern, f"{filter_name}-metric", "sra-bedrock", "1"
10631068
)

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,3 +568,30 @@ def delete_dashboard(self, dashboard_name: str) -> None:
568568
except ClientError as e:
569569
self.LOGGER.info(self.UNEXPECTED)
570570
raise ValueError(f"Unexpected error executing Lambda function. {e}") from None
571+
572+
def find_log_group(self, log_group_name: str) -> tuple[bool, str]:
573+
"""Find the CloudWatch log group for SRA in the organization.
574+
575+
Args:
576+
log_group_name (str): name of the log group
577+
578+
Raises:
579+
ValueError: unexpected error
580+
581+
Returns:
582+
tuple[bool, str]: True if the log group is found, False if not, and the log group ARN
583+
"""
584+
try:
585+
response = self.CWLOGS_CLIENT.describe_log_groups(logGroupNamePrefix=log_group_name)
586+
for log_group in response["logGroups"]:
587+
if log_group["logGroupName"] == log_group_name:
588+
self.LOGGER.info(f"CloudWatch log group {log_group_name} found: {log_group['arn']}")
589+
return True, log_group["arn"]
590+
self.LOGGER.info(f"CloudWatch log group {log_group_name} not found")
591+
return False, ""
592+
except ClientError as error:
593+
if error.response["Error"]["Code"] == "ResourceNotFoundException":
594+
self.LOGGER.info(f"CloudWatch log group {log_group_name} not found. Error code: {error.response['Error']['Code']}")
595+
return False, ""
596+
self.LOGGER.info(self.UNEXPECTED)
597+
raise ValueError(f"Unexpected error executing Lambda function. {error}") from None

0 commit comments

Comments
 (0)