Serverless Framework のデプロイ自動化 with ダッシュボード
概要
サーバーレスフレームワークのデプロイは serverless deploy
コマンドで行いますがローカルで実行するのも手間なので自動化します。
いわゆる Continuous Deployment (CD) です。
方法は様々あると思いますが今回は Serverless Framework に用意されているダッシュボードを利用します。
アカウントの作成が必要ですが無料利用枠もあります。
リポジトリ作成
プロジェクトを作成し GitHub リポジトリへプッシュします。
インストール
まずはローカルで Serverless Framework をインストールします。
npm install -g serverless
Windows PowerShell の場合は Execution Policy の変更が必要
管理者権限で PowerShell を起動し以下のコマンドを実行します。
Set-ExecutionPolicy RemoteSigned
参考。
プロジェクト作成
serverless
プロジェクトテンプレートはお好きなものを選んでください。今回は AWS - Node.js - Starter
にしました。
プロジェクト名は任意です。今回は serverless-twitter
にしました。
ダッシュボードを使用するを選択します。これを選択することでダッシュボードへのログインと serverless.yml
に org
, app
の項目が追加されます。(順番が前後しちゃってますがアカウントの作成は後述)
region
を追加して runtime
も最新にしておきましょう。
memorySize
のデフォルト値が 1,024 MB のようなので 128 MB にしておきます。
org: snowcait
app: serverless-twitter
service: serverless-twitter
frameworkVersion: '3'
provider:
name: aws
region: ap-northeast-1
runtime: nodejs16.x
memorySize: 128
functions:
hello:
handler: handler.hello
この状態で GitHub リポジトリへプッシュしておきます。
ダッシュボード
リポジトリにプッシュされたときにデプロイが走るように設定します。
トリガーはプッシュ以外にはなさそうです。(手動トリガーが欲しい…)
アカウントの作成
Continue with GitHub
を選択しアカウント名を入力します。
プロバイダー登録
org
メニューの providers
のタブからプロバイダーを登録します。
Simple で作成すると CloudFromation の画面に飛ばされるのでそちらで作成するのが楽です。
サービス作成
アプリ(プロジェクト作成時に登録されます)のところからサービスを作成します。
serverless.yml
に定義したサービス名と合わせておく必要があります。
最初は右下の部分は表示されませんが最終的にこうなります。
リポジトリ連携
GitHub を選択しリポジトリの設定をします。
設定後はこうなります。
リポジトリ設定
リポジトリの選択とベースディレクトリを設定します。
ビルド設定
リージョンとビルドマシンのスペックを選択します。
デプロイブランチ設定
Add stage
でステージを作成し、デプロイブランチとデプロイ先のステージを設定します。
今回は branch: main
, stage: dev
で設定しました。
その他
プレビューデプロイと通知は任意で設定してください。
デプロイ
main
ブランチへプッシュすると自動でデプロイされます。
ローカルだと .serverless
に保存される ZIP や CloudFormation の状態ファイルは S3 に保存されるようです。
サービスの deploy
タブからログを確認できます。(トップのメニューの ci/cd
からも辿れます。)
Discussion