【发布时间】:2017-11-23 03:47:49
【问题描述】:
我开始使用 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 这增加了另一个需要维护的东西。
有没有更好的方法?我错过了什么吗?似乎非常接近真棒。
【问题讨论】:
-
你能分享一些代码吗?您使用什么语言?实现您所追求的一种方法是查看 DynamoDB DocumentClient,它应该按照您想要的方式执行。
-
你好丹尼尔。感谢那。基本上我在这里重新创建教程aws.amazon.com/blogs/compute/…
-
DocumentClient 就是答案。
-
DocumentClient 似乎可以满足我的要求。但是我必须在 API 和 DynamoDB 之间有一个 lambda 才能调用它吗?
-
是的,您当然需要一个 Lambda 函数才能使用 DocumentClient。您在问题中列出的两个选项(映射模板或 Lambda 函数)是您仅有的两个可能的解决方案。没有更容易/更简单的方法来完成您想要的。
标签: amazon-web-services amazon-dynamodb aws-api-gateway