본문 바로가기

AWS

[AWS] CloudFormation 정리

'AWS로 구현하는 MAS와 컨테이너 오캐스트레이션' 강의를

블로그를 통해 구매하시는 분들에게만 10%할인 중입니다.

이미지를 클릭하고, 아래 쿠폰번호를 입력해 주세요!

16861-259843d6c2d7


 

 

CloudFormation 이란

  • AWS 리소스를 코드로 정의하고 프로비저닝할 수 있게 해주는 서비스
  • 주요 기능 및 장점:
    • 인프라를 코드로 관리하여 버전 관리 및 재사용성 향상
    • 자동화된 프로비저닝을 통해 일관성과 효율성 향상
    • 코드로 작성된 템플릿을 사용하여 쉽게 인프라를 복제하고 배포

 

CloudFormation의 구성 요소

  • Template: 인프라를 코드로 정의한 파일, JSON 또는 YAML 형식으로 작성
  • Stack: 템플릿을 실행하여 생성된 AWS 리소스의 집합
  • Change Set: 기존 스택에 대한 변경 사항을 미리 보여주는 기능

 

CloudFormation Template 구조

  • 템플릿 작성 형식: JSON 또는 YAML 형식.
  • 주요 섹션:
    • Resources: 생성할 AWS 리소스를 정의 예) EC2 인스턴스, S3 버킷 등
    • Parameters: 템플릿의 입력값을 정의 예) 인스턴스 유형, 키 페어 이름 등
    • Outputs: 템플릿 실행 후 출력값을 정의 예) 인스턴스 ID, S3 버킷 URL 등
    • Conditions: 리소스 생성 조건을 정의
    • Mappings: 지역 또는 다른 기준에 따른 값 매핑

 

CloudFormation 사용 사례

  • 인프라 자동화: 반복적인 인프라 설정 작업을 자동화하여 시간 절약 및 오류 감소
  • 인프라 코드 관리 및 배포: 코드로 인프라를 정의하여 쉽운 버전 관리 및 배포

 

CloudFormation 실행 방법

  • AWS Management Console: 웹 인터페이스를 통해 템플릿 업로드 및 스택 생성
    • 템플릿 작성 및 업로드: 콘솔에서 JSON 또는 YAML 템플릿을 작성하거나 업로드
    • 스택 생성: 템플릿을 기반으로 스택을 생성하여 AWS 리소스 배포
    • 스택 관리: 생성된 스택의 상태 모니터링 및 관리
  • AWS CLI: 명령줄 인터페이스를 사용하여 템플릿 실행 및 스택 관리
    • 템플릿 실행: aws cloudformation create-stack 명령어를 사용하여 템플릿 실행
    • 스택 업데이트: aws cloudformation update-stack 명령어를 통해 기존 스택 업데이트
    • 스택 삭제: aws cloudformation delete-stack 명령어로 스택 삭제
  • AWS SDK: 프로그래밍 언어를 사용하여 템플릿 실행 및 스택 관리
    • SDK 사용: Python(Boto3), Java, JavaScript 등 다양한 프로그래밍 언어 SDK를 통해 CloudFormation 제어
  • Sync from Git (새로운 기능)
    • Git Repository에 저장된 코드로 템플릿 실행 및 스택 관리
    • 지정한 브런치의 커밋을 트리거하여 업데이트
    • 가장 최근에 나온 관리 기능

 


 

예제 템플릿 구조 (Yaml)

AWSTemplateFormatVersion: '2010-09-09'
Description: A simple CloudFormation template example

Parameters:
  InstanceType:
    Description: EC2 instance type
    Type: String
    Default: t2.micro

Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: !Ref InstanceType
      ImageId: ami-0c55b159cbfafe1f0

Outputs:
  InstanceId:
    Description: The Instance ID
    Value: !Ref MyEC2Instance

  • AWSTemplateFormatVersion: 템플릿의 형식 버전을 지정
  • Description: 템플릿의 간단한 설명
  • Parameters: 템플릿 실행 시 사용자가 입력할 수 있는 값 정의, 여기서는 InstanceType 이라는 파라미터를 정의하여 생성할 EC2 인스턴스의 유형을 지정
    • Description: 파라미터 대한 설명
    • Type: 파라미터 유형 지정, 여기서는 String
    • Default: 파라미터 기본값, 여기서는 t2.micro
  • Resources: 생성할 AWS 리소스를 정의, 여기서는 MyEC2Instance 라는 이름의 EC2 인스턴스를 정의
    • Type: 리소스 유형 지정, 여기서는 AWS::EC2::Instance
    • Properties: 리소스의 속성 정의
      • InstanceType: 파라미터 InstanceType에서 참조한 값을 사용해 인스턴스 유형을 지정
      • ImageId: 인스턴스에 사용할 AMI ID 지정, 여기서는 ami-0c55b159cbfafe1f0
  • Outputs: 템플릿 실행 후 출력할 값 정의, 여기서는 InstanceId 라는 이름으로 생성된 EC2 인스턴스의 ID 출력
    • Description: 출력 값에 대한 설명
    • Value: 출력할 값 지정, 여기서는 MyEC2Instance 리소스의 참조 값을 출력