AWS Lambda Layersの発表により、Lambdaで外部ライブラリを使うのが容易になりました。
Macで外部ライブラリをアップするためには次のようにします。
python
mkdir python
pip install -t ./python numpy #(入れたいモジュール名)
zip -r upload.zip ./python
node
mkdir nodejs
npm install -p ./nodejs lodash #(入れたいモジュール名)
zip -r upload.zip ./nodejs
この方法の問題
- Macでライブラリのzipを作ると、lambdaで動かないことがある
- Windowsの標準zipでは、lambdaにアップしてもダメ
どうする?
GitlabのCIでzipを作ってしまえば、Amazon Linuxの環境で作ったzipを簡単に手に入れることができます
Gitlab
- アカウント作成
- プロジェクト作成
をすませてください。
実際のci用ファイル
.gitlab-ci.yml
を作成します。
WEBコンソールから作業しちゃっていいと思います。
内容は下記のとおりです。
stages:
- pymodule_zip
- nodemodule_zip
pymodule_zip:
image: lambci/lambda:build-python3.7
stage: pymodule_zip
artifacts:
paths:
- python
script:
- mkdir python
- pip install ${PYTHON_PACKAGES} -t ./python
only:
variables:
- $PYTHON_PACKAGES
nodemodule_zip:
image: lambci/lambda:build-nodejs8.10
stage: nodemodule_zip
artifacts:
paths:
- nodejs
script:
- mkdir nodejs
- npm i --prefix nodejs ${NODE_PACKAGES}
only:
variables:
- $NODE_PACKAGES
CIを環境変数付きで走らせます
PYTHON_PACKAGES
でpythonのライブラリのzipを
NODE_PACKAGES
でnodeのライブラリのzipを
作れるようになります