メール通知の送信

注釈

通知システムのストアドプロシージャ機能は、Amazon Web Services(AWS)でのみホストされています。この機能の使用を選択した場合、この機能のホスティングプロバイダーは AWS になり、ホスティングを利用できる場所は以下のテーブルに示されているとおりになります。AWS SES を使用して送信されたメッセージの内容は、メッセージの配信を管理するために最大30日間Snowflakeによって保持される場合があり、その後削除されます。

サポートされている AWS リージョン

us-west-2

us-east-1

eu-west-1

このトピックでは、組み込みの SYSTEM$SEND_EMAIL() ストアドプロシージャを使用してメール通知を送信する方法について説明します。

このトピックの内容:

概要

この機能は、 通知統合 オブジェクトを使用します。これは、Snowflakeとサードパーティサービス(例: クラウドメッセージキュー、メールなど)の間のインターフェースを提供するSnowflakeオブジェクトです。1つのアカウントで最大10個のメール統合を定義し、1つ以上を同時に有効化できます。

メール通知を送信するには、

  1. メール通知の受信者がメールアドレスを確認済みであることを確認してください

  2. 通知統合を作成します

  3. 通知統合を使用する権限を付与します

  4. SYSTEM$SEND_EMAIL() ストアドプロシージャを呼び出して、メール通知を送信 します。

注釈

NOTIFICATION_HISTORY テーブル関数を使用して、Snowpipe経由で送信された通知の履歴をクエリできます。詳細については、 NOTIFICATION_HISTORY をご参照ください。

通知受信者のメールアドレスの確認

メール通知は、同じアカウント内のSnowflakeユーザーにのみ送信できます。これらのユーザーは、次のインターフェイスのいずれかを介してメールアドレスを確認する必要があります。

通知統合の作成

メール通知統合を作成するには、 TYPE=EMAILCREATE NOTIFICATION INTEGRATION コマンドを使用します。通知を受信するメールアドレスのリストに ALLOWED_RECIPIENTS を設定します。

注釈

ALLOWED_RECIPIENTS の各メールアドレスについて、そのメールアドレスを持つSnowflakeユーザーが メールアドレスを確認 していることを確認してください。確認されていないメールアドレスを指定すると、 CREATE NOTIFICATION INTEGRATION コマンドはエラーを表示して失敗します。

たとえば、 first.last@example.comfirst2.last2@example.com にメールメッセージを送信するための my_email_int という名前のメール通知統合を作成するには、次のステートメントを実行します。

CREATE NOTIFICATION INTEGRATION my_email_int
    TYPE=EMAIL
    ENABLED=TRUE
    ALLOWED_RECIPIENTS=('first.last@example.com','first2.last2@example.com');
Copy

注釈

特定のアカウントに対して最大10個のメール通知統合を定義できます。

このコマンドの構文の詳細については、 CREATE NOTIFICATION INTEGRATION をご参照ください。

通知統合を使用する権限の付与

SYSTEM$SEND_EMAIL() を呼び出すときに、メールの送信に使用するメール通知統合を渡します。このメール通知統合に対する USAGE 権限が付与されたロールを使用する必要があります。

この権限を所有者または呼び出し元のロールに付与するには、 GRANT <権限> コマンドを実行します。

たとえば、通知統合 my_email_int に対する USAGE 権限をロール my_sp_owner_role に付与するには、次のコマンドを実行します。

GRANT USAGE ON INTEGRATION my_email_int TO ROLE my_sp_owner_role;
Copy

メール通知の送信

メール通知の統合を作成した後、 SYSTEM$SEND_EMAIL ストアドプロシージャを呼び出してメール通知を送信できます。

たとえば、通知統合 my_email_int を使用して、「メールアラート: タスクは完了しました」という件名のメールメッセージを person1@example.comperson2@example.com に送信するには、次のステートメントを実行します。

CALL SYSTEM$SEND_EMAIL(
    'my_email_int',
    'person1@example.com, person2@example.com',
    'Email Alert: Task A has finished.',
    'Task A has successfully finished.\nStart Time: 10:10:32\nEnd Time: 12:15:45\nTotal Records Processed: 115678'
);
Copy

注釈

受信者リストのメールアドレスが通知統合の ALLOWED_RECIPIENTS プロパティに含まれていない場合、メールは送信されません。

メール通知メッセージは no-reply@snowflake.net から送信されます。