serverless frameworkを使ってみる!

目次

こんにちは!森です。

社内のプロジェクトの一部でserverless frameworkを使っているのでNode.jsでの初期設定から簡単な使い方を紹介できたらなと思います!

serverless frameworkのバージョンをプロジェクトごとに固定して作成したいのでnode_modules内のserverlessを使用して設定して行きたいと思います。

設定ファイルなどの作成

まず、プロジェクトで使うディレクトリを作成して中に入ります。

次に、npmの初期設定をします。

npmの設定後

として、serverlessを入れてserverless frameworkの設定をします。

このコマンドによってserverless.ymlやhandler.jsなど雛形が作成されるのでそれぞれの設定をしていきます。

serverless.ymlの設定

providerの初期設定では以下のようになっていると思います。

これを以下のようにします。

providerの設定

providerではインフラ側の設定を主に行っていきます。

name

今回はAWSを使用するのでawsと記入します(GCPの場合はgoogleAzureであればazureと設定します)

runtime

使用する言語やバージョンを選択できます。今回はnodejs12.xを使用します。

region

lambdaを作成するリージョンの設定をします。

stage

API Gagtewayで使用するステージの設定をします。

opt:stageで実行時のstageオプションを取得、設定されていない場合は右側のself:custom.defaultStageを使用します。self:custom.defaultStageはこの設定ファイル内のcustom.defaultStageを参照しろということです。

environment

環境変数の設定ができます。moment.jsやDay.jsなど時刻を使用する場合はタイムゾーン(TZ)をしておいた方が良いと思います。

logRetentionInDays

ログの保存期間を日付で指定できます。

iamRoleStatements

ログを記録するために権限をつけます。

serverless.ymlにhelloというAPIを作成してみます。/helloというURLにhelloという関数を紐付けます。

ここまででserverless.ymlの設定ができたので、紐付けされたコード(handler.js)を見てみると

となっておりexportsされたhello関数が呼び出されます。

デプロイ

設定

package.jsonのscriptsに以下のように設定します。

プロファイルを指定したい場合は--aws-profile profile_nameの様にオプションにaws-profileを指定します。

デプロイ方法

設定後は

と実行すればデプロイできます。

デプロイ時のendpointsにURLとメソッドが表示されるので、割り当てられたURLにアクセスすると

のように無事レスポンスが返ってきました!!
あとは、関数の処理を書き換えたり新しく関数を作成してeventsを作成したりすれば欲しいAPIが作成できると思います!