improvement: cache events, use IDs only on Kinesis bus

* send events to API first before they hit the event bus
* use a local LRU event cache to avoid serializing events
* error handling and logging improvements for debugging