【问题标题】:Insert directly multi data rows with multi column to DynamoDB using API Gateway使用 API Gateway 将具有多列的多数据行直接插入到 DynamoDB
【发布时间】:2021-04-07 05:58:41
【问题描述】:

我正在尝试使用 API Gateway 直接将数据插入 DynamoDB。我可以插入单个,但被插入 multiple 数据行卡住了。映射模板可能有问题(总是得到 com.amazon.coral.service#SerializationException 错误)

  1. 我的dynamoDB表结构ex_table:time,column1,column2
  2. 我的网关映射模板:
#set($inputRoot = $input.json('$.items')})
{
    "TableName": "ex_table",
    "Item":
    [
        #foreach($elem in $inputRoot) {
            "time": {"S": $input.json('$.time')},
            "column1": "$elem.column1.S",
            "column2": "$elem.column2.S",
        }#if($foreach.hasNext),#end
        #end
    ]
}
  1. 这是我的请求正文:
{
  "time": "2021-03-31 16:50:00",
  "items": [
    {
      "column1": "Item1",
      "column2": "Attr1"
    },
    {
      "column1": "Item2",
      "column2": "Attr2"
    }
  ]
}

你们能帮帮我吗?非常感谢!

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb aws-api-gateway bulkinsert


    【解决方案1】:

    我认为您正在寻找的是 DynamoDB API Reference 中的“BatchWriteItem”。 BatchWriteItem 与用于单次写入的普通 Item{...} 语法不同,采用了略微不同的样式:

    {"RequestItems":{
        "TableName": [
            {"PutRequest" : {
                "Item": {
                    "Name":{"S" : "Some Name"},
                    "Category":{"S" : "Some Category"}
                }
            }},
            {"PutRequest" : {
                "Item": {
                    "Name":{"S" : "Some Name 2"},
                    "Category":{"S" : "Some Category 2"}
                }
            }}
        ]
    }}
    

    结合将 APIGateway 中的操作更改为 BatchWriteItem 并像这样(未经测试)更新您的映射模板应该可以让您到达那里(或关闭):

    #set($inputRoot = $input.json('$.items')})
    {
        "RequestItems": {
            "ex_table" : [
                #foreach($elem in $inputRoot) {
                    "PutRequest" : {
                        "Item" : {
                            "time": {"S": $input.json('$.time')},
                            "column1": "$elem.column1.S",
                            "column2": "$elem.column2.S",
                        }
                    }
                }#if($foreach.hasNext),#end
                #end
            ]
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 2013-07-20
      • 2019-11-17
      • 2021-11-19
      • 1970-01-01
      • 2019-01-25
      • 2021-11-24
      • 1970-01-01
      相关资源
      最近更新 更多