Two of those are not like the other. Having queues in your system is most of the time a good decision. Decoupling workloads, buffering jobs, distributing workload, all of those are great benefits and with queues you get them all with an extremely simple interface (put, get). There isn't a lot of gotchas (there are some as with any software system) but it's a completely different thing compared to lambdas or kinesis.