해당 내용은 MacOS를 기준으로 작성되었습니다.
sam build (--skip-pull-image)
sam local invoke -e events/event.json
에 필요 json 작성 후 로컬 lambda function test** Lambda function(app.py) 변경시 build를 해야하기 때문에, 주기적으로 docker container prune 명령어로 container 정리(삭제) 필요
SAM을 이용한 배포를 진행하기 위해서는 template.yaml 파일 작성 필요
아래는 lambda_local/template.yaml 파일의 예시 내용이다
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
sam-deploy
Sample SAM Template for sam-deploy
Globals:
Function:
Timeout: 3
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: "Sam-deploy-test-function"
CodeUri: example_function/
Handler: app.lambda_handler
Runtime: python3.9
Architectures:
- x86_64
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
API 개발시 참고해야 하는 옵션
Resources
SAM은 기본적으로 Lambda와 API Gateway 배포를 지원한다.
Lambda function과 관련된 내용을 template.yaml에 먼저 작성하고, API Gateway 정보가 담긴 내용을 추가하고 Lambda function 과 API Gateway와 연결되도록 내용을 추가한다.
아래는 API Gateway와 Lambda function을 연결한 template.yaml 파일의 내용이다.
Resources:
BasicAWSApiGateway:
Type: AWS::Serverless::Api
Properties:
Name: api-gateway
StageName: dev
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: "Sam-deploy-test-function"
CodeUri: example_function/
Handler: app.lambda_handler
Runtime: python3.9
Architectures:
- x86_64
Events:
HelloWorld:
Type: Api
Properties:
RestApiId: !Ref BasicAWSApiGateway
Path: /hello
Method: get
API Gateway 내용
Lambda Function 내용
!!! 해당 배포 과정은 변경된 내용만 적용 되는 것이 아닌, 해당 template.yaml 파일 내용 그대로 덮어써지기 때문에 하나의 template.yaml에 수정 사항과 변경 사항을 모두 작성하여 배포해야 합니다 !!!
사전 작업
Lambda & API Gateway 배포
배포할 Lambda function SAM build ( Lambda local test enviornment setting 참고 )
배포할 Lambda function이 있는 directory로 이동
sam deploy -g —profile 명령어로 원하는 계정에 배포