В тот момент, когда ваш код выдает необработанное / необработанное исключение, Lambda перестает работать.Если для максимального числа полученных сообщений установлено значение 1, сообщение будет отправлено в DLQ после первого сбоя, оно не будет повторено.Например, если максимальный счетчик приема равен 5, то в момент сбоя функции Lambda сообщение будет возвращено в очередь после истечения времени ожидания видимости.
Причина такого поведения заключается в том, что вы даете Lambdaразрешения опроса очереди от вашего имени.Если он получает сообщение, он вызывает функцию и дает вам единственную возможность обработать это сообщение.Если вам не удается, сообщение возвращается в очередь, и Lambda продолжает опрашивать очередь от вашего имени, не имеет значения, будет ли следующее сообщение таким же, как сообщение с ошибкой или новое сообщение.
Вот отличныйблог пост , который помог мне понять, как работают эти триггеры.