Как мне запустить задачу с "владельцем", а не с владельцем оболочки в AIRFLOW
Мой код задачи следующий.
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': ['max@test.com'],
'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)
Затем я запускаю команду "airflow test test3 test3-task2 2016-07-25" с пользователем "airflow" из linux. Результатом вывода "whoami" является "airflow". Но я надеюсь, что выходной результат является "владельцем" задачи.
В чем моя ошибка?
Спасибо
Ниже приведен результат вывода.
[2016-07-25 11: 22: 37,716] {bash_operator.py:64} INFO - Местоположение временного скрипта: / tmp / airflowtmpoYNJE8 // tmp / airflowtmpoYNJE8 / test3-task2U1lpom
[2016-07-25 11: 22: 37,716] {bash_operator.py:65} INFO - Выполнение команды: whoami
[2016-07-25 11: 22: 37,722] {bash_operator.py:73} INFO - Вывод:
[2016-07-25 11: 22: 37,725] {bash_operator.py:77} INFO - поток воздуха
[2016-07-25 11:22:37,725] {bash_operator.py:80} INFO - Команда завершена с кодом возврата 0
2 ответа
Вы можете использовать параметр "run_as_user" в default_args
default_args = {
'owner': 'max',
'depends_on_past': False,
'start_date': datetime.now(),
'email': ['max@test.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
'run_as_user': 'max'
}
Это не похоже на то, что вы пытаетесь сделать, поддерживается. Глядя на исходный код для bash_operator и BaseOperator, ни один из них, к сожалению, не предпринимает никаких попыток изменить пользователей перед выполнением задачи.