如何 运行 Apache Airflow DAG 作为 Unix 用户
How to run Apache Airflow DAG as Unix user
我使用 root
帐户在我的集群上安装了 Apache Airflow。我知道这是不好的做法,但这只是测试环境。我创建了一个简单的 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
我的问题是,我如何 运行 Apache Airflow DAG 使用 root 以外的其他用户?
您可以使用 run_as_user
参数来 impersonate unix 用户执行任何任务:
t1 = BashOperator(task_id='create_dir', bash_command='mkdir /tmp/airflow_dir_test', dag=dag, run_as_user='user1')
如果您想将它应用到 DAG 中的每个任务,您可以使用 default_args
:
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
参数用于其他用途,multi-tenancy。
我使用 root
帐户在我的集群上安装了 Apache Airflow。我知道这是不好的做法,但这只是测试环境。我创建了一个简单的 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
我的问题是,我如何 运行 Apache Airflow DAG 使用 root 以外的其他用户?
您可以使用 run_as_user
参数来 impersonate unix 用户执行任何任务:
t1 = BashOperator(task_id='create_dir', bash_command='mkdir /tmp/airflow_dir_test', dag=dag, run_as_user='user1')
如果您想将它应用到 DAG 中的每个任务,您可以使用 default_args
:
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
参数用于其他用途,multi-tenancy。