今回Lambdaを使うときに次のようはエラーが出てきて非常に困ったので解決方法を記載します。
Table of Contents
事象
Lambdaを利用するときにreqestライブラリを利用しようとしていました。
このときにレイヤーを作成して、Lambda関数のレイヤーに追加しようとしていました。
ただ、次のようなエラーが出てきていたのでなんでだろうな?ということで調査を開始しました。
Unable to import module 'lambda_function': No module named 'requests'
Code language: JavaScript (javascript)
結論: ライブラリを保存するフォルダ名は決まっている。
ある記事に辿りついたんですが、ライブラリを保存する時のフォルダ名は決まっているのでそれ以外を指定するとエラーが出るそうなんですよね。
僕がやっていた手順
mkdir requirements
pip3 install -r requirements.txt -t ./requirements
zip -r requirements.zip requirements/
これのいけない部分は最初にrequirementsフォルダを作成したことでした。
mkdir python
本来であれば↑最初にpythonフォルダを作るべきだったんですよね。
そうすることで適切に読み込まれる模様。なので以下のような手順でレイヤーを作成する必要があるようです。
mkdir python
pip3 install -r requirements.txt -t ./python
zip -r python.zip python/
↑このサイトの「レイヤーコンテンツのパッケージ化」に詳しく記載されている….
まとめ
公式をちゃんと読めばこんな失敗はしない。
公式が正義やな