DynamoDB为'vanilla'JSON

时间:2017-10-08 15:25:37

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

我开始在AWS中使用一些托管服务。看起来应该很简单的一件事是使用API​​网关来保护和公开对DynamoDB的调用。

我有这个工作。然而,它看起来有点笨重。 DynamoDB返回如下内容:

{
  "id":{"N":"3"}
  // Lots of other fields
}

当我真的(以及那里的大多数其他消费者)想要这样的事情时:

{
  "id":"3"
  // Lots of other fields
}

我看到它的方式,我有两个选择。

1)在AWS API UI中按字段添加响应映射。这似乎很费力且容易出错:

#set($inputRoot = $input.path('$'))
{
   "Id": "$elem.Id.N"
    // Lots of other fields 
}

2)在API Gateway和Dynamo之间编写一个执行此映射的特定lambda。像https://stackoverflow.com/a/42231827/2012130这样可以在混合中添加另一个东西来维护。

有更好的方法吗?我错过了什么吗?似乎非常接近令人敬畏。

3 个答案:

答案 0 :(得分:1)

你可以使用像dynogels这样的ODM,

https://github.com/clarkie/dynogels

我们大量使用它而不处理dynamodb语法。 这会带来lambda和语言,但是当对象变大以执行映射时,它会更容易处理。

希望这有帮助。

答案 1 :(得分:1)

const AWS = require('aws-sdk');
var db = new AWS.DynamoDB.DocumentClient({
    region: 'us-east-1',
    apiVersion: '2012-08-10'
});

答案 2 :(得分:0)

今天又添加了另一个选项。它仍将涉及一个lambda步骤,但是..

“Amazon DynamoDB DataMapper for JavaScript是一个高级客户端,用于在AWS SDK for JavaScript之上编写和读取DynamoDB的结构化数据。”

https://aws.amazon.com/blogs/developer/introducing-the-amazon-dynamodb-datamapper-for-javascript-developer-preview/