2017-02-14 2 views
1

У меня есть лямбда AWS, которая подключена к (возбужденному) потоком AWS Kinesis. Когда я запускаю события в Кинезисе, меня зовут лямбда. Вот пример кода, который толкает события в 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(); 
}); 

Когда я успешно поставил рекорд, я получаю ответ, как это:

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

Как я могу использовать SequenceNumber для поиска запроса lambda?

ответ

1

В обработчике лямбда SequenceNumber является элементом event и RequestId в context.aws_request_id

Вы можете попробовать с лямбда-KINESIS-процесса-запись (AWS план), чтобы напечатать event полученную от кинезиса и context. Он будет иметь вид:

"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. То же самое для вашего RequestId в context.aws_request_id.

Так что, в зависимости от вашей потребности, вы можете зарегистрировать 2 значения в вашем лямбда-журнале, чтобы узнать, какой запрос запрашивается, с помощью которого SequenceNumber

Смежные вопросы