【发布时间】:2018-10-17 11:44:14
【问题描述】:
我惊讶地发现文件删除没有在 S3 存储桶跨区域复制情况下复制,运行这个简单的测试:
- CRR 的最简单配置
- 上传新文件
- 检查是否复制
- 删除文件(不是文件的版本)
所以我检查了documentation,我发现了这个声明:
如果您从源存储桶中删除对象,则会发生以下情况:
- 如果您在未指定对象版本 ID 的情况下发出 DELETE 请求,Amazon S3 会添加一个删除标记。 Amazon S3 处理删除 标记如下:
- 如果使用最新版本的复制配置,即在复制配置规则中指定 Filter 元素, Amazon S3 不会复制删除标记。
- 如果不指定 Filter 元素,Amazon S3 会假定复制配置是之前的版本 V1。在较早的 在版本中,Amazon S3 以不同方式处理删除标记的复制。 如需更多信息,请参阅Backward Compatibility。
后面的向后兼容链接告诉我:
- 当您从源存储桶中删除对象而不指定对象版本 ID 时,Amazon S3 会添加一个删除标记。如果您使用 V1 的复制配置 XML,Amazon S3 会复制由用户操作产生的删除标记。[...] 在 V2 中,Amazon S3 不复制删除标记,因此您必须将 DeleteMarkerReplication 元素设置为 Disabled。
所以如果我总结一下:
- 如果没有过滤器,则将 CRR 配置视为 v1
- 使用 CRR 配置 v1,复制文件删除,而不是使用 v2
嗯,这是我的配置:
{
"ReplicationConfiguration": {
"Role": "arn:aws:iam::271226720751:role/service-role/s3crr_role_for_mybucket_to_myreplica",
"Rules": [
{
"ID": "first replication rule",
"Status": "Enabled",
"Destination": {
"Bucket": "arn:aws:s3:::myreplica"
}
}
]
}
}
并且删除不会被复制。所以这让我觉得我的配置仍然被认为是 V2(即使我没有过滤器)。
那么,有人可以证实这个假设吗? 有人能告诉我是什么吗:
在 V2 中,Amazon S3 不会复制删除标记,因此您必须将 DeleteMarkerReplication 元素设置为 Disabled
真的是什么意思?
【问题讨论】:
-
看到相同的行为...没有复制删除标记(甚至对象也没有被完全删除)您找到解决方案了吗?
标签: amazon-web-services amazon-s3