0

我正在设置一个 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 模块和操作符使用什么文件结构?

4

2 回答 2

0

您的 DAG 将从 S3 同步到/usr/local/airflow/dags/. 您的requirements.zip将被解压缩到/usr/local/airflow/plugins/.

因此,请确保您的import陈述反映了该文件夹结构。

于 2021-10-18T15:54:26.033 回答
0

就我而言,我尝试集成的插件具有 v2.02 不再支持的 import 语句。不支持遵循“airflow.{operators, sensors, hooks}.<plugin_name> 的导入语句。

于 2021-11-04T19:21:49.607 回答