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

Reply via email to