使用AWS SDK for Node,为什么在尝试删除不存在的对象时(即S3键错误),我不会收到错误?
另一方面,如果我指定一个不存在的存储桶,则会产生错误。
如果您考虑以下Node节点,Key
参数会列出存储桶中不存在的密钥,但回调的error
参数为null
:
var aws = require('aws-sdk')
function getSetting(name) {
var value = process.env[name]
if (value == null) {
throw new Error('You must set the environment variable ' + name)
}
return value
}
var s3Client = new aws.S3({
accessKeyId: getSetting('AWSACCESSKEYID'),
secretAccessKey: getSetting('AWSSECRETACCESSKEY'),
region: getSetting('AWSREGION'),
params: {
Bucket: getSetting('S3BUCKET'),
},
})
picturePath = 'nothing/here'
s3Client.deleteObject({
Key: picturePath,
}, function (err, data) {
console.log('Delete object callback:', err)
})
答案 0 :(得分:14)
因为那是specs所说的应该做的事情。
deleteObject(params = {},callback)⇒AWS.Request
删除对象的null版本(如果有的话)并插入一个 删除标记,它将成为对象的最新版本。如果 没有空版本,Amazon S3不会删除任何对象。
因此,如果该对象不存在,则在调用deleteObject
时仍然不是错误,它仍会添加删除标记。