kentaro-m’s blog

文章を書く練習をしています

Node.jsでServerless Frameworkを利用するためのテンプレートを作った

業務でAPI GatewayとLambdaを組み合わせたサーバーレスなアプリケーションを作る機会が最近何度かあった。そのときはnode-lambdaというツールを使用してLambdaをデプロイして、API Gatewayを手動で設定するという流れで開発を進めた。

管理対象のアプリケーションの数が少ないうちはこれで問題ない。しかし、増えてくると管理が大変になってくる。

そこでAWSリソースをまとめて管理し、サーバーレスアプリケーションを容易に構築できるというServerless Frameworkというツールを試してみることにした。

Serverless Frameworkをはじめる

# Serverless CLIをグローバルインストール
$ yarn global add serverless

# テンプレートからプロジェクトを作成
$ serverless create --template hello-world

# Lambda関数をデプロイ
$ serverless deploy

3コマンドを実行するだけでus-east-1リージョンにLambda関数がデプロイされる。*1

普段よく利用するツールを含んだテンプレートを作る

Serverless CLIにはテンプレートからプロジェクトを作成する機能があり、これを活用することでサーバーレスアプリケーションの開発環境を素早く準備できる。

今回は以下のツールをあらかじめ導入した状態のテンプレートを作り、API GatewayとLambdaを組み合わせたアプリケーションの開発環境を整備する。ベースはhello-worldを使用。

  • ビルド(トランスパイル)
    • Webpack
    • Babel
  • 静的解析ツール
    • ESLint
  • ユニットテスト環境
    • MochaとChai
    • Circle CI 2.0

完成したテンプレートがこちら。

github.com

$ serverless install --url https://github.com/kentaro-m/serverless-nodejs-boilerplate --name my-project

ServerlessテンプレートをGitHubに公開しておけば、上記のように実行することでローカルに落とすことができる。

さいごに

実はこれまで個人開発ではAWS SAMというAWS公式のサーバーレスアプリケーション構築のフレームワークを利用してきた。もともとCloudFormationを使っていたこともあり、違和感を覚えることなく開発していた。

しかしながら、今回Serverless Frameworkを試してデプロイまでのあまりの簡単さに驚いてしまった。もちろん一長一短があると思うが、「早く・簡単に」を求めるなら、Serverless Frameworkを選ぶのが良いかもしれない。

AWS SAMを利用した開発事例: GitHubでのプルリクエスト運用を加速するためにプルリくんというBotを作った話 - Qiita

*1:CLIを使うためにはAWSのクレデンシャル情報を設定する必要がある