如何确定哪个特定的Lambda请求触发了我的Kinesis事件?

我有一个连接到AWS Kinesis Stream(由其触发)的AWS lambda。 当我将事件发射到Kinesis时,我的lambda被调用。 下面是一些将事件推送到Kinesis的示例代码(这部分工作):

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(); }); 

当我成功创build一个logging,我得到这样的回应:

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

我如何使用SequenceNumber来查找被触发的lambda的RequestId?

在您的lambda处理程序中, SequenceNumberevent的元素, RequestId位于context.aws_request_id

您可以尝试使用lambda kinesis-process-record(来自aws蓝图)来打印从kinesis接收的eventcontext 。 它将有以下forms:

 "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" } ] 

所以你find你的sequenceNumbercontext.aws_request_idRequestId是一样的。

因此,根据您的需要,您可以在您的lambda日志中logging2个值,以了解哪个RequestId被哪个SequenceNumber触发