【问题标题】:How can I figure out which specific Lambda request my Kinesis event triggered?如何确定我的 Kinesis 事件触发了哪个特定 Lambda 请求?
【发布时间】:2017-02-14 04:19:39
【问题描述】:

我有一个与 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();
});

当我成功放置记录时,我会收到这样的响应:

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

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

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda amazon-kinesis


    【解决方案1】:

    在您的 lambda 处理程序中,SequenceNumberevent 的一个元素,而 RequestIdcontext.aws_request_id

    您可以尝试使用 lambda kinesis-process-record(来自 aws 蓝图)打印从 kinesis 收到的 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"
      }
    ]
    

    所以你找到了你的sequenceNumbercontext.aws_request_id 中的 RequestId 也是如此。

    因此,根据您的需要,您可以在 lambda 日志中记录这 2 个值,以了解哪个 RequestId 由哪个 SequenceNumber 触发

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 2016-05-03
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      相关资源
      最近更新 更多