gpt4 book ai didi

bash - 在 Google Cloud Composer 上使用 Airflow 运行 shell 脚本文件

转载 作者:行者123 更新时间:2023-12-04 13:08:33 25 4
gpt4 key购买 nike

我有几个多用途的 shell 脚本存储在 .sh 中。文件。我的目的是在 Cloud Composer 上构建一些将利用这些脚本的 Airflow DAG。 DAG 将主要由 BashOperator 组成,这些 BashOperator 使用特定参数调用脚本。
这是一个简单的例子,greeter.sh :

#!/bin/bash
echo "Hello, $1!"
我可以像这样在本地运行它:
bash greeter.sh world
> Hello, world!
让我们编写一个简单的 DAG:
# import and define default_args

dag = DAG('bash_test',
description='Running a local bash script',
default_args=default_args,
schedule_interval='0,30 5-23 * * *',
catchup=False,
max_active_runs=1)

bash_task = BashOperator(
task_id='run_command',
bash_command=f"bash greeter.sh world",
dag=dag
)
但是在哪里放置脚本 greeter.sh ?我试着把它都放在 dags/文件夹和 data/文件夹,位于第一级或嵌套在 dependencies/ 中目录。我也尝试将地址写为 ./greeter.sh .毫无意义:我永远找不到文件。
我也尝试使用 sh代替 bash我得到一个不同的错误: sh: 0: Can't open greeter.sh .但是当文件不存在时也会出现这个错误,所以这是同样的问题。与任何尝试运行 chmod +rx 相同.
如何使我的文件可用于 Airflow?

最佳答案

this question上的评论揭晓答案。dags_folder的地址存储在 DAGS_FOLDER环境变量。
获取存储在 dags_folder/ 中的脚本的正确地址:

import os

DAGS_FOLDER = os.environ["DAGS_FOLDER"]
file = f"{DAGS_FOLDER}/greeter.sh"

关于bash - 在 Google Cloud Composer 上使用 Airflow 运行 shell 脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68213023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com