벌꿀오소리가 되고싶은
AWS Certified Developer - Associate 정리 - Cloud Formation 본문
개요
- 코드형 인프라 서비스
- 알아서 필요한 순서대로 생성되고 삭제된다
- 깃으로 버전 관리가 가능하다
- 생성한 모든 스택은 식별자가 있어 손쉽게 스택 비용 추적 가능
- 클라우드포메이션을 이용해 자동으로 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문을 사용해야함
'개발 > AWS' 카테고리의 다른 글
AWS Certified Developer - Associate 정리 - KMS (1) | 2023.09.24 |
---|---|
AWS Certified Developer - Associate 정리 - EC2 (0) | 2023.09.24 |
AWS Certified Developer - Associate 정리 - 비용 (0) | 2023.09.24 |
AWS Certified Developer - Associate 정리 - IAM (0) | 2023.09.24 |
AWS Certified Developer - Associate 정리 - 기본 용어 (0) | 2023.09.24 |
Comments