CloudFormation 드리프트 인식 변경 세트 사용해보기

CloudFormation 드리프트 인식 변경 세트 사용해보기

2025.12.10

배경

기존에는 CloudFormation 스택의 드리프트를 관리하려면:

  1. detect-stack-drift로 드리프트 감지
  2. 결과 확인 후 템플릿 수정
  3. Change Set 생성 및 실행

2025년 11월 신기능: Drift-Aware Change Set으로 이 과정이 단일 명령으로 통합되었습니다.

확인하기전 간단한 템플릿

사전 준비

CloudFormation 템플릿:

Resources:
  EC2SecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupName: "test-sg-iac2"
      VpcId: "vpc-xxxxxxxxx"
      SecurityGroupEgress:
        - CidrIp: "0.0.0.0/0"
          IpProtocol: "-1"

콘솔에서 수동으로 설정을 추가하여 의도적으로 드리프트를 발생시켰습니다.

CLI 비교 테스트

A. 표준 Change Set (기존 방식)

aws cloudformation create-change-set \
  --stack-name test-sg-iac2 \
  --change-set-name standard-test \
  --use-previous-template

결과:

{
    "Id": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:changeSet/standard-test/b82c7d3d-xxxx-xxxx-xxxx-abb0a05e6c10",
    "StackId": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:stack/test-sg-iac2/1f43f7f0-xxxx-xxxx-xxxx-0e2c01893d21"
}

변경 사항 확인:

aws cloudformation describe-change-set \
  --change-set-name standard-test \
  --stack-name test-sg-iac2 \
  --query 'Changes'

출력:

[]

문제점: 드리프트가 있지만 감지 못함(detect-stack-drift 로 별도 확인이 필요)


B. Drift-Aware Change Set (신기능)

aws cloudformation create-change-set \
  --stack-name test-sg-iac2 \
  --change-set-name drift-aware-test \
  --use-previous-template \
  --deployment-mode REVERT_DRIFT

결과:

{
    "Id": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:changeSet/drift-aware-test/acb62412-xxxx-xxxx-xxxx-ab878570c7bd",
    "StackId": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:stack/test-sg-iac2/1f43f7f0-xxxx-xxxx-xxxx-0e2c01893d21"
}

변경 사항 확인:

aws cloudformation describe-change-set \
  --change-set-name drift-aware-test \
  --stack-name test-sg-iac2 \
  --query '{Status:Status, DriftStatus:StackDriftStatus, Changes:Changes[0].ResourceChange.Action}'

출력:

{
    "Status": "CREATE_COMPLETE",
    "DriftStatus": "DRIFTED",
    "Changes": "Modify"
}

성공: 드리프트 감지 및 태그 제거 계획 포함

GUI에서 확인하기

콘솔에서는 다음과 같이 표시됩니다:

1. 변경 세트 생성 시

"드리프트 인식 변경 세트 - 신규" 옵션이 추가되었습니다!
screenshot 2025-12-09 22.24.32
드리프트 인식 변경세트를 선택후 템플릿을 변경해보겠습니다.

2. 리소스 변경 확인(드리프트 상태: 동기화)

리소스 변경확인에서 드리프트 상태를 확인이가능해졌습니다.
screenshot 2025-12-09 22.25.50

  • 드리프트 상태: 동기화중 으로 확인가능

3. 리소스 변경 확인(드리프트 상태: 드리프트됨)

screenshot 2025-12-09 22.56.12
screenshot 2025-12-09 22.56.16

  • 드리프트 상태를 표시해주고 드리프트 보기 로 어느부분이 드리프트 되었는지 확인가능

요약

구분 표준 Change Set Drift-Aware Change Set
드리프트 감지
Changes 결과 [] (빈 배열) Modify 액션 포함
DriftStatus 표시 안 됨 DRIFTED
GUI 옵션 표준 변경 세트 드리프트 인식 변경 세트 - 신규
Before/After 비교 템플릿만 비교 실제 리소스 상태 포함
필요한 단계 감지 → 분석 → 수정 (3단계) 1단계로 통합

결론

기존에는 드리프트 감지와 수정이 별도 프로세스였지만, Drift-Aware Change Set은 단일 명령으로 통합하여:

  • 별도의 detect-stack-drift 불필요
  • 실제 리소스 상태를 자동으로 비교
  • 수정 계획을 즉시 확인 가능
  • GUI에서도 직관적으로 드리프트 상태 확인

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。

この記事をシェアする

FacebookHatena blogX

関連記事