View a markdown version of this page

Lampiran: Tang SelectObjectContent gapan - Amazon Simple Storage Service

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

Lampiran: Tang SelectObjectContent gapan

Deskripsi

Operasi Amazon S3 Select menyaring konten objek Amazon S3 berdasarkan pernyataan bahasa kueri terstruktur (SQL) sederhana. Mengingat ukuran respons operasi ini tidak diketahui, Amazon S3 Select mengalirkan respons sebagai serangkaian pesan dan menyer Transfer-Encoding takan header dengan chunked nilainya dalam respons.

Untuk informasi selengkapnya tentang Amazon S3 Select, lihat Memilih Konten dari Objek di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Untuk informasi selengkapnya tentang menggunakan SQL dengan Amazon S3 Select, lihat Refer ensi SQL untuk Amazon S3 Select dan Amazon Glacier Select di Panduan Pengguna Amazon Simple Storage Service.

Respons

Operasi Select Amazon S3 yang berhasil mengembalikan kode 200 OK status.

Header Respons

Implementasi operasi ini hanya menggunakan header respons yang umum untuk sebagian besar respons. Untuk informasi selengkapnya, lihat Header Respons Umum.

Isi Respons

Karena ukuran respons Amazon S3 Select tidak diketahui, Amazon S3 mengalirkan respons sebagai serangkaian pesan dan menyer Transfer-Encoding takan header dengan chunked nilainya dalam respons. Contoh berikut menunjukkan format respons di tingkat atas:

<Message 1> <Message 2> <Message 3> ...... <Message n>

Setiap pesan terdiri dari dua bagian: pendahuluan dan data. Bagian pendahuluan terdiri dari 1) panjang byte total pesan, dan 2) panjang byte gabungan dari semua header. Bagian data terdiri dari 1) header, dan 2) muatan.

Setiap bagian diakhiri dengan checksum integer big-endian 4-byte (CRC). Amazon S3 Select menggunakan CRC32 (sering disebut sebagai GZIP CRC32) untuk menghitung kedua CRC. Untuk informasi selengkapnya tentang CRC32, lihat spesifikasi format file GZIP versi 4.3.

Total overhead pesan termasuk pendahuluan dan kedua checksum adalah 16 byte.

catatan

Semua integer nilai dalam pesan berada dalam urutan byte jaringan, atau urutan big-endian.

Diagram berikut menunjukkan komponen yang membentuk pesan dan header. Perhatikan bahwa ada beberapa header per pesan.

Contoh struktur pesan yang menunjukkan panjang byte total, panjang byte header, crc prelude, header, payload, dan pesan crc.
catatan

Untuk Amazon S3 Select, tipe nilai header selalu 7 (type=string). Untuk tipe ini, nilai header terdiri dari dua komponen, panjang bilangan bulat big-endian 2-byte, dan UTF-8 string yang memiliki panjang byte tersebut. Diagram berikut menunjukkan komponen yang membentuk header Amazon S3 Select.

Struktur header menunjukkan nama header byte panjang, string nama header, jenis nilai header, panjang byte nilai dan string nilai.

Perhitungan panjang byte muatan (dua perhitungan ini setara):

  • payload_length = total_length - header_length - SizeOf (total_length) - SizeOf (header_length) - SizeOf (prelude_crc) - SizeOf (pesan_crc)

  • payload_length = total_length - header_length - 16

Setiap pesan berisi komponen-komponen berikut:

  • Pendahul uan: Selalu tetap ukuran 8 byte (dua bidang masing-masing 4 byte):

    • Empat byte pertama: Total panjang byte: panjang byte Big-endian integer dari seluruh pesan (termasuk bidang panjang total 4-byte itu sendiri).

    • Empat byte kedua: Header byte-length: Big-endian integer byte-length dari bagian header pesan (tidak termasuk bidang panjang header itu sendiri).

  • Prelude CRC: 4-byte big-endian integer checksum (CRC) untuk bagian awal pesan (tidak termasuk CRC itu sendiri). Pendahuluan memiliki CRC terpisah dari pesan CRC (lihat di bawah), untuk memastikan bahwa informasi panjang byte yang rusak dapat dideteksi segera, tanpa menyebabkan perilaku buffering patologis.

  • Header: Satu set metadata yang membuat anotasi pesan, seperti jenis pesan, format payload, dan sebagainya. Pesan dapat memiliki beberapa header, sehingga bagian pesan ini dapat memiliki panjang byte yang berbeda tergantung pada jenis pesan. Header adalah pasangan kunci-nilai, di mana kunci dan nilai adalah string. UTF-8 Header dapat muncul dalam urutan apa pun dalam bagian header pesan, dan setiap jenis header yang diberikan hanya dapat muncul sekali.

    Untuk Amazon S3 Select, berikut adalah daftar nama header dan kumpulan nilai yang valid tergantung pada jenis pesan.

    • MessageType Header:

      • HeaderName => “:jenis pesan”

      • Val HeaderValues id => “kesalahan”, “acara”

    • EventType Header:

      • HeaderName => “:tipe-acara”

      • Val HeaderValues id => “Catatan”, “Konten”, “Kemajuan”, “Statistik”, “Akhir”

    • ErrorCode Header:

    • ErrorMessage Header:

      • HeaderName => “:pesan kesalahan”

      • Val HeaderValues id => Pesan kesalahan yang dikembalikan oleh layanan, untuk membantu mendiagnosis kesalahan tingkat permintaan.

  • Payload: Bisa apa saja.

  • Pesan CRC: 4-byte big-endian integer checksum (CRC) dari awal pesan hingga awal checksum (yaitu, semua yang ada di pesan tidak termasuk pesan CRC itu sendiri).

