Serverless Framework で、requirements.txtに記載したパッケージをインストールしてLambdaに同梱してくれる便利プラグイン serverless-python-requirements ですが、ビルドのたびにインストールが走って、しんどいなぁと思ってたのですがキャッシュを利用する設定がありました。

キャッシュ利用設定

READMEExtra 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

元記事はこちら

Serverless python requirementsのcachingを有効にしてビルド時間短縮