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

MWAA(Apache Airflow)中EcsCreateClusterOperator导入错误

MWAA中指定AWS Provider 5.0.0后仍加载旧版本导致EcsCreateClusterOperator导入失败

问题重现

本地环境安装apache-airflow-providers-amazon==5.0.0后可正常使用EcsCreateClusterOperator,但部署到运行Airflow 2.2.2的MWAA时:

  • 已将apache-airflow-providers-amazon==5.0.0加入requirements.txt
  • UI和更新日志均显示该版本已安装
  • DAG启动时仍抛出导入错误:
ImportError: cannot import name 'EcsCreateClusterOperator' from 'airflow.providers.amazon.aws.operators.ecs' (/usr/local/lib/python3.7/site-packages/airflow/providers/amazon/aws/operators/ecs.py)

原因是MWAA默认预装的AWS Provider版本为2.4,且Airflow优先加载系统路径下的旧版本库,而非用户安装的5.0.0版本。

解决方案

1. 验证实际加载的Provider版本

先确认Airflow实际加载的AWS Provider版本,添加一个检查任务到DAG中:

from airflow.operators.python import PythonOperator
import airflow.providers.amazon.aws

def print_provider_version():
    print(f"AWS Provider version in use: {airflow.providers.amazon.aws.__version__}")

with DAG(...) as dag:
    check_version_task = PythonOperator(
        task_id="check_aws_provider_version",
        python_callable=print_provider_version
    )

执行后查看日志,确认是否为5.0.0。

2. 强制优先加载用户安装的包

MWAA会将用户通过requirements.txt安装的包放在/usr/local/airflow/.local/lib/python3.7/site-packages路径下,在DAG开头添加代码,将该路径加入sys.path最前端,确保优先加载用户版本:

import sys
from pathlib import Path

# 将用户安装包路径插入sys.path首位
user_package_path = str(Path.home() / ".local" / "lib" / "python3.7" / "site-packages")
sys.path.insert(0, user_package_path)

# 之后再导入目标Operator
from airflow.providers.amazon.aws.operators.ecs import EcsCreateClusterOperator

3. 强制重新安装指定版本

在requirements.txt中添加pip参数,确保覆盖旧版本:

apache-airflow-providers-amazon==5.0.0 --force-reinstall --no-cache-dir

重新部署MWAA环境,让系统重新下载并安装指定版本,避免缓存或旧版本残留。

4. 确认版本兼容性

Airflow 2.2.2与apache-airflow-providers-amazon 5.0.0是兼容的(5.0.0要求Airflow≥2.2.0),无需担心版本冲突问题。

内容的提问来源于stack exchange,提问作者Armando Fa Menor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:25:20