本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
您可以搭配使用 Amazon EventBridge 與 Amazon Athena,以接收有關查詢狀態的即時通知。當您提交的查詢轉換狀態時,Athena 會將事件發布至 EventBridge,當中包含該查詢狀態轉換的相關資訊。您可以針對感興趣的事件撰寫簡單的規則,並在事件符合規則時採取自動化動作。例如,您可以建立規則,在查詢達到結束狀態時叫用 AWS Lambda 函數。盡可能發出事件。
在您為 Athena 建立事件規則之前,請執行下列動作:
-
熟悉 Eventbridge 中的事件、規則和目標。如需詳細資訊,請參閱什麼是 Amazon EventBridge? 如需有關如何設定規則的詳細資訊,請參閱 Amazon EventBridge 入門。
-
建立要在事件規則中使用的一或多個目標。
注意
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 狀態變更事件。只有在 currentState
為 FAILED
時,才會顯示 athenaError
區塊。如需有關 errorCategory
和 errorType
值的詳細資訊,請參閱 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 |
只有在 currentState 為 FAILED 時才會顯示。包含發生之錯誤的相關資訊,包括錯誤類別、錯誤類型、錯誤訊息,以及是否可以重試導致錯誤的動作。每個欄位的值視錯誤性質而定。如需有關 errorCategory 和 errorType 值的詳細資訊,請參閱 Athena 錯誤目錄。 |
versionId |
詳細資訊物件之結構描述的版本號碼。 |
currentState |
在事件發生時查詢所轉換成的狀態。 |
previousState |
在事件發生時查詢從其轉換的狀態。 |
statementType |
執行的查詢陳述式類型。 |
queryExecutionId |
查詢執行的唯一識別碼。 |
workgroupName |
執行查詢的工作群組名稱。 |
sequenceNumber |
單調遞增的數字,允許刪除重複和排序涉及所執行單一查詢的傳入事件。當針對相同的狀態轉換發布重複事件時,sequenceNumber 值是相同的。當查詢經歷一次以上的狀態轉換時 (例如遇到鮮少列入佇列的查詢),您可以使用 sequenceNumber 來排序 currentState 和 previousState 值相同的事件。 |
範例
下列範例會將事件發布至您已訂閱的 Amazon SNS 主題。查詢 Athena 時,您會收到一封電子郵件。該範例假設 Amazon SNS 主題存在且您已訂閱該主題。
若要將 Athena 事件發布至 Amazon SNS 主題
-
建立 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" }
-
使用 AWS CLI
events put-rule
命令來建立 Athena 事件的規則,如下列範例所示。aws events put-rule --name {
ruleName
} --event-pattern '{"source": ["aws.athena"]}' -
使用 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 -
查詢 Athena 並觀察被叫用的目標。您應該會收到來自該 Amazon SNS 主題的相應電子郵件。
AWS 使用者通知 搭配 Amazon Athena 使用
您可使用 AWS 使用者通知 來設定交付管道,以取得有關 Amazon Athena 事件的通知。當事件符合您指定的規則時,便會收到通知。您可以透過多個管道接收事件的通知,包括電子郵件、聊天應用程式中的 Amazon Q Developer 聊天通知或AWS Console Mobile Application推送通知。您也可以在主控台通知中心
如需詳細資訊,請參閱「AWS 使用者通知 使用者指南」。