S3 バケットのイベント通知を有効化および設定する方法 - Amazon Simple Storage Service

S3 バケットのイベント通知を有効化および設定する方法

イベントが発生するたびに送信先へ通知メッセージを送信する、Amazon S3 イベントを有効にすることができます。このセクションでは、Amazon S3 コンソールを使用してイベント通知を有効にする方法について説明します。AWS SDK と Amazon S3 REST API でイベント通知を使用する方法については、Amazon Simple Storage Service 開発者ガイド の「Amazon S3 イベント通知の設定」を参照してください。

イベント通知のタイプ

バケットのイベント通知を設定するときは、通知を受け取るイベントのタイプを指定する必要があります。イベントタイプの完全なリストについては、Amazon Simple Storage Service 開発者ガイドの「サポートされるイベントタイプ」セクションを参照してください。

Amazon S3 コンソールには、イベント通知を設定するための次のオプションがあります。1 つまたは複数のオプションを選択できます。

  • オブジェクトの作成

    • All object create events – バケットでオブジェクトが作成されたときに、PutPostCopyMultipart upload completed のいずれかのオブジェクト作成アクションの通知を受け取ります。

    • PutPostCopyMultipart upload completed – これらの特定のオブジェクト作成アクションのいずれかの通知を受け取ります。

  • オブジェクトの削除

    • All object delete events – バケットのオブジェクトが削除されたときに必ず通知を受け取ります。

    • Delete marker created – バージョン管理されたオブジェクトに対して削除マーカーが作成されたときに通知を受け取ります。

      バージョニングされたオブジェクトの削除については、「オブジェクトバージョンの削除」を参照してください。オブジェクトのバージョニングについては、「オブジェクトのバージョニング」と「バージョニングの使用」を参照してください。

  • S3 Glacier または S3 Glacier Deep Archive ストレージクラスからのオブジェクトの復元

    • Restore initiated – オブジェクトの復元開始の通知を受け取ります。

    • Restore completed – オブジェクトの復元完了の通知を受け取ります。

  • 低冗長化ストレージ (RRS) オブジェクトがイベントを紛失した

    • Object in RSS Lost – RRS ストレージクラスのオブジェクトが失われたことの通知を受け取ります。

  • Amazon S3 レプリケーションタイムコントロールを使用したレプリケーションの対象となるオブジェクト

    • Replication time missed threshold (レプリケーションがしきい値を超えても実行されなかった) – オブジェクトが 15 分のレプリケーションしきい値を超えてもレプリケートされなかったことの通知を受け取ります。

    • Replication time completed after threshold (レプリケーションがしきい値の後に完了した) – オブジェクトが 15 分のレプリケーションしきい値の後にレプリケートされたことの通知を受け取ります。

    • Replication time not tracked (レプリケーションが追跡されていない) – レプリケーションの対象であったオブジェクトが、レプリケーションメトリクスによって追跡されなくなったことの通知を受け取ります。

    • Replication time failed (レプリケーションが失敗した) – オブジェクトがレプリケートできなかったことの通知を受け取ります。

注記

フォルダから最後のオブジェクトを削除すると、Amazon S3 でオブジェクト作成イベントを生成できます。名前の一部に同じプレフィックスと末尾のスラッシュ (/) が含まれるオブジェクトが複数ある場合、それらのオブジェクトは Amazon S3 コンソールでフォルダの一部として表示されます。フォルダー名は、末尾のスラッシュ (/) の前の文字で形成されます。

そのフォルダ内のすべてのオブジェクトを削除すると、空のフォルダを表すために使用できる実際のオブジェクトはなくなります。このような場合、Amazon S3 コンソールによりフォルダを表す 0 バイトのオブジェクトが作成されます。オブジェクト作成のイベント通知を有効にした場合、コンソールにより実行される 0 バイトのオブジェクト作成アクションにより、オブジェクト作成イベントがトリガーされます。

Amazon S3 コンソールには、次の状況でフォルダが表示されます。

  • 0 バイトのオブジェクトの名前の末尾にスラッシュ (/) がある場合。この場合、フォルダを表す 0 バイトの実際の Amazon S3 オブジェクトがあります。

  • オブジェクトの名前にスラッシュ (/) が含まれている場合。この場合、フォルダを表す実際のオブジェクトはありません。

イベント通知の送信先

