I guess I took away a different set of lessons when using lambda as a kinesis source/sink for streaming, high volume, time-sensitive data. Which is you may want to rethink it and use the KCL/KPL instead. You lose a lot of application control when using kinesis and lambda together.
A record that spikes your memory footprint? Lambda will fail and continuously retry the batch.
Have a record that unexpectedly takes a long time to process? Lambda will time out and continuously retry.
You also have no control over when the lambda execution context recycles. Which can make a big difference to your datastore usage.