【AWS Lambda Layers】Unable to import module 'xxx' : No module named 'xxx'

事象

公式ドキュメント通り、PythonでLambda Layersを作成して、既存の関数にAttachして実行したところ、以下のようなErrorが発生した。

Unable to import module 'xxx' : No module named 'xxx'

あれ。何か間違えたかな、とフォルダ構成を確認し、Lambdaの実行環境でフォルダの所在を確認してみてもちゃんとある。

print(os.listdir('/opt/python'))
xxx.py

これ、ほんとになんでかわからず散々あれこれ検証してみたところ、どうも「/opt/python」にパスが通ってないっぽい。その筋で検索すると以下のような記事が出てきた。

dev.classmethod.jp

すぐに環境変数を確認してみるとPYTHONPATH定義している。 これだ。。 これはわからなんだ。。公式ドキュメントとかにも特に言及されておらず、想像もできなかった。

解決方法

↑の記事では使うなと書いていたけど、既存の関数で既に定義されていてそれはそのままにしておきたかったので、単純に「/opt/python」を追加したところ、うまく読み込めるようになった。