You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MWAA启动EC2实例的示例DAG运行失败问题咨询

MWAA 启动EC2实例DAG失败排障指南

你写的DAG逻辑本身没有语法问题,失败基本都是配置、权限、环境匹配类的问题,按以下顺序排查即可:

  • 实例ID配置校验
    代码中INSTANCE_ID = os.getenv("INSTANCE_ID", "instance-id")的逻辑是优先读名为INSTANCE_ID的环境变量,读不到就使用占位字符串instance-id。MWAA环境默认不会注入这个环境变量,如果你没有手动在MWAA环境的「环境变量」配置项中添加对应键值,代码会拿无效的占位ID调用EC2 API,直接触发「实例不存在」类错误。
    修复方式二选一:
    1. 直接将代码中该行替换为你的真实EC2实例ID,比如INSTANCE_ID = "i-0xxxxxxxxx"
    2. 到MWAA控制台的环境配置页,添加环境变量INSTANCE_ID,值为你的目标EC2实例ID。
  • 执行角色权限校验
    MWAA运行任务时使用的是你创建环境时绑定的执行角色,该角色默认不包含EC2实例操作、状态查询的权限,调用API时会直接被AWS IAM拒绝。
    你需要给该执行角色附加对应权限策略,最小权限参考如下:
    {
        "Effect": "Allow",
        "Action": [
            "ec2:StartInstances",
            "ec2:DescribeInstances"
        ],
        "Resource": "arn:aws-cn:ec2:*:*:instance/你的目标EC2实例ID"
    }
    
    *如果你使用的是AWS全球区,将ARN中的aws-cn替换为aws即可;如果需要批量操作多台实例,可以调整Resource字段的匹配规则。
  • 区域匹配校验
    EC2相关算子默认使用MWAA环境配置的默认AWS区域,如果你的目标EC2实例和MWAA环境不在同一个区域,会出现查不到实例的错误。
    修复方式:给EC2StartInstanceOperator和EC2InstanceStateSensor都添加region_name参数,值为EC2实例所在的区域代码,例如region_name="cn-north-1"。
  • 传感器配置优化
    默认配置的EC2状态传感器容易在MWAA环境中触发资源占用、超时类问题,建议调整参数适配MWAA运行特性:
    instance_state = EC2InstanceStateSensor(
        task_id="ec2_instance_state",
        instance_id=INSTANCE_ID,
        target_state="running",
        poke_interval=30,
        timeout=600,
        mode="reschedule"
    )
    
    参数说明:
    • poke_interval=30:每30秒查询一次实例状态,避免调用API过于频繁
    • timeout=600:最长等待10分钟,超过时间直接判定任务失败,避免无限等待
    • mode="reschedule":MWAA官方推荐的传感器运行模式,等待状态时释放worker资源,不会长时间占用工作槽位

另外你代码中导入了EC2StopInstanceOperator但没有实际使用,虽然不会直接触发报错,建议删除减少不必要的依赖加载。

排障前可以先手动在EC2控制台尝试启动目标实例,如果手动启动都失败(比如EBS卷异常、vCPU配额不足、配置错误),需要先解决EC2本身的启动问题,DAG才能正常运行。

内容的提问来源于stack exchange,提问作者Musa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:30:54