2016-06-15 6 views
0

Ich habe die folgende Lambda-Funktion mit Kinesis als Ereignisquelle eingerichtet. Die Daten kommen als ein Strom durch, hier analysiere ich das, um als eine Schnur durch z. {id=2, sourceIp=220.220.1.220 }. Ich möchte dies in ein Objekt in node.js konvertieren. Wie kann ich das machen?In Lambda mit node.js wie kann ich die Daten aus einem Kinesis-Stream analysieren

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

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

shouldnt Sie 'data' statt' buffer' dort anmelden? – Rooster

Antwort

1

Ich bin nicht vertraut mit der tatsächlichen Ausgabe von Kinesis, aber ich bin ein wenig verwirrt durch das Beispiel, das Sie gegeben haben. Das Testbeispiel Test auch in Lambda zeigt das Kinesis Objekt wie dies sucht

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

Welches ist die analysierte Zeichenfolge bedeutet soviel wie "id=2,sourceIp=220.220.1.220" aus Ihrem Beispiel aussehen sollte. Wenn dies der Fall ist, könnten Sie etwas Konvolut machen, um die Daten in ein geeignetes Objekt zu bringen.

var json = {}; 
data.split(',').map(function(each){ 
    return each.split('='); 
}).forEach(function(pair){ 
    json[pair[0]] = pair[1]; 
}); 
0

denke ich, was Sie wollen, dies zu tun ist:

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