CloudFormation: Infrastruktúra kódként az AWS-ben
- Erőforrás típus: IaaS
- Felhő szolgáltató: Amazon Web Services
- Angol név: CloudFormation
- Magyar név: CloudFormation
- Rövidített név (ha van ilyen): –
Korábban írtam már az infrastruktúra automatizálásáról és a DevOps megközelítés fontosságáról az informatikai projektekben. Ezen megközelítés neve Infrastructure as Code (IaC). A Terraform-al már kicsit ismerkedtünk, de minden felhőszolgáltatónak van valamilyen IaC megoldása. Olvashattál már az Azure esetén az ARM-ről és a Bicep-ről is.
AWS-ben a CloudFormation az a szolgáltatás, amely lehetővé teszi, hogy az infrastruktúrát kódként kezeljük – azaz sablonfájlok segítségével automatikusan hozzuk létre és kezeljük az AWS erőforrásokat.
Mi az AWS CloudFormation?
A CloudFormation egy sablonalapú eszköz, amely lehetővé teszi, hogy JSON vagy YAML fájlban írjuk le, milyen AWS erőforrásokat szeretnénk létrehozni – például EC2 példányokat, S3 tárolókat, IAM szerepköröket, VPC-ket stb.
A sablon betöltése után a CloudFormation létrehozza ezeket az erőforrásokat Stack formájában. A stack egy logikai egység, amely tartalmazza az összes erőforrást, amit egy adott sablon alapján hoztunk létre.
Miért érdemes a CloudFormation-t használni?
Az alábbi lista önmagáért beszél:
- Kód nézet: YAML vagy JSON formátumban írhatjuk meg a sablonokat – ez könnyen verziózható, visszakövethető, automatizálható.
- Grafikus nézet: Az AWS Console-on belül vizuálisan is megtekinthetjük a sablon struktúráját (Resource Map), így könnyen átlátható, mi mivel áll kapcsolatban.
- Újrahasználhatóság: A sablonok paraméterezhetők, így ugyanaz a sablon használható több környezetben (pl. dev, test, prod).
- Exportálás: Egy meglévő környezetből könnyen generálhatunk sablont, amit újra felhasználhatunk máshol.
- Rollback és állapotkezelés: Ha egy stack létrehozása során hiba történik, a CloudFormation automatikusan visszaállítja a korábbi állapotot.
- Integráció más AWS eszközökkel: Például CodePipeline vagy Service Catalog támogatás.
Ha megnézzük ezt a listát, akkor láthatjuk, hogy a CloudFormation erősségei vitathatatlanok.
Egyszerű példa: Egy S3 tároló létrehozása
Ez a példa bemutatja, hogyan lehet egyetlen S3 tárolót létrehozni YAML-ben:
AWSTemplateFormatVersion: '2010-09-09'
Description: Egyszerű S3 bucket létrehozása
Resources:
MySimpleBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: egy-cloudformation-s3-bucket
Mit csinál ez?
- Létrehoz egy S3 tárolót
egy-cloudformation-s3-bucket
névvel. - A stack elindítása után a CloudFormation automatikusan elvégzi a létrehozást.

Használat lépései az AWS Console-ban:
- Menj a CloudFormation szolgáltatásra.
- Válaszd a „Create Stack” opciót.
- Töltsd fel a sablon YAML fájlt.
- Add meg a stack nevét, majd kattints a „Next” gombokra.
- Pár perc múlva kész is az erőforrásod!
Komplex példa: EC2 példány biztonságos környezetben
Ebben a példában egy EC2 példányt hozunk létre saját VPC-ben, nyilvános IP nélkül, biztonsági csoporttal:
AWSTemplateFormatVersion: '2010-09-09'
Description: EC2 példány saját VPC-ben
Resources:
SajatVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Tags:
- Key: Name
Value: VCP01
SajatSubnet:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref SajatVPC
CidrBlock: 10.0.1.0/24
AvailabilityZone: !Select [0, !GetAZs '']
BiztonsagiCsoport:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Csak SSH
VpcId: !Ref SajatVPC
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
LinuxVM:
Type: AWS::EC2::Instance
Properties:
InstanceType: t3.micro
ImageId: ami-0c2e61fdcb5495691 # AMI ID eu-north-1 régióban
SubnetId: !Ref SajatSubnet
SecurityGroupIds:
- !Ref BiztonsagiCsoport
Tags:
- Key: Name
Value: CloudFormationEC2
Mi történik itt?
- Létrejön egy új VPC, alhálózat (subnet), biztonsági csoport (SG) és EC2 példány.
- A példány csak SSH-n keresztül érhető el.
- Ez egy jól strukturált, reprodukálható környezet, amit bármikor újra létrehozhatunk.

CloudFormation sablon részei: Az alapok
Egy CloudFormation sablon tipikusan a következő szekciókból állhat:
- Parameters – A sablon újrahasználhatóságát biztosítják. Ezek segítségével a sablon külső értékeket fogadhat.
- Resources – A kötelező szekció, ahol magukat az AWS erőforrásokat definiáljuk.
- Outputs – Ezekkel az információkkal a stack létrehozása után dolgozhatunk tovább (pl. EC2 publikus IP címe).
- Conditions – Opcionálisan szabályozhatjuk, hogy egyes erőforrások létrejöjjenek-e vagy sem.
- Mappings – Előre definiált értéktáblák (pl. régiókhoz tartozó AMI ID-k).
- Metadata – Opcionális dokumentáció, megjegyzések.
- Transform – Haladó funkció, például a Serverless Application Model (SAM) használatához.
Ezek használatáról egy következő cikkben írok részletesebben.
Az AWS CloudFormation hatalmas segítség mindazok számára, akik szeretnék infrastruktúrájukat kóddá alakítani. Kezdőknek is ideális, mivel a sablonokat akár vizuálisan is generálhatják és módosíthatják, míg a haladó felhasználók számára teljes automatizálást tesz lehetővé CI/CD pipeline-okban.
Ha komolyan gondolod a felhőalapú rendszerek kiépítését, a CloudFormation ismerete egy igazi svájcibicska lehet a kezedben. 🙂