如何使用 EventBridge 來收到有關 EC2 執行個體排程事件的通知?

上次更新日期:2022 年 1 月 19 日

我想要在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體有已排程的事件時,收到 Amazon EventBridge 所傳來的通知。該如何進行?

簡短描述

您可以建立 EventBridge 規則,以針對 EC2 執行個體的已排程事件來觸發。然後,您可以針對符合事件模式的事件來設定 Amazon Simple Notification Service (Amazon SNS) 通知。您還可以透過 AWS Lambda 來設定進一步的處理。

解決方案

重要:在開始之前,請確定您有適用於通知的 SNS 主題。如果沒有,請建立新的 SNS 主題並加以訂閲

使用 EventBridge 主控台建立會針對事件來觸發的 EventBridge 規則

1.    為規則指派 Name (名稱),並選擇是否指派 Description (描述)。

2.    在 Define Pattern (定義模式) 中,選擇 Event pattern (事件模式)。

3.    在 Event matching pattern (事件比對模式) 中,選擇 Pre-defined by service (按服務預先定義的模式)。

4.    對於 Service provider (服務供應商),選擇 AWS

5.    在 Service Name (服務名稱) 中,選擇 Health (運作狀態)。

6.    在 Event Type (事件類型) 中,選擇 Specific Health events (特定運作狀態事件)。

7.    選擇 Specific service(s) (特定服務),然後選擇 EC2

8.    選擇 Specific event type category(s) (特定事件類型類別),然後選擇 scheduledChange

9.    (選擇性) 若要建立更特定的規則,請納入 Specific event type code(s) (特定事件類型代碼) 或 Specific resource(s) (特定資源)。在規則中新增上述其中一個選項,系統便會針對特定事件或執行個體來發送通知。

這些設定會建立以下事件模式:

注意:您也可以複製並貼上以下程式碼來作為規則,以建立您的事件模式。在選擇 Create Rule (建立規則) 後,於 Event Pattern preview (事件模式預覽) 區段中選擇 Edit (編輯)。插入以下程式碼,選擇 Save (儲存),然後繼續建立 SNS 目標。

{
  "source": [
    "aws.health"
  ],
  "detail-type": [
    "AWS Health Event"
  ],
  "detail": {
    "service": [
      "EC2"
    ],
    "eventTypeCategory": [
      "scheduledChange"
    ]
  }
}

10.    選取您的 SNS 目標:
選擇 Add Target (新增目標)。
在 Target (目標) 中,選擇 SNS topic (SNS 主題)。
Topic (主題) 中,選擇要用於通知的 SNS 主題。

以下範例是會轉發到目標的 EventBridge 事件:

{
  "version": "0",
  "id": "7fb65329-1628-4cf3-a740-95fg457h1402",
  "detail-type": "AWS Health Event",
  "source": "aws.health",
  "account": "123456789101",
  "time": "2016-06-05T06:27:57Z",
  "region": "us-east-1",
  "resources": ["i-12345678"],
  "detail": {
    "eventArn": "arn:aws:health:region::event/id",
    "service": "EC2",
    "eventTypeCode": "AWS_EC2_DEDICATED_HOST_NETWORK_MAINTENANCE_SCHEDULED",
    "eventTypeCategory": "scheduledChange",
    "startTime": "Sat, 05 Jun 2016 15:10:09 GMT",
    "eventDescription": [{
      "language": "en_US",
      "latestDescription": "A description of the event will be provided here"
    }],
    "affectedEntities": [{
      "entityValue": "i-12345678",
      "tags": {
        "stage": "prod",
        "app": "my-app"
      }
    }]
  }
}

如果您的使用案例需要向目標提供特定欄位,請在 Configure input (設定輸入) 底下連接輸入轉換器。或者,將 Lambda 函數連接為目標以執行指定的處理。