본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
AWS CloudFormation; CloudFormation; 클라우드포메이션
AWS 리소스를 YAML이나 JSON 템플릿으로 선언하고, 그 템플릿대로 리소스 묶음(스택)을 만들고 바꾸고 지우는 AWS의 코드형 인프라 서비스

콘솔에서 손으로 VPC, 서브넷, 보안 그룹, EC2, RDS를 만들면 같은 환경을 다시 만들 때 빠뜨리거나 다르게 만들기 쉽다. AWS CloudFormation은 원하는 최종 상태를 템플릿에 적으면 생성 순서와 의존 관계를 알아서 계산해 리소스를 프로비저닝한다. 템플릿은 코드처럼 버전 관리하고 리뷰할 수 있으므로 개발·스테이징·운영 환경을 똑같이 찍어 내고, 재해가 나면 다른 리전에 같은 인프라를 다시 세운다. SAA 시험 가이드의 "인프라 무결성을 보장하기 위한 자동화 전략", "변경 불가능한 인프라"가 이 서비스와 연결된다.

변경 세트로 스택을 업데이트하는 4단계
섹션 필수 역할
AWSTemplateFormatVersion 아니요 템플릿 형식 버전
Description 아니요 템플릿 설명
Parameters 아니요 스택을 만들거나 바꿀 때 입력받는 값(인스턴스 유형, 환경 이름 등)
Mappings 아니요 키·값 조회표. Fn::FindInMap으로 리전별 AMI ID 같은 값을 고른다
Conditions 아니요 조건식. 운영 환경에서만 다중 AZ를 켜는 식으로 리소스 생성 여부나 속성을 바꾼다
Rules 아니요 파라미터 값이나 조합을 검증
Transform 아니요 매크로 적용. 서버리스 애플리케이션은 AWS SAM 변환을 지정한다
Resources 예 만들 리소스와 속성. 템플릿의 핵심
Outputs 아니요 스택이 돌려주는 값(ALB DNS 이름 등). 내보내기(Export)로 다른 스택이 참조
AWSTemplateFormatVersion: "2010-09-09"
Description: S3 bucket with versioning, deletion protected in prod
Parameters:
  Env:
    Type: String
    AllowedValues: [dev, prod]
Conditions:
  IsProd: !Equals [!Ref Env, prod]
Resources:
  DataBucket:
    Type: AWS::S3::Bucket
    DeletionPolicy: Retain
    Properties:
      VersioningConfiguration:
        Status: !If [IsProd, Enabled, Suspended]
Outputs:
  BucketName:
    Value: !Ref DataBucket

DeletionPolicy: Retain을 주면 스택을 지워도 버킷은 남는다. EBS 볼륨처럼 스냅샷을 지원하는 리소스는 Snapshot을 지정해 삭제 전에 스냅샷을 남길 수 있다. 기본값은 삭제이지만, RDS DB 클러스터와 일부 DB 인스턴스는 기본값이 스냅샷이다.

CloudFormation 스택

편집 원본 편집

스택은 하나의 템플릿으로 만든 리소스 묶음이며, 생성·수정·삭제가 스택 단위로 일어난다.

기능 설명
롤백 생성이나 업데이트 중 리소스 하나라도 실패하면 기본적으로 이전 안정 상태로 되돌린다. 성공한 리소스 보존 옵션을 켜면 실패 지점에서 문제를 고친 뒤 이어서 진행할 수 있다
변경 세트(change set) 템플릿 변경을 실제로 적용하기 전에 어떤 리소스가 추가·수정·교체·삭제되는지 미리 보여 준다. 데이터베이스가 교체되는 사고를 막는 검토 단계
드리프트 감지 누군가 콘솔에서 직접 바꾼 설정처럼 스택 밖에서 생긴 변경을 찾아낸다. 실제 구성이 템플릿과 다르면 DRIFTED로 표시
중첩 스택 공통 구성(VPC, 보안 그룹)을 별도 템플릿으로 나눠 재사용
스택 간 참조 Outputs의 Export와 Fn::ImportValue로 네트워크 스택 값을 애플리케이션 스택에서 사용
StackSets 관리자 계정에서 템플릿 하나로 여러 계정과 여러 리전에 스택을 한 번에 만들고 업데이트·삭제

