created: 2020-11-19T21:44:01.000Z

cエクステンションを使っているpythonパッケージをlambdaで動くようビルドする

cエクステンションを使っているpythonパッケージをビルドするとビルドしたプラットフォーム固有のwheelファイルが生成される。 つまりLambda(Linux)上で動かしたいバイナリをビルドするときにmacOS上でやってしまうとうまくいかないということである。

macを使いながらLambda向けのwheelを得るには、Lambda環境に似せたDockerイメージを使ってそのなかでビルドする。

このコマンドでLambda向けのwheelファイルを作ることができる。

$ docker run --rm --volume $(pwd):/var/task \
    lambci/lambda:build-python3.8 \
    pip wheel {{ modulename }} -w /var/task

--volume $(pwd):/var/task でコンテナ内:/var/taskに生成したファイルがホスト側の今いるディレクトリに置かれるのがミソ。