为什么当指定的键不存在时,S3.deleteObject不会失败?

使用适用于Node的AWS开发工具包时 ,为什么在尝试删除不存在的对象时(例如S3键错误),不会出现错误?

如果我指定一个不存在的桶,则会产生一个错误。

如果考虑以下节点程序,则Key参数列出存储桶中不存在的键,但callback的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) }) 

因为这是规格说它应该做的。

deleteObject(params = {},callback)⇒AWS.Request

删除对象的空版本(如果有),并插入删除标记,该标记将成为对象的最新版本。 如果不存在空版本,则Amazon S3不会删除任何对象。

所以如果对象不存在,调用deleteObject时仍然不是错误,它仍然添加删除标记。