View a markdown version of this page

Kebijakan POST - Amazon Simple Storage Service

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

Kebijakan POST

Kebijakan yang diperlukan untuk membuat permintaan yang diautentikasi menggunakan HTTP POST adalah dokumen yang UTF-8 dikodekan base64 yang ditulis dalam JavaScript Object Notation (JSON) yang menentukan kondisi yang harus dipenuhi permintaan. Bergantung pada cara Anda mendesain dokumen kebijakan, Anda dapat mengontrol perincian akses per unggahan, per pengguna, untuk semua unggahan, atau sesuai dengan desain lain yang memenuhi kebutuhan Anda.

Bagian ini menjelaskan kebijakan POST. Misalnya perhitungan tanda tangan menggunakan kebijakan POST, lihatContoh: Browser-Based Unggah menggunakan HTTP POST (Menggunakan AWS Versi Tanda Tangan 4).

catatan

Meskipun dokumen kebijakan bersifat opsional, kami sangat menyarankan Anda menggunakannya untuk mengontrol apa yang diizinkan dalam permintaan. Jika Anda membuat bucket dapat ditulis secara publik, Anda tidak memiliki kendali sama sekali atas pengguna mana yang dapat menulis ke bucket Anda.

Berikut ini adalah contoh dokumen kebijakan POST.

{ "expiration": "2007-12-01T12:00:00.000Z", "conditions": [ {"acl": "public-read" }, {"bucket": "johnsmith" }, ["starts-with", "$key", "user/eric/"], ] }

Kebijakan POST selalu berisi conditions elemen expiration dan. Kebijakan contoh menggunakan dua jenis pencocokan kondisi (pencocokan tepat dan mulai dengan pencocokan). Bagian berikut menjelaskan elemen-elemen ini.

Kedaluwarsa

expirationElemen menentukan tanggal kedaluwarsa dan waktu kebijakan POST dalam format tanggal ISO8601 GMT. Misalnya, 2013-08-01T12:00:00.000Z menentukan bahwa kebijakan POST tidak valid setelah tengah malam GMT pada 1 Agustus 2013.

Pencocokan Kondisi

Berikut adalah tabel yang menjelaskan jenis pencocokan kondisi yang dapat Anda gunakan untuk menentukan kondisi kebijakan POST (dijelaskan di bagian selanjutnya). Meskipun Anda harus menentukan setidaknya satu kondisi untuk setiap bidang formulir yang Anda tentukan dalam formulir, Anda dapat membuat kriteria pencocokan yang lebih kompleks dengan menentukan beberapa kondisi untuk bidang formulir.

Jenis Pencocokan Kondisi Deskripsi

Kecocokan yang Tepat

Nilai bidang formulir harus sesuai dengan nilai yang ditentukan. Contoh ini menunjukkan bahwa ACL harus diatur ke baca publik:

{"acl": "public-read" }

Contoh ini adalah cara alternatif untuk menunjukkan bahwa ACL harus diatur ke baca publik:

[ "eq", "$acl", "public-read" ]

Dimulai Dengan

Nilai harus dimulai dengan nilai yang ditentukan. Contoh ini menunjukkan bahwa kunci objek harus dimulai dengan user/user1:

["starts-with", "$key", "user/user1/"]

Mencoco Content-Types kkan dalam Comma-Separated Daftar

Content-Types nilai untuk starts-with kondisi yang menyertakan koma ditafsirkan sebagai daftar. Setiap nilai dalam daftar harus memenuhi syarat agar seluruh kondisi dapat dilewati. Misalnya, dengan kondisi berikut:

["starts-with", "$Content-Type", "image/"]

Nilai berikut akan melewati kondisi:

"image/jpg,image/png,image/gif"

Nilai berikut tidak akan melewati kondisi:

["image/jpg,text/plain"]
catatan

Elemen data Content-Type selain diperlakukan sebagai string, terlepas dari keberadaan koma.

Mencocokkan Konten Apa Pun

Untuk mengonfigurasi kebijakan POST untuk mengizinkan konten apa pun dalam bidang formulir, gunakan starts-with dengan nilai kosong (“”). Contoh ini memungkinkan nilai apa pun untuksuccess_action_redirect:

["starts-with", "$success_action_redirect", ""]

Menentukan Rentang

Untuk bidang formulir yang menerima rentang, pisahkan batas atas dan bawah dengan koma. Contoh ini memungkinkan ukuran file dari 1 hingga 10 MiB:

["content-length-range", 1048576, 10485760]

Kondisi spesifik yang didukung dalam kebijakan POST dijelaskan diKetentuan.

Ketentuan

Kebijakan conditions dalam POST adalah array objek, yang masing-masing digunakan untuk memvalidasi permintaan. Anda dapat menggunakan kondisi ini untuk membatasi apa yang diizinkan dalam permintaan. Misalnya, kondisi kebijakan sebelumnya memerlukan hal berikut:

  • Permintaan harus menentukan nama johnsmith bucket.

  • Nama kunci objek harus memiliki user/eric awalan.

  • Objek ACL harus disetel kepublic-read.

Setiap bidang formulir yang Anda tentukan dalam formulir (kecuali x-amz-signaturefile,policy,, dan nama bidang yang memiliki x-ignore- awalan) harus muncul dalam daftar kondisi.

catatan

Semua variabel dalam formulir diperluas sebelum memvalidasi kebijakan POST. Oleh karena itu, semua pencocokan kondisi harus bertentangan dengan bidang formulir yang diperluas. Misalkan Anda ingin membatasi nama kunci objek Anda ke awalan tertentu (user/user1). Dalam hal ini, Anda mengatur bidang formulir kunci keuser/user1/${filename}. Kebijakan POST Anda harus [ "starts-with", "$key", "user/user1/" ] (jangan masuk[ "starts-with", "$key", "user/user1/${filename}" ]). Untuk informasi selengkapnya, lihat Pencocokan Kondisi.