Setiap header berisi komponen-komponen berikut. Mungkin ada beberapa header per pesan.

  • Nama Header Byte-Length: Byte-length dari nama header.

  • Nama Header: Nama header, menunjukkan jenis header. Nilai yang valid: “:message-type” “:event-type” “:error-code” “:error-message”

  • Jenis Nilai Header: Enum menunjukkan jenis nilai header. Untuk Amazon S3 Select, ini selalu 7.

  • Nilai String Byte-Length: (Untuk Amazon S3 Select) Byte-length dari string nilai header.

  • String Nilai Header: (Untuk Amazon S3 Pilih) Nilai string header. Nilai yang valid untuk bidang ini bervariasi berdasarkan jenis header. Lihat bagian di bawah ini untuk nilai yang valid untuk setiap jenis header dan jenis pesan.

Untuk Amazon S3 Select, tanggapan dapat berupa pesan dari jenis berikut:

  • Pesan rek aman: Dapat berisi satu catatan, catatan paruh, atau beberapa catatan. Bergantung pada ukuran hasilnya, respons dapat berisi satu atau lebih pesan ini.

  • Pesan lanjutan: Amazon S3 secara berkala mengirimkan pesan ini untuk menjaga koneksi TCP tetap terbuka. Pesan-pesan ini muncul dalam tanggapan secara acak. Klien harus mendeteksi jenis pesan dan memproses yang sesuai.

  • Pesan kemajuan: Amazon S3 secara berkala mengirimkan pesan ini, jika diminta. Ini berisi informasi tentang kemajuan kueri yang telah dimulai tetapi belum selesai.

  • Pesan statistik: Amazon S3 mengirimkan pesan ini di akhir permintaan. Ini berisi statistik tentang kueri.

  • Pesan akhir: Menunjukkan bahwa permintaan selesai, dan tidak ada lagi pesan yang akan dikirim. Anda tidak boleh berasumsi bahwa permintaan selesai sampai klien menerima End pesan.

  • RequestLevelError pesan: Amazon S3 mengirimkan pesan ini jika permintaan gagal karena alasan apa pun. Ini berisi kode kesalahan dan pesan kesalahan untuk kegagalan. Jika Amazon S3 mengirim RequestLevelError pesan, itu tidak mengirim End pesan.

Bagian berikut menjelaskan struktur setiap jenis pesan secara lebih rinci.

Untuk contoh kode dan pengujian unit yang menggunakan protokol ini, lihat AWS C Event Stream di GitHub situs web.

Rekaman Pesan

Spesifikasi header

Pesan rekaman berisi tiga header, sebagai berikut:

Contoh struktur pesan termasuk header untuk jenis rekaman ini.
Spesifikasi muatan

Payload pesan rekaman dapat berisi satu catatan, catatan parsional, atau beberapa catatan.

Pesan Kelanjutan

Spesifikasi header

Pesan lanjutan berisi dua header, sebagai berikut:

Contoh struktur pesan termasuk header untuk jenis rekaman ini.
Spesifikasi muatan

Pesan lanjutan tidak memiliki muatan.

Pesan Kemajuan

Spesifikasi header

Pesan kemajuan berisi tiga header, sebagai berikut:

Contoh struktur pesan termasuk header untuk jenis rekaman ini.
Spesifikasi muatan

Payload pesan kemajuan adalah dokumen XML yang berisi informasi tentang kemajuan permintaan.

  • BytesScanned=> Jumlah byte yang telah diproses sebelum dikompresi (jika file dikompresi).

  • BytesProcessed=> Jumlah byte yang telah diproses setelah tidak dikompresi (jika file dikompresi).

  • BytesReturned=> Jumlah byte data muatan rekaman saat ini yang dikembalikan oleh Amazon S3.

Untuk file yang tidak terkompresi, BytesScanned dan BytesProcessed sama.

Contoh:

<?xml version="1.0" encoding="UTF-8"?> <Progress> <BytesScanned>512</BytesScanned> <BytesProcessed>1024</BytesProcessed> <BytesReturned>1024</BytesReturned> </Progress>

Pesan Statistik

Spesifikasi header

Pesan statistik berisi tiga header, sebagai berikut:

Contoh struktur pesan termasuk header untuk jenis rekaman ini.
Spesifikasi muatan

Payload pesan statistik adalah dokumen XML yang berisi informasi tentang statistik permintaan saat pemrosesan selesai.

  • BytesScanned=> Jumlah byte yang telah diproses sebelum dikompresi (jika file dikompresi).

  • BytesProcessed=> Jumlah byte yang telah diproses setelah tidak dikompresi (jika file dikompresi).

  • BytesReturned=> Jumlah total byte data muatan rekaman yang dikembalikan oleh Amazon S3.

Untuk file yang tidak terkompresi, BytesScanned dan BytesProcessed sama.

Contoh:

<?xml version="1.0" encoding="UTF-8"?> <Stats> <BytesScanned>512</BytesScanned> <BytesProcessed>1024</BytesProcessed> <BytesReturned>1024</BytesReturned> </Stats>

Pesan Akhir

Spesifikasi header

Pesan akhir berisi dua header, sebagai berikut:

Contoh struktur pesan termasuk header untuk jenis rekaman ini.
Spesifikasi muatan

Pesan akhir tidak memiliki muatan.

Pesan Kesalahan Tingkat Permintaan

Spesifikasi header

Request-level pesan kesalahan berisi tiga header, sebagai berikut:

Contoh struktur pesan termasuk header untuk jenis rekaman ini.

Untuk daftar kemungkinan kode kesalahan dan pesan kesalahan, lihatDaftar Kode Kesalahan Konten Objek SELECT.

Spesifikasi muatan

Request-level pesan kesalahan tidak memiliki payload.

Sumber Daya Terkait