AWS CDK: cdk diff

김기현·2026년 2월 4일

AWS

목록 보기
41/44

cdk deploy를 누르기 전 가장 중요한 명령어가 바로 cdk diff이다. 실수로 데이터베이스를 날리거나 의도치 않게 보안 구멍을 만드는 대참사를 막기 위해 이 명령어가 내뱉는 메시지를 읽는 법을 반드시 익혀야 한다.


1. cdk diff란?

현재 내 로컬 코드와 이미 AWS에 배포되어 있는 상태를 비교하여 차이점만 보여주는 명령어이다.

  • 작동 원리: cdk synth를 내부적으로 실행하여 새로운 템플릿을 만든 뒤 현재 AWS 계정에 배포된 템플릿을 내려받아 하나하나 대조한다.
  • 철학: 변화는 가시적이어야 하며 파괴적인 변경은 배포 전에 경고해야 한다.

2. 결과 출력물 읽는 법 (기호의 의미)

기호의미위험도설명
[+]Add (추가)새로운 리소스가 생성됩니다. (예: 새 S3 버킷)
[-]Remove (삭제)기존 리소스가 삭제됩니다. (데이터 유실 주의!)
[~]Update (수정)기존 리소스의 속성이 바뀝니다.
[!]Replacement (교체)최고속성 수정이 불가능해 기존 리소스를 삭제하고 새로 만듭니다.

3. 주의 깊게 봐야 할 부분

IAM Statement Changes: 보안 관련

CDK는 보안에 민감하기 때문에 IAM 권한이 바뀌면 별도의 표로 아주 상세하게 보여준다.

  • Allow/Deny가 어떻게 바뀌는지 어떤 Action이 추가되는지 확인해야 한다.
  • cdk deploy 실행 시 이 부분을 한 번 더 물어보게 되어있다.

Replacement: 리소스를 새로 만들 때

일부 속성은 운영 중 수정할 수 없다. 이 경우 AWS는 해당 리소스를 삭제하고 다시 생성한다.

만약 DB 인스턴스에 Replacement가 있다면 백업 없이는 데이터가 모두 날아간다는 의미이다.


4. 실전 예시 (터미널 출력 예상)

Stack MyProjectStack
IAM Statement Changes
┌───┬──────────────────┬────────┬──────────────────┬──────────────────┬───────────┐
│   │ Resource         │ Effect │ Action           │ Principal        │ Condition │
├───┼──────────────────┼────────┼──────────────────┼──────────────────┼───────────┤
│ + │ ${MyLambda.Arn}  │ Allow  │ s3:GetObject     │ Service:lambda   │           │
└───┴──────────────────┴────────┴──────────────────┴──────────────────┴───────────┘
Resources
[+] AWS::S3::Bucket MyNewBucket MyNewBucket12345
[~] AWS::Lambda::Function MyLambda MyLambda67890
 └─ [~] MemorySize
     ├─  128
     └─  512

위 예시는 람다에게 S3 읽기 권한을 추가하고 새 버킷을 만들며 람다 메모리를 512MB로 올린다는 의미이다.


5. 자주 쓰는 옵션

  • cdk diff --context env=prod: 특정 컨텍스트(운영 환경 등)를 기준으로 비교한다.
  • cdk diff MyStackName: 여러 스택 중 특정 스택 하나만 비교한다.

cdk diff는 내가 코드를 고친 의도와 실제 반영될 내용이 일치하는지 최종 확인하는 체크리스트이다.

profile
백엔드 개발자를 목표로 공부하는 대학생

0개의 댓글