AWS SAM Local에서 로컬로 함수를 배포
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.jsexports.handler = (event, context, callback) => {
callback(null, "Hello " + event.body);
}
AWS SAM 템플릿 파일
template.yamlAWSTemplateFormatVersion: '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"가 출력되어 있으면 성공입니다.
Reference
이 문제에 관하여(AWS SAM Local에서 로컬로 함수를 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mdps513/items/adb9f9323973f9ee4a49
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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.jsexports.handler = (event, context, callback) => {
callback(null, "Hello " + event.body);
}
AWS SAM 템플릿 파일
template.yamlAWSTemplateFormatVersion: '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"가 출력되어 있으면 성공입니다.
Reference
이 문제에 관하여(AWS SAM Local에서 로컬로 함수를 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mdps513/items/adb9f9323973f9ee4a49
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
exports.handler = (event, context, callback) => {
callback(null, "Hello " + event.body);
}
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
{"body": "World"}
/Users/hoge/sam-local-test/template.yaml is a valid SAM Template
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"
Waiting for changeset to be created..
Waiting for stack create/update to complete
Successfully created/updated stack - sam-test-helloworld
콘솔에서 확인합니다.
잘 된 것 같습니다.
오른쪽 상단의 테스트에서 테스트 이벤트를 설정합니다.
위와 같이 설정하고 저장하고 테스트를 실행합니다.
위와 같이 "Hello world"가 출력되어 있으면 성공입니다.
Reference
이 문제에 관하여(AWS SAM Local에서 로컬로 함수를 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mdps513/items/adb9f9323973f9ee4a49텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)