【Docker】PythonのAWS LambdaLayerをDockerで作成する

AWS LambdaのLayerモジュールをzip化するまでの処理をDockerで行えるようにしたので、その方法をメモ。


coin-look.pages.dev


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 .