選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 EventBridge 監控 Athena 查詢事件

焦點模式
使用 EventBridge 監控 Athena 查詢事件 - Amazon Athena

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

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

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

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

注意

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

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

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

以下是 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 值相同的事件。

下列範例會顯示 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 事件的通知。當事件符合您指定的規則時,便會收到通知。您可以透過多個管道接收事件的通知,包括電子郵件、聊天應用程式中的 Amazon Q Developer 聊天通知或AWS Console Mobile Application推送通知。您也可以在主控台通知中心查看通知。 使用者通知 支援彙總,這可以減少您在特定事件期間收到的通知數量。

如需詳細資訊,請參閱AWS 使用者通知 使用者指南」

在本頁面

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。