首页 > 解决方案 > Trigger AWS Lambda once SQS fifo queue is not empty

问题描述

I got an SQS FIFO queue, I want to know if there is a way to trigger an AWS lambda once the queue is not empty. For example, if my queue is empty and a new message enters trigger lambda, but if the queue is already containing at least one message and a new message enters no lambda will be triggered. Is it possible?

标签: amazon-web-servicesaws-lambdaamazon-sqs

解决方案


有一个名为的 Amazon CloudWatch 指标ApproximateNumberOfMessagesVisible显示队列中的消息数。文档说“对于 FIFO 队列,结果是准确的。”

您可以创建一个 CloudWatch 警报,当消息数量在一段时间内降至零时触发。警报可以向Amazon SNS 主题发送消息。如果您将 AWS Lambda 函数订阅到此主题,它将在队列为空指定持续时间(例如超过 5 分钟)时触发。只有当报警器进入'Alarm'状态时才会触发,直到报警器退出状态重新进入状态后才会再次触发。

重要提示:配置警报时,请转到附加配置并将丢失数据处理设置为“将丢失的数据视为错误(超出阈值)”。这是必需的,因为如果队列为空,SQS 队列将不会发送指标。(许多队列是空的,所以这节省了大量的度量存储!)


推荐阅读