目的
Serverless Frameworkを使って、Lambda関数と同時にLambda Layerを作成する。
ディレクトリ構成
sls-example
├── handle.py
├── layers
│ └── pillow
│ ├── package.sh
│ └── requirements.txt
└── serverless.yml
requirements.txt
pillow==6.0.0
package.sh
#!/bin/sh
export OUTPUT_DIR="python"
rm -rf ${OUTPUT_DIR} && mkdir -p ${OUTPUT_DIR}
docker run --rm -v $(pwd):/var/task -w /var/task lambci/lambda:build-python3.6 \
pip install -r requirements.txt -t ${OUTPUT_DIR}
serverless.yml
service: sls-example
provider:
name: aws
runtime: python3.6
stage: dev
region: us-west-2
plugins:
- serverless-python-requirements
package:
individually: true
# AWS Lambda Layers
layers:
pillow:
path: layers/pillow
name: ${self:service}-pillow
compatibleRuntimes:
- python3.6
allowedAccounts:
- '*'
# AWS Lambda Functions
functions:
analyze:
handler: analysis_lambda.analyze
layers:
- {Ref: PillowLambdaLayer}
# - arn:aws:lambda:${self:provider.region}:xxxxxxxxxxx:layer:{service名}-{layer名}:{バージョン}
デプロイ
cd pillow
./package.sh
cd sls-example
sls deploy