SAM을 통한 로컬 환경 셋팅

TMT

AWS Lambda 로 되어있는 프로그램을 개발하고 디버깅 하기 위해서는 로컬 환경 셋팅이 되어야 하는데 이를 위해 사용하는 것이 AWS SAM입니다. 꽤 간편하게 설정가능하고 레퍼런스가 많아서 대략적인 설정은 금방 됩니다. 다만, 잘 되지 않을 경우 디테일하게 알아야 할 부분이 생기기에 약간은 진입장벽이 있는 편입니다.


AWS SAM(Serverless Application Model)을 통해 로컬 환경을 설정하는 과정은 다음과 같습니다. SAM을 사용하면 서버리스 애플리케이션을 쉽게 정의하고, AWS Lambda 및 API Gateway 등의 서비스와 유사한 환경을 로컬에서 시뮬레이션할 수 있습니다. 다음은 SAM을 활용한 로컬 환경 설정 절차입니다.

1. AWS 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: get

3. 로컬 테스트를 위한 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 build

5. 로컬에서 Lambda 함수 실행

로컬에서 함수가 잘 작동하는지 테스트하려면 sam local invoke 명령어를 사용합니다.

sam local invoke MyLambdaFunction

6. 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.json

8. Docker를 통한 로컬 Lambda 환경 사용 (선택 사항)

SAM은 Docker를 통해 실제 Lambda 환경과 유사한 환경을 제공합니다. Docker가 설치되어 있어야 하며, sam local start-apisam local invoke 명령어를 사용할 때 Docker 컨테이너를 통해 Lambda 환경을 시뮬레이션합니다.

9. 로컬에서 디버깅

SAM은 로컬 디버깅도 지원합니다. 디버깅을 활성화하려면 Python의 경우 --debug-port 옵션을 사용하여 원하는 포트를 지정한 다음, IDE에서 해당 포트에 연결하면 됩니다.

sam local invoke MyLambdaFunction --debug-port 5890

10. 로컬 개발 완료 후 배포

로컬 환경에서 테스트가 완료되면 sam deploy 명령어를 사용하여 AWS 클라우드 환경에 애플리케이션을 배포할 수 있습니다.

sam deploy --guided

이 과정을 통해 SAM을 사용하여 로컬 환경에서 서버리스 애플리케이션을 손쉽게 설정하고 테스트할 수 있습니다.

Edit this page

Search the archive

Find a page by title, or search the text inside one.