Aws lambda 为AWS Kinesis设置批处理执行前的超时延迟
我使用的是AWS Kinesis(使用无服务器框架配置),我使用的是1的batchSizeAws 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秒 我希望在每
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已经运行了多长时间
最后,我建议更改您的体系结构。除了产生的额外成本之外,您还人为地降低了平台的速度