

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
<a name="conditional-writes-enforce"></a>

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](bucket-policies.md).

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, lihat[Contoh kebijakan bucket menggunakan tombol kondisi](amazon-s3-policy-keys.md).

**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.

**Topics**
+ [Contoh 1: Hanya izinkan unggahan objek menggunakan `PutObject` dan `CompleteMultipartUpload` permintaan yang menyertakan header `if-none-match`](#conditional-writes-enforce-ex1)
+ [Contoh 2: Hanya izinkan unggahan objek menggunakan `PutObject` dan `CompleteMultipartUpload` permintaan yang menyertakan header `if-match`](#conditional-writes-enforce-ex2)
+ [Contoh 3: Hanya izinkan permintaan unggah objek yang menyertakan `if-none-match` atau `if-match` header](#conditional-writes-enforce-ex3)

## Contoh 1: Hanya izinkan unggahan objek menggunakan `PutObject` dan `CompleteMultipartUpload` permintaan yang menyertakan header `if-none-match`
<a name="conditional-writes-enforce-ex1"></a>

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 menggunakan`CreateMultipartUpload`,`UploadPart`, dan. `UploadPartCopy` APIs

------
#### [ JSON ]

****  

```
{
    "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`
<a name="conditional-writes-enforce-ex2"></a>

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 menggunakan`CreateMultipartUpload`,`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
<a name="conditional-writes-enforce-ex3"></a>

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 menggunakan`CreateMultipartUpload`,`UploadPart`, dan. `UploadPartCopy` APIs

------
#### [ JSON ]

****  

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

------