

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

# 使用 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="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)