Serverless FrameworkでAWS Lambda関数をデプロイする

こんにちはかみむらです。AWSのLambda関数をデプロイするときに、Serverless Frameworkを使ってみました。

Serverless Frameworkとは、AWS Lambdaなどサーバレスなアプリケーションの運用を簡単にするフレームワークで、有名なクラウドに対応してるところが大きな特徴です。

個人的にFirebase Functionsしか使ったことがなかったので、AWS Lambdaには苦手意識がありましたが、Serverless Frameworkを使ったデプロイが簡単だったので、備忘録として残しておきます。

ドキュメント

serverless.com

Serverless Frameworkのインストール

まずは、グローバル環境にインストールします。これで、Serverless Frameworkの CLIコマンドが使えるようになります。

$ yarn global add serverless

Serverless Frameworkのバージョンを確認してみましょう。

$ serverless --version

ブログ執筆時点でのバージョンです。

Framework Core: 1.61.3 
Plugin: 3.3.0 
SDK: 2.3.0                                                                                               
Components Core: 1.1.2 
Components CLI: 1.4.0

AWSの認証情報を設定

Serverless FrameworkでLambda関数をデプロイするためには、AWSの認証情報が必要になるので、IAMユーザーを作成します。AWSにログイン後、検索バーでiamと入力するとでてきます。

f:id:kamimura-dev:20200129103630p:plain

そして、IAMのダッシュボードから、ユーザー > ユーザーを追加をクリックします。

f:id:kamimura-dev:20200129113554p:plain

ユーザー名を入力して、アクセスの種類をプログラムによるアクセスにチェックします。次のステップはタグですが、ここは設定しなくて大丈夫です。

f:id:kamimura-dev:20200129113608p:plain

既存のポリシーを直接アタッチを選択して、ポリシーをAdministratorAccessにチェックします。

f:id:kamimura-dev:20200129113622p:plain

最後にユーザーの作成をクリックします。

f:id:kamimura-dev:20200129113635p:plain

すると、アクセスキーIDシークレットアクセスキーが表示されます。これはServerless Framworkの認証設定で使いますので、CSVをダウンロードするか、メモしておいてください。

先ほど作成したIAMユーザーのアクセスキー IDとシークレットアクセスキーをCLIで設定します。これで、AWS側の設定は終わりです。

$ serverless config credentials --provider aws --key XXXXXXX --secret XXXXXXX

Lambda関数の作成

続いて、Serverless FrameworkでデプロイするLambda関数を作成します。CLIでプロジェクトの雛形を作成します。

CLIのコマンドについてもっと知りたい場合は、リファレンスを参照して下さい。
serverless.com

$ serverless create --template aws-nodejs --path quick-start

プロジェクトの中身を見ると、サービスの設定を行うファイル(serverless.yml)とLambda関数を定義するファイル(handler.js)の2つが作成されています。

$ handler.js     serverless.yml

デプロイ

それでは早速デプロイしてみましょう。下記のコマンドを使うとデプロイすることができます。

$ serverless deploy

f:id:kamimura-dev:20200131202951p:plain

Lambdaのダッシュボードで、デプロイできているか確認しましょう。

f:id:kamimura-dev:20200129114357p:plain

Lambda関数がデプロイされてることが確認できます。

f:id:kamimura-dev:20200131185554p:plain

最後に

今回はServeless FrameworkでAWS Lambda関数をデプロイしてみました。私が想像してたよりも簡単にデプロイができました。今後は今回の知見を活かして、AWS Lambdaで実践的な関数を作成していきたいです。