概要
Lambda(Python)でレイヤーを使う時の注意点について。
注意点
公式 の"ライブラリの依存関係をレイヤーに含める"に書いてあったりしますが、知っておかないといけないのは、以下の2点。
- LayerとしてアップするZIPは
/optに展開されること -
/opt配下でPythonのパスが通っているのが、/opt/python、/opt/python/lib/python3.7/site-packagesであること
したがってレイヤーにアップするZIPの中身は、下記の構造になっている必要がある。
※/opt/python 狙いの場合
python
└─hoge.py
上記以外のパスにしたい場合
/opt 配下であれば可能(レイヤーが /opt に上がることは変えれないので /optは必須)
起動時、sys.path に /opt を追加すれば、 python という階層を作らなくていい。
import sys
sys.path.append('/opt')
def lambda_handler(event, context):
pass
もしくはLambdaの環境変数設定で PYTHONPATH に /opt を設定する。

備考
- PythonでのLambda起動時に
sys.pathに通っているパス一覧
'/opt/python'
'/opt/python/lib/python3.7/site-packages'
'/var/lang/lib/python3.7'
'/var/lang/lib/python3.7/lib-dynload'
'/var/lang/lib/python3.7/site-packages'
'/var/lang/lib/python37.zip'
'/var/runtime'
'/var/task'