2016-07-26 50 views
0

我的任務代碼如下。我應該如何在AIRFLOW中使用「所有者」而非shell所有者運行任務

from airflow.models import DAG 
from airflow.operators import BashOperator 
from datetime import datetime, timedelta 
rootdir = "/tmp/airflow" 
default_args = { 
    'owner': 'max', 
    'depends_on_past': False, 
    'start_date': datetime.now(), 
    'email': ['[email protected]'], 
    'email_on_failure': False, 
    'email_on_retry': False, 
    'retries': 1, 
    'retry_delay': timedelta(minutes=5), 
} 
dag = DAG('test3', default_args=default_args, 
        schedule_interval='*/2 * * * *') 
t1 = BashOperator(
    task_id='test3-task1', 
    bash_command='date >> {rootdir}/test3-task1.out'.format(rootdir=rootdir), 
    owner='max', 
    dag=dag) 
t2 = BashOperator(
    task_id='test3-task2', 
    bash_command='whoami', 
    retries=3, 
    owner='max', 
    dag=dag) 

然後我用linux的'airflow'用戶運行命令「airflow test test3 test3-task2 2016-07-25」。輸出結果「whoami」是「氣流」。 但我希望輸出結果是任務的「所有者」。

我的錯誤是什麼?

謝謝

以下是輸出結果。

[2016年7月25日11:22:37716] {bash_operator.py:64} INFO - 臨時腳本位置:/ TMP/airflowtmpoYNJE8 // TMP/airflowtmpoYNJE8/TEST3-task2U1lpom

[2016-07 -25 11:22:37716] {bash_operator.py:65} INFO - 運行命令:WHOAMI

[2016年7月25日11:22:37722] {bash_operator.py:73} INFO - 輸出:

[2016-07-25 11:22:37,725] {bash_operator.py:77}信息 - airflow

[2016-07-25 11:22:37,725] {bash_operator.py:80}信息 - 退出命令返回代碼0

回答

0

它看起來不像你想要做的是支持。查看bash_operatorBaseOperator的源代碼,不幸的是,在執行任務之前,都沒有嘗試更改用戶。

+0

謝謝您的回答。 –

0

您可以使用 「RUN_AS_USER」 參數下default_args

default_args = { 
    'owner': 'max', 
    'depends_on_past': False, 
    'start_date': datetime.now(), 
    'email': ['[email protected]'], 
    'email_on_failure': False, 
    'email_on_retry': False, 
    'retries': 1, 
    'retry_delay': timedelta(minutes=5), 
    'run_as_user': 'max' 
} 
相關問題