x3n*_*r0s 4 amazon-s3 amazon-web-services
我有一个 bash 脚本,它迭代文件名数组并将它们从 S3 中删除。
以下命令:
aws s3 rm "s3://myBucket/myFolder/myFile.txt"
Run Code Online (Sandbox Code Playgroud)
将产生此输出。
delete: s3://myBucket/myFolder/myFile.txt
Run Code Online (Sandbox Code Playgroud)
通过验证已在 AWS 控制台中删除,我可以看到删除已成功。但是,如果我再次迭代同一列表,即使文件消失,我也会得到相同的输出。
有没有什么方法(仅使用 rm 命令)表明 AWS CLI 尝试删除该文件但找不到它?
s3 cli rm 命令使用 s3 API 删除对象操作
正如您在文档中看到的,这会向对象添加一个“删除标记”。从某种意义上说,它被“标记”为已删除。在做出这些标记之前似乎没有任何检查底层对象是否确实存在
由于 S3 存储是分布式的,因此无法在所有情况下保证一致性。
这意味着如果您要对文件执行一些操作然后检查它,答案将是不确定的
对于 S3,AWS 文档说
Amazon S3 为所有区域中的覆盖 PUTS 和 DELETES 提供最终一致性。
“最终一致性”意味着在未来某个未定义的时刻,所有分布式节点都将赶上更改,并且根据您所做的更改,从查询返回的结果将符合预期
所以基本上,这是一种冗长的说法:不,您无法得到文件已删除的确认。之后检查它是否存在将无法可靠地工作
| 归档时间: |
|
| 查看次数: |
4547 次 |
| 最近记录: |