问题
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?
回答1:
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 SQS FIFO queues.
https://aws.amazon.com/blogs/compute/new-for-aws-lambda-sqs-fifo-as-an-event-source/
回答2:
For anyone that is interested AWS Now Supports Lambda Triggers from FIFO SQS as of yesterday. Thanks @JohnRotenstein for pointing that out.
回答3:
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
来源:https://stackoverflow.com/questions/53416890/cant-trigger-lambdas-on-sqs-fifo