Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

벌꿀오소리가 되고싶은

AWS Certified Developer - Associate 정리 - Cloud Formation 본문

개발/AWS

AWS Certified Developer - Associate 정리 - Cloud Formation

허니배져 2023. 9. 24. 14:46

개요

  • 코드형 인프라 서비스
  • 알아서 필요한 순서대로 생성되고 삭제된다
  • 깃으로 버전 관리가 가능하다
  • 생성한 모든 스택은 식별자가 있어 손쉽게 스택 비용 추적 가능
  • 클라우드포메이션을 이용해 자동으로 17시에 삭제하고 08시에 생성할 수 있음
  • s3에 템플릿을 올리면 CF가 가져옴. 템플릿을 올릴 때 이전 버전은 수정할 수 없고 새로 올려야한다
  • 스택은 이름으로 식별됨
  • 수정하는 방법
    • 클라우드포메이션 디자이너에서 직접 edit
    • 콘솔과 input param 사용
    • AWS CLI

구성요소

  • 리소스: aws 리소스를 필수로 지정해야함 리소스가 선언되면 서로 참조할 수 있음
    • 리소스 양은 동적으로 만들 수 없다 모든 것은 선언되어야 한다
  • 파라미터: 템플릿에서 사용할 dynamic input
    • 타입, 설명, 제약사항, 최소/최대값, 기본값, 허용값, 패턴 등
    • 파라미터를 참조할 때는 !Ref 함수를 사용함 (!Ref는 파라미터 참조에도 쓰이고 리소스 참조에도 쓸 수 있음)
    • 예약된 파라미터(Pseudo parameter) : AccountName은 없다
    • 사전 승인된 인스턴스 유형 목록에서 EC2 인스턴스를 선택해야 한다면?CloudFormation 템플릿에서 EC2 인스턴스 유형 목록을 AllowedValues로 매개변수 구성
  • 매핑: 고정 변수
    • 하드코딩되어야하는 값 ex. 환경값 prod, dev, AZ 등
    • Fn::FindMap: 매핑한 값에 접근할 때 사용하는 함수 [MapName, TopLevelKey, SecondLevelKey]
  • outputs: 템플릿에서 일부를 내보내면 다른 템플릿에서 참조 가능
    • 다른 스택에서 이 output을 참조중이라면, 이 출력이 선언된 스택은 삭제할 수 없음
    • 여기서 내보내는 출력 이름(exported output)은 지역 내에서 고유해야함 만약 ‘출력이 이미 존재한다’는 오류가 나면 지역 내에 같은 이름이 존재하는 것
    • outputs 블록에서 export 구문은 옵션이지만 쓰지 않으면 값이 내보지지도 않고 가져올수도 없음내보내는 스택
    • 사용하는 다른 스택
    • 사용할 때는 !ImportValue 함수 사용
  • conditionals: 생성 제어 조건문
    • 매개변수(parameter) 섹션 내에서는 사용할 수 없음
    • resources, outputs, conditions에서 사용될 수 있다
  • metadata
  • 내장함수
    • Fn::Ref: **parameter, resource(**물리적 ID 반환)에서만 사용할 수 있음
    • Fn::GetAtt: 리소스의 모든 속성의 리스트 얻기. 가용역역, dns, 사설ip 등등. ref는 아이디만 얻어올 수 있음 (ex: !GetAtt EC2Instance.AvailableZone)
    • Fn::Sub: 문자열값을 대체할 때 사용

배포 실패시 롤백 옵션

  • 스택 배포에 실패하면 자동으로 이전 버전으로 롤백시키기
  • 성공적으로 프로비저닝된 리소스는 그대로 두고 실패한 리소스만 롤백시키기
  • 스택 알림
    • 배포 관련 이벤트를 SNS로 보낼 수 있음 이벤트도 특정 이벤트를 필터링해서 이메일등으로 보낼 수 있음

고급 개념

  • ChangeSets: 스택 적용하기 전 변경사항 확인
  • 교차스택 vs 중첩스택
    • 교차스택: 스택의 생명주기가 서로 다를 때 유용
    • 교차스택
      • 교차 스택 참조를 생성하려면 Export 출력 필드를 사용하여 내보낼 리소스 출력 값에 플래그를 표시합니다. 그런 다음 Fn::ImportValue 내장 함수를 사용하여 값을 가져옵니다.
      • Export 이름은 한 리전 내에서 고유해야 합니다. 여러 리전 간에 교차 스택 참조를 만들 수 없습니다.
      • Export 함수를 Ref의 GetAtt 속성 값으로 사용할 수 없음
      • ImportValue 함수는 리소스에 의존하는 Ref 또는 GetAtt 함수를 포함할 수 없음
      • 다른 스택에서 출력을 참조 중인 스택은 삭제할 수 없음
      • 다른 스택에서 참조하는 출력 값은 수정하거나 제거할 수 없음
    • 중첩스택
      • 개별스택의 공통구성요소를 업데이트하고 다른 스택에서 호출
      • 로드밸런서나 security group 등이 적용하기 좋음
  • StackSets
    • StackSets을 사용해서 여러 계정과 리전에 걸쳐서 스택을 생성, 수정, 삭제
    • 관리자가 StackSet을 생성하고 다른 계정이 StackSets으로부터 스택인스턴스를 생성수정삭제 할 수 있음
    • StackSets으로 연결된 모든 리전과 계정을 스택 인스턴스들을 한꺼번에 관리할 때
  • CloudFormation Drift
    • 클라우드포메이션을 이용하지 않고 수동으로 변경하는 데 대한 보호가 없음
    • 이런 수동 변경에 대한 리소스 변경을 알려주는 기능

스택 정책

  • 스택을 생성할 때 모든 리소스에 대한 모든 업데이트 작업이 허용됨
  • 스택 정책을 설정한 이후에는 기본적으로 스택 내의 모든 리소스가 보호됨. 명시적 Allow 문을 지정
  • 하지만 어떤 리소스는 스택변경으로부터 보호하고 싶다 이때 스택 정책 사용. 실수로 업데이트하거나 삭제하는 것을 방지
  • 스택정책을 사용하면 기본적으로 모든 리소스가 보호되며 업데이트를 허용할 리소스는 명시적으로 allow문을 사용해야함
Comments