概要
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'