Amazon Lambdaにまとめてアップロードするやつ
https://github.com/r7kamura/api-gateway-lambda-example
Amazon API GatewayとAmazon Lambdaを一緒に管理できるようなツールをつくろうとしてて、とりあえずサンプルアプリをつくりながら徐々にツールに切り出していこうという方針でやってみている。
. |-- README.md |-- functions | |-- function1 | | |-- package.json | | `-- src | | `-- index.js | `-- function2 | |-- package.json | `-- src | `-- index.js |-- gulpfile.js `-- package.json
サンプルアプリは手短に言うと上のようなファイル構成になっていて、作成したいAmazon Lambdaの関数ごとにfunctionsディレクトリ内に更にディレクトリをつくっていくルールにしてある。npm run <command>
で実行できるコマンドが幾つか定義されている。
$ npm run Scripts available in api-gateway-lambda-example via `npm run-script`: bundle gulp bundle compile gulp compile upload gulp upload zip gulp zip
個々のfunctionごとにpackage.jsonが用意されていて、npm run bundle
を使うと必要なnode_modulesがそれぞれインストールされる。npm run compile
を使うと、個々のfunctionのsrcディレクトリ内のJavaScriptがコンパイルされて、それぞれのdistディレクトリにまとめられる。npm run zip
を使うと、distディレクトリの内容がdist.zipに圧縮される。Amazon LambdaにコードをアップロードするためにZIPにしている。npm run upload
を使うと、個々のdist.zipをAmazon Lambdaにアップロードしてくれるようになっている。諸々のタスクを実行するとこういうのが出来上がる。
この辺の記事の内容と組み合わせると、まず必要なLambdaの関数をまとめてつくったあと、API Gatewayのエンドポイントをスキーマファイルか何かを元に定義しつつ、各エンドポイントとLambdaの関数と紐付ける、というのが自動化できそう。