我正在非公共网络上部署带有 Airflow 版本 2.10.1 的 MWAA,并具有以下要求文件:
--find-links /usr/local/airflow/plugins
--no-index
pyarrow==14.0.2
filelock==3.15.4
platformdirs==4.2.2
pydantic==2.8.2
virtualenv==20.26.3
distlib==0.3.8
snowflake-connector-python==3.12.1
snowflake-sqlalchemy==1.6.1
astronomer-cosmos==1.7.1
apache-airflow-providers-snowflake==5.7.0
我认识到包含约束文件的标准,但由于我在专用网络上,它无论如何都找不到标准约束文件。我在日志文件中收到以下错误:
WARNING: Constraints should be specified for requirements.txt. Please see https://docs.aws.amazon.com/mwaa/latest/userguide/working-dags-dependencies.html#working-dags-dependencies-test-create
Forcing local constraints
Defaulting to user installation because normal site-packages is not writeable
Looking in links: /usr/local/airflow/plugins
ERROR: Cannot install pyarrow==14.0.2 because these package versions have conflicting dependencies.
The conflict is caused by:
The user requested pyarrow==14.0.2
The user requested (constraint) pyarrow==14.0.2
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip to attempt to solve the dependency conflict
当我使用与 aws-mwaa-local-runner 相同的插件文件夹进行本地部署时,这工作正常,但当我在 AWS 上部署时,这不起作用。另外,我的startup.sh 文件中没有任何内容。
以下是 pyarrow 的插件文件中的内容: pyarrow-14.0.2-cp311-cp311-manylinux_2_28_x86_64.whl
有什么想法吗?
从 Apache Airflow v2.7.2 开始,requirements.txt 文件必须包含 --constraint 语句。 Amazon MWAA 强制执行此操作是为了确保您的需求文件中的包与您正在使用的 Apache Airflow 的特定版本之间的兼容性。
如果您不提供自定义约束文件,MWAA 将应用默认约束文件以避免版本冲突。但是,由于您位于专用网络上,无法访问标准约束文件,因此您可以创建一个本地约束文件并直接在您的requirements.txt 文件中引用它:
--constraint /plugins/local-constraints.txt
更多详情请参阅MWAA文档