我已经使用AWS构建了一个应用程序,现在我想在DynamoDB上进行设置。我使用了许多工具,但都没有成功地找到一种方法来使用我的本地数据库并设置模式,并将数据迁移到AWS中。
例如,我可以将数据转换为CSV格式,但AWS无法识别。似乎我被迫创建了一个数据管道...有没有人有更好的方法呢?
提前感谢
发布于 2017-02-26 17:20:28
正如前面提到的,DynamoDB本地是为了测试目的而存在的。但是,如果需要的话,您仍然可以迁移数据。一种方法是将数据保存为某种格式,如json或csv,并将其存储到S3中,然后使用lambdas或您自己的服务器从S3中读取数据并保存到新的DynamoDB中。至于设置模式,您可以使用用于创建本地表的代码通过AWS SDK创建远程表。
发布于 2017-09-08 22:22:11
您可以创建一个独立的应用程序来从本地dynamoDB获取表列表,并在您的亚马逊网络服务账户中创建它们,之后您可以获取每个表的所有数据并保存它们。
我不确定您熟悉哪种语言,但我将解释一些可能对您有帮助的Java API。
DynamoDB.listTables();
DynamoDB.createTable(CreateTableRequest);使用上述接口创建表示例
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中使用过它们
发布于 2019-11-04 19:13:45
我做了一些工作来设置我的本地开发环境。我使用SAM在AWS中创建dynamodb表。我不想做两次工作,所以我最终将模式从AWS复制到我的本地实例。同样的方法也可以反过来工作。
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:8000top命令使用describe table aws cli功能来获取模式json。然后我使用jq删除所有不需要的键,因为create-table对其参数验证是严格的。然后,我可以使用create-table在本地环境中使用-- using url命令创建表。
您可以在top命令中使用-- local url参数来获取本地架构,然后使用不带--local url参数的create-table直接在AWS中创建它。
https://stackoverflow.com/questions/41152719
复制相似问题