AWS NodeJs SDK 无法删除对象
AWS NodeJs SDK cannot delete object
我正在尝试使用 this s3.deleteObject
api:[=19 为 Node.js 删除我的 S3 存储桶上的对象 aws-sdk
=]
async function deleteObjectAsync(bucket, key) {
try {
var extras = {
Bucket: bucket,
Key: key
};
const data = await s3
.deleteObject(extras)
.promise();
return data;
} catch (err) {
console.log(err);
}
}//deleteObjectAsync
像
一样使用
(async (bucket, keys) => {
for (const key of keys) {
const result = await deleteObjectAsync(bucket, key);
console.log(result);
}
})(my_bucket, keys);
我得到 - 作为结果 - 一个 DeleteMarker
字段和一个 VersionId
:
{ DeleteMarker: true, VersionId: '2wMteXstTAn6e.rsTS6wHVSerXuUMNLXw' }
但该对象似乎并没有在 S3 存储桶上被删除,而是被标记为删除。
当使用 Python api:
def delete_key(bucket, key):
deleted = True
try:
s3 = boto3.client('s3')
res = s3.delete_object(Bucket=bucket, Key=key)
except Exception as e:
print("deleted key:%s error:%s" % (key,e) )
deleted = False
pass
return deleted
文件被立即删除。为什么?
要从 versioned
存储桶中成功删除和删除对象非常简单,但文档对 how
的说明不是很清楚。
根据您自己的上述示例,以下是您的操作方法:
async function deleteObjectAsync(bucket, key) {
try {
const params = {
Bucket: bucket,
Key: key,
VersionId: 'null'
};
return await s3.deleteObject(params).promise();
} catch (err) {
console.error(err);
}
}
诀窍是在对象还没有 VersionId 时将 'null'
字符串作为 VersionId 传递。当它出现时,您必须删除所有以前的版本,然后删除 'null'
版本,即“原始版本”。
我正在尝试使用 this s3.deleteObject
api:[=19 为 Node.js 删除我的 S3 存储桶上的对象 aws-sdk
=]
async function deleteObjectAsync(bucket, key) {
try {
var extras = {
Bucket: bucket,
Key: key
};
const data = await s3
.deleteObject(extras)
.promise();
return data;
} catch (err) {
console.log(err);
}
}//deleteObjectAsync
像
一样使用(async (bucket, keys) => {
for (const key of keys) {
const result = await deleteObjectAsync(bucket, key);
console.log(result);
}
})(my_bucket, keys);
我得到 - 作为结果 - 一个 DeleteMarker
字段和一个 VersionId
:
{ DeleteMarker: true, VersionId: '2wMteXstTAn6e.rsTS6wHVSerXuUMNLXw' }
但该对象似乎并没有在 S3 存储桶上被删除,而是被标记为删除。
当使用 Python api:
def delete_key(bucket, key):
deleted = True
try:
s3 = boto3.client('s3')
res = s3.delete_object(Bucket=bucket, Key=key)
except Exception as e:
print("deleted key:%s error:%s" % (key,e) )
deleted = False
pass
return deleted
文件被立即删除。为什么?
要从 versioned
存储桶中成功删除和删除对象非常简单,但文档对 how
的说明不是很清楚。
根据您自己的上述示例,以下是您的操作方法:
async function deleteObjectAsync(bucket, key) {
try {
const params = {
Bucket: bucket,
Key: key,
VersionId: 'null'
};
return await s3.deleteObject(params).promise();
} catch (err) {
console.error(err);
}
}
诀窍是在对象还没有 VersionId 时将 'null'
字符串作为 VersionId 传递。当它出现时,您必须删除所有以前的版本,然后删除 'null'
版本,即“原始版本”。