AWS Lambda関数の開発をしていると、いちいちZipファイルを作成して、Webコンソールから作成したプログラムを設置することが、とても手間に感じられます。
これを解決する方法として、Lambda用にnode.jsで作成した関数を1コマンドで設置まで完了するように、package.jsonにコマンドを定義する方法が考えられます。
package.jsonには、scriptsという項目を儲けることができ、そこでコマンドを定義することができます。そこに次のようにそれぞれの処理を個別に作成し、最後にそれをまとめて実行する処理を作成します。
{ ... "scripts": { // package.jsonと同じフォルダにあるindex.jsとnode_modulesフォルダを含めるzipファイルを作成する "zip": "zip -r lambda.zip index.js node_modules", // 作成したzipファイルを特定のlambda関数へアップロードし、関数をアップデートする "update": "aws lambda update-function-code --publish --function-name arn:aws:lambda:ap-northeast-1:xxxxxxxxx:lambda --zip-file fileb://`pwd`/lambda.zip", // これらの2つのコマンドを連続して実行する "deploy": "npm run zip && npm run update" }, ... }
このようにすることで、「npm run deploy」とコマンドを実行するだけで、必要なファイルを含めるzipファイルを作成し、特定のlambda関数にアップロードする処理を実行できます。
ちなみに、ここで作成したupdateコマンドは、既存のlambda関数のコードを置き換えるだけで、新たにlambda関数を作成するわけではないことに、注意が必要です。
参考サイト