Cloud Composerからのメール送信はSendGridを使うのが簡単です。
以下の通り、Googleからも簡単な手順も用意されていますが、画面付きで手順書いてみます。
https://cloud.google.com/composer/docs/how-to/managing/creating?hl=ja#notification
SendGrid登録
Googleのマーケットプレイスから登録できます。無料プランで話を進めます。
https://console.cloud.google.com/marketplace/details/sendgrid-app/sendgrid-email?hl=ja
無料プランでも結構な量のメールが送れるので、Composerから使うだけなら検証くらいまでなら無料プランで十分な気もします。
基本は画面に沿っていくだけです。プラン確認して、Subscribeを実行します。
SendGridへ飛んで、SendGridでの登録作業に移ります。
ユーザを登録します。
登録後にGoogleに戻ると情報が連携されているのがわかります。
「SendGridウェブサイトでAPIキーを管理する」に飛びます。
SendGridにログオンしたら、API KeysのCreate API Keyを選択します。
API Keyの権限を調整できるので、Mail Sendのみ有効化してキーを発行しました。
キーが発行されたので控えます。
Cloud Composerの設定
Cloud Composer側の設定は本当に簡単で、環境変数に先程取得したAPIキーを「SENDGRID_API_KEY」として登録するのと、「SENDGRID_MAIL_FROM」でメールアドレスを登録するだけです。
設定完了までは数分かかりますが、登録できました。
メール送信テスト
メールの送信テストをしてみます。
エラーが起こった時のメールに加えて、EmailOperatorを使ったメール送信もテストしてみます。
https://github.com/apache/airflow/blob/1.10.3/airflow/operators/email_operator.py
簡単なDag書きます。
from airflow import DAG from airflow.operators.email_operator import EmailOperator from airflow.operators.bash_operator import BashOperator from airflow.utils.dates import days_ago default_args = { 'owner': 'yusuke.otomo', 'start_date': days_ago(1), 'email_on_failure': True, 'email': ['yusuke.otomo@beex-inc.com'], } dag = DAG( 'mail-test', schedule_interval='@once', default_args=default_args, ) send_mail = EmailOperator( task_id='sendmail', to='yusuke.otomo@beex-inc.com', subject='TEST Mail from Cloud Composer', html_content='Mail Contents', dag=dag, ) failed_bash = BashOperator( task_id='run_bash', bash_command='exit 1', dag=dag, ) send_mail >> failed_bash
実行してみると、想定通りメールの送信と、エラーを発生させることができました。
こんな感じでEmailOperatorからメール飛んできます。
BashOperatorのエラーも検知できました。