我正在使用AWS Lambda若要扫描数据,请执行以下操作:DynamoDB表格。这是我得到的回报:
{
"videos": [
{
"file": {
"S": "file1.mp4"
},
"id": {
"S": "1"
},
"canvas": {
"S": "This is Canvas1"
}
},
{
"file": {
"S": "main.mp4"
},
"id": {
"S": "0"
},
"canvas": {
"S": "this is a canvas"
}
}
]
}
我的前端应用程序正在使用Ember数据Rest适配器它不接受这样的响应。有没有办法让我得到普通的JSON格式?有一个名为NPM的模块dynamodb-marshaler
将DynamoDB数据转换为普通的JSON。我在找一个本机解决方案如果可能的话。
发布于 2015-09-23 18:30:20
亚马逊网络服务JavaScript软件开发工具包最近更新了文档客户端,这正是您所需要的。在这里查看公告和用法示例:
http://blogs.aws.amazon.com/javascript/post/Tx1OVH5LUZAFC6T/Announcing-the-Amazon-DynamoDB-Document-Client-in-the-AWS-SDK-for-JavaScript
发布于 2017-12-06 07:44:28
Node.js使用unmarshall
函数来源AWSJavaScriptSDK
const AWS = require("aws-sdk");
exports.handler = function( event, context, callback ) {
const newImages = event.Records.map(
(record) => AWS.DynamoDB.Converter.unmarshall(record.dynamodb.NewImage)
);
console.log('Converted records', newImages);
callback(null, `Success`);
}
Python使用TypeDeserializer.deserialize
来自boto3.dynamodb.types
import json
from boto3.dynamodb.types import TypeDeserializer
def ddb_deserialize(r, type_deserializer = TypeDeserializer()):
return type_deserializer.deserialize({"M": r})
def lambda_handler(event, context):
new_images = [ ddb_deserialize(r["dynamodb"]["NewImage"]) for r in event['Records'] ]
print('Converted records', json.dumps(new_images, indent=2))
发布于 2017-03-11 16:27:38
我知道这有点老了,但我在node js lambda函数中处理来自dynamoDB的流数据时遇到了同样的问题。我使用了@churro提出的
导入sdk和输出转换器
var AWS = require("aws-sdk");
var parse = AWS.DynamoDB.Converter.output;
通过一个小技巧使用parse函数
exports.handler = function( event, context, callback ) {
var docClient = new AWS.DynamoDB.DocumentClient();
event.Records.forEach((record) => {
console.log(record.eventID);
console.log(record.eventName);
console.log('DynamoDB Record:', parse({ "M": record.dynamodb.NewImage }));
});
callback(null, `Successfully processed ${event.Records.length} records.`);
}
希望能有所帮助
https://stackoverflow.com/questions/32712675
复制相似问题