aws-lambda - 在批量执行 AWS Kinesis 之前设置超时延迟
问题描述
我正在使用 AWS Kinesis(使用无服务器框架配置)并且我正在使用1的batchSize。
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 已经运行了多长时间。
最后,我建议更改您的架构。除了产生的额外成本外,您还人为地减慢了平台速度。
推荐阅读
- beautifulsoup - 比较容器标签的“类”
- apache-spark - 如何在不使用 HDP 3.1 中的仓库连接器的情况下将表从 spark 中写入 hive
- php - 1到n个数字组合的概率
- android - 如何取消报警管理器每日通知?
- kubernetes - 如何编写 kubernetes 部署以获取使用 GCP cloudbuild 构建的最新镜像
- mongodb - 如何使用 Map 动态生成的键查询集合中的所有文档?
- ios - Xcode 11 在捆绑包 NSBundle 中找不到名为“Main”的情节提要
- android - aab的签名和apk文件一样吗?
- linux - Linux全局描述符表和本地描述符表对齐
- asp.net-core - AspNetCore 3 中出现意外的“缓存条目必须在设置 SizeLimit 时为 Size 指定值”消息