💨

Serverless Framework のデプロイ自動化 with ダッシュボード

2022/11/05に公開

概要

サーバーレスフレームワークのデプロイは serverless deploy コマンドで行いますがローカルで実行するのも手間なので自動化します。
いわゆる Continuous Deployment (CD) です。

方法は様々あると思いますが今回は Serverless Framework に用意されているダッシュボードを利用します。
アカウントの作成が必要ですが無料利用枠もあります。

リポジトリ作成

プロジェクトを作成し GitHub リポジトリへプッシュします。

インストール

まずはローカルで Serverless Framework をインストールします。

npm install -g serverless
Windows PowerShell の場合は Execution Policy の変更が必要

管理者権限で PowerShell を起動し以下のコマンドを実行します。

PowerShell
Set-ExecutionPolicy RemoteSigned

参考。

https://www.suzu6.net/posts/335-windows11-npm-install-global-yarn/

プロジェクト作成

serverless

プロジェクトテンプレートはお好きなものを選んでください。今回は AWS - Node.js - Starter にしました。
プロジェクト名は任意です。今回は serverless-twitter にしました。
ダッシュボードを使用するを選択します。これを選択することでダッシュボードへのログインと serverless.ymlorg, app の項目が追加されます。(順番が前後しちゃってますがアカウントの作成は後述)

region を追加して runtime も最新にしておきましょう。
memorySize のデフォルト値が 1,024 MB のようなので 128 MB にしておきます。

serverless.yml
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