我将kinesis设置为以下lambda函数作为其事件源。数据作为流通过,这里我将其解析为字符串,例如{id=2, sourceIp=220.220.1.220 }。我想将其转换为node.js中的对象。我怎样才能做到这一点?

exports.handler = (event, context) => {

    event.Records.forEach(function(record) {
        var data = new Buffer(record.kinesis.data, 'base64').toString('ascii');
        console.log('data: ', data)
    });
};

最佳答案

我不熟悉Kinesis的实际输出,但对您提供的示例有些困惑。甚至在lambda中的测试示例test都显示Kinesis对象看起来像这样

"kinesis": {
    "partitionKey": "partitionKey-3",
    "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0IDEyMy4=",
    "kinesisSchemaVersion": "1.0",
    "sequenceNumber": "49545115243490985018280067714973144582180062593244200961"
}

这意味着解析的字符串应类似于示例中的"id=2,sourceIp=220.220.1.220"。如果是这种情况,您可以做一些复杂的事情,将数据放入适当的对象中。
var json = {};
data.split(',').map(function(each){
    return each.split('=');
}).forEach(function(pair){
    json[pair[0]] = pair[1];
});

关于javascript - 在使用node.js的lambda中,我如何解析运动学流中的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37825431/

10-11 08:47