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.
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 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
-
Créez la cible pour votre rubrique Amazon SNS.
events.amazonaws.com
Autorisez 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" }
-
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 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 -
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 d'événements via plusieurs canaux, notamment par e-mail, Amazon Q Developer dans les applications de chat, les notifications par chat ou les notifications AWS Console Mobile Applicationpush. 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 .