Athena-Abfrageereignisse mit EventBridge überwachen - Amazon Athena

Athena-Abfrageereignisse mit EventBridge überwachen

Sie können Amazon Athena mit Amazon EventBridge verwenden, um Echtzeitbenachrichtigungen zum Status Ihrer Abfragen zu erhalten. Wenn eine von Ihnen übermittelte Abfrage in andere Zustände übergeht, veröffentlicht Athena ein Ereignis in EventBridge, das Informationen über diesen Abfragezustandübergang enthält. Sie können einfache Regeln für Ereignisse schreiben, die für Sie von Interesse sind, und automatisierte Aktionen ausführen, wenn ein Ereignis mit einer Regel übereinstimmt. Sie können beispielsweise eine Regel erstellen, die eine AWS Lambda-Funktion aufruft, wenn eine Abfrage einen Endstatus erreicht. Ereignisse werden auf bestmögliche Weise ausgegeben.

Führen Sie vor dem Erstellen von Ereignisregeln für Athena die folgenden Schritte aus:

Anmerkung

Athena bietet aktuell einen Ereignistyp, nämlich die Athena-Abfragezustandsänderung, wird aber möglicherweise um weitere Ereignistypen und Details erweitert. Wenn Sie JSON-Ereignisdaten programmgesteuert de-serialisieren, vergewissern Sie sich, dass Ihre Anwendung unbekannte Eigenschaften verarbeiten kann, falls diese zusätzlichen Eigenschaften hinzugefügt werden.

Im Folgenden finden Sie das grundlegende Muster für ein Amazon-Athena-Ereignis.

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

Das folgende Beispiel zeigt ein Athena-Abfragezustand-Änderungsereignis-Ereignis mit dem currentState-Wert von 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" } }

Das folgende Beispiel zeigt ein Athena-Abfragezustand-Änderungsereignis-Ereignis mit dem currentState-Wert von FAILED. Der athenaError-Block wird nur angezeigt, wenn currentState FAILED ist. Informationen zu den Werten für errorCategory und errorType finden Sie unter Athena-Fehlerkatalog.

{ "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" } }

Ausgabe-Eigenschaften

Die JSON-Ausgabe enthält die folgenden Eigenschaften.

Property (Eigenschaft) Description (Beschreibung)
athenaError Wird nur angezeigt, wenn currentState FAILED ist. Enthält Informationen über den aufgetretenen Fehler, einschließlich Fehlerkategorie, Fehlertyp, Fehlermeldung und ob die Aktion, die zum Fehler geführt hat, wiederholt werden kann. Die Werte für jedes dieser Felder hängen von der Art des aufgetretenen Fehlers ab. Informationen zu den Werten für errorCategory und errorType finden Sie unter Athena-Fehlerkatalog.
versionId Die Versionsnummer für das Schema des Detailobjekts.
currentState Der Zustand, in den die Abfrage zum Zeitpunkt des Ereignisses übergegangen ist.
previousState Der Zustand, aus dem die Abfrage zum Zeitpunkt des Ereignisses übergegangen ist.
statementType Der Typ der Abfrageanweisung, die ausgeführt wurde.
queryExecutionId Der eindeutige Bezeichner für die ausgeführte Abfrage.
workgroupName Der Name der Arbeitsgruppe, in der die Abfrage ausgeführt wurde.
sequenceNumber Eine monoton zunehmende Zahl, die die Deduplizierung und Anordnung eingehender Ereignisse ermöglicht, die eine einzelne Abfrageausführung erfordern. Wenn doppelte Ereignisse für denselben Statusübergang veröffentlicht werden, ist der Wert sequenceNumber derselbe. Wenn bei einer Abfrage mehr als einmal ein Zustandsübergang auftritt, z. B. bei Abfragen mit dem selten vorkommenden erneuten Einreihen in die Warteschlange, können mit sequenceNumber Ereignisse nach identischen currentState- und previousState-Werten angeordnet werden.

Beispiel

Im folgenden Beispiel werden Ereignisse in einem Amazon-SNS-Thema veröffentlicht, das Sie abonniert haben. Wenn Athena abgefragt wird, erhalten Sie eine E-Mail. Im Beispiel wird davon ausgegangen, dass das Thema Amazon SNS vorhanden ist und Sie es abonniert haben.

So veröffentlichen Sie Athena-Ereignisse in einem Amazon-SNS-Thema
  1. Erstellen Sie das Ziel für Ihr Amazon-SNS-Thema. Erteilen Sie dem EventBridge-Events-Serviceprinzipal events.amazonaws.com die Berechtigung zum Veröffentlichen in Ihrem Amazon-SNS-Thema, wie im folgenden Beispiel.

    { "Effect":"Allow", "Principal":{ "Service":"events.amazonaws.com" }, "Action":"sns:Publish", "Resource":"arn:aws:sns:us-east-1:111111111111:your-sns-topic" }
  2. Verwenden Sie den AWS CLI-Befehl events put-rule, um eine Regel für Athena-Ereignisse zu erstellen, wie im folgenden Beispiel.

    aws events put-rule --name {ruleName} --event-pattern '{"source": ["aws.athena"]}'
  3. Verwenden Sie den AWS CLI-Befehl events put-targets, um das Amazon-SNS-Themenziel wie im folgenden Beispiel an die Regel anzuhängen.

    aws events put-targets --rule {ruleName} --targets Id=1,Arn=arn:aws:sns:us-east-1:111111111111:your-sns-topic
  4. Fragen Sie Athena ab und achten Sie auf das aufgerufene Ziel ab. Sie sollten entsprechende E-Mails von dem Amazon-SNS-Thema erhalten.

Nutzung von AWS-Benutzerbenachrichtigungen mit Amazon Athena

Sie können mit AWS-Benutzerbenachrichtigungen Lieferkanäle festlegen, um über Amazon-Athena-Ereignisse benachrichtigt zu werden. Sie erhalten eine Benachrichtigung, wenn ein Ereignis einer von Ihnen angegebenen Regel entspricht. Sie können Benachrichtigungen für Ereignisse über mehrere Kanäle erhalten, einschließlich E-Mail, Chat-Benachrichtigungen von Amazon Q Developer in Chat-Anwendungen oder AWS Console Mobile Application-Push-Benachrichtigungen. Sie können Benachrichtigungen auch im Konsolen-Benachrichtigungscenter anzeigen. Benutzerbenachrichtigungen unterstützt die Aggregation, wodurch die Anzahl der Benachrichtigungen, die Sie bei bestimmten Ereignissen erhalten, verringert werden kann.

Weitere Informationen finden Sie im AWS-Benutzerbenachrichtigungen-Leitfaden.