15
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS Lambda 上で Python の外部ライブラリを使用する

15
Posted at

AWS Lambda 上で pytz とか Python-msgpack 等の外部ライブラリを使用する方法です.

TL;DR

lambda_function.py と同じディレクトリ階層にライブラリのモジュール一式を
設置してまとめて ZIP するだけ

pip でカレントディレクトリにインストールする

例:
$ pip install pytz==2017.2 -d ./
pip install の -d オプションは続く指定ディレクトリにモジュールをダウンロードします.
上記コマンドを実行するとカレントディレクトリに,

  • pytz
  • pytz-2017.2.dist-info

が生成されます. この要領で必要なライブラリ一式用意します.

落とし穴

大体のモジュールはこの方法で用意できますが, 中には OS 依存のモジュールがあります.
(ujson 等)
Lambda が実行されるマシンの OS は AmazonLinux なので例えば MacOS 上で作成したモジュールは使用できません. AmazonLinux 上で pip install したモジュールである必要があります.
幸い AmazonLinux は Docker イメージが公開されていますので Docker コンテナ内で pip install すれば OK です.
https://hub.docker.com/_/amazonlinux/

Python や pip 等も含めて Dockerfile はこんな感じになりました.
https://gist.github.com/t-miya/fd90e5bd7602b915a05498ddfa4549d0

どれが OS 依存非依存のライブラリか判別するのは大変なので基本的に AmazonLinux 環境でモジュール生成するといいです.

SVC 管理する場合

lambda_function のソースコードのバージョン管理する際は AmazonLinux 上で各ライブラリの wheel を作成しておくとリポジトリの見通しがよくなります. さらに wheel になっていれば展開時の環境はなんでもよく, サイトからのダウンロードも不要なのでスクラップ & ビルドしやすくなります.

15
9
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
15
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?