Lambda Layers by Serverless

以下の記事を参考にLambda Layerを試してみました。

LambdaのLayerをServerless Frameworkで - Qiita

Lambda Layersとは

Layer化することによりより複雑な処理が実行できるということかな? AWS Lambda レイヤー - AWS Lambda

layer追加

serverlessのnodejs版(hello)にLayerを追加します。

Layerに追加する関数作成

$ cd my-project
$ tree
.
├── handler.js
├── my-layer
│   └── nodejs
│       └── node_modules
│           └── pow
│               └── index.js
├── serverless.yml

serverless.ymlを修正

cat serverless.yml
layers:
  mylayer:
    path: my-layer

deploy

$ serverless deploy
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Excluding development dependencies...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
.....
Serverless: Stack create finished...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service my-service.zip file to S3 (1.81 KB)...
Serverless: Uploading service mylayer.zip file to S3 (207 B)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
..................
Serverless: Stack update finished...
Service Information
service: my-service
stage: dev
region: ap-northeast-1
stack: my-service-dev
resources: 6
api keys:
  None
endpoints:
  None
functions:
  hello: my-service-dev-hello
layers:
  mylayer: arn:aws:lambda:ap-northeast-1:881710576594:layer:mylayer:1

deployされているか確認します。

$ aws lambda list-layers
{
    "Layers": [
        {
            "LayerName": "mylayer",
            "LayerArn": "arn:aws:lambda:ap-northeast-1:881710576594:layer:mylayer",
            "LatestMatchingVersion": {
                "LayerVersionArn": "arn:aws:lambda:ap-northeast-1:881710576594:layer:mylayer:1",
                "Version": 1,
                "CreatedDate": "2019-05-04T05:00:56.274+0000"
            }
        }
    ]
}