こんにちはかみむらです。AWSのLambda関数をデプロイするときに、Serverless Frameworkを使ってみました。
Serverless Frameworkとは、AWS Lambdaなどサーバレスなアプリケーションの運用を簡単にするフレームワークで、有名なクラウドに対応してるところが大きな特徴です。
個人的にFirebase Functionsしか使ったことがなかったので、AWS Lambdaには苦手意識がありましたが、Serverless Frameworkを使ったデプロイが簡単だったので、備忘録として残しておきます。
ドキュメント
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と入力するとでてきます。
そして、IAMのダッシュボードから、ユーザー > ユーザーを追加をクリックします。
ユーザー名を入力して、アクセスの種類をプログラムによるアクセスにチェックします。次のステップはタグですが、ここは設定しなくて大丈夫です。
既存のポリシーを直接アタッチを選択して、ポリシーをAdministratorAccessにチェックします。
最後にユーザーの作成をクリックします。
すると、アクセスキー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
Lambdaのダッシュボードで、デプロイできているか確認しましょう。
Lambda関数がデプロイされてることが確認できます。