2017-02-14 4 views
1

J'ai un lambda AWS connecté à (déclenché par) un flux AWS Kinesis. Quand je tire des événements dans Kinesis, mon lambda est appelé. Voici quelques exemples de code qui pousse les événements dans Kinesis (cette partie fonctionne):Comment puis-je savoir quelle requête Lambda spécifique mon événement Kinesis a déclenché?

var kinesis = new AWS.Kinesis({ 
    region: 'us-east-1' 
}); 

var params = { 
    Data: new Buffer(JSON.stringify(data)), 
    StreamName: 'myStreamName', 
    PartitionKey: uuid.v1() 
}; 

kinesis.putRecord(params, function(err, data) { 
    done(); 
}); 

Quand j'ai mis avec succès un dossier, je reçois une réponse comme ceci:

{ ShardId: 'shardId-000000000000', SequenceNumber: '49570419697469019326213778569044054238145932258132885506' }

Comment puis-je utiliser la SequenceNumber pour rechercher le RequestId du lambda étant déclenché?

Répondre

1

Dans votre gestionnaire lambda, SequenceNumber est un élément de event et le RequestId est dans context.aws_request_id

Vous pouvez essayer avec le lambda Kinesis processus record (du plan SSFE) pour imprimer le event reçu de Kinesis et le context. Il aura la forme:

"Records": [ 
    { 
    "eventVersion": "1.0", 
    "eventID": "shardId-000000000003:435694251339676724843833861912342195614145114762801", 
    "kinesis": { 
     "approximateArrivalTimestamp": 1487001596.082, 
     "partitionKey": "xx", 
     "data": "xxx", 
     "kinesisSchemaVersion": "1.0", 
     "sequenceNumber": "435694251339676724843833861912342195614145114762801" 
    }, 
    "invokeIdentityArn": "xxx", 
    "eventName": "aws:kinesis:record", 
    "eventSourceARN": "xxx", 
    "eventSource": "aws:kinesis", 
    "awsRegion": "xxx" 
    } 
] 

Vous trouvez votre sequenceNumber. Il en est de même pour votre RequestId en context.aws_request_id. Donc en fonction de vos besoins, vous pouvez enregistrer les 2 valeurs dans votre journal lambda, pour savoir quel RequestId a été déclenché par quel numéro de séquence