MWAA(2.8.1)环境下无法安装snowflake-connector-python问题求助
解决AWS MWAA私有环境安装snowflake-connector-python==3.6.0的冲突问题
问题根源
你遇到的冲突报错本质是MWAA自带的依赖约束文件和你指定的版本产生了重复约束冲突,而且把wheel包放进plugins.zip是错误的做法——plugins.zip仅用于存放Airflow自定义插件,不能用来安装Python依赖包。
解决步骤
1. 用requirements.txt管理依赖
MWAA要求通过requirements.txt来声明Python依赖,具体操作:
- 创建
requirements.txt文件,写入:snowflake-connector-python==3.6.0 - 如果还是触发约束冲突,需要覆盖MWAA的默认约束:
在requirements.txt开头添加对应Python版本的官方约束文件(你的环境是Python3.10,所以用这个):--constraint https://raw.githubusercontent.com/aws/aws-mwaa-local-runner/main/docker/config/requirements/constraints-3.10.txt snowflake-connector-python==3.6.0
2. 上传requirements.txt到S3并更新MWAA配置
- 将编辑好的
requirements.txt上传到你的MWAA对应的S3存储桶(比如s3://your-mwaa-bucket/requirements/requirements.txt) - 登录AWS控制台,找到你的MWAA环境,在“环境配置”中更新“Requirements file”的路径为上述S3路径,保存后触发环境更新。
3. 私有网络环境的额外处理
如果你的MWAA是完全私有、无法访问公网的:
- 下载
snowflake-connector-python==3.6.0及其所有依赖的wheel包到本地(可以用pip download snowflake-connector-python==3.6.0命令下载) - 把所有wheel包上传到S3的一个私有路径(比如
s3://your-mwaa-bucket/private-wheels/) - 修改
requirements.txt为:--find-links s3://your-mwaa-bucket/private-wheels/ snowflake-connector-python==3.6.0 - 确保MWAA的执行角色具有该S3路径的
s3:GetObject权限(在IAM角色策略中添加对应权限)
4. 验证安装
MWAA环境更新完成后,你可以:
- 在Airflow UI的Admin > Plugins页面查看是否有snowflake相关组件
- 编写一个简单的测试DAG,调用snowflake连接器,确认能正常连接
内容的提问来源于stack exchange,提问作者Bharath
相关产品推荐
相关产品推荐

