2017-02-14 66 views
1

我有一個連接到AWS Kinesis Stream(由其觸發)的AWS lambda。當我將事件發射到Kinesis時,我的lambda被調用。下面是推動事件,將室壁運動(這部分作品)一些示例代碼:如何確定哪個特定的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(); 
}); 

當我成功地把一個記錄,我得到這樣的迴應:

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

我如何使用SequenceNumber查找正在觸發的lambda的RequestId?

回答

1

在你的拉姆達處理,SequenceNumberevent一個元素,而RequestIdcontext.aws_request_id

您可以用拉姆達室壁運動過程記錄嘗試(從AWS藍圖)打印從室壁運動收到的eventcontext。 這將有形式:

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

讓你找到自己sequenceNumber。 您的RequestIdcontext.aws_request_id中也是如此。

因此根據您的需要,您可以在您的lambda日誌中記錄2個值,以瞭解哪個RequestId已被觸發,由哪個SequenceNumber

相關問題