26
votes

I am trying to trigger lambda execution to execute an item on a FIFO queue. Other than polling, what options do we have to accomplish that? We just learned that we cannot directly trigger a lambda execution from a FIFO queue, which is only supported from the standard queue at this time. I also learned that we cannot subscribe an SNS topic to a FIFO queue – which is only supported on the standard queue as well.

Has anybody found a work around for this yet until Amazon releases an update?

3
November 2019: AWS Lambda now supports Lambda triggers. See: AWS Lambda Supports Amazon SQS FIFO (First-In-First-Out) as an Event SourceJohn Rotenstein

3 Answers

22
votes

Your only option here is to poll the queue at certain intervals.

You can create a CloudWatch event trigger that invokes a lambda function (lets say every 10 minutes) which polls the queue and does the processing.

Update

This is now possible. SQS FIFO queues can now be specified as an event source to your Lambda Function.

https://aws.amazon.com/blogs/compute/new-for-aws-lambda-sqs-fifo-as-an-event-source/

3
votes

For anyone that is interested AWS Now Supports Lambda Triggers from FIFO SQS as of yesterday. Thanks @JohnRotenstein for pointing that out.

-4
votes

SQS event sourcing does not do anything than pulling queue every second with long polling.

If you want everything in order; - Create a Cloudwatch event trigger for every second (as Asdfg suggested) - Set concurrency limit to 1 - Receive messages with long polling to reduce the cost