【发布时间】:2017-04-20 15:34:52
【问题描述】:
我正在按照本教程将数据从我的 API 网关推送到 Kinesis 流:
我的身体映射模板设置为.....
{
"StreamName": "my-stream-name",
"Data": "$util.base64Encode($input.path('$.Data'))",
"PartitionKey": "$input.path('$.PartitionKey')"
}
...并将以下内容放入 API 测试的请求正文中...
{
"Data": {
"Foo": "A",
"Bar": "B"
},
"PartitionKey": "some key"
}
然后,我创建了一个 Lambda 函数,该函数针对相同的 Kinesis Stream 设置了触发器。但是,我正在努力解码/反序列化来自 Kinesis 的记录。
exports.handler = (event, context, callback) => {
event.Records.forEach(function(record) {
let payload = JSON.parse(Buffer(record.kinesis.data, 'base64').toString('ascii'))
});
};
似乎数据正在以非 JSON 格式序列化到 Kinesis。 forEach 循环中record.kinesis.data 的值为
e0Zvbz1BLCBCYXI9Qn0=
...通过 Buffer(record.kinesis.data, 'base64').toString('ascii')
返回为
{Foo=A, Bar=B}
不是
{"Foo":"A", "Bar":"B"}
主要目的显然是让有效载荷处于我可以说console.log(payload.Foo)的状态
任何关于我应该做什么/寻找什么的提示将不胜感激。
【问题讨论】:
标签: json amazon-web-services lambda base64 amazon-kinesis