View a markdown version of this page

イベントメッセージの構造 - Amazon Simple Storage Service

イベントメッセージの構造

Amazon S3 がイベントを発行するために送信する通知メッセージは JSON 形式です。

イベント通知の設定に関する一般的な概要と手順については、Amazon S3 イベント通知 を参照してください。

次の例は、イベント通知 JSON 構造体のバージョン 2.4 を示します。バージョン 2.4 以降、Amazon S3 はすべてのイベントタイプに単一の統合バージョンを使用します。各イベントには、オペレーションに固有の追加情報が含まれています。以前は、Amazon S3 は一般イベントにはバージョン 2.1、クロスリージョンレプリケーションイベントにはバージョン 2.2 を使用し、S3 ライフサイクル、S3 Intelligent-Tiering、オブジェクト ACL、オブジェクトタグ付け、およびオブジェクト復元の削除の各イベントにはバージョン 2.3 を使用していました。

バージョン 2.4 以前は、さまざまなイベントタイプがイベント通知構造 (2.1、2.2、2.3) の異なるバージョンを使用していました。バージョン 2.4 以降、すべてのイベントタイプで単一の統合バージョンが使用されます。今後、スキーマが進化するたびに、すべてのイベントタイプでイベントバージョンは統一されたルールで増分されます。

{ "Records":[ { "eventVersion":"2.4", "eventSource":"aws:s3", "awsRegion":"us-west-2", "eventTime":"The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z) when Amazon S3 finished processing the request", "eventName":"The event type", "userIdentity":{ "principalId":"The unique ID of the IAM resource that caused the event" }, "requestParameters":{ "sourceIPAddress":"The IP address where the request came from" }, "responseElements":{ "x-amz-request-id":"The Amazon S3 generated request ID", "x-amz-id-2":"The Amazon S3 host that processed the request" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"The ID found in the bucket notification configuration", "bucket":{ "name":"The name of the bucket, for example, amzn-s3-demo-bucket", "ownerIdentity":{ "principalId":"The Amazon retail customer ID of the bucket owner" }, "arn":"The bucket Amazon Resource Name (ARN)" }, "object":{ "key":"The object key name", "size":"The object size in bytes (as a number)", "eTag":"The object entity tag (ETag)", "versionId":"The object version if the bucket is versioning-enabled; null or not present if the bucket isn't versioning-enabled", "sequencer": "A string representation of a hexadecimal value used to determine event sequence; only used with PUT and DELETE requests" } }, "glacierEventData": { "restoreEventData": { "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z), when the temporary copy of the restored object expires", "lifecycleRestoreStorageClass": "The source storage class for restored objects" } } } ] }

