我想多次调用 lambda,但不能与 30 分钟(几分钟)的调用并发,该调用在 2 个 lambda 触发器之间具有事件自定义信息和缓冲区。所以基本上,一次 1 个 lambda 调用。
我的期望:
最初,我认为有SQS,它将通过delaySeconds方法触发Lambda。然而,如果突发消息具有延迟秒属性,它们往往会异步工作并在几秒内触发 lambda。
预期结果:
SQS -> 消息 1 -> Lambda 触发器 -> 30 分钟 -> 消息 2 -> Lambda 触发器 -> 30 分钟
现实:
SQS -> 30mins -> Message1 -> Lambda Trigger
-> 30mins -> Message2 -> Lambda Trigger (Few second delay only)
然后我想到了一个在 lambda 调用后具有等待时间的步骤函数,但是通过多个并发执行,我会得到相同的结果。
我想知道如何才能达到这样的要求。
将另一个 Lambda 函数配置为所有事件的“接收器”。 该 Lambda 将其收到的任何事件写入公共存储(可能是 RDS)。这个lambda函数不需要并发限制
将您想要限制/缓冲的 lambda 配置为由 EventBridge 触发(基于时间的触发 - 每 30 分钟)。该 lambda 函数应该从公共存储中读取所有待处理事件并决定要做什么