Я очень новичок в Amazon Kinesis, поэтому, возможно, это просто проблема в моем понимании, но в FAQ AWS Lambda FAQ он говорит:
Записи Amazon Kinesis и DynamoDB Streams, отправленные на вашу функцию AWMS Lambda, строго сериализованы за каждый осколок. Это означает, что если вы поместите две записи в один и тот же осколок, Lambda гарантирует, что ваша функция Lambda будет успешно вызвана с первой записью, прежде чем она будет вызвана со второй записью. Если вызов для одной записи истекает, дросселируется или встречается с любой другой ошибкой, Lambda будет повторять попытку, пока она не удастся (или запись не достигнет 24-часового срока действия), прежде чем перейти к следующей записи. Порядок записи записей по различным осколкам не гарантируется, и обработка каждого осколка происходит параллельно.
Мой вопрос: что произойдет, если по какой-то причине некоторые некорректные данные попадут на осколок производителя и когда функция лямбда забирает его из-за ошибок, а затем просто продолжает повторять попытку? Это означает, что обработка этого конкретного осколка будет заблокирована в течение 24 часов по ошибке.
Лучше всего обрабатывать такие ошибки приложения, обертывая проблему в пользовательской ошибке и отправляя эту ошибку вниз по течению вместе со всеми успешно обработанными записями и позволяя ее обрабатывать? Конечно, это все равно не помогло бы в случае неустранимой ошибки, которая разбила бы программу как нулевой указатель: снова мы вернемся к циклу повторной блокировки в течение следующих 24 часов.