I think bundling Kinesis in here is an overstatement. Kinesis is a stream, not a queue. You need to know when to each each. If you can live without the guarantees Kinesis provides (like in-order requests) definitely use SQS. But use a streaming service as a queue. Also, have you looked into using Lambda with Kinesis? Much simpler.