【问题标题】:Insert a Map in DynamoDB在 DynamoDB 中插入地图
【发布时间】:2020-01-29 01:36:42
【问题描述】:

我正在尝试使用 API Gateway 将地图数据插入到 DynamoDB 表中。这是我的有效载荷:

{
"TableName":"OrderDB",
"Item":{
    "_id": {"S":"04FA887FP2S5R"},
    "_rev": {"S":"9-12e098e2490e1b7c9782597226689403"},
    "_merchantId":{"S":"AXN3EKXT0SJ61"},
    "doc":{"M":{"something":"storedHere"} }
}

还有我在 API Gateway 中的身体映射模板:

{ 
  "TableName": "$input.path('$.TableName')",
  "Item": $input.json('$.Item')
}

如果我从有效负载中删除 doc 项,一切都会按预期工作。尝试使用地图发布时出现以下错误:

{
  "__type": "com.amazon.coral.service#SerializationException",
  "Message": "Unexpected value type in payload"
}

我看到的所有示例都建议使用 DynamoDB 文档映射对象,但我认为这对我来说是不可能的,因为我使用 API Gateway 直接连接到 DynamoDB。可以这样插入地图吗?

【问题讨论】:

    标签: amazon-dynamodb aws-api-gateway


    【解决方案1】:

    您的地图条目需要与其余项目相同的格式,因此应该是 "doc":{"M":{"something":"storedHere"} } 而不是 "doc":{"M":{"something":"S": "storedHere"} }

    【讨论】:

    • 成功了!所以好像我在 API Gateway 中使用 AWS 服务选项我不能只插入 JSON 对象,每个对象键都必须有一个数据类型。在我看来,这不是一个好的解决方案,我希望只是将 JSON 扔在那里。感谢您的帮助!
    • 你仍然可以到达那里,但你必须做一些对象映射。所以不,您不能只在与 DynamoDB 集成的 API Gateway 中抛出原始 JSON 而不转换数据,但如果您采取额外的转换步骤,则可以。
    猜你喜欢
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2017-11-06
    相关资源
    最近更新 更多