在 AWS S3 上,删除版本控制的对象并不会真正的删除,在后台 S3 仍然会存储这个对象,但是在管理层面上因为没有版本记录,所以看不到这个对象。
以下是一个示例代码,演示了如何通过 AWS SDK for JavaScript 在一个版本控制的桶中删除一个对象的所有版本,包括已被删除的版本:
const AWS = require('aws-sdk');
// 您的证书配置
AWS.config.update({
accessKeyId: '',
secretAccessKey: '',
region: ''
});
const s3 = new AWS.S3({apiVersion: '2006-03-01'});
// 要删除的对象的桶名和键名
const bucketName = '';
const objectKey = '';
// 获取对象的版本历史记录
s3.listObjectVersions({
Bucket: bucketName,
Prefix: objectKey
}, function(err, data) {
if (err) {
console.log(err);
return;
}
// 为每个版本的对象添加删除标记
const objects = data.Versions.map(function(version) {
return {
Key: version.Key,
VersionId: version.VersionId
};
});
objects.push(...data.DeleteMarkers);
// 删除包括已删除版本在内的所有版本
s3.deleteObjects({
Bucket: bucketName,
Delete: {
Objects: objects
}
}, function(err, data) {
if (err) {
console.log(err);
} else {
console.log(`删除成功!`);
}
});
});