首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从DynamoDB本地到DynamoDB AWS

从DynamoDB本地到DynamoDB AWS
EN

Stack Overflow用户
提问于 2016-12-15 05:44:04
回答 3查看 896关注 0票数 2

我已经使用AWS构建了一个应用程序,现在我想在DynamoDB上进行设置。我使用了许多工具,但都没有成功地找到一种方法来使用我的本地数据库并设置模式,并将数据迁移到AWS中。

例如,我可以将数据转换为CSV格式,但AWS无法识别。似乎我被迫创建了一个数据管道...有没有人有更好的方法呢?

提前感谢

EN

回答 3

Stack Overflow用户

发布于 2017-02-26 17:20:28

正如前面提到的,DynamoDB本地是为了测试目的而存在的。但是,如果需要的话,您仍然可以迁移数据。一种方法是将数据保存为某种格式,如json或csv,并将其存储到S3中,然后使用lambdas或您自己的服务器从S3中读取数据并保存到新的DynamoDB中。至于设置模式,您可以使用用于创建本地表的代码通过AWS SDK创建远程表。

票数 1
EN

Stack Overflow用户

发布于 2017-09-08 22:22:11

您可以创建一个独立的应用程序来从本地dynamoDB获取表列表,并在您的亚马逊网络服务账户中创建它们,之后您可以获取每个表的所有数据并保存它们。

我不确定您熟悉哪种语言,但我将解释一些可能对您有帮助的Java API。

代码语言:javascript
复制
DynamoDB.listTables();
DynamoDB.createTable(CreateTableRequest);

使用上述接口创建表示例

代码语言:javascript
复制
ProvisionedThroughput provisionedThroughput = new ProvisionedThroughput(1L, 1L);
    try{
            CreateTableRequest groupTableRequest = mapper.generateCreateTableRequest(Group.class); //1
            groupTableRequest.setProvisionedThroughput(provisionedThroughput); //2
//        groupTableRequest.getGlobalSecondaryIndexes().forEach(index -> index.setProvisionedThroughput(provisionedThroughput)); //3
            Table groupTable = client.createTable(groupTableRequest); //4
            groupTable.waitForActive();//5
        }catch(ResourceInUseException e){
            log.debug("Group table already exist");
        }

1-您将根据映射创建TableRequest 2-设置资源调配吞吐量,这将根据您的要求而有所不同3-如果表具有全局辅助索引,则可以使用此行(可选) 4-将在此处创建实际表5-线程将停止,直到表变为活动状态

我没有提到与数据访问相关的API (插入...等),我想您应该很熟悉,因为您已经在本地dynamodb中使用过它们

票数 1
EN

Stack Overflow用户

发布于 2019-11-04 19:13:45

我做了一些工作来设置我的本地开发环境。我使用SAM在AWS中创建dynamodb表。我不想做两次工作,所以我最终将模式从AWS复制到我的本地实例。同样的方法也可以反过来工作。

代码语言:javascript
复制
aws dynamodb describe-table --table-name chess_lobby \
| jq '.Table' \
| jq 'del(.TableArn)' \
| jq 'del(.TableSizeBytes)' \
| jq 'del(.TableStatus)' \
| jq 'del(.TableId)' \
| jq 'del(.ItemCount)' \
| jq 'del(.CreationDateTime)' \
| jq 'del(.GlobalSecondaryIndexes[].IndexSizeBytes)' \
| jq 'del(.ProvisionedThroughput.NumberOfDecreasesToday)' \
| jq 'del(.GlobalSecondaryIndexes[].IndexStatus)' \
| jq 'del(.GlobalSecondaryIndexes[].IndexArn)' \
| jq 'del(.GlobalSecondaryIndexes[].ItemCount)' \
| jq 'del(.GlobalSecondaryIndexes[].ProvisionedThroughput.NumberOfDecreasesToday)' > chess_lobby.json


aws dynamodb create-table \
--cli-input-json file://chess_lobby.json \
--endpoint-url http://localhost:8000

top命令使用describe table aws cli功能来获取模式json。然后我使用jq删除所有不需要的键,因为create-table对其参数验证是严格的。然后,我可以使用create-table在本地环境中使用-- using url命令创建表。

您可以在top命令中使用-- local url参数来获取本地架构,然后使用不带--local url参数的create-table直接在AWS中创建它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41152719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档