DEV Community

JPL
JPL

Posted on • Updated on

Template Anatomy CloudFormation

Anatomy task
Dokumentacija template anatomy

CloudFormation Template je deklaracija AWS resursa koje prave STACK. Template je spremljen kao tekstualni fajl u JSON notaciji ili YAML formatu. Obzirom da su to samo tekstualni fajlovi, mozemo ih kreirati, editovati u bilo kojem tekstualnom editoru i menadžovati ih u nasem source control sistemu sa ostatkom naseg source koda.

AWSTemplateFormatVersion: 'version date' (optional) # version of the CloudFormation template. Only accepted value is '2010-09-09'

Description: 'String' (opcionalno) # tekstualni opis CFormation template (u koju svrhu se koristi template)

Metadata: 'template metadata' (opcionalno) # objekti koji pruzaju dodatne informacija o template-u

Parameters: 'set of parameters' (opcionalno) # set ulaznih parametara (npr. naziv bucketa) koristenih za customize template-a (predloška)

Rules: 'set pravila' (opcionalno) # a set pravila na osnovu kojih validiramo parametre koji ce biti pruzeni od strane deploymenta/update-a 

Mappings: 'set of mappings' (opcionalno) # a mapping of keys and associated values

Conditions: 'set of conditions' (opcionalno) # conditions that control whether certain resources are created

Transform: 'set transformacija' (opcionalno) # za serverless app

Resources: 'set resoursa' (OBAVEZNO) # KOMPONENTE (EC2, S3 BUCKET, SG,ALB) NASE INFRASTRUKTURE

Hooks: 'set of hooks' (opcionalno) # Koristeni za ECS Blue/Green Deployments

Outputs: 'set outputa' (opcionalno) # vrijednosti koje su vracene kada god zelimo da vidimo stack opcije(properties) 
Enter fullscreen mode Exit fullscreen mode

Outputs znaju biti korisni u zavisnosti od toga koju vrstu template-a kreiramo i u koje svrhe.


Najbitnija opcija koju MORAMO DA IMAMO u kreiranju template-a kako bi kreirali stack, tj. prave resurse na AWS-u je:

Resources: 'set resursa' (OBAVEZNO) # komponente(serveri,security grupe,iam policy itd) koji cemo koristiti na svojoj infrastrukturi


STACK - KONKRETNI RESURSI KREIRANI U AWS-u CLOUDU (EC2,IAM,S3..)

Ispod se nalazi dijagram koji prikazuje kako iz jednog napisanog JSON fajla mozemo da uradimo upload na CloudFormation (alat za infrastrukturu kao kod) i da kreiramo Stack tj. konkretne resurse automatski bez manuelnog podesavanja svakog resursa od EC2 instance do bucketa na S3 servisu.

Mozemo kreirati preko 100-tinu stack-ova koristeci CFormation, a stack sadrzi kolekciju AWS servisa koje mozemo da menadžujemo (upravljamo) kao jednom jedinicom. SVI RESURSI UNUTAR AWS STACK-A SU DEFINISANI TEMPLATE-om.

BRISANJE RESURSA - nikada ne raditi manuelno!

Kada zelimo da izbrisemo resurse, to radimo tako da idemo na template pa izbrisemo template-a koji zelimo, na taj nacin automatski brisemo i sve resurse koje smo kreirali kroz stack.

AWS CloudFormation ce da KREIRA, AZURIRA (UPDATE) I IZBRISE U POTPUNOSTI STACK:

    - Ako stack ne moze da bude azuriran ili kreiran u potpunosti, onda ce AWS CLoudFormation da uradi ROLL BACK, prikaze greske i izbrise sve resurse koji su se eventualno kreirali pri pokusaju kreiranja i prije greske. 
    - Ako resurs ne moze da bude izbrisan, svi prethodni resursi se zadrzavaju dok cijeli stack ne bude uspjesno izbrisan.
Enter fullscreen mode Exit fullscreen mode

cf-stack-json

Jedan od incijalni poslova Stack-a je da kreira FIZICKE RESURSE BAZIRANE NA LOGICKIM RESURSIMA KOJI SU DEFINISANI UNUTAR TEMPLATE-a.

Za svaki logicki resurs (definisan unutar template-a), kada se Stack kreira, FIZICKI RESURS (EC2,S3 ...) je takodjer kreiran automatski (ukoliko nema template neku gresku).

Linkovi na povezane postove za CloudFormation:

  1. Jednostavni CFN template -drugi dio

Dodatna dokumentacija

  1. AWS Dokumentacija
  2. Template reference
  3. Security in AWS CFormation
  4. Najbolje prakse u CF
  5. Link na resurse i kako da ih koristimo u CloudFormation: AWS resource and property types reference
  6. YouTube reInvent AWS Deep Dive on AWS CloudFormation-2017

Top comments (0)