Skip to content

Commit

Permalink
delete subscription filter before removing permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
dasfmi committed Jul 22, 2024
1 parent 7d02287 commit 493227e
Showing 1 changed file with 13 additions and 10 deletions.
23 changes: 13 additions & 10 deletions subscriber.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def delete_subscription_filter(log_group_name: str):


def add_permission(statement_id: str, log_group_arn: str, lambda_arn: str):
logger.info(f"Creating permission for {lambda_arn}...")
logger.info(f"Creating permission for {log_group_arn}...")

lambda_client.add_permission(
FunctionName=lambda_arn,
Expand All @@ -103,11 +103,13 @@ def remove_permission(statement_id: str, lambda_arn: str):

def create_subscription_filter(log_group_arn: str, lambda_arn: str):
log_group_name = log_group_arn.split(":")[-2]
logger.info(f"Creating subscription filter for {log_group_name}...")
logger.info(f"Creating subscription filter for {log_group_name}")

filter_name = "%s-axiom" % log_group_name

cloudwatch_logs_client.put_subscription_filter(
logGroupName=log_group_name,
filterName="%s-axiom" % log_group_name,
filterName=filter_name,
filterPattern="",
destinationArn=lambda_arn,
distribution="ByLogStream",
Expand Down Expand Up @@ -142,6 +144,14 @@ def lambda_handler(event: dict, context=None):
# create invoke permission for lambda
cleaned_name = "-".join(group["name"].split("/")[3:])
statement_id = f"invoke-permission-for-{cleaned_name}"

# remove subscription filter if exists
try:
delete_subscription_filter(group["name"])
except Exception as e:
logger.warning(
f"failed to delete subscription filter for {group['name']}, {str(e)}"
)
# remove permission if exists
try:
remove_permission(statement_id, axiom_cloudwatch_forwarder_lambda_arn)
Expand All @@ -156,13 +166,6 @@ def lambda_handler(event: dict, context=None):
logger.error(f"Error removing/adding permission for {cleaned_name}: {e}")
continue

try:
delete_subscription_filter(group["name"])
except Exception as e:
logger.warning(
f"failed to delete subscription filter for {group['name']}, {str(e)}"
)

try:
create_subscription_filter(
group["arn"], axiom_cloudwatch_forwarder_lambda_arn
Expand Down

0 comments on commit 493227e

Please sign in to comment.