CloudFormation

2. AWS CloudFormation으로 스택 생성하기

yoxxin 2025. 3. 12. 23:00

1. 학습 목표

  • S3 Bucket을 생성하는 YAML 템플릿을 작성할 수 있다.
  • AWS 콘솔에서 CloudFormation 스택을 생성할 수 있다.

템플릿(Template): YAML/JSON으로 작성된 인프라 정의서

스택(Stack): CloudFormation 템플릿을 실행하여 AWS 리소스를 생성하는 단위

2. 스택 생성하기

  1. S3 Bucket을 생성하는 YAML 템플릿 파일 생성
  2. 생성한 YAML 템플릿을 AWS 콘솔에서 CloudFormation에 올려서 스택 만들기
    1. 업로드한 템플릿은 s3에 자동 저장된다.
    2. 이미 s3에 저장된 템플릿을 가져올수도 있다.
# S3 버킷을 생성하는 CloudFormation 템플릿
AWSTemplateFormatVersion: 2010-09-09
Resources:
  KumaS3Bucket:
    Type: 'AWS::S3::Bucket'
    Properties:
      BucketName: kuma-admin-cloudformation-bucket
      VersioningConfiguration:
        Status: Enabled

템플릿 업로드
스택이 생성되었다
s3도 함께 생성됨

3. 스택 이벤트 모니터링

스택의 이벤트 탭에는 스택을 생성하는 각 주요 단계가 이벤트 시간 순으로 정렬되어 표시된다.

최신 이벤트가 맨 위에 표시된다.

4. 스택 및 리소스 삭제

불필요한 요금 청구를 막기 위해 스택 및 리소스를 삭제한다.

  1. CloudFormation 콘솔을 연다
  2. 스택 페이지에서 생성한 스택의 이름 옆에 있는 옵션을 선택한 다음 삭제를 선택한다.
  3. 확인 메시지가 나타나면 삭제를 선택한다.
  4. 이벤트 탭에서 스택 삭제 프로세스의 진행 상황을 모니터링한다. 스택의 상태가 DELETE_IN_PROGRESS로 변경된다. CloudFormation에서 스택 삭제를 완료하면 목록에서 해당 스택이 제거된다.

스택을 삭제하면 대부분의 리소스는 함께 삭제되지만, 해당 리소스가 관리하는 리소스가 남아있는 경우 삭제되지 않는다.

 

[CloudFormation 스택 삭제 시 리소스 삭제 여부 from GPT]

리소스 유형 기본적으로 삭제됨? 삭제되지 않는 이유 삭제하려면? 삭제하지 않으려면?
EC2 인스턴스 - - DeletionPolicy: Retain 설정
S3 버킷 버킷이 비어 있지 않으면 삭제 불가 DeletionPolicy: Delete 설정 + 객체 정리 필요 DeletionPolicy: Retain 설정
RDS 인스턴스 - - DeletionPolicy: Retain 설정
EBS 볼륨 기본적으로 DeleteOnTermination: false DeleteOnTermination: true 설정 DeleteOnTermination: false 유지
ELB (로드 밸런서) 연결된 리소스(VPC, 인스턴스 등)가 남아 있으면 삭제 불가 ELB와 연결된 리소스 먼저 삭제 DeletionPolicy: Retain 설정
Route 53 HostedZone 내부 레코드가 존재하면 삭제 불가 모든 레코드 삭제 후 제거 레코드를 남겨두거나 DeletionPolicy: Retain 설정
VPC (가상 네트워크) 내부에 서브넷, 게이트웨이 등이 남아 있으면 삭제 불가 내부 리소스를 먼저 삭제 내부 리소스를 유지하거나 DeletionPolicy: Retain 설정
Lambda 함수 - - DeletionPolicy: Retain 설정
DynamoDB 테이블 - - DeletionPolicy: Retain 설정

 

Reference

https://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/gettingstarted.walkthrough.html#getting-started-monitor-stack-creation