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

能否通过Amazon Managed Airflow的DAG执行EC2实例上的Python脚本?

Amazon Managed Airflow(MWAA)执行EC2实例上Python脚本的可行方案

以下3种常用落地方式可直接参考:

方案1:通过AWS Systems Manager(SSM) RunCommand远程执行 (推荐)

无需给EC2开放公网端口或SSH访问权限,安全性最高,适合生产环境使用。

前置要求

  • 目标EC2实例已安装SSM Agent,且实例绑定的IAM角色包含AmazonSSMManagedInstanceCore权限
  • MWAA 执行角色已添加SSM相关权限:ssm:SendCommand、ssm:GetCommandInvocation

实现步骤

  • 在MWAA DAG中使用SSMRunCommandOperator调用EC2上的Python脚本
  • 示例代码如下:
from airflow.providers.amazon.aws.operators.ssm import SSMRunCommandOperator

run_python_script = SSMRunCommandOperator(
    task_id="run_ec2_python_script",
    instance_ids=["i-xxxxxx"], # 替换为你的EC2实例ID
    document_name="AWS-RunShellScript",
    parameters={
        "commands": ["python3 /opt/scripts/your_script.py"], # 替换为EC2上Python脚本的绝对路径
        "workingDirectory": ["/opt/scripts/"] # 替换为脚本所在目录
    },
    wait_for_completion=True,
    aws_conn_id="aws_default" # MWAA默认已配置该连接,可直接使用
)

方案2:通过SSH Operator远程执行

适合习惯传统SSH访问、且EC2已经配置了SSH访问规则的场景。

前置要求

  • MWAA所在VPC与目标EC2的VPC已打通(同VPC或通过 peering 连接)
  • EC2安全组已开放22端口给MWAA的安全组入站
  • 已将EC2的SSH私钥存储到MWAA的 Secrets Manager 或者 Airflow 连接配置中

实现步骤

  • 在MWAA DAG中使用SSHOperator执行远程脚本
  • 示例代码如下:
from airflow.providers.ssh.operators.ssh import SSHOperator

run_python_script = SSHOperator(
    task_id="run_ec2_python_script",
    ssh_conn_id="ec2_ssh_conn", # 提前在Airflow连接中配置EC2的SSH信息:主机IP、用户名、私钥
    command="python3 /opt/scripts/your_script.py",
    cmd_timeout=3600 # 根据脚本执行时长调整超时时间
)

方案3:脚本无EC2本地依赖时的简化方案

如果你的Python脚本不依赖EC2上的本地文件、本地服务等专属资源,可以直接将脚本同步到MWAA关联的S3桶的dags/或者plugins/目录下,直接在MWAA DAG中通过PythonOperator调用执行,无需远程访问EC2。

注意事项

  • 需要同步脚本所有依赖包到MWAA的requirements.txt中
  • 如果脚本有外部存储读写需求,需要给MWAA执行角色添加对应服务(如S3、RDS等)的访问权限

注意:所有方案执行前都要先在EC2本地测试Python脚本的执行逻辑、权限配置正常,再放到MWAA上调度,减少调试成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:36:04