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.
Surveillez les événements de requête Athena avec 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 :
-
Familiarisez-vous avec les événements, les règles et les cibles dans EventBridge. Pour plus d'informations, consultez Qu'est-ce qu'Amazon EventBridge ? Pour plus d'informations sur la configuration des règles, consultez Getting started with Amazon EventBridge.
-
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 des JSON données d'événements par programmation, assurez-vous que votre application est prête à gérer les propriétés inconnues si des 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 JSON sortie 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 sur une SNS rubrique Amazon à laquelle vous êtes abonné. Lorsque Athena est interrogé, vous recevez un e-mail. L'exemple suppose que le SNS sujet Amazon existe et que vous y êtes abonné.
Pour publier des événements Athena sur un sujet Amazon SNS
-
Créez la cible de votre SNS rubrique Amazon.
events.amazonaws.com
Autorisez le responsable du service des EventBridge événements à publier sur votre SNS rubrique Amazon, 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" }
-
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"]}' -
Utilisez la AWS CLI
events put-targets
commande pour associer la cible du SNS sujet Amazon à 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 -
Interrogez Athena et observez la cible invoquée. Vous devriez recevoir les e-mails correspondants de la SNS rubrique Amazon.
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
Pour plus d’informations, consultez le Guide de l’utilisateur Notifications des utilisateurs AWS .