Serverless Framework Enterpriseとは、サーバーレスアーキテクチャでの開発や運用をより簡単に、よりスピーディーに行うことを支援するためのダッシュボードです。
Serverless Frameworkでデプロイを行ったマイクロサービスに対して、様々な支援機能をダッシュボードで提供します。
以下のような機能が提供されています。
Serverless Insights
いわゆるモニタリングのための機能です。現状ではLambdaの実行時間や実行数、エラーの状況をモニタリングできます
Serverless Safeguards
デプロイ時にセキュリティの観点から問題がある設定になってないかをチェックしてくれます。例えば、IAM Roleに*
つかってないかとか、トークンのようなものを設定ファイルに直書きしてないかとか、あとはデプロイするstageやregionを制限することも出来ます。これらのチェック項目はそれぞれ自由に設定ができます。
Serverless Secrets
セキュアなトークンを暗号化して保持する機能です。AWSのSSM Secret Parametor Storeと同じような機能ですが、より簡単に使えるようになっています。serverless.ymlファイルから${secrets:<key>}
といった書き方でどこからでもアクセスが可能になります。
Serverless AWS Access Roles
デプロイ用のIAM Roleをダッシュボードに登録することで、ローカルにクレデンシャルを保持しなくてもデプロイが可能になります。ダッシュボードからユーザを発行して、そのユーザでローカルのPC上でログインするだけで、デプロイが出来るようになります。チームで開発するためには非常に便利な機能です。
インストール
まずは、ダッシュボードにアクセスをしてアカウントを作成しましょう。
すると自分自身のスペースであるtenant
が出来ますので、まずはapplicationを登録します。
applicationが登録できたら、次はServerless Application側の設定を行っていきます。
自身のServerless ApplicationにてServerless enterpriseプラグインを以下のコマンドでインストールしてください。
$ serverless plugin install -n @serverless/enterprise-plugin
serverless.ymlファイルのpluginsセクションに以下のような記述があればインストール成功です。
plugins:
- '@serverless/enterprise-plugin'
そして自身のtenant名とapplication名を追記してください。
tenant: horike37
app: serverless-realtime-ranking
service: realtime-ranking
provider:
name: aws
runtime: nodejs10.x
stage: dev
コマンドラインからログインしてください。ブラウザが立ち上がってコマンドライン上でもログイン状態となります。
$ serverless login
そしてデプロイしましょう
$ serverless deploy
デプロイに成功すれば以下用にダッシュボードから確認ができるようになります。
ダッシュボードから確認が出来るもの
エラー発生時のstack trace
この機能はかなり便利だと感じています。Lambdaのエラーが何件発生しているかはダッシュボードから確認できるのですが、それらをクリックすることでソース上のどこでどのようなエラーが発生しているのか明確に見れることが出来ます。
かなりデバッグや本番環境下でのエラーの除去に有用な機能じゃないでしょうか。
エンドポイントの情報
API Gatewayを上げた時のエンドポイントのURLが確認できます。エンドポイントのURLって結構確認が大変なので地味に便利な機能じゃないでしょうか。
profilesの設定
profileを作成して、それをServerless Applicationに紐付けることで、Applicationごとにセキュリティの設定やSecretパラメータやIAM Roleを切り替えることが出来ます。
IAM Role
safegurd policy
secret store
teamに開発者を招待する
チームで開発や運用を実施したい場合はその人用のダッシュボードのアカウントを作成して招待すれば、そのServerless Applicationの管理デプロイをAWSのアクセスキーを発行することなく実施できます。
Serverless Framework自体はAdministratorの権限を付与することを推奨していますが、これはチーム開発の観点からするとあまり良くありません。しかし、ここからチームに招待することで、Serverless Frameworkで可能なコマンドでアクセスできるリソースにしかアクセスできません。また、退職などでチームから抜ければアカウントをremoveるだけでよいので、よりセキュアにより簡潔にチーム開発が出来るのではないでしょうか。