AWS API Gateway将JSON存储到DynamoDB

时间:2016-05-03 00:41:45

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

我在尝试使用API​​网关作为DynamoDB的代理时遇到了问题。

基本上,如果我知道要存储的数据的结构,它会很有用,但无论有效负载结构如何,我都无法使其动态化。

有很多网站都在解释如何使用API​​网关作为DynamoDB的代理。 我发现没有解释如何存储JSON对象。

基本上我将此JSON发送到我的API端点:

{
    "entryId":"abc",
    "data":{
        "key1":"123",
        "key2":123
    }
}

如果我使用以下模板进行映射,则数据会正确放入我的数据库

{ 
    "TableName": "Events",
    "Item": {
        "entryId": {
            "S": "abc"
        },
        "data": {
            "M": {
              "key1": {
                "S": "123"
              },
              "key2": {
                "N": "123"
              }
            }
        }
    }
}

但是,我不知道"数据的结构"因此,为什么我希望映射是动态的,甚至更好,我想避免任何映射。

我设法让它变得动态,但我的所有条目现在都是String类型:

      "data": { "M" : {
      #foreach($key in $input.path('$.data').keySet())
      "$key" : {"S": "$input.path('$.data').get($key)"}#if($foreach.hasNext),#end
      #end }
              }

是否可以动态获取类型? 我不太确定API网关映射的工作原理。

谢谢你的帮助。

的Seb

2 个答案:

答案 0 :(得分:1)

插入Dynamodb时,您不会避免某种映射。我建议使用Lambda函数而不是服务代理,以便在将数据映射到Dynamodb架构时提供更多控制和灵活性。

答案 1 :(得分:-1)

您可以启用CloudWatch日志以在预期转换后验证有效负载。您还可以使用AWS API Gateway控制台中的测试调用功能来了解映射的工作原理。

以下是使用Amazon API Gateway作为DynamoDB代理的博客。 https://aws.amazon.com/blogs/compute/using-amazon-api-gateway-as-a-proxy-for-dynamodb/