Menegakkan penulisan bersyarat di ember Amazon S3 - Amazon Simple Storage Service

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 CreateMultipartUploadUploadPart, 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. CopyObjectpermintaan tanpa header If-None-Match atau If-Match HTTP gagal dengan 403 Access Denied kesalahan. CopyObjectpermintaan 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.

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/*" } ] }