如何导入导出到 S3 的 DynamoDB 表 JSON?

few*_*few 3 amazon-s3 amazon-web-services amazon-dynamodb aws-cli

我已使用 AWS 控制台中的导出到 S3 导出了 DynamoDB 表。格式为 DynamoDB JSON,文件包含 250 个项目。

我想将数据导入到另一个表中。

由于 AWS 控制台中没有导入功能,我想使用 AWS CLI,但这似乎需要另一种格式并且仅限于 25 个项目的批次。

有没有办法在 AWS CLI 中简单地实现这一点?

将数据导入另一个表的最佳方法是什么?

我认为由于 AWS 控制台允许您执行导出,因此必须有一些简单的方法来导入此数据。

注意:由于我所在的区域不支持 AWS Data Pipeline,因此我无法使用它。

Erm*_*ary 6

截至 2022 年 8 月 18 日更新:

AWS 现在引入了一种将 DynamoDB JSON(以及其他格式)导入 DynamoDB 的方法。

查看官方公告:Amazon DynamoDB 现在支持从 Amazon S3 批量导入新的 DynamoDB 表

官方博客文章:Amazon DynamoDB 现在可以将 Amazon S3 数据导入到新表中


老答案供参考。

TLDR:您必须自己解组并上传 JSON。


由于 AWS 控制台中没有导入功能,我想使用 AWS CLI,但这似乎需要另一种格式并且仅限于 25 个项目的批次。

正确的是,AWS CLI 允许您将batch-write-item数据加载到表中- 这是 25 批 PUT/DELETE 请求限制的来源 - 但这是针对未编组(“常规”)JSON 的。

导出到 Amazon S3 的输出是 DynamoDB 的编组JSON 格式,该格式与该命令不兼容batch-write-item

有没有办法在 AWS CLI 中简单地实现这一点?

不幸的是,DynamoDB 自己的“导出到 Amazon S3”流程在控制台和 CLI 内都没有等效的“从 Amazon S3 导入”流程。

由于AWS 命令​​行界面只是 AWS Python 开发工具包 (Boto3) 的接口,这也意味着该开发工具包不支持导入编组 JSON,这最终意味着底层 API 不支持此功能。

将数据导入另一个表的最佳方法是什么?

解决方案是创建一个快速原型来获取未压缩的 JSON 文件,使用合适的 SDK 方法(例如Javascript SDK 中的 unmarshall 方法)解组 JSON,然后将解组的项目上传到表中。

您可以使用用于上传原型应用程序的语言的 CLI 或 DynamoDB SDK。

AWS CLI 不支持 JSON 的解组,因此您需要自己的原型应用程序。


我不久前遇到了同样的问题。

我希望 AWS 最终至少能够通过 CLI 支持(取消/)编组 JSON - 它看起来可以通过 Boto3 实现,所以我不确定为什么它没有出现在 SDK 中。

但归根结底,这是 AWS 当前产品中的一个差距,应该有一个简单的从 S3 API 端点导入,并支持 SDK 实现、CLI 功能和控制台界面。

这也将消除手动上传的相关成本,因为导出功能不会消耗读取容量,因此您希望导入功能不会消耗写入容量。


我可能会编写一个小型开源跨平台控制台应用程序,用于解组和批量上传......