我正在设置一个 AWS MWAA 实例。
我有自定义运算符,它们本身引用其他 python 文件。我遵循了此处建议的目录结构(由 astronomer.io 提供),并且能够毫无问题地在本地部署我的气流环境。
但是,将我的代码库移动到 S3 存储桶时,AWS 服务无法找到我的自定义运算符。
我在 S3 存储桶上的文件结构如下所示:
- s3://{我的存储桶名称}
- 达格斯
- <dag 1>.py
- ETC...
- 要求.txt
- 插件.zip
- 达格斯
我的 plugins.zip 文件结构看起来像
- 插件.zip
- 库
- <我的自定义库 1>.py
- ETC...
- 运营商
- <导入自定义库 1 的操作符>.py
- ETC...
- 库
但是我收到错误:
ModuleNotFoundError: No module named 'operators'
服务启动后从 python 开始。
我知道一些文档对这些附加模块使用气流“插件”结构,但这似乎没有必要,甚至在我在这里分享的第一个链接中建议不要这样做:
...根据 Airflow 文档,可以使用 Airflow 的插件机制添加 [插件]。然而,这使问题过于复杂,并导致许多人感到困惑。Airflow 甚至正在考虑弃用使用插件机制来处理钩子和操作符。
有谁知道在 MWAA 中导入简单的自定义 python 模块和操作符使用什么文件结构?