在AWS MWAA中,如何从S3的 requirements.txt自动安装最新版的Python包,而无需手动更新?
正文:
我正在使用AWS托管的Apache Airflow工作流(MWAA),其中 requirements.txt 文件存储在一个S3桶中,MWAA在环境更新时会进行同步。
当前设置:
requirements.txt已上传到S3- MWAA环境会从该文件安装依赖
- 对S3中该文件的任何更新都会触发依赖安装
我的需求:
我想要一个完全自动化的设置,在此场景下:
- 我把
requirements.txt上传到S3(就算只上传一次) - MWAA总是自动安装可用的最新版本的软件包
- 无需手动干预(不需要固定版本或重复编辑文件)
例如:
requests
pandas
预期行为:
当MWAA处理来自S3的 requirements.txt 时:
- 它应始终从PyPI获取并安装所列软件包的最新版本
关注点 / 问题:
- 在未指定版本时,MWAA是否始终安装最新版本,还是会缓存已安装的版本?
- 如果软件包已安装,MWAA在 S3更新时会自动重新安装更新的版本吗?
- 在MWAA中是否有任何机制可以在不修改文件的情况下强制从S3刷新/重新安装依赖?(此处加粗:强制刷新/重新安装依赖)
- 是否有AWS推荐的模式(例如动态版本控制、CI/CD自动化或生命周期钩子)来实现这种行为?
目标:
为了避免为每个新版本的包手动更新 requirements.txt,在MWAA中实现一个 无人干预的依赖管理系统,尤其适用于POC或动态环境。
任何指导或实际经验都会非常有帮助。
谢谢!
解决方案
回答你的问题:
- 是的
- 当检测到requirements.txt发生变化时,MWAA会为整个环境部署新的容器。变化意味着校验和的变化,因此即使你在
requirements.txt中添加一个空格或注释,也会触发对整个环境的更新。你应考虑将 Worker replacement strategy 设置为GRACEFUL,这样如果替换了容器,就不会中断当前正在运行的作业(直到宽限期结束) - 是的。如果你修改 自定义环境变量,也会强制更新,因此你可以设定一个自定义变量,只要你想强制更新环境就改变它的值。
- 这取决于你的部署方式以及你希望实现的目标。有人偏向把环境部署和DAG部署绑定在一起,有人则希望让两者解耦。最好咨询熟悉你具体需求的AWS专家。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。