Serverless Framework를 사용하여 AWS Lambda에 배포할 수 있는 환경 만들기
7316 단어 ServerlessFramework
개요
serverless framework을 사용하여 AWS AWS Lambda에 배포하는 방법
환경
sudo pip install awscli
) 절차
설치
npm install --save serverless
npm install --save serverless-python-requirements
pip install python-lambda-local
pip install python-levenshtein
설정
aws 프로필 설정
AWS CLI 설정 을 참고로 설정합니다.
다음과 같은 느낌.
aws configure --profile 用意したユーザー名
AWS Access Key ID [None]: アクセスキー
AWS Secret Access Key [None]: シークレットアクセスキー
Default region name [None]: ap-northeast-1
Default output format [None]: json
python3 용 serverless 템플릿 출력
lambda 파일을 관리하는 폴더를 만들고 그 안으로 이동하여 다음 명령을 실행합니다.
serverless create --template aws-python3
.gitignore, handler.py, serverless.yml이 생성됩니다.
deploy 설정하기
serverless.yml
를 다음과 같이 편집합니다 (댓글이 삭제되었습니다.).serverless.yml
service: aws-python3
provider:
name: aws
runtime: python3.6
region: ap-northeast-1
plugins:
- serverless-python-requirements
custom:
pythonRequirements:
dockerizePip: true
functions:
sample-func:
handler: handler.main
docker-lambda로 컴파일된 라이브러리를 사용하기 위한 설정은 다음과 같습니다. ( 참고 ).
custom:
pythonRequirements:
dockerizePip: true
샘플 코드 작성
두 문자열의 Levenshtein 거리를 찾는 코드입니다.
handler.py
import json
import Levenshtein
def main(event, context):
print(Levenshtein.distance("東京都", "東海道"))
requirements.txt
에 기술한다 requirements.txt
python-levenshtein
동작 확인
로컬로 시도
python-lambda-local을 사용하여 로컬에서 동작을 확인합니다. 인수용의
event.json
(을)를 만듭니다. 실제로 사용하지 않으므로 빈 json입니다.event.json
{}
실행합니다.
python-lambda-local -f main handler.py event.json
[root - INFO - 2018-07-22 11:36:43,446] Event: {}
[root - INFO - 2018-07-22 11:36:43,447] START RequestId: c2f1d96c-fed5-48c9-bb98-2ea9a541f6d3
2
[root - INFO - 2018-07-22 11:36:43,448] END RequestId: c2f1d96c-fed5-48c9-bb98-2ea9a541f6d3
[root - INFO - 2018-07-22 11:36:43,448] RESULT:
None
[root - INFO - 2018-07-22 11:36:43,449] REPORT RequestId: c2f1d96c-fed5-48c9-bb98-2ea9a541f6d3 Duration: 0.98 ms
계산되었습니다.
deploy하다
serverless deploy --aws-profile 用意したユーザー名 --verbose
아래와 같은 로그가 출력되어 라이브러리와 함께 로컬 코드가 S3 경유로 Lambda에 배포됩니다.
Serverless: Installing requirements of requirements.txt in .serverless...
Serverless: Docker Image: lambci/lambda:build-python3.6
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Injecting required Python packages to package...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service .zip file to S3 (399.66 KB)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
CloudFormation - UPDATE_IN_PROGRESS - AWS::CloudFormation::Stack - aws-python3-dev
CloudFormation - UPDATE_IN_PROGRESS - AWS::Lambda::Function - SampleDashfuncLambdaFunction
CloudFormation - UPDATE_COMPLETE - AWS::Lambda::Function - SampleDashfuncLambdaFunction
CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Version - SampleDashfuncLambdaVersion6OU7Kc3zila3ZAax4gvx0
CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Version - SampleDashfuncLambdaVersion6OU7Kc3zila3ZAax4gvx0
CloudFormation - CREATE_COMPLETE - AWS::Lambda::Version - SampleDashfuncLambdaVersion6OU7Kc3zila3ZAax4gvx0
CloudFormation - UPDATE_COMPLETE_CLEANUP_IN_PROGRESS - AWS::CloudFormation::Stack - aws-python3-dev
CloudFormation - DELETE_SKIPPED - AWS::Lambda::Version - SampleDashfuncLambdaVersionvDNqLnGSqO3Kpr8t0M
CloudFormation - UPDATE_COMPLETE - AWS::CloudFormation::Stack - aws-python3-dev
Serverless: Stack update finished...
Service Information
service: aws-python3
stage: dev
region: ap-northeast-1
stack: aws-python3-dev
api keys:
None
endpoints:
None
functions:
sample-func: aws-python3-dev-sample-func
Stack Outputs
SampleDashfuncLambdaFunctionQualifiedArn: arn:aws:lambda:ap-northeast-1:07898663:function:aws-python3-dev-sample-func:10
ServerlessDeploymentBucketName: aws-python3-dev-serverlessdeploymentbucket-19aaa
deploy 확인
이상,
Reference
이 문제에 관하여(Serverless Framework를 사용하여 AWS Lambda에 배포할 수 있는 환경 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/junara/items/b4a2c416b2f8f2a953ab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)