イベント通知のタイプおよび送信先
Amazon S3 では、通知を発行できるいくつかのイベント通知のタイプと送信先がサポートされています。イベント通知を設定するときに、イベントタイプと送信先を指定できます。各イベント通知に指定できる送信先は 1 つだけです。Amazon S3 イベント通知は、通知メッセージごとに 1 つのイベントエントリを送信します。
トピック
サポートされているイベントの送信先
Amazon S3 は、次の宛先にイベントの通知メッセージを送信できます。
-
Amazon Simple Notification Service (Amazon SNS)のトピック
-
Amazon Simple Queue Service Amazon SQS キュー
-
AWS Lambda
-
Amazon EventBridge
ただし、各イベント通知に指定できる送信先タイプは 1 つだけです。
注記
Amazon SNS トピックまたは Amazon SQS キューにメッセージを投稿するには、Amazon S3 のアクセス許可を付与する必要があります。また、ユーザーに代わって AWS Lambda 関数を呼び出すためにも Amazon S3 の許可を付与する必要があります。これらの許可を付与する方法については、宛先にイベント通知メッセージを発行するアクセス許可の付与 を参照してください。
Amazon SNS トピック
Amazon SNS は、柔軟性に優れたフルマネージド型のプッシュメッセージングサービスです。このサービスを使用すると、モバイルデバイスまたは配信サービスにメッセージを配信できます。SNS で 一度メッセージを送信すると、1 回または複数回配信できます。現在 、 標準 SNS は S3 イベント通知の宛先としてのみ許可されていますが、SNS FIFO は許可されていません。
Amazon SNS は承認エンドポイントやクライアントへのメッセージの配信または送信の調整と管理を行います。Amazon SNS コンソールを使用して、通知の送信先にする Amazon SNS トピックを作成できます。
トピックは、Amazon S3 バケットと同じ AWS リージョンにある必要があります。Amazon SNS トピックの作成方法の詳細については、Amazon Simple Notification Service デベロッパーガイドの Amazon SNS の開始方法および Amazon SNS のよくある質問
イベント通知宛先として作成した Amazon SNS トピックを使用するには、以下のものが必要です。
-
Amazon SNS トピックの Amazon リソースネーム (ARN)
-
有効な Amazon SNS トピックサブスクリプション。これにより、Amazon SNS トピックにメッセージが公開されると、トピックのサブスクライバーに通知されます。
Amazon SQS キュー
Amazon SQS には、コンピュータ間で送受信されるメッセージを格納するための、信頼性の高いスケーラブルなホストされたキューが用意されています。Amazon SQS を使用すると、どのような量のデータでも転送することができ、他のサービスが常に利用可能である必要もありません。Amazon SQS コンソールを使用すると、通知の送信先にする Amazon SQS キューを作成できます。
Amazon SQS キューは、Amazon S3 バケットと同じ AWS リージョン に存在する必要があります。Amazon SQS キューの作成方法の説明は、「Amazon Simple Queue Service デベロッパーガイド」の「Amazon Simple Queue Service とは」および「Amazon SQS の開始方法」を参照してください。
イベント通知の送信先として Amazon SQS キューを使用するには、以下が必要です。
-
Amazon SQS キューの Amazon リソースネーム (ARN)
注記
Amazon Simple キューサービス FIFO (先入れ先出し) キューは、Amazon S3 イベント通知の送信先としてサポートされていません。Amazon S3 イベントの通知を Amazon SQS FIFO キューに送信するには、Amazon EventBridge を使用できます。詳細については、「Amazon EventBridge を有効にします」を参照してください。
Lambda 関数
AWS Lambda を使用して、AWS の他のサービスをカスタムロジックで拡張したり、AWS のスケール、パフォーマンス、セキュリティで動作する独自のバックエンドを作成したりすることができます。Lambda を使用すると、必要な場合にのみ実行される離散イベント駆動型アプリケーションを作成できます。また、これを使用して、これらのアプリケーションを 1 日数回のリクエストから 1 秒あたり数千回のリクエストに自動的にスケーリングすることもできます。
Lambda は、Amazon S3 バケットイベントに応答してカスタムコードを実行できます。カスタムコードを Lambda にアップロードし、Lambda 関数と呼ばれるものを作成します。Amazon S3 は特定のタイプのイベントを検出すると、そのイベントを AWS Lambda に公開し、Lambda で関数を呼び出すことができます。それに応じて、Lambda が関数を実行します。例えば、検出される可能性のあるイベントタイプの 1 つは、オブジェクトで作成されたイベントです。
AWS Lambda コンソールを使用すると、AWS インフラストラクチャを使用してユーザーに代わってコードを実行する Lambda 関数を作成できます。Lambda 関数は S3 バケットと同じリージョンに存在する必要があります。Lambda 関数をイベント通知の送信先として設定するには、Lambda 関数の名前または ARN も必要になります。
警告
通知が通知をトリガーするのと同じバケットに書き込むと、実行ループが発生する可能性があります。例えば、オブジェクトがアップロードされるたびにバケットで Lambda 関数をトリガーし、その関数によってオブジェクトがバケットにアップロードされると、その関数によって間接的にその関数自体がトリガーされます。これを回避するには、2 つのバケットを使用するか、受信オブジェクトで使用されるプレフィックスにのみ適用されるようにトリガーを設定します。
AWS Lambda で Amazon S3 通知を使用する方法の詳細と例については、「AWS Lambda デベロッパーガイド」の「AWS Lambda を Amazon S3 に使用する」を参照してください。
Amazon EventBridge
Amazon EventBridge はサーバーレスのイベントバスで、AWS サービスからのイベントを受信します。イベントに一致するルールを設定し、それらを AWS サービスや HTTP エンドポイントなどのターゲットに配信できます。詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon EventBridge とは」を参照してください。
他の宛先とは異なり、バケットの EventBridge へのイベントの配信を有効または無効にすることができます。配信を有効にすると、すべてのイベントが EventBridge に送信されます。さらに、EventBridge ルールを使用して、イベントを追加のターゲットに送信することもできます。
SQS、SNS、および Lambda でサポートされているイベントタイプ
Amazon S3 は、次のタイプのイベントを発行できます。通知設定で、これらのイベントタイプを指定します。
イベントタイプ | 説明 |
---|---|
|
通知が有効な場合、Amazon S3 はテスト通知を公開します これは、トピックが存在し、バケット所有者が指定されたトピックを公開する許可があることを保証するためです。 通知の有効化に失敗した場合、テスト通知を受信しません。 |
|
|
|
これらのイベント通知では、ライフサイクル設定や失敗したオペレーションから自動削除のアラートはありません。 |
|
|
s3:ReducedRedundancyLostObject |
この通知イベントは、Amazon S3 が RRS ストレージクラスのオブジェクトが失われたことを検出したときに受け取ります。 |
|
|
|
|
s3:LifecycleTransition |
この通知イベントは、S3 ライフサイクル設定によってオブジェクトが別の Amazon S3 ストレージクラスに移行されたときに受信されます。 |
s3:IntelligentTiering |
この通知イベントは、S3 Intelligent−Tiering ストレージクラス内のオブジェクトがアーカイブアクセス層またはディープアーカイブアクセス層に移動したときに受信されます。 |
|
|
s3:ObjectAcl:Put |
この通知イベントは、ACL がオブジェクトに PUT されたとき、または既存の ACL が変更されたときに受け取ります。リクエストによってオブジェクトの ACL が変更されない場合、イベントは生成されません。 |
Amazon EventBridge でサポートされているイベントタイプ。
Amazon S3 から Amazon EventBridge に送信するイベントタイプのリストについては、「EventBridge の使用」を参照してください。
イベントの順序付けと重複イベント
Amazon S3 イベント通知は、通知を少なくとも 1 回配信するように設計されていますが、イベントが発生したのと同じ順序で通知が受信されるとは限りません。まれに、Amazon S3 の再試行メカニズムによって、同じオブジェクトイベントに対して重複する S3 イベント通知が発生することがあります。重複イベントまたは順序が異なるイベント処理の詳細については、「AWS Storage Blog」の「Manage event ordering and duplicate events with Amazon S3 Event Notifications