

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

# 教學課程：使用 EventBridge 記錄 Auto Scaling 群組的狀態
<a name="eb-log-as-group-state"></a>

您可以執行 [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 函數以在 Auto Scaling 群組啟動或終止指示事件是否成功的 Amazon EC2 執行個體時記錄[事件](eb-events.md)。

如需關於使用 Amazon EC2 Auto Scaling 事件的更多案例的資訊，請參閱《Amazon EC2 Auto Scaling 使用者指南》 **中的[使用 EventBridge 來處理 Auto Scaling 事件](https://docs.aws.amazon.com/autoscaling/latest/userguide/automating-ec2-auto-scaling-with-eventbridge.html)。

在本教學課程中，您會建立 Lambda 函數並在 EventBridge 主控台中建立[規則](eb-rules.md)，該規則會在 Amazon EC2 Auto Scaling 群組啟動或終止執行個體時調用該函數。

**Topics**
+ [先決條件](#eb-as-prereqs)
+ [步驟 1：建立 Lambda 函式](#eb-as-create-lambda-function)
+ [步驟 2：建立規則](#eb-as-create-rule)
+ [步驟 3：測試規則](#eb-as-test-rule)
+ [步驟 4：確認成功](#success)
+ [步驟 5：清除您的資源](#cleanup)

## 先決條件
<a name="eb-as-prereqs"></a>

教學課程需要使用以下項目：
+ Auto Scaling 群組。如需關於建立群組的詳細資訊，請參閱《Amazon EC2 Auto Scaling 使用者指南》中的[使用啟動組態建立 Auto Scaling 群組](https://docs.aws.amazon.com/autoscaling/latest/userguide/create-asg.html)。

## 步驟 1：建立 Lambda 函式
<a name="eb-as-create-lambda-function"></a>

建立 Lambda 函數以記錄 Auto Scaling 群組的擴展和縮小事件。

**若要建立 Lambda 函數**

1. 在 https：//[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) 開啟 AWS Lambda 主控台。

1. 選擇 **Create function (建立函數)**。

1. 選擇**從頭開始撰寫**。

1. 輸入 Lambda 函數的名稱。例如，將函數命名為 `LogAutoScalingEvent`。

1. 將其餘選項保留為預設值並選擇**建立函數**。

1. 在函數頁面的**程式碼**標籤上，按兩下 **index.js**。

1. 將現有的程式碼取代為以下程式碼。

   ```
   'use strict';
   
   exports.handler = (event, context, callback) => {
       console.log('LogAutoScalingEvent');
       console.log('Received event:', JSON.stringify(event, null, 2));
       callback(null, 'Finished');
   };
   ```

1. 選擇**部署**。

## 步驟 2：建立規則
<a name="eb-as-create-rule"></a>

建立規則來執行您在步驟 1 中建立的 Lambda 函數。當您的 Auto Scaling 群組啟動或停止執行個體時，規則便會執行。

**建立規則**

1. 前往 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) 開啟 Amazon EventBridge 主控台。

1. 在導覽窗格中，選擇**規則**。

1. 選擇**建立規則**。

1. 輸入規則的名稱和描述。例如，命名規則 `TestRule`

1. 針對**事件匯流排**，選擇要與此規則建立關聯的事件匯流排。如果您想要此規則匹配來自您的帳戶的事件，請選取**預設值**。當您帳戶中的 AWS 服務發出事件時，一律會前往您帳戶的預設事件匯流排。

1. 針對**規則類型**，選擇**具有事件模式的規則**。

1. 選擇**下一步**。

1. 在**事件來源**欄位中，選擇 **AWS 服務**。

1. 針對**事件模式**，請執行下列動作：

   1. 針對**事件來源**，請從下拉式清單中選取 **Auto Scaling**。

   1. 針對**事件類型**，請從下拉式清單中選取**執行個體啟動和終止**。

   1. 選擇**任何執行個體事件**和**任何群組名稱**。

1. 選擇**下一步**。

1. 在**目標類型**欄位中，選擇 **AWS 服務**。

1. 針對**選取目標**，請從下拉式清單中選擇 **Lambda 函數**。

1. 在**函數**中，選取您在**步驟 1：建立 Lambda 函數** 區段中建立的 Lambda 函數。在此範例中，選取 `LogAutoScalingEvent`。

1. 選擇**下一步**。

1. 選擇**下一步**。

1. 檢閱規則的詳細資訊，然後選擇**建立規則**。

## 步驟 3：測試規則
<a name="eb-as-test-rule"></a>

您可以手動擴展 Auto Scaling 群組以啟動執行個體，藉此測試您的規則。等待幾分鐘讓擴展事件發生，然後驗證您的 Lambda 函數是否被調用。

**使用 Auto Scaling 群組測試您的規則**

1. 若要增加 Auto Scaling 群組的大小，請執行下列動作：

   1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

   1. 在導覽窗格中，選擇 **Auto Scaling**、**Auto Scaling 群組**。

   1. 選取您的 Auto Scaling 群組的核取方塊。

   1. 在**詳細資訊**標籤上，選擇**編輯**。在**所需**中提高所需的容量 1。例如，如果目前值為 **2**，則輸入 **3**。所需容量必須小於或等於該群組的大小上限。如果您的**所需**的新數值大於**最大值**，則您必須更新**最大值**設定。完成後，請選擇**儲存**。

1. 若要檢視 Lambda 函數的輸出，請執行下列動作：

   1. 在 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

   1. 在導覽窗格中，選擇**日誌**。

   1. 為 Lambda 函數 (`/aws/lambda/function-name`) 選取日誌群組名稱。

   1. 選取日誌串流的名稱以檢視函數為您啟動的執行個體所提供的資料。

1. (選用) 完成後，您可以將所需的容量減少 1，如此一來，Auto Scaling 群組將恢復為之前的大小。

## 步驟 4：確認成功
<a name="success"></a>

如果您在 CloudWatch logs 中看到 Lambda 事件，表示您已成功完成本教學課程。如果事件不在 CloudWatch logs中，請驗證規則是否已成功建立，開始進行故障診斷，如果規則看起來正確，請驗證 Lambda 函數的程式碼是否正確無誤。

## 步驟 5：清除您的資源
<a name="cleanup"></a>

除非您想要保留為此教學課程建立的資源，否則您現在便可刪除。透過刪除不再使用 AWS 的資源，您可以避免 AWS 帳戶產生不必要的費用。

**刪除 EventBridge 規則**

1. 開啟 EventBridge 主控台的[規則頁面](https://console.aws.amazon.com/events/home#/rules)。

1. 選取您建立的規則。

1. 選擇**刪除**。

1. 選擇**刪除**。

**若要刪除 Lambda 函數**

1. 開啟 Lambda 主控台中的[函數頁面](https://console.aws.amazon.com/lambda/home#/functions)。

1. 選取您建立的函數。

1. 選擇 **動作**、**刪除**。

1. 選擇 **刪除**。