quelqu'un pourrait-il me donner, étape par étape, un manuel expliquant comment connecter l’espace de travail Apache Airflow à Slack . J'ai créé Webhook sur mon canal et que dois-je en faire ensuite?
Sincères amitiés
SlackAPIPostOperator
dans votre DAG comme indiqué ci-dessousSlackAPIPostOperator(
task_id='failure',
token='YOUR_TOKEN',
text=text_message,
channel=SLACK_CHANNEL,
username=SLACK_USER)
La procédure ci-dessus est la manière la plus simple d’utiliser Airflow pour envoyer des messages à Slack.
Toutefois, si vous souhaitez configurer Airflow pour envoyer des messages à Slack en cas d'échec d'une tâche, créez une fonction et ajoutez on_failure_callback
à vos tâches avec le nom de la fonction de slack créée. Un exemple est ci-dessous:
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)
Utilisation de SlackWebHook (fonctionne uniquement avec Airflow> = 1.10.0): Si vous souhaitez utiliser SlackWebHook
, utilisez SlackWebhookOperator
de la même manière:
L'exemple complet avec SlackWebhookOperator
usage comme dans @kaxil répond:
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)
As @Deep Nirmal Remarque: Assurez-vous d’ajouter slack_connection à vos connexions Airflow en tant que
Host=https://hooks.slack.com/services/
Essayez le nouveau SlackWebhookOperator qui existe dans la version Airflow> = 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)
Remarque: Assurez-vous d’ajouter slack_connection
à vos connexions Airflow en tant que
Host=https://hooks.slack.com/services/