如果文件不存在,AWS CLI S3 rm命令不会产生错误

时间:2018-04-19 12:11:29

标签: amazon-web-services amazon-s3

我有一个bash脚本,它遍历一个文件名数组并从S3中删除它们。

以下命令:

aws s3 rm "s3://myBucket/myFolder/myFile.txt"

将产生此输出。

delete: s3://myBucket/myFolder/myFile.txt

通过验证已在AWS控制台中删除删除,我可以看到删除成功。 但是,如果我再次遍历同一个列表,即使文件已经消失,我也会得到相同的输出。

有没有办法 - 只使用rm命令 - 表明AWS CLI试图删除该文件但找不到它?

1 个答案:

答案 0 :(得分:2)

s3 cli rm命令使用s3 API Delete Object operation

正如您在文档中看到的那样,这会添加一个"删除标记"对象。从某种意义上说,它被标记为"删除。 在制作基础对象实际存在的标记之前,似乎没有任何检查

随着S3存储的分发,在所有情况下都不保证一致性。

这意味着如果您要对某个文件执行某些操作然后检查它,那么答案肯定不确定

对于S3,AWS docs

  

Amazon S3提供了在所有地区覆盖PUTS和DELETES的最终一致性。

"最终的一致性"意味着在未来的某个未定义的点上,所有分布式节点都将赶上更改,并且根据您所做的更改,查询返回的结果将如预期一样

所以基本上,这是一种冗长的说法:不,你不能得到确认文件被删除的确认。检查之后是否存在将无法可靠地运行