Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Cara melakukan penghapusan kondisional
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 sediakan ETag untuk memeriksa apakah objek telah dimodifikasi.
Anda dapat menerapkan penghapusan bersyarat pada tingkat bucket tujuan umum menggunakan bucket S3 atau kebijakan Manajemen Identitas dan Akses (IAM). Untuk informasi selengkapnya, lihat Menerapkan penghapusan bersyarat di bucket Amazon S3.
catatan
Evaluasi penghapusan bersyarat hanya berlaku untuk versi objek saat ini.
Topik
Cara memeriksa apakah objek Anda telah dimodifikasi sebelum menghapusnya
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 cocok dengan ETag yang Anda berikan selama operasi hapus, operasi gagal. Untuk menghapus beberapa objek secara kondisional menggunakan DeleteObjects operasi, Anda harus memberikan ETag nilai dalam ETag elemen objek di badan permintaan XML. Untuk informasi selengkapnya, lihat Menggunakan Content-MD5 dan ETag untuk memverifikasi objek yang diunggah.
catatan
Untuk melakukan penghapusan kondisi If-Match onal dengan header dengan ETag nilai, Anda harus memiliki s3:GetObject izin s3:DeleteObject dan.
If-MatchHeader dengan ETag nilai dievaluasi terhadap objek yang ada dalam bucket. Jika ada objek yang ada dengan nama kunci dan pencocokan yang samaETag, DeleteObject permintaan berhasil, dan mengembalikan 204 No content respons. Jika ETag tidak cocok, operasi hapus 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 XML. Jika permintaan berhasil, DeleteObjects operasi merespons dengan 200 OK a 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.
Anda juga dapat menerima respons 409 Conflict kesalahan dalam kasus permintaan bersamaan jika PUT permintaan DELETE atau 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 penulisan bersyarat pada objek tersebut selesai, karena kunci objek tidak ada lagi.
Anda dapat menggunakan If-Match header dengan ETag nilai untuk API berikut:
delete-objectContoh perintah berikut mencoba melakukan penghapusan bersyarat dengan nilai 6805f2cfc46c0f04559748bb039d69al ETag yang disediakan.
aws s3api delete-object --bucketamzn-s3-demo-bucket--key dir-1/my_images.tar.bz2--if-match "6805f2cfc46c0f04559748bb039d69al"
Untuk informasi selengkapnya, lihat delete-object
delete-objectsContoh perintah berikut mencoba untuk melakukan penghapusan bersyarat dengan nilai 6805f2cfc46c0f04559748bb039d69al ETag yang disediakan.
aws s3api delete-objects --bucketamzn-s3-demo-bucket--delete '{"Objects":[{"Key":"my_images.tar.bz2", "ETag": "6805f2cfc46c0f04559748bb039d69al"}]}'
Untuk informasi selengkapnya, lihat delete-objects
Untuk informasi tentang AWS CLI, lihat Apa itu AWS Command Line Interface? dalam Panduan AWS Command Line Interface Pengguna.
Cara memeriksa apakah objek Anda ada sebelum menghapusnya
Anda dapat menggunakan If-Match header dengan * nilai untuk memeriksa apakah objek ada sebelum mencoba menghapusnya. Nilai * tersebut menandakan bahwa operasi hanya boleh dilanjutkan jika objek ada, terlepas dari apakah itu telah dimodifikasi atau tidak.
Penanda hapus adalah objek khusus dalam bucket tujuan umum S3 berversi yang menunjukkan bahwa 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 a 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.
Untuk menghapus beberapa objek secara kondisional menggunakan DeleteObjects operasi, Anda dapat memberikan ETag elemen objek dalam badan permintaan XML. * 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 Not Found kesalahan.
catatan
Untuk melakukan penghapusan bersyarat denganIf-Match:*, Anda harus memiliki s3:DeleteObject izin.
Anda dapat menggunakan If-Match header dengan * nilai untuk API berikut:
delete-objectContoh perintah berikut mencoba untuk melakukan penghapusan bersyarat untuk objek dengan nama kunci yang memiliki nilai my_images.tar.bz2* yang mewakili ETag apa pun.
aws s3api delete-object --bucketamzn-s3-demo-bucket--key dir-1/my_images.tar.bz2--if-match "*"
Untuk informasi selengkapnya, lihat delete-object
delete-objectsContoh perintah berikut mencoba untuk melakukan penghapusan bersyarat untuk objek dengan nama kunci yang memiliki nilai my_images.tar.bz2* yang mewakili ETag apa pun.
aws s3api delete-objects --bucketamzn-s3-demo-bucket--delete '{"Objects":[{"Key":"my_images.tar.bz2", "ETag": "*"}]}'
Untuk informasi selengkapnya, lihat delete-objects
Untuk informasi tentang AWS CLI, lihat Apa itu AWS Command Line Interface? dalam Panduan AWS Command Line Interface Pengguna.