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

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

使用 Amazon EventBridge 事件監控 Athena 查

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

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

注意

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

Athena 事件格式

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

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

Athena 查詢狀態變更事件

下列範例會顯示 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 事件服務主體發佈到 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 使用者通知 使用者指南》