Surveillance des événements de requêtes Athena à l’aide d’EventBridge - Amazon Athena

Surveillance des événements de requêtes Athena à l’aide d’EventBridge

Vous pouvez utiliser Amazon Athena avec Amazon EventBridge pour recevoir des notifications en temps réel sur l'état de vos requêtes. Lorsqu'une requête que vous avez soumise change d'état, Athena publie un événement sur EventBridge contenant des informations sur ce changement d'état de requête. Vous pouvez écrire des règles simples pour les événements qui vous intéressent et effectuer des actions automatisées lorsqu'un événement correspond à une règle. Par exemple, vous pouvez créer une règle qui invoque une fonction AWS Lambda lorsqu'une requête atteint un état terminal. Les événements sont générés sur la base du meilleur effort.

Avant de créer des règles d'événement pour Athena, vous devez procéder comme suit :

  • Familiarisez-vous avec les événements, les politiques et les cibles dans EventBridge. Pour de plus amples informations, veuillez consulter Présentation d'Amazon EventBridge Pour plus d'informations sur la manière de configurer des règles, veuillez consulter Mise en route avec Amazon EventBridge (langue française non garantie).

  • Créez la ou les cible(s) à utiliser dans vos règles d'événement.

Note

Athena propose actuellement un type d'événement appelé événement de changement d'état de requête Athena, mais peut ajouter d'autres types et détails d'événement. Si vous désérialisez par programmation les données JSON d'événement, veillez à ce que votre application soit prête à traiter des propriétés inconnues si ces propriétés supplémentaires sont ajoutées.

Voici le modèle de base d'un événement Amazon Athena.

{ "source":[ "aws.athena" ], "detail-type":[ "Athena Query State Change" ], "detail":{ "currentState":[ "SUCCEEDED" ] } }

L'exemple suivant montre un événement de changement d'état de requête Athena dont la valeur currentState est SUCCEEDED.

{ "version":"0", "id":"abcdef00-1234-5678-9abc-def012345678", "detail-type":"Athena Query State Change", "source":"aws.athena", "account":"123456789012", "time":"2019-10-06T09:30:10Z", "region":"us-east-1", "resources":[ ], "detail":{ "versionId":"0", "currentState":"SUCCEEDED", "previousState":"RUNNING", "statementType":"DDL", "queryExecutionId":"01234567-0123-0123-0123-012345678901", "workgroupName":"primary", "sequenceNumber":"3" } }

L'exemple suivant montre un événement de changement d'état de requête Athena dont la valeur currentState est FAILED. Le bloc athenaError apparaît uniquement lorsque currentState est FAILED. Pour plus d'informations sur les valeurs de errorCategory et errorType, voir Catalogue d'erreurs Athena.

{ "version":"0", "id":"abcdef00-1234-5678-9abc-def012345678", "detail-type":"Athena Query State Change", "source":"aws.athena", "account":"123456789012", "time":"2019-10-06T09:30:10Z", "region":"us-east-1", "resources":[ ], "detail":{ "athenaError": { "errorCategory": 2.0, //Value depends on nature of exception "errorType": 1306.0, //Type depends on nature of exception "errorMessage": "Amazon S3 bucket not found", //Message depends on nature of exception "retryable":false //Retryable value depends on nature of exception }, "versionId":"0", "currentState": "FAILED", "previousState": "RUNNING", "statementType":"DML", "queryExecutionId":"01234567-0123-0123-0123-012345678901", "workgroupName":"primary", "sequenceNumber":"3" } }

Propriétés de sortie

La sortie JSON inclut les propriétés suivantes.

Propriété Description
athenaError Apparaît uniquement lorsque currentState est FAILED. Contient des informations sur l'erreur qui s'est produite, notamment la catégorie d'erreur, le type d'erreur, le message d'erreur et la possibilité de réessayer l'action qui a conduit à l'erreur. Les valeurs de chacun de ces champs dépendent de la nature de l'erreur. Pour plus d'informations sur les valeurs de errorCategory et errorType, voir Catalogue d'erreurs Athena.
versionId Numéro de version du schéma de l'objet détaillé.
currentState État dans lequel la requête a été placée au moment de l'événement.
previousState État initial de la requête au moment de l'événement.
statementType Type d'instruction de requête exécutée.
queryExecutionId Identifiant unique de la requête exécutée.
workgroupName Nom du groupe de travail dans lequel la requête a été exécutée.
sequenceNumber Nombre croissant de façon monotone qui permet de dédupliquer et d'ordonner les événements entrants qui impliquent une seule requête exécutée. Lorsque des événements dupliqués sont publiés pour le même changement d'état, la valeur sequenceNumber est la même. Lorsqu'une requête subit plusieurs changements d'état, par exemple des requêtes faisant l'objet d'un rare remplacement en file d'attente, vous pouvez utiliser sequenceNumber pour ordonner des événements avec des valeurs currentState et previousState identiques.

Exemple

L'exemple suivant publie des événements dans une rubrique Amazon SNS à laquelle vous êtes abonné. Lorsque Athena est interrogé, vous recevez un e-mail. L'exemple suppose que la rubrique Amazon SNS existe et que vous y êtes abonné.

Publication des événements Athena dans une rubrique Amazon SNS
  1. Créez la cible pour votre rubrique Amazon SNS. Donnez au principal du service des événements EventBridge l'autorisation events.amazonaws.com de publier sur votre rubrique Amazon SNS, comme dans l'exemple suivant.

    { "Effect":"Allow", "Principal":{ "Service":"events.amazonaws.com" }, "Action":"sns:Publish", "Resource":"arn:aws:sns:us-east-1:111111111111:your-sns-topic" }
  2. Utilisez la commande events put-rule de l'interface de ligne de commande (AWS CLI) pour créer une règle pour les événements Athena, comme dans l'exemple suivant.

    aws events put-rule --name {ruleName} --event-pattern '{"source": ["aws.athena"]}'
  3. Utilisez la commande events put-targets de l'interface de ligne de commande (AWS CLI) pour attacher la cible de la rubrique Amazon SNS à la règle, comme dans l'exemple suivant.

    aws events put-targets --rule {ruleName} --targets Id=1,Arn=arn:aws:sns:us-east-1:111111111111:your-sns-topic
  4. Interrogez Athena et observez la cible invoquée. Vous devriez recevoir les e-mails correspondants à partir de la rubrique Amazon SNS.

Utilisation des Notifications des utilisateurs AWS avec Amazon Athena

Vous pouvez utiliser Notifications des utilisateurs AWS pour configurer des canaux de diffusion afin d’être averti des événements Amazon Athena. Vous recevez une notification lorsqu'un événement correspond à une règle que vous avez spécifiée. Vous pouvez recevoir des notifications relatives à des événements via plusieurs canaux, notamment par email, via des notifications de chat Amazon Q Developer dans les applications de chat ou via des notifications push de l’AWS Console Mobile Application. Vous pouvez également voir les notifications dans le Centre de notifications de la console. Notifications des utilisateurs prend en charge l’agrégation, ce qui peut réduire le nombre de notifications que vous recevez lors d’événements spécifiques.

Pour plus d’informations, consultez le Guide de l’utilisateur Notifications des utilisateurs AWS.