Amazon SQS、Amazon SNS、Lambda を使用します
通知の有効化は、バケットレベルのオペレーションです。バケットに関連付けられた 通知 サブリソースに通知設定情報が格納されます。通常、バケット通知設定を作成または変更してから、変更が有効になるまで通常 5 分かかります。通知が最初に有効になったとき、s3:TestEvent
が発生します。次のいずれかの方法を使用して通知設定の管理を行います。
-
Amazon S3 コンソールの使用 − コンソール UI では、コードを記述しなくても、バケットの通知設定を指定できます。詳細については、Amazon S3 コンソールを使用したイベント通知の有効化と設定 を参照してください。
-
AWS SDK をプログラムで使用する − 内部的には、コンソールも SDK も Amazon S3 REST API を呼び出して、バケットに関連付けられた通知サブリソースを管理します。AWS SDK を使用した通知設定の例については、チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する を参照してください。
注記
コードから直接 Amazon S3 REST API を呼び出すこともできます。しかし、そうするのはリクエストを認証するためのコードを作成する必要があるため面倒な場合もあります。
使用する方法を問わず、Amazon S3 は通知設定を XML として、バケットに関連付けられた 通知 サブリソースに保存します。バケットのサブリソースの詳細については、バケット設定オプション を参照してください。
注記
削除された送信先が原因で複数の失敗したイベント通知を受け取った場合、削除しようとすると [以下の送信先設定を検証できません] と表示される場合があります。これは、S3 コンソールで失敗した通知をすべて同時に削除することで解決できます。
トピック
プログラムによるイベント通知の設定
デフォルトで、通知はどのタイプのイベントにも有効ではありません。したがって、通知サブリソースに最初は空の設定で格納されています。
<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 は、特定のタイプのイベントを検出すると、そのイベント情報を含むメッセージを発行します。詳細については、イベントメッセージの構造 を参照してください。
イベント通知の設定の詳細については、次のトピックを参照してください。