불변 인프라와 재해 복구

편집 원본 편집
  • 불변 인프라: 운영 중인 서버를 고치지 않고, 템플릿과 새 AMI로 새 리소스를 만들어 교체한다. 설정이 서버마다 달라지는 문제를 없앤다. 블루 그린 배포와 잘 맞는다.
  • 재현 가능한 환경: 같은 템플릿에 파라미터만 바꿔 개발·운영 환경을 만든다.
  • DR 재구축: 백업 및 복원, 파일럿 라이트 전략에서는 복구 리전에 인프라를 빠르게 다시 세우는 수단이 CloudFormation이다. 의사 파라미터(AWS::Region, AWS::AccountId)와 조건으로 DR 리전에서는 축소된 구성만 배포할 수 있다. StackSets로 여러 리전에 같은 기준 구성을 유지한다.

AWS Systems Manager

편집 원본 편집

AWS Systems Manager는 EC2, 온프레미스 서버, 다른 클라우드의 VM을 관리형 노드로 묶어 운영 작업을 자동화하는 서비스 모음이다. 노드에 SSM Agent가 설치되어 있고 Systems Manager와 통신할 권한(EC2라면 인스턴스 프로파일의 IAM 역할)이 있어야 한다.

도구 하는 일 시험 단서
Session Manager 브라우저나 CLI로 노드에 셸 접속. 인바운드 포트, 배스천 호스트, SSH 키가 필요 없고 IAM 정책으로 접근을 제어한다. 세션 기록은 S3나 CloudWatch Logs에 남긴다 "SSH 포트를 열지 않고 안전하게 접속, 접속 기록 감사"
Patch Manager 패치 기준선에 따라 OS와 애플리케이션 패치를 검사·설치. 패치 정책, 유지 관리 기간, 즉시 패치로 실행 "수백 대 서버의 정기 패치 자동화"
Parameter Store 설정값과 비밀값을 계층 구조로 저장. String, StringList, KMS로 암호화하는 SecureString 유형. 표준 계층은 무료 "설정값을 코드 밖에 두고 중앙 관리"
Run Command 여러 노드에 명령을 일괄 실행 "SSH 없이 여러 인스턴스에 스크립트 실행"
Automation 런북(Automation 문서)으로 운영 절차를 자동화. AWS Config 수정 조치도 이것을 쓴다 "AMI 생성, 인스턴스 재시작 같은 절차 자동화"
  • 데이터베이스 자격 증명처럼 자동 교체가 필요한 비밀값은 Parameter Store보다 AWS Secrets Manager가 맞다. AWS도 비밀값은 Secrets Manager를 권장한다.
  • 퍼블릭 IP가 없는 인스턴스도 VPC 엔드포인트(PrivateLink)를 통해 Session Manager로 접속할 수 있다.
  • "여러 환경·리전에 같은 인프라를 반복 배포, 수동 작업 제거"는 CloudFormation, 여러 계정·리전에 한 번에 배포하면 StackSets다.
  • "운영 스택 변경 전에 영향을 미리 확인"은 변경 세트, "누가 콘솔에서 바꾼 설정 찾기"는 드리프트 감지다.
  • "스택을 지워도 데이터는 남겨야 함"은 DeletionPolicy Retain 또는 Snapshot이다.
  • DR 시나리오에서 "복구 리전에 인프라를 빠르게 재생성"이 나오면 CloudFormation 템플릿을 준비해 두는 것이 정석이다.
  • "배스천 호스트 없이, 22번 포트를 열지 않고 접속"은 Session Manager다.
  • "설정값 중앙 관리"는 Parameter Store, "비밀번호 자동 교체"는 Secrets Manager로 구분한다.