AWS CloudFormation
AWS CloudFormation
Definiuj całą infrastrukturę AWS w plikach YAML/JSON. Twórz, aktualizuj i usuwaj zasoby jednym poleceniem - powtarzalnie i bezpiecznie.
AWS CloudFormation to serwis Infrastructure as Code (IaC), który pozwala definiować zasoby AWS w plikach szablonów YAML lub JSON. Zamiast klikać w konsoli i ręcznie tworzyć instancje EC2, buckety S3, bazy danych - opisujesz je w szablonie i CloudFormation tworzy wszystko automatycznie, w odpowiedniej kolejności, z uwzględnieniem zależności.
Dlaczego IaC? Bo infrastruktura klikana ręcznie to dług techniczny - nikt nie pamięta co klikał miesiąc temu, nie da się tego powtórzyć, nie da się zrobić code review. CloudFormation daje Ci wersjonowanie (Git), powtarzalność (ten sam szablon = ta sama infrastruktura) i automatyzację (CI/CD dla infrastruktury). To fundament dojrzałego podejścia do chmury.
CloudFormation obsługuje ponad 1000 typów zasobów AWS i jest najstarszym narzędziem IaC w AWS (2011). Szablony mogą mieć do 1 MB (w S3) i tworzyć do 500 zasobów w jednym stacku.
Zawsze używaj Change Set przed aktualizacją stacka na produkcji. Dodaj DeletionPolicy: Retain do baz danych i bucketów S3 z ważnymi danymi - dzięki temu przypadkowe usunięcie stacka nie usunie Twoich danych.
Usunięcie stacka CloudFormation domyślnie USUWA WSZYSTKIE zasoby, które stack utworzył - instancje EC2, bazy danych, buckety S3 z danymi! Zawsze sprawdź co jest w stacku przed usunięciem i ustaw DeletionPolicy: Retain na krytycznych zasobach.
CloudFormation to serwis Infrastructure as Code (IaC), ktory pozwala definiowac cala infrastrukture AWS w plikach szablonow. Zamiast klikac w konsoli, opisujesz zasoby deklaratywnie - CloudFormation zajmuje sie ich tworzeniem, aktualizacja i usuwaniem w odpowiedniej kolejnosci.
Pisanie szablonu (YAML/JSON)
Szablon CloudFormation to plik YAML lub JSON opisujacy zasoby AWS, ich konfiguracje i zaleznosci. Sekcje szablonu to: Parameters (zmienne wejsciowe), Resources (zasoby do stworzenia - jedyna wymagana sekcja), Outputs (wartosci eksportowane), Mappings (statyczne mapy wartosci) i Conditions (logika warunkowa). YAML jest zdecydowanie czytelniejszy - uzywaj go zamiast JSON.
Tworzenie stacka
Stack to zestaw zasobow AWS zarzadzanych jako jedna jednostka. Przy tworzeniu stacka CloudFormation analizuje szablon, ustala kolejnosc tworzenia zasobow (na podstawie DependsOn i niejawnych zaleznosci Ref/GetAtt), a nastepnie provisionuje je rownolegle tam, gdzie to mozliwe. Jezeli ktorakolwiek operacja sie nie powiedzie, CloudFormation automatycznie wycofuje wszystkie zmiany (rollback).
Change Sets - podglad zmian
Przed aktualizacja istniejacego stacka warto stworzyc Change Set. To podglad tego, co CloudFormation zamierza zrobic: ktore zasoby zostana zmodyfikowane in-place, ktore zastapione (replacement), a ktore usuniete. Change Set pozwala uniknac niespodzianek - np. zmiana nazwy RDS instance powoduje replacement, czyli utrate danych. Nigdy nie aktualizuj stackow produkcyjnych bez Change Seta.
Drift Detection - wykrywanie zmian recznych
Drift Detection porownuje aktualny stan zasobow w AWS z tym, co jest zdefiniowane w szablonie. Jezeli ktos zmienil Security Group recznie przez konsole lub CLI, drift detection to wykryje i pokaze dokladne roznice. Regularne sprawdzanie driftu to kluczowa praktyka - reczne zmiany w produkcji sa czestsza przyczyna incydentow niz sie wydaje.
Nested Stacks - modularna infrastruktura
Nested Stacks pozwalaja rozbic duzy szablon na mniejsze, reuzywalne moduly. Stack nadrzedny (parent) referencuje szablony potomne przechowywane w S3 uzywajac AWS::CloudFormation::Stack. Typowy podzia: siec (VPC, subnety), bezpieczenstwo (IAM, Security Groups), aplikacja (EC2, ALB), baza danych (RDS). Kazdy modul moze byc wersjonowany i testowany niezaleznie.
StackSets - wdrazanie multi-account i multi-region
StackSets pozwalaja wdrazac ten sam szablon w wielu kontach AWS i regionach jednoczesnie. Idealne do standaryzacji konfiguracji w organizacji - np. wymuszanie CloudTrail, Config Rules czy Security Hub we wszystkich kontach. StackSets wspieraja automatyczne wdrazanie do nowych kont w AWS Organizations (automatic deployment) i kontrole kolejnosci regionow.
Praktyczne wskazowki z produkcyjnego uzycia CloudFormation - od walidacji szablonow po strategie aktualizacji stackow w duzych organizacjach.
cfn-lint - waliduj szablony przed wdrozeniem
cfn-lint to narzedzie do statycznej analizy szablonow CloudFormation. Wykrywa bledy skladniowe, nieprawidlowe wartosci propertyow, brakujace wymagane pola i odwolania do nieistniejacych zasobow - zanim szablon dotrze do AWS. Zainstaluj go lokalnie (pip install cfn-lint) i dodaj jako krok w CI/CD pipeline. Mozesz tez pisac wlasne reguly specyficzne dla Twojej organizacji.
PoczatkujacyChange Sets - zawsze przed aktualizacja
Aktualizacja stacka bez Change Seta to jak deploy na produkcje bez code review. Change Set pokazuje, ktore zasoby beda zmodyfikowane, zastapione lub usuniete. Szczegolna uwage zwracaj na operacje Replacement - oznaczaja usuniecie starego zasobu i stworzenie nowego, co w przypadku RDS, DynamoDB czy EFS oznacza utrate danych. Automatyzuj tworzenie Change Setow w pipeline CI/CD.
PoczatkujacyCross-stack references z Export/Import
Uzywaj Outputs z Export do udostepniania wartosci miedzy stackami. Np. stack sieciowy eksportuje VPC ID i Subnet IDs, a stack aplikacyjny importuje je przez Fn::ImportValue. To pozwala na niezalezne zarzadzanie i aktualizacje poszczegolnych warstw. Pamietaj: nie mozesz usunac stacka eksportujacego wartosc, dopoki inny stack ja importuje.
ZaawansowanyCustom Resources z Lambda
Custom Resources pozwalaja rozszerzyc CloudFormation o operacje, ktorych natywnie nie wspiera - np. czyszczenie S3 bucket przed usunieciem, konfiguracja zewnetrznych serwisow czy generowanie certyfikatow. Custom Resource wywoluje funkcje Lambda, ktora wykonuje logike i zwraca wynik do CloudFormation. Uzywaj cfn-response library do poprawnego raportowania statusu. Pamietaj o obsludze timeoutow i bledow.
ZaawansowanyDrift Detection - regularne audyty
Uruchamiaj drift detection cyklicznie (np. co 24h przez EventBridge + Lambda) dla wszystkich stackow produkcyjnych. Drift moze powstac przez reczne zmiany w konsoli, emergency fixy przez CLI, lub inne narzedzia IaC operujace na tych samych zasobach. Gdy wykryjesz drift, masz dwie opcje: zaktualizuj szablon do aktualnego stanu lub przywroc zasob do stanu z szablonu. Nigdy nie ignoruj driftu.
ZaawansowanyStackSets dla governance multi-account
W srodowisku multi-account uzywaj StackSets z AWS Organizations do wymuszania standardow bezpieczenstwa. Typowe zastosowania: wlaczenie CloudTrail we wszystkich kontach, wdrozenie Config Rules (np. wymagany szyfrowanie EBS), konfiguracja Security Hub i GuardDuty. Wlacz automatic deployment - nowe konta automatycznie otrzymaja wymagana konfiguracje. Testuj StackSety najpierw na kontach sandbox.
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS CloudFormation bezposrednio w konsoli AWS.
Do czego sluzy AWS CloudFormation?
Powtarzalne środowiska
Twórz identyczne środowiska dev, staging i prod z tego samego szablonu - różniące się tylko parametrami.
Disaster Recovery
Odtwórz całą infrastrukturę w innym regionie w minuty, uruchamiając stack z szablonu.
Compliance i audyt
Infrastruktura w Git = pełna historia zmian. Wiesz kto, kiedy i co zmienił. Code review dla infrastruktury.
Multi-account deployment
Użyj StackSets, aby wdrożyć ten sam szablon na dziesiątkach kont AWS w organizacji jednocześnie.
Co musisz wiedziec?
Stack
Zbiór zasobów AWS utworzonych z jednego szablonu. Tworząc stack, tworzysz wszystkie zasoby. Usuwając stack - usuwasz je wszystkie.
Template (Szablon)
Plik YAML lub JSON opisujący zasoby do utworzenia. Zawiera sekcje: Resources (obowiązkowa), Parameters, Outputs, Mappings, Conditions.
Resource
Pojedynczy zasób AWS w szablonie - np. AWS::EC2::Instance, AWS::S3::Bucket. Sekcja Resources jest jedyną obowiązkową sekcją szablonu.
Parameter
Wartość podawana przy tworzeniu stacka. Np. typ instancji, nazwa środowiska. Pozwala na reużywanie szablonów z różnymi konfiguracjami.
Output
Wartość zwracana po utworzeniu stacka - np. adres URL, ID zasobu. Można eksportować do innych stacków (cross-stack references).
Change Set
Podgląd zmian przed aktualizacją stacka. Pokazuje co zostanie dodane, zmodyfikowane lub usunięte - bez wykonywania zmian. Jak "dry run".
Architektura: CI/CD Pipeline z CloudFormation
Typowy pipeline GitOps, w ktorym zmiany infrastruktury przechodza przez code review, walidacje i automatyczne wdrazanie. CloudFormation jako silnik IaC zapewnia powtarzalnosc i audytowalnosc kazdej zmiany.
Porownanie CloudFormation vs Terraform vs CDK
| Cecha | CloudFormation | Terraform | CDK |
|---|---|---|---|
| Jezyk | YAML/JSON | HCL | TypeScript, Python, Java, Go, C# |
| State | Zarzadzany przez AWS | Plik stanu (S3 + DynamoDB) | CloudFormation pod spodem |
| Ekosystem | Tylko AWS | Multi-cloud (AWS, GCP, Azure, 3000+ providerow) | Tylko AWS (ale z constructs) |
| Krzywa uczenia | Srednia (YAML verbose) | Srednia (nowy jezyk HCL) | Niska (znany jezyk programowania) |
| Drift detection | Wbudowane | terraform plan | Przez CloudFormation |
| Modularnosc | Nested stacks, modules | Modules (Terraform Registry) | Constructs L1/L2/L3 |
| Najlepsze dla | Czyste srodowiska AWS | Multi-cloud, duze zespoly | Developerzy preferujacy kod |
Ile kosztuje AWS CloudFormation?
CloudFormation
Sam serwis jest darmowy. Płacisz tylko za zasoby AWS, które stack tworzy (instancje EC2, buckety S3 itd.).
Stack z t3.micro + S3 = koszt t3.micro + S3
StackSets
Operacje na StackSets powyżej Free Tier: $0.0009 za operację na koncie na region.
10 kont x 3 regiony x 1 operacja = $0.027
Third-party resources
Zasoby rozszerzeń (np. z CloudFormation Registry) od partnerów: $0.0009 za operację handler.
Dotyczy tylko zasobów spoza natywnych AWS
Free Tier
CloudFormation jest darmowy. StackSets: 1000 darmowych operacji na koncie/miesiąc. Zasoby AWS mają własne Free Tier.
Nauka i mniejsze projekty - w praktyce $0 za CF
Przyklady AWS CLI
Utwórz stack
Tworzy stack z szablonu YAML z parametrami
aws cloudformation create-stack \
--stack-name moj-stack \
--template-body file://template.yaml \
--parameters ParameterKey=Environment,ParameterValue=dev \
ParameterKey=InstanceType,ParameterValue=t3.micro \
--capabilities CAPABILITY_IAM
Podgląd zmian (Change Set)
Tworzy Change Set, aby sprawdzić co się zmieni przed aktualizacją
aws cloudformation create-change-set \
--stack-name moj-stack \
--change-set-name moje-zmiany \
--template-body file://template-v2.yaml \
&& aws cloudformation describe-change-set \
--stack-name moj-stack \
--change-set-name moje-zmiany \
--query "Changes[].ResourceChange.{Action:Action,Resource:LogicalResourceId,Type:ResourceType}" \
--output table
Sprawdź status stacka
Monitoruj eventy podczas tworzenia/aktualizacji stacka
aws cloudformation describe-stack-events \
--stack-name moj-stack \
--query "StackEvents[].[Timestamp,LogicalResourceId,ResourceStatus]" \
--output table | head -20
Quiz: AWS CloudFormation
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Która sekcja szablonu CloudFormation jest obowiązkowa?
2. Co się stanie, gdy usuniesz stack CloudFormation?
3. Do czego służy Change Set?
Czesto uzywane razem z AWS CloudFormation
Czytaj więcej o AWS CloudFormation
Chcesz poznac AWS CloudFormation w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS CloudFormation krok po kroku. Teoria + praktyka od zera.