2017-10-08 37 views
0

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

我有这个工作。但是,它似乎有点笨重。 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网关和Dynamo之间编写特定的lambda。像https://stackoverflow.com/a/42231827/2012130这增加了混合维护的另一件事。

有没有更好的方法?我错过了什么吗?似乎非常接近真棒。

+2

请问您能分享一些代码吗?你在用什么语言?实现目标的一种方法是查看DynamoDB DocumentClient,它应该按照您希望的方式执行。 –

+0

嗨丹尼尔。感谢那。基本上我在这里重新创建教程https://aws.amazon.com/blogs/compute/using-amazon-api-gateway-as-a-proxy-for-dynamodb/ –

+1

DocumentClient就是答案。 – dashmug

回答

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

您可以使用ODM像dynogels,

https://github.com/clarkie/dynogels

我们使用大量无需处理dynamodb语法。 这带来了lambda和语言的混合,但当对象变大以执行映射时,处理起来更容易。

希望这会有所帮助。