Struktur pesan peristiwa - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Struktur pesan peristiwa

Pesan pemberitahuan yang dikirimkan Amazon S3 untuk menerbitkan kegiatan ada dalam format JSON.

Untuk ikhtisar umum dan petunjuk tentang mengonfigurasi pemberitahuan peristiwa, lihat Notifikasi Peristiwa Amazon S3.

Contoh ini menunjukkan versi 2.2 dari struktur JSON notifikasi peristiwa. Amazon S3 menggunakan versi 2.1, 2.2, dan 2.3 dari struktur peristiwa ini. Amazon S3 menggunakan versi 2.2 untuk pemberitahuan peristiwa replikasi lintas wilayah. Ini menggunakan versi 2.3 untuk Siklus Hidup S3, S3 Intelligent-Tiering, objek ACL, penandaan objek, dan peristiwa penghapusan restorasi objek. Versi ini berisi informasi tambahan kustom untuk operasi ini. Versi 2.2 dan 2.3 sebaliknya kompatibel dengan versi 2.1, yang saat ini digunakan Amazon S3 untuk semua jenis pemberitahuan peristiwa lainnya.

{ "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":"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" } } } ] }

Perhatikan hal berikut tentang struktur pesan peristiwa:

  • Nilai kunci eventVersion mengandung versi besar dan kecil, dalam bentuk major.minor.

    Versi utama bertambah jika Amazon S3 membuat perubahan pada struktur peristiwa yang tidak kompatibel dengan versi sebelumnya. Ini termasuk menghapus bidang JSON yang sudah ada atau mengubah bagaimana isi bidang direpresentasikan (misalnya, format tanggal).

    Versi minor ditingkatkan jika Amazon S3 menambahkan bidang baru ke struktur peristiwa. Hal ini dapat terjadi jika informasi baru diberikan untuk beberapa atau semua peristiwa yang ada. Ini mungkin juga terjadi jika informasi baru disediakan hanya untuk jenis acara yang baru diperkenalkan. Agar tetap kompatibel dengan versi minor baru dari struktur acara, kami menyarankan agar aplikasi Anda mengabaikan bidang baru.

    Jika jenis acara baru diperkenalkan, tetapi struktur acara dinyatakan tidak dimodifikasi, versi acara tidak berubah.

    Untuk memastikan aplikasi Anda dapat menguraikan struktur peristiwa dengan benar, kami menyarankan Anda melakukan perbandingan yang setara dengan nomor versi besar. Untuk memastikan bahwa bidang yang diharapkan oleh aplikasi Anda ada, kami juga merekomendasikan melakukan perbandingan greater-than-or-equal -to pada versi minor.

  • Nilai eventName kunci mereferensikan daftar jenis pemberitahuan acara tetapi tidak berisi s3: awalan.

  • Nilai userIdentity kunci mereferensikan ID unik dari sumber daya AWS Identity and Access Management (IAM) (pengguna, peran, grup, dan sebagainya) yang menyebabkan peristiwa tersebut. Untuk definisi setiap awalan identifikasi IAM (misalnya, AIDA, AROA, AGPA) dan informasi tentang cara mendapatkan pengenal unik, lihat Pengidentifikasi unik di Panduan Pengguna IAM.

  • Nilai responseElements kunci berguna jika Anda ingin melacak permintaan dengan menindaklanjuti AWS Dukungan. Baik x-amz-request-id maupun x-amz-id-2 membantu Amazon S3 menelusuri permintaan individu. Nilai-nilai ini sama dengan nilai yang dikembalikan Amazon S3 sebagai respons terhadap permintaan yang memulai peristiwa. Oleh karena itu, Anda dapat menggunakan nilai-nilai ini untuk mencocokkan acara dengan permintaan.

  • Nilai s3 kunci memberikan informasi tentang bucket dan objek yang terlibat dalam acara tersebut. Nilai nama kunci objek dienkode URL. Misalnya, red flower.jpg menjadi red+flower.jpg. (Amazon S3 mengembalikan "application/x-www-form-urlencoded" sebagai jenis konten dalam respons.)

    Nilai ownerIdentity kunci sesuai dengan ID pelanggan ritel Amazon dari pemilik bucket. Nilai ID ini tidak lagi digunakan dan dipertahankan hanya untuk kompatibilitas mundur.

  • Nilai sequencer kunci menyediakan cara untuk menentukan urutan peristiwa. Pemberitahuan peristiwa tidak dijamin akan tiba dalam urutan yang sama dengan peristiwa yang terjadi. Namun, pemberitahuan dari peristiwa yang membuat objek (PUTpermintaan) dan menghapus objek berisi filesequencer. Anda dapat menggunakan nilai ini untuk menentukan urutan peristiwa untuk kunci objek yang diberikan.

    Jika Anda membandingkan string sequencer dari dua notifikasi peristiwa pada kunci objek yang sama, pemberitahuan peristiwa dengan nilai heksadesimal sequencer yang lebih besar adalah peristiwa yang terjadi kemudian. Jika Anda menggunakan notifikasi peristiwa untuk memelihara basis data atau indeks terpisah dari objek Amazon S3, kami sarankan Anda membandingkan dan menyimpan nilai sequencer saat Anda memproses setiap pemberitahuan peristiwa.

    Perhatikan hal berikut:

    • Anda tidak dapat menggunakan nilai sequencer kunci untuk menentukan urutan peristiwa pada kunci objek yang berbeda.

    • sequencerSenar bisa memiliki panjang yang berbeda. Jadi, untuk membandingkan nilai-nilai ini, pertama-tama kiri-pad nilai yang lebih pendek dengan nol, dan kemudian lakukan perbandingan leksikografis.

  • Nilai glacierEventData kunci hanya terlihat untuk s3:ObjectRestore:Completed acara.

  • Nilai restoreEventData kunci berisi atribut yang terkait dengan permintaan pemulihan Anda.

  • Nilai replicationEventData kunci hanya terlihat untuk peristiwa replikasi.

  • Nilai intelligentTieringEventData kunci hanya terlihat untuk acara S3 Intelligent-Tiering.

  • Nilai lifecycleEventData kunci hanya terlihat untuk peristiwa transisi Siklus Hidup S3.

Contoh pesan

Berikut ini adalah contoh dari pesan notifikasi peristiwa Amazon S3.

Olahpesan pengujian Amazon S3

Setelah mengonfigurasi notifikasi peristiwa di bucket, Amazon S3 mengirimkan pesan pengujian berikut.

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

s3:TestEventPesan menggunakan format yang berbeda dari notifikasi acara S3 biasa. Tidak seperti pemberitahuan acara lain yang menggunakan struktur Records array yang ditunjukkan sebelumnya, acara pengujian menggunakan format yang disederhanakan dengan bidang langsung. Saat menerapkan penanganan acara, pastikan kode Anda dapat membedakan antara dan menangani kedua format pesan dengan benar.

Contoh pesan saat objek dibuat menggunakan PUT permintaan

Berikut ini adalah contoh pesan yang dikirimkan Amazon S3 untuk menerbitkan peristiwa 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":"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" } } } ] }