

AWS App Runner 不再開放給新客戶。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS App Runner 可用性變更](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)。

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

# 在 EventBridge 中處理 App Runner 事件
<a name="monitor-ev"></a>

使用 Amazon EventBridge，您可以設定事件驅動規則，以監控 AWS App Runner 服務中的即時資料串流是否有特定模式。當規則的模式相符時，EventBridge 會在目標中啟動動作 AWS Lambda，例如 AWS Batch Amazon ECS 和 Amazon SNS。例如，您可以在部署至服務失敗時發出 Amazon SNS 主題訊號，以設定傳送電子郵件通知的規則。或者，您可以設定 Lambda 函數，以便在服務更新失敗時通知 Slack 頻道。如需 EventBridge 的詳細資訊，請參閱 [Amazon EventBridge 使用者指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/)。

App Runner 會將下列事件類型傳送至 EventBridge
+ *服務狀態變更* – App Runner 服務的狀態變更。例如，服務狀態已變更為 `DELETE_FAILED`。
+ *服務操作狀態變更* – App Runner 服務上長時間非同步操作的狀態變更。例如，服務開始建立、服務更新成功完成，或服務部署完成但發生錯誤。

## 建立 EventBridge 規則以對 App Runner 事件採取行動
<a name="monitor-ev.rule"></a>

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

如需建立 EventBridge 規則的詳細資訊，請參閱《*Amazon EventBridge 使用者指南*》中的[為 AWS 服務建立規則](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html)。

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

## App Runner 事件範例
<a name="monitor-ev.event-examples"></a>

這些是 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 事件模式範例
<a name="monitor-ev.pattern-examples"></a>

下列範例示範您可以在 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 事件參考
<a name="monitor-ev.ref"></a>

### 服務狀態變更
<a name="monitor-ev.ref.service"></a>

服務狀態變更事件已`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}}"
```

### 操作狀態變更
<a name="monitor-ev.ref.operation"></a>

操作狀態變更事件已`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}}"
```

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



- ** `CreateServiceStarted` **
  - 服務建立已開始。

- ** `CreateServiceCompletedSuccessfully` **
  - 服務建立已成功完成。

- ** `CreateServiceFailed` **
  - 服務建立失敗。如需詳細資訊，請參閱 服務日誌。

- ** `DeleteServiceStarted` **
  - 服務刪除已開始。

- ** `DeleteServiceCompletedSuccessfully` **
  - 服務刪除已成功完成。

- ** `DeleteServiceFailed` **
  - 服務刪除失敗。

- ** `UpdateServiceStarted` **
  -  

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

- ** `UpdateServiceFailed` **
  - 服務更新失敗。如需詳細資訊，請參閱 服務日誌。

- ** `DeploymentStarted` **
  - 部署已開始。

- ** `DeploymentCompletedSuccessfully` **
  - 部署已成功完成。

- ** `DeploymentFailed` **
  - 部署失敗。如需詳細資訊，請參閱 服務日誌。

- ** `PauseServiceStarted` **
  - 服務暫停已啟動。

- ** `PauseServiceCompletedSuccessfully` **
  - 服務暫停已成功完成。

- ** `PauseServiceFailed` **
  - 服務暫停失敗。

- ** `ResumeServiceStarted` **
  - 服務繼續已啟動。

- ** `ResumeServiceCompletedSuccessfully` **
  - 服務繼續成功完成。

- ** `ResumeServiceFailed` **
  - 服務繼續失敗。

