Документацията на AWS не е изрично какво се случва, когато настъпи таймаут. Но мисля, че е безопасно да се каже, че той преминава във фазата на „Изключване“, в който момент контейнерът за изпълнение е принудително прекратен от средата.
Това означава, че връзката на сокета, използвана от връзката с базата данни, ще бъде затворена и процесът Redshift, който слуша този сокет, ще получи край на файла - прекъсване на връзката на клиента. Нормалното поведение на всяка база данни в тази ситуация е да прекрати всички неуредени заявки и да върне назад техните транзакции.
Причината, поради която дадох това описание, е да ви уведомя, че не можете удължете живота на заявка отвъд живота на Lambda, която инициира тази заявка. Ако искате да продължите да използвате библиотека за свързване към база данни, ще трябва да използвате услуга, която няма изчакване:AWS Batch или ECS са две опции.
Но има по-добър вариант:API на Redshift Data , който е поддържан от Boto3 .
Този API работи асинхронно:изпращате заявка до Redshift и получавате токен, който може да се използва за проверка на операцията на заявката. Можете също така да инструктирате Redshift да изпрати съобщение до AWS Eventbridge, когато заявката бъде завършена/неуспешна (така че можете да създадете друга Lambda, за да предприемете подходящо действие).