AWS SAM Local에서 로컬로 함수를 배포

5129 단어 samaws-cliAWS

AWS SAM Local이란?



AWS Lambda 함수를 로컬에서 실행하고 테스트할 수 있는 도구입니다.
S3, Kinesis, DynamoDB, Cloudwatch Scheduled Event, Cloudtrail, API Gateway 등의 함수로부터의 호출에도 대응하고 있습니다.

사전 준비



Docker 설치



Mac의 경우 여기:
Mac용 Install Docker | Docker Documentation

AWS CLI 설치



Mac의 경우 여기:
macOS에서 AWS Command Line Interface 설치 - AWS Command Line Interface

SAM Local 설치



Mac의 경우 여기:$ brew install aws-sam-cli

SAM Local에서 Hello World로 배포



준비하는 것



실행하려는 코드

index.js
exports.handler = (event, context, callback) => {
    callback(null, "Hello " + event.body);
}

AWS SAM 템플릿 파일

template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: AWS Lambda sample.
Resources:
  HelloWorld:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10

sam local 런타임에 입력하는 이벤트 파일

event.json
{"body": "World"}

구문 검사


$ sam validate로 할 수 있다.
/Users/hoge/sam-local-test/template.yaml is a valid SAM Template

등, ~ is a valid SAM Template가 나오면 OK.

실행


$ sam local invoke HelloWorld -e event.json
2019-01-04 13:09:41 Invoking index.handler (nodejs8.10)

Fetching lambci/lambda:nodejs8.10 Docker container image......
2019-01-04 13:09:45 Mounting /Users/hoge/sam-local-test as /var/task:ro inside runtime container
START RequestId: d020b83c-acb1-163c-ecdf-f1f05b72f463 Version: $LATEST
2019-01-04T04:09:46.490Z    d020b83c-acb1-163c-ecdf-f1f05b72f463    Loading function
END RequestId: d020b83c-acb1-163c-ecdf-f1f05b72f463
REPORT RequestId: d020b83c-acb1-163c-ecdf-f1f05b72f463  Duration: 8.69 ms   Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 30 MB

"Hello World"

실제로 Hello World가 출력되었습니다.

배포



template를 두는 s3의 양동이를 창조한다. 
주의: 이때 배포하는 Lambda와 동일한 리전에 s3의 버킷을 두는 것. 또한 s3 버킷은 고유해야합니다.$ aws s3 mb s3://[バケット名] --region [リージョン] --profile [プロファイル]
포장한다.$ sam package --template-file template.yaml --s3-bucket [上で作ったバケット名] --output-template-file package.yaml --profile [プロファイル]$ sam deploy --template-file package.yaml --stack-name sam-test-helloworld --capabilities CAPABILITY_IAM --profile personal --region [リージョン]
Waiting for changeset to be created..
Waiting for stack create/update to complete
Successfully created/updated stack - sam-test-helloworld

배포 성공.

확인



콘솔에서 확인합니다.

잘 된 것 같습니다.

오른쪽 상단의 테스트에서 테스트 이벤트를 설정합니다.



위와 같이 설정하고 저장하고 테스트를 실행합니다.



위와 같이 "Hello world"가 출력되어 있으면 성공입니다.

좋은 웹페이지 즐겨찾기