AWS LambdaのLayerモジュールをzip化するまでの処理をDockerで行えるようにしたので、その方法をメモ。
Dockerfile
amazonlinuxのイメージを利用することで、EC2などを用意せずにx86_64のアーキテクチャに対応させます。
Pythonのバージョンは適宜変更する。
FROM amazonlinux
ENV PATH $PATH:/usr/local/bin
RUN yum -y install ¥
gcc openssl-devel bzip2-devel libffi-devel ¥
wget tar gzip zip make && ¥
wget https://www.python.org/ftp/python/3.9.11/Python-3.9.11.tgz && ¥
tar xzf Python-3.9.11.tgz && ¥
cd Python-3.9.11 && ¥
./configure --enable-optimizations && ¥
make altinstall
RUN mkdir ./python-src && ¥
python3.9 -m pip install xxx... -t ./python-src
COPY . ./
RUN zip -r /tmp/aws-layer.zip ./python-src
起動スクリプト
zipファイルをカレントディレクトリに配置するまでを自動化。
#/bin/sh IMAGE_NAME=aws-layer:0.0.0 CONTAINER=aws-layer-con docker stop $CONTAINER docker rm $CONTAINER docker build -t $IMAGE_NAME . --no-cache docker run -itd --name $CONTAINER $IMAGE_NAME docker cp $CONTAINER:/tmp/layer.zip .