文件还原后,如何解决AWS S3副本存储桶中的不一致问题?

时间:2018-02-22 14:14:02

标签: amazon-s3 replication failover

我从源存储桶中删除了文件。源和副本是同步的,都有删除标记。我删除了源存储桶中的删除标记以恢复该文件。但该文件已在副本中删除(具有删除标记)。这是设计:

  

如果DELETE请求指定要删除的特定对象版本ID,则Amazon S3会删除源存储桶中的该对象版本,但它不会复制目标存储桶中的删除(换句话说,它不会删除同一对象来自目标存储桶的版本)。此行为可保护数据免遭恶意删除。   https://docs.aws.amazon.com/AmazonS3/latest/dev/crr-what-is-isnot-replicated.html

我需要一个一致的副本来进行故障转移。如何防止副本中的不一致?

2 个答案:

答案 0 :(得分:0)

我看到了保存一致性的唯一方法:

永远不要删除对象版本,包括删除标记

重新上传对象(创建新版本)以恢复它,而不是删除删除标记

答案 1 :(得分:0)

我了解问题所在,即使您提出问题已经有一段时间了,但还是值得添加此信息。在源存储桶不可用且您想从副本中还原的灾难恢复方案中,仍然在副本中徘徊的“旧”文件(应该已删除)是一个真正的问题。这与恢复方案不同,在恢复方案中,有人意外地进行了大的删除(如果没有发生删除,那会很好。)

当前存储区复制位于V2。您可以启用V1复制,该复制允许复制删除内容。看来AWS希望通过禁用删除复制来保护我们自己,但有时它是重要且正确的(无论如何,只要有版本控制就可以使用)。

启用V1的相关AWS资源:

https://docs.aws.amazon.com/AmazonS3/latest/dev/crr-add-config.html#crr-backward-compat-considerations

https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-replication.html

希望能帮助某人。