AWS S3 存储桶跨区域同步(CRR)详解
一、核心原理
-
异步复制
- 源存储桶(Region A)的数据异步复制到目标存储桶(Region B)
- 满足公式:$$ \text{对象写入成功} \rightarrow \text{复制队列} \rightarrow \text{目标桶持久化} $$
- 延迟通常在分钟级,取决于对象大小和网络状态
-
版本控制依赖
- 必须启用版本控制(源桶和目标桶)
- 复制逻辑:
\begin{cases} \text{新对象写入} & \Rightarrow \text{复制} \\ \text{覆盖/删除操作} & \Rightarrow \text{复制删除标记} \end{cases}
二、配置步骤(控制台操作)
-
前置条件
- 源桶(
source-bucket-us-east-1)和目标桶(target-bucket-eu-west-1)均已创建 - 两个存储桶均启用版本控制
- IAM 角色需具备以下权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource": "arn:aws:s3:::source-bucket-us-east-1" }, { "Effect": "Allow", "Action": [ "s3:GetObjectVersion", "s3:GetObjectVersionAcl" ], "Resource": "arn:aws:s3:::source-bucket-us-east-1/*" }, { "Effect": "Allow", "Action": [ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource": "arn:aws:s3:::target-bucket-eu-west-1/*" } ] }
- 源桶(
-
配置流程
Step 1: 进入源桶 → 管理 → 复制规则 → 添加规则
Step 2: 设置范围- 选择 "整个存储桶" 或指定前缀(如
logs/)
Step 3: 目标桶选择 - 输入目标桶ARN(例:
arn:aws:s3:::target-bucket-eu-west-1)
Step 4: IAM角色选择 - 创建新角色(自动生成策略)或选择已有角色
Step 5: 高级选项 - 复制元数据:必选
- 复制KMS加密对象:需额外配置密钥策略
Step 6: 保存规则
- 选择 "整个存储桶" 或指定前缀(如
三、权限控制关键点
-
IAM角色权限
- 最小权限原则:仅授予
s3:Replicate*系列操作 - 跨账号场景:需在目标桶策略中添加信任关系
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::SOURCE_ACCOUNT_ID:role/ReplicationRole"}, "Action": ["s3:ReplicateObject"], "Resource": "arn:aws:s3:::target-bucket-eu-west-1/*" }] }
- 最小权限原则:仅授予
-
桶策略冲突规避
- 避免目标桶策略拒绝写入:
{ "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::target-bucket-eu-west-1/*", "Condition": {"ArnNotLike": {"aws:PrincipalArn": "arn:aws:iam::SOURCE_ACCOUNT_ID:role/ReplicationRole"}} }
- 避免目标桶策略拒绝写入:
-
加密同步
- SSE-S3:自动复制加密
- SSE-KMS:
- 需在目标区域创建相同密钥
- 授予IAM角色解密源密钥 + 加密目标密钥的权限
四、实操验证
- 测试对象上传
aws s3 cp test.txt s3://source-bucket-us-east-1/ --region us-east-1 - 检查复制状态
aws s3 ls s3://target-bucket-eu-west-1/ --region eu-west-1 - 监控指标
- 查看 CloudWatch 的
ReplicationLatency和FailedReplicationOperations
- 查看 CloudWatch 的
五、故障排查
| 问题现象 | 解决方案 |
|---|---|
| 对象未复制 | 检查IAM角色权限 + 版本控制状态 |
| 复制延迟过高 | 检查目标区域带宽 + 对象大小 |
| KMS加密对象复制失败 | 验证密钥策略跨区域权限 |
注:删除复制规则不会删除已复制的对象,但会停止后续同步。
1218

被折叠的 条评论
为什么被折叠?



