AWS CloudFormation
IaC Cloud Practitioner Solutions Architect Associate SysOps Administrator

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.

Czy wiesz, ze...

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.

Pro Tip

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.

Uwaga

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.

1

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.

2

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).

3

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.

4

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.

5

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.

6

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.

Poczatkujacy

Change 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.

Poczatkujacy

Cross-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.

Zaawansowany

Custom 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.

Zaawansowany

Drift 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.

Zaawansowany

StackSets 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.

Zaawansowany

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS CloudFormation bezposrednio w konsoli AWS.

Do czego sluzy AWS CloudFormation?

01

Powtarzalne środowiska

Twórz identyczne środowiska dev, staging i prod z tego samego szablonu - różniące się tylko parametrami.

02

Disaster Recovery

Odtwórz całą infrastrukturę w innym regionie w minuty, uruchamiając stack z szablonu.

03

Compliance i audyt

Infrastruktura w Git = pełna historia zmian. Wiesz kto, kiedy i co zmienił. Code review dla infrastruktury.

04

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.

Developer Commituje szablon YAML do repozytorium Git
git push
Git (CodeCommit)
Git (CodeCommit) Repozytorium z szablonami, triggeruje pipeline na push
webhook trigger
CodePipeline
CodePipeline Orkiestruje etapy: walidacja cfn-lint, Change Set, approval, deploy
create change set
CloudFormation
CloudFormation Tworzy Change Set, czeka na approval, wdraza stack z rollbackiem
provisioning
VPC + Subnety
VPC + Subnety Siec: VPC, public/private subnety, NAT Gateway, route tables
create/update
EC2 + ALB
EC2 + ALB Instancje aplikacji w ASG z load balancerem
create/update
RDS + S3
RDS + S3 Baza danych Multi-AZ, buckety S3 z szyfrowaniem
Change Set pozwala przejrzec wszystkie zmiany przed ich zastosowaniem - kluczowe dla bezpieczenstwa produkcji.
Nested Stacks umozliwiaja podzia na warstwy (siec, compute, dane) zarzadzane niezaleznie.
Rollback automatycznie przywraca poprzedni stan stacka w razie bledu wdrozenia.

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.

Twoj wynik: 0 / 3

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?

Chcesz poznac AWS CloudFormation w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS CloudFormation krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy