Aws lambda 为AWS Kinesis设置批处理执行前的超时延迟

Aws lambda 为AWS Kinesis设置批处理执行前的超时延迟,aws-lambda,serverless-framework,amazon-kinesis,Aws Lambda,Serverless Framework,Amazon Kinesis,我使用的是AWS Kinesis(使用无服务器框架配置),我使用的是1的batchSize processEvents: handler: ... events: - stream: type: kinesis batchSize: 1 arn: Fn::GetAtt: [KinesisStream, Arn] 例如,在读取下一批数据之前,是否有办法将超时时间设置为20秒 我希望在每

我使用的是AWS Kinesis(使用无服务器框架配置),我使用的是1batchSize

processEvents:
    handler: ...
    events:
      - stream:
          type: kinesis
          batchSize: 1
          arn:
            Fn::GetAtt: [KinesisStream, Arn]
例如,在读取下一批数据之前,是否有办法将超时时间设置为20秒

我希望在每个lambda执行之前有一个时间延迟,基本上从流中提取一条记录


谢谢大家!

你的Lambda被Kinesis同步调用,只有Lambda成功返回,它才会进入下一个事件

这些情况使您有机会自己在Lambda代码中编写延迟

await new Promise(done => setTimeout(done, 20000))
processMyEvent(event)
批处理大小为
1
时,必须先完成此Lambda,然后才能运行下一个事件

但是请注意,额外的Lambda运行时间将产生成本

您也可以转到另一个方向,执行实际代码,然后延迟关闭Lambda。如果您的处理在运行时间上发生变化,您甚至可以使用上下文对象来查看Lambda已经运行了多长时间


最后,我建议更改您的体系结构。除了产生的额外成本外,您还人为地降低了平台的速度。

您的Lambda被Kinesis同步调用,并且只有在Lambda成功返回时,它才会进入下一个事件

这些情况使您有机会自己在Lambda代码中编写延迟

await new Promise(done => setTimeout(done, 20000))
processMyEvent(event)
批处理大小为
1
时,必须先完成此Lambda,然后才能运行下一个事件

但是请注意,额外的Lambda运行时间将产生成本

您也可以转到另一个方向,执行实际代码,然后延迟关闭Lambda。如果您的处理在运行时间上发生变化,您甚至可以使用上下文对象来查看Lambda已经运行了多长时间

最后,我建议更改您的体系结构。除了产生的额外成本之外,您还人为地降低了平台的速度