配置发送错误通知的任务¶
要启用发送错误通知的任务,必须将任务与通知集成关联起来。您可以在运行 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>
其中:
ERROR_INTEGRATION = integration_name
AWS SNS、Google Pub/Sub 或 Azure 事件网格 平台级别通知之一中创建的通知集成的名称。
下面的示例创建了一个支持错误通知的无服务器任务。该任务每隔 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 事件网格 平台级通知中创建的通知集成名称。
例如:
ALTER TASK mytask SET ERROR_INTEGRATION = my_notification_int;
任务错误通知消息负载¶
错误消息的正文会标识任务,以及任务运行期间遇到的错误。
以下是描述任务错误的消息有效负载示例。有效负载可包括一条或多条错误消息。
{\"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 对象,才能处理有效负载中的值。