Microsoft Azure Event Gridを使用したタスクのエラー通知の有効化

このトピックでは、Microsoft Azure Event Gridを使用したエラー通知サポートを構成する手順について説明します。

Microsoft Azure Event Gridを使用したエラー通知の有効化

タスク通知を有効にするには、次のセクションのステップに従います。

ステップ1: カスタムEvent Gridトピックを作成する

Event Gridトピックは、ソースがイベント通知を送信するエンドポイントを提供します。Snowflakeによって公開されたエラー通知を受信するための専用トピックを作成します。単一のトピックを使用して、Snowflakeアカウントのすべてのパイプ(Snowpipeエラー通知)またはタスク(タスクエラー通知)のエラー通知を受け取ることができます。

Event Gridトピックの作成手順については、 Event Gridのドキュメント をご参照ください。Event Gridトピックエンドポイントを記録します。これは、これらの手順の後半で必要になります。

必要に応じて、トピックをサブスクライブして、追跡するイベントとそれらのイベントの送信先をEvent Gridに通知します。

ステップ2: Snowflakeで通知統合を作成する

テナントIDの取得

AzureテナントIDを取得します。これは、これらの手順の後半で必要になります。

  1. Microsoft Azureポータルにログインします。

  2. Azure Active Directory » Properties に移動します。後で参照できるように、 Tenant ID 値を記録します。Event GridトピックへのSnowflakeアクセスを許可する同意URLを生成するには、ディレクトリIDまたは テナントID が必要です。

通知統合の作成

CREATE NOTIFICATION INTEGRATION コマンドを使用して統合を作成します。統合は、作成したAzureストレージキューを参照するSnowflakeオブジェクトです。

注釈

このSQLコマンドを実行できるのは、アカウント管理者(ACCOUNTADMINロールを持つユーザー)またはグローバルCREATE INTEGRATION権限を持つロールのみです。

CREATE NOTIFICATION INTEGRATION <integration_name>
  ENABLED = true
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AZURE_EVENT_GRID
  DIRECTION = OUTBOUND
  AZURE_EVENT_GRID_TOPIC_ENDPOINT = '<event_grid_topic_endpoint>'
  AZURE_TENANT_ID = '<azure_tenant_id>'
Copy

例:

CREATE NOTIFICATION INTEGRATION myint
  ENABLED = true
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AZURE_EVENT_GRID
  DIRECTION = OUTBOUND
  AZURE_EVENT_GRID_TOPIC_ENDPOINT = 'https://myaccount.region-1.eventgrid.azure.net/api/events'
  AZURE_TENANT_ID = 'mytenantid';
Copy

条件:

  • event_grid_topic_endpoint は、セクションのステップ1で記録したEvent Gridトピックエンドポイントです。

  • azure_tenant_id は、このセクションの前半で記録したAzureディレクトリ ID またはテナント ID です。

トピックへのSnowflakeアクセスの許可

  1. DESCRIBE INTEGRATION コマンドを実行して、同意 URL を取得します。

    DESC NOTIFICATION INTEGRATION <integration_name>;
    
    Copy

    条件:

    次の列の値に注意します。

    AZURE_CONSENT_URL:

    Microsoftのアクセス許可リクエストページへの URL。

    AZURE_MULTI_TENANT_APP_NAME:

    アカウント用に作成されたSnowflakeクライアントアプリケーションの名前。このセクションの後半のステップでは、このアプリケーションに、許可されたトピックでアクセストークンを取得するために必要な権限を付与する必要があります。

  2. ウェブブラウザーで AZURE_CONSENT_URL 列にある URL に移動します。このページには、Microsoft許可リクエストページが表示されます。

  3. Accept ボタンをクリックします。このアクションにより、Snowflakeアカウント用に作成されたAzureサービスプリンシパルは、テナント内の指定されたリソースでアクセストークンを取得できるようになります。アクセストークンの取得は、コンテナーに対する適切なアクセス許可をサービスプリンシパルに付与した場合にのみ成功します(次のステップを参照)。

    Microsoftの権限リクエストページは、Snowflakeの企業サイト(snowflake.com)にリダイレクトされます。

  4. Microsoft Azureポータルにログインします。

  5. Azure Active Directory » Enterprise applications に移動します。このセクションのステップ2で記録した、Snowflakeアプリケーション識別子がリストされていることを確認します。

    重要

    Azure Active DirectoryでSnowflakeアプリケーションを後で削除すると、通知統合が機能しなくなります。

  6. Event Grid Topics » topic_name に移動します。ここで、 topic_name は、イベント通知を受信するために作成したトピックの名前です。

  7. Access Control (IAM) » Add role assignment をクリックします。

  8. Snowflakeサービスプリンシパルを検索します。これは DESC NOTIFICATION INTEGRATION 出力(ステップ1)の AZURE_MULTI_TENANT_APP_NAME プロパティにあるIDです。AZURE_MULTI_TENANT_APP_NAME プロパティで、アンダースコアの 前にある 文字列を検索します。

    重要

    • このセクションのMicrosoftリクエストページでリクエストされたSnowflakeサービスプリンシパルをAzureが作成するのに、1時間以上かかる場合があります。サービスプリンシパルがすぐに利用できない場合は、1~2時間待ってから、もう一度検索することをお勧めします。

    • サービスプリンシパルを削除すると、通知統合が機能しなくなります。

  9. Snowflakeアプリケーションに EventGridデータ送信者 権限を付与します。

ステップ3: タスクでエラー通知を有効にする

次に、通知統合の名前に ERROR_INTEGRATION を設定して、スタンドアロンまたはルートタスクでエラー通知を有効にします。プロパティは、タスクの作成時(CREATE TASK を使用)またはそれ以降(ALTER TASK を使用)に設定できます。

詳細については、 エラー通知を送信するタスクの構成 をご参照ください。