CLI
1 AWS SAM CLI
- 레퍼런스
- AWS Serverless Application Model(SAM)은 서버리스 애플리케이션을 개발하고 배포하기 위한 오픈 소스 프레임워크입니다
- 그리고 AWS SAM CLI는 이 프레임워크를 더욱 효과적으로 사용할 수 있게 해주는 명령줄 도구입니다
- 이 글에서는 AWS SAM CLI의 주요 기능과 사용 방법에 대해 알아보겠습니다.
2 AWS SAM CLI의 주요 기능
AWS SAM CLI는 다음과 같은 주요 기능을 제공합니다:
- 서버리스 애플리케이션 초기화
- 로컬 테스트 및 디버깅
- 애플리케이션 빌드 및 패키징
- AWS 클라우드에 배포
- 실시간 로그 확인
이러한 기능들을 통해 개발자는 서버리스 애플리케이션의 전체 라이프사이클을 효과적으로 관리할 수 있습니다.
3 AWS SAM CLI 설치하기
AWS SAM CLI를 사용하기 위해서는 먼저 설치가 필요합니다 설치 과정은 다음과 같습니다:
- AWS CLI 설치
- Docker 설치 (로컬 테스트를 위해 필요)
- AWS SAM CLI 설치
각 운영 체제별 설치 방법은 AWS 공식 문서를 참조하시기 바랍니다.
4 서버리스 애플리케이션 초기화하기
AWS SAM CLI를 이용해 새로운 서버리스 애플리케이션을 시작하는 방법은 다음과 같습니다:
sam init
- 이 명령어를 실행하면 대화형 프롬프트가 시작됩니다.
- 템플릿 소스, 런타임, 프로젝트 이름 등을 선택할 수 있습니다.
- 선택이 완료되면 기본적인 프로젝트 구조가 생성됩니다.
5 애플리케이션 빌드하기
애플리케이션 코드를 작성한 후, 다음 명령어로 빌드할 수 있습니다:
sam build
- 이 명령어는 애플리케이션의 종속성을 해결하고 배포 패키지를 생성합니다.
- 빌드된 아티팩트는
.aws-sam
디렉토리에 저장됩니다.
6 로컬에서 애플리케이션 테스트하기
- AWS SAM CLI는 로컬 환경에서 서버리스 애플리케이션을 테스트할 수 있는 다양한 옵션을 제공합니다.
- Lambda 함수만 테스트하거나, API Gateway와 함께 전체 API를 시뮬레이션할 수 있습니다.
6.1 Lambda 함수 테스트하기
sam local invoke [FunctionName] --event events/event.json
- Lambda 함수를 직접 호출하여 테스트하려면 위 명령어를 사용합니다
- 지정된 Lambda 함수를 로컬에서 한 번 실행합니다.
- 함수 실행 후 즉시 종료됩니다.
- 주로 특정 이벤트나 페이로드로 함수를 테스트할 때 사용합니다.
- 이 명령어는 로컬 Docker 컨테이너에서 지정된 Lambda 함수를 실행합니다.
[FunctionName]
은 테스트하려는 함수의 이름입니다 (template.yaml 파일에 정의된 이름).--event
옵션을 사용하여 테스트 이벤트 데이터를 제공할 수 있습니다.
sam local start-lambda <options>
- AWS Lambda를 로컬에서 에뮬레이션하는 엔드포인트를 시작합니다.
- 지속적으로 실행되는 로컬 Lambda 에뮬레이터를 시작합니다.
- 8080 포트에서 HTTP 서버를 실행합니다.
- AWS CLI나 SDK를 사용하여 이 로컬 엔드포인트에 요청을 보낼 수 있습니다.
6.2 API Gateway와 함께 테스트하기
sam local start-api
- 전체 API를 로컬에서 테스트하려면 다음 명령어를 사용합니다
- 이 명령어는 로컬 HTTP 서버를 시작하여 API Gateway를 시뮬레이션합니다.
- 동시에 연결된 Lambda 함수도 로컬 Docker 컨테이너에서 실행됩니다.
6.3 실제 실행 테스트
sam local start-api
명령어로 API를 시작한 후, 실제 API 호출을 시뮬레이션하려면 다음과 같이 할 수 있습니다- curl 명령어나 웹 브라우저를 사용하여 로컬 API 엔드포인트에 요청을 보냅니다.
- 예시:
curl http://localhost:3000/hello
- 여기서 '/hello'는 API의 경로입니다.
- 예시:
- 또는 Postman과 같은 API 테스트 도구를 사용하여 다양한 HTTP 메서드와 페이로드로 API를 테스트할 수 있습니다.
7 애플리케이션 패키징하기
- 애플리케이션을 빌드한 후, 다음 단계는 패키징입니다. 이 과정은
sam package
명령어를 사용하여 수행합니다:
sam package --output-template-file packaged.yaml --s3-bucket your-s3-bucket-name
7.1 주요 기능
- 빌드된 아티팩트를 지정된 S3 버킷에 업로드합니다.
- 업로드된 아티팩트의 S3 위치를 참조하는 새로운 SAM 템플릿을 생성합니다.
7.2 사용 시기
- 애플리케이션을 AWS 클라우드에 배포하기 직전에 사용합니다.
sam deploy
명령어를 별도로 실행하려는 경우에 필요합니다.
7.3 주의사항
- S3 버킷은 미리 생성되어 있어야 합니다.
- 생성된
packaged.yaml
파일은 배포 단계에서 사용됩니다.
8 AWS 클라우드에 배포하기
애플리케이션을 AWS 클라우드에 배포하려면 다음 명령어를 사용합니다:
sam deploy --guided
- 이 명령어는 대화형 프롬프트를 통해 배포 설정을 구성합니다.
- 설정이 완 료되면 애플리케이션을 AWS CloudFormation을 통해 배포합니다.
9 SAM Accelerate (sam sync)
- SAM Accelerate는 AWS 리소스를 배포할 때 지연 시간을 줄이기 위한 기능 세트입니다.
- 'sam sync' 명령어를 통해 사용할 수 있습니다.
9 .1 sam sync의 주요 기능
- SAM 템플릿에 선언된 프로젝트를 AWS와 동기화합니다.
- 인프라를 업데이트하지 않고 코드 변경 사항을 AWS에 동기화합니다.
- 서비스 API와 CloudFormation을 우회하여 빠른 업데이트를 수행합니다.
9 .2 sam sync 사용 예시
- 기본 사용:
sam sync
- 코드와 인프라를 동기화합니다.
- 코드만 동기화:
sam sync --code
- 인프라를 업데이트하지 않고 코드 변경 사항만 동기화합니다.
- CloudFormation을 우회하여 몇 초 만에 업데이트를 완료합니다.
- 특정 Lambda 함수 동기화:
sam sync --code --resource AWS::Serverless::Function