Skip to content

S3复制

利用AWS托管的S3 Replication功能,自动将对象从源账户的S3存储桶复制到目标账户的存储桶。

  • 自动化程度高: 配置后无需人工干预
  • 近实时同步: 通常在15分钟内完成复制
  • 增量复制: 仅复制新增和修改的对象
  • 元数据保留: 保留对象标签、ACL、元数据
  • 支持筛选: 可按前缀或标签筛选复制对象
  • 成本低: 仅按复制请求和跨区域传输计费
  • 不复制存量数据: 仅复制启用后的新对象
  • 需版本控制: 源桶必须启用版本控制
  • 无进度可视化: 无法查看复制任务完成百分比
  • 删除不同步: 默认不复制删除操作(可配置)
  • 单向复制: 仅支持单向数据流

必须满足:

  • 源存储桶已启用或可启用版本控制
  • 需要持续的数据同步
  • 可接受存量数据通过其他方式迁移

推荐满足:

  • 源和目标在同一分区(AWS Standard/China/GovCloud)
  • 业务可容忍15分钟内的复制延迟
  • 对象大小 ≤5TB

技术限制:

  • 单个对象最大5TB
  • 源桶必须启用版本控制
  • 不支持复制S3 Glacier存储类对象

配置限制:

  • 每个存储桶最多1000个复制规则
  • 复制规则不可循环(A→B→C→A)
  • SSE-C加密对象不支持复制

源账户准备:

  1. 启用源存储桶版本控制
  2. 创建IAM角色并附加复制策略
  3. 配置复制规则指向目标存储桶

目标账户准备:

  1. 创建目标存储桶
  2. 配置存储桶策略允许源账户写入
  3. 可选:启用版本控制接收删除标记

网络要求:

  • 无特殊要求(AWS内部网络)

同区域复制:

  • PUT/COPY请求: $0.005/1000请求
  • 存储费用: 按目标存储类计费

跨区域复制:

  • PUT/COPY请求: $0.005/1000请求
  • 数据传输: $0.02/GB(区域间)
  • 存储费用: 按目标存储类计费

示例: 100GB数据,1百万对象,跨区域复制

  • 请求费用: 1000 × $0.005 = $5
  • 传输费用: 100 × $0.02 = $2
  • 总计: ~$7

配置S3复制规则截图

  1. 可选复制全部或者部分复制
  2. 在源存储桶启用版本控制
  3. 创建IAM角色(使用AWS托管策略或自定义)
  4. 配置复制规则:
    • 选择目标存储桶(跨账户格式:arn:aws:s3:::bucket-name
    • 配置IAM角色
    • 可选:配置筛选器、存储类、加密
  5. 在目标账户生成存储桶策略

目标桶策略示例 复制策略

规划阶段:

  • 对存量数据使用S3 Batch Operations配合复制规则
  • 评估跨区域传输成本是否可接受
  • 确认目标账户配额充足

配置阶段:

  • 使用IAM角色而非访问密钥
  • 启用CloudWatch指标监控复制失败
  • 配置S3 Event通知监控复制延迟

运维阶段:

  • 定期检查复制规则状态
  • 监控ReplicationLatency指标
  • 使用S3 Inventory验证数据一致性

安全建议:

  • 目标桶启用默认加密
  • 使用最小权限原则配置IAM角色
  • 启用S3访问日志审计跨账户操作

复制失败常见原因:

  1. 目标桶策略配置错误 → 检查Principal ARN
  2. IAM角色权限不足 → 验证角色信任关系
  3. 对象加密不兼容 → 确认KMS密钥权限
  4. 目标桶不存在 → 验证桶名称和区域

监控指标:

  • ReplicationLatency: 复制延迟时间
  • BytesPendingReplication: 待复制字节数
  • OperationsPendingReplication: 待复制操作数