在AWS MWAA中,如何从S3的 requirements.txt自动安装最新版的Python包,而无需手动更新?

编程语言 2026-07-10

正文:

我正在使用AWS托管的Apache Airflow工作流(MWAA),其中 requirements.txt 文件存储在一个S3桶中,MWAA在环境更新时会进行同步。

当前设置:

  • requirements.txt 已上传到S3
  • MWAA环境会从该文件安装依赖
  • 对S3中该文件的任何更新都会触发依赖安装

我的需求:

我想要一个完全自动化的设置,在此场景下:

  • 我把 requirements.txt 上传到S3(就算只上传一次)
  • MWAA总是自动安装可用的最新版本的软件包
  • 无需手动干预(不需要固定版本或重复编辑文件)

例如:

requests
pandas

预期行为:

当MWAA处理来自S3的 requirements.txt 时:

  • 它应始终从PyPI获取并安装所列软件包的最新版本

关注点 / 问题:

  1. 在未指定版本时,MWAA是否始终安装最新版本,还是会缓存已安装的版本?
  2. 如果软件包已安装,MWAA在 S3更新时会自动重新安装更新的版本吗?
  3. 在MWAA中是否有任何机制可以在不修改文件的情况下强制从S3刷新/重新安装依赖?(此处加粗:强制刷新/重新安装依赖
  4. 是否有AWS推荐的模式(例如动态版本控制、CI/CD自动化或生命周期钩子)来实现这种行为?

目标:

为了避免为每个新版本的包手动更新 requirements.txt,在MWAA中实现一个 无人干预的依赖管理系统,尤其适用于POC或动态环境。

任何指导或实际经验都会非常有帮助。

谢谢!

解决方案

回答你的问题:

  1. 是的
  2. 当检测到requirements.txt发生变化时,MWAA会为整个环境部署新的容器。变化意味着校验和的变化,因此即使你在 requirements.txt 中添加一个空格或注释,也会触发对整个环境的更新。你应考虑将 Worker replacement strategy 设置为 GRACEFUL,这样如果替换了容器,就不会中断当前正在运行的作业(直到宽限期结束)
  3. 是的。如果你修改 自定义环境变量,也会强制更新,因此你可以设定一个自定义变量,只要你想强制更新环境就改变它的值。
  4. 这取决于你的部署方式以及你希望实现的目标。有人偏向把环境部署和DAG部署绑定在一起,有人则希望让两者解耦。最好咨询熟悉你具体需求的AWS专家。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章