AWS-dokumentationen är inte explicit om vad som händer när timeout inträffar. Men jag tror att det är säkert att säga att den övergår till "avstängningsfasen", då körtidsbehållaren tvångsavslutas av miljön.
Vad detta betyder är att socket-anslutningen som används av databasanslutningen kommer att stängas, och Redshift-processen som lyssnar på den socket kommer att ta emot ett filslut -- en klientfrånkoppling. Det normala beteendet för en databas i den här situationen är att avsluta alla utestående frågor och återställa deras transaktioner.
Anledningen till att jag gav den beskrivningen är för att låta dig veta att du inte kan förlänga livslängden för en fråga utöver livslängden för den Lambda som initierar den frågan. Om du vill fortsätta att använda ett databasanslutningsbibliotek måste du använda en tjänst som inte tar timeout:AWS Batch eller ECS är två alternativ.
Men det finns ett bättre alternativ:Redshift Data API a> , som stöds av Boto3 .
Detta API fungerar asynkront:du skickar en fråga till Redshift och får en token som kan användas för att kontrollera frågans funktion. Du kan också instruera Redshift att skicka ett meddelande till AWS Eventbridge när frågan slutförs/misslyckas (så att du kan skapa en annan Lambda för att vidta lämpliga åtgärder).