Lambda import requestsでエラーとなる
Lambdaはpythonのrequestsをデフォルトでは使えません。
Content-Typeがmultipart/form-dataの場合、requests以外で処理すると、コードが長くなるので、対応方法を探していました。
application/jsonの場合は、urllib.requestを用いた対応でも良いかと思いますが、
想像よりも簡単に使えるようにできたので、下記ぜひ試してみてください!
参考文献
上記の内容参考に、自分用へのまとめ直し、補足情報の追加を行いました。
対応方法
ローカルでrequestsライブラリをzip化
ディレクトリを作成し、そこにrequestsライブラリをダウンロードを行います。
そのディレクトリの中身をzip化します。
mkdir ./python-requests
pip3 install -t ./python-requests requests
zip -r requests.zip python-requests/
Lambdaでレイヤーに追加
AWSコンソールからLambdaページに移動し、サイドナビゲーションの「その他のリソース」>「レイヤー」で以下添付の画面へ、遷移する。
画面右上のレイヤーの作成を選択する。
作成後に表示されるARNはコピーしてください。(次の作業で使用します)
名前等を入力し、先ほどzip化したzipファイルをアップロード
レイヤーを対象のLambda関数へ反映
AWSコンソール上で、requests関数を使用するLambda関数のページへ遷移し、「コード」を選択する。
画面下部に以下のレイヤーを設定できる欄があるので、そこから「レイヤーを追加」を選択する。
「ARNを指定」を選択し、先ほどコピーしたARNをペーストする。
最後に「追加」を選択する。
以上で、requestsが使用可能となっています。
補足情報(上記の時間短縮方法)
下記のように、本来上記の手順(zip化→layer追加)が必要ですが、既存のものを使用して、layerが追加できるようです(すごく助かる)!
機会があれば、試してみようと思います。