목록으로

Programming Notes

AWS SAM CLI, 로컬 서버리스 개발 가속화를 위한 AWS CloudFormation 언어 확장 지원 추가

AWS SAM CLI가 이제 AWS CloudFormation 언어 확장(Language Extensions)을 지원합니다. 이를 통해 전체 로컬 개발 워크플로우를 유지하면서도 코드형 인프라(IaC) 템플릿의 중복을 줄일 수 있습니다. 리소스를 한 번만 정의하고 클라우드 배포를 기다릴 필요 없이 로컬에서 반복적으로 테스트할 수 있어 서버리스 개발 속도가 빨라집니다.

개발자들은 종종 하나의 템플릿 정의에서 Lambda 함수, DynamoDB 테이블, SNS 주제와 같이 유사한 여러 리소스를 정의해야 할 때가 많습니다. 하지만 기존에 서버리스 애플리케이션을 빌드, 테스트, 배포하기 위해 SAM CLI를 사용하던 개발자들은 CloudFormation 언어 확장이 포함된 템플릿을 처리할 수 없었습니다. 이로 인해 템플릿 중복을 줄이는 것과 로컬 개발을 위해 SAM CLI를 사용하는 것 사이에서 하나를 선택해야만 했습니다. 이제 SAM CLI는 CloudFormation 배포를 위한 원본 템플릿은 그대로 유지하면서, 로컬 작업 시 메모리 상에서 언어 확장을 처리합니다. 리소스를 한 번만 정의하고 모든 SAM CLI 명령을 통해 로컬에서 테스트할 수 있으며, 배포 전 구문 오류나 종속성 누락과 같은 에러를 미리 파악할 수 있습니다. 이를 통해 개발 반복 주기(iteration cycles)를 단축하고 클라우드 배포 실패를 디버깅하는 데 드는 시간을 줄여줍니다.

시작하려면 SAM CLI를 최신 버전으로 다운로드하거나 업데이트하세요. SAM 템플릿에 AWS::LanguageExtensions 변환(transform)을 추가하고, Fn::ForEach를 사용하여 단일 정의로 여러 리소스를 생성할 수 있습니다. sam build, sam local invoke, sam sync, sam local start-api, sam validate를 포함한 SAM CLI 명령은 자동으로 루프를 확장하고 생성된 각 리소스를 처리합니다. 확장된 함수는 sam local invoke AlphaFunction과 같이 이름을 지정해 호출할 수 있습니다. 또한 SAM CLI는 Fn::Length, Fn::ToJsonString, DefaultValue가 포함된 Fn::FindInMap, 그리고 조건부 DeletionPolicyUpdateReplacePolicy 속성도 지원합니다.

자세한 내용은 SAM CLI 개발자 가이드출시 블로그 게시물을 참조하세요.