Monitoraggio delle query Athena con eventi Amazon EventBridge - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Monitoraggio delle query Athena con eventi Amazon EventBridge

Puoi utilizzare Amazon Athena con Amazon EventBridge per ricevere notifiche in tempo reale sullo stato delle tue richieste. Quando una query a cui hai inviato lo stato di transizione, Athena pubblica un evento EventBridge contenente informazioni sulla transizione dello stato della query. Puoi scrivere semplici regole per gli eventi che ti interessano e intraprendere azioni automatiche quando un evento corrisponde a una regola. Ad esempio, è possibile creare una regola che richiami una AWS Lambda funzione quando una query raggiunge uno stato terminale. Gli eventi vengono emessi secondo il principio del massimo sforzo.

Prima di creare regole per gli eventi per Athena, tuttavia, dovresti assicurarti di:

  • Acquisisci familiarità con eventi, regole e obiettivi in. EventBridge Per ulteriori informazioni, consulta What Is Amazon EventBridge? Per ulteriori informazioni su come configurare le regole, consulta la sezione Guida introduttiva ad Amazon EventBridge.

  • Creare la destinazione o le destinazioni da utilizzare nelle regole degli eventi.

Nota

Athena offre attualmente un tipo di evento, Athena Query State Change, ma può aggiungere altri tipi di eventi e dettagli. Se deserializzi in modo programmatico dati JSON di eventi, assicurati che l'applicazione sia in grado di gestire proprietà sconosciute se proprietà aggiuntive verranno aggiunte.

Formato di un evento Athena

Di seguito è riportato il modello di base per un evento Amazon Athena.

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

Evento di modifica dello stato di query Athena

Nell'esempio seguente viene illustrato un evento Athena Query State Change con un valore di currentState pari a 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" } }

Nell'esempio seguente viene illustrato un evento Athena Query State Change con un valore di currentState pari a FAILED. Il blocco athenaError appare solo quando currentState è FAILED. Per informazioni sui valori per errorCategory e errorType, consulta la pagina catalogo degli errori 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" } }

Proprietà di output

L'output JSON include le seguenti proprietà.

Proprietà Descrizione
athenaError Appare solo quando currentState è FAILED. Contiene informazioni sull'errore che si è verificato, tra cui la categoria, il tipo e il messaggio di errore, nonché se è possibile ripetere l'operazione che ha portato all'errore. I valori per ciascuno di questi campi dipendono dalla natura dell'errore. Per informazioni sui valori per errorCategory e errorType, consulta la pagina catalogo degli errori Athena.
versionId Il numero di versione per lo schema dell'oggetto di dettaglio.
currentState Lo stato in cui la query è passata al momento dell'evento.
previousState Lo stato da cui la query è transitata al momento dell'evento.
statementType Il tipo di istruzione di query che è stata eseguita.
queryExecutionId Identificatore univoco per la query in esecuzione.
workgroupName Il nome del gruppo di lavoro in cui è stata eseguita la query.
sequenceNumber Un numero crescente monotonicamente che consente la deduplicazione e l'ordinamento di eventi in ingresso che coinvolgono l'esecuzione di una query singola. Quando vengono pubblicati eventi duplicati per la stessa transizione di stato, il valore sequenceNumber è lo stesso. Quando una query sperimenta una transizione di stato più di una volta, ad esempio query che verificano richieste rare, è possibile utilizzare sequenceNumber per ordinare eventi con valori currentState e previousState identici.

Esempio

Nell'esempio seguente vengono pubblicati gli eventi in un argomento Amazon SNS sottoscritto. Quando Athena viene interrogato, si riceve un'e-mail. Nell'esempio si presuppone che l'argomento Amazon SNS esista e che sia stato sottoscritto.

Per pubblicare eventi Athena in un argomento Amazon SNS
  1. Crea il target per il tuo argomento Amazon SNS. Concedi agli EventBridge eventi Service Principal events.amazonaws.com l'autorizzazione a pubblicare sul tuo argomento Amazon SNS, come nell'esempio seguente.

    { "Effect":"Allow", "Principal":{ "Service":"events.amazonaws.com" }, "Action":"sns:Publish", "Resource":"arn:aws:sns:us-east-1:111111111111:your-sns-topic" }
  2. Utilizzate il AWS CLI events put-rule comando per creare una regola per gli eventi Athena, come nell'esempio seguente.

    aws events put-rule --name {ruleName} --event-pattern '{"source": ["aws.athena"]}'
  3. Utilizza il AWS CLI events put-targets comando per allegare l'argomento di destinazione di Amazon SNS alla regola, come nell'esempio seguente.

    aws events put-targets --rule {ruleName} --targets Id=1,Arn=arn:aws:sns:us-east-1:111111111111:your-sns-topic
  4. Interrogare Athena e osservare il target invocato. Dovresti ricevere le e-mail corrispondenti dall'argomento Amazon SNS.

Utilizzo Notifiche all'utente AWS con Amazon Athena

Puoi utilizzare Notifiche all'utente AWS per configurare i canali di consegna per ricevere notifiche sugli eventi Amazon Athena. L'utente riceverà una notifica quando un evento corrisponde a una regola specificata. È possibile ricevere notifiche per gli eventi tramite più canali, tra cui e-mail, notifiche chat AWS Chatbot o notifiche push AWS Console Mobile Application. Puoi anche visualizzare le notifiche nel Centro notifiche della console. Notifiche all'utente supporta l'aggregazione, che può ridurre il numero di notifiche ricevute durante eventi specifici.

Per ulteriori informazioni, consulta la Guida per l'utente Notifiche all'utente AWS .