この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、臼田です。
みなさんLambdaしてますか?
今回は、Serverless FrameworkからPython 3.6のLambdaを利用してみます。
Serverless Framework自体の使い方については下記をご参照ください。
Serverless Frameworkのインストール
Serverless Frameworkでは1.12.0のバージョンからPython 3.6のLambdaに対応しているようです。
https://github.com/serverless/serverless/releases/tag/v1.12.0
古い場合には、新しくインストールし直しましょう。
$ npm uninstall serverless -g
unbuild serverless@1.8.0
$ npm install serverless -g
$ sls -v
1.17.0
2017/07/07現在では1.17.0でインストールされました。
サービスの作成
それでは作成していきます。
Python 3.6のテンプレート名は「aws-python3」と指定します。
$ sls create -t aws-python3 -p py3test
Serverless: Generating boilerplate...
Serverless: Generating boilerplate in "/Users/xxxxxxxx/py3test"
_______ __
| _ .-----.----.--.--.-----.----| .-----.-----.-----.
| |___| -__| _| | | -__| _| | -__|__ --|__ --|
|____ |_____|__| \___/|_____|__| |__|_____|_____|_____|
| | | The Serverless Application Framework
| | serverless.com, v1.17.0
-------'
Serverless: Successfully generated boilerplate for template: "aws-python3"
$ cd py3test/
$ ls
handler.py serverless.yml
無事作成されました。
deployしてみる
早速deployします。
$ sls deploy -v
Serverless: Packaging service...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
CloudFormation - CREATE_IN_PROGRESS - AWS::CloudFormation::Stack - py3test-dev
CloudFormation - CREATE_IN_PROGRESS - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_IN_PROGRESS - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_COMPLETE - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_COMPLETE - AWS::CloudFormation::Stack - py3test-dev
Serverless: Stack create finished...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service .zip file to S3 (387 B)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
CloudFormation - UPDATE_IN_PROGRESS - AWS::CloudFormation::Stack - py3test-dev
CloudFormation - CREATE_IN_PROGRESS - AWS::IAM::Role - IamRoleLambdaExecution
CloudFormation - CREATE_IN_PROGRESS - AWS::Logs::LogGroup - HelloLogGroup
CloudFormation - CREATE_IN_PROGRESS - AWS::IAM::Role - IamRoleLambdaExecution
CloudFormation - CREATE_IN_PROGRESS - AWS::Logs::LogGroup - HelloLogGroup
CloudFormation - CREATE_COMPLETE - AWS::Logs::LogGroup - HelloLogGroup
CloudFormation - CREATE_COMPLETE - AWS::IAM::Role - IamRoleLambdaExecution
CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Function - HelloLambdaFunction
CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Function - HelloLambdaFunction
CloudFormation - CREATE_COMPLETE - AWS::Lambda::Function - HelloLambdaFunction
CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Version - HelloLambdaVersionHWLEieddo07V14GsF2RBO2dLDZNAIFWtjjffo8S843I
CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Version - HelloLambdaVersionHWLEieddo07V14GsF2RBO2dLDZNAIFWtjjffo8S843I
CloudFormation - CREATE_COMPLETE - AWS::Lambda::Version - HelloLambdaVersionHWLEieddo07V14GsF2RBO2dLDZNAIFWtjjffo8S843I
CloudFormation - UPDATE_COMPLETE_CLEANUP_IN_PROGRESS - AWS::CloudFormation::Stack - py3test-dev
CloudFormation - UPDATE_COMPLETE - AWS::CloudFormation::Stack - py3test-dev
Serverless: Stack update finished...
Service Information
service: py3test
stage: dev
region: us-east-1
api keys:
None
endpoints:
None
functions:
hello: py3test-dev-hello
Stack Outputs
HelloLambdaFunctionQualifiedArn: arn:aws:lambda:us-east-1:000000000000:function:py3test-dev-hello:1
ServerlessDeploymentBucketName: py3test-dev-serverlessdeploymentbucket-459r6dem702c
無事deploy出来ました。
確認してみる
きちんとPython 3.6でdeployされているかマネジメントコンソールで確認します。
ランタイムがPython 3.6となっていました。
実行してみる
実行してみます。
sls invoke -f hello
{
"statusCode": 200,
"body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": {}}"
}
無事実行できました。
さいごに
Serverless Frameworkを使えばPython 3.6になっても簡単にLambdaを利用できました。
今後、Serverless Frameworkのプラグインについても、Python 3.6の対応状況を確認していきます。