SAM을 통한 로컬 환경 셋팅
TMTAWS Lambda 로 되어있는 프로그램을 개발하고 디버깅 하기 위해서는 로컬 환경 셋팅이 되어야 하는데 이를 위해 사용하는 것이 AWS SAM입니다. 꽤 간편하게 설정가능하고 레퍼런스가 많아서 대략적인 설정은 금방 됩니다. 다만, 잘 되지 않을 경우 디테일하게 알아야 할 부분이 생기기에 약간은 진입장벽이 있는 편입니다.
AWS SAM(Serverless Application Model)을 통해 로컬 환경을 설정하는 과정은 다음과 같습니다. SAM을 사용하면 서버리스 애플리케이션을 쉽게 정의하고, AWS Lambda 및 API Gateway 등의 서비스와 유사한 환경을 로컬에서 시뮬레이션할 수 있습니다. 다음은 SAM을 활용한 로컬 환경 설정 절차입니다.
1. AWS SAM CLI 설치
- AWS SAM CLI 설치 문서에 따라 SAM CLI를 설치합니다.
2. template.yaml 파일 작성
SAM은 template.yaml 파일을 통해 서버리스 애플리케이션의 리소스 구성을 정의합니다. 이 파일에 Lambda 함수, API Gateway 설정 등을 포함할 수 있습니다.
예시 템플릿:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
Handler: app.lambda_handler
Runtime: python3.8
CodeUri: .
Events:
Api:
Type: Api
Properties:
Path: /myendpoint
Method: get3. 로컬 테스트를 위한 requirements.txt 및 코드 파일 준비
Lambda 함수에서 사용할 패키지나 의존성은 requirements.txt에 정의합니다. 그런 다음 Lambda 함수가 정상적으로 동작하도록 app.py 파일과 같은 코드 파일을 작성합니다.
예시 app.py:
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': 'Hello, SAM Local!'
}4. SAM Build 명령어로 빌드하기
다음 명령어로 애플리케이션을 빌드하여 로컬에서 사용할 수 있도록 준비합니다.
sam build5. 로컬에서 Lambda 함수 실행
로컬에서 함수가 잘 작동하는지 테스트하려면 sam local invoke 명령어를 사용합니다.
sam local invoke MyLambdaFunction6. API Gateway 에뮬레이션하기
로컬에서 API Gateway를 에뮬레이션하여 API 요청을 테스트할 수 있습니다.
sam local start-api이 명령어를 실행하면 로컬에서 API 엔드포인트를 통해 Lambda 함수를 호출할 수 있습니다. 기본적으로 http://127.0.0.1:3000/myendpoint에서 테스트할 수 있습니다.
7. 이벤트 테스트
로컬에서 특정 이벤트를 테스트하려면 JSON 형식으로 이벤트를 정의한 파일을 만들어 sam local invoke 명령어에 전달합니다.
sam local invoke MyLambdaFunction --event event.json8. Docker를 통한 로컬 Lambda 환경 사용 (선택 사항)
SAM은 Docker를 통해 실제 Lambda 환경과 유사한 환경을 제공합니다. Docker가 설치되어 있어야 하며, sam local start-api나 sam local invoke 명령어를 사용할 때 Docker 컨테이너를 통해 Lambda 환경을 시뮬레이션합니다.
9. 로컬에서 디버깅
SAM은 로컬 디버깅도 지원합니다. 디버깅을 활성화하려면 Python의 경우 --debug-port 옵션을 사용하여 원하는 포트를 지정한 다음, IDE에서 해당 포트에 연결하면 됩니다.
sam local invoke MyLambdaFunction --debug-port 589010. 로컬 개발 완료 후 배포
로컬 환경에서 테스트가 완료되면 sam deploy 명령어를 사용하여 AWS 클라우드 환경에 애플리케이션을 배포할 수 있습니다.
sam deploy --guided이 과정을 통해 SAM을 사용하여 로컬 환경에서 서버리스 애플리케이션을 손쉽게 설정하고 테스트할 수 있습니다.