Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menegakkan penulisan bersyarat di ember Amazon S3
Dengan menggunakan kebijakan bucket Amazon S3, Anda dapat menerapkan penulisan bersyarat untuk unggahan objek di bucket tujuan umum.
Kebijakan bucket adalah kebijakan berbasis sumber daya yang dapat Anda gunakan untuk memberikan izin akses ke bucket Amazon S3 dan objek di dalamnya. Hanya pemilik bucket yang dapat mengaitkan kebijakan dengan bucket. Untuk informasi lebih lanjut tentang kebijakan bucket, lihat Kebijakan bucket untuk Amazon S3.
Anda dapat menggunakan tombol kondisi s3:if-match
atau s3:if-none-match
sebagai Condition
elemen opsional atau Condition
blok untuk menentukan kapan kebijakan berlaku. Untuk unggahan multibagian, Anda harus menentukan kunci s3:ObjectCreationOperation
kondisi untuk mengecualikan,, dan UploadPartCopy
operasi CreateMultipartUpload
UploadPart
, karena ini APIs tidak menerima header bersyarat. Untuk informasi selengkapnya tentang penggunaan kondisi dalam kebijakan bucket, lihatContoh kebijakan bucket menggunakan tombol kondisi.
catatan
Jika Anda menggunakan kebijakan bucket untuk menerapkan penulisan bersyarat, Anda tidak dapat melakukan operasi penyalinan ke bucket atau awalan yang ditentukan dalam kebijakan bucket Anda. CopyObject
permintaan tanpa header If-None-Match
atau If-Match
HTTP gagal dengan 403 Access Denied
kesalahan. CopyObject
permintaan yang dibuat dengan header HTTP tersebut gagal dengan 501 Not
Implemented
respons.
Contoh berikut menunjukkan cara menggunakan kondisi dalam kebijakan bucket untuk memaksa klien menggunakan header If-None-Match
atau If-Match
HTTP.
Topik
Contoh 1: Hanya izinkan unggahan objek menggunakan PutObject
dan CompleteMultipartUpload
permintaan yang menyertakan header if-none-match
Kebijakan ini memungkinkan akun 111122223333, pengguna Alice, untuk menulis ke amzn-s3-demo-bucket1
bucket jika permintaan menyertakan if-none-match
header, memastikan bahwa kunci objek belum ada di bucket. Semua PutObject
dan CompleteMultipartUpload
permintaan ke bucket yang ditentukan harus menyertakan if-none-match
header agar berhasil. Dengan menggunakan header ini, pelanggan dapat menulis ke bucket ini hanya jika kunci objek tidak ada di bucket.
catatan
Kebijakan ini juga menetapkan kunci s3:ObjectCreationOperation
kondisi yang memungkinkan pengunggahan multibagian menggunakanCreateMultipartUpload
,UploadPart
, dan. UploadPartCopy
APIs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowConditionalPut", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket1
/*", "Condition": { "Null": { "s3:if-none-match": "false" } } }, { "Sid": "AllowConditionalPutwithMPUs", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*", "Condition": { "Bool": { "s3:ObjectCreationOperation": "false" } } } ] }
Contoh 2: Hanya izinkan unggahan objek menggunakan PutObject
dan CompleteMultipartUpload
permintaan yang menyertakan header if-match
Kebijakan ini memungkinkan akun 111122223333, pengguna Alice untuk menulis amzn-s3-demo-bucket1
hanya jika permintaan menyertakan header. if-match
Header ini membandingkan ETag nilai objek di S3 dengan yang Anda berikan selama operasi. WRITE
Jika ETag nilainya tidak cocok, operasi akan gagal. Semua PutObject
dan CompleteMultipartUpload
permintaan ke bucket yang ditentukan harus menyertakan if-match
header agar berhasil.
catatan
Kebijakan ini juga menetapkan kunci s3:ObjectCreationOperation
kondisi yang memungkinkan pengunggahan multibagian menggunakanCreateMultipartUpload
,UploadPart
, dan. UploadPartCopy
APIs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutObject", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket1
/*", }, { "Sid": "BlockNonConditionalObjectCreation", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*", "Condition": { "Null": { "s3:if-match": "true" }, "Bool": { "s3:ObjectCreationOperation": "true" } } }, { "Sid": "AllowGetObjectBecauseConditionalPutIfMatchETag", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*" } ] }
Contoh 3: Hanya izinkan permintaan unggah objek yang menyertakan if-none-match
atau if-match
header
Kebijakan ini memungkinkan akun 111122223333, pengguna Alice untuk menulis amzn-s3-demo-bucket1
jika permintaan menyertakan atau header. if-none-match
if-match
Hal ini memungkinkan Alice untuk mengunggah objek jika nama kunci tidak ada di bucket, atau jika nama kunci memang ada, Alice dapat menimpa objek jika objek ETag cocok dengan yang ETag disediakan dalam permintaan. PUT
catatan
Kebijakan ini juga menetapkan kunci s3:ObjectCreationOperation
kondisi yang memungkinkan pengunggahan multibagian menggunakanCreateMultipartUpload
,UploadPart
, dan. UploadPartCopy
APIs
{ "Version": "2012-10-17", "Statement": [ { "Sid": " AllowConditionalPutifAbsent", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket1
/*", "Condition": { "Null": { "s3:if-none-match": "false" } } }, { "Sid": "AllowConditionalPutIfMatchEtag", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*", "Condition": { "Null": { "s3:if-match": "false" } } }, { "Sid": "AllowConditionalObjectCreation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*", "Condition": { "Bool": { "s3:ObjectCreationOperation": "false" } } }, { "Sid": " AllowGetObjectBecauseConditionalPutIfMatchETag", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*" } ] }