Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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=
SHASE03
そこまでエンジニアしてないエンジニア フリーでエンジニアやディレクター的なことやってます
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした