AWS:仅在每天的特定时间范围内调用 lambda

问题描述 投票:0回答:1

我目前有一项服务,该服务将消息发布到 SNS 主题,该主题具有带有名称过滤器的订阅,以将其添加到 SQS 队列,最终触发 lambda 函数。

我有一个使用相同的服务来发出消息的用例,但对于一个特定的过滤器名称订阅,仅在 00:00 和 03:00 的三小时期间调用 lambda。在这些时间之外,消息应该备份,然后在第二天的这个时间窗口内重新分发。

这可能吗?需要如何/什么服务才能做到这一点?

aws-lambda amazon-sqs amazon-sns aws-event-bridge
1个回答
0
投票

您可以使用 UpdateEventSourceMapping API 暂停并稍后恢复队列中的 Lambda 调用。

创建一个新的NightQueue,订阅相关模式。创建 Lambda 处理程序和事件源映射以轮询 NightQueue 中的消息。

接下来创建两个按计划运行的 EventBridge 规则。 OnRule 安排在

00:00
,OffRule 安排在
03:00
。为规则创建targets,指向 Lambda 函数。将目标的事件详细信息输入设置为 OnRule 的
{"action": "on"}
之类的内容。当 Lambda 从 OnRule 接收到带有
"on"
操作的有效负载时,它会通过
UpdateEventSourceMapping
SDK 调用启用 NightQueue 的事件源映射,并设置
Enabled: true
。当由 OffRule 触发时(Lambda 接收
{"action": "off"}
作为事件输入),Lambda 会在 SDK 调用中暂停与
Enabled: false
的事件源映射,消息会累积在 NightQueue 中,直到第二天晚上重新启用映射。

注意:文档说启用/禁用更改最多可能需要 15 分钟才能生效。

© www.soinside.com 2019 - 2024. All rights reserved.