本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon 監控 AMI 事件 EventBridge
當 Amazon 機器映像(AMI)的狀態發生變化時,Amazon EC2 會生成一個發送到 Amazon 的事件 EventBridge (以前稱為 Amazon CloudWatch 活動)。您可以使用 Amazon EventBridge 偵測這些事件並做出回應。您可以透過在其中建立規則 EventBridge 來觸發動作以回應事件來執行此操作。例如,您可以建立偵測 AMI 建立程序何時完成的 EventBridge 規則,然後叫用 Amazon SNS 主題以傳送電子郵件通知給您。
當 AMI 進入下列任何狀態時,Amazon EC2 會產生事件:
-
available
-
failed
-
deregistered
-
disabled
下表列出 AMI 操作和 AMI 可以進入的狀態。在該表中,是表示當對應操作執行時 AMI 可進入的狀態。
AMI 操作 | available | failed | deregistered | disabled |
---|---|---|---|---|
CopyImage |
是 |
是 |
||
CreateImage |
是 |
是 |
||
CreateRestoreImageTask |
是 |
是 |
||
DeregisterImage |
是 |
|||
DisableImage |
是 |
|||
EnableImage |
是 |
|||
RegisterImage |
是 |
是 |
盡可能產生事件。
AMI 事件
有四個 EC2 AMI State Change 事件:
事件會以 JSON 格式傳送至預設 EventBridge 事件匯流排。
事件中的下列欄位可用於建立觸發動作的規則:
"source": "aws.ec2"
-
識別該事件是來自 Amazon EC2。
"detail-type": "EC2 AMI State Change"
-
識別事件名稱。
"detail": { "ImageId": "ami-0123456789example", "State": "available", }
-
提供下列資訊:
-
AMI ID - 如果要追蹤特定 AMI。
-
AMI 的狀態 (
available
、failed
、deregistered
或disabled
)。
-
available
以下是 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-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "State": "available", "ErrorMessage": "" } }
failed
以下是 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-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "State": "failed", "ErrorMessage": "Description of failure" } }
deregistered
以下是在 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-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "State": "deregistered", "ErrorMessage": "" } }
disabled
以下是在 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-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "State": "disabled", "ErrorMessage": "" } }
創建 Amazon EventBridge 規則
您可以建立 Amazon EventBridge 規則,以指定在 EventBridge 收到與規則中事件模式相符的事件時要採取的動作。當事件相符時, EventBridge 會將事件傳送至指定的目標,並觸發規則中定義的動作。
事件模式擁有與其相符事件相同的結構。事件模式與一個事件相符或不相符。
為 AMI 狀態變更事件建立規則時,可以在事件模式中包含下列欄位:
"source": "aws.ec2“
-
識別該事件是來自 Amazon EC2。
"detail-type": "EC2 AMI State Change"
-
識別事件名稱。
"detail": { "ImageId": "ami-0123456789example", "State": "available", }
-
提供下列資訊:
-
AMI ID - 如果要追蹤特定 AMI。
-
AMI 的狀態 (
available
、failed
、deregistered
或disabled
)。
-
範例:建立 EventBridge 規則以傳送通知
下列範例會建立 EventBridge 規則,以便在CreateImage
作業順利完成之後,任何 AMI 處於available
狀態時傳送電子郵件、文字訊息或行動推播通知。
在建立 EventBridge 規則之前,您必須為電子郵件、文字訊息或行動推播通知建立 Amazon SNS 主題。
若要建立 EventBridge 規則,以便在建立 AMI 且處於available
狀態時傳送通知
-
在以下位置打開 Amazon EventBridge 控制台 https://console.aws.amazon.com/events/
。 -
選擇建立規則。
-
針對 Define rule detail (定義規則詳細資訊) 執行下列動作:
-
輸入規則的Name (名稱),或者輸入描述。
在同一個區域和同一個事件匯流排上,規則不能與另一個規則同名。
-
針對 Event bus (事件匯流排) 選擇 default (預設值)。當您帳戶中的 AWS 服務產生事件時,一律會前往您帳戶的預設事件匯流排。
-
針對 Rule type (規則類型) 選擇 Rule with an event pattern (具有事件模式的規則)。
-
選擇下一步。
-
-
針對 Build event pattern (建置事件模式) 執行下列動作:
-
對於事件來源,請選擇AWS 事件或 EventBridge合作夥伴事件。
-
針對此範例的 Event pattern (事件模式),您需指定下列事件模式,以便當 AMI 進入
available
狀態時與產生的任何EC2 AMI State Change
事件相符:{ "source": ["aws.ec2"], "detail-type": ["EC2 AMI State Change"], "detail": {"State": ["available"]} }
若要新增事件模式,您可以透過選擇 Event pattern form (事件模式表單) 使用範本,或者透過選擇 Custom pattern (JSON editor) (自定義模式 (JSON 編輯器)) 指定自有模式,如下:
-
若要使用範本建立事件模式,請執行下列動作:
-
選擇 Event pattern form (事件模式表單)。
-
在 Event source (事件來源) 欄位中,選擇 AWS services (服務)。
-
在 AWS Service (服務) 欄位中,選擇 EC2。
-
針對 Event type (事件類型) 選擇 EC2 AMI State Change (EC2 AMI 狀態變更)。
-
若要自訂範本,請選擇 Edit pattern (編輯模式) 並進行變更以與範例事件模式相符。
-
-
若要指定自訂事件模式,請執行下列動作:
-
選擇 Custom pattern (JSON editor) (自訂模式 (JSON 編輯器))。
-
在 Event pattern (事件模式) 方塊中,為此範例新增事件模式。
-
-
-
選擇下一步。
-
-
針對 Select target(s) (選取目標) 執行下列動作:
-
在 Target types (目標類型) 欄位中,選擇 AWS service (服務)。
-
針對 Select a target (選取目標) 選取 SNS topic (SNS 主題),以便在事件發生時傳送電子郵件、簡訊或行動裝置推送通知。
-
針對 Topic (主題),請選擇現有的主題。您首先需要使用 Amazon SNS 主控台建立 Amazon SNS 主題。如需詳細資訊,請參閱 Amazon 簡單通知服務開發人員指南中的使用 Amazon SNS 進行 application-to-person (A2P) 簡訊。
-
(選用) 在 Additional settings (其他設定) 下,您可以選擇性地設定其他設定。如需詳細資訊,請參閱 Amazon EventBridge 使用者指南中的建立對事件做出反應的 Amazon EventBridge 規則 (步驟 16)。
-
選擇下一步。
-
-
(選用) 針對 Tags (標籤),您可以選擇性地將一或多個標籤指派給您的規則,然後選擇 Next (下一步)。
-
針對 Review and create (檢閱和建立) 執行下列動作:
-
檢閱規則的詳細資訊,然後視需求進行修改。
-
選擇建立規則。
-
如需詳細資訊,請參閱 Amazon EventBridge 使用者指南中的以下主題:
如需如何建立 Lambda 函數和執行 Lambda 函數的 EventBridge 規則的教學課程,請參閱教學課程:使用AWS Lambda 開發人員指南 EventBridge中的使用記錄 Amazon EC2 執行個體的狀態。