小编mca*_*izo的帖子

如何在AWS Lambda中运行DBT?

我目前已对 DBT 解决方案进行了 docker 化,并在 AWS Fargate 中启动它(从 Airflow 触发)。然而,Fargate 需要大约 1 分钟才能开始运行(图像拉取 + 资源配置 + 等),这对于长时间运行的执行(数小时)来说非常有用,但对于短时间运行的执行(1-5 分钟)来说则不然。

我尝试在 AWS Lambda 而不是 AWS Fargate 中运行我的 docker 容器以进行短期执行,但在此迁移过程中遇到了一些问题。

我无法修复的问题与运行时的以下消息有关dbt deps --profiles-dir . && dbt run -t my_target --profiles-dir . --select my_model

Running with dbt=0.21.0
Encountered an error:
[Errno 38] Function not implemented
Run Code Online (Sandbox Code Playgroud)

它说没有实现任何功能,但我看不到该功能的任何地方。正如在安装 dbt 软件包(redshift 和 dbt_utils)时出现的那样,我尝试下载它们并将它们包含在 docker 映像中(在packages.yml中设置本地路径),但没有任何改变。而且,DBT在这个阶段不写入任何日志(我在dbt_project.yml中将日志路径设置为/tmp,以便它可以在Lambda中具有写入权限),所以我很盲目。

深入研究这个问题,我发现这可能与 AWS Lamba 中的多处理问题有关(我的 docker 映像包含 python 脚本),如https://github.com/dbt-labs/dbt-core/issues/中所述2992 . 我使用该库从 python 运行 DBT …

aws-lambda dbt

4
推荐指数
1
解决办法
3635
查看次数

标签 统计

aws-lambda ×1

dbt ×1