イベントメッセージ構造について、以下の点に注意してください。

  • eventVersion 形式でメジャーおよびマイナーバージョンを含む major キーの値。minor

    Amazon S3 が、後方互換性のないイベント構造に変更を加えた場合、メジャーバージョンは増分されます。これには、すでに存在する JSON フィールドの削除や、フィールドのコンテンツの表現方法 (日付形式など) の変更が含まれます。

    Amazon S3 がイベント構造に後方互換性を加えた場合、マイナーバージョンは増分されます。これには、イベント構造への新しいフィールドの追加や、新しいイベントタイプの導入が含まれます。イベント構造の新しいマイナーバージョンとの互換性を維持するため、アプリケーションでは新しいフィールドを無視することをお勧めします。

    アプリケーションがイベント構造を正しく解析できるようにするため、メジャーバージョン番号が同等かどうかの比較を行うことをお勧めします。アプリケーションで想定されるフィールドが存在することを確認するため、マイナーバージョンが同等以上かを比較することをお勧めします。

  • eventName キー値はイベント通知タイプのリストを参照しますが、s3: プレフィックスが含まれていません。

  • userIdentity キー値は、イベントの原因となった AWS Identity and Access Management (IAM) リソース (ユーザー、ロール、グループなど) の一意の ID を参照します。各 IAM 識別プレフィクス (AIDA、AROA、AGPA など) の定義については、「IAM ユーザーガイド」の「一意の識別子」を参照してください。

  • responseElements キー値は、AWS サポート のサポートによってリクエストを追跡する場合に役立ちます。x-amz-request-idx-amz-id-2 のどちらも、Amazon S3 が個々のリクエストを追跡するのに役立ちます。これらの値は、イベントを開始するリクエストへの応答として Amazon S3 が返す値と同じです。したがって、これらの値を使用してイベントをリクエストに一致させることができます。

  • s3 キー値は、イベントに関与したバケットとオブジェクトに関する情報を提供します。オブジェクトのキー名の値は URL エンコードされます。例えば、red flower.jpgred+flower.jpg になります。(Amazon S3 は、レスポンスのコンテンツタイプとして「application/x-www-form-urlencoded」を返します。)

    ownerIdentity キー値は、バケット所有者の Amazon 小売 (Amazon.com) 顧客 ID に対応します。この ID 値は使用されなくなり、下位互換性のためにのみ維持されます。

  • イベントのシーケンスを決定する方法の 1 つとして、sequencer キー値があります。イベントが発生した順序でイベント通知が届く保証はありません。ただし、オブジェクト (PUT リクエスト) を作成するイベントからの通知と削除オブジェクトは sequencer を含みます。この値を使用して、特定のオブジェクトキーのイベントの順序を決定できます。

    同じオブジェクトキーに対する 2 つのイベント通知の sequencer の文字列を比較すると、sequencer の 16 進値が大きいほうのイベント通知が後に発生したイベントであることがわかります。イベント通知を使用して Amazon S3 オブジェクトの別のデータベースまたはインデックスを維持している場合は、イベント通知を処理するたびに sequencer の値を比較し、保存することを推奨します。

    次の点に注意してください。

    • 複数のオブジェクトキーのイベントの順序を決定するために sequencer キー値を使用することはできません。

    • sequencer 文字列の長さは異なる場合があります。これらの値を比較するには、まず短い値の左側に 0 を挿入してから、辞書式比較を行います。

  • glacierEventData キー値は s3:ObjectRestore:Completed イベントに対してのみ表示されます。

  • restoreEventData キー値には、復元リクエストに関連する属性が含まれます。

  • replicationEventData キー値は、レプリケーションイベントに対してのみ表示されます。

  • intelligentTieringEventData キー値は S3 Intelligent−Tiering イベントでのみ表示されます。

  • lifecycleEventData キー値は S3 ライフサイクルの移行イベントでのみ表示されます。

  • objectAnnotation キー値は注釈イベント (ObjectAnnotation:Delete および ObjectAnnotation:Put) に対してのみ表示されます。これには、注釈 namesize (Put イベントのみ)、eTag (Put イベントのみ) を含む配列が含まれています。

  • ObjectCreated:Copy イベントの場合、object ブロックには、コピーされたオブジェクトに注釈があるかどうかを示す hasObjectAnnotation ブールフィールドが含まれます。

メッセージの例

Amazon S3 イベント通知メッセージの例を次に示します。

Amazon S3 テストメッセージ

バケットにイベント通知を設定すると、Amazon S3 は次のようなテストメッセージを送信します。

{ "Service":"Amazon S3", "Event":"s3:TestEvent", "Time":"2014-10-13T15:57:02.089Z", "Bucket":"amzn-s3-demo-bucket", "RequestId":"5582815E1AEA5ADF", "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE" }
注記

s3:TestEvent メッセージは、通常の S3 イベント通知とは異なる形式を使用します。前述の Records 配列構造を使用する他のイベント通知とは異なり、テストイベントは直接フィールドを含む簡略化された形式を使用します。イベント処理を実装する際は、コードが両方のメッセージ形式を区別し、適切に処理できることを確認してください。

PUT リクエストを使用してオブジェクトが作成された場合のメッセージの例

次は Amazon S3 が s3:ObjectCreated:Put イベントを発行するために送信するメッセージの例です。

{ "Records":[ { "eventVersion":"2.4", "eventSource":"aws:s3", "awsRegion":"us-west-2", "eventTime":"1970-01-01T00:00:00.000Z", "eventName":"ObjectCreated:Put", "userIdentity":{ "principalId":"AIDAJDPLRKLG7UEXAMPLE" }, "requestParameters":{ "sourceIPAddress":"172.16.0.1" }, "responseElements":{ "x-amz-request-id":"C3D13FE58DE4C810", "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"testConfigRule", "bucket":{ "name":"amzn-s3-demo-bucket", "ownerIdentity":{ "principalId":"A3NL1KOZZKExample" }, "arn":"arn:aws:s3:::amzn-s3-demo-bucket" }, "object":{ "key":"HappyFace.jpg", "size":1024, "eTag":"d41d8cd98f00b204e9800998ecf8427e", "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko", "sequencer":"0055AED6DCD90281E5" } } } ] }