Amazon S3 イベント通知 - Amazon Simple Storage Service

Amazon S3 イベント通知

Amazon S3 イベント通知機能を使用して、S3 バケットで特定のイベントが発生したときに通知を受け取ることができます。通知を有効にするには、まず通知設定を追加します。この設定で、Amazon S3 から発行するイベントと、Amazon S3 から通知を送信する宛先を指定します。この設定は、バケットに関連付けられた通知サブリソースに保存します詳細については、「バケット設定オプション」を参照してください。Amazon S3 では、このサブリソースを管理するための API も利用できます。

重要

Amazon S3 イベント通知は、少なくとも 1 回配信されるように設計されています。通常、イベント通知は数秒で配信されますが、1 分以上かかる場合もあります。

Amazon S3 イベント通知の概要。

現在、Amazon S3 は次のイベントの通知を発行できます。

  • 新しいオブジェクトの作成イベント — Amazon S3 ではオブジェクトを作成するために複数の API をサポートします。特定の API のみが使用された場合に通知をリクエストできます (s3:ObjectCreated:Put など)。また、ワイルドカード (s3:ObjectCreated:* など) を使用して、使用する API に関係なく、オブジェクトが作成されたときに通知を要求することもできます。

  • オブジェクト削除イベント — Amazon S3 は、バージョニングが有効なオブジェクトとバージョニングが無効なオブジェクトの削除をサポートしています。詳細については、S3 バケットでのバージョニングの使用 を参照してください。

    s3:ObjectRemoved:Delete イベントタイプを使用することで、バージョニング非対応のオブジェクトが削除されたとき、またはバージョニングされたオブジェクトが完全に削除されたときに通知が送信されるようにリクエストできます。または、s3:ObjectRemoved:DeleteMarkerCreated を使用することで、バージョニングが有効なオブジェクトに対して削除マーカーが作成されたとき通知が送信されるようにリクエストできます。ワイルドカードとして s3:ObjectRemoved:* を使用することで、オブジェクトが削除されるたびに通知が送信されるようにリクエストできます。バージョニングが有効なオブジェクトの削除については、「バージョニングが有効なバケットからのオブジェクトバージョンの削除」を参照してください。

  • オブジェクト復元イベント — Amazon S3 は、S3 Glacier ストレージクラスにアーカイブされたオブジェクトの復元をサポートしています。s3:ObjectRestore:Completed を使用して、オブジェクトの復元完了の通知をリクエストできます。s3:ObjectRestore:Post を使用して、復元の開始の通知をリクエストできます。

  • 低冗長化ストレージ (RRS) オブジェクト消失イベント — Amazon S3 は RRS ストレージクラスのオブジェクトが消失したことを検出すると、通知メッセージを送信します。

  • レプリケーションイベント — Amazon S3 は、S3 レプリケーションメトリクスまたは S3 Replication Time Control (S3 RTC) が有効になっているレプリケーション設定のイベント通知を送信します。保留中のバイト数、保留中のオペレーション、およびレプリケーションのレイテンシーを追跡すると、レプリケーションの進行状況を 1 分単位でモニタリングできます。レプリケーションメトリクスについては、「レプリケーションメトリクスと Amazon S3 イベント通知による、進捗状況のモニタリング」をご参照ください。

サポートされるイベントタイプのリストについては、「サポートされるイベントタイプ」を参照してください。

Amazon S3 は、イベントの発行先として次の宛先をサポートしています。

  • Amazon Simple Notification Service (Amazon SNS)

    Amazon SNS は、柔軟性に優れたフルマネージド型のプッシュメッセージングサービスです。このサービスを使用すると、モバイルデバイスまたは分散サービスにメッセージをプッシュすることができます。SNS を使用すれば、一度メッセージを発行するだけで、何回も配信できます。現在、標準 SNS は S3 イベント通知の宛先としてのみ許可されていますが、SNS FIFO は許可されていません。SNS の詳細については、「Amazon SNS」を参照してください。

  • Amazon Simple Queue Service (Amazon SQS) キュー

    Amazon SQS は、スケーラブルな、フルマネージド型のメッセージキューサービスです。SQS を使用すると、どのような量のデータでも転送することができ、他のサービスが常に利用可能である必要もありません。通知設定で、Amazon S3 が SQS キューにイベントを発行するようにリクエストすることができます。

    現在、Amazon S3 イベント通知の送信先として、標準 SQS キューのみ許可されており、FIFO SQS キューは許可されていません。Amazon SQS の詳細については、「Amazon SQS」を参照してください。

  • AWS Lambda

    AWS Lambda は、新しい情報に迅速に対応できるアプリケーションを容易に構築できるコンピューティングサービスです。AWS Lambda は、イメージのアップロード、アプリ内のアクティビティ、ウェブサイトのクリックや接続したデバイスからの出力などのイベントに応答してコードを実行します。

    AWS Lambda を使用して、他の AWS のサービスをカスタムロジックで拡張したり、AWS のスケール、パフォーマンス、セキュリティで動作する独自のバックエンドを作成したりすることができます。Lambda を使用すると、必要なときだけ実行される個別のイベント駆動型アプリケーションを簡単に作成し、1 日あたり数回のリクエストから 1 秒あたり数千のリクエストまで自動的にスケールできます。

    Lambda は、Amazon S3 バケットイベントに応答してカスタムコードを実行できます。カスタムコードを Lambda にアップロードし、Lambda 関数と呼ばれるものを作成します。Amazon S3 は特定のタイプのイベント (例えば、オブジェクトが作成したイベント) を検出すると、そのイベントを AWS Lambda に発行し、Lambda で関数を呼び出します。それに応じて、Lambda が関数を実行します。

警告

通知が通知をトリガーするのと同じバケットに書き込むと、実行ループが発生する可能性があります。たとえば、オブジェクトがアップロードされるたびにバケットで Lambda 関数をトリガーし、その関数によってオブジェクトがバケットにアップロードされると、その関数によって間接的にその関数自体がトリガーされます。これを回避するには、2 つのバケットを使用するか、受信オブジェクトで使用されるプレフィックスにのみ適用されるようにトリガーを設定します。

AWS Lambda で Amazon S3 通知を使用する方法の詳細と例については、AWS Lambda デベロッパーガイドAWS Lambda を Amazon S3 に使用するを参照してください。

S3 イベント通知の詳細については、以下のセクションを参照してください。