微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DynamoDB PutItem 在应该替换项目时使用相同的分区键创建多个项目

如何解决DynamoDB PutItem 在应该替换项目时使用相同的分区键创建多个项目

我在本地将 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

See items 97/98 here,this image is of my NoSQL Workbench and you can see there are two items with the same id

解决方法

与 AWS Support 取得联系后,发现这是在本地使用 DynamoDB 的一个已知问题。他们提供了以下修复指南:

正如您提到的,您正在使用 docker 镜像进行部署 DynamoDB 本地 [1],请继续删除 步骤 2 中给出的“-optimizeDbBeforeStartup”标志(“Docker 选项卡”)(和 然后将其保存为 docker-compose.yml):

  1. 从参数列表中删除“-optimizeDbBeforeStartup”: ========== .. .. 命令:“-jar DynamoDBLocal.jar -sharedDb -dbPath ./data”.. .. ==========

  2. 创建表格并插入项目

  3. docker-compose down

  4. docker-compose up

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。