Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Walidator szablonów CloudFormation

Sprawdź poprawność szablonu AWS CloudFormation: składnia JSON/YAML, struktura zasobów, referencje i polityki IAM. Bez konta AWS. Bezpłatnie.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
509 znaków
Ustaw parametry i kliknij „Przetwórz”, aby zobaczyć wynik.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Walidator szablonów CloudFormation – błędy przed deploymentem

Błędny szablon CloudFormation wykryty dopiero podczas deploymentu oznacza rollback i stratę czasu. Narzędzie waliduje składnię, strukturę i referencje szablonu AWS CloudFormation (JSON lub YAML) przed wgraniem do AWS – bez dostępu do konta AWS.

walidator CloudFormation AWS CloudFormation template sprawdź szablon CFN CloudFormation YAML validator

Struktura szablonu CloudFormation

AWSTemplateFormatVersion: "2010-09-09". Description: opis szablonu. Parameters: parametry wejściowe. Mappings: statyczne mapowania. Conditions: warunki logiczne. Resources: WYMAGANE, zasoby AWS (EC2, S3, Lambda, RDS...). Outputs: wartości eksportowane (ARN, URL). Transform: makra (SAM, LanguageExtensions).

Walidacja struktury i referencji

Wymagane sekcje: Resources. Nieprawidłowe typy zasobów: AWS::EC2::Instancee (literówka). Referencje: Ref i !GetAtt do nieistniejących zasobów. Circular dependencies: cykl zależności między zasobami. Limit zasobów: 500 na stos. Parametry: typ String/Number/List/SSM. DependsOn: odwołanie do niezdefiniowanego.

Typowe błędy w szablonach

Brak wymaganego pola (Properties.ImageId dla EC2). Wartość nie w dozwolonym typie (String zamiast Number). Nieprawidłowe wartości enum (np. InstanceType: t2.micro-wrong). Referencja Ref: do niezdefiniowanego parametru lub zasobu. !GetAtt z nieistniejącym atrybutem. YAML indentacja.

SAM i makra Transform

AWS SAM (Serverless Application Model): Transform: AWS::Serverless-2016-10-31. Dodaje zasoby uproszczone: AWS::Serverless::Function (zamiast AWS::Lambda::Function + Role + Permission). Narzędzie rozumie SAM syntax. CDK output: synth generuje CloudFormation JSON – narzędzie może walidować też CDK output.

Jak działa walidacja szablonu CloudFormation

Narzędzie pracuje w dwóch warstwach: składniowej i semantycznej. Warstwa składniowa to parser, który przyjmuje zarówno JSON, jak i YAML. YAML w CloudFormation nie jest zwykłym YAML-em — używa własnych tagów, takich jak !Ref, !GetAtt, !Sub, !Join, !If czy !FindInMap. Parser zamienia je na wewnętrzną reprezentację równoważną długim formom, czyli zapisom typu Ref albo Fn::GetAtt. Dzięki temu oba formaty trafiają do tej samej struktury danych i dalsze sprawdzanie przebiega identycznie, niezależnie od tego, co wkleiłeś.

Warstwa semantyczna porównuje otrzymaną strukturę z modelem szablonu. Sprawdzana jest obecność i kolejność sekcji najwyższego poziomu, a następnie każdy zasób: czy jego Type istnieje, czy podano właściwości wymagane dla tego typu, czy wartości mają dopuszczalny typ i czy mieszczą się w dozwolonym zbiorze wartości. Równolegle budowany jest graf zależności — węzłami są parametry, zasoby i warunki, a krawędziami odwołania z Ref, GetAtt, DependsOn oraz Sub. Graf pozwala wykryć odwołania do nieistniejących celów, użycie nieistniejącego atrybutu zasobu oraz cykle, które uniemożliwiłyby utworzenie stosu.

Cała analiza odbywa się lokalnie, bez połączenia z API AWS i bez poświadczeń. Walidator zna katalog typów zasobów i reguły ich właściwości, ale nie zna stanu Twojego konta. Wynik ma więc charakter statyczny: pewne błędy blokujące (niepoprawna składnia, brak Resources, odwołanie do nieistniejącego zasobu) oraz ostrzeżenia o konstrukcjach ryzykownych, których nie da się rozstrzygnąć bez deploymentu.

