使用 監控 Athena 查詢事件 EventBridge - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 監控 Athena 查詢事件 EventBridge

您可以使用 Amazon Athena 搭配 Amazon EventBridge 接收有關查詢狀態的即時通知。當您提交的查詢轉換狀態時,Athena 會將事件發佈至 EventBridge ,其中包含該查詢狀態轉換的相關資訊。您可以針對感興趣的事件撰寫簡單的規則,並在事件符合規則時採取自動化動作。例如,您可以建立規則,在查詢達到終端機狀態時調用 AWS Lambda 函數。盡可能發出事件。

在您為 Athena 建立事件規則之前,請執行下列動作:

注意

Athena 目前提供一種事件類型 (Athena 查詢狀態變更),但可能會新增其他事件類型和詳細資訊。如果您以程式設計方式還原序列化事件JSON資料,請確定您的應用程式已準備好在新增其他屬性時處理未知屬性。

以下是 Amazon Athena 事件的基本模式。

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

下列範例會顯示 currentState 值為 SUCCEEDED 的 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":{ "versionId":"0", "currentState":"SUCCEEDED", "previousState":"RUNNING", "statementType":"DDL", "queryExecutionId":"01234567-0123-0123-0123-012345678901", "workgroupName":"primary", "sequenceNumber":"3" } }

下列範例會顯示 currentState 值為 FAILED 的 Athena 狀態變更事件。只有在 currentStateFAILED 時,才會顯示 athenaError 區塊。如需有關 errorCategoryerrorType 值的詳細資訊,請參閱 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" } }

輸出屬性

JSON 輸出包含下列屬性。

屬性 描述
athenaError 只有在 currentStateFAILED 時才會顯示。包含發生之錯誤的相關資訊,包括錯誤類別、錯誤類型、錯誤訊息,以及是否可以重試導致錯誤的動作。每個欄位的值視錯誤性質而定。如需有關 errorCategoryerrorType 值的詳細資訊,請參閱 Athena 錯誤目錄
versionId 詳細資訊物件之結構描述的版本號碼。
currentState 在事件發生時查詢所轉換成的狀態。
previousState 在事件發生時查詢從其轉換的狀態。
statementType 執行的查詢陳述式類型。
queryExecutionId 查詢執行的唯一識別碼。
workgroupName 執行查詢的工作群組名稱。
sequenceNumber 單調遞增的數字,允許刪除重複和排序涉及所執行單一查詢的傳入事件。當針對相同的狀態轉換發布重複事件時,sequenceNumber 值是相同的。當查詢經歷一次以上的狀態轉換時 (例如遇到鮮少列入佇列的查詢),您可以使用 sequenceNumber 來排序 currentStatepreviousState 值相同的事件。

範例

下列範例會將事件發佈至您已訂閱的 Amazon SNS主題。查詢 Athena 時,您會收到一封電子郵件。此範例假設 Amazon SNS主題存在且您已訂閱。

將 Athena 事件發佈至 Amazon SNS主題
  1. 為您的 Amazon SNS主題建立目標。授予 EventBridge 事件 Service Principal 發佈至 Amazon SNS主題的events.amazonaws.com許可,如下列範例所示。

    { "Effect":"Allow", "Principal":{ "Service":"events.amazonaws.com" }, "Action":"sns:Publish", "Resource":"arn:aws:sns:us-east-1:111111111111:your-sns-topic" }
  2. 使用 AWS CLI events put-rule命令來建立 Athena 事件的規則,如下列範例所示。

    aws events put-rule --name {ruleName} --event-pattern '{"source": ["aws.athena"]}'
  3. 使用 AWS CLI events put-targets命令將 Amazon SNS主題目標連接至規則,如下列範例所示。

    aws events put-targets --rule {ruleName} --targets Id=1,Arn=arn:aws:sns:us-east-1:111111111111:your-sns-topic
  4. 查詢 Athena 並觀察被叫用的目標。您應該會收到來自 Amazon SNS主題的對應電子郵件。

AWS 使用者通知 搭配 Amazon Athena 使用

您可使用 AWS 使用者通知 來設定交付管道,以取得有關 Amazon Athena 事件的通知。當事件符合您指定的規則時,便會收到通知。您可以透過多個管道接收事件通知,包括電子郵件、AWS Chatbot 聊天通知或 AWS Console Mobile Application 推送通知。您也可以在主控台通知中心 中查看通知。 使用者通知 支援彙總,這可減少您在特定事件期間收到的通知數量。

如需詳細資訊,請參閱《AWS 使用者通知 使用者指南》https://docs.aws.amazon.com/notifications/latest/userguide/what-is.html