[AWS] Cloud Formation

2024. 4. 9. 13:56IT

정의

  • 스택을 생성할 때마다 AWS cloud formation에서 템플릿에 설명된 리소스를 프로비저닝과 구성을 담당
  • AWS 리소스를 수동으로 생성하거나 구성할 필요가 없고 어떤것이 무엇에 의존하는지 파악할 필요가 없다.
  • JSON, YAML을 이용하여 작성

특징

  • 장점
    • 인프라 관리 간소화
      • 템플릿을 사용하여 AWS cloud formation 스택을 생성할 경우 Auto Scaling 그룹, 로드 밸런서 및 데이터베이스를 자동으로 프로비저닝
    • 신속하게 인프라 복제
      • 템플릿을 재사용하여 리소스를 일관되고 반복적으로 설정 가능
      • 리소스를 한 번만 설명하고 여러 리전에서 동일한 리소스를 반복적으로 프로비저닝
    • 인프라 변경 사항을 쉽게 제어 및 추적
      • 프로비저닝되는 리소스와 해당 설정이 AWS cloud formation 템플릿에 상세히 기술됨
      • 템플릿은 텍스트 파일이므로 템플릿에서 차이점을 추적하여 인프라 변경 사항을 추적할 수 있다.
      • 예를 들어 버전 제어 시스템을 템플릿과 함께 사용하여 변경된 내용, 변경한 사람, 변경 시간등을 정확히 알 수 있다.

구성 요소

  • 템플릿을 생성하여 AWS 리소스와 해당 속성에 대해 설명
  • 스택을 생성할 때마다 AWS CloudFormation에서 템플릿에 설명된 리소스를 프로비저닝
  • Template → Cloud Formation → Stack
    • Template
      • Json, Yaml 형식의 파일, Parameter 정의, Resource 생성, 실제 구성 액션
    • Cloud Formation
      • 프레임 워크, Stack 생성, Stack 업데이트, 에러감지 및 롤백
    • Stack
      • 구성된 AWS 서비스, 포괄적인 AWS 서비스 지원

Template

  • 스택 리소스 프로비저닝 및 구성을 위해 필요한 파일
  • Json, Yaml의 텍스트 파일로 AWS 리소스 구축을 위한 블루포인트로 사용

Stack

  • 하나의 단위로 관리할 수 있는 AWS 리소스 모음
  • 스택의 생성, 업데이트, 삭제를 통해 리소스 모음의 생성, 업데이트, 삭제
  • 스택의 모든 리소스는 cloudformation템플릿을 통해 정의
  • 스택을 삭제하면 관련 리소스가 모두 삭제

CloudFormation

  • stack을 생성하고 stack에 대한 변경사항을 확인 및 업데이트
  • stack 생성 및 변경 중 에러 감지를 통한 롤백 지원

작동 순서

  • Yaml 또는 Json 포맷으로 원하는 인프라에 대한 정보를 Cloud Formation 템플릿으로 작성
  • CloudFormation 템플릿을 로컬에 저장하거나 S3 Bucket에 저장
  • 템플릿 파일의 위치를 지정하여 CloudFormation 스택을 생성
  • 템플릿에 지정된 stackd을 통해 AWS 리소스에 대한 프로비저닝 및 구성 작업을 진행
    • 모든 리소스가 생성된 후 AWS Cloud Formation에서는 스택이 생성되었음을 보고
    • 스택 생성에 성공하면 생성한 리소스 사용 가능
    • 스택 생성에 실패하면 생성한 리소스를 모두 삭제하고 변경 사항을 Roll Back 시킨다.

템플릿 구조

  • AWSTemplateFormatVersion: “version date”
    [포맷 버전, 템플릿이 따르는 AWS CloudFormation 템플릿 버전이다., “2010-09-09”]
  • Description:
    • String
      [템플릿을 설명하는 텍스트 문자열, 이 섹션은 항상 템플릿 포맷 버전 색션 다음에 이루어져야한다.]
  • Metadata:
    • template metadata
      [템플릿에 대한 추가정보를 제공하는 객체이다.]\
  • Parameters:
    • set of parameters
      [스택을 생성하거나 업데이트할 때 실행 시간에 템플릿에 전달하는 값이다, 템플릿의 Resources 및 Outputs 섹션에서 파라미터를 참조할 수 있다.]
  • Reousrces:
    • set of reources
      [필수, 인스턴스 또는 s3버킷같은 스택 리소스 및 해당 속성을 지정한다., 템플릿의 Resources 및 output 섹션에서 리소스를 참조할 수 있다.]

Parameters

  • 파라미터를 통해 스택을 생성하거나 업데이트할 때마다 템플릿에 사용자 지정 값을 입력할 수 있다.
  • 정의, 참조(Ref 내장 함수를 사용하여 파라미터를 참조할 수 있고, AWS Cloud Formation은 스택 프로비저닝에 이 파라미터를 사용한다.)가 가능하다.
  • Type
    • 파라미터(Data Type)의 데이터 유형이다, 필수 항목,
    • String, Number, List, CommaDelimitedList, AWS 특정 파라미터 유형, SSM 파라미터 유형
      LIst: 쉼표로 구분되는 정수 또는 부동 소수점 어레이이다.
      CommaDelimitedLIst: 쉼표로 구분된 리터럴 문자열 어레이이다.