LoginSignup
3
1

More than 5 years have passed since last update.

AWS Lambdaで使うpythonモジュールのzipを作る

Posted at

AWS Lambdaは便利ですが、pythonモジュールを使うにはamazon linux上でpipしたモジュールが必要になるのでそのZIPファイルの作り方を紹介する。

0 準備:Lambdaのpythonバージョンを確認しておく

import subprocess

def lambda_handler(event, context):
    cmd = "python -V"
    print(subprocess.check_output(cmd.split()))

2019/03/07現在のpython3.6のバージョンは 3.6.8

1. docker pull amazonlinux でamazonlinuxのイメージファイルを持ってくる

2. docker run -it amazonlinux bin/bash

3. コンテナ内での操作

コンテナ内でやることは下記3つ

  • python3.6.8を使えるようにする
  • pip で必要モジュールをインストール
  • zipで固める
yum -y groupinstall 'Development tools'

 yum -y install openssl-devel sqlite-devel

mkdir ~/src
cd ~/src
yum -y install wget


wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

tar zxvf Python-3.6.8.tgz
cd Python-3.6.8

./configure --prefix=$HOME/local/myPython-3.6.8

make
make install

curl -kL https://bootstrap.pypa.io/get-pip.py | python

pip install --upgrade virtualenv

virtualenv --python $HOME/local/myPython-3.6.8/bin/python3.6 $HOME/py368


source $HOME/py368/bin/activate

cd
mkdir python 
cd python
pip install pandas -t .


zip -r modules.zip python

タブをもう一枚開いて
docker ps でコンテナIDを確認して
docker cp コンテナID:root/modules.zip modules.zip
すれば出来上がり!

ZIPはS3に置いてダウンロードして使ったり、軽めのモジュールならlambda_handler.pyと一緒に固めて直接lambdaに放り込むのもアリ。

感想

AWS側で主要モジュールぐらいは用意してもよいのでは?
Layerとかで選べて、 scikit learn, pandas, numpyくらいはあったら楽。

3
1
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
3
1