Topik ini menjelaskan cara menghapus satu file, beberapa file, atau file dengan awalan tertentu dari bucket yang telah diaktifkan fitur Pengendalian versi.
Perilaku penghapusan pada bucket yang diaktifkan Pengendalian versi
Perilaku penghapusan pada bucket yang diaktifkan Pengendalian versi adalah sebagai berikut:
Hapus tanpa menentukan version ID (penghapusan temporary):
Jika Anda menghapus objek tanpa menentukan version ID, OSS tidak akan menghapus objek tersebut secara permanen. Sebagai gantinya, OSS menambahkan penanda hapus, yang menjadi versi terkini dari objek tersebut. Jika Anda mencoba mengambil objek tersebut, OSS akan menemukan penanda hapus dan mengembalikan error
404 Not Found. Tanggapan tersebut mencakupheader:x-oss-delete-marker = truedan version ID dari penanda hapus baru dalamx-oss-version-id.Nilai true untuk
x-oss-delete-markermenunjukkan bahwa versi yang sesuai denganx-oss-version-idyang dikembalikan merupakan penanda hapus.Hapus dengan menentukan version ID (penghapusan permanen):
Jika Anda menentukan `versionId` dalam operasi penghapusan, OSS akan menghapus secara permanen versi objek dengan
versionIdyang ditentukan dalam parameterparams. Untuk menghapus versi objek yang `versionId`-nya berupa string "null", tambahkanparams['versionId'] = "null"ke parameterparams. Dalam kasus ini, OSS memperlakukan string "null" sebagai `versionId` dan menghapus versi objek yang sesuai.
Hapus satu file
Contoh berikut menunjukkan cara menghapus satu objek secara permanen atau temporary.
Penghapusan permanen
Kode berikut menunjukkan cara menghapus objek secara permanen dengan menentukan versionId-nya:
const OSS = require("ali-oss"); const client = new OSS({ // Ganti yourregion dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou. region: 'yourregion', // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Ganti yourbucketname dengan nama bucket. bucket: 'yourbucketname' }); // Tentukan versionId objek. const versionId = "versionId"; // Tentukan objek. const objectName = "exampleobject.txt"; async function deleteVersionObject() { const result = await client.delete(objectName, { versionId, }); console.log(result); } deleteVersionObject();Penghapusan temporary
Kode berikut menunjukkan cara menghapus objek secara temporary tanpa menentukan versionId:
const OSS = require('ali-oss'); const client = new OSS({ // Ganti yourregion dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou. region: 'yourregion', // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Ganti yourbucketname dengan nama bucket. bucket: 'yourbucketname' }); // Hapus objek secara temporary tanpa menentukan versionId. Operasi ini menambahkan penanda hapus ke objek. // Tentukan objek. const objectName = "exampleobject.txt"; async function deleteObject() { const result = await client.delete(objectName); console.log(result); } deleteObject();
Hapus beberapa file
Contoh berikut menunjukkan cara menghapus beberapa objek secara permanen maupun temporary.
Hapus secara permanen
Kode berikut memberikan contoh penghapusan permanen beberapa objek beserta penanda hapusnya dengan menentukan versionId masing-masing:
const OSS = require('ali-oss'); const client = new OSS({ // Ganti yourregion dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou. region: 'yourregion', // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Ganti yourbucketname dengan nama bucket. bucket: 'yourbucketname' }); // Hapus beberapa objek atau penanda hapus dengan menentukan versionId masing-masing. const names = [ { key: 'key1.js', versionId: 'versionId1' }, { key: 'key2.js', versionId: 'versionId2' } ]; async function deleteMulti() { const result = await client.deleteMulti(names); console.log(result); } deleteMulti();Penghapusan temporary
Kode berikut menunjukkan cara menghapus beberapa objek secara temporary tanpa menentukan versionId-nya. Versi objek yang dihapus secara temporary dapat dipulihkan.
const OSS = require('ali-oss'); const client = new OSS({ // Ganti yourregion dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou. region: 'yourregion', // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, authorizationV4: true, // Ganti yourbucketname dengan nama bucket. bucket: 'yourbucketname' }); const names = ['key1.js', 'key2.js']; async function deleteMulti() { // Hapus beberapa objek tanpa menentukan versionId. const result = await client.deleteMulti(names); console.log(result); } deleteMulti();
Hapus file dengan awalan tertentu
Kode berikut menunjukkan cara menghapus file dengan awalan tertentu:
const OSS = require("ali-oss");
const client = new OSS({
// Ganti yourregion dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke oss-cn-hangzhou.
region: 'yourregion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Ganti yourbucketname dengan nama bucket.
bucket: 'yourbucketname'
});
// Tentukan awalan objek yang akan dihapus.
const prefix = "test";
async function deleteMutiPrefix() {
// Dapatkan informasi versionId untuk objek dengan awalan yang ditentukan.
const list = await client.getBucketVersions({
prefix: prefix,
});
for (let i = 0; i < list.objects.length; i++) {
const obj = list.objects[i];
// Hapus objek dengan awalan yang ditentukan.
const versionId = obj.versionId;
await client.delete(obj.name, {
versionId,
});
}
}
deleteMutiPrefix();Referensi
Untuk informasi selengkapnya mengenai operasi API DeleteObject, lihat DeleteObject.
Untuk informasi selengkapnya mengenai operasi API DeleteMultipleObjects, lihat DeleteMultipleObjects.