如何以unix用户身份运行apache-dag

nwlls2ji  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(414)

我在集群上使用 root 帐户。我知道这是不好的做法,但这只是测试环境。我创建了一个简单的dag:

from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta

dag = DAG('create_directory', description='simple create directory workflow', start_date=datetime(2017, 6, 1))

t1 = BashOperator(task_id='create_dir', bash_command='mkdir /tmp/airflow_dir_test', dag=dag)

t2 = BashOperator(task_id='create_file', bash_command='echo airflow_works > /tmp/airflow_dir_test/airflow.txt')

t2.set_upstream(t1)

问题是当我运行这个作业时 root 用户执行它。我试图补充 owner 参数,但它不起作用。气流显示:

Broken DAG: [/opt/airflow/dags/create_directory.py] name 'user1' is not defined

我的问题是,如何使用root以外的其他用户运行apache-dag?

p5fdfcr1

p5fdfcr11#

你可以用 run_as_user 用于为任何任务模拟unix用户的参数:

t1 = BashOperator(task_id='create_dir', bash_command='mkdir /tmp/airflow_dir_test', dag=dag, run_as_user='user1')

你可以用 default_args 如果要将其应用于dag中的每个任务:

dag = DAG('create_directory', description='simple create directory workflow', start_date=datetime(2017, 6, 1), default_args={'run_as_user': 'user1'})

t1 = BashOperator(task_id='create_dir', bash_command='mkdir /tmp/airflow_dir_test', dag=dag)

t2 = BashOperator(task_id='create_file', bash_command='echo airflow_works > /tmp/airflow_dir_test/airflow.txt')

请注意 owner 参数用于其他对象,即多租户。

相关问题