Configuração de uma tarefa para enviar notificações de erro¶
Para que uma tarefa possa enviar notificações de erro, você deve associar a tarefa com uma integração de notificação. Você pode fazer isso ao executar o comando CREATE TASK para criar uma nova tarefa ou o comando ALTER TASK para modificar uma tarefa existente. Ao executar estes comandos, defina ERROR_INTEGRATION para o nome da integração da notificação.
Você só especifica as integrações de notificação de erro em uma tarefa raiz de um gráfico de tarefas. Qualquer tarefa filho com falha envia notificações de erro para a integração especificada da tarefa raiz.
Tarefas com TASK_AUTO_RETRY_ATTEMPTS
definido como um valor maior que 0
enviam notificações de erro para cada execução de tarefa com falha.
Nota
Criar ou modificar uma tarefa que faz referência a uma integração de notificação requer uma função que tenha o privilégio USAGE sobre a integração de notificação. Além disso, a função deve ter o privilégio CREATE TASK no esquema ou o privilégio OWNERSHIP na tarefa.
Neste tópico:
Criação de uma nova tarefa que envia notificações de erro¶
Crie uma nova tarefa usando CREATE TASK. Para descrições de todos os parâmetros de tarefa disponíveis, consulte o tópico de comando SQL:
CREATE TASK <name>
[...]
ERROR_INTEGRATION = <integration_name>
AS <sql>
Onde:
ERROR_INTEGRATION = integration_name
Especifica o nome de uma integração de notificação criada usando CREATE NOTIFICATION INTEGRATION. Para obter mais informações, consulte AWS SNS, Google Pub/Sub ou Azure Event Grid.
O exemplo a seguir cria uma tarefa sem servidor que suporta notificações de erro. A tarefa insere o carimbo de data/hora atual em uma coluna de tabela a cada 5 minutos:
CREATE TASK mytask
SCHEDULE = '5 MINUTE'
ERROR_INTEGRATION = my_notification_int
AS
INSERT INTO mytable(ts) VALUES(CURRENT_TIMESTAMP);
Atualização de uma tarefa existente para enviar notificações de erro¶
Modifique uma tarefa existente usando ALTER TASK:
ALTER TASK <name> SET ERROR_INTEGRATION = <integration_name>;
Onde integration_name
é o nome da integração de notificação criada em uma das notificações do nível da plataforma AWS SNS, Google Pub/Sub ou Azure Event Grid.
Por exemplo:
ALTER TASK mytask SET ERROR_INTEGRATION = my_notification_int;
Carga útil de mensagem de notificação de erro da tarefa¶
O corpo de mensagens de erro identifica a tarefa e os erros encontrados durante uma execução de tarefa.
A seguir está a carga útil de uma mensagem de exemplo descrevendo um erro de tarefa. A carga útil pode incluir uma ou mais mensagens de erro.
{\"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.\"}]}
Observe que você deve analisar a cadeia de caracteres em um objeto JSON para processar valores na carga útil.