В документации говорится, что повторяется еще два раза, если вызов асинхронный . SQS - это система, основанная на опросах. Лямбда будет опрашивать очередь, и все ее вызовы будут синхронными .
Для сервисов AWS на основе опросов (Amazon Kinesis, Amazon DynamoDB, Amazon
Простая служба очереди), AWS Lambda опрашивает поток или очередь сообщений
и синхронно вызывает вашу лямбда-функцию.
Что вы можете сделать, это настроить DLQ в исходной очереди SQS в случае сбоя вашего сообщения, чтобы вы могли либо продолжить его анализ, либо снова обработать сообщение на основе настроенной вами логики.
EDIT
ОП почему-то не может видеть сообщения в DLQ. Я приложил изображения, чтобы показать, что это работает.
Лямбда-sqs-тест запускается новым сообщением в очереди SQS sqs-test
Это очереди (sqs-test-dlq настроен как DLQ для sqs-test).
Это код для лямбда-функции:
Это конфигурация для sqs-test
И это политика переадресации
После сбоя сообщений в функции Lambda они были успешно отправлены на настроенный DLQ:
Возможно, вам не хватает какой-то базовой конфигурации, потому что она работает без проблем, как показано на изображениях выше.