如何将导出到S3的DynamoDB表数据导入为新表?
跨账号S3导入DynamoDB可行方案(小数据量场景)
1. 官方托管导入方案(无需自行运行脚本)
DynamoDB原生支持直接从S3导入数据,完全适配官方导出功能生成的文件格式,不需要你自己开发代码或者部署服务,操作流程如下:
- 提前在源S3桶配置桶策略,给目标账号的DynamoDB服务关联角色开放S3读权限(ListBucket、GetObject)
- 登录目标账号的DynamoDB控制台,选择「从S3导入表」
- 填写源S3的导出路径、选择导出文件的格式(JSON/ION/CSV)、指定目标表的配置(表名、主键、读写容量模式)
- 启动导入任务即可,小数据量通常几分钟即可完成,成本极低。
2. 本地运行脚本方案
如果不想使用托管功能,AWS官方提供了多个现成的工具/脚本可以直接使用,不需要从零开发:
2.1 使用AWS官方维护的awswrangler库
这是AWS官方开源的Python数据处理库,封装了S3读取、DynamoDB写入的全部逻辑,仅需几行代码即可完成导入:
- 先安装依赖:
pip install awswrangler - 运行如下代码即可:
import awswrangler as wr # 针对DynamoDB原生导出的JSON/ION格式数据 items = wr.s3.read_json(path="s3://源跨账号桶/导出前缀/") wr.dynamodb.put_items(items=items, table_name="目标表名")
2.2 使用AWS CLI配合批量写入接口
如果不想用Python,可以直接用Shell脚本配合AWS CLI完成,逻辑为下载S3导出文件到本地、拆分数据后调用batch-write-item接口写入,单批次最多支持写入25条数据,小数据量场景完全够用。
注意事项
- 所有方案都需要先配置好跨账号权限:源S3桶的桶策略需要允许你本地使用的IAM用户/角色读取对应路径的文件,同时该IAM实体需要有目标DynamoDB表的写入权限
- 如果导出的是DynamoDB增量导出数据,写入前需要先确认主键冲突的处理逻辑,默认新写入的数据会覆盖目标表中同主键的已有数据。
内容的提问来源于stack exchange,提问作者red888
相关产品推荐
相关产品推荐

