
들어가며
AWS Lambda를 사용하면 서버를 직접 관리하지 않고 코드를 실행할 수 있지만, 실제 서비스에서는 Lambda 하나만 사용하는 경우는 드뭅니다.
대부분의 서버리스 애플리케이션은 Lambda, API Gateway, DynamoDB, S3 등 여러 AWS 서비스를 함께 사용하게 됩니다. 이때 각 서비스를 콘솔에서 하나씩 생성하고 설정하면 관리가 어렵고, 동일한 환경을 다시 구성하기도 쉽지 않습니다.
이러한 문제를 해결하기 위해 AWS에서는 AWS SAM(Serverless Application Model) 을 제공합니다.
AWS SAM은 서버리스 애플리케이션을 YAML 파일 하나로 정의하고, 빌드·테스트·배포까지 자동화할 수 있도록 지원하는 프레임워크입니다.
이번 글에서는 AWS SAM의 개념부터 배포 과정, SAM Accelerate(sam sync)까지 살펴보겠습니다.
1. AWS SAM이란?

AWS SAM(Serverless Application Model)은 서버리스 애플리케이션을 개발하고 배포하기 위한 오픈소스 프레임워크입니다.
Lambda, API Gateway, DynamoDB 등의 AWS 리소스를 YAML 형식으로 정의하면 AWS가 필요한 CloudFormation 템플릿을 생성하여 리소스를 자동으로 배포합니다.
기존에는 AWS 콘솔에서 하나씩 생성해야 했던 리소스를 코드로 관리할 수 있도록 도와주는 서비스입니다.
2. AWS SAM의 특징
| 기능 | 설명 |
| Infrastructure as Code(IaC) | 인프라를 코드로 관리 |
| YAML 기반 | 리소스를 YAML 파일로 정의 |
| CloudFormation 기반 | 자동으로 CloudFormation 생성 |
| Local Test | 로컬에서 Lambda 실행 가능 |
| 간편한 배포 | sam deploy 명령으로 배포 |
3. 왜 AWS SAM을 사용할까?
서버리스 애플리케이션을 만든다고 가정해 보겠습니다.
필요한 서비스는 다음과 같습니다.
- Lambda
- API Gateway
- DynamoDB
- IAM Role
콘솔에서 직접 생성한다면 각각의 서비스를 생성하고 연결해야 합니다.
하지만 AWS SAM을 사용하면 하나의 YAML 파일에 모든 리소스를 정의하여 한 번에 배포할 수 있습니다.
Resources:
MyFunction:
Type: AWS::Serverless::Function
MyTable:
Type: AWS::DynamoDB::Table
MyApi:
Type: AWS::Serverless::Api
4. AWS SAM 배포 과정

5. CloudFormation과의 관계
- SAM → 개발자가 사용하는 도구
- CloudFormation → AWS 리소스를 실제로 생성하는 서비스
AWS SAM은 CloudFormation을 더 쉽게 사용할 수 있도록 만든 서비스입니다.
SAM Template
↓
CloudFormation Template
↓
AWS 리소스 생성
실제로는 CloudFormation이 리소스를 생성하지만, 개발자는 SAM의 간단한 문법만 작성하면 되므로 훨씬 편리합니다.
6. SAM Accelerate(sam sync)
애플리케이션을 개발하다 보면 코드를 수정할 때마다
sam build
sam deploy
를 반복해야 합니다. 하지만 작은 코드 수정에도 전체 배포를 수행하면 시간이 오래 걸립니다.
이를 해결하기 위해 SAM Accelerate 기능이 제공됩니다.
6-1) sam sync란?
sam sync는 변경된 코드만 AWS와 동기화하는 기능입니다. 전체 CloudFormation 스택을 다시 배포하지 않고 필요한 부분만 업데이트하여 개발 속도를 높여줍니다.
6-2) sam sync의 장점
- 코드 변경 사항만 빠르게 반영
- 전체 배포 시간 단축
- 개발 생산성 향상
- 반복적인 테스트에 적합
6-3) 주요 명령어
6-3-1) 전체 동기화
sam sync
코드와 인프라를 모두 동기화합니다.
6-3-2) 코드만 동기화
sam sync --code
Lambda 코드만 변경되었을 때 사용하는 명령입니다. CloudFormation을 다시 실행하지 않기 때문에 훨씬 빠르게 반영됩니다.
6-3-3) 특정 Lambda만 동기화
sam sync --code --resource-id HelloWorldFunction
특정 Lambda 함수만 업데이트합니다.
6-3-4) 자동 감시 모드
sam sync --watch
파일 변경을 감지하여 자동으로 AWS에 반영합니다.
7. 언제 사용할까?
AWS SAM은 다음과 같은 경우에 많이 사용됩니다.
- Lambda 기반 애플리케이션 개발
- API Gateway + Lambda 구성
- DynamoDB 연동
- 서버리스 프로젝트 배포
- 개발 환경 자동 구축
- CI/CD 파이프라인
8. SAM과 CloudFormation 비교

| 항목 | AWS SAM | CloudFormation |
| 사용 대상 | 서버리스 애플리케이션 | 모든 AWS 리소스 |
| 문법 | 간단한 YAML | 상세한 YAML/JSON |
| 학습 난이도 | 낮음 | 상대적으로 높음 |
| 내부 동작 | CloudFormation 생성 | 직접 리소스 생성 |
9. 마치며
이번 글에서는 AWS SAM의 기본 개념과 배포 과정을 살펴보았습니다.
처음에는 단순히 Lambda를 배포하는 도구라고 생각했지만, 학습하면서 Lambda, API Gateway, DynamoDB와 같은 여러 AWS 서비스를 하나의 YAML 파일로 정의하고 관리할 수 있는 Infrastructure as Code(IaC) 도구라는 점을 이해할 수 있었습니다.
또한 SAM은 내부적으로 CloudFormation을 활용해 리소스를 생성하며, sam build, sam deploy, sam sync와 같은 명령어를 통해 개발부터 배포, 코드 변경 사항의 빠른 반영까지 지원한다는 점도 알게 되었습니다.
이를 통해 서버리스 애플리케이션을 반복적으로 개발하고 배포하는 과정이 훨씬 단순해지고 일관성 있게 관리된다는 점을 이해할 수 있었습니다.
'Data Engineering > AWS' 카테고리의 다른 글
| Amazon ECS란 (0) | 2026.07.09 |
|---|---|
| AWS Batch란 (0) | 2026.07.08 |
| AWS Lambda란 (0) | 2026.07.08 |
| AWS EC2란 (0) | 2026.07.08 |
| AWS 데이터 이동 서비스 정리 | Data Exchange, Transfer Family, Snow Family (0) | 2026.07.06 |