

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

# 使用 Amazon SQS、Amazon SNS 和 Lambda
<a name="how-to-enable-disable-notification-intro"></a>

啟用通知是儲存貯體層級的操作。您可以將通知組態資訊存放在與儲存貯體關聯的*通知*子資源中。建立或變更儲存貯體通知組態後，通常要等待 5 分鐘變更才會生效。首次啟用通知時，則會發生 `s3:TestEvent`。您可以使用下列任一方法來管理通知組態：
+ **使用 Amazon S3 主控台** – 您可以使用主控台 UI 在儲存貯體上設定通知組態，無需編寫任何程式碼。如需詳細資訊，請參閱[使用 Amazon S3 主控台啟用和設定事件通知](enable-event-notifications.md)。
+ **以程式設計方式使用 AWS SDKs** — 在內部，主控台和 SDKs都會呼叫 Amazon S3 REST API 來管理與儲存貯體相關聯的*通知*子資源。如需使用 AWS SDK 的通知組態範例，請參閱 [演練：設定儲存貯體的通知 (SNS 主題或 SQS 佇列)](ways-to-add-notification-config-to-bucket.md)。
**注意**  
您還可以直接透過程式碼進行 Amazon S3 REST API 呼叫。但這麼做會很麻煩，因為這需要編寫程式碼來對您的請求進行身分驗證。