Kondisi dokumen kebijakan dijelaskan dalam tabel berikut.

Nama Elemen Deskripsi
acl

Menentukan nilai ACL yang harus digunakan dalam pengiriman formulir.

Kondisi ini mendukung pencocokan tepat dan jenis kecocokan starts-with kondisi yang dibahas di bagian berikut.

bucket

Menentukan nama bucket yang dapat diterima.

Kondisi ini mendukung jenis kecocokan kondisi pencocokan yang tepat.

content-length-range

Ukuran minimum dan maksimum yang diijinkan untuk konten yang diunggah.

Kondisi ini mendukung tipe kec content-length-range ocokan kondisi.

Cache-Control

Content-Type

Content-Disposition

Content-Encoding

Expires

REST-specific tajuk. Untuk informasi selengkapnya, lihat Objek POST.

Kondisi ini mendukung pencocokan yang tepat dan jenis kecocokan starts-with kondisi.

key

Nama kunci yang dapat diterima atau awalan dari objek yang diunggah.

Kondisi ini mendukung pencocokan yang tepat dan jenis kecocokan starts-with kondisi.

success_action_redirect

redirect

URL yang akan diarahkan klien setelah unggahan berhasil.

Kondisi ini mendukung pencocokan yang tepat dan jenis kecocokan starts-with kondisi.

success_action_status

Kode status dikembalikan ke klien setelah berhasil diunggah jika tidak success_action_redirect ditentukan.

Kondisi ini mendukung pencocokan yang tepat.

x-amz-algorithm

Algoritma penandatanganan yang harus digunakan selama perhitungan tanda tangan. Untuk AWS Signature Version 4, nilainya adalahAWS4-HMAC-SHA256.

Kondisi ini mendukung pencocokan yang tepat.

x-amz-credential

KredenSIAL yang Anda gunakan untuk menghitung tanda tangan. Ini menyediakan ID kunci akses dan informasi ruang lingkup yang mengidentifikasi wilayah dan layanan yang tanda tangannya valid. Ini harus menjadi cakupan yang sama yang Anda gunakan dalam menghitung kunci penandatanganan untuk perhitungan tanda tangan.

Ini adalah string dari bentuk berikut:

<your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request

Contoh:

AKIAIOSFODNN7EXAMPLE/20130728/us-east-1/s3/aws4_request

Untuk Amazon S3, string aws-service adalah. s3 Untuk daftar aws-region string Amazon S3, lihat Wil ayah dan Titik Akhir di Referensi Umum AWS. Ini diperlukan jika dokumen kebijakan POST disertakan dengan permintaan.

Kondisi ini mendukung pencocokan yang tepat.

x-amz-date

Nilai tanggal yang ditentukan dalam string berformat ISO8601. Misalnya, 20130728T000000Z. Tanggal harus sama dengan yang Anda gunakan saat membuat kunci penandatanganan untuk perhitungan tanda tangan.

Ini diperlukan jika dokumen kebijakan POST disertakan dengan permintaan.

Kondisi ini mendukung pencocokan yang tepat.

x-amz-security-token

Token DevPay keamanan Amazon.

Setiap permintaan yang menggunakan Amazon DevPay memerlukan dua bidang x-amz-security-token formulir: satu untuk token produk dan satu untuk token pengguna. Akibatnya, nilai harus dipisahkan dengan koma. Misalnya, jika token pengguna adalah eW91dHViZQ== dan token produk adalahb0hnNVNKWVJIQTA=, Anda menetapkan entri kebijakan POST ke:{ "x-amz-security-token": "eW91dHViZQ==,b0hnNVNKWVJIQTA=" }.

Untuk informasi selengkapnya tentang Amazon DevPay, lihat Menggunakan DevPay di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

x-amz-meta-*

User-specified metadata.

Kondisi ini mendukung pencocokan yang tepat dan jenis kecocokan starts-with kondisi.

x-amz-*

Lihat Objek POST (Objek POSTuntuk x-amz-* header lainnya.

Kondisi ini mendukung pencocokan yang tepat.

catatan

Jika toolkit menambahkan lebih banyak bidang formulir (misalnya, Flash menambahkanfilename), Anda harus menambahkannya ke dokumen kebijakan POST. Jika Anda dapat mengontrol fungsi ini, tambahkan awalan x-ignore- pada bidang tersebut sehingga Amazon S3 mengabaikan fitur tersebut dan tidak akan memengaruhi versi fitur ini di masa mendatang.

Karakter Melarikan Diri

Karakter yang harus dihilangkan dalam dokumen kebijakan POST dijelaskan dalam tabel berikut.

Urutan Melarikan Diri Deskripsi

\\

Garis miring terbalik

\$

Simbol dolar

\b

Spasi Mundur

\f

Umpan formulir

\n

Baris baru

\r

Kembali ke awal baris

\t

Tab Horizontal

\v

Tab vertikal

\ u xxxx

Semua karakter Unicode

Sekarang setelah Anda mengenal formulir dan kebijakan, dan memahami cara kerja penandatanganan, Anda dapat mencoba contoh unggahan POST. Anda perlu menulis kode untuk menghitung tanda tangan. Contoh ini menyediakan formulir sampel, dan kebijakan POST yang dapat Anda gunakan untuk menguji perhitungan tanda tangan Anda. Untuk informasi selengkapnya, lihat Contoh: Browser-Based Unggah menggunakan HTTP POST (Menggunakan AWS Versi Tanda Tangan 4).