[AWS Lambda] node_modules のファイルサイズ削減のために npm install serverless --global を推奨します
Serverless Framework で AWS Lambda へ deploy するときにファイルサイズを減らすために npm install serverless —global を推奨します。
package.json に含めて git 管理下にしたいがためだけに、
npm install serverless --save
で serverless をインストールしていました。
公式ドキュメントや多くの技術系ブログには npm install serverless —global で書かれているので、そもそも package.json に含めているのが少数派だと思います。
serverless deploy の「高速化」と「ネットワーク通信量の節約」の2点です。
ネットワーク環境が良いときは気にならなかったのですが、テザリング環境で開発するときに上記の2点がどちらも気になったので改善することにしました。
npm uninstall —save で package.json から削除して、npm install —global でグローバルインストールします。
npm uninstall serverless --save
npm install serverless --global
# npm install [email protected] --global
serverless をローカルインストールしていた場合、他の node module も含めて .zip file は 66.57 MB でした。
$ $(npm bin)/serverless deploy --verbose
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
CloudFormation - CREATE_IN_PROGRESS - AWS::CloudFormation::Stack - aws-nodejs-dev
CloudFormation - CREATE_IN_PROGRESS - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_IN_PROGRESS - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_COMPLETE - AWS::S3::Bucket - ServerlessDeploymentBucket
CloudFormation - CREATE_COMPLETE - AWS::CloudFormation::Stack - aws-nodejs-dev
Serverless: Stack create finished...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service .zip file to S3 (66.57 MB)...
# ネット環境が悪いと時間がかかる… ⏳
serverless をグローバルインストールに変更した場合、他の node module も含めて .zip file は 56.59 MB でした。約 10 MB ファイルサイズを削減できました。
$ serverless deploy --verbose
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service .zip file to S3 (56.59 MB)...
# 66.57 - 56.59 = 9.98 MB ファイルサイズを削減
以上、node_modules のファイルサイズを削減して、serverless deploy を高速化したい現場からお送りしました。