我开始在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这样可以在混合中添加另一个东西来维护。
有更好的方法吗?我错过了什么吗?似乎非常接近令人敬畏。
答案 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的结构化数据。”