Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
69
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@SHASE03

【Python】AWS Lambdaで外部モジュールを使用する

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のコンソールからアップロードする

「コードエントリタイプ」をクリック
Screen Shot 2018-04-19 at 15.46.59.png

.zipファイルをアップロード
Screen Shot 2018-04-19 at 15.47.09.png

先ほどのzipファイルを選択し、アップロードして画面右上の保存ボタンをクリック
Screen Shot 2018-04-19 at 15.47.55.png

インラインエディタにアップロードしたファイル・ディレクトリが表示されたらOK
Screen Shot 2018-04-19 at 15.52.59.png

これで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=
69
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
69
Help us understand the problem. What is going on with this article?