2017-10-08 35 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和語言的混合,但當對象變大以執行映射時,處理起來更容易。

希望這會有所幫助。