本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon EventBridge 監控 Canary 事件
當 Canary 變更狀態或完成執行時,Amazon EventBridge 事件規則可以通知您。EventBridge 提供near-real-time的系統事件串流,說明 AWS 資源的變更。CloudWatch Synthetics 會全力將這些事件傳送至 Eventbridge。全力傳遞意味著 CloudWatch Synthetics 會嘗試將所有事件傳送至 EventBridge,但在某些罕見的情況下,事件可能無法傳遞。EventBridge 至少會處理一次接收的所有事件。此外,您的事件接聽程式可能不會依事件發生順序接收事件。
注意
Amazon EventBridge 是匯流排服務,可讓您用於將應用程式與來自各種來源的資料互相連線。如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的什麼是 Amazon EventBridge?。
當 Canary 變更狀態或完成執行時,CloudWatch Synthetics 會發出事件。您可以建立包含事件模式的 EventBridge 規則,以符合從 CloudWatch Synthetics 傳送的所有事件類型,或只符合特定事件類型。當 Canary 觸發規則時,Eventbridge 會叫用該規則已定義的目標動作。這可讓您傳送通知、擷取事件資訊、採取修正動作、回應 Canary 狀態變更或完成 Canary 執行。例如,您可以為下列使用案例建立規則:
-
調查 Canary 執行失敗的時間
-
調查 Canary 何時進入
ERROR
狀態 -
追蹤 Canary 的生命週期
-
作為工作流程的一部分,監控 Canary 執行成功或失敗
來自 CloudWatch Synthetics 的範例事件
此區段列出了來自 CloudWatch Synthetics 的範例事件。如需有關事件格式的詳細資訊,請參閱 EventBridge 中的事件和時間模式。
Canary 狀態變更
在此事件類型中,current-state
和 previous-state
可以是下列項目:
CREATING
| READY
| STARTING
| RUNNING
| UPDATING
| STOPPING
| STOPPED
| ERROR
{ "version": "0", "id": "8a99ca10-1e97-2302-2d64-316c5dedfd61", "detail-type": "Synthetics Canary Status Change", "source": "aws.synthetics", "account": "123456789012", "time": "2021-02-09T22:19:43Z", "region": "us-east-1", "resources": [], "detail": { "account-id": "123456789012", "canary-id": "EXAMPLE-dc5a-4f5f-96d1-989b75a94226", "canary-name": "events-bb-1", "current-state": "STOPPED", "previous-state": "UPDATING", "source-location": "NULL", "updated-on": 1612909161.767, "changed-config": { "executionArn": { "previous-value": "arn:aws:lambda:us-east-1:123456789012:function:cwsyn-events-bb-1-af3e3a05-dc5a-4f5f-96d1-989EXAMPLE:1", "current-value": "arn:aws:lambda:us-east-1:123456789012:function:cwsyn-events-bb-1-af3e3a05-dc5a-4f5f-96d1-989EXAMPLE:2" }, "vpcId": { "current-value": "NULL" }, "testCodeLayerVersionArn": { "previous-value": "arn:aws:lambda:us-east-1:123456789012:layer:cwsyn-events-bb-1-af3e3a05-dc5a-4f5f-96d1-989EXAMPLE:1", "current-value": "arn:aws:lambda:us-east-1:123456789012:layer:cwsyn-events-bb-1-af3e3a05-dc5a-4f5f-96d1-989EXAMPLE:2" } }, "message": "Canary status has changed" } }
已完成成功的 Canary 執行
{ "version": "0", "id": "989EXAMPLE-f4a5-57a7-1a8f-d9cc768a1375", "detail-type": "Synthetics Canary TestRun Successful", "source": "aws.synthetics", "account": "123456789012", "time": "2021-02-09T22:24:01Z", "region": "us-east-1", "resources": [], "detail": { "account-id": "123456789012", "canary-id": "989EXAMPLE-dc5a-4f5f-96d1-989b75a94226", "canary-name": "events-bb-1", "canary-run-id": "c6c39152-8f4a-471c-9810-989EXAMPLE", "artifact-location": "cw-syn-results-123456789012-us-east-1/canary/us-east-1/events-bb-1-ec3-28ddbe266797/2021/02/09/22/23-41-200", "test-run-status": "PASSED", "state-reason": "null", "canary-run-timeline": { "started": 1612909421, "completed": 1612909441 }, "message": "Test run result is generated successfully" } }
已完成失敗的 Canary 執行
{ "version": "0", "id": "2644b18f-3e67-5ebf-cdfd-bf9f91392f41", "detail-type": "Synthetics Canary TestRun Failure", "source": "aws.synthetics", "account": "123456789012", "time": "2021-02-09T22:24:27Z", "region": "us-east-1", "resources": [], "detail": { "account-id": "123456789012", "canary-id": "af3e3a05-dc5a-4f5f-96d1-9989EXAMPLE", "canary-name": "events-bb-1", "canary-run-id": "0df3823e-7e33-4da1-8194-b04e4d4a2bf6", "artifact-location": "cw-syn-results-123456789012-us-east-1/canary/us-east-1/events-bb-1-ec3-989EXAMPLE/2021/02/09/22/24-21-275", "test-run-status": "FAILED", "state-reason": "\"Error: net::ERR_NAME_NOT_RESOLVED \"" "canary-run-timeline": { "started": 1612909461, "completed": 1612909467 }, "message": "Test run result is generated successfully" } }
事件可能會重複或不按順序。若要判斷事件的順序,請使用 time
屬性。
建立 EventBridge 規則的先決條件
在您為 CloudWatch Synthetics 建立 Eventbridge 規則之前,請執行下列動作:
-
熟悉 Eventbridge 中的事件、規則和目標。
-
建立和設定將由您的 Eventbridge 規則叫用的目標。規則可以叫用許多類型的目標,包括:
Amazon SNS 主題
AWS Lambda 函數
Kinesis 串流
Amazon SQS 佇列
如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的什麼是 Amazon EventBridge? 和 Amazon EventBridge 入門。
建立 EventBridge 規則 (CLI)
下列範例中的步驟會建立 EventBridge 規則,該規則會在 us-east-1
中名為 my-canary-name
的 Canary 完成執行或變更狀態時發佈 Amazon SNS 主題。
-
建立 規則。
aws events put-rule \ --name TestRule \ --region us-east-1 \ --event-pattern "{\"source\": [\"aws.synthetics\"], \"detail\": {\"canary-name\": [\"my-canary-name\"]}}"
模式省略的任何屬性會遭到忽略。
-
新增主題作為規則目標。
使用 Amazon SNS 主題的 Amazon Resource Name (ARN) 取代為
topic-arn
。
aws events put-targets \ --rule TestRule \ --targets "Id"="1","Arn"="
topic-arn
"注意
若要讓 Amazon EventBridge 呼叫您的目標主題,您必須將以資源為基礎的政策新增到您的主題。如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的 Amazon SNS 許可。
如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的 EventBridge 中的事件和事件模式。