1
0

【Lambda】Python requestsを利用する方法

Last updated at Posted at 2024-01-12

Lambda import requestsでエラーとなる

Lambdaはpythonのrequestsをデフォルトでは使えません。
Content-Typeがmultipart/form-dataの場合、requests以外で処理すると、コードが長くなるので、対応方法を探していました。
application/jsonの場合は、urllib.requestを用いた対応でも良いかと思いますが、
想像よりも簡単に使えるようにできたので、下記ぜひ試してみてください!

参考文献

上記の内容参考に、自分用へのまとめ直し、補足情報の追加を行いました。

対応方法

ローカルでrequestsライブラリをzip化

ディレクトリを作成し、そこにrequestsライブラリをダウンロードを行います。
そのディレクトリの中身をzip化します。

local
mkdir ./python-requests
pip3 install -t ./python-requests requests
zip -r requests.zip python-requests/

Lambdaでレイヤーに追加

AWSコンソールからLambdaページに移動し、サイドナビゲーションの「その他のリソース」>「レイヤー」で以下添付の画面へ、遷移する。
画面右上のレイヤーの作成を選択する。
作成後に表示されるARNはコピーしてください。(次の作業で使用します)
スクリーンショット 2024-01-09 15.18.11.png

名前等を入力し、先ほどzip化したzipファイルをアップロード
スクリーンショット 2024-01-09 15.22.34.png

レイヤーを対象のLambda関数へ反映

AWSコンソール上で、requests関数を使用するLambda関数のページへ遷移し、「コード」を選択する。
スクリーンショット 2024-01-09 15.36.41.png

画面下部に以下のレイヤーを設定できる欄があるので、そこから「レイヤーを追加」を選択する。
スクリーンショット 2024-01-09 15.38.08.png

「ARNを指定」を選択し、先ほどコピーしたARNをペーストする。
最後に「追加」を選択する。
スクリーンショット 2024-01-09 16.39.47.png

以上で、requestsが使用可能となっています。

補足情報(上記の時間短縮方法)

下記のように、本来上記の手順(zip化→layer追加)が必要ですが、既存のものを使用して、layerが追加できるようです(すごく助かる)!
機会があれば、試してみようと思います。

1
0
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
1
0