https://docs.aws.amazon.com/lambda/latest/dg//with-kinesis.html#services-kinesis-errors
实际记录不包括在内,因此您必须处理此记录并在它们过期和丢失之前从流中检索它们。
根据上述,事件负载不会被发送到 DLQ 事件,因此此处预计会出现“缺少事件数据”。
因此,为了取回实际记录,您可能需要尝试类似
1) 假设我们有以下 kinesis 批处理信息
{
"KinesisBatchInfo": {
"shardId": "shardId-000000000001",
"startSequenceNumber": "49601189658422359378836298521827638475320189012309704722",
"endSequenceNumber": "49601189658422359378836298522902373528957594348623495186",
"approximateArrivalOfFirstRecord": "2019-11-14T00:38:04.835Z",
"approximateArrivalOfLastRecord": "2019-11-14T00:38:05.580Z",
"batchSize": 500,
"streamArn": "arn:aws:kinesis:us-east-2:123456789012:stream/mystream"
}
}
2) 我们可以通过类似的方式找回记录
import AWS from 'aws-sdk';
const kinesis = new AWS.Kinesis();
const ShardId = 'shardId-000000000001';
const ShardIteratorType = 'AT_SEQUENCE_NUMBER';
const StreamName = 'my-awesome-stream';
const StartingSequenceNumber =
'49601189658422359378836298521827638475320189012309704722';
const { ShardIterator } = await kinesis
.getShardIterator({
ShardId,
ShardIteratorType,
StreamName,
StartingSequenceNumber,
})
.promise();
const records = await kinesis
.getRecords({
ShardIterator,
})
.promise();
console.log('Records', records);
注意:不要忘记确保您的进程有权 1) kinesis:GetShardIterator 2) kinesis:GetRecords
希望有帮助!