Jak mogę przyspieszyć proces debugowania szablonu, czy też utknąłem na zawsze, zauważając swoje błędy pół godziny po ich popełnieniu?
Oto kilka sugestii dotyczących sprawdzonych metod, skupiających się w szczególności na poprawie szybkości iteracji tworzenia złożonych szablonów CloudFormation:
Użyj narzędzi CloudFormation do weryfikacji szablonów i aktualizacji stosów
AWS przedstawił to już w swoim własnym dokumencie z najlepszymi praktykami , więc nie będę ich powtarzał:
Celem tego kroku jest wyłapanie oczywistych błędów składniowych lub logicznych przed faktycznym utworzeniem / aktualizacją stosu.
Zasoby testowe w izolacji
Przed użyciem dowolnego zasobu CloudFormation w złożonym stosie upewnij się, że dokładnie rozumiesz pełny zakres zachowań związanych z tworzeniem / aktualizowaniem / usuwaniem tego zasobu, w tym wszelkie ograniczenia użytkowania i typowy czas uruchamiania / rozłączania, testując ich zachowanie w mniejszych, samodzielnych stosach pierwszy.
- Jeśli tworzysz lub używasz dowolnych zasobów niestandardowych innych firm, napisz testy jednostkowe przy użyciu bibliotek odpowiednich dla platformy językowej, aby upewnić się, że logika aplikacji zachowuje się zgodnie z oczekiwaniami we wszystkich przypadkach użycia.
- Należy pamiętać, że czas tworzenia / aktualizowania / usuwania pojedynczego zasobu może się znacznie różnić między typami zasobów, w zależności od zachowania bazowych wywołań interfejsu API. Na przykład utworzenie / zaktualizowanie / usunięcie złożonego
AWS::CloudFront::Distribution
zasobu może czasami zająć 30-60 minut , podczas gdy plikAWS::EC2::SecurityGroup
aktualizacja w ciągu kilku sekund.
- Poszczególne zasoby mogą mieć błędy / problemy / ograniczenia w ich implementacji, które są znacznie łatwiejsze do debugowania i opracowywania obejść, gdy są testowane w izolacji, a nie w znacznie większym stosie. Należy pamiętać o ograniczeniach, takich jak limity usług AWS, w zależności od indywidualnych ustawień konta AWS lub dostępność usług w regionie w zależności od regionu, w którym tworzysz swój stos.
Twórz skomplikowane stosy małymi krokami
Podczas tworzenia / aktualizacji stosu awaria dowolnego pojedynczego zasobu spowoduje wycofanie całego zestawu zmian w zasobach, co może niepotrzebnie zniszczyć inne pomyślnie utworzone zasoby i zająć bardzo dużo czasu podczas budowania skomplikowanego stosu z długim wykres zależności powiązanych zasobów.
Rozwiązaniem tego problemu jest stopniowe budowanie stosu w mniejszych partiach aktualizacji, dodając zasoby pojedynczo (lub kilka). W ten sposób, jeśli wystąpi awaria podczas tworzenia / aktualizacji zasobów, wycofanie nie spowoduje zniszczenia całego zasobu stosu, a jedynie zestaw zasobów zmieniony w ostatniej aktualizacji.
Monitoruj postęp aktualizacji stosu
Pamiętaj, aby monitorować postęp swojej aktualizacji stosu , przeglądając zdarzenia stosu podczas tworzenia / aktualizacji. Będzie to punkt wyjścia do debugowania dalszych problemów z poszczególnymi zasobami.