動機
ことの始まりはとある先輩からのオーダー。。。
「最新のpyhon3系で動かしているlambdaのメモリ容量取得するようなコードかいてよ。」
よっしわかったよ。
クソ野郎やってやろうじゃないかと意気込んでLambdaの最新のpython3系のランタイムをみたら、、、
python3.8.....になってた。えっ、、、いつのまに3.8に。。。。
ということでpyrhon3.8かつamazonlinux2(Lambdaの実行環境がamazonlinuxとのことなので)で
インストールした外部ライブラリが必要になった。。。
Dockerファイル
さくっとPython外部ライブラリを準備したかったのでDocker使いました。
Docker for Macです。
python3.8をインストールするために作成したDockerファイルは下記の通り
FROM amazonlinux:2
RUN yum -y update
RUN yum -y install gcc openssl-devel bzip2-devel libffi-devel
RUN yum -y install wget
RUN yum -y install tar
RUN yum -y install gzip
RUN yum -y install make
RUN wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
RUN tar xzf Python-3.8.1.tgz
RUN cd Python-3.8.1
RUN ./Python-3.8.1/configure --enable-optimizations
RUN make altinstall
RUN python3.8 --version
RUN mkdir /home/deploy
※もっとこう書けるよってのがあったら教えて下さい!
#docker-compose.yml
さっきのDockerfileでpython3.8系はインストールできたので、外部ライブラリをpipでおとすためのdocker-compose.ymlは下記の通り
version: '2'
services:
app:
build: .
volumes:
- './deploy:/home/deploy'
command: pip3.8 install -r /home/deploy/requirements.txt -t /home/deploy/dist
requirements.txtにはpsutilを書いてます。
※ちなみにディレクトリ構成はこんな感じ
.
├── docker-compose.yml
├── deploy
│ ├── requirements.txt
│ └── dist
└── Dockerfile
結論
こうやって落とした外部ライブラリとpythonのソースをzipで固めて、Lambdaにアップロードしたら正常にうごきました!
(外部ライブラリを使うときはランタイムと実行元のOSを使っておとした物を使わないといけないのが手間オブ手間s・・・)
以上!