Serverless Framework で、requirements.txtに記載したパッケージをインストールしてLambdaに同梱してくれる便利プラグイン serverless-python-requirements ですが、ビルドのたびにインストールが走って、しんどいなぁと思ってたのですがキャッシュを利用する設定がありました。
キャッシュ利用設定
README の Extra Config Options > Caching から引用
customセクションのpythonRequirementsで有効にするキャッシュタイプをtureにすることでキャッシュを有効にできます。
デフォルトはfalse(=キャッシュ使わない)設定になってます。
custom: pythonRequirements: useDownloadCache: true useStaticCache: true
詳細はREADME参照
cacheLocationでキャッシュする場所も指定できるようです。
キャッシュ利用結果
2回目以降はキャッシュが使われて、比較するとかなり早くビルドが終わりました。
Serverless: Using static cache of requirements found at /root/.cache/serverless-python-requirements/...
指定バージョンを変更した場合
requirements.txt内の
dnspython==1.15.0
を
dnspython==1.16.0
に変更して、もう一度ビルド&デプロイしてみたところ
Serverless: Installing requirements from /root/.cache/serverless-python-requirements/...
という感じでインストールが走り直しました。デプロイされたパッケージのdnspythonバージョンも1.16.0になっていました。
備考
キャッシュ設定は去年(2018)の9月ぐらいから使えるようになったぽい
https://github.com/UnitedIncome/serverless-python-requirements/pull/165
https://github.com/UnitedIncome/serverless-python-requirements/commit/137f8e1b1e10579a2b8db88a49c335329a3307dd#diff-04c6e90faac2675aa89e2176d2eec7d8