You could trigger the lambda directly from a FIFO topic, but in my case since the original publisher of the messages is a scheduler, and the amount of data is unpredictable (depends on the business growth) I don't want to put a load on the lambda in the future. Today I might be processing 1k documents which means 1k messages that are published in the topic, but later in the future these might be 10k documents/messages. I used an SQS queue in front of the lambda to put some back pressure and protect my downstream which is the lambda from receiving a lot of messages at once (burst), since let's not forget SNS is high throughput.