I'm looking into serverless technology (specifically, Python, Django and Zappa on AWS Lambda) and one thing about error handling struck me. In the Zappa docs it says
By default, AWS Lambda will attempt to retry an event based (non-API Gateway, e.g. CloudWatch) invocation if an exception has been thrown.
In the AWS Lambda documentation, I read:
Depending on the event source, AWS Lambda may retry the failed Lambda function. For example, if Kinesis is the event source, AWS Lambda will retry the failed invocation until the Lambda function succeeds or the records in the stream expire.
Does this mean a function will be called an infinite number of times when it raises an unhandled exception? If this goes on unchecked, the costs must go through the roof.
Related to that; what is meant by "until the records in the stream expire"? What records, and what stream?