在 EventBridge 中處理 App Runner 事件 - AWS App Runner

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

在 EventBridge 中處理 App Runner 事件

使用 Amazon EventBridge,您可以設定事件驅動規則,以監控 AWS App Runner 服務中的即時資料串流,以找出特定模式。當規則的模式相符時,EventBridge 會在目標中啟動動作 AWS Lambda,例如 AWS Batch Amazon ECS 和 Amazon SNS。例如,您可以設定傳送電子郵件通知的規則,只要部署到服務失敗,即可發出 Amazon SNS 主題的訊號。或者,您可以設定 Lambda 函數,以在服務更新失敗時通知 Slack 頻道。如需 EventBridge 的詳細資訊,請參閱 Amazon EventBridge 使用者指南

App Runner 會將下列事件類型傳送至 EventBridge

  • 服務狀態變更 – App Runner 服務的狀態變更。例如,服務狀態已變更為 DELETE_FAILED

  • 服務操作狀態變更 – App Runner 服務上長時間非同步操作的狀態變更。例如,服務開始建立、服務更新成功完成,或服務部署完成但發生錯誤。

建立 EventBridge 規則以對 App Runner 事件採取行動

EventBridge 事件是定義一些標準 EventBridge 欄位的物件,例如來源 AWS 服務和詳細資訊 (事件) 類型,以及具有事件詳細資訊的事件特定欄位集。若要建立 EventBridge 規則,您可以使用 EventBridge 主控台來定義事件模式 (應該追蹤哪些事件),並指定目標動作 (對相符項目應執行的動作)。事件模式與其相符的事件類似。您指定要比對的欄位子集,而對於每個欄位,您指定可能值的清單。本主題提供 App Runner 事件和事件模式的範例。

如需建立 EventBridge 規則的詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的為服務 AWS 建立規則

注意

有些服務支援 EventBridge 中的預先定義模式。這簡化了事件模式的建立方式。您在表單上選取欄位值,EventBridge 就會為您產生模式。目前,App Runner 不支援預先定義的模式。您必須將模式輸入為 JSON 物件。您可以使用本主題中的範例做為起點。

App Runner 事件範例

這些是 App Runner 傳送至 EventBridge 的事件範例。

  • 服務狀態變更事件。具體而言,從 OPERATION_IN_PROGRESS 變更為 RUNNING 狀態的服務。

    { "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "AppRunner Service Status Change", "source": "aws.apprunner", "account": "111122223333", "time": "2021-04-29T11:54:23Z", "region": "us-east-2", "resources": [ "arn:aws:apprunner:us-east-2:123456789012:service/my-app/8fe1e10304f84fd2b0df550fe98a71fa" ], "detail": { "previousServiceStatus": "OPERATION_IN_PROGRESS", "currentServiceStatus": "RUNNING", "serviceName": "my-app", "serviceId": "8fe1e10304f84fd2b0df550fe98a71fa", "message": "Service status is set to RUNNING.", "severity": "INFO" } }
  • 操作狀態變更事件。具體而言, UpdateService操作已成功完成。

    { "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "AppRunner Service Operation Status Change", "source": "aws.apprunner", "account": "111122223333", "time": "2021-04-29T18:43:48Z", "region": "us-east-2", "resources": [ "arn:aws:apprunner:us-east-2:123456789012:service/my-app/8fe1e10304f84fd2b0df550fe98a71fa" ], "detail": { "operationStatus": "UpdateServiceCompletedSuccessfully", "serviceName": "my-app", "serviceId": "8fe1e10304f84fd2b0df550fe98a71fa", "message": "Service update completed successfully. New application and configuration is deployed.", "severity": "INFO" } }

App Runner 事件模式範例

下列範例示範您可以在 EventBridge 規則中使用的事件模式,以符合一或多個 App Runner 事件。事件模式類似於事件。只包含您要比對的欄位,並提供清單,而不是每個欄位的純量。

  • 比對特定帳戶服務的所有服務狀態變更事件,其中服務不再處於 RUNNING 狀態。

    { "detail-type": [ "AppRunner Service Status Change" ], "source": [ "aws.apprunner" ], "account": [ "111122223333" ], "detail": { "previousServiceStatus": [ "RUNNING" ] } }
  • 比對特定帳戶服務的所有操作狀態變更事件,其中操作失敗。

    { "detail-type": [ "AppRunner Service Operation Status Change" ], "source": [ "aws.apprunner" ], "account": [ "111122223333" ], "detail": { "operationStatus": [ "CreateServiceFailed", "DeleteServiceFailed", "UpdateServiceFailed", "DeploymentFailed", "PauseServiceFailed", "ResumeServiceFailed" ] } }

App Runner 事件參考

服務狀態變更

服務狀態變更事件已detail-type設定為 AppRunner Service Status Change。它具有下列詳細資訊欄位和值:

"serviceId": "your service ID", "serviceName": "your service name", "message": "Service status is set to CurrentStatus.", "previousServiceStatus": "any valid service status", "currentServiceStatus": "any valid service status", "severity": "varies"

操作狀態變更

操作狀態變更事件已detail-type設定為 AppRunner Service Operation Status Change。它具有下列詳細資訊欄位和值:

"operationStatus": "see following table", "serviceName": "your service name", "serviceId": "your service ID", "message": "see following table", "severity": "varies"

下表列出所有可能的狀態碼和相關訊息。

Status 訊息

CreateServiceStarted

服務建立已開始。

CreateServiceCompletedSuccessfully

服務建立已成功完成。

CreateServiceFailed

服務建立失敗。如需詳細資訊,請參閱 服務日誌。

DeleteServiceStarted

服務刪除已開始。

DeleteServiceCompletedSuccessfully

服務刪除已成功完成。

DeleteServiceFailed

服務刪除失敗。

UpdateServiceStarted

UpdateServiceCompletedSuccessfully

服務更新已成功完成。已部署新的應用程式和組態。

服務更新已成功完成。已部署新組態。

UpdateServiceFailed

服務更新失敗。如需詳細資訊,請參閱 服務日誌。

DeploymentStarted

部署已開始。

DeploymentCompletedSuccessfully

部署已成功完成。

DeploymentFailed

部署失敗。如需詳細資訊,請參閱 服務日誌。

PauseServiceStarted

服務暫停已開始。

PauseServiceCompletedSuccessfully

服務暫停已成功完成。

PauseServiceFailed

服務暫停失敗。

ResumeServiceStarted

服務繼續已開始。

ResumeServiceCompletedSuccessfully

服務繼續成功完成。

ResumeServiceFailed

服務繼續失敗。