AWS DOP - CloudFormation (2)

2025. 4. 17. 11:31·Web

Service Role

  • CloudFormation이 스택의 리소스를 생성/업데이트/삭제할 수 있도록 위임된 IAM 역할
  • 사용자 대신 CloudFormation이 S3 버킷, EC2 인스턴스 등을 조작할 수 있게 해줌
  • 사용자는 CloudFormation을 사용할 수는 있지만, 직접 리소스를 생성할 권한은 없음
  • 대신 CloudFormation에게 역할을 맡기고, 사용자 본인은 최소한의 권한만 가짐

 

CAPABILITY

CloudFormation 템플릿을 실행할 때, IAM 리소스를 생성하거나 수정하려면 명시적으로 권한을 인정(capability)해야 한다

CAPABILITY_IAM

  • CloudFormation 템플릿에서 IAM 사용자, 역할, 정책 등을 자동 생성/수정할 때 필요
  • 생성되는 IAM 리소스에 명시적인 이름이 없는 경우

CAPABILITY_NAMED_IAM

  • CAPABILITY_IAM의 상위 버전
  • 사용자 정의 이름이 있는 IAM 리소스를 생성할 때 반드시 필요

CAPABILITY_AUTO_EXPAND

  • 템플릿 내에 매크로(Macro) 또는 중첩된 스택(Nested Stack)이 있을 때 필요
  • 동적 템플릿 변환을 허용함
  • CloudFormation이 템플릿을 사전에 평가하여 변경 사항을 반영할 수 있도록 함
aws cloudformation create-stack \
  --stack-name MyStack \
  --template-body file://template.yaml \
  --capabilities CAPABILITY_NAMED_IAM

 


 

삭제 정책 (Deletion Policy)

CloudFormation 스택에서 리소스가 삭제될 때의 동작을 제어하는 설정
기본적으로는 스택을 삭제하면 리소스도 같이 삭제됨
정책을 사용하면 동작을 다르게 만들 수 있음

정책 설명 사용 대상 예시
Delete 기본값, 리소스 삭제 EC2, 기본 리소스들
Retain 리소스 보존, 직접 삭제해야 함 S3, DynamoDB, 보안 그룹 등
Snapshot 삭제 전 백업 스냅샷 생성 EBS, RDS, ElastiCache, Redshift 등

주의사항

  • S3 버킷은 비워야 삭제 가능 (비우는 작업은 자동 아님)
  • Retain 설정된 리소스는 따로 수동 삭제 필요
  • Snapshot은 지원하는 리소스에서만 사용 가능

 


 

스택 정책 (Stack Policy)

스택 정책은 CloudFormation 스택에 포함된 리소스가 업데이트되는 방식에 대해 정밀하게 제어할 수 있도록 해줌

  • 목적: 특정 리소스를 업데이트로부터 보호하여 의도하지 않은 변경을 방지

기본 동작 (Default Behavior)

  • 기본값: 모든 리소스가 업데이트 가능

스택 정책 예시

  1. 모든 리소스 업데이트 허용 (Allow updates for everything)
    • 모든 리소스가 업데이트될 수 있도록 허용하는 설정
  2. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "Update:*", "Resource": "*" } ] }
  3. 특정 리소스 업데이트 거부 (Deny updates for specific resource)
    예: 프로덕션 데이터베이스 보호
    • ProductionDatabase 리소스는 스택 업데이트 동안 절대 변경되지 않도록 보호
  4. { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "Update:*", "Resource": "arn:aws:rds:region:account-id:db:ProductionDatabase" } ] }

 


 

종료 보호 (Termination Protection)

목적: 실수로 클라우드 형식 스택을 삭제하는 것을 방지하는 안전장치
활성화: 종료 보호를 활성화하면 스택을 삭제할 수 없음

 


 

사용자 지정 리소스 (Custom Resources)

CloudFormation이 지원하는 리소스 타입들만 생성하거나 관리할 수 있음. 그런데 만약 CloudFormation에서 직접 지원하지 않는 리소스를 만들어야 한다면? 이때 사용하는 게 바로 Custom Resource

예를 들어, 온-프레미스 리소스나 타사 리소스의 경우, 또는 클라우드 형식의 생성/업데이트/삭제 과정에 사용자 지정 스크립트를 실행할 수 있다.

예시:

  • 람다 함수 실행: 예를 들어, S3 버킷을 삭제하려고 할 때, 버킷이 비어 있어야 삭제가 가능하므로 람다 함수를 사용하여 버킷을 비우고 삭제를 진행할 수 있음.
Resources:
  MyCustomResource:
    Type: Custom::MyLambdaResource
    Properties:
      ServiceToken: arn:aws:lambda:region:account-id:function:my-lambda-function
      BucketName: my-bucket
  • ServiceToken: 사용자 지정 리소스를 처리할 람다 함수의 ARN을 지정
  • 입력 파라미터: 람다 함수에 입력 데이터를 제공할 수 있음. 예) BucketName: my-bucket

 


 

동적 참조

클라우드 형식 템플릿 안에서 민감한 값(예: 비밀번호, API 키 등)을 직접 노출하지 않고, 외부 저장소(SSM Parameter Store, Secrets Manager 등)에서 값을 동적으로 불러오는 방법

참조 타입 설명
ssm SSM Parameter Store에 저장된 일반 텍스트 값
ssm-secure 암호화된 SSM Parameter Store 값 (SecureString)
secretsmanager Secrets Manager에 저장된 비밀 값

 

 


 

'Web' 카테고리의 다른 글

AWS DOP - CloudFormation (3)  (1) 2025.04.19
Route53에서 구입한 도메인 ACM발급 실패  (0) 2025.04.19
AWS DOP - CloudFormation (1)  (0) 2025.04.16
AWS DOP - SDLC Automation 파트 개념 정리  (2) 2025.04.15
k8s 간략히 따라해보기  (0) 2025.04.13
'Web' 카테고리의 다른 글
  • AWS DOP - CloudFormation (3)
  • Route53에서 구입한 도메인 ACM발급 실패
  • AWS DOP - CloudFormation (1)
  • AWS DOP - SDLC Automation 파트 개념 정리
마술사의 수습생
마술사의 수습생
언젠간 당신처럼 되고 싶어요.
  • 마술사의 수습생
    개발 기록 블로그
    마술사의 수습생
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • Web (50)
      • 일기 (2)
      • 잡담 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
마술사의 수습생
AWS DOP - CloudFormation (2)
상단으로

티스토리툴바