無論您使用何種方法，Amazon S3 都會將通知組態以 XML 的形式存放在與儲存貯體相關聯的*通知*子資源中。如需儲存貯體子資源的相關資訊，請參閱 [一般用途儲存貯體組態選項](UsingBucket.md#bucket-config-options-intro)。

**注意**  
如果您因為已刪除目的地而有多個失敗的事件通知，當您嘗試加以刪除時，您可能會收到**無法驗證下列目的地組態**。您可以在 S3 主控台中同時刪除所有失敗的通知來解決此問題。

**Topics**
+ [授予許可以將事件通知訊息發佈至目標](grant-destinations-permissions-to-s3.md)
+ [使用 Amazon S3 主控台啟用和設定事件通知](enable-event-notifications.md)
+ [以程式設計方式設定事件通知](#event-notification-configuration)
+ [演練：設定儲存貯體的通知 (SNS 主題或 SQS 佇列)](ways-to-add-notification-config-to-bucket.md)
+ [使用物件金鑰名稱篩選來設定事件通知](notification-how-to-filtering.md)
+ [事件訊息結構](notification-content-structure.md)

# 授予許可以將事件通知訊息發佈至目標
<a name="grant-destinations-permissions-to-s3"></a>

您必須將必要的許可授予 Amazon S3 主體，以呼叫相關的 API，將訊息發佈至 SNS 主題、SQS 佇列或 Lambda 函數。這樣 Amazon S3 便可將事件通知訊息發佈至目的地。

若要進行疑難排解，以將事件通知發佈到目的地，請參閱[將 Amazon S3 事件通知發佈到 Amazon Simple Notification Service 主題的疑難排解](https://repost.aws/knowledge-center/sns-not-receiving-s3-event-notifications)。

**Topics**
+ [授予叫用 AWS Lambda 函數的許可](#grant-lambda-invoke-permission-to-s3)
+ [授予許可以將訊息發佈到 SNS 主題或 SQS 佇列](#grant-sns-sqs-permission-for-s3)

## 授予叫用 AWS Lambda 函數的許可
<a name="grant-lambda-invoke-permission-to-s3"></a>

Amazon S3 透過 AWS Lambda 叫用 Lambda 函數並提供事件訊息做為引數，將事件訊息發佈至 。

當您使用 Amazon S3 主控台，在 Amazon S3 儲存貯體上設定 Lambda 函數的事件通知時，該主控台將設定 Lambda 函數的必要許可。這樣 Amazon S3 便可從儲存貯體叫用函數。如需詳細資訊，請參閱[使用 Amazon S3 主控台啟用和設定事件通知](enable-event-notifications.md)。

您也可以從 授予 Amazon S3 許可 AWS Lambda ，以叫用 Lambda 函數。如需詳細資訊，請參閱《 *AWS Lambda 開發人員指南*》中的[教學課程： AWS Lambda 搭配 Amazon S3 使用](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) 。

## 授予許可以將訊息發佈到 SNS 主題或 SQS 佇列
<a name="grant-sns-sqs-permission-for-s3"></a>

若要授予 Amazon S3 發佈訊息至 SNS 主題或 SQS 佇列的許可，請將 AWS Identity and Access Management (IAM) 政策連接至目的地 SNS 主題或 SQS 佇列。

如需如何將政策連接到 SNS 主題或 SQS 佇列的範例，請參閱 [演練：設定儲存貯體的通知 (SNS 主題或 SQS 佇列)](ways-to-add-notification-config-to-bucket.md)。如需許可的詳細資訊，請參閱下列主題：
+ *《Amazon Simple Notification Service 開發人員指南》*中的 [Amazon SNS 存取控制的範例案例](https://docs.aws.amazon.com/sns/latest/dg/AccessPolicyLanguage_UseCases_Sns.html)
+ *《Amazon Simple Queue Service 開發人員指南》*中的 [Amazon SQS 中的 Identity and Access Management](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html)

### 目的地 SNS 主題的 IAM 政策
<a name="sns-topic-policy"></a>

以下是您連接至目的地 SNS 主題的 AWS Identity and Access Management (IAM) 政策範例。如需有關如何使用此政策為事件通知設定目的地 Amazon SNS 主題的指示，請參閱 [演練：設定儲存貯體的通知 (SNS 主題或 SQS 佇列)](ways-to-add-notification-config-to-bucket.md)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "arn:aws:sns:us-east-1:111122223333:example-sns-topic",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

### 目的地 SQS 佇列的 IAM 政策
<a name="sqs-queue-policy"></a>

以下是您附加至目標 SQS 佇列之 IAM 政策的範例。如需有關如何使用此政策為事件通知設定目的地 Amazon SQS 佇列的指示，請參閱 [演練：設定儲存貯體的通知 (SNS 主題或 SQS 佇列)](ways-to-add-notification-config-to-bucket.md)。

若要使用此政策，您必須更新 Amazon SQS 佇列 ARN、儲存貯體名稱和儲存貯體擁有者的 AWS 帳戶 ID。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SQS:SendMessage"
            ],
            "Resource": "arn:aws:sqs:us-east-1:111122223333:queue-name",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

針對 Amazon SNS 和 Amazon SQS IAM 政策，您可以在政策中指定 `StringLike` 條件，不是 `ArnLike` 條件。

使用 `ArnLike` 時，分割區、服務、帳戶 ID、資源類型，和 ARN 的部分資源 ID 部分必須和請求的背景資訊內容中的 ARN 完全相符。只有區域和資源路徑允許部分相符。

 當使用 `StringLike` 而不是 `ArnLike` 時，比對是否相符時會忽略 ARN 結構，並允許部分相符，無論哪一部分被萬用字元取代。如需詳細資訊，請參閱 *IAM 使用者指南*中的 [IAM JSON 政策元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。

```
"Condition": {         
  "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket" }
  }
```

### AWS KMS 金鑰政策
<a name="key-policy-sns-sqs"></a>

如果 SQS 佇列或 SNS 主題使用 AWS Key Management Service (AWS KMS) 客戶受管金鑰加密，您必須授予 Amazon S3 服務主體使用加密主題或佇列的許可。若要將許可授予 Amazon S3 服務委託人，請將下列陳述式新增至客戶受管金鑰的金鑰政策。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

如需 AWS KMS 金鑰政策的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[在 中使用金鑰政策 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

如需搭配 AWS KMS for Amazon SQS 和 Amazon SNS 使用伺服器端加密的詳細資訊，請參閱下列內容：
+ *Amazon Simple Notification Service 開發人員指南》*中的[金鑰管理](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html)。
+ *Amazon Simple Queue Service 開發人員指南》*中的[金鑰管理](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)。
+ *AWS 運算部落格*中的[透過 AWS KMS加密發佈到 Amazon SNS 的訊息](https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/)。

# 使用 Amazon S3 主控台啟用和設定事件通知
<a name="enable-event-notifications"></a>

您可以啟用特定的 Amazon S3 一般用途儲存貯體事件，於發生事件時傳送通知訊息給目的地。本節說明如何使用 Amazon S3 主控台來啟用事件通知。如需如何搭配 AWS SDKs 和 Amazon S3 REST APIs 使用事件通知的詳細資訊，請參閱 [以程式設計方式設定事件通知](how-to-enable-disable-notification-intro.md#event-notification-configuration)。

**先決條件**：您必須先設定其中一個目的地類型，然後設定許可，才能啟用儲存貯體的事件通知。如需詳細資訊，請參閱[支援的事件目的地](notification-how-to-event-types-and-destinations.md#supported-notification-destinations)及[授予許可以將事件通知訊息發佈至目標](grant-destinations-permissions-to-s3.md)。

**注意**  
Amazon Simple Queue Service FIFO (先進先出) 佇列不支援做為 Amazon S3 事件通知目的地。若要傳送 Amazon S3 事件通知給 Amazon SQS FIFO 佇列，您可以使用 Amazon EventBridge。如需詳細資訊，請參閱[啟用 Amazon EventBridge](enable-event-notifications-eventbridge.md)。

**Topics**
+ [使用 Amazon S3 主控台啟用 Amazon SNS、Amazon SQS 或 Lambda 通知](#enable-event-notifications-sns-sqs-lam)

## 使用 Amazon S3 主控台啟用 Amazon SNS、Amazon SQS 或 Lambda 通知
<a name="enable-event-notifications-sns-sqs-lam"></a>

**啟用及設定 S3 儲存貯體的事件通知**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**一般用途儲存貯體**。

1. 在儲存貯體名稱清單中，選擇要啟用事件的儲存貯體名稱。

1. 選擇 **Properties** (屬性)。

1. 瀏覽至**事件通知**區段，然後選擇**建立事件通知**。

1. 在**一般組態**區段中，指定事件通知的描述性事件名稱。或者，您也可以指定首碼和字尾，將通知限制在具有以指定字元結尾的金鑰的物件。

   1. 輸入**事件名稱**的說明。

      如果您未輸入名稱，則會產生全域唯一識別碼 (GUID) 並用於名稱。

   1. (選用) 若要依字首篩選事件通知，請輸入 **Prefix** (字首)。

      例如，您可以設定字首篩選條件，只在檔案新增至特定資料夾 (例如，`images/`) 時才收到通知。

   1. (選用) 若要依尾碼篩選事件通知，請輸入 **Prefix** (尾碼)。

      如需詳細資訊，請參閱[使用物件金鑰名稱篩選來設定事件通知](notification-how-to-filtering.md)。

1. 在 **Event types** (事件類型) 區段中，選取您要接收通知的一或多個事件類型。

   如需不同事件類型的清單，請參閱 [SQS、SNS 和 Lambda 支援的事件類型](notification-how-to-event-types-and-destinations.md#supported-notification-event-types)。

1. 在**目的地**區段中，選擇事件通知目的地。
**注意**  
在發佈事件通知之前，您必須授予 Amazon S3 主體必要的許可來呼叫相關 API。這樣可以將通知發佈至 Lambda 函數、SNS 主題或 SQS 佇列。

   1. 選取目的地類型： **Lambda 函式**、**SNS 主題**或 **SQS 佇列**。

   1. 選擇目的地類型後，請從清單中選擇功能、主題或佇列。

   1. 或者，如果您想要指定 Amazon Resource Name (ARN)，**請選取輸入 ARN** 並輸入 ARN。

   如需詳細資訊，請參閱[支援的事件目的地](notification-how-to-event-types-and-destinations.md#supported-notification-destinations)。

1. 選擇 **Save changes** (儲存變更)，Amazon S3 會將測試訊息傳送到事件通知目的地。

## 以程式設計方式設定事件通知
<a name="event-notification-configuration"></a>

根據預設，所有事件類型都不會啟用通知。因此，*通知*子資源一開始存放的是空白組態。

```
<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
</NotificationConfiguration>
```

若要啟用特定類型事件的通知，請以合適的組態取代 XML，識別 Amazon S3 所要發佈的事件類型，以及所需的事件發佈目標。為每個目標新增對應的 XML 組態。

**將事件訊息發佈至 SQS 佇列**  
若要將 SQS 佇列設定為一或多種事件類型的通知目標，請新增 `QueueConfiguration`。

```
<NotificationConfiguration>
  <QueueConfiguration>
    <Id>optional-id-string</Id>
    <Queue>sqs-queue-arn</Queue>
    <Event>event-type</Event>
    <Event>event-type</Event>
     ...
  </QueueConfiguration>
   ...
</NotificationConfiguration>
```

**將事件訊息發佈至 SNS 主題**  
若要將 SNS 主題設定為特定事件類型的通知目標，請新增 `TopicConfiguration`。

```
<NotificationConfiguration>
  <TopicConfiguration>
     <Id>optional-id-string</Id>
     <Topic>sns-topic-arn</Topic>
     <Event>event-type</Event>
     <Event>event-type</Event>
      ...
  </TopicConfiguration>
   ...
</NotificationConfiguration>
```

**叫用 AWS Lambda 函數，並提供事件訊息做為 引數**  
若要將 Lambda 函數設定為特定事件類型的通知目的地，請新增 `CloudFunctionConfiguration`。

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>   
     <Id>optional-id-string</Id>   
     <CloudFunction>cloud-function-arn</CloudFunction>        
     <Event>event-type</Event>      
     <Event>event-type</Event>      
      ...  
  </CloudFunctionConfiguration>
   ...
</NotificationConfiguration>
```

**移除儲存貯體上設定的所有通知**  
若要移除儲存貯體上設定的所有通知，請在*通知*子資源中儲存空白的 `<NotificationConfiguration/>` 元素。

當 Amazon S3 偵測到特定類型的事件，即會發佈附事件資訊的訊息。如需詳細資訊，請參閱[事件訊息結構](notification-content-structure.md)。

如需有關設定事件通知的資訊，請參閱下列主題：
+ [演練：設定儲存貯體的通知 (SNS 主題或 SQS 佇列)](ways-to-add-notification-config-to-bucket.md).
+ [使用物件金鑰名稱篩選來設定事件通知](notification-how-to-filtering.md)

# 演練：設定儲存貯體的通知 (SNS 主題或 SQS 佇列)
<a name="ways-to-add-notification-config-to-bucket"></a>

您可以使用 Amazon Simple Notification Service (Amazon SNS) 或 Amazon Simple Queue Service (Amazon SQS) 接收 Amazon S3 通知。在此演練中，您使用 Amazon SNS 主題和 Amazon SQS 佇列將通知設定新增至儲存貯體。

**注意**  
Amazon Simple Queue Service FIFO (先進先出) 佇列不支援做為 Amazon S3 事件通知目的地。若要傳送 Amazon S3 事件通知給 Amazon SQS FIFO 佇列，您可以使用 Amazon EventBridge。如需詳細資訊，請參閱[啟用 Amazon EventBridge](enable-event-notifications-eventbridge.md)。

**Topics**
+ [演練摘要](#notification-walkthrough-summary)
+ [步驟 1：建立 Amazon SQS 佇列](#step1-create-sqs-queue-for-notification)
+ [步驟 2：建立 Amazon SNS 主題](#step1-create-sns-topic-for-notification)
+ [步驟 3：將通知組態新增至儲存貯體](#step2-enable-notification)
+ [步驟 4：測試設定](#notification-walkthrough-1-test)

## 演練摘要
<a name="notification-walkthrough-summary"></a>

此演練可以協助您執行以下操作：
+ 將 `s3:ObjectCreated:*` 類型的事件發佈至 Amazon SQS 佇列。
+ 將 `s3:ReducedRedundancyLostObject` 類型的事件發佈至 Amazon SNS 主題。

如需通知組態的資訊，請參閱「[使用 Amazon SQS、Amazon SNS 和 Lambda](how-to-enable-disable-notification-intro.md)」。

您可以使用主控台執行所有這些步驟，不用撰寫任何程式碼。此外，還提供使用適用於 Java 和 .NET AWS SDKs 的程式碼範例，以協助您以程式設計方式新增通知組態。

此程序包含以下步驟：

1. 建立 Amazon SQS 佇列。

   使用 Amazon SQS 主控台建立 SQS 佇列。您可以利用程式設計的方式，存取 Amazon S3 傳送到佇列的任何訊息。但在此演練中，您會在主控台中驗證通知訊息。

   您要將存取政策連接到佇列，以授予 Amazon S3 張貼訊息的許可。

1. 建立 Amazon SNS 主題。

   使用 Amazon SNS 主控台，建立 SNS 主題並訂閱主題。如此一來，張貼其上的任何事件都會傳遞給您。您會將電子郵件指定為通訊協定。建立主題後，Amazon SNS 會傳送電子郵件。您可以使用電子郵件中的連結，確認主題訂閱。

   您要將存取政策連接到主題，以授予 Amazon S3 張貼訊息的許可。

1. 將通知組態新增至儲存貯體。

## 步驟 1：建立 Amazon SQS 佇列
<a name="step1-create-sqs-queue-for-notification"></a>

按照步驟建立和訂閱 Amazon Simple Queue Service (Amazon SQS) 佇列。

1. 使用 Amazon SQS 主控台建立佇列。如需指示，請參閱《*Amazon Simple Queue Service 開發人員指南*》中的 [Amazon SQS 入門](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html)。

1. 將連接至佇列的存取政策以下列政策取代。

   1. 在 Amazon SQS 主控台的 **Queues** (佇列) 清單中，選擇佇列名稱。

   1. 在 **Access policy** (存取政策) 標籤中選擇 **Edit** (編輯)。

   1. 取代連接至佇列的存取政策。在其中，提供 Amazon SQS ARN、來源儲存貯體名稱以及儲存貯體擁有者帳戶 ID。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Id": "example-ID",
          "Statement": [
              {
                  "Sid": "example-statement-ID",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "s3.amazonaws.com"
                  },
                  "Action": [
                      "SQS:SendMessage"
                  ],
                  "Resource": "arn:aws:sqs:us-west-2:111122223333:s3-notification-queue",
                  "Condition": {
                      "ArnLike": {
                          "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
                      },
                      "StringEquals": {
                          "aws:SourceAccount": "bucket-owner-123456789012"
                      }
                  }
              }
          ]
      }
      ```

------

   1. 選擇**儲存**。

1. （選用） 如果 Amazon SQS 佇列或 Amazon SNS 主題已啟用伺服器端加密，請使用 AWS Key Management Service (AWS KMS)，將下列政策新增至相關聯的對稱加密客戶受管金鑰。

   您必須將政策新增至客戶受管金鑰，因為您無法修改適用於 Amazon SQS 或 Amazon SNS 的 AWS 受管金鑰。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "example-ID",
       "Statement": [
           {
               "Sid": "example-statement-ID",
               "Effect": "Allow",
               "Principal": {
                   "Service": "s3.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   如需搭配 Amazon SQS 和 Amazon SNS 使用 SSE 的詳細資訊 AWS KMS，請參閱下列內容：
   + *Amazon Simple Notification Service 開發人員指南》*中的[金鑰管理](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html)。
   + *Amazon Simple Queue Service 開發人員指南》*中的[金鑰管理](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)。

1. 記下佇列 ARN。

   您建立的 SQS 佇列是 AWS 帳戶中的另一個資源。它具有獨特的 Amazon Resource Name (ARN)。下一個步驟需要用到此 ARN。ARN 的格式如下：

   ```
   arn:aws:sqs:aws-region:account-id:queue-name
   ```

## 步驟 2：建立 Amazon SNS 主題
<a name="step1-create-sns-topic-for-notification"></a>

按照步驟建立並訂閱 Amazon SNS 主題。

1. 使用 Amazon SNS 主控台建立一個主題。如需說明，請參閱《*Amazon Simple Notification Service 開發人員指南*》中的[建立 Amazon SNS 主題](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。

1. 訂閱此主題。在此練習中，請使用電子郵件作為通訊協定。如需詳細資訊，請參閱《*Amazon Simple Notification Service 開發人員指南*》中的[訂閱 Amazon SNS 主題](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)。

   您會收到要求確認訂閱主題的電子郵件。確認訂閱。

1. 下列列政策取代連接至主題的存取政策。在其中，提供您的 SNS 主題 ARN、儲存貯體名稱以及儲存貯體擁有者帳戶 ID。

1. 請記下主題 ARN。

   您建立的 SNS 主題是 中的另一個資源 AWS 帳戶，且具有唯一的 ARN。下一個步驟需要用到此 ARN。ARN 的格式如下：

   ```
   arn:aws:sns:aws-region:account-id:topic-name
   ```

## 步驟 3：將通知組態新增至儲存貯體
<a name="step2-enable-notification"></a>

您可以使用 Amazon S3 主控台或以程式設計方式使用 AWS SDKs來啟用儲存貯體通知。選擇任一選項在儲存貯體上設定通知。本節提供使用適用於 Java 和 .NET 的 AWS SDK 程式碼範例。

### (選項 A)：使用主控台啟用儲存貯體上的通知
<a name="step2-enable-notification-using-console"></a>

使用 Amazon S3 主控台，新增請求 Amazon S3 的通知組態新增以執行下列操作：
+ 將**所有物件建立事件**類型的事件發佈至您的 Amazon SQS 佇列。
+ 將 **RRS 中物件遺失** 類型的事件發佈至您的 Amazon SNS 主題。

儲存通知組態後，Amazon S3 會張貼測試訊息，您會透過電子郵件收到此訊息。

如需說明，請參閱[使用 Amazon S3 主控台啟用和設定事件通知](enable-event-notifications.md)。

### 選項 B：使用 AWS SDKs 啟用儲存貯體的通知
<a name="step2-enable-notification-using-awssdk-dotnet"></a>

------
#### [ .NET ]

下列 C\$1 程式碼範例提供完整的程式碼清單，將通知組態新增至儲存貯體。您必須更新程式碼，並提供您的儲存貯體名稱和 SNS 主題 ARN。如需有關設定和執行程式碼範例的資訊，請參閱《[適用於 .NET 的 AWS SDK 開發人員指南》中的適用於 .NET 的 SDK 入門](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html)。 *AWS *

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class EnableNotificationsTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string snsTopic = "*** SNS topic ARN ***";
        private const string sqsQueue = "*** SQS topic ARN ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            EnableNotificationAsync().Wait();
        }

        static async Task EnableNotificationAsync()
        {
            try
            {
               PutBucketNotificationRequest request = new PutBucketNotificationRequest
                {
                    BucketName = bucketName
                };

                TopicConfiguration c = new TopicConfiguration
                {
                    Events = new List<EventType> { EventType.ObjectCreatedCopy },
                    Topic = snsTopic
                };
                request.TopicConfigurations = new List<TopicConfiguration>();
                request.TopicConfigurations.Add(c);
                request.QueueConfigurations = new List<QueueConfiguration>();
                request.QueueConfigurations.Add(new QueueConfiguration()
                {
                    Events = new List<EventType> { EventType.ObjectCreatedPut },
                    Queue = sqsQueue
                });
                
                PutBucketNotificationResponse response = await client.PutBucketNotificationAsync(request);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' ", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown error encountered on server. Message:'{0}' ", e.Message);
            }
        }
    }
}
```

------
#### [ Java ]

如需如何使用適用於 Java 的 AWS SDK 設定儲存貯體通知的範例，請參閱《Amazon [ S3 API 參考》中的處理 S3 事件通知](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ProcessS3EventNotification_section.html)。 *Amazon S3 *

------

## 步驟 4：測試設定
<a name="notification-walkthrough-1-test"></a>

現在，只要將物件上傳至儲存貯體，即可測試設定，並在 Amazon SQS 主控台中驗證事件通知。如需指示，請參閱 *Amazon Simple Queue Service 開發人員指南「入門」一節*中的[接收訊息](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.htmlReceiveMessage.html)。

# 使用物件金鑰名稱篩選來設定事件通知
<a name="notification-how-to-filtering"></a>

設定 Amazon S3 事件通知時，您必須指定哪些支援的 Amazon S3 事件類型會導致 Amazon S3 傳送通知。如果您未指定的事件類型在 S3 儲存貯體中發生，則 Amazon S3 不會傳送通知。

您可以設定按物件金鑰名稱的字首和尾碼篩選通知。例如，您可以設定組態，只在將副檔名為「`.jpg`」的映像檔案新增至儲存貯體時才傳送通知。或者，您可以有一個組態，當具有字首「`images/`」的物件新增至儲存貯體時，將通知傳送到 Amazon SNS 主題，同時讓相同儲存貯體中具有「`logs/`」字首的物件通知傳送到 AWS Lambda 函數。

**注意**  
萬用字元 ("\$1") 不能在篩選條件中用作前綴或後綴。如果您的字首或字尾包含空格，則必須將其取代為 "\$1" 字元。如果您在字首或字尾的值中使用任何其他特殊字元，則必須以 [URL 編碼 (百分比編碼) 格式](https://en.wikipedia.org/wiki/Percent-encoding)將其輸入。如需在事件通知的字首或字尾中使用時，必須轉換為 URL 編碼格式之特殊字元的完整清單，請參閱 [安全字元](object-keys.md#object-key-guidelines-safe-characters)。

您可以設定通知組態，在 Amazon S3 主控台使用物件金鑰名稱篩選。您可以直接透過 AWS SDKs 或 REST APIs 使用 Amazon S3 APIs來執行此操作。如需使用主控台 UI 在儲存貯體上設定通知組態的相關資訊，請參閱「[使用 Amazon S3 主控台啟用和設定事件通知](enable-event-notifications.md)」。

Amazon S3 會將通知組態儲存為 XML，放在與儲存貯體相關聯的*通知*子資源中，如 [使用 Amazon SQS、Amazon SNS 和 Lambda](how-to-enable-disable-notification-intro.md) 所述。您必須使用 `Filter` XML 結構定義規則，依物件金鑰名稱的字首或尾碼篩選通知。如需 `Filter` XML 結構的詳細資訊，請參閱 *Amazon Simple Storage Service API 參考*中的 [PUT 儲存貯體通知](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html)。

使用 `Filter` 的通知組態無法定義重疊字首、重疊尾碼或字首和尾碼重疊的篩選規則。下列小節提供使用物件金鑰名稱篩選的有效通知組態範例。它們也包含因為字首和尾碼重疊而無效的通知組態範例。

**Topics**
+ [以物件金鑰名稱篩選的有效通知組態範例](#notification-how-to-filtering-example-valid)
+ [無效字首和尾碼重疊的通知組態範例](#notification-how-to-filtering-examples-invalid)

## 以物件金鑰名稱篩選的有效通知組態範例
<a name="notification-how-to-filtering-example-valid"></a>

下列通知組態包含的佇列組態，可識別 Amazon SQS 佇列，讓 Amazon S3 將事件發佈成 `s3:ObjectCreated:Put` 類型。只要字首為 `images/` 和尾碼為 `jpg` 的物件 PUT 到儲存貯體，就會發佈事件。

```
<NotificationConfiguration>
  <QueueConfiguration>
      <Id>1</Id>
      <Filter>
          <S3Key>
              <FilterRule>
                  <Name>prefix</Name>
                  <Value>images/</Value>
              </FilterRule>
              <FilterRule>
                  <Name>suffix</Name>
                  <Value>jpg</Value>
              </FilterRule>
          </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:s3notificationqueue</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

下列通知組態有多個非重疊字首。組態的定義是：`images/` 資料夾中的 PUT 請求通知排入佇列 A，而 `logs/` 資料夾中的 PUT 請求通知排入佇列 B。

```
<NotificationConfiguration>
  <QueueConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-A</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
  <QueueConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>logs/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-B</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

下列通知組態有多個非重疊尾碼。組態的定義是：所有近期新增至儲存貯體的 `.jpg` 映像都由 Lambda cloud-function-A 處理，而所有近期新增的 `.png` 影像則由 cloud-function-B 處理。`.png` 和 `.jpg` 字尾即使最後一個字母相同也不重疊。如果指定的字串可以這兩個尾碼結束，則兩個尾碼視為重疊。字串的結尾不能是 `.png` 和 `.jpg`，所以範例組態中的字尾不是重疊的字尾。

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

使用 `Filter` 的通知組態無法定義相同事件類型的重疊字首篩選規則。如果重疊字首搭配的尾碼不重疊，則只能這麼做。下列範例組態示範如何將以常見字首但不重疊尾碼建立的物件，傳送至不同的目標。

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

## 無效字首和尾碼重疊的通知組態範例
<a name="notification-how-to-filtering-examples-invalid"></a>

在大多數情況下，使用 `Filter` 的通知組態無法定義相同事件類型的重疊字首、重疊尾碼或字首和尾碼重疊組合的篩選規則。只要字首不重疊就可以有重疊的前綴。如需範例，請參閱 [使用物件金鑰名稱篩選來設定事件通知](#notification-how-to-filtering)。

不同的事件類型可以使用重疊的物件金鑰名稱篩選。例如，您可以建立通知組態，在 `image/` 事件類型使用字首 `ObjectCreated:Put`，在 `image/` 事件類型使用字首 `ObjectRemoved:*`。

當您使用 Amazon S3 主控台或 API 時，如果嘗試儲存的通知組態其相同事件類型具無效的重疊名稱篩選條件，就會發生錯誤。本節示範因為重疊名稱篩而無效的通知組態範例。

現有的全部通知組態，都假設分別擁有與任何其他字首和尾碼符合的預設字首和尾碼。下列通知組態因有重疊的字首而無效。明確地說，根字首會與任何其他字首重疊。在本範例中，如果使用尾碼而不使用字首，也是同樣的情況。根尾碼會與任何其他尾碼重疊。

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-two</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>             
</NotificationConfiguration>
```

下列通知組態因有重疊的字尾而無效。如果指定的字串可以這兩個尾碼結束，則兩個尾碼視為重疊。字串的結尾可以使用 `jpg` 和 `pg`。所以，字尾會重疊。字首也是一樣。如果指定的字串可以這兩個字首開始，則兩個字首視為重疊。

```
 <NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>pg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration
```

下列通知組態因有重疊的字首和字尾而無效。

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration>
```

# 事件訊息結構
<a name="notification-content-structure"></a>

Amazon S3 傳送以發佈事件的通知訊息為 JSON 格式。

如需設定事件通知的一般概觀和指示，請參閱 [Amazon S3 事件通知](EventNotifications.md)。

此範例顯示事件通知 JSON 結構的 *2.1 版*。Amazon S3 使用該事件結構的*版本 2.1*、*2.2* 和 *2.3*。Amazon S3 會將版本 2.2 用於跨區域複寫事件通知。它將版本 2.3 用於 S3 生命週期、S3 Intelligent-Tiering、物件 ACL、物件標記和物件還原刪除事件。這些版本包含特定於這些操作的額外資訊。版本 2.2 及 2.3 在其他方面與版本 2.1 相容，而 Amazon S3 目前可用於全部其他事件通知類型。

```
{  
   "Records":[  
      {  
         "eventVersion":"2.1",
         "eventSource":"aws:s3",
         "awsRegion":"us-west-2",
         "eventTime":"The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z) when Amazon S3 finished processing the request",
         "eventName":"The event type",
         "userIdentity":{  
            "principalId":"The unique ID of the IAM resource that caused the event"
         },
         "requestParameters":{  
            "sourceIPAddress":"The IP address where the request came from"
         },
         "responseElements":{  
            "x-amz-request-id":"The Amazon S3 generated request ID",
            "x-amz-id-2":"The Amazon S3 host that processed the request"
         },
         "s3":{  
            "s3SchemaVersion":"1.0",
            "configurationId":"The ID found in the bucket notification configuration",
            "bucket":{  
               "name":"The name of the bucket, for example, amzn-s3-demo-bucket",
               "ownerIdentity":{  
                  "principalId":"The Amazon retail customer ID of the bucket owner"
               },
               "arn":"The bucket Amazon Resource Name (ARN)"
            },
            "object":{  
               "key":"The object key name",
               "size":"The object size in bytes (as a number)",
               "eTag":"The object entity tag (ETag)",
               "versionId":"The object version if the bucket is versioning-enabled; null or not present if the bucket isn't versioning-enabled",
               "sequencer": "A string representation of a hexadecimal value used to determine event sequence; only used with PUT and DELETE requests"
            }
         },
         "glacierEventData": {
            "restoreEventData": {
               "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z), when the temporary copy of the restored object expires",
               "lifecycleRestoreStorageClass": "The source storage class for restored objects"
            }
         }
      }
   ]
}
```

請注意，以下是事件訊息結構：
+ `eventVersion` 金鑰值包含以 `major`.`minor` 形式的主要和次要版本。

  如果 Amazon S3 對不向下相容的事件結構進行變更，主要版本就會增加。這包含已經存在的 JSON 欄位，或變更欄位內容的呈現方式 (例如，日期格式)。

  如果 Amazon S3 將新欄位新增至事件結構，次要版本就會增加。如果針對部分或所有現有事件提供新資訊，則可能會發生這種情況。如果只有新引進的事件類型才提供新資訊，也可能會發生這種情況。要維持與次要版本的新事件結構相容，建議您的應用程式略過新欄位。

  如果引進新的事件類型，但卻未修改事件結構，則事件版本不會變更。

  為確保您的應用程式可以正確剖析事件結構，我們建議您對主要版本編號進行「等於」比較。為確保您的應用程式預期的欄位存在，我們建議您對次要版本編號進行「大於或等於」比較。
+ 所以 `eventName` 索引鍵值會參考[事件通知類型](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html)的清單，但不會包含 `s3:` 字首。
+ `userIdentity` 索引鍵值參考造成事件的 AWS Identity and Access Management (IAM) 資源 （使用者、角色、群組等） 的唯一 ID。對於每個 IAM 識別碼字首 (例如 AIDA、AROA、AGPA) 的定義，以及關於如何取得唯一識別碼的資訊，請參閱《IAM 使用者指南》**中的[唯一識別碼](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html##identifiers-unique-ids)。
+ 如果您想要追蹤請求，則`responseElements`金鑰值非常有用 AWS 支援。`x-amz-request-id` 和 `x-amz-id-2` 都能協助 Amazon S3 追蹤個別請求。這些值與 Amazon S3 為回應起始事件之請求而傳回的值相同。因此，您可以使用這些值來比對事件與請求。
+ `s3` 索引鍵值提供與事件有關之儲存貯體和物件的相關資訊。此物件金鑰名稱值是以 URL 編碼而成。例如，`red flower.jpg` 會變成 `red+flower.jpg`。(Amazon S3 傳回 "`application/x-www-form-urlencoded`" 做為回應中的內容類型。)

  `ownerIdentity` 索引鍵值對應至儲存貯體擁有者的 Amazon Retail (Amazon.com) 客戶 ID。此 ID 值不再使用，且只會為了回溯相容性而進行維護。
+ `sequencer` 索引鍵值提供判斷事件順序的方式。事件通知不保證按事件發生的相同順序抵達。不過，來自建立物件 (`PUT` 請求) 和刪除物件之事件的通知包含 `sequencer`。您可以使用此值來確定指定物件索引鍵的事件順序。

  如果比較 `sequencer` 字串和相同物件金鑰的兩項事件通知，`sequencer` 十六進位值較大的事件通知是發生較晚的事件。如果使用事件通知維護個別的 Amazon S3 物件資料庫或索引，則建議您在處理每項事件通知時，比較並存放 `sequencer` 值。

  注意下列事項：
  + 您不能使用 `sequencer` 索引鍵值來判斷不同物件索引鍵上的事件順序。
  + `sequencer` 字串長度可能各不相不同。所以，為了比較這些值，需先在較短值的左邊填充零，再執行字典排序比較。
+ 只有 `s3:ObjectRestore:Completed` 事件才可看見 `glacierEventData` 索引鍵值。
+ `restoreEventData` 索引鍵值包含與您的還原請求相關的屬性。
+ `replicationEventData` 索引鍵值只會對複寫事件顯現。
+ `intelligentTieringEventData` 索引鍵值只會對 S3 Intelligent-Tiering 事件顯現。
+ `lifecycleEventData` 索引鍵值只會對 S3 生命週期轉換事件顯現。

## 範例訊息
<a name="notification-content-structure-examples"></a>

以下是 Amazon S3 事件通知訊息的範例。

**Amazon S3 測試訊息**  
您在儲存貯體上設定事件通知後，Amazon S3 會傳送下列測試訊息。

```
1. {  
2.    "Service":"Amazon S3",
3.    "Event":"s3:TestEvent",
4.    "Time":"2014-10-13T15:57:02.089Z",
5.    "Bucket":"amzn-s3-demo-bucket",
6.    "RequestId":"5582815E1AEA5ADF",
7.    "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE"
8. }
```

**注意**  
`s3:TestEvent` 訊息使用的格式與一般 S3 事件通知不同。與其他使用先前所示 `Records` 陣列結構的事件通知不同，測試事件會搭配使用簡化格式與直接欄位。實作事件處理時，請確定您的程式碼可以區分和正確處理這兩種訊息格式。

**使用 `PUT` 請求建立物件時的範例訊息**  
以下是 Amazon S3 傳送以發佈 `s3:ObjectCreated:Put` 事件的訊息範例。

```
 1. {  
 2.    "Records":[  
 3.       {  
 4.          "eventVersion":"2.1",
 5.          "eventSource":"aws:s3",
 6.          "awsRegion":"us-west-2",
 7.          "eventTime":"1970-01-01T00:00:00.000Z",
 8.          "eventName":"ObjectCreated:Put",
 9.          "userIdentity":{  
10.             "principalId":"AIDAJDPLRKLG7UEXAMPLE"
11.          },
12.          "requestParameters":{  
13.             "sourceIPAddress":"172.16.0.1"
14.          },
15.          "responseElements":{  
16.             "x-amz-request-id":"C3D13FE58DE4C810",
17.             "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
18.          },
19.          "s3":{  
20.             "s3SchemaVersion":"1.0",
21.             "configurationId":"testConfigRule",
22.             "bucket":{  
23.                "name":"amzn-s3-demo-bucket",
24.                "ownerIdentity":{  
25.                   "principalId":"A3NL1KOZZKExample"
26.                },
27.                "arn":"arn:aws:s3:::amzn-s3-demo-bucket"
28.             },
29.             "object":{  
30.                "key":"HappyFace.jpg",
31.                "size":1024,
32.                "eTag":"d41d8cd98f00b204e9800998ecf8427e",
33.                "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko",
34.                "sequencer":"0055AED6DCD90281E5"
35.             }
36.          }
37.       }
38.    ]
39. }
```

