Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Cara melakukan penghapusan bersyarat
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.
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 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.
catatan
Untuk melakukan penghapusan bersyarat dengan If-Match header dengan ETag nilai, Anda harus memiliki s3:DeleteObject dan s3:GetObject izin.
If-MatchHeader dengan ETag nilai mengevaluasi objek yang ada dalam ember. 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 penghapusan gagal dengan 412 Precondition Failed respons. Jika berhasil, DeleteObjects API merespons dengan 200 OK dan memberikan status setiap objek di badan respons permintaan penghapusan batch. Jika prasyarat tidak terpenuhi untuk DeleteObjects permintaan, Amazon S3 menghapus objek dan mengembalikan respons kesalahan Pre-condition yang gagal.
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:
delete-objectContoh perintah berikut mencoba untuk melakukan penghapusan bersyarat dengan ETag nilai 6805f2cfc46c0f04559748bb039d69al 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 ETag nilai 6805f2cfc46c0f04559748bb039d69al 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 AWS Command Line Interface User Guide.
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 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.
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 denganIf-Match:*, Anda harus memiliki s3:DeleteObject izin.
Anda dapat menggunakan If-Match header dengan * nilai sebagai berikut APIs:
delete-objectContoh perintah berikut mencoba untuk melakukan penghapusan bersyarat untuk objek dengan nama kunci yang memiliki nilai my_images.tar.bz2* yang mewakili apapun ETag.
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 apapun ETag.
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 AWS Command Line Interface User Guide.