This is an automated email from the ASF dual-hosted git repository.
o-nikolas pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 0bc9e82ed25 Delete the CloudWatch log group left by
example_mwaa_serverless (#76810)
0bc9e82ed25 is described below
commit 0bc9e82ed258eab9d70a00fc419c1b07df7f9b77
Author: Ramit Kataria <[email protected]>
AuthorDate: Thu Nov 12 13:55:06 2026 -0700
Delete the CloudWatch log group left by example_mwaa_serverless (#76810)
MWAA Serverless creates a log group named
`/aws/mwaa-serverless/<workflow id>/` for every workflow that does not
bring its own, and `DeleteWorkflow` leaves it in place. The
`example_mwaa_serverless` system test never removed it, so each run
leaked one log group into the test account.
The workflow ID ends in a service-generated suffix, so the log group
name is derived at run time from the ARN returned by `create_workflow`.
Teardown copies the workflow logs into the task log and then deletes
the group, whether or not the run passed, as `example_dms` does.
The role running the test needs `logs:FilterLogEvents` and
`logs:DeleteLogGroup` on `log-group:/aws/mwaa-serverless/*`.
---
.../system/amazon/aws/example_mwaa_serverless.py | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git
a/providers/amazon/tests/system/amazon/aws/example_mwaa_serverless.py
b/providers/amazon/tests/system/amazon/aws/example_mwaa_serverless.py
index fb7551009a6..9cd5268ba0f 100644
--- a/providers/amazon/tests/system/amazon/aws/example_mwaa_serverless.py
+++ b/providers/amazon/tests/system/amazon/aws/example_mwaa_serverless.py
@@ -18,6 +18,8 @@ from __future__ import annotations
from datetime import datetime
+import boto3
+
from airflow.providers.amazon.aws.operators.mwaa_serverless import (
MwaaServerlessCreateWorkflowOperator,
MwaaServerlessDeleteWorkflowOperator,
@@ -31,7 +33,7 @@ from airflow.providers.amazon.aws.operators.s3 import (
S3DeleteBucketOperator,
)
from airflow.providers.amazon.aws.sensors.mwaa_serverless import
MwaaServerlessWorkflowRunSensor
-from airflow.providers.common.compat.sdk import DAG, chain
+from airflow.providers.common.compat.sdk import DAG, chain, task
from system.amazon.aws.utils import ENV_ID_KEY, SystemTestContextBuilder
from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS
@@ -77,6 +79,20 @@ systest_mwaa_serverless_stoppable:
sys_test_context_task =
SystemTestContextBuilder().add_variable(ROLE_ARN_KEY).build()
+
+@task(trigger_rule=TriggerRule.ALL_DONE)
+def print_and_delete_workflow_logs(workflow_arn: str):
+ """Copy the workflow logs into this task's log, then delete their
CloudWatch log group."""
+ # The service names the log group after the workflow ID, the last ARN
segment, which ends in
+ # a generated suffix. The name is therefore only known once the workflow
exists.
+ log_group_name = f"/aws/mwaa-serverless/{workflow_arn.rsplit('/', 1)[-1]}/"
+ logs_client = boto3.client("logs")
+ for page in
logs_client.get_paginator("filter_log_events").paginate(logGroupName=log_group_name):
+ for event in page["events"]:
+ print(event["message"])
+ logs_client.delete_log_group(logGroupName=log_group_name)
+
+
with DAG(
dag_id=DAG_ID,
schedule=None,
@@ -210,6 +226,7 @@ with DAG(
# TEST TEARDOWN
delete_workflow,
delete_bucket,
+ print_and_delete_workflow_logs(workflow_arn),
)
from tests_common.test_utils.watcher import watcher