CloudFormation 템플릿은 템플릿 크기에서 공백을 계산합니다...

발행: (2026년 2월 21일 오후 11:05 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

Context

우리는 AWS CloudFormation 템플릿 크기 제한인 1 MB에 도달했으며, 이 때문에 alpha, staging, production 환경에 대한 배포가 실패했습니다. 권장되는 완화 방안은 다음과 같습니다:

  • 중첩 스택(Nested Stacks) 사용
  • 더 많은 CloudFormation 템플릿 생성
  • 불필요한 리소스를 제거하거나 IAM 역할 및 정책을 통합 고려

우리는 모니터링 리소스(예: CloudWatch 알람)를 중첩 스택으로 옮길 계획이었지만, Claude를 사용한 간단한 분석에서 흥미롭고 의문스러운 결과를 발견했습니다.

Analysis

CloudFormation 템플릿 크기의 **≈ 50 %**가 순수히 공백 문자로만 구성되어 있음을 발견했습니다. 겉보기엔 무해해 보이지만, 1 MB 제한의 상당 부분을 차지합니다.

영향을 테스트하기 위해 jq로 템플릿을 압축(minify)했습니다:

jq -c '.' cloudformation-stack-update.json > minified.json

Infrastructure Composer에서 원본 템플릿과 압축된 템플릿을 모두 업로드하고 Validate를 클릭했습니다. 원본 템플릿은 1 MB 제한을 초과했지만, 압축된 버전은 정상적으로 검증되었습니다.

Next Steps

우리 플랫폼 팀은 Serverless Framework를 사용해 CloudFormation 템플릿을 패키징합니다. 나는 압축 지원을 추가해 달라는 기능 요청을 열었지만, 그 답변을 기다리는 동안 직접 수정 사항을 기여했습니다:

  1. 저장소에 PR을 열었습니다.
  2. 테스트 노트를 추가하고 변경 사항을 검토·머지했습니다.
  3. 빌드 파이프라인을 다시 실행한 결과, 템플릿 크기가 ≈ 50 % 감소하여 배포가 정상화되었습니다. 🎉

Why This Is Important

공백 문자는 예상치 못하게 CloudFormation 템플릿 크기를 부풀려 배포 실패를 초래할 수 있습니다. 패키징 전에 템플릿을 압축하면 이 문제를 방지할 수 있습니다. Serverless Framework에 provider.minify 옵션을 추가하면 유용한 내장 솔루션이 될 것입니다.

Reference

0 조회
Back to Blog

관련 글

더 보기 »

서브넷팅 설명

Subnetting이란 무엇인가? 큰 아파트 건물을 여러 층으로 나누는 것과 같다. 각 층 서브넷은 자체 번호가 매겨진 유닛(hosts)을 가지고, 그리고 건물…