传递给 Shell 脚本的气流参数

Airflow parameter passing to Shell script

我正在尝试在我的气流 DAG 中调用 shell 脚本并传递一些如下所述的参数,

def load_data_parameters():
   today_date = '{{ ds }}'
   environment = config.get('common', 'env') 
   return today_date,environment

today_date,environment = load_data_parameters()

EdgeToRaw_Command ="./scripts/test.sh"

Test = BashOperator(
        task_id= 'Test-Task',
        bash_command=EdgeToRaw_Command,
        params = {'env': environment},
        dag=dag)

在 shell 脚本中,

envi=
echo $envi

有人可以帮助解决这个问题,或者告诉我如何将参数传递给调用脚本以执行某些任务的 BashOperator。

在您的 shell 脚本中,您需要具有以下内容

envi={{params.env}}
echo $envi

基本上,无论您传递给 BashOperator 中的 params 参数,都需要由 {{params.PARAMETER_NAME}}

调用

编辑:

注意:您的 "scripts" 文件夹应该与您的 Dag 文件位于同一文件夹中。因此,如果您的 dag 在“/usr/local/airflow/dags”下,您的 "scripts" 文件夹应该在 dame 文件夹中。并且您需要在 bash_command 中传递相对路径,即 "scripts/test.sh"