要約
serverless-python-requirements で設定値を変更した後は
$ serverless requirements cleanCache
を実行しておかないと変更が反映されないときがある。
そして、プロファイルごとに実行しよう。
はじめに
こんにちは。アプリケーションサービス部の保田(ほだ)です。 気が付けば前回の投稿から丸一年経っていました。恐ろしいですね。
前提
Lambda の Python ランタイムに含まれない外部ライブラリも一緒に Serverless Framework でデプロイする際に、プラグイン serverless-python-requirements を使うのは定番だと思います。
このプラグインですが、何もしないと __pycache__
ディレクトリもいっしょにパッケージングしてしまうようです。
ライブラリをある程度の量使っていると、この __pycache__
のサイズもバカにならないケースがあります。
そんなときに有効なのが slim オプションです。
custom: pythonRequirements: slim: true # これ。デフォルトは false
これを書いておくだけで __pycache__
を全て除去した形で zip 化してくれますので、デプロイパッケージを削減することができます。嬉しいですね。
本題
このあたりの設定、どうやら実行端末にキャッシュされるみたいです。
そのため「容量オーバーしちゃった」→「slim オプションなるものがあるらしい!使ってみよう!」といった途中から導入するケースだと、有効にしたはずなのに挙動が変わらないといった事象が起きます。
冒頭にも紹介した通り、このコマンドを実行しましょう。
$ serverless requirements cleanCache
複数の AWS プロファイルを利用している場合は、プロファイルごとに実行しましょう。
$ serverless requirements cleanCache --aws-profile dev-profile # 別々に実行しないといけない $ serverless requirements cleanCache --aws-profile prd-profile
真っ先に思いつくのは一度ローカル環境にある zip ファイルを削除するトラシュ方法かと思いますが、この設定側のキャッシュを消さない限り __pycache__
は残り続けます。