と言うお得情報。
AWS Lambda の実行環境は、
という公式ドキュメントにも有るように、Amazon Linux をベースに構築されているので、AWS Lambda 特有の制限さえ除けば、 Amazon Linux で動くバイナリをほぼなんでも動かせるっぽいのですが、Amazon Linux の Installer ISO とかは今のところ存在しないし、また DockerHub で公開されている Amazon Linux の公式イメージも、微妙に AWS Lambda の実行環境より新しいため、 完全に実行環境を合せた上で Amazon Linux でのバイナリを作ろうとすると、
Amazon EC2 で VM 借りるとかするしか……
となるのが普通っぽいです。
で、その辺り、自分は面倒なので色々とバイパス出来ないかなーと思って調べてみたんですが、どうも、
https://hub.docker.com/r/lambci/lambda/lambci/lambda:build - Docker Hub
を使うと、色々と面倒な事なしに、下記の様な Dockerfile を用意するだけで、様々なバイナリをローカルでコンパイルする事が出来ます:
※ ちなみにこれは fontconfig + TakaoEx Fonts の例です
FROM lambci/lambda:build # setup build environments ENV PKG_CONFIG_PATH /usr/lib/pkgconfig/:/usr/lib64/pkgconfig/ RUN yum -y install \ freetype-devel \ gperf \ libxml2-devel \ libxslt-devel \ || true RUN easy_install pip && pip install lxml # build to fontconfig RUN git clone https://anongit.freedesktop.org/git/fontconfig /tmp/.build \ && cd /tmp/.build \ && ./autogen.sh \ --prefix=/tmp/.fontconfig/usr \ --sysconfdir=/tmp/.fontconfig/etc \ --mandir=/tmp/.fontconfig/usr/share/man \ --enable-libxml2 \ && make \ && make install # generates fonts.conf RUN echo '<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><fontconfig><dir>/tmp/.fontconfig/usr/share/fonts</dir></fontconfig>' >/tmp/.fontconfig/etc/fonts/local.conf # copy Japanese Fonts COPY TakaoExGothic.ttf /tmp/.fontconfig/usr/share/fonts/ COPY TakaoExMincho.ttf /tmp/.fontconfig/usr/share/fonts/ COPY IPA_Font_License_Agreement_v1.0.txt /tmp/.fontconfig/usr/share/fonts/ # make archive RUN test -d /data || mkdir -p /data RUN tar -zcvf /data/fontconfig.tgz /tmp/.fontconfig ENTRYPOINT [[ "/bin/bash" ]]
それで、
おお、これはすごい
と思って、コレのソースとかを色々見てたんですが、一箇所、微妙な所が有って、
lambci:lambdaのベースイメージのlambci/lambda-base
は、どうも AWS Lambda の実行環境から ファイルシステムを Dump して作成したモノらしく、まあ、その辺りのスクリプトが、
の base ディレトリに詰っていたりして、
…… DockerHub に上がってるデータ、大丈夫なのかな、 ライセンス的に
と思ったんですが、とりあえず今のところは消されてないっぽいし、また、仮に Docker Hub から削除されたとしても、AWS Lambda から実行環境を引っこ抜くスクリプト自体は、開発者の裁量の元で自由に利用出来たりするので、まあ、その辺り心配な人は自分で引っこ抜いて自作すると良いんじゃないかな、と僕は思います。はい。