【问题标题】:Is there a way to create a CloudWatch event after n inserts in database有没有办法在数据库中插入 n 后创建 CloudWatch 事件
【发布时间】:2022-08-14 16:11:36
【问题描述】:
我目前有许多 lambda 函数调用,当消息存在于 SQS 队列中时会调用这些函数。这些 lambda 函数将数据插入数据库。在处理完所有消息后,我需要一种方法来触发 lambda 函数。我的想法是在数据库中发生所有 n 个插入操作之后创建一个 Cloudwatch 事件,但我找不到表明这是可能的文档。这是解决这个问题的好方法吗?是否可以在数据库表上发生 N 次插入后创建 Cloudwatch 事件?
标签:
amazon-web-services
aws-lambda
amazon-sqs
amazon-cloudwatch
【解决方案1】:
您可以通过以下步骤解决此问题:
- 在
ApproximateNumberOfMessagesVisible 指标等于零时创建 Cloudwatch 警报(意味着 SQS 队列为空)
- 配置 Cloudwatch 警报以向 SNS 主题发送消息
- 配置 lambda 函数以订阅 SNS 主题
请注意,标准队列的指标是“近似的”;如果你想要准确,你需要一个 FIFO 队列。来自documentation:
对于标准队列,由于 Amazon SQS 的分布式架构,结果是近似的。在大多数情况下,计数应该接近队列中的实际消息数。
对于 FIFO 队列,结果是准确的。
但是,您应该能够通过将警报的采样周期配置为足够长来缓解这种情况。