Configuration d’une tâche pour envoyer des notifications d’erreur

Pour permettre à une tâche d’envoyer des notifications d’erreur, vous devez associer la tâche à une intégration de notification. Vous pouvez le faire en exécutant la commande CREATE TASK pour créer une nouvelle tâche ou la commande ALTER TASK pour modifier une tâche existante. Lorsque vous exécutez ces commandes, définissez ERROR_INTEGRATION comme le nom de l’intégration de notification.

Vous ne pouvez spécifier les intégrations de notification d’erreur que sur une tâche racine d’un graphique de tâches. Toute tâche enfant ayant échoué envoie des notifications d’erreur à l’intégration spécifiée de la tâche racine.

Les tâches avec TASK_AUTO_RETRY_ATTEMPTS défini sur une valeur supérieure à 0 envoient des notifications d’erreur pour chaque échec de l’exécution de la tâche.

Note

La création ou la modification d’une tâche qui fait référence à une intégration de notification nécessite un rôle qui possède le privilège USAGE sur l’intégration de notification. En outre, le rôle doit disposer du privilège CREATE TASK sur le schéma ou du privilège OWNERSHIP sur la tâche.

Dans ce chapitre :

Création d’une nouvelle tâche qui envoie des notifications d’erreur

Créez une nouvelle tâche en utilisant CREATE TASK. Pour une description de tous les paramètres de tâche disponibles, voir la rubrique de la commande SQL :

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

Où :

ERROR_INTEGRATION = integration_name

Spécifie le nom d’une intégration de notification créée à l’aide de CREATE NOTIFICATION INTEGRATION. Pour plus d’informations, consultez AWS SNS, Google Pub/Sub ou Azure Event Grid.

L’exemple suivant crée une tâche sans serveur qui prend en charge les notifications d’erreur. La tâche insère l’horodatage actuel dans une colonne de la table toutes les 5 minutes :

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

Mise à jour d’une tâche existante pour envoyer des notifications d’erreur

Modifiez une tâche existante en utilisant ALTER TASK :

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

integration_name est le nom de l’intégration de notification créée dans l’une des notifications de niveau plateforme AWS SNS, Google Pub/Sub ou Azure Event Grid.

Par exemple :

ALTER TASK mytask SET ERROR_INTEGRATION = my_notification_int;
Copy

Charge utile des messages de notification d’erreur des tâches

Le corps des messages d’erreur identifie la tâche et les erreurs rencontrées lors d’une exécution de tâche.

Voici un exemple de charge utile de message décrivant une erreur Tâche. Notez que la charge utile peut inclure un ou plusieurs messages d’erreur.

{\"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

Notez que vous devez analyser la chaîne dans un objet JSON pour traiter les valeurs dans la charge utile.