目次

目次

Lambdaのデプロイではまった話

アバター画像
海津 純平
アバター画像
海津 純平
最終更新日2018/05/18 投稿日2018/05/18

はじめに

LambdaでPythonの外部ライブラリPillowを含めてデプロイしようとしたときにはまった話です。 調べてみると結構でてきますが、備忘録を兼ねて。

どんなミスをしたか

Macのターミナル上でpipを使いPillowをインストールし、zipで圧縮してデプロイパッケージ作成、デプロイしてテストを行うと

image-20180328033724794.png

失敗してしまいました。 調べてみると、Pillowはインストール時にOSに合わせてビルドするそう。 LambdaはAmazon Linux上で動いている(参考)ので、Amazon Linux上でデプロイパッケージを作成しなければならないとのこと。

やり方

自分がやった方法になります。 EC2をAmazon Linuxでたてて、そこでデプロイパッケージを作成。 LambdaのランタイムはPython3.6にする必要があったため、Python3.6をインストール

$ sudo yum install python36

適当なディレクトリを作成して、デプロイしたいコード(lambda_function.pyとする)を置く。 そのディレクトリに移動し、以下のコマンドを実行してPillowをインストール。

$ python36 -m pip install pillow -t .

Pythonのオプションmで先程インストールしたPython3.6のモジュールのpipを使う。 pipのオプションtでインストール先を指定できるので、カレントディレクトリにインストール。 以下のようになります。

$ ls
lambda_function.py  PIL  Pillow-5.0.0.dist-info

あとはすべてまとめてzipで圧縮。

$ zip -r deploy.zip *
$ ls
lambda_function.py  PIL  Pillow-5.0.0.dist-info  deploy.zip

デプロイパッケージ(deploy.zip)が完成。

まとめ

OS依存ライブラリが様々あるようなので、デプロイパッケージはAmazon Linux上で作成しましょう。 自分はEC2を立てましたが、DockerにAmazon Linux公式イメージがありますので、それを使っても良いかもしれません。

アバター画像

海津 純平

目次