

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

# 教學課程：建立 EventBridge 規則，透過 CloudTrail 對 AWS API 呼叫做出反應
<a name="eb-log-api-call"></a>

您可以使用 Amazon EventBridge [規則](eb-rules.md)來回應由 記錄 AWS 的服務所發出的 API 呼叫 AWS CloudTrail。

在本教學課程中，您會在 EventBridge 主控台中建立 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 追蹤、Lambda 函數和規則。當 Amazon EC2 執行個體停止時，規則會調用 Lambda 函數。

**Topics**
+ [步驟 1：建立 AWS CloudTrail 追蹤](#eb-log-api-create-ct-trail)
+ [步驟 2：建立 AWS Lambda 函數](#eb-api-create-lambda-function)
+ [步驟 3：建立規則](#eb-api-create-rule)
+ [步驟 4：測試規則](#eb-api-test-rule)
+ [步驟 5：確認成功](#success)
+ [步驟 6：清除您的資源](#cleanup)

## 步驟 1：建立 AWS CloudTrail 追蹤
<a name="eb-log-api-create-ct-trail"></a>

如果您已設定追蹤，請跳到步驟 2。

**建立追蹤記錄**

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

1. 選擇 **Trails (追蹤)**、**Create trail (建立追蹤)**。

1. 在 **Trail name (追蹤名稱)** 中輸入追蹤的名稱。

1. 在**儲存位置**，**建立新的 S3 儲存貯體**。

1. 針對 **AWS KMS 別名**，請輸入 KMS 金鑰的別名。

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

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

1. 選擇**建立追蹤**。

## 步驟 2：建立 AWS Lambda 函數
<a name="eb-api-create-lambda-function"></a>

建立 Lambda 函數以記錄 API 呼叫事件。

**建立 Lambda 函數**

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

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

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

1. 輸入 Lambda 函數的名稱和描述。例如，將函數命名為 `LogEC2StopInstance`。

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

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

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

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

1. 選擇**部署**。

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

建立規則，在您停止 Amazon EC2 執行個體時，執行您在步驟 2 建立的 Lambda 函數。

**建立規則**

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. 針對**事件來源**，請從下拉式清單中選取 **EC2**。

   1. 針對**事件類型**，請從下拉式清單中選取 **AWS 透過 CloudTrail 進行的 API 呼叫**。

   1. 選擇**特定動作**並輸入 `StopInstances`。

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

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

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

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

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

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

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

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

您可以使用 Amazon EC2 主控台停用 Amazon EC2 執行個體，以測試您的規則。等待幾分鐘讓執行個體停止，然後在 CloudWatch 主控台上檢查您的 AWS Lambda 指標，以確認您的函數是否執行。

**停用執行個體以測試您的規則**

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

1. 啟動執行個體。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[啟動執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)。

1. 停止執行個體。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[停止和啟動執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)。

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. (選用) 完成後，請終止已停止的執行個體。如需詳細資訊，請參閱*《Amazon EC2 使用者指南》*中的[終止您的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

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

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

## 步驟 6：清除您的資源
<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. 選擇 **刪除**。

**若要刪除 CloudTrail 追蹤**

1. 開啟 CloudTrail 主控台的[追蹤](https://console.aws.amazon.com/cloudtrail/home#/trails)頁面。

1. 選取您建立的追蹤。

1. 選擇**刪除**。

1. 選擇**刪除**。