

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

# 使用 Amazon EventBridge 監控 AMI 事件
<a name="monitor-ami-events"></a>

當 Amazon Machine Image (AMI) 的狀態變更時，Amazon EC2 會產生傳送至 Amazon EventBridge (之前稱為 Amazon CloudWatch Events) 的事件。事件會以 JSON 格式傳送至預設 EventBridge 事件匯流排。您可以使用 Amazon EventBridge 來偵測並對這些事件做出反應。為此，您可以在 EventBridge 中建立觸發動作以回應事件的規則。例如，您可以建立 EventBridge 規則，以偵測 AMI 建立程序完成的時間，然後呼叫 Amazon SNS 主題來傳送電子郵件通知給您。

當 AMI 進入下列任何狀態時，Amazon EC2 會產生 `EC2 AMI State Change` 事件：
+ `available`
+ `failed`
+ `deregistered`
+ `disabled`

盡可能產生事件。

下表列出 AMI 操作和 AMI 可以進入的狀態。在該表中，**是**表示當對應操作執行時 AMI 可進入的狀態。


| AMI 操作 | available | failed | deregistered | disabled | 
| --- | --- | --- | --- | --- | 
| CopyImage | 是 | 是 |  |  | 
|  CreateImage  |  是  |  是  |  |  | 
|  CreateRestoreImageTask  | 是 | 是 |  |  | 
| DeregisterImage |  |  |  是  |  | 
|  DisableImage  |  |  |  |  是  | 
|  EnableImage  |  是  |  |  |  | 
| RegisterImage | 是 | 是 |  |  | 

**EC2 AMI State Change 事件**
+ [事件詳細資訊](#ami-events)
+ [available 事件](#ami-event-available)
+ [failed 事件](#ami-event-failed)
+ [deregistered 事件](#ami-event-deregistered)
+ [disabled 事件](#ami-event-disabled)

## 事件詳細資訊
<a name="ami-events"></a>

您可以使用事件中的下列欄位來建立觸發動作的規則：

`"source": "aws.ec2"`  
識別該事件是來自 Amazon EC2。

`"detail-type": "EC2 AMI State Change"`  
識別事件名稱。

`"detail": { "ImageId": "ami-0abcdef1234567890", "State": "available", }`  
提供 AMI ID 和 AMI 狀態 (`available`、`failed`、`deregistered`、或 `disabled`)。

如需詳細資訊，請參閱「Amazon EventBridge 使用者指南」**中的以下內容：
+ [Amazon EventBridge 事件](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)
+ [Amazon EventBridge 事件模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)
+ [Amazon EventBridge 規則](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)

如需如何建立 Lambda 函數和執行 Lambda 函數的 EventBridge 規則的教學課程，請參閱「AWS Lambda 開發人員指南」**中的[教學課程：使用 EventBridge 記錄 Amazon EC2 執行個體的狀態](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-log-ec2-instance-state.html)。

## available 事件
<a name="ami-event-available"></a>

以下是 `CreateImage`、`CopyImage`、`RegisterImage`、`CreateRestoreImageTask` 或 `EnableImage` 操作成功之後，AMI 進入 `available` 狀態時，Amazon EC2 產生的事件範例。

`"State": "available"` 表示操作成功。

```
{
    "version": "0",
    "id": "example-9f07-51db-246b-d8b8441bcdf0",
    "detail-type": "EC2 AMI State Change",
    "source": "aws.ec2",
    "account": "012345678901",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": ["arn:aws:ec2:us-east-1::image/ami-0abcdef1234567890"],
    "detail": {
        "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b",
        "ImageId": "ami-0abcdef1234567890",
        "State": "available",
        "ErrorMessage": ""
    }
}
```

## failed 事件
<a name="ami-event-failed"></a>

以下是 `CreateImage`、`CopyImage`、`RegisterImage` 或 `CreateRestoreImageTask` 操作失敗之後，AMI 進入 `failed` 狀態時，Amazon EC2 產生的事件範例。

下列欄位會提供相關資訊：
+ `"State": "failed"` - 表示操作失敗。
+ `"ErrorMessage": ""` - 提供操作失敗的原因。

```
{
    "version": "0",
    "id": "example-9f07-51db-246b-d8b8441bcdf0",
    "detail-type": "EC2 AMI State Change",
    "source": "aws.ec2",
    "account": "012345678901",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": ["arn:aws:ec2:us-east-1::image/ami-0abcdef1234567890"],
    "detail": {
        "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b",
        "ImageId": "ami-0abcdef1234567890",
        "State": "failed",
        "ErrorMessage": "Description of failure"
    }
}
```

## deregistered 事件
<a name="ami-event-deregistered"></a>

以下是在 `DeregisterImage` 操作成功之後，AMI 進入 `deregistered` 狀態時，Amazon EC2 產生的事件範例。如果操作失敗，則不會產生任何事件。因為 `DeregisterImage` 是一個同步操作，所以會立刻發現所有失敗。

`"State": "deregistered"` 表示 `DeregisterImage` 操作成功。

```
{
    "version": "0",
    "id": "example-9f07-51db-246b-d8b8441bcdf0",
    "detail-type": "EC2 AMI State Change",
    "source": "aws.ec2",
    "account": "012345678901",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": ["arn:aws:ec2:us-east-1::image/ami-0abcdef1234567890"],
    "detail": {
        "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b",
        "ImageId": "ami-0abcdef1234567890",
        "State": "deregistered",
        "ErrorMessage": ""
    }
}
```

## disabled 事件
<a name="ami-event-disabled"></a>

以下是在 `DisableImage` 操作成功之後，AMI 進入 `disabled` 狀態時，Amazon EC2 產生的事件範例。如果操作失敗，則不會產生任何事件。因為 `DisableImage` 是一個同步操作，所以會立刻發現所有失敗。

`"State": "disabled"` 表示 `DisableImage` 操作成功。

```
{
    "version": "0",
    "id": "example-9f07-51db-246b-d8b8441bcdf0",
    "detail-type": "EC2 AMI State Change",
    "source": "aws.ec2",
    "account": "012345678901",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": ["arn:aws:ec2:us-east-1::image/ami-0abcdef1234567890"],
    "detail": {
        "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b",
        "ImageId": "ami-0abcdef1234567890",
        "State": "disabled",
        "ErrorMessage": ""
    }
}
```