

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

# 教學課程：使用 EventBridge 記錄 Amazon S3 物件層級操作
<a name="eb-log-s3-data-events"></a>

您可以在您的 [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 儲存貯體記錄物件層級 API 操作。您必須使用 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 設定追蹤以接收這些事件，Amazon EventBridge 才能符合這些[事件](eb-events.md)。

在本教學課程中，您會建立 CloudTrail 追蹤，建立 [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 函數，然後在 EventBridge 主控台中建立[規則](eb-rules.md)，以調用該函數以回應 S3 資料事件。

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

## 步驟 1：設定您的 AWS CloudTrail 線索
<a name="eb-configure-trail"></a>

若要將 S3 儲存貯體的資料事件記錄到 AWS CloudTrail 和 EventBridge，您必須先建立追蹤。*追蹤*將擷取您帳戶中的 API 呼叫和相關事件，然後將日誌檔案傳送到您指定的 S3 儲存貯體。您可以更新現有的追蹤或建立新的追蹤。

如需詳細資訊，請參閱《AWS CloudTrail 使用者指南》**中的[資料事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-and-data-events-with-cloudtrail.html#logging-data-events)。

**建立追蹤記錄**

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. 針對**資料事件**，執行下列其中一項操作：
   + 若要記錄儲存貯體中所有 Amazon S3 物件的資料事件，請指定 S3 儲存貯體和空的前綴。當事件發生在該儲存貯體中的物件上時，追蹤即會處理並記錄此事件。
   + 若要記錄儲存貯體中特定 Amazon S3 物件的資料事件，請指定 S3 儲存貯體和物件字首。當事件發生在該儲存貯體的物件上，而此物件是以指定的前綴開頭，線索就會處理並記錄此事件。

1. 針對每個資源，選擇是否要記錄**讀取**事件、**寫入**事件或兩者。

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

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

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

建立 Lambda 函數以記錄 S3 儲存貯體的資料事件。

**建立 Lambda 函數**

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

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

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

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

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

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

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

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

1. 選擇**部署**。

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

建立規則來執行您在步驟 2 中建立的 Lambda 函數。執行此規則旨在回應 Amazon S3 資料事件。

**建立規則**

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. 在**事件來源下**，從下拉式清單中，選取 **Simple Storage Service (S3)**。

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

   1. 選擇**特定操作**，然後選擇 **PutObject**。

   1. 在預設情況下，規則符合區域中所有儲存貯體的資料事件。為了符合特定儲存貯體的資料事件，選擇**以名稱指定儲存貯體**，然後輸入一或多個儲存貯體。

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

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

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

1. 針對**函數**，選取您在步驟 1 建立的 `LogS3DataEvents` Lambda 函數。

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

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

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

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

若要測試規則，請將物件放入您的 S3 儲存貯體。您可以驗證您的 Lambda 函數是否被叫用。

**檢視 Lambda 函數的日誌**

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

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

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

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

您也可以在為您的追蹤所指定的 S3 儲存貯體中檢查 CloudTrail logs。如需詳細資訊，請參閱《AWS CloudTrail 使用者指南》**中的[取得和檢視 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/get-and-view-cloudtrail-log-files.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. 選擇**刪除**。