バケットのイベント通知を設定する場合は、通知の送信先も選択します。イベントの通知メッセージは、以下の送信先に送信できます。

  • Amazon Simple Notification Service (Amazon SNS) トピック – サブスクライブしているエンドポイントやクライアントへのメッセージの配信または送信の調整と管理を行います。Amazon SNS トピックの形式については、「SNS のよくある質問」を参照してください。

  • Amazon Simple Queue Service (Amazon SQS) キュー – コンピュータ間で送受信されるメッセージを保存するための、信頼性の高いスケーラブルなホストされたキューが用意されています。Amazon SQS の詳細については、Amazon Simple Queue Service 開発者ガイド の「Amazon Simple Queue Service とは」を参照してください。

  • AWS Lambda – Lambda 関数を呼び出し、イベントメッセージを引数として指定します。Lambda 関数を作成するときは、カスタムコードをパッケージ化し、AWS Lambda にアップロードします。AWS Lambda は、AWS インフラストラクチャを使用してユーザーに代わってコードを実行します。Amazon S3 による Lambda の使用の詳細については、AWS Lambda Developer Guide の「Amazon S3 で AWS Lambda を使用する」を参照してください。

送信先へのイベント通知の発行に必要なアクセス許可を Amazon S3 サービスプリンシパルに付与する方法の詳細については、Amazon S3 開発者ガイドの「送信先にイベント通知メッセージを発行するためのアクセス許可の付与」を参照してください。

警告

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

AWS Lambda で Amazon S3 通知を使用する詳細と例については、AWS Lambda Developer Guide の「Amazon S3 での AWS Lambda の使用」を参照してください。

イベント通知の有効化と設定

バケットのイベント通知を有効にする前に、送信先タイプのいずれか 1 つを設定する必要があります。詳細については、「イベント通知を受け取る送信先を設定する方法」を参照してください。

S3 バケットのイベント通知を有効化および設定するには

  1. AWS マネジメントコンソールにサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [バケット名] のリストで、イベントを有効にするバケットの名前を選択します。

    
            管理者が作成したバケットが選択されているバケットリストのコンソールスクリーンショット。
  3. [プロパティ] を選択します。

    
            [プロパティ] タブのコンソールのスクリーンショット。
  4. [詳細設定] で、[イベント] を選択します。

    
            [イベント] セクションのコンソールのスクリーンショット。
  5. [通知の追加] を選択します。

    
            [イベント] ダイアログボックスの [通知の追加] オプションのコンソールスクリーンショット。
  6. [名前] に、イベント通知のわかりやすい名前を入力します。

    名前を入力しないと、GUID が生成され、名前として使用されます。

    
            [イベント] ダイアログボックスの名前ボックスのコンソールスクリーンショット。
  7. [イベント] で、1 つまたは複数のイベントを選択します。

    イベントタイプのリストについては、「イベント通知のタイプ」を参照してください。

    
            利用可能なイベントのリストを示すコンソールのスクリーンショット。
  8. プレフィックスまたはサフィックスでイベント通知をフィルタするには、[プレフィックス] または [サフィックス] に入力します。

    たとえば、特定のフォルダ (images/ など) にファイルが追加されたときにのみ通知を受信するようにプレフィックスフィルタを設定できます。詳細については、「オブジェクトキー名によるフィルタリングを使用した通知の設定」を参照してください。

    
            プレフィックスとサフィックスのテキストボックスが表示されたコンソールのスクリーンショット。
  9. イベント通知の送信先として、[SNS トピック]、[SQS キュー]、または [Lambda 関数] を選択します。

    送信先の説明については、「イベント通知の送信先」を参照してください。

    
            通知の [送信先] リストを示すコンソールのスクリーンショット。

    [送信先] を選択すると、特定の SNS、SQS、または Lambda 関数の送信先を入力するためのボックスが表示されます。下のイメージ例では、[送信先] の場所が [SNS トピック] で、SNS トピック名の [SNS] ボックスが表示されています。

    
            選択した送信先として SNS トピックを示すコンソールのスクリーンショット。
  10. 表示されるボックスで、送信先の SNS、SQS、または Lambda 関数を選択または入力します。

    SNS、SQS、または Lambda 関数名を選択または入力するか、送信先の Amazon リソースネーム (ARN) を選択できます。次のスクリーンショット例は、[Add SNS topic ARN] オプションを示しています。

    
            [Add SNS topic ARN] オプションが表示されたコンソールのスクリーンショット。
  11. [Add ARN] を選択した場合は、SNS トピック、SQS キュー、または Lambda 関数 ARN を入力します。

    
            送信先 ARN を入力するための [Add SNS topic ARN] ボックスが表示されたコンソールのスクリーンショット。
  12. [Save] を選択します。

    Amazon S3 はイベント通知の送信先にテストメッセージを送信します。

詳細情報