在使用 node.js 的 lambda 中,我如何解析运动流中的数据

In lambda using node.js how can I parse the data from a kinesis stream

我设置了以下 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 中的测试示例测试也显示 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];
});

我想你想做的是:

var data = JSON.parse(new Buffer(record.kinesis.data, 'base64'));