Cloud Composer 1 | Cloud Composer 2
このページでは、Cloud Composer 環境の SMTP サービスを構成する方法について説明します。
始める前に
Cloud Composer 環境がプライベート IP 用に構成されている場合は、外部メールサービス(https://api.sendgrid.com
、任意の SMTP サーバーなど)用の API エンドポイントに接続できることを確認してください。
SendGrid メールサービスを構成する
通知を受け取るには、SendGrid メールサービスを介してメールを送信するように環境変数を構成します。
SendGrid に登録する
まだ登録していない場合は、Google Cloud コンソールで SendGrid に登録し、[Manage On Provider] をクリックして SendGrid ドメインに移動し、[Settings] をクリックしてユーザー名を取得し、API キーを作成します。Google Cloud デベロッパーは、1 か月あたり 12,000 件の無料メールを利用できます。
変数の設定
SendGrid では、API キーと From のメールアドレスを使用してメールを送信します。この情報は、次のいずれかのオプションで指定します。
(推奨)Secret Manager に値を保存します。
値を Airflow に保存します。
Secret Manager に値を保存する
Secret Manager に値を保存するには:
apache-airflow-providers-sendgrid
PyPI パッケージをインストールします。環境に Secret Manager を構成するシークレット バックエンドの権限と Airflow 構成オプションを設定してください。
次の Airflow 構成オプションをオーバーライドします。
セクション キー 値 email
email_conn_id
sendgrid_default
email
email_backend
airflow.providers.sendgrid.utils.emailer.send_email
airflow-connections-sendgrid_default
という名前の SendGrid 接続にシークレットを作成します。シークレットの値を接続 URI に設定します。次に例を示します。sendgrid://<username>:<sendgrid_api_key>@smtp.sendgrid.net:587
Secret Manager での接続の保存の詳細については、Airflow 接続を管理するをご覧ください。
SendGrid のメールアドレスを構成します。
(Airflow 2.2.4 以降のバージョン)シークレットを使用してメールアドレスを設定することはできません。代わりに、次の Airflow 構成オプションをオーバーライドします。
セクション キー 値 email
from_email
From: に指定するメールアドレス( noreply@example.com
など)。(Airflow バージョン 2.1.4 ~ 2.1.3)環境に次の環境変数を設定します。
名前 値 SENDGRID_MAIL_FROM
From: に指定するメールアドレス( noreply@example.com
など)。
値を Airflow に保存する
次の Airflow 構成オプションをオーバーライドします。
セクション キー 値 email
email_conn_id
sendgrid_default
email
email_backend
airflow.providers.sendgrid.utils.emailer.send_email
Airflow で、
sendgrid_default
という名前の接続を構成します。接続 URI で SendGrid API キーを指定します。次に例を示します。gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ connections add -- \ --conn-uri "sendgrid://USERNAME:SENDGRID_API_KEY@smtp.sendgrid.net:587" \ sendgrid_default
以下を置き換えます。
ENVIRONMENT_NAME
: 環境の名前。LOCATION
: 環境が配置されているリージョン。USERNAME
: SendGrid ユーザー名。SENDGRID_API_KEY
: SendGrid API キー。
SendGrid のメールアドレスを構成します。
(Airflow 2.2.4 以降のバージョン)次の Airflow 構成のオプションをオーバーライドします。
セクション キー 値 email
from_email
From: に指定するメールアドレス( noreply@example.com
など)。(Airflow バージョン 2.1.4 ~ 2.1.3)環境に次の環境変数を設定します。
名前 値 SENDGRID_MAIL_FROM
From: に指定するメールアドレス( noreply@example.com
など)。
SendGrid 構成をテストする
SendGrid 構成をテストする手順は次のとおりです。
EmailOperator
を使用するテスト DAG を作成します。次に例を示します。
- 環境に DAG をアップロードし、EmailOperator タスクが成功することを確認します。
- SendGrid の認証情報を使用して SendGrid にログインします。
- SendGrid UI で、[Activity] ページに移動します。
- メールのリストを検索します。SendGrid がメールを処理して配信したことを確認します。
メールが処理、配信されていない場合は、次の手順を行います。
- SendGrid の構成を確認します。
- Secret Manager バックエンドが有効になっていることを確認します。追加の権限が付与され、Airflow 構成オプションのオーバーライドが設定されていることを確認します。
- メール クライアントのスパムフィルタを確認します。
サードパーティの SMTP サービスを構成する
サードパーティの SMTP サービスを介してメールを送信するには、email_backend
Airflow 構成オプションをオーバーライドして、他の SMTP 関連パラメータを構成します。
サードパーティの SMTP サービスを構成するには、次の Airflow 構成オプションをオーバーライドします。
セクション | キー | 値 |
---|---|---|
email |
email_backend |
airflow.utils.email.send_email_smtp |
smtp |
smtp_host |
SMTP サーバーのホスト名。 |
smtp |
smtp_user |
SMTP サーバーのユーザー名。 |
smtp |
smtp_port |
SMTP サーバーのポート。ポート 25 は使用できません。標準の SMTP ポート 465 や 587 など、他のポートを使用することもできます。 |
smtp |
smtp_password |
smtp_password を介したパスワードの設定はサポートされていません。SMTP パスワードを設定するには、SMTP パスワードを構成するの手順に従ってください。 |
smtp |
smtp_mail_from |
From: に指定するメールアドレス(noreply-composer@ など)。 |
smtp |
smtp_starttls |
セキュリティを強化するには、True に設定します。 |
smtp |
smtp_ssl |
セキュリティを強化するには、True に設定します。 |
サードパーティの SMTP サービスの SMTP パスワードを構成する
Airflow 構成ファイルに書式なしテキストで SMTP パスワードを保存することは、セキュリティ対策として不適切です。そのため、Cloud Composer ではこのメソッドをサポートしていません。代わりに、他の 2 つの方法を使用して SMTP パスワードを構成できます。
コマンドを使って SMTP パスワードを取得する
構成のオーバーライドを使用して、SMTP パスワードを取得するコマンドを指定できます。SMTP サービスと通信するとき、Airflow はこのコマンドを使用してパスワードの値を取得します。パイプやリダイレクトなどの bash の演算子を使用せずに、1 つのコマンドを指定します。
この方法を使用するには、次の Airflow 構成オプションをオーバーライドします。
セクション | キー | 値 |
---|---|---|
smtp |
smtp_password_cmd |
SMTP パスワードを返すコマンドを指定します。 |
Secret Manager に保存されているシークレットを使用して SMTP パスワードを取得する
Airflow シークレット バックエンドとして Secret Manager を構成できます。
Composer 環境の Secret Manager を構成すると、SMTP パスワードを Secret Manager に保存できます。
新しいシークレットを作成します。
echo -n "SMTP_PASSWORD" | gcloud beta secrets create \ airflow-config-smtp-password \ --data-file=- \ --replication-policy=automatic
SMTP_PASSWORD
を SMTP パスワードに置き換えます。Secret Manager から SMTP パスワードを取得するように Airflow を構成します。これを行うには、次の Airflow 構成オプションをオーバーライドします。
セクション キー 値 smtp
smtp_password_secret
smtp-password