Przykład krok po kroku: szablon z bucketem, rolą i funkcją Lambda

  1. Przygotowujesz szablon zawierający sekcje AWSTemplateFormatVersion, Parameters i Resources. W sekcji Resources masz trzy zasoby o nazwach logicznych: Bucket typu AWS::S3::Bucket, TaskRole typu AWS::IAM::Role oraz Funkcja typu AWS::Lambda::Function.
  2. Wklejasz całą treść do pola tekstowego i uruchamiasz walidację. Parser rozpoznaje tagi skrócone, przetwarza !GetAtt i !Sub, więc ewentualne błędy składni YAML zostaną zgłoszone jako pierwsze — z podaniem miejsca, w którym parsowanie się zatrzymało.
  3. Etap struktury sprawdza, czy sekcja Resources istnieje i czy każdy zasób ma pola Type oraz Properties. Dla funkcji Lambda wymagane są między innymi Code, Handler, Role i Runtime — brak któregokolwiek z nich pojawi się jako błąd wskazujący nazwę logiczną zasobu i nazwę brakującego klucza.
  4. Etap referencji weryfikuje odwołania. Zapis !GetAtt Bucket.Arn wskazuje istniejący zasób i prawidłowy atrybut, więc przechodzi. Zapis !GetAtt Bucket.BucketName wygląda podobnie, ale BucketName nie jest atrybutem zwracanym przez AWS::S3::Bucket — poprawna nazwa bucketu pochodzi z Ref, a atrybuty to między innymi Arn i DomainName. Taki wpis zostaje zgłoszony jako błąd.
  5. Etap grafu wykrywa cykle. Jeśli w TaskRole umieścisz odwołanie do funkcji, a funkcja w polu Role odwołuje się do tej samej roli przez !GetAtt TaskRole.Arn, powstaje zamknięty łańcuch zależności. Walidator wskaże oba końce cyklu, bo CloudFormation nie potrafi ustalić kolejności tworzenia takich zasobów.
  6. Poprawiasz atrybut na DomainName albo zamieniasz go na Ref, usuwasz zależność zwrotną i uruchamiasz walidację ponownie. Brak komunikatów o błędach oznacza, że szablon jest spójny wewnętrznie i gotowy do wgrania do AWS.

Co walidator sprawdza w poszczególnych sekcjach

Sekcja szablonuWymaganaZakres sprawdzenia
AWSTemplateFormatVersionnieczy wartość to 2010-09-09; inna lub brak — ostrzeżenie
Descriptionnieczy jest tekstem; wpływa tylko na czytelność stosu
Parametersniepoprawność typu (String, Number, List, CommaDelimitedList, AWS::SSM::Parameter::Value), spójność AllowedValues i Default
Mappingsniedwupoziomowa struktura kluczy używana przez !FindInMap
Conditionsnienazwy warunków oraz typ logiczny wyrażeń !Equals, !And, !Or, !Not
Resourcestakobecność sekcji, unikalność nazw logicznych, istnienie typu, wymagane właściwości, limit liczby zasobów
Outputsnieobecność pola Value oraz poprawność odwołań w nim użytych
Transformnieobsługa znanych makr (SAM, LanguageExtensions) i poprawność składni SAM

Praktyczne wskazówki

  • Waliduj przyrostowo — uruchamiaj sprawdzenie po dodaniu każdego zasobu, a nie dopiero przed wgraniem całego szablonu. Łatwiej wtedy przypisać komunikat do konkretnej zmiany.
  • Ustaw edytor na spacje — YAML nie dopuszcza znaków tabulacji w wcięciach. Mieszanie tabulatorów i spacji w jednym pliku to najczęstsza przyczyna błędu parsowania, który unieważnia wszystkie dalsze sprawdzenia.
  • Nadawaj opisowe nazwy logiczne — komunikaty odwołują się do nazw typu Bucket czy TaskRole, a nie do numerów linii w pliku. Nazwy w stylu Zasob1, Zasob2 utrudniają znalezienie miejsca błędu.
  • Czytaj komunikaty po kolei — błąd składni zatrzymuje analizę, więc lista problemów pojawia się dopiero po jego naprawieniu. Najpierw usuń problemy parsera, potem zajmij się strukturą i referencjami.
  • Sprawdzaj wymagane pola w dokumentacji — gdy walidator zgłosi brak właściwości dla danego typu zasobu, porównaj szablon z dokumentacją tego typu. Sam komunikat podaje nazwę brakującego klucza, ale nie podpowiada jego wartości.

