apache AirflowをSlackワークスペースに接続する方法について、手順を追ったマニュアルを教えてもらえませんか。自分のチャンネルにWebhookを作成しました。次にそれをどうすればよいですか?
敬具
SlackAPIPostOperator
演算子を使用しますSlackAPIPostOperator(
task_id='failure',
token='YOUR_TOKEN',
text=text_message,
channel=SLACK_CHANNEL,
username=SLACK_USER)
上記は、Airflowを使用してSlackにメッセージを送信する最も簡単な方法です。
ただし、タスクの失敗時にSlackにメッセージを送信するようにAirflowを構成する場合は、関数を作成し、作成したslack関数の名前を使用してタスクにon_failure_callback
を追加します。以下に例を示します。
def slack_failed_task(contextDictionary, **kwargs):
failed_alert = SlackAPIPostOperator(
task_id='slack_failed',
channel="#datalabs",
token="...",
text = ':red_circle: DAG Failed',
owner = '_owner',)
return failed_alert.execute
task_with_failed_slack_alerts = PythonOperator(
task_id='task0',
python_callable=<file to execute>,
on_failure_callback=slack_failed_task,
provide_context=True,
dag=dag)
SlackWebHookの使用(Airflow> = 1.10.0でのみ機能):SlackWebHook
を使用する場合はSlackWebhookOperator
を使用します同様の方法で:
Airflowバージョンにある新しいSlackWebhookOperatorを試してください> = 1.10.0
from airflow.contrib.operators.slack_webhook_operator import SlackWebhookOperator
slack_msg="Hi Wssup?"
slack_test = SlackWebhookOperator(
task_id='slack_test',
http_conn_id='slack_connection',
webhook_token='/1234/abcd',
message=slack_msg,
channel='#airflow_updates',
username='airflow_'+os.environ['ENVIRONMENT'],
icon_emoji=None,
link_names=False,
dag=dag)
注:slack_connection
がAirflow接続に次のように追加されました
Host=https://hooks.slack.com/services/
@kaxilの回答のようにSlackWebhookOperator
を使用した完全な例:
def slack_failed_task(task_name):
failed_alert = SlackWebhookOperator(
task_id='slack_failed_alert',
http_conn_id='slack_connection',
webhook_token=Variable.get("slackWebhookToken", default_var=""),
message='@here DAG Failed {}'.format(task_name),
channel='#epm-marketing-dev',
username='Airflow_{}'.format(ENVIRONMENT_SUFFIX),
icon_emoji=':red_circle:',
link_names=True,
)
return failed_alert.execute
task_with_failed_slack_alerts = PythonOperator(
task_id='task0',
python_callable=<file to execute>,
on_failure_callback=slack_failed_task,
provide_context=True,
dag=dag)
@Deep Nirmalとして注:slack_connectionがAirflow接続に追加されていることを確認してください。
Host=https://hooks.slack.com/services/