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

如何在AWS MWAA中使用自定义constraints.txt(无需外部托管)?

MWAA 自定义Python依赖约束文件相关问题解答

问题背景

当前使用AWS Managed Workflows for Apache Airflow(MWAA,版本2.10.1,Python 3.11),现有requirements.txt内容如下:

--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.10.1/constraints-3.11.txt"
apache-airflow-providers-snowflake==5.7.0
apache-airflow-providers-mysql==5.7.0
soda-core==3.5.2
soda-core-redshift==3.5.2
pymssql==2.3.1
pymongo
pymongo[aws]

希望创建自定义约束文件,但不想依赖外部托管(如GitHub、S3、HTTP端点),提出以下问题:

  1. 是否可以在MWAA中不依赖外部托管使用自定义约束文件?
  2. 若不可行,应用MWAA依赖自定义约束的推荐方式是什么?
  3. 将约束文件中的所有固定版本直接内联到requirements.txt是唯一可行的解决方案吗?

问题解答

1. 是否可以不依赖外部托管使用自定义约束文件?

不行。MWAA处理requirements.txt时,--constraint参数仅支持指向HTTP/HTTPS端点或S3对象URL的约束文件,无法直接引用MWAA环境内部或本地文件(包括DAG包中的约束文件),必须依赖外部托管地址。

2. MWAA依赖自定义约束的推荐方式

最推荐的方案是将自定义约束文件上传到与MWAA环境关联的S3桶中,然后在requirements.txt中使用S3对象URL作为约束地址:

--constraint "s3://<你的MWAA关联桶路径>/constraints-custom.txt"
apache-airflow-providers-snowflake==5.7.0
apache-airflow-providers-mysql==5.7.0
soda-core==3.5.2
soda-core-redshift==3.5.2
pymssql==2.3.1
pymongo
pymongo[aws]

需确保MWAA的执行角色拥有该S3对象的s3:GetObject权限,这种方式安全可控,能通过IAM精细管控权限,避免外部托管的可用性风险。

3. 内联版本是否是唯一可行方案?

不是唯一方案。除了内联版本到requirements.txt,还有两种可行方式:

  • 采用上述推荐的S3托管约束文件方案
  • 将约束文件托管到MWAA所在VPC可访问的内部HTTP服务器(如企业内部PyPI镜像、文件服务器)

内联版本虽可行,但会让requirements.txt冗长,维护成本高,尤其是依赖包数量较多时,S3托管或内部HTTP托管的方式更便于版本管理和维护。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 07:42:42