成功通知を送るタスクの構成¶
Snowflakeは、タスクグラフが正常に完了すると、クラウドメッセージサービスに成功通知をプッシュすることができます。このトピックでは、クラウドメッセージを使用してタスクの成功通知を構成する手順を説明します。
成功通知の統合は、タスクグラフのルートタスクにのみ指定されます。Snowflake は、タスクグラフ全体が正常に実行された場合にのみ成功通知を送信し、正常に実行されたスタンドアロンタスクに対しては通知を送信しません。これは、 エラー通知統合 とは異なります。
注釈
タスクの成功通知機能は、サーバーレスタスクとユーザー管理タスク(つまり、コンピュートリソースの提供を仮想ウェアハウスに依存するタスク)の両方でサポートされています。
タスクが成功通知を送信できるようにするには、タスクをメッセージ通知統合に関連付ける必要があります。 Amazon Web Services Simple Notification Service (AWSSNS), Microsoft Azure Event Grid, または Google Pub/Sub で通知統合を作成するには、タスクドキュメントに従ってください。
成功通知を送信するための新しいタスクの作成または既存のタスクの修正¶
CREATETASK コマンドを実行して新しいタスクを作成する時、または ALTER TASK コマンドを実行して既存のタスクを修正する時に、タスクを通知統合に関連付けることができます。
注釈
通知統合を参照するタスクを作成または変更するには、通知統合に対する USAGE 権限を持つロールが必要です。さらに、ロールには、スキーマに対する CREATE TASK 権限、またはタスクに対する OWNERSHIP 権限のいずれかが必要です。
CREATE [ OR REPLACE ] TASK [ IF NOT EXISTS ] <name>
WAREHOUSE = <string>
[...]
SUCCESS_INTEGRATION = <integration_name>
ALTER TASK <name> SET SUCCESS_INTEGRATION = <integration_name>;
条件:
SUCCESS_INTEGRATION = integration_name
AWS SNS, Microsoft Azure Event Grid, または Google Pub/Sub プラットフォームレベル通知のいずれかで作成された通知統合の名前。
成功通知の表示¶
SHOW TASKS または DESCRIBETASK を実行すると、タスクの成功通知を見ることができます。Snowflake は、 SHOW TASKS および DESCRIBE TASK の出力に、新しい列 success_integration を追加します。このフィールドは全ての子タスクに対して NULL を表示します。このフィールドは、通知統合がルートタスクに指定されている場合はグラフレベルの成功統合の名前を表示し、そうでない場合は NULL を表示します。
ペイロード¶
成功メッセージの本文には、 rootTaskName、 rootTaskID、 queryID、attemptNumber などのタスクグラフを識別子とする情報が含まれます。以下はタスクグラフ成功通知のメッセージペイロードのサンプルです。
{"version":"1.0",
"messageId":"3ff1eff0-7ad7-493c-9552-c0307087e0c6",
"messageType":"USER_TASK_GRAPH_SUCCEEDED",
"timestamp":"2021-11-11T19:46:39.648Z",
"accountName":"AWS_UTEN_DPO_ACC",
"rootTaskName":"AWS_UTEN_DPO_DB.AWS_UTEN_SC.UTEN_AWS_TK1",
"rootTaskId":"01a03962-2b57-889e-0000-000000000001",
"messages": [{
"runId":"2021-11-11T19:46:23.826Z",
"scheduledTime":"2021-11-11T19:46:23.826Z",
"queryStartTime":"2021-11-11T19:46:24.879Z",
"graphCompletedTime":"2021-11-11T19:54:24.5591",
"queryId":"01a03962-0300-0002-0000-0000000034d8",
"attemptNumber":5
}]}
ペイロードの値を処理するには、文字列を JSON オブジェクトに解析する必要があることに注意してください。