Layers
AWSのドキュメント AWS Lambda レイヤー - AWS Lambda
AWSのLayersを使うと、Pythonの依存ライブラリなどを設定し共通ライブラリとして使える。(AWS Lambdaのソースコード容量制限は厳しいので、これを使うのが正しいだろう)
AWS Lambdaのデプロイパッケージサイズ上限は
- 50 MB (圧縮)
- 250 MB (解凍、例: レイヤー)
- 3 MB (コンソールエディタ)
参考にしたサイト
- Qiita AWS Lambda Layersでライブラリを共通化
- Qiita pandasをLambdaのLayerとして追加する
- Creating New AWS Lambda Layer For Python Pandas Library
もともとpandasを使いたかったので助かった。 注意点としてはpipで依存ライブラリを保存するディレクトリが'python'で始めないといけない点だろう。
デプロイ自動化
- 開発を進めるとrequirements.txtのライブラリが追加されると思います
- これがあるたびに手動でzip化を行うのは非効率
- なのでEC2上のJankinsで pip install -r requiements.txt → zip化 → boto3でpublish のようなことをやっています
Layer用のzipファイルを作る際には標準ライブラリのshutilを使うと楽だった。python - How to create a zip archive of a directory - Stack Overflow
$ pip install -r requiements.txt -t ./python