LoginSignup
9
4

More than 3 years have passed since last update.

Lambda@Pythonのレイヤーを使う際の基本的な注意点(レイヤーに上げたファイルがimport出来ない人向け)

Last updated at Posted at 2019-05-25

概要

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 を設定する。
image.png

備考

  • 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'
9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4