Ograniczenia walidacji offline

  • Brak dostępu do konta AWS — narzędzie nie potwierdzi, czy identyfikator AMI istnieje w Twoim regionie, czy rola IAM ma wymagane uprawnienia ani czy nie przekroczysz limitów usługi. Te błędy ujawniają się dopiero podczas tworzenia stosu.
  • Nieznane wartości parametrów — parametry bez wartości domyślnej pozostają nierozstrzygnięte, a wartości z Parameter Store i Secrets Manager nie są pobierane. Walidator nie oceni zatem poprawności konkretnego zestawu danych wejściowych.
  • Własne makra Transform — rozpoznawane są znane transformy, natomiast niestandardowe makra nie są wykonywane. Zasoby wygenerowane przez makro nie zostaną sprawdzone, bo przed transformacją ich po prostu nie ma w szablonie.
  • Aktualność katalogu typów — jeśli katalog jest starszy niż nowo ogłoszone typy i właściwości, walidator może zgłosić fałszywy błąd albo pominąć nowe pole. Wynik nie obejmuje też zmian zachowania usług AWS po deploymencie ani dryftu istniejących zasobów.

Najczęstsze pytania

Jakie są alternatywy dla CloudFormation?

AWS CDK (Cloud Development Kit): definiuj infrastrukturę w TypeScript/Python/Java – generuje CloudFormation. Terraform: multi-cloud IaC, HCL syntax. Pulumi: kod aplikacji (TypeScript, Python) jako IaC. CDK jest rekomendowany przez AWS dla nowych projektów – lepsza DX niż raw CloudFormation.

Jak testować szablony CloudFormation lokalnie?

aws cloudformation validate-template --template-body file://template.yaml (wymaga AWS CLI). cfn-lint: open-source linter dla CloudFormation (poza walidacją składni: sprawdza typy zasobów, wymaga AWS SAR). TaskCat: testuje deployment na wielu regionach AWS.

Ile zasobów może mieć stos CloudFormation?

Maksymalnie 500 zasobów na stos. Dla większych systemów: nested stacks (AWS::CloudFormation::Stack), StackSets (multi-account/region), lub podział na warstwy (networking, database, application jako osobne stosy). Ograniczenie rozmiaru szablonu: 51 200 bajtów (direct) lub 460 800 bajtów (S3).

Co to jest CloudFormation Drift Detection?

Drift: różnica między stanem szablonu a faktycznym stanem zasobu AWS (np. ktoś ręcznie zmienił security group). Drift detection: CloudFormation porównuje aktualny stan z oczekiwanym. Wynik: IN_SYNC lub DRIFTED z listą zmian. Używaj regularnie do wykrywania nieautoryzowanych zmian.

Jak zarządzać secretami w CloudFormation?

NIE wpisuj secretów (hasła, klucze API) bezpośrednio. AWS SSM Parameter Store: Type: AWS::SSM::Parameter::Value. AWS Secrets Manager: dynamiczne referencje {{resolve:secretsmanager:secret-name:SecretString:key}}. CloudFormation nie loguje wartości NoEcho parametrów.

Czy walidator CloudFormation wymaga konta AWS lub kluczy dostępu?

Nie. Analiza odbywa się lokalnie w przeglądarce i nie wysyła szablonu do AWS, więc nie potrzebujesz poświadczeń ani dostępu sieciowego do API CloudFormation.

Czy walidacja w przeglądarce zastępuje validate-template z AWS CLI?

Nie zastępuje, ale działa w innym zakresie. validate-template sprawdza szablon po stronie usługi, z uwzględnieniem konta i regionu, natomiast walidator lokalny wychwytuje błędy składni, struktury i referencji przed kontaktem z AWS.

Czym różni się walidacja składni od walidacji struktury?

Walidacja składni odpowiada na pytanie, czy dokument jest poprawnym JSON-em lub YAML-em. Walidacja struktury sprawdza już zawartość: wymagane sekcje, istnienie typu zasobu, komplet właściwości i spójność odwołań.

Szablon przechodzi bez błędów, a stos i tak się nie tworzy. Dlaczego?

Najczęściej przyczyną jest coś, czego nie widać w samym pliku: brak uprawnień IAM, przekroczony limit usługi, nazwa zasobu zajęta w regionie albo nieistniejący identyfikator AMI. Walidator offline tych warunków nie zna.

Czy walidator sprawdza polityki IAM i wartości parametrów SSM?

Sprawdza, czy polityka jest zgodna ze schematem właściwości, ale nie weryfikuje, czy przyznane uprawnienia wystarczą do utworzenia zasobów. Wartości parametrów SSM również nie są pobierane, bo wymagałoby to połączenia z Twoim kontem.

Powiązane narzedzia: walidator YAML, generator GitLab CI/CD i formater JSON API.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!