

# 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 SDK をプログラムで使用する** − 内部的には、コンソールも SDK も 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 キューに発行するには**  
1 つ以上のイベントタイプの通知の送信先として 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>
```

**バケットで設定されているすべての通知を削除するには**  
バケットに設定されたすべての通知を削除するには、*notification* サブリソースに空の `<NotificationConfiguration/>` エレメントを保存します。

Amazon S3 は、特定のタイプのイベントを検出すると、そのイベント情報を含むメッセージを発行します。詳細については、[イベントメッセージの構造](notification-content-structure.md) を参照してください。

イベント通知の設定の詳細については、次のトピックを参照してください。
+ [チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する](ways-to-add-notification-config-to-bucket.md).
+ [オブジェクトキー名のフィルタリングを使用したイベント通知の設定](notification-how-to-filtering.md)