

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

# Tambahkan prasyarat ke operasi S3 dengan permintaan bersyarat
<a name="conditional-requests"></a>

Anda dapat menggunakan permintaan bersyarat untuk menambahkan prasyarat ke operasi S3 Anda. Untuk menggunakan permintaan bersyarat, Anda menambahkan header tambahan ke operasi Amazon S3 API Anda. Header ini menentukan kondisi yang, jika tidak terpenuhi, akan mengakibatkan operasi S3 gagal.

Pembacaan bersyarat didukung untuk`GET`,`HEAD`, dan `COPY` permintaan. Anda dapat menambahkan prasyarat untuk mengembalikan atau menyalin objek berdasarkan tag Entity (ETag) atau tanggal modifikasi terakhir. Ini dapat membatasi operasi S3 ke objek yang diperbarui sejak tanggal yang ditentukan. Anda juga dapat membatasi operasi S3 ke yang spesifik ETag. Ini dapat memastikan Anda hanya mengembalikan atau menyalin versi objek tertentu. Untuk informasi selengkapnya tentang metadata objek, lihat [Bekerja dengan metadata objek](UsingMetadata.md).

Penulisan bersyarat dapat memastikan tidak ada objek yang ada dengan nama kunci yang sama di bucket Anda selama `PUT` operasi. Ini mencegah penimpaan objek yang ada dengan nama kunci yang identik. Demikian pula, Anda dapat menggunakan penulisan bersyarat untuk memeriksa apakah objek tidak berubah sebelum memperbarui objek. ETag Ini mencegah penimpaan yang tidak disengaja pada suatu objek tanpa mengetahui keadaan kontennya. Anda dapat menggunakan penulisan bersyarat untuk [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html), [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html), atau [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)permintaan. Untuk informasi selengkapnya tentang nama kunci, lihat [Menamai objek Amazon S3](object-keys.md).

Penghapusan bersyarat mengevaluasi apakah objek Anda ada atau tidak berubah sebelum menghapusnya. Anda dapat melakukan penghapusan bersyarat menggunakan `DeleteObject` atau `DeleteObjects` APIs dalam ember tujuan umum dan direktori. Untuk informasi selengkapnya tentang penghapusan bersyarat, lihat. [Cara melakukan penghapusan bersyarat](conditional-deletes.md) Tidak ada biaya tambahan untuk pembacaan bersyarat, penulisan bersyarat, atau penghapusan bersyarat. Anda hanya dikenakan tarif yang ada untuk permintaan yang berlaku, termasuk untuk permintaan yang gagal. Untuk informasi tentang fitur dan harga Amazon S3, lihat [Harga Amazon S3](https://aws.amazon.com/s3/pricing).

**Topics**
+ [

# Cara mengambil atau menyalin objek berdasarkan metadata dengan pembacaan bersyarat
](conditional-reads.md)
+ [

# Bagaimana mencegah penimpaan objek dengan penulisan bersyarat
](conditional-writes.md)
+ [

# Cara melakukan penghapusan bersyarat
](conditional-deletes.md)

# Cara mengambil atau menyalin objek berdasarkan metadata dengan pembacaan bersyarat
<a name="conditional-reads"></a>

Dengan pembacaan bersyarat, Anda dapat menambahkan header tambahan ke permintaan baca Anda untuk menambahkan prasyarat ke operasi S3 Anda. Jika prasyarat ini tidak terpenuhi, permintaan baca akan gagal.

Anda dapat menggunakan pembacaan bersyarat pada`GET`,`HEAD`, atau `COPY` permintaan untuk hanya mengembalikan objek berdasarkan metadatanya.

Saat Anda mengunggah objek, Amazon S3 membuat metadata yang dikontrol sistem yang hanya dapat dimodifikasi oleh S3. Entity tags (ETags) dan Last-Modified adalah contoh metadata yang dikendalikan sistem. Objek ETag adalah string yang mewakili versi tertentu dari suatu objek. Tanggal Modifikasi Terakhir adalah metadata yang mewakili tanggal pembuatan objek atau tanggal modifikasi terakhir, mana yang terbaru.

Dengan pembacaan bersyarat, Anda dapat mengembalikan objek berdasarkan tanggal objek ETag atau Terakhir Modifikasi. Anda dapat menentukan ETag nilai dengan permintaan Anda dan mengembalikan objek hanya jika ETag nilainya cocok. Ini dapat memastikan Anda hanya mengembalikan atau menyalin versi tertentu dari suatu objek. Anda dapat menentukan nilai Modifikasi Terakhir dengan permintaan baca Anda dan mengembalikan objek hanya jika objek tersebut telah dimodifikasi sejak tanggal yang Anda berikan. 

## Didukung APIs
<a name="conditional-read-apis"></a>

 APIs Dukungan S3 berikut menggunakan pembacaan bersyarat:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)

Anda dapat menggunakan header berikut untuk mengembalikan objek yang bergantung pada tag entitas (ETag) atau tanggal modifikasi terakhir. Untuk informasi selengkapnya tentang metadata objek seperti ETags dan Last-Modified, lihat. [Metadata objek yang ditentukan sistem](UsingMetadata.md#SysMetadata)

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)**  

+ `If-Match`— Kembalikan objek hanya jika ETag cocok dengan yang disediakan. 
+ `If-Modified-Since`— Kembalikan objek hanya jika telah dimodifikasi sejak waktu yang ditentukan.
+ `If-None-Match`— Kembalikan objek hanya jika ETag tidak cocok dengan yang disediakan.
+ `If-Unmodified-Since`— Kembalikan objek hanya jika belum dimodifikasi sejak waktu yang ditentukan.

Untuk informasi selengkapnya tentang header ini, error yang ditampilkan, dan urutan S3 menangani beberapa header bersyarat dalam satu permintaan, lihat di Referensi API Amazon Simple Storage Service. [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)**  

+ `If-Match`— Kembalikan objek hanya jika ETag cocok dengan yang disediakan. 
+ `If-Modified-Since`— Kembalikan objek hanya jika telah dimodifikasi sejak waktu yang ditentukan.
+ `If-None-Match`— Kembalikan objek hanya jika ETag tidak cocok dengan yang disediakan.
+ `If-Unmodified-Since`— Kembalikan objek hanya jika belum dimodifikasi sejak waktu yang ditentukan.

Untuk informasi selengkapnya tentang header ini, error yang ditampilkan, dan urutan S3 menangani beberapa header bersyarat dalam satu permintaan, lihat di Referensi API Amazon Simple Storage Service. [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)**  

+ `x-amz-copy-source-if-match`— Menyalin objek sumber hanya jika ETag cocok dengan yang disediakan. 
+ `x-amz-copy-source-if-modified-since`— Menyalin objek sumber hanya jika telah dimodifikasi sejak waktu yang ditentukan.
+ `x-amz-copy-source-if-none-match`— Menyalin objek sumber hanya jika ETag tidak cocok dengan yang disediakan.
+ `x-amz-copy-source-if-unmodified-since`— Menyalin objek sumber hanya jika belum dimodifikasi sejak waktu yang ditentukan.
+ `If-Match`— Menyalin objek hanya jika ETag cocok dengan yang disediakan. `If-Match`mengharapkan ETag nilai sebagai string.
+ `If-None-Match`— Menyalin objek hanya jika ETag tidak cocok dengan yang disediakan. `If-None-Match`mengharapkan karakter '\$1' (tanda bintang).

Untuk informasi selengkapnya tentang header ini, error yang ditampilkan, dan urutan S3 menangani beberapa header bersyarat dalam satu permintaan, lihat di Referensi API Amazon Simple Storage Service. [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)

# Bagaimana mencegah penimpaan objek dengan penulisan bersyarat
<a name="conditional-writes"></a>

Dengan menggunakan penulisan bersyarat, Anda dapat menambahkan header tambahan ke `WRITE` permintaan Anda untuk menentukan prasyarat untuk operasi Amazon S3 Anda. Untuk menulis objek secara kondisional, tambahkan HTTP `If-None-Match` atau `If-Match` header.

`If-None-Match`Header mencegah penimpaan data yang ada dengan memvalidasi bahwa tidak ada objek dengan nama kunci yang sama di bucket Anda.

Atau, Anda dapat menambahkan `If-Match` header untuk memeriksa tag entitas objek (ETag) sebelum menulis objek. Dengan header ini, Amazon S3 membandingkan nilai yang diberikan dengan ETag nilai objek di ETag S3. Jika ETag nilainya tidak cocok, operasi gagal.

Pemilik bucket dapat menggunakan kebijakan bucket untuk menerapkan penulisan bersyarat untuk objek yang diunggah. Untuk informasi selengkapnya, lihat [Menegakkan penulisan bersyarat di ember Amazon S3](conditional-writes-enforce.md).

**catatan**  
Untuk menggunakan penulisan bersyarat, Anda harus menggunakan AWS Signature Version 4 untuk menandatangani permintaan.

**Topics**
+ [

## Bagaimana mencegah penimpaan objek berdasarkan nama kunci
](#conditional-write-key-names)
+ [

## Bagaimana mencegah penimpaan jika objek telah berubah
](#conditional-write-etags)
+ [

## Perilaku menulis bersyarat
](#conditional-error-response)
+ [

## Skenario tulis bersyarat
](#conditional-write-scenarios)
+ [

# Menegakkan penulisan bersyarat di ember Amazon S3
](conditional-writes-enforce.md)

## Bagaimana mencegah penimpaan objek berdasarkan nama kunci
<a name="conditional-write-key-names"></a>

Anda dapat menggunakan header `If-None-Match` bersyarat HTTP untuk memeriksa apakah objek sudah ada di bucket yang ditentukan berdasarkan nama kuncinya sebelum membuatnya atau menyalinnya ke bucket tujuan.

Penulisan bersyarat dengan `If-None-Match` header HTTP memeriksa keberadaan objek selama `WRITE` operasi. Jika nama kunci yang identik ditemukan di bucket, operasi gagal. Tanpa `If-None-Match` header HTTP, jika Anda mengunggah atau menyalin objek dengan nama kunci yang identik dalam bucket yang tidak berversi atau ditangguhkan versi, objek akan ditimpa. Untuk informasi selengkapnya tentang menggunakan nama kunci, lihat[Menamai objek Amazon S3](object-keys.md).

**catatan**  
`If-None-Match`Header HTTP hanya berlaku untuk versi objek saat ini dalam bucket versi.

Untuk melakukan penulisan bersyarat dengan `If-None-Match` header HTTP Anda harus memiliki `s3:PutObject` izin. Hal ini memungkinkan penelepon untuk memeriksa keberadaan objek dalam ember. `If-None-Match`Header mengharapkan nilai \$1 (tanda bintang).

Anda dapat menggunakan `If-None-Match` header dengan yang berikut APIs:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)

### Conditional Put Menggunakan AWS CLI
<a name="conditional-writes-putobject-CLI-key-names"></a>

`put-object`Contoh perintah berikut mencoba untuk melakukan penulisan kondisional untuk objek dengan nama `dir-1/my_images.tar.bz2` kunci.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --if-none-match "*"       
```

Untuk informasi selengkapnya, lihat [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) dalam *AWS CLI Referensi Perintah*.

Untuk informasi tentang AWS CLI, lihat [Apa itu AWS Command Line Interface?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) dalam *AWS Command Line Interface User Guide*. 

### Salinan Bersyarat Menggunakan AWS CLI
<a name="conditional-writes-copyobject-CLI-key-names"></a>

`copy-object`Contoh perintah berikut mencoba untuk menyalin objek ke bucket tujuan dengan penulisan bersyarat untuk objek dengan nama `dir-1/my_images.tar.bz2` kunci.

```
aws s3api copy-object --copy-source amzn-s3-demo-bucket/key --key dir-1/my_images.tar.bz2 --bucket amzn-s3-demo-bucket2 --if-none-match "*"            
```

Untuk informasi selengkapnya, lihat [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html) dalam *AWS CLI Referensi Perintah*.

Untuk informasi tentang AWS CLI, lihat [Apa itu AWS Command Line Interface?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) dalam *AWS Command Line Interface User Guide*. 

### Unggahan multibagian bersyarat Menggunakan AWS CLI
<a name="conditional-writes-mpu-complete-CLI-key-names"></a>

`complete-multipart-upload`Contoh perintah berikut mencoba untuk menyelesaikan upload multipart dengan penulisan bersyarat untuk objek dengan nama kunci. `dir-1/my_images.tar.bz2` Dalam contoh ini, awalan file://digunakan untuk memuat struktur JSON dari file di folder lokal bernama daftar semua bagian `mpustruct` yang telah diunggah untuk unggahan multipart khusus tnis.

```
aws s3api complete-multipart-upload --multipart-upload file://mpustruct --bucket amzn-s3-demo-bucket --key dir-1/my_images.tar.bz2 --upload-id upload-id  --if-none-match "*"             
```

Untuk informasi selengkapnya, lihat [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/complete-multipart-upload.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/complete-multipart-upload.html) dalam *AWS CLI Referensi Perintah*.

Untuk informasi tentang AWS CLI, lihat [Apa itu AWS Command Line Interface?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) dalam *AWS Command Line Interface User Guide*. 

## Bagaimana mencegah penimpaan jika objek telah berubah
<a name="conditional-write-etags"></a>

Objek ETag adalah string yang unik untuk objek dan mencerminkan perubahan pada konten objek. Anda dapat menggunakan `If-Match` header untuk membandingkan ETag nilai objek di bucket Amazon S3 dengan yang Anda berikan selama operasi. `WRITE` Jika ETag nilainya tidak cocok, operasi gagal. Untuk informasi lebih lanjut tentang ETags, lihat[Menggunakan Konten- MD5 dan ETag untuk memverifikasi objek yang diunggah](checking-object-integrity-upload.md#checking-object-integrity-etag-and-md5).

Untuk melakukan penulisan bersyarat dengan `If-Match` header HTTP Anda harus memiliki `s3:PutObject` dan `s3:GetObject` izin. Hal ini memungkinkan penelepon untuk memeriksa ETag dan memverifikasi status objek dalam ember. `If-Match`Header mengharapkan ETag nilai sebagai string.

Anda dapat menggunakan `If-Match` header dengan yang berikut APIs:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)

### Conditional Put Menggunakan AWS CLI
<a name="conditional-writes-putobject-CLI-etags"></a>

`put-object`Contoh perintah berikut mencoba untuk melakukan penulisan bersyarat dengan ETag nilai `6805f2cfc46c0f04559748bb039d69ae` yang disediakan.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --if-match "6805f2cfc46c0f04559748bb039d69ae"         
```

Untuk informasi selengkapnya, lihat [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) dalam *AWS CLI Referensi Perintah*.

Untuk informasi tentang AWS CLI, lihat [Apa itu AWS Command Line Interface?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) dalam *AWS Command Line Interface User Guide*. 

### Salinan Bersyarat Menggunakan AWS CLI
<a name="conditional-writes-copyobject-CLI-etags"></a>

`copy-object`Contoh perintah berikut mencoba untuk melakukan penulisan bersyarat dengan ETag nilai `6805f2cfc46c0f04559748bb039d69ae` yang disediakan.

```
aws s3api copy-object --copy-source amzn-s3-demo-bucket/key --key dir-1/my_images.tar.bz2 --bucket amzn-s3-demo-bucket2 --if-match "6805f2cfc46c0f04559748bb039d69ae"             
```

Untuk informasi selengkapnya, lihat [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html) dalam *AWS CLI Referensi Perintah*.

Untuk informasi tentang AWS CLI, lihat [Apa itu AWS Command Line Interface?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) dalam *AWS Command Line Interface User Guide*. 

### Unggahan multibagian bersyarat Menggunakan AWS CLI
<a name="conditional-writes-mpu-complete-CLI-etags"></a>

`complete-multipart-upload`Contoh perintah berikut mencoba untuk menyelesaikan upload multipart dengan penulisan bersyarat menggunakan nilai yang disediakan ETag . `6805f2cfc46c0f04559748bb039d69ae` Dalam contoh ini, awalan file://digunakan untuk memuat struktur JSON dari file di folder lokal bernama daftar semua bagian `mpustruct` yang telah diunggah untuk unggahan multipart khusus tnis.

```
aws s3api complete-multipart-upload --multipart-upload file://mpustruct --bucket amzn-s3-demo-bucket --key dir-1/my_images.tar.bz2 --upload-id upload-id --if-match "6805f2cfc46c0f04559748bb039d69ae"             
```

Untuk informasi selengkapnya, lihat [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/complete-multipart-upload.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/complete-multipart-upload.html) dalam *AWS CLI Referensi Perintah*.

Untuk informasi tentang AWS CLI, lihat [Apa itu AWS Command Line Interface?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) dalam *AWS Command Line Interface User Guide*. 

## Perilaku menulis bersyarat
<a name="conditional-error-response"></a>

**Penulisan bersyaratatau salinan dengan header `If-None-Match`**  
Penulisan bersyarat dengan `If-None-Match` header mengevaluasi objek yang ada dalam ember. Jika tidak ada objek yang ada dengan nama kunci yang sama di bucket, operasi penulisan berhasil, menghasilkan `200 OK` respons. Jika ada objek yang ada, operasi tulis gagal, menghasilkan `412 Precondition Failed` respons.  
Untuk bucket dengan versi diaktifkan, jika tidak ada versi objek saat ini dengan nama yang sama, atau jika versi objek saat ini adalah penanda hapus, operasi tulis berhasil. Jika tidak, itu menghasilkan operasi penulisan yang gagal dengan `412 Precondition Failed` respons.  
Jika beberapa penulisan atau salinan bersyarat terjadi untuk nama objek yang sama, operasi penulisan pertama yang selesai berhasil. Amazon S3 kemudian gagal menulis berikutnya dengan tanggapan. `412 Precondition Failed`  
Anda juga dapat menerima `409 Conflict` respons dalam kasus permintaan bersamaan jika permintaan penghapusan ke objek berhasil sebelum operasi tulis bersyarat pada objek tersebut selesai. Saat menggunakan penulisan bersyarat dengan`PutObject`, unggahan dapat dicoba lagi setelah menerima kesalahan. `409 Conflict` Saat menggunakan`CompleteMultipartUpload`, seluruh unggahan multibagian harus dimulai ulang `CreateMultipartUpload` untuk mengunggah objek lagi setelah menerima kesalahan. `409 Conflict`

**Menulis atau menyalin bersyarat dengan header `If-Match`**  
`If-Match`Header mengevaluasi terhadap objek yang ada dalam ember. Jika ada objek yang ada dengan nama kunci dan pencocokan yang sama ETag, operasi penulisan berhasil, menghasilkan `200 OK` respons. Jika ETag tidak cocok, operasi tulis gagal dengan `412 Precondition Failed` respons.  
Anda juga dapat menerima `409 Conflict` tanggapan dalam kasus permintaan bersamaan.  
Anda akan menerima `404 Not Found` respons jika permintaan penghapusan bersamaan ke objek berhasil sebelum operasi tulis bersyarat pada objek tersebut selesai, karena kunci objek tidak ada lagi. Anda harus mengunggah ulang objek ketika Anda menerima `404 Not Found` respons.  
Jika tidak ada versi objek saat ini dengan nama yang sama, atau jika versi objek saat ini adalah penanda hapus, operasi gagal dengan `404 Not Found` kesalahan.

## Skenario tulis bersyarat
<a name="conditional-write-scenarios"></a>

Pertimbangkan skenario berikut di mana dua klien menjalankan operasi pada bucket yang sama. 

**Penulisan bersyarat selama unggahan multipart**  
Penulisan bersyarat tidak mempertimbangkan permintaan unggahan multibagian yang sedang berlangsung karena itu belum sepenuhnya ditulis objek. Perhatikan contoh berikut di mana Klien 1 mengunggah objek menggunakan unggahan multipart. Selama pengunggahan multipart, Klien 2 berhasil menulis objek yang sama dengan operasi penulisan bersyarat. Selanjutnya, ketika Klien 1 mencoba menyelesaikan unggahan multibagian menggunakan penulisan bersyarat, unggahan gagal.

**catatan**  
Skenario ini akan menghasilkan `412 Precondition Failed` respons untuk keduanya `If-None-Match` dan `If-Match` header.

![\[Contoh dua klien menulis item dengan nama kunci yang sama. Satu dengan UploadPart untuk MPU dan satu dengan PutObject dan tulisan bersyarat. CompleteMultipartUpload Operasi, yang dimulai setelahnya, gagal.\]](http://docs.aws.amazon.com/id_id/AmazonS3/latest/userguide/images/conwrite_put_mpu.png)


**Penghapusan bersamaan selama unggahan multipart**  
Jika permintaan hapus berhasil sebelum permintaan penulisan bersyarat dapat diselesaikan, Amazon S3 mengembalikan `409 Conflict` respons `404 Not Found` atau untuk operasi tulis. Ini karena permintaan hapus yang dimulai sebelumnya lebih diutamakan daripada operasi tulis bersyarat. Dalam kasus seperti itu, Anda harus memulai unggahan multipart baru.

**catatan**  
Skenario ini akan menghasilkan `409 Conflict` respons untuk `If-None-Match` header dan `404 Not Found` respons untuk `If-Match` header.

![\[Contoh dua klien, satu menggunakan unggahan multibagian dan satu mengirim permintaan hapus setelah MPU dimulai. Permintaan hapus selesai sebelum penulisan bersyarat dimulai.\]](http://docs.aws.amazon.com/id_id/AmazonS3/latest/userguide/images/conwrite_delete_mpu.png)


**catatan**  
Untuk meminimalkan biaya penyimpanan, kami menyarankan untuk Anda mengonfigurasi aturan siklus hidup untuk menghapus unggahan multibagian yang tidak lengkap setelah beberapa hari tertentu dengan menggunakan tindakan `AbortIncompleteMultipartUpload`. Untuk informasi selengkapnya tentang membuat aturan siklus hidup untuk menghapus unggahan multibagian yang tidak lengkap, lihat [Mengonfigurasi konfigurasi siklus hidup bucket untuk menghapus unggahan multibagian yang tidak lengkap](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-abort-incomplete-mpu-lifecycle-config.html).

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

------

# Cara melakukan penghapusan bersyarat
<a name="conditional-deletes"></a>

Anda dapat menggunakan penghapusan bersyarat untuk mengevaluasi apakah objek Anda ada atau tidak berubah sebelum menghapusnya. Anda dapat melakukan penghapusan bersyarat menggunakan operasi `DeleteObject` atau `DeleteObjects` API di bucket tujuan umum dan direktori S3. Untuk memulai, saat membuat permintaan penghapusan bersyarat, Anda dapat menggunakan `HTTP If-Match` header dengan nilai prasyarat `*` untuk memeriksa apakah objek ada atau `If-Match` header dengan yang Anda berikan `ETag` untuk memeriksa apakah objek telah dimodifikasi.

Anda dapat menerapkan penghapusan bersyarat pada tingkat bucket tujuan umum menggunakan kebijakan bucket S3 atau Identity and Access Management (IAM). Untuk informasi selengkapnya, lihat [Menerapkan penghapusan bersyarat pada bucket Amazon S3](conditional-delete-enforce.md). 

**catatan**  
Evaluasi penghapusan bersyarat hanya berlaku untuk versi objek saat ini. 

**Topics**
+ [

## Cara memeriksa apakah objek Anda telah dimodifikasi sebelum menghapusnya
](#conditional-deletes-etags)
+ [

## Cara memeriksa apakah objek Anda ada sebelum menghapusnya
](#conditional-delete)
+ [

# Menerapkan penghapusan bersyarat pada bucket Amazon S3
](conditional-delete-enforce.md)

## Cara memeriksa apakah objek Anda telah dimodifikasi sebelum menghapusnya
<a name="conditional-deletes-etags"></a>

 Dengan penghapusan bersyarat, Anda dapat melindungi aplikasi Anda dari penghapusan objek yang tidak disengaja. Anda dapat menggunakan `HTTP If-Match` header dengan `ETag` nilai untuk memeriksa apakah suatu objek telah dimodifikasi. Jika `ETag` nilai objek dalam bucket S3 tidak sesuai dengan `ETag` yang Anda berikan selama operasi penghapusan, operasi akan gagal. Untuk menghapus beberapa objek secara kondisional menggunakan `DeleteObjects` operasi, Anda harus memberikan `ETag` nilai dalam `ETag` elemen objek di badan permintaan XHTML. Untuk informasi selengkapnya, lihat [Menggunakan Konten- MD5 dan ETag untuk memverifikasi objek yang diunggah](checking-object-integrity-upload.md#checking-object-integrity-etag-and-md5). 

**catatan**  
Untuk melakukan penghapusan bersyarat dengan `If-Match` header dengan `ETag` nilai, Anda harus memiliki `s3:DeleteObject` dan `s3:GetObject` izin. 

`If-Match`Header dengan `ETag` nilai mengevaluasi terhadap objek yang ada dalam ember. Jika ada objek yang ada dengan nama kunci dan pencocokan yang sama`ETag`, `DeleteObject` permintaan berhasil, dan mengembalikan `204 No content` respons. Jika `ETag` tidak cocok, operasi penghapusan gagal dengan `412 Precondition Failed` respons. Untuk menghapus beberapa objek secara kondisional menggunakan `DeleteObjects` operasi, Anda dapat memberikan `ETag` nilai dalam `ETag` elemen objek di badan permintaan XHTML. Jika permintaan berhasil, `DeleteObjects` operasi merespons dengan `200 OK` dan memberikan status setiap objek di badan respons. Jika prasyarat berhasil, respons untuk objek itu akan ditangkap dalam `<Deleted>` elemen badan respons. Jika prasyarat gagal maka respons untuk objek itu akan ditangkap dalam `<Error>` elemen badan respons.

 Anda juga dapat menerima respons `409 Conflict` kesalahan dalam kasus permintaan bersamaan jika permintaan `DELETE` atau `PUT` permintaan ke objek berhasil sebelum operasi penghapusan bersyarat pada objek tersebut selesai. Anda akan menerima `404 Not Found` respons jika permintaan penghapusan bersamaan ke objek berhasil sebelum operasi tulis bersyarat pada objek tersebut selesai, karena kunci objek tidak ada lagi. 

Anda dapat menggunakan `If-Match` header dengan `ETag` nilai sebagai berikut APIs:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)

### Menggunakan AWS CLI
<a name="conditional-deletes-deleteobject-CLI-etags"></a>

`delete-object`Contoh perintah berikut mencoba untuk melakukan penghapusan bersyarat dengan ETag nilai `6805f2cfc46c0f04559748bb039d69al` yang disediakan.

```
aws s3api delete-object --bucket amzn-s3-demo-bucket --key dir-1/my_images.tar.bz2 --if-match "6805f2cfc46c0f04559748bb039d69al"       
```

Untuk informasi selengkapnya, lihat [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html) dalam *AWS CLI Referensi Perintah*. 

`delete-objects`Contoh perintah berikut mencoba untuk melakukan penghapusan bersyarat dengan ETag nilai `6805f2cfc46c0f04559748bb039d69al` yang disediakan.

```
aws s3api delete-objects --bucket amzn-s3-demo-bucket --delete '{"Objects":[{"Key":"my_images.tar.bz2", "ETag": "6805f2cfc46c0f04559748bb039d69al"}]}' 
```

Untuk informasi selengkapnya, lihat [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html) dalam *AWS CLI Referensi Perintah*. 

Untuk informasi tentang AWS CLI, lihat [Apa itu AWS Command Line Interface?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) dalam *AWS Command Line Interface User Guide*. 

## Cara memeriksa apakah objek Anda ada sebelum menghapusnya
<a name="conditional-delete"></a>

 Anda dapat menggunakan `If-Match` header dengan `*` nilai untuk memeriksa apakah objek ada sebelum mencoba untuk menghapusnya. `*`Nilai menandakan bahwa operasi hanya harus dilanjutkan jika objek ada, terlepas dari apakah itu telah dimodifikasi atau tidak. 

Delete marker adalah objek khusus dalam bucket tujuan umum S3 berversi yang menunjukkan bahwa suatu objek telah dihapus. Mereka adalah placeholder yang membuat objek tampak dihapus sambil mempertahankan versi sebelumnya. Oleh karena itu, ketika Anda menggunakan `If-Match:*` dengan `DeleteObject` API, operasi hanya akan berhasil dengan `204 No Content` jika objek ada. Jika versi terbaru dari objek adalah penanda hapus, objek tidak ada dan `DeleteObject` API akan gagal dan mengembalikan `412 Precondition Failed` respons. Untuk informasi selengkapnya tentang penanda hapus, lihat [Bekerja dengan penanda hapus](DeleteMarker.md).

Untuk menghapus beberapa objek secara kondisional menggunakan `DeleteObjects` operasi, Anda dapat memberikan `ETag` elemen objek di badan permintaan XHTML. `*` Jika prasyarat berhasil, `DeleteObjects` operasi merespons dengan a `200 OK` dan memberikan status setiap objek dalam badan respons. Jika prasyarat berhasil, respons untuk objek itu akan ditangkap dalam `<Deleted>` elemen badan respons. Jika prasyarat gagal maka respons untuk objek itu akan ditangkap dalam `<Error>` elemen badan respons. Jika objek tidak ada saat mengevaluasi salah satu prasyarat, S3 menolak permintaan dan mengembalikan respons kesalahan. `Not Found` 

**catatan**  
 Untuk melakukan penghapusan bersyarat dengan`If-Match:*`, Anda harus memiliki `s3:DeleteObject` izin. 

Anda dapat menggunakan `If-Match` header dengan `*` nilai sebagai berikut APIs:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)

### Menggunakan AWS CLI
<a name="conditional-deleteobject-CLI-etags"></a>

`delete-object`Contoh perintah berikut mencoba untuk melakukan penghapusan bersyarat untuk objek dengan nama kunci `my_images.tar.bz2` yang memiliki nilai `*` yang mewakili apapun ETag. 

```
aws s3api delete-object --bucket amzn-s3-demo-bucket --key dir-1/my_images.tar.bz2 --if-match "*"
```

Untuk informasi selengkapnya, lihat [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html) dalam *AWS CLI Referensi Perintah*.

`delete-objects`Contoh perintah berikut mencoba untuk melakukan penghapusan bersyarat untuk objek dengan nama kunci `my_images.tar.bz2` yang memiliki nilai `*` yang mewakili apapun ETag. 

```
aws s3api delete-objects --bucket amzn-s3-demo-bucket --delete '{"Objects":[{"Key":"my_images.tar.bz2", "ETag": "*"}]}' 
```

Untuk informasi selengkapnya, lihat [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html) dalam *AWS CLI Referensi Perintah*.

Untuk informasi tentang AWS CLI, lihat [Apa itu AWS Command Line Interface?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) dalam *AWS Command Line Interface User Guide*. 

# Menerapkan penghapusan bersyarat pada bucket Amazon S3
<a name="conditional-delete-enforce"></a>

 Dengan menggunakan kebijakan bucket Amazon S3, Anda dapat menerapkan `If-Match` header dengan penghapusan bersyarat untuk objek di bucket tujuan umum. Jika `If-Match` header tidak ada, permintaan akan ditolak dengan file`403 Access Denied`. Kebijakan bucket adalah kebijakan berbasis sumber daya yang dapat Anda gunakan untuk memberikan izin akses ke bucket 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). 

Contoh berikut menunjukkan cara menggunakan kondisi dalam kebijakan bucket untuk memaksa klien menggunakan header `If-Match` HTTP.

**Topics**
+ [

## Contoh 1: Hanya izinkan penghapusan bersyarat menggunakan `If-Match` header dengan nilai `ETag`
](#conditional-writes-enforce-ex1)
+ [

## Contoh 2: Hanya izinkan penghapusan bersyarat menggunakan `If-Match` header dengan nilai `*`
](#conditional-deletes-enforce-ex2)

## Contoh 1: Hanya izinkan penghapusan bersyarat menggunakan `If-Match` header dengan nilai `ETag`
<a name="conditional-writes-enforce-ex1"></a>

Anda dapat menggunakan kebijakan bucket ini untuk hanya mengizinkan penghapusan bersyarat menggunakan `DeleteObject` dan `DeleteObjects` permintaan yang menyertakan `If-Match` header dengan nilai`ETag`. `Null`Kondisi memastikan `If-Match` header hadir, dan `s3:GetObject` izin diberikan karena penghapusan bersyarat dengan ETag nilai tertentu memerlukan keduanya `s3:DeleteObject` dan `s3:GetObject` izin. Semua penghapusan non-kondisional akan ditolak dan penghapusan bersyarat akan berlalu.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowConditionalDeletes",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:DeleteObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "Null": {
                    "s3:if-match": "false"
                }
            }
        },
         {
            "Sid": "AllowGetObjectBecauseConditionalDeleteIfMatchETag",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

## Contoh 2: Hanya izinkan penghapusan bersyarat menggunakan `If-Match` header dengan nilai `*`
<a name="conditional-deletes-enforce-ex2"></a>

Anda dapat menggunakan kebijakan bucket ini untuk hanya mengizinkan penghapusan bersyarat menggunakan `DeleteObject` dan `DeleteObjects` permintaan yang menyertakan `If-Match` header dengan nilai`*`. `Null`Kondisi ini memastikan `If-Match` header hadir. Karena tidak `s3:GetObject` diberikan, penghapusan bersyarat dengan ETag nilai tertentu akan gagal — hanya `If-Match: *` (yang memeriksa keberadaan objek dan hanya memerlukan `s3:DeleteObject` izin) akan berhasil. Semua penghapusan non-kondisional akan ditolak, dan hanya penghapusan `If-Match: *` bersyarat yang akan berhasil.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowConditionalDeletes",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:DeleteObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "Null": {
                    "s3:if-match": "false"
                }
            }
        }
    ]
}
```