View a markdown version of this page

Contoh: Browser-Based Unggah menggunakan HTTP POST (Menggunakan AWS Versi Tanda Tangan 4) - Amazon Simple Storage Service

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

Contoh: Browser-Based Unggah menggunakan HTTP POST (Menggunakan AWS Versi Tanda Tangan 4)

Bagian ini menunjukkan contoh penggunaan permintaan HTTP POST untuk mengunggah konten langsung ke Amazon S3.

Untuk informasi selengkapnya tentang Tanda Tangan Versi 4, lihat Proses Penandatanganan Tanda Tangan Versi 4.

Mengunggah File ke Amazon S3 Menggunakan HTTP POST

Contoh ini menyediakan contoh kebijakan POST dan formulir yang dapat Anda gunakan untuk mengunggah file. Topik menggunakan contoh kebijakan dan kredenSIAL fiktif untuk menunjukkan alur kerja dan tanda tangan dan hash kebijakan yang dihasilkan. Anda dapat menggunakan data ini sebagai rangkaian pengujian untuk memverifikasi kode perhitungan tanda tangan Anda.

Contoh menggunakan kredentif contoh berikut perhitungan tanda tangan. Anda dapat menggunakan kredenSIAL ini untuk memverifikasi kode perhitungan tanda tangan Anda. Namun, Anda kemudian harus menggantinya dengan kredenSIAL Anda sendiri saat mengirim permintaan ke AWS.

Parameter Nilai
AWSAccessKeyId AKIAIOSFODNN7EXAMPLE
AWSSecretAccessKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Contoh Kebijakan dan Formulir

Kebijakan POST berikut mendukung unggahan ke Amazon S3 dengan kondisi tertentu.

{ "expiration": "2015-12-30T12:00:00.000Z", "conditions": [ {"bucket": "sigv4examplebucket"}, ["starts-with", "$key", "user/user1/"], {"acl": "public-read"}, {"success_action_redirect": "http://sigv4examplebucket.s3.amazonaws.com/successful_upload.html"}, ["starts-with", "$Content-Type", "image/"], {"x-amz-meta-uuid": "14365123651274"}, {"x-amz-server-side-encryption": "AES256"}, ["starts-with", "$x-amz-meta-tag", ""], {"x-amz-credential": "AKIAIOSFODNN7EXAMPLE/20151229/us-east-1/s3/aws4_request"}, {"x-amz-algorithm": "AWS4-HMAC-SHA256"}, {"x-amz-date": "20151229T000000Z" } ] }

Kebijakan POST ini menetapkan ketentuan berikut pada permintaan:

  • Pengunggahan harus dilakukan sebelum tengah hari UTC pada tanggal 30 Desember 2015.

  • Konten hanya dapat diunggah kesigv4examplebucket. Bucket harus berada di wilayah yang Anda tentukan dalam cakupan kredensia (parameter x-amz-credential formulir), karena tanda tangan yang Anda berikan hanya valid dalam lingkup ini.

  • Anda dapat memberikan nama kunci apa pun yang dimulai denganuser/user1. Misalnya, user/user1/MyPhoto.jpg.

  • ACL harus disetel kepublic-read.

  • Jika unggahan berhasil, browser pengguna dialihkan kehttp://sigv4examplebucket.s3.amazonaws.com/successful_upload.html.

  • Objek harus berupa file gambar.

  • x-amz-meta-uuidTag harus disetel ke14365123651274.

  • x-amz-meta-tagBisa berisi nilai apa pun.

Berikut ini adalah Base64-encoded versi kebijakan POST ini. Anda menggunakan nilai ini sebagai perhitungan tanda tangan AndaStringToSign .

eyAiZXhwaXJhdGlvbiI6ICIyMDE1LTEyLTMwVDEyOjAwOjAwLjAwMFoiLA0KICAiY29uZGl0aW9ucyI6IFsNCiAgICB7ImJ1Y2tldCI6ICJzaWd2NGV4YW1wbGVidWNrZXQifSwNCiAgICBbInN0YXJ0cy13aXRoIiwgIiRrZXkiLCAidXNlci91c2VyMS8iXSwNCiAgICB7ImFjbCI6ICJwdWJsaWMtcmVhZCJ9LA0KICAgIHsic3VjY2Vzc19hY3Rpb25fcmVkaXJlY3QiOiAiaHR0cDovL3NpZ3Y0ZXhhbXBsZWJ1Y2tldC5zMy5hbWF6b25hd3MuY29tL3N1Y2Nlc3NmdWxfdXBsb2FkLmh0bWwifSwNCiAgICBbInN0YXJ0cy13aXRoIiwgIiRDb250ZW50LVR5cGUiLCAiaW1hZ2UvIl0sDQogICAgeyJ4LWFtei1tZXRhLXV1aWQiOiAiMTQzNjUxMjM2NTEyNzQifSwNCiAgICB7IngtYW16LXNlcnZlci1zaWRlLWVuY3J5cHRpb24iOiAiQUVTMjU2In0sDQogICAgWyJzdGFydHMtd2l0aCIsICIkeC1hbXotbWV0YS10YWciLCAiIl0sDQoNCiAgICB7IngtYW16LWNyZWRlbnRpYWwiOiAiQUtJQUlPU0ZPRE5ON0VYQU1QTEUvMjAxNTEyMjkvdXMtZWFzdC0xL3MzL2F3czRfcmVxdWVzdCJ9LA0KICAgIHsieC1hbXotYWxnb3JpdGhtIjogIkFXUzQtSE1BQy1TSEEyNTYifSwNCiAgICB7IngtYW16LWRhdGUiOiAiMjAxNTEyMjlUMDAwMDAwWiIgfQ0KICBdDQp9

Ketika Anda copy/paste menerapkan kebijakan sebelumnya, itu harus memiliki pengembalian kereta dan baris baru untuk hash yang Anda hitung agar sesuai dengan nilai ini (mis. Teks ASCII, dengan terminator baris CRLF).

Menggunakan contoh kredenSIAL untuk membuat tanda tangan, nilai tanda tangan adalah sebagai berikut (dalam perhitungan tanda tangan, tanggalnya sama dengan x-amz-date pada kebijakan (20151229):

8afdbf4008c03f22c2cd3cdb72e4afbb1f6a588f3255ac628749a66d7f09699e

Formulir contoh berikut menentukan kebijakan POST sebelumnya dan mendukung permintaan POST kesigv4examplebucket. Copy/paste konten dalam editor teks dan simpan sebagai exampleform.html. Anda kemudian dapat mengunggah file gambar ke bucket tertentu menggunakan exampleform.html. Permintaan Anda akan berhasil jika tanda tangan yang Anda berikan cocok dengan tanda tangan yang dihitung Amazon S3.

catatan

Anda harus memperbarui nama bucket, tanggal, kredensi, kebijakan, dan tanda tangan dengan nilai yang valid agar berhasil diunggah ke S3.

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <form action="http://sigv4examplebucket.s3.amazonaws.com/" method="post" enctype="multipart/form-data"> Key to upload: <input type="input" name="key" value="user/user1/${filename}" /><br /> <input type="hidden" name="acl" value="public-read" /> <input type="hidden" name="success_action_redirect" value="http://sigv4examplebucket.s3.amazonaws.com/successful_upload.html" /> Content-Type: <input type="input" name="Content-Type" value="image/jpeg" /><br /> <input type="hidden" name="x-amz-meta-uuid" value="14365123651274" /> <input type="hidden" name="x-amz-server-side-encryption" value="AES256" /> <input type="text" name="X-Amz-Credential" value="AKIAIOSFODNN7EXAMPLE/20151229/us-east-1/s3/aws4_request" /> <input type="text" name="X-Amz-Algorithm" value="AWS4-HMAC-SHA256" /> <input type="text" name="X-Amz-Date" value="20151229T000000Z" /> Tags for File: <input type="input" name="x-amz-meta-tag" value="" /><br /> <input type="hidden" name="Policy" value='<Base64-encoded policy string>' /> <input type="hidden" name="X-Amz-Signature" value="<signature-value>" /> File: <input type="file" name="file" /> <br /> <!-- The elements after this will be ignored --> <input type="submit" name="submit" value="Upload to Amazon S3" /> </form> </html>

Parameter posting tidak peka huruf besar/kecil. Misalnya, Anda dapat menentukan x-amz-signature atau X-Amz-Signature.