
CloudFormation은 AWS 리소스를 코드로 선언하고 자동으로 배포할 수 있는 강력한 도구다.
하지만 처음 시작할 때는 템플릿의 구조가 다소 낯설게 느껴질 수 있다. 이 글에서는 CloudFormation 템플릿이 어떻게 구성되어 있고, 각 섹션이 어떤 역할을 하는지 큰 틀에서 전체 구조를 설명한다.
AWSTemplateFormatVersion: '2010-09-09'
Description: 템플릿에 대한 간단한 설명
Parameters: # 사용자 입력값
Mappings: # 정적 값 매핑 (리전, AMI 등)
Conditions: # 조건부 리소스 생성
Resources: # 실제 생성할 AWS 리소스, 필수값
Outputs: # 결과 출력 (ex. 퍼블릭 IP)
AWSTemplateFormatVersion (선택)AWSTemplateFormatVersion: '2010-09-09'
'2010-09-09'로 고정Description (선택)Description: 이 템플릿은 EC2 인스턴스를 생성합니다.
Parameters (선택)Parameters:
KeyName:
Type: AWS::EC2::KeyPair::KeyName
Description: EC2 인스턴스에 사용할 키 이름
!Ref로 사용 가능Mappings (선택)Mappings:
RegionMap:
ap-northeast-2:
AMI: ami-0abcdef1234567890
us-east-1:
AMI: ami-0123456789abcdef0
Conditions (선택)Conditions:
IsProd: !Equals [ !Ref EnvType, prod ]
EnvType이 prod일 때만 특정 알람이나 S3 버전 관리 기능을 적용하고 싶을 때Resources (필수)Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
InstanceType: t3.micro
ImageId: ami-0abcdef1234567890
KeyName: !Ref KeyName
Outputs (선택)Outputs:
InstancePublicIP:
Description: EC2 인스턴스의 퍼블릭 IP
Value: !GetAtt MyInstance.PublicIp
ImportValue로 참조도 가능AWSTemplateFormatVersion: '2010-09-09'
Description: 간단한 설명
Parameters: # 사용자 입력값 정의
Mappings: # 리전별/조건별 값
Conditions: # 조건문 처리
Resources: # 실제 리소스 정의 (필수)
Outputs: # 결과 출력