使用 Amazon 監控 AMI 事件 EventBridge - Amazon Elastic Compute Cloud

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

使用 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 的狀態 (availablefailedderegistereddisabled)。

available

以下是 CreateImageCopyImageRegisterImageCreateRestoreImageTaskEnableImage 操作成功之後,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

以下是 CreateImageCopyImageRegisterImageCreateRestoreImageTask 操作失敗之後,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 的狀態 (availablefailedderegistereddisabled)。

範例:建立 EventBridge 規則以傳送通知

下列範例會建立 EventBridge 規則,以便在CreateImage作業順利完成之後,任何 AMI 處於available狀態時傳送電子郵件、文字訊息或行動推播通知。

在建立 EventBridge 規則之前,您必須為電子郵件、文字訊息或行動推播通知建立 Amazon SNS 主題。

若要建立 EventBridge 規則,以便在建立 AMI 且處於available狀態時傳送通知
  1. 在以下位置打開 Amazon EventBridge 控制台 https://console.aws.amazon.com/events/

  2. 選擇建立規則

  3. 針對 Define rule detail (定義規則詳細資訊) 執行下列動作:

    1. 輸入規則的Name (名稱),或者輸入描述。

      在同一個區域和同一個事件匯流排上,規則不能與另一個規則同名。

    2. 針對 Event bus (事件匯流排) 選擇 default (預設值)。當您帳戶中的 AWS 服務產生事件時,一律會前往您帳戶的預設事件匯流排。

    3. 針對 Rule type (規則類型) 選擇 Rule with an event pattern (具有事件模式的規則)。

    4. 選擇下一步

  4. 針對 Build event pattern (建置事件模式) 執行下列動作:

    1. 對於事件來源,請選擇AWS 事件或 EventBridge合作夥伴事件。

    2. 針對此範例的 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 編輯器)) 指定自有模式,如下:

      1. 若要使用範本建立事件模式,請執行下列動作:

        1. 選擇 Event pattern form (事件模式表單)。

        2. Event source (事件來源) 欄位中,選擇 AWS services (服務)。

        3. AWS Service (服務) 欄位中,選擇 EC2

        4. 針對 Event type (事件類型) 選擇 EC2 AMI State Change (EC2 AMI 狀態變更)。

        5. 若要自訂範本,請選擇 Edit pattern (編輯模式) 並進行變更以與範例事件模式相符。

      2. 若要指定自訂事件模式,請執行下列動作:

        1. 選擇 Custom pattern (JSON editor) (自訂模式 (JSON 編輯器))。

        2. Event pattern (事件模式) 方塊中,為此範例新增事件模式。

    3. 選擇下一步

  5. 針對 Select target(s) (選取目標) 執行下列動作:

    1. Target types (目標類型) 欄位中,選擇 AWS service (服務)。

    2. 針對 Select a target (選取目標) 選取 SNS topic (SNS 主題),以便在事件發生時傳送電子郵件、簡訊或行動裝置推送通知。

    3. 針對 Topic (主題),請選擇現有的主題。您首先需要使用 Amazon SNS 主控台建立 Amazon SNS 主題。如需詳細資訊,請參閱 Amazon 簡單通知服務開發人員指南中的使用 Amazon SNS 進行 application-to-person (A2P) 簡

    4. (選用) 在 Additional settings (其他設定) 下,您可以選擇性地設定其他設定。如需詳細資訊,請參閱 Amazon EventBridge 使用者指南中的建立對事件做出反應的 Amazon EventBridge 規則 (步驟 16)。

    5. 選擇下一步

  6. (選用) 針對 Tags (標籤),您可以選擇性地將一或多個標籤指派給您的規則,然後選擇 Next (下一步)。

  7. 針對 Review and create (檢閱和建立) 執行下列動作:

    1. 檢閱規則的詳細資訊,然後視需求進行修改。

    2. 選擇建立規則

如需詳細資訊,請參閱 Amazon EventBridge 使用者指南中的以下主題:

如需如何建立 Lambda 函數和執行 Lambda 函數的 EventBridge 規則的教學課程,請參閱教學課程:使用AWS Lambda 開發人員指南 EventBridge中的使用記錄 Amazon EC2 執行個體的狀態