LambdaでPythonのrequestsを使おうとして詰まったのでメモ(˘ω˘)
解決法
結論を言っちゃうと、モジュールを実行ファイルと一緒にzipでアップロードすれば良い
やり方
今回は「requests」を使用したいのでpipでインストールする
terminal
(˘ ) $ cd $PROJECT_DIR
(ω˘ ) $ pip install requests -t ./
(˘ω˘ ) $ tree -L 1
.
├── bin
├── certifi
├── certifi-2018.4.16.dist-info
├── chardet
├── chardet-3.0.4.dist-info
├── function.py
├── idna
├── idna-2.6.dist-info
├── requests
├── requests-2.18.4.dist-info
├── urllib3
└── urllib3-1.22.dist-info
*.dist-infoとbinは必要無いので削除
terminal
( ˘ω˘ ) $ tree -L 1
.
├── certifi
├── chardet
├── function.py
├── idna
├── requests
└── urllib3
依存関係のあるモジュールが全てインストールされているか念の為確認
terminal
( ˘ω˘) $ pip install pipdeptree
( ˘ω) $ pipdeptree -p requests
requests==2.18.4
- certifi [required: >=2017.4.17, installed: 2018.1.18]
- chardet [required: <3.1.0,>=3.0.2, installed: 3.0.4]
- idna [required: <2.7,>=2.5, installed: 2.6]
- urllib3 [required: <1.23,>=1.21.1, installed: 1.22]
必要なモジュールが揃っている事が確認出来たのでこれらをzipで固める
( ˘) $ zip -r hoge.zip ./*
出来たzipファイルをLambdaのコンソールからアップロードする
先ほどのzipファイルを選択し、アップロードして画面右上の保存ボタンをクリック
インラインエディタにアップロードしたファイル・ディレクトリが表示されたらOK
これでfunction.pyからrequestsをimportする事が出来る(アップロードした他のモジュールも可)
おまけ
pip時に以下のエラーが出た時の対処法
distutils.errors.DistutilsOptionError: must supply either home or prefix/exec-prefix -- not both
.pydistutils.cfgファイルをホームディレクトリに作成し、以下を記載すればキットイケル(˘ω˘)
terminal
$ touch ~/.pydistutils.cfg
.pydistutils.cfg
[install]
prefix=