AWS DOP - CloudFormation (1)

2025. 4. 16. 19:30·Web

AWS CloudFormation 개요

CloudFormation은 코드로 AWS 인프라를 정의하고 자동으로 생성하는 서비스
이를 통해 EC2, S3, 로드밸런서 등 다양한 리소스를 선언만 하면 자동으로 생성되고 연결됨.
인프라 구성 파일은 YAML 또는 JSON 형식의 템플릿으로 작성되며, 이를 이용해 리소스를 선언적 방식으로 구성함.
기존 템플릿은 편집 불가 → 새 버전 업로드 후 업데이트.
삭제 시 스택에서 생성한 모든 리소스가 함께 삭제됨.

 

 

CloudFormation의 구성 요소

  • AWSTemplateFormatVersion: 템플릿 버전 정의.
  • Description: 템플릿 설명.
  • Resources (필수): 생성할 AWS 리소스 정의.
  • Parameters: 외부에서 전달 가능한 입력값.
  • Mappings: 지역별 또는 환경별 값 매핑.
  • Outputs: 다른 스택이나 참조를 위한 출력값.
  • Conditions: 특정 조건에서만 리소스를 생성할지 결정.
  • Functions : Ref, Fn::Join 등 템플릿 내에서 값 조작용 헬퍼 함수들.

Resource

CloudFormation 템플릿에서 유일하게 반드시 포함되어야 하는 섹션입니다.
AWS가 리소스의 라이프사이클 관리

Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: !Ref InstanceType

Parameter

  • 매개 변수는 템플릿에서 사용자 입력값을 받아 재사용 가능하고 유연한 구성을 가능하게 함. 미래에 변경 가능성이 있는 값은 매개 변수로 만드는 것이 좋음.

매개 변수 사용법

예:

Parameters:
InstanceType:
  Type: String
  Default: t2.micro
  AllowedValues:
    - t2.micro
    - t2.small
    - t2.medium

의사 매개 변수 (Pseudo Parameters)

  • AWS가 자동 제공하는 매개 변수. 생성 필요 없음.
    • AWS::AccountId
    • AWS::Region
    • AWS::StackName
    • AWS::NoValue 등

Mappings

  • 매핑(Mapping)은 템플릿 내부에서 고정된 변수 값을 설정하는 방식
  • 환경(dev, prod), AWS 리전(us-east-1, eu-west-1), AMI 타입(HVM64, HVMG2) 등 지역이나 환경별 차이를 구분할 때 유용
  • 매핑은 하드코딩된 값들로 구성되며, 템플릿 내에서 조건 없이 참조할 수 있음

출력(Outputs)과 클라우드 형성(Stack Linking)

출력(Outputs): CloudFormation에서 선택적으로 선언할 수 있으며, 스택 외부에서 값을 참조할 수 있도록 만듦. 다른 스택(예: 애플리케이션 스택)에서 필요한 값(VPC ID, Subnet ID 등)을 공유하기 위해 사용.

활용 예시:

  • 네트워크 스택에서 VPC ID, Subnet ID를 출력하고,
  • 애플리케이션 스택에서 이를 참조(ImportValue)하여 재사용.

중요한 점:

  • 한 스택이 내보낸 값을 다른 스택이 참조하고 있으면, 해당 스택은 삭제 불가능.

Conditions

특정 상황에 따라 리소스나 출력(Outputs)을 선택적으로 생성하거나 제어할 수 있는 기능. 예를 들어, 개발 환경에서는 특정 리소스를 생성하고, 프로덕션에서는 생략.


본질 함수 요약 (Intrinsic Functions)

CloudFormation에서 템플릿을 동적으로 구성하고 리소스를 참조하거나 조작할 때 사용하는 함수.
이 중 Ref와 GetAtt는 꼭 알아야 하는 핵심 함수이다.


꼭 알아야 할 함수들

Ref : 리소스나 매개변수의 기본 값(ID 또는 지정된 값) 반환

  Ref: MyVPC

→ MyVPC의 ID를 반환 (예: VPC-abc123)

 

 

GetAtt : 리소스의 속성(특성) 값을 반환

  Fn::GetAtt:
    - MyInstance
    - AvailabilityZone

또는 축약형: !GetAtt MyInstance.AvailabilityZone

 

 

기타 자주 쓰이는 함수들

함수명 설명
FindInMap Mapping 정의에서 값 찾기
ImportValue 다른 스택에서 Export된 값 가져오기
Join 문자열을 구분자로 연결
Sub 문자열 내 변수 치환 (${} 형식)
Base64 문자열을 Base64 인코딩 (UserData에 사용)
Cidr CIDR 블록 생성
GetAZs 지정된 리전에 대한 가용 영역 리스트 반환
Select 리스트에서 특정 인덱스의 값 선택
Split 문자열을 구분자로 나눠 리스트로 반환
Transform 매크로 적용에 사용
ToJsonString 구조 데이터를 JSON 문자열로 변환
Length (Len) 리스트 길이 반환

 

 


 

'Web' 카테고리의 다른 글

Route53에서 구입한 도메인 ACM발급 실패  (0) 2025.04.19
AWS DOP - CloudFormation (2)  (0) 2025.04.17
AWS DOP - SDLC Automation 파트 개념 정리  (2) 2025.04.15
k8s 간략히 따라해보기  (0) 2025.04.13
AWS EC2 -> 온프레미스 전환 (4) - 절전 모드 방지  (0) 2025.04.11
'Web' 카테고리의 다른 글
  • Route53에서 구입한 도메인 ACM발급 실패
  • AWS DOP - CloudFormation (2)
  • AWS DOP - SDLC Automation 파트 개념 정리
  • k8s 간략히 따라해보기
마술사의 수습생
마술사의 수습생
언젠간 당신처럼 되고 싶어요.
  • 마술사의 수습생
    개발 기록 블로그
    마술사의 수습생
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • Web (50)
      • 일기 (2)
      • 잡담 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
마술사의 수습생
AWS DOP - CloudFormation (1)
상단으로

티스토리툴바