Lambda - great on paper
My experience with AWS Lambda was that it looked like it was exactly what I needed. Until I tried using it...
The documentation for the particular function I wanted to use was horrific. There was a single page on the internet that described its used, and much of the information was missing or incorrect. With 18 hours Amazon had to make three changes to the documentation, while I tore my hair out wondering why I was getting unexpected data passed to the function.
Then there's the cold start times - I had a function that took <600ms to run, but if not run for a while would actually take >20s* to run. Seeing as the AWS service calling that function mandated that it would timeout after 5s, I realised that it's pointless to rely up it. Unless of course I decided to dedicate an EC2 instance to the function, but then I'm paying for 750hrs a month (which I'm sure Amazon would love).
I learned that biggest barrier to using Lambda isn't the vendor lock-in (I was aware of it when I started the project), it's Lambda itself.
* 4 s of that was used to deserialize 500 bytes, ffs