问题描述
我在本地将 DynamoDB 与 Nosql Workbench 和 Express API 一起使用。
const params = {
AttributeDeFinitions: [
{
AttributeName: 'id',AttributeType: 'S',},],KeySchema: [
{
AttributeName: 'id',KeyType: 'HASH',}
]
TableName: table.name,ProvisionedThroughput: {
ReadCapacityUnits: 1,WriteCapacityUnits: 1
},}
dynamo.createTable(params).promise() // ... simplified version
我使用 DocumentClient 更新一个项目:
const db = new AWS.DynamoDB.DocumentClient(configOptions);
const data = await db.put({
TableName,Item,}) // ... interact with result
有时,它会在 DynamoDB 中创建一个具有完全相同 id
值的新项目,即使我将其创建为 HASH 并将其设为分区键。
但是,它不会每次发生。我似乎无法始终如一地重新创建它。
我在创建此表或更新导致此问题的项目时是否做错了什么?
在此处查看项目 97/98,此图像是我的 Nosql Workbench,您可以看到有两个项目具有相同的 id
解决方法
与 AWS Support 取得联系后,发现这是在本地使用 DynamoDB 的一个已知问题。他们提供了以下修复指南:
正如您提到的,您正在使用 docker 镜像进行部署 DynamoDB 本地 [1],请继续删除 步骤 2 中给出的“-optimizeDbBeforeStartup”标志(“Docker 选项卡”)(和 然后将其保存为 docker-compose.yml):
-
从参数列表中删除“-optimizeDbBeforeStartup”: ========== .. .. 命令:“-jar DynamoDBLocal.jar -sharedDb -dbPath ./data”.. .. ==========
-
创建表格并插入项目
-
docker-compose down
-
docker-compose up