2

我正在设置 AWS MWAA 实例,但在导入自定义插件时遇到问题。

我的本地项目结构如下所示:

airflow-project
├── dags 
│   └── dag1.py  
└── plugins
    ├── __init__.py
    └── operators
        ├── __init__.py
        └── customopertaor.py

我尝试在 s3 存储桶中匹配此结构:

s3://{my-bucket-name}
└── DAGS
    ├── dags 
    │   └── dag1.py  
    └── plugins
        ├── __init__.py
        └── operators
            ├── __init__.py
            └── customopertaor.py

但是,当我在本地项目上使用自定义运算符时,导入的工作方式如下 -

from operators import customOperators

在 MWAA 上它只承认这样的进口 -

from plugins.operators import customOperators

有没有办法让 MWAA 将进口识别为本地(来自运营商)?我应该以某种方式将文件上传到s3吗?

我还尝试上传 plugins.zip 文件,但没有成功:

s3://{my-bucket-name}
├── DAGS
│   └── dags 
│       └── dag1.py  
└── plugins.zip
4

2 回答 2

0

我相信正确的方法是将您的自定义 python 模块放在 plugin.zip 文件中。此文件将上传到 MWAA 并提取到/usr/local/airflow/plugins/. 我相信 DAG 放在同一个文件夹中。

AWS 发布了一份用户指南,其中提供了一些很好的解释和示例。

于 2021-10-14T13:58:01.727 回答
0

我有同样的问题,我在我的.zip文件中解决了它。在我的例子中,.zip文件内部的结构创建了一个名为 plugins 的额外文件夹。使用unzip -l plugins.zip并查看生成的树。这是我的工作结构:

Archive:  plugins.zip
Length      Date    Time    Name
    0  10-18-2021 11:39   hooks/
  125  10-18-2021 11:40   hooks/my_airflow_hook.py
    0  10-18-2021 11:40   sensors/
  359  10-18-2021 11:40   sensors/my_airflow_sensor.py
  395  10-18-2021 13:28   my_airflow_plugin.py
    0  10-18-2021 11:42   operators/
  437  10-18-2021 11:42   operators/hello_operator.py
  480  10-18-2021 11:42   operators/my_airflow_operator.py
于 2021-10-18T20:19:09.960 回答