CloudFormation 템플릿은 템플릿 크기에서 공백을 계산합니다...
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 템플릿을 패키징합니다. 나는 압축 지원을 추가해 달라는 기능 요청을 열었지만, 그 답변을 기다리는 동안 직접 수정 사항을 기여했습니다:
- 저장소에 PR을 열었습니다.
- 테스트 노트를 추가하고 변경 사항을 검토·머지했습니다.
- 빌드 파이프라인을 다시 실행한 결과, 템플릿 크기가 ≈ 50 % 감소하여 배포가 정상화되었습니다. 🎉
Why This Is Important
공백 문자는 예상치 못하게 CloudFormation 템플릿 크기를 부풀려 배포 실패를 초래할 수 있습니다. 패키징 전에 템플릿을 압축하면 이 문제를 방지할 수 있습니다. Serverless Framework에 provider.minify 옵션을 추가하면 유용한 내장 솔루션이 될 것입니다.