配置发送错误通知的任务

要启用发送错误通知的任务,必须将任务与通知集成关联起来。您可以在运行 CREATE TASK 命令创建新任务或运行 ALTER TASK 命令来修改现有任务时执行此操作。运行这些命令时,将 ERROR_NOTIFICATION 设置为通知集成的名称。

您只能在任务图的根任务上指定错误通知集成;任何失败的子任务都会向根任务的特定集成发送错误通知。

对于将 TASK_AUTO_RETRY_ATTEMPTS 值设置为大于 0 的任务,每次任务运行失败时都会发送错误通知。

备注

要创建或修改可引用通知集成的任务,需要对通知集成拥有 USAGE 权限的角色。此外,角色必须分别拥有架构的 CREATE TASK 权限或任务的 OWNERSHIP 权限。

本主题内容:

创建发送错误通知的新任务

使用 CREATE TASK 创建新任务。有关所有可用任务参数的说明,请参阅 SQL 命令主题:

CREATE TASK <name>
  [...]
  ERROR_INTEGRATION = <integration_name>
  AS <sql>
Copy

其中:

ERROR_INTEGRATION = integration_name

AWS SNSGoogle Pub/SubAzure 事件网格 平台级别通知之一中创建的通知集成的名称。

下面的示例创建了一个支持错误通知的无服务器任务。该任务每隔 5 分钟就会将当前时间戳插入表列:

CREATE TASK mytask
  SCHEDULE = '5 MINUTE'
  ERROR_INTEGRATION = my_notification_int
  AS
  INSERT INTO mytable(ts) VALUES(CURRENT_TIMESTAMP);
Copy

更新发送错误通知的现有任务

使用 ALTER TASK 修改现有任务:

ALTER TASK <name> SET ERROR_INTEGRATION = <integration_name>;
Copy

其中, integration_name 是在 AWS SNSGoogle Pub/SubAzure 事件网格 平台级通知中创建的通知集成名称。

例如:

ALTER TASK mytask SET ERROR_INTEGRATION = my_notification_int;
Copy

任务错误通知消息负载

错误消息的正文会标识任务,以及任务运行期间遇到的错误。

以下是描述任务错误的消息有效负载示例。有效负载可包括一条或多条错误消息。

{\"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.\"}]}
Copy

请注意,必须将字符串解析为 JSON 对象,才能处理有效负载中的值。

语言: 中文