S3 跨区域复制 - 反向复制

S3 Cross Region Replication - Reverse Replication

我目前配置了复制,以便将我在 us-east-1 上的 S3 文档复制到 us-west-2 上的存储桶。鉴于今天的 (gasp) AWS 中断,我考虑过故障转移到 us-west-2(目前似乎在线)。所以,我对此有几个问题:

  1. 一旦服务恢复,上传到 us-west-2 的文件是否会被复制回 us-east-1?我怀疑答案是否定的,因为我没有找到任何关于双向复制的文档。
  2. 如果双向复制没有发生并且我决定故障转移到 us-west-2,那么一旦 us-east-1 重新联机,恢复过程是什么?我假设这需要编写一个脚本来将所有丢失的文档复制回 us-east-1。还有其他想法或建议吗?

双向复制的问题总是归结为 "who has the correct version" 数据。当只有一个数据源时,现在并没有那么难,但是当有两个时呢?如果一个进程写入一个区域而另一个进程将同样的东西写入另一个区域,那么如何裁定冲突?

这就是为什么您看不到有关双向复制的文档的原因 - 很难以通用方式解决。我会看看 s3 sync 或自定义脚本之类的东西来使存储桶恢复同步。

为 Amazon Simple Storage Service (Amazon S3) 实施双向跨区域复制

https://wellarchitectedlabs.com/Reliability/200_Bidirectional_Replication_for_S3/README.html

我们在两个区域都设置了跨区域相互复制规则,以便它们可以相互复制。这些年来似乎工作正常。

它不进行无限循环的原因是 principal 上传和复制不同。如果你在 Lambda 中听你的 s3 event,这更明显:

原版上传为:

            "userIdentity": {
                "principalId": "AWS:xxx:YourBucketName"
            },

对于复制,它是

            "userIdentity": {
                "principalId": "AWS:xxx:s3-replication"
            },

至于内部复制本身,引用:

For an object uploaded by you
    Amazon S3 triggers the rule you configured to replicate it to another bucket
    And sets Replication status to COMPLETED
For an object replicated from another bucket
    Amazon S3 knows not to re-replicate the object
    And sets Replication status to REPLICA