Thanks for sharing your thoughts, esp on Lambda.<p>For Kinesis, I planned to use Firehose, not Streams (the latter have to be provisioned, which I was hoping to avoid). The firehose could put data into S3 for me, and S3 would trigger lambda. However I just realized that S3 will only make 3 attempts to invoke the Lambda, so that pretty much rules out this part of my design - the data will not get lost, but it will not get indexed either. I may run map&#x2F;reduce later, but I don&#x27;t want to be dependent on doing that to pick the loose ends.<p>These are just server logs, they don&#x27;t affect business continuity. Still I wouldn&#x27;t want to be sitting there and wondering &quot;is this user having connectivity problems, or did I just lose a pile of logs?&quot;.<p>I could probably put the files directly into S3, got carried away stacking my AWS features together. :) I&#x27;d need to be more careful with batching, so as not to create batches too small or too large. Perfectly doable, though Kinesis Firehose already does that for me. Plus in case of the EC2 instance death I will lose the current batch with the hand-rolled solution, but not with Firehose.<p>So I guess I should just put a batch of data directly to S3 and send an SQS message to make sure that it&#x27;s indexed properly, then delete the local files.<p>I really don&#x27;t want to pick up another thing that I have to understand and manage. Like ELK. Someone who knows ELK will probably have no problem managing it, but my head is full with business domain problems.