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,因此我无法使用它。
截至 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 功能和控制台界面。
这也将消除手动上传的相关成本,因为导出功能不会消耗读取容量,因此您希望导入功能不会消耗写入容量。
我可能会编写一个小型开源跨平台控制台应用程序,用于解组和批量上传......
归档时间: |
|
查看次数: |
2413 次 |
最近记录: |