エラー通知を送信するタスクの構成¶
タスクがエラー通知を送信できるようにするには、タスクを通知統合に関連付ける必要があります。これは、 CREATE TASK コマンドを実行して新しいタスクを作成するか、 ALTER TASK コマンドを実行して既存のタスクを変更するときに実行できます。これらのコマンドを実行するときは、 ERROR_INTEGRATION を通知統合の名前に設定します。
エラー通知の統合は、タスクグラフのルートタスクにのみ指定できます。失敗した子タスクは、ルートタスクの指定した統合にエラー通知を送信します。
TASK_AUTO_RETRY_ATTEMPTS
が 0
より大きい値に設定されたタスクは、失敗したタスクの実行ごとにエラー通知を送信します。
注釈
通知統合を参照するタスクを作成または変更するには、通知統合に対する USAGE 権限を持つロールが必要です。さらに、ロールはスキーマの CREATE TASK 権限か、タスクの OWNERSHIP 権限を持っていなければなりません。
このトピックの内容:
エラー通知を送信する新しいタスクの作成¶
CREATE TASK を使用して、新しいタスクを作成します。使用可能なすべてのタスクパラメーターの説明については、 SQL コマンドのトピックをご参照ください。
CREATE TASK <name>
[...]
ERROR_INTEGRATION = <integration_name>
AS <sql>
条件:
ERROR_INTEGRATION = integration_name
CREATENOTIFICATION INTEGRATION を使用して作成された通知統合の名前を指定します。詳細情報については、 AWS SNS、 Google Pub/Sub、 Azure Event Grid をご参照ください。
次の例では、エラー通知をサポートするサーバーレスタスクを作成します。タスクは、現在のタイムスタンプを5分ごとにテーブル列に挿入します。
CREATE TASK mytask
SCHEDULE = '5 MINUTE'
ERROR_INTEGRATION = my_notification_int
AS
INSERT INTO mytable(ts) VALUES(CURRENT_TIMESTAMP);
エラー通知を送信するための既存タスクの更新¶
ALTER TASK を使用して、既存のタスクを変更します。
ALTER TASK <name> SET ERROR_INTEGRATION = <integration_name>;
integration_name
は、 AWS SNS、 Google Pub/Sub、または Azure Event Grid プラットフォームレベルの通知のいずれかで作成された通知統合の名前です。
例:
ALTER TASK mytask SET ERROR_INTEGRATION = my_notification_int;
タスクエラー通知のメッセージペイロード¶
エラーメッセージの本文は、タスクとタスク実行中に発生したエラーを識別します。
以下は、タスクエラーを説明するサンプルのメッセージペイロードです。ペイロードには、1つ以上のエラーメッセージを含めることができます。
{\"version\":\"1.0\",\"messageId\":\"3ff1eff0-7ad7-493c-9552-c0307087e0c6\",\"messageType\":\"USER_TASK_FAILED\",\"timestamp\":\"2021-11-11T19:46:39.648Z\",\"accountName\":\"AWS_UTEN_DPO_ACC\",\"taskName\":\"AWS_UTEN_DPO_DB.AWS_UTEN_SC.UTEN_AWS_TK1\",\"taskId\":\"01a03962-2b57-889e-0000-000000000001\",\"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\",\"completedTime\":\"null\",\"queryId\":\"01a03962-0300-0002-0000-0000000034d8\",\"errorCode\":\"000630\",\"errorMessage\":\"Statement reached its statement or warehouse timeout of 10 second(s) and was canceled.\"}]}
ペイロードの値を処理するには、文字列を JSON オブジェクトに解析する必要があることに注意してください。