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, 그리고 조건부 DeletionPolicy 및 UpdateReplacePolicy 속성도 지원합니다.
자세한 내용은 SAM CLI 개발자 가이드 및 출시 블로그 게시물을 참조하세요.