イベント通知のタイプおよび送信先 - Amazon Simple Storage Service

イベント通知のタイプおよび送信先

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 は、次のタイプのイベントを発行できます。通知設定で、これらのイベントタイプを指定します。

イベントタイプ 説明

s3:TestEvent

通知が有効な場合、Amazon S3 はテスト通知を公開します これは、トピックが存在し、バケット所有者が指定されたトピックを公開する許可があることを保証するためです。

通知の有効化に失敗した場合、テスト通知を受信しません。

s3:ObjectCreated:*

s3:ObjectCreated:Put

s3:ObjectCreated:Post

s3:ObjectCreated:Copy

s3:ObjectCreated:CompleteMultipartUpload

PUTPOSTCOPY などの Amazon S3 API オペレーションはオブジェクトを作成できます。これらのイベントタイプで、特定の API を使用してオブジェクトが作成されたときに通知を有効にできます。または、オブジェクトの作成に使用された API に関係なく、s3:ObjectCreated:* イベントタイプを使用して通知を要求できます。

s3:ObjectCreated:CompleteMultipartUpload には、コピーオペレーションの UploadPartCopy を使用して作成されたオブジェクトが含まれます。

s3:ObjectRemoved:*

s3:ObjectRemoved:Delete

s3:ObjectRemoved:DeleteMarkerCreated

ObjectRemoved イベントタイプを使用することで、オブジェクトまたはオブジェクトのバッチがバケットから削除されたときに通知を有効にできます。

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

これらのイベント通知では、ライフサイクル設定や失敗したオペレーションから自動削除のアラートはありません。

s3:ObjectRestore:*

s3:ObjectRestore:Post

s3:ObjectRestore:Completed

s3:ObjectRestore:Delete

ObjectRestore イベントタイプを使用することで、S3 Glacier Flexible Retrieval ストレージクラス、S3 Glacier Deep Archive ストレージクラス、S3 Intelligent-Tiering アーカイブアクセス階層、および S3 Intelligent-Tiering Deep アーカイブアクセス階層からオブジェクトを復元するときに、開始および完了の通知を受け取ることができます。オブジェクトの復元されたコピーの有効期限が切れたときの通知を受け取ることもできます。

s3:ObjectRestore:Post イベントタイプは、オブジェクトの復元開始を通知します。s3:ObjectRestore:Completed イベントタイプは、復元完了を通知します。s3:ObjectRestore:Delete イベントタイプは、復元されたオブジェクトの一時コピーの有効期限が切れると通知します。

s3:ReducedRedundancyLostObject この通知イベントは、Amazon S3 が RRS ストレージクラスのオブジェクトが失われたことを検出したときに受け取ります。

s3:Replication:*

s3:Replication:OperationFailedReplication

s3:Replication:OperationMissedThreshold

s3:Replication:OperationReplicatedAfterThreshold

s3:Replication:OperationNotTracked

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

  • s3:Replication:OperationFailedReplicationイベントタイプは、レプリケーションのターゲットであったオブジェクトがレプリケートに失敗したときに通知を受け取ります。

  • s3:Replication:OperationMissedThreshold イベントタイプは、S3 RTC を使用するレプリケーションの対象であったオブジェクトがレプリケーションの 15 分の閾値を超えたときに通知します。

  • s3:Replication:OperationReplicatedAfterThreshold イベントタイプは、S3 RTC を使用するレプリケーションの対象であったオブジェクトが 15 分の閾値を超えてレプリケートされたときに通知します。

  • s3:Replication:OperationNotTracked イベントタイプは、ライブレプリケーションの対象であったオブジェクト (同一リージョンレプリケーション [SRR] またはクロスリージョンレプリケーション [CRR]) がレプリケーションメトリクスによって追跡されなくなったときに通知します。

s3:LifecycleExpiration:*

s3:LifecycleExpiration:Delete

s3:LifecycleExpiration:DeleteMarkerCreated

LifecycleExpiration イベントタイプを使用すると、Amazon S3 が S3 ライフサイクル設定に基づいてオブジェクトを削除したときに通知を受け取ることができます。

s3:LifecycleExpiration:Delete イベントタイプは、バージョン管理されていないバケット内のオブジェクトが削除されたときに通知します。また、S3 ライフサイクル設定によってオブジェクトバージョンが完全に削除された場合にも通知されます。s3:LifecycleExpiration:DeleteMarkerCreated イベントタイプは、バージョン対応バケット内のオブジェクトの現在のバージョンが削除されたときに S3 ライフサイクル が削除マーカーを作成したときに通知します。

s3:LifecycleTransition この通知イベントは、S3 ライフサイクル設定によってオブジェクトが別の Amazon S3 ストレージクラスに移行されたときに受信されます。
s3:IntelligentTiering この通知イベントは、S3 Intelligent−Tiering ストレージクラス内のオブジェクトがアーカイブアクセス層またはディープアーカイブアクセス層に移動したときに受信されます。

s3:ObjectTagging:*

s3:ObjectTagging:Put

s3:ObjectTagging:Delete

ObjectTagging イベントタイプを使用すると、オブジェクトタグがオブジェクトに追加またはオブジェクトから削除されたときに通知を有効にできます。

s3:ObjectTagging:Put イベントタイプは、タグがオブジェクトの PUT であるか、既存のタグが更新されたときに通知します。s3:ObjectTagging:Delete イベントタイプは、タグがオブジェクトから削除されたときに通知します。

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」を参照してください。