【问题标题】:faild to putItem in dynamoDB未能将项目放入 dynamoDB
【发布时间】:2020-05-06 04:40:48
【问题描述】:

我想通过 AWS cli 将 json 文件导入 dynamoDB。

我创建了一个带有分区键 name的演示表music

我输入了以下命令:

aws dynamodb put-item --table-name music --item file://0001.json --return-consumed-capacity TOTAL

我收到以下错误:

参数验证失败:参数 Item.Count 的类型无效, 值:503,类型:,有效类型:无效 参数 Item.Items 的类型,值:[OrderedDict([('phoneNumber', OrderedDict([('S', 'GpDxxZRJIlUuoqlULj6h0w==')])),

下面是我的json文件,有什么问题吗:

{
  "Items": [
    {
      "phoneNumber": {
        "S": "GpDxxZRJIlUuoqlULj6h0w=="
      },
      "isfisheye": {
        "N": "0"
      },
      "isdeleted": {
        "N": "0"
      },
      "contactFEId": {
        "S": "FE160959275516"
      },
      "ismerged": {
        "N": "0"
      },
      "source": {
        "S": "fromPhone"
      },
      "secondaryPhoneNumbers": {
        "L": [
          {
            "S": "n/a"
          }
        ]
      },
      "email": {
        "S": "XVRb5DlaaC8yIfujKnLsUkV+yv0Ry9nPeWN2iv9OQPY="
      },
      "name": {
        "S": "Sankey Vaishali"
      },
      "isBlocked": {
        "N": "0"
      },
      "contactId": {
        "S": "1528891536"
      },
      "sharedData": {
        "N": "2"
      },
      "secondaryEmails": {
        "L": [
          {
            "S": "n/a"
          }
        ]
      },
      "userId": {
        "S": "FE1411544738781"
      },
      "privacyEnabled": {
        "N": "1"
      }
    },
  ],
  "ScannedCount": 503
}

我怀疑json格式可能是错误的。 任何人都可以帮助解决这个问题,因为我是 aws 新手。

【问题讨论】:

  • 我已经尝试了一路,也尝试通过命令行插入记录,它可以工作,但是如果我导入文件它会出错。
  • filename.json 里面是什么?
  • @shuvalov 我已经更新了我的问题,它的0001.json 包含 json 数据。
  • 如果我尝试手动插入记录,它可以工作并显示在 cli -> { "ConsumedCapacity": { "TableName": "music", "CapacityUnits": 1.0 } } 中,但是当我尝试使用 json 文件时。它在控制台中以漂亮打印格式显示相同的数据。

标签: amazon-web-services amazon-dynamodb aws-cli


【解决方案1】:

您的 JSON 看起来像 get-item 命令的输出。您的请求因格式错误而失败 - 所有对象都必须是带有内部 DynamoDB 标记的标记器,如 here 所述。您应该从 JSON 中删除 ItemsScanndedCount,如下所示:

{
    "contactFEId": {
        "S": "FE160959275516"
    },
    "contactId": {
        "S": "1528891536"
    },
    "email": {
        "S": "XVRb5DlaaC8yIfujKnLsUkV+yv0Ry9nPeWN2iv9OQPY="
    },
    "isBlocked": {
        "N": "0"
    },
    "isdeleted": {
        "N": "0"
    },
    "isfisheye": {
        "N": "0"
    },
    "ismerged": {
        "N": "0"
    },
    "name": {
        "S": "Sankey Vaishali"
    },
    "phoneNumber": {
        "S": "GpDxxZRJIlUuoqlULj6h0w=="
    },
    "privacyEnabled": {
        "N": "1"
    },
    "secondaryEmails": {
        "L": [
            {
                "S": "n/a"
            }
        ]
    },
    "secondaryPhoneNumbers": {
        "L": [
            {
                "S": "n/a"
            }
        ]
    },
    "sharedData": {
        "N": "2"
    },
    "source": {
        "S": "fromPhone"
    },
    "userId": {
        "S": "FE1411544738781"
    }
}

【讨论】:

  • 我已经尝试过了,在控制台中,它以json格式显示数据,但在dynamodb中没有更新,没有错误。
  • 我必须在json文件中添加分区键或排序键吗?
猜你喜欢
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 2016-02-05
  • 2015-11-02
相关资源
最近更新 更多