ruby aws sdk s3 删除文件夹中的对象

ruby aws sdk s3 deletion of objects in folders

我正在使用 aws sdk 从存储桶中删除一个(或多个)对象,问题是不存在的键仍然被视为已成功删除,SDK 不应该引发错误钥匙不存在?

另一个问题是,与确实存在的键相对应的对象没有被删除,而是返回为已成功删除。

编辑:

第二个问题似乎只是当要删除的对象在文件夹内时,在根目录中它被删除了。

原来你不能在密钥的开头有'/',我没有意识到,不确定为什么它在那里但它是把钥匙搞砸了。

Amazon S3 的 DELETE 对象操作有意 return 返回 200 OK,即使目标对象不存在也是如此。这是因为它在设计上是幂等的。因此,aws-sdk gem 将在相同情况下 return 成功响应。

对正斜杠的快速说明。您可以在键的开头有任意数量的“/”字符,但是前面有“/”的对象与没有的对象不同。例如:

# public urls for two different objects
http://bucket-name.s3-amazonaws.com/key
http://bucket-name.s3-amazonaws.com//key

无论您是否选择使用斜线,只要保持一致即可。