YEAR Apache Airflow DAG 错误导入 EcsOperator

MWAA Apache Airflow DAG error importing EcsOperator

我正在尝试将 Airfow DAG 部署到 MWAA。

我的requirements.txt:

apache-airflow[amazon] == 3.2.0

我这样导入 EcsOperator

from airflow.contrib.operators.ecs_operator import EcsOperator

但是,我得到这个错误:

Broken DAG: [/usr/local/airflow/dags/mydag.py] Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/usr/local/airflow/dags/mydag.py", line 4, in <module>
    from airflow.contrib.operators.ecs_operator import EcsOperator
ImportError: cannot import name 'EcsOperator' from 'airflow.contrib.operators.ecs_operator' (/usr/local/lib/python3.7/site-packages/airflow/contrib/operators/ecs_operator.py)

我做错了什么?

What am I doing wrong here?

您可能引用了不同版本的 Airflow 文档(1.10.12?)。

airflow.contrib.operators.ecs_operator (1.10.12)

3.2.0 的文档是 here。您可以像这样导入 EcsOperator

from airflow.providers.amazon.aws.operators.ecs import EcsOperator

airflow.providers.amazon.aws.operators.ecs (3.2.0)

正确的requirements.txt


(空)

以及正确的导入:

from airflow.providers.amazon.aws.operators.ecs import ECSOperator

注意大小写!

这里有几个问题,所以我会编译一个详细的答案,因为以前的答案没有涵盖所有问题。

首先,更新后的导入路径(provider release 3.2.0)为:

from airflow.providers.amazon.aws.operators.ecs import EcsOperator

这对您不起作用的原因是因为您安装了带有附加功能的提供程序:

apache-airflow[amazon]

provider extra docs 中所述,当以这种方式安装提供程序时,您将获得在您使用的 Airflow 版本时发布的提供程序版本。因此,您不能保证获得更新的提供程序版本。因此,如果您使用的是 Airflow 2.2.4(在撰写此答案时为最新版本),您将获得亚马逊提供商版本 3.0.0,这不是最新版本。

要获取更新的提供程序,您应该将其安装为:

pip install apache-airflow-providers-amazon

如果您想选择特定版本,则:

pip install apache-airflow-providers-amazon==3.2.0

请注意,您应该始终从 Airflow 提供的约束文件进行安装。示例:

pip install "apache-airflow-providers-amazon" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-3.7.txt"

请注意,提供商指的是不断更新的 constraints-main,而不是 constraints-2.2.4 或任何其他特定的 Airflow 版本。 您可以在有关 Installation and upgrading of Airflow providers separately.

的文档中阅读更多相关信息