PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak sprawić, by polecenie kopiowania kontynuowało działanie z przesunięciem ku czerwieni nawet po przekroczeniu limitu czasu funkcji lambda, która ją zainicjowała?

dokumentacja AWS nie jest jasne, co się stanie, gdy nastąpi przekroczenie limitu czasu. Myślę jednak, że można śmiało powiedzieć, że przechodzi on w fazę „Zamknięcia”, w której to momencie kontener środowiska uruchomieniowego zostaje przymusowo zakończony przez środowisko.

Oznacza to, że połączenie gniazda używane przez połączenie z bazą danych zostanie zamknięte, a proces Redshift, który nasłuchuje tego gniazda, otrzyma koniec pliku — rozłączenie klienta. Normalnym zachowaniem każdej bazy danych w tej sytuacji jest zakończenie wszelkich zaległych zapytań i wycofanie ich transakcji.

Powodem, dla którego podałem ten opis, jest poinformowanie Cię, że nie możesz wydłuż czas życia zapytania poza czas życia Lambdy, która je inicjuje. Jeśli chcesz pozostać przy użyciu biblioteki połączeń z bazą danych, musisz użyć usługi, która nie przestaje działać:AWS Batch lub ECS to dwie opcje.

Ale jest lepsza opcja:Redshift Data API , który jest obsługiwany przez Boto3 .

Ten interfejs API działa asynchronicznie:przesyłasz zapytanie do Redshift i otrzymujesz token, którego można użyć do sprawdzenia działania zapytania. Możesz również poinstruować Redshift, aby wysłał wiadomość do AWS Eventbridge, gdy zapytanie się zakończy/nie powiedzie się (aby móc utworzyć inną Lambdę, aby podjąć odpowiednie działania).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wydajne wyrażenie GROUP BY CASE w Amazon Redshift/PostgreSQL

  2. Dziwne zachowanie w Postgresql

  3. Dynamiczne upsert w postgresql

  4. Jak poprawić wydajność podzapytania?

  5. Kontener Spring Docker nie może uzyskać dostępu do kontenera Postgres Docker