Surveillance des requêtes Athena à l'aide des événements Amazon EventBridge - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Surveillance des requêtes Athena à l'aide des événements Amazon EventBridge

Vous pouvez utiliser Amazon Athena avec Amazon EventBridge pour recevoir des notifications en temps réel concernant l'état de vos requêtes. Lorsqu'une requête à laquelle vous avez soumis des états de transition, Athena publie un événement EventBridge contenant des informations sur cette transition 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 AWS Lambda fonction lorsqu'une requête atteint un état terminal. Les événements sont générés dans la mesure du possible.

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

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.

Format des événements Athena

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

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

Événement de changement d'état de requête Athena

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. events.amazonaws.comAutorisez le EventBridge responsable du service des événements à 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 AWS CLI events put-rule commande 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 AWS CLI events put-targets commande pour associer 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 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 des e-mails, des notifications de chat AWS Chatbot ou des notifications push AWS Console Mobile Application. Vous pouvez également consulter 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 de plus amples informations, veuillez consulter le Guide de l’utilisateur Notifications des utilisateurs AWS .