イベントメッセージの構造
Amazon S3 がイベントを発行するために送信する通知メッセージは JSON 形式です。
イベント通知の設定に関する一般的な概要と手順については、Amazon S3 イベント通知 を参照してください。
次の例は、イベント通知 JSON 構造体のバージョン 2.2 を示します。Amazon S3 は、このイベント構造体のバージョン 2.1 、 2.2 、 2.3 を使用します。Amazon S3 は、クロスリージョンレプリケーションイベント通知にバージョン 2.2 を使用します。S3 ライフサイクル、S3 Intelligent−Tiering、オブジェクト ACL、オブジェクトのタグ付け、オブジェクトの復元削除イベントにバージョン 2.3 を使用します。これらのバージョンには、これらのオペレーションに固有の追加情報が含まれています。バージョン 2.2 および 2.3 は、バージョン 2.1 と互換性があり、Amazon S3 が現在すべてのイベント通知タイプで使用されています。
{ "Records":[ { "eventVersion":"2.2", "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":"event-type
", "userIdentity":{ "principalId":"Amazon-customer-ID-of-the-user-who-caused-the-event
" }, "requestParameters":{ "sourceIPAddress":"ip-address-where-request-came-from
" }, "responseElements":{ "x-amz-request-id":"Amazon S3 generated request ID
", "x-amz-id-2":"Amazon S3 host that processed the request
" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"ID found in the bucket notification configuration
", "bucket":{ "name":"bucket-name
", "ownerIdentity":{ "principalId":"Amazon-customer-ID-of-the-bucket-owner
" }, "arn":"bucket-ARN
" }, "object":{ "key":"object-key
", "size":"object-size in bytes
", "eTag":"object eTag
", "versionId":"object version if bucket is versioning-enabled, otherwise null
", "sequencer": "a string representation of a hexadecimal value used to determine event sequence, only used with PUTs and DELETEs
" } }, "glacierEventData": { "restoreEventData": { "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format, for example, 1970-01-01T00:00:00.000Z, of Restore Expiry
", "lifecycleRestoreStorageClass": "Source storage class for restore
" } } } ] }
イベントメッセージ構造について、以下の点に注意してください。
-
<major>
形式でメジャーおよびマイナーバージョンを含むeventVersion
キーの値。<minor>
Amazon S3 が、後方互換性のないイベント構造に変更を加えた場合、メジャーバージョンは増分されます。これには、すでに存在する JSON フィールドの削除や、フィールドのコンテンツの表現方法 (日付形式など) の変更が含まれます。
Amazon S3 が、イベント構造に新しいフィールドを追加した場合、マイナーバージョンは増分されます。これは、既存のイベントの一部またはすべてに対して新しい情報が提供された場合に発生します。これは、新しく導入されたイベントタイプでのみ新しい情報が提供されている場合にも発生します。イベント構造の新しいマイナーバージョンとの将来の互換性を保つには、アプリケーションは新しいフィールドを無視する必要があります。
新しいイベントタイプが導入したが、イベントの構造が変更されていない場合、イベントのバージョンは変更されません。
アプリケーションがイベント構造を正しく解析できるようにするため、メジャーバージョン番号が同等かどうかの比較を行うことをお勧めします。アプリケーションで想定されるフィールドが存在することを確認するため、マイナーバージョンが同等以上かを比較することをお勧めします。
-
eventName
はイベント通知タイプのリストを参照しますが、s3:
プレフィックスが含まれていません。 -
responseElements
キー値は、AWS Support のサポートによってリクエストを追跡する場合に役立ちます。x-amz-request-id
とx-amz-id-2
のどちらも、Amazon S3 が個々のリクエストを追跡するのに役立ちます。これらの値は、イベントを開始するリクエストへの応答として Amazon S3 が返す値と同じです。これは、イベントをリクエストに一致させるために使用できます。 -
s3
キーは、イベントに関与したバケットとオブジェクトに関する情報を提供します。オブジェクトのキー名の値は URL エンコードされます。例えば、「red flower.jpg」は「red+flower.jpg」となります (Amazon S3 はコンテンツタイプとして「application/x-www-form-urlencoded
」をレスポンスで返します)。 -
イベントのシーケンスを決定する方法の 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 ライフサイクルの移行イベントのみ表示されます。
メッセージの例
Amazon S3 イベント通知メッセージの例を次に示します。
Amazon S3 テストメッセージ
バケットにイベント通知を設定すると、Amazon S3 は次のようなテストメッセージを送信します。
{ "Service":"Amazon S3", "Event":"s3:TestEvent", "Time":"2014-10-13T15:57:02.089Z", "Bucket":"
bucketname
", "RequestId":"5582815E1AEA5ADF", "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE" }
PUT リクエストを使用してオブジェクトが作成された場合のメッセージの例
次のメッセージは、Amazon S3 が s3:ObjectCreated:Put
イベントを発行するために送信するメッセージの例です。
{ "Records":[ { "eventVersion":"2.1", "eventSource":"aws:s3", "awsRegion":"us-west-2", "eventTime":"1970-01-01T00:00:00.000Z", "eventName":"ObjectCreated:Put", "userIdentity":{ "principalId":"AIDAJDPLRKLG7UEXAMPLE" }, "requestParameters":{ "sourceIPAddress":"127.0.0.1" }, "responseElements":{ "x-amz-request-id":"C3D13FE58DE4C810", "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"testConfigRule", "bucket":{ "name":"mybucket", "ownerIdentity":{ "principalId":"A3NL1KOZZKExample" }, "arn":"arn:aws:s3:::mybucket" }, "object":{ "key":"HappyFace.jpg", "size":1024, "eTag":"d41d8cd98f00b204e9800998ecf8427e", "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko", "sequencer":"0055AED6DCD90281E5" } } } ] }
各 IAM 識別プレフィクス (AIDA、AROA、AGPA など) の定義については、IAM ユーザーガイドの IAM 識別子を参照してください。