You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需S3,跨AWS账户直接迁移DynamoDB表数据项

跨AWS账户直接迁移DynamoDB表数据(跳过S3)

以下是几种无需依赖S3的直接跨账户DynamoDB数据迁移方案:

方案一:Lambda + DynamoDB Streams(支持全量+增量同步)

  • 前置准备:
    • 在X-Account的A-DynamoDB表开启DynamoDB Streams,选择NEW_AND_OLD_IMAGES或ALL_IMAGES捕获模式
    • 在Y-Account创建与源表结构完全一致的同名DynamoDB表(主键、GSI/LSI、读写模式需匹配)
  • 权限配置:
    • 为X-Account的Lambda执行角色添加权限,允许读取源DynamoDB表及其流数据
    • 在Y-Account的目标表添加IAM策略,授权X-Account的Lambda角色执行写入操作
  • 实现步骤:
    1. 编写Lambda函数,分两个阶段处理:
      • 全量迁移:调用scan API分页遍历源表数据,通过batch_write_item批量写入目标表(注意控制每次批量写入的条目数,避免触发吞吐量限制)
      • 增量同步:监听DynamoDB Streams事件,捕获源表的数据新增、修改、删除操作,同步到目标表
    2. 全量迁移可手动触发或通过CloudWatch Events定时触发,增量同步由Streams自动触发Lambda

方案二:AWS Glue 直接跨账户读写

  • 前置准备:确认两个账户的Glue服务可跨账户访问,目标表结构与源表一致
  • 权限配置:
    • 给Glue作业执行角色添加权限,允许读取X-Account的源DynamoDB表,同时写入Y-Account的目标表
  • 实现步骤:
    1. 创建Glue作业,选择Python或Scala作为脚本语言
    2. 在作业脚本中直接通过Glue的DynamoDB连接器读取源表数据,无需中转S3,直接写入目标表
    3. 运行作业完成全量迁移;若需增量同步,可结合Glue触发器与DynamoDB Streams实现

方案三:自定义SDK脚本(基于boto3等)

  • 前置准备:配置可跨账户访问的IAM角色,确保该角色拥有源表读权限和目标表写权限
  • 实现步骤:
    1. 用Python的boto3库编写迁移脚本:
      • 通过scan API分页遍历源表,处理LastEvaluatedKey实现全量数据读取
      • 调用batch_write_item批量写入目标表,针对UnprocessedItems添加重试逻辑,避免数据丢失
      • 加入速率控制逻辑(如time.sleep()),防止触发DynamoDB的吞吐量限流
    2. 在本地或EC2实例上运行脚本完成迁移;后续增量同步可定时运行脚本或结合Streams处理

关键注意事项

  • 权限核心:所有迁移执行实体(Lambda角色、Glue角色、SDK角色)必须同时拥有跨账户的读写权限,需严格配置IAM策略和信任关系
  • 吞吐量控制:迁移期间可临时将源表和目标表切换为按需模式,或提高预留吞吐量,避免因限流拖慢迁移速度,完成后再调回原配置
  • 数据一致性:全量迁移过程中若源表有数据变更,需结合DynamoDB Streams处理增量,保证最终数据一致
  • 错误处理:迁移脚本需记录失败条目,便于后续手动重试,避免数据丢失

内容的提问来源于stack exchange,提问作者Mikias Hundie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 17:45:27