首页 > 解决方案 > 如何将 DBT 与 AWS Managed Airflow 结合使用?

问题描述

希望你一切顺利。我想检查是否有人在 aws mwaa 气流中启动并运行 dbt。

我已经尝试过这个这个python 包但没有成功,但由于某种原因失败(找不到 dbt 路径等)。

有没有人设法使用 MWAA (Airflow 2) 和 DBT 而无需构建 docker 映像并将其放置在某个地方?

谢谢!

标签: amazon-web-servicesairflowdbtmwaa

解决方案


我通过执行以下步骤设法解决了这个问题:

  1. 添加dbt-core==0.19.1到您的requirements.txt
  2. 将 DBT cli 可执行文件添加到 plugins.zip
#!/usr/bin/env python3
# EASY-INSTALL-ENTRY-SCRIPT: 'dbt-core==0.19.1','console_scripts','dbt'
__requires__ = 'dbt-core==0.19.1'
import re
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(
        load_entry_point('dbt-core==0.19.1', 'console_scripts', 'dbt')()
    )

从这里你有两个选择:

  1. dbt_bin 运算符参数设置为/usr/local/airflow/plugins/dbt
  2. 按照文档添加/usr/local/airflow/plugins/$PATH

环境变量设置器示例:

from airflow.plugins_manager import AirflowPlugin
import os

os.environ["PATH"] = os.getenv(
    "PATH") + ":/usr/local/airflow/.local/lib/python3.7/site-packages:/usr/local/airflow/plugins/"


class EnvVarPlugin(AirflowPlugin):
    name = 'env_var_plugin'

插件压缩内容:

plugins.zip
├── dbt (DBT cli executable)
└── env_var_plugin.py (environment variable setter)

推荐阅读