AWS CloudFormation 은
인프라(AWS 리소스)를 코드(JSON 또는 YAML)로 정의하고, 자동으로 생성·수정·삭제할 수 있게 해주는 서비스입니다.
👉 쉽게 말해,
“클라우드 리소스를 사람이 클릭해서 만들지 않고, 코드로 선언하면 AWS가 대신 만들어주는 서비스” 입니다.
📝 Infrastructure as Code (IaC)
인프라를 코드(YAML/JSON)로 관리
🔄 자동화
반복적인 리소스 생성·삭제를 자동 처리
🛡️ 일관성
같은 코드로 여러 환경(개발/테스트/운영)에서 동일한 인프라 생성 가능
⏱️ 시간 절약
클릭 몇 번보다 훨씬 빠르고 실수 없는 인프라 배포
📑 변경 추적(Change Set)
인프라 변경 사항을 사전에 미리 확인 가능
graph TD
User[👩💻 개발자/운영자] --> Template["YAML/JSON Template"]
Template --> CFN[🏗️ CloudFormation]
CFN --> Stack["Stack (리소스 집합)"]
subgraph AWS Resources
EC2[EC2 Instances]
S3[S3 Buckets]
RDS[RDS Database]
VPC[VPC Network]
end
Stack --> EC2
Stack --> S3
Stack --> RDS
Stack --> VPC

예: EC2, VPC, S3, RDS 등
CloudFormation이 템플릿을 읽고 리소스를 자동 생성
코드 변경 → 기존 인프라 자동 수정
스택 삭제 시 모든 관련 리소스 자동 삭제
AWSTemplateFormatVersion: "2010-09-09"
Description: "EC2와 S3를 포함한 간단한 예시"
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
ImageId: ami-0abcd1234efgh5678
MyS3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-til-blog-bucket
Resources : 생성할 리소스를 정의하는 섹션
MyEC2Instance : EC2 인스턴스 리소스 이름
Type: AWS::EC2::Instance → EC2를 생성
InstanceType: t2.micro → 서버 크기 지정
ImageId → AMI 이미지 ID
MyS3Bucket : S3 버킷 리소스
BucketName → 버킷 이름 지정
현업에서는 CloudFormation을 다음과 같이 씁니다.
개발/테스트/운영 환경을 동일하게 복제
CodePipeline, CodeDeploy와 연동 → 앱과 인프라 동시 배포
표준 템플릿을 작성해 조직 내 인프라 규칙 강제
스택 단위로 리소스 관리 → 불필요한 리소스 쉽게 정리
AWS CloudFormation은
인프라를 코드로 관리(IaC) 하고,
자동화·일관성·보안을 강화하며,
시간과 비용을 절약할 수 있는 서비스입니다.