개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

CloudFormation — 인프라를 코드로 관리 (IaC)

2026년 3월 30일
AWSCloudFormationIaC자동화

AWS CloudFormation은 인프라를 코드(YAML 또는 JSON 파일)로 선언하고, AWS가 그 코드를 해석하여 리소스를 자동으로 생성·수정·삭제해 주는 IaC(Infrastructure as Code) 서비스입니다. EC2, RDS, VPC, IAM 역할 등 AWS 리소스 대부분을 CloudFormation으로 관리할 수 있으며, 콘솔에서 수작업으로 리소스를 구성하는 대신 코드로 인프라 상태를 정의하고 반복 재현할 수 있습니다.

IaC(Infrastructure as Code): 인프라 구성을 코드 파일로 정의하여 버전 관리, 자동화, 재현성을 확보하는 방법론.

핵심 개념

Template

Template은 어떤 리소스를 어떻게 만들지를 선언하는 YAML 또는 JSON 파일입니다. AWS가 이 파일을 읽고 실제 리소스를 생성합니다.

# CloudFormation Template 예시 (YAML)
AWSTemplateFormatVersion: "2010-09-09"
Description: "My App Stack"

Resources:
  MyBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: my-app-bucket
      VersioningConfiguration:
        Status: Enabled

  MyLambda:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: my-function
      Runtime: nodejs20.x
      Handler: index.handler
      Role: !GetAtt LambdaExecutionRole.Arn

Template의 주요 섹션은 다음과 같습니다.

섹션설명
Parameters배포 시 입력받는 변수
Resources생성할 AWS 리소스 목록 (필수)
Outputs생성 후 외부에 노출할 값 (예: URL, ARN)
Mappings환경별 고정값 매핑 테이블
Conditions조건에 따라 리소스 생성 여부 결정

Stack

Stack은 하나의 Template으로 생성된 AWS 리소스들의 묶음입니다. Template을 배포하면 Stack이 생성되고, Stack 안에 정의된 리소스들이 함께 생성됩니다. Stack 단위로 전체 인프라를 생성하거나 삭제할 수 있습니다.

Template (YAML 파일)
    |
    | 배포 (aws cloudformation deploy)
    v
Stack: "my-app-prod"
    +--- S3 Bucket: my-app-bucket
    +--- Lambda: my-function
    +--- IAM Role: LambdaExecutionRole

Resource

Resource는 CloudFormation이 생성·관리하는 개별 AWS 서비스 단위입니다. Template의 Resources 섹션에 Type으로 선언하며, AWS::S3::Bucket, AWS::EC2::Instance, AWS::RDS::DBInstance 등 수백 가지 리소스 타입을 지원합니다.

리소스 간에 !Ref와 !GetAtt를 사용하여 참조 관계를 선언하면, CloudFormation이 의존성을 분석하여 올바른 순서로 리소스를 생성합니다.

변경 사항 적용 방식

CloudFormation은 Template이 수정되면 기존 Stack과의 차이(diff)를 계산하여 변경이 필요한 리소스만 업데이트합니다. Change Set을 미리 생성하면 실제 적용 전에 어떤 리소스가 어떻게 변경될지 미리 확인할 수 있습니다.

기존 Stack 상태
  S3 Bucket (v1)
  Lambda (v1)

Template 수정 후
  S3 Bucket (변경 없음)
  Lambda (v2 - 업데이트)
  RDS (신규 추가)

Change Set 미리보기
  [=] S3 Bucket    No changes
  [~] Lambda       Update (Runtime 변경)
  [+] RDS          Add

IaC의 장점

CloudFormation을 사용하는 IaC 방식의 주요 장점은 다음과 같습니다.

재현성: 동일한 Template으로 개발·스테이징·프로덕션 환경을 동일하게 구성할 수 있습니다.

버전 관리: Template 파일을 Git으로 관리하면 인프라 변경 이력을 추적하고 이전 상태로 롤백할 수 있습니다.

자동화: CI/CD 파이프라인에 통합하여 코드 변경과 함께 인프라 변경도 자동으로 배포할 수 있습니다.

일관성: 콘솔에서 수작업으로 구성하다 발생하는 설정 오류(Human Error)를 방지합니다.

CloudFormation은 AWS 네이티브 IaC 도구로, Terraform이나 AWS CDK와 목적은 같지만 AWS 리소스에 특화되어 있고 추가 도구 설치가 필요 없다는 장점이 있습니다.

← 이전 글CloudWatch — 로그와 모니터링
다음 글 →AWS CDK — 코드로 인프라 정의