ServerlessFramework V3 のメリット&アップグレード方法、新機能のメリットをサーバーレスエキスパートが紹介します😎

ServerlessFramework V3 のメリット&アップグレード方法、新機能のメリットをサーバーレスエキスパートが紹介します😎

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!

Serverless Framework v3 がリリースされました。

すでに多くのお客様へアップグレード対応・新規導入を行いましたが、従来の課題が改善されており素晴らしいと感じます。

今回は Serverless Framework v3 のメリットとアップグレード方法を紹介します。

想定する読者

  • Serverless Framework v3 に興味のあるヒト
  • Serverless Framework v3 にアップグレードしたいヒト

初めに

Serverless Framework v3 は、よりクリーンで再設計された CLI のインターフェースと、新機能ステージパラメーターを持っています。

さらに依存関係のクリーンアップに取り組んで、サーバーレスパッケージを40%軽量化し、NPM セキュリティ警告を取り除いています。より洗練された作りに進化しているように感じますので、皆さんも是非取り組んでみてください。

アップデート方法

新機能について説明する前に、v2 から v3 へのアップグレードについて解説しましょう。

v3 ベータ版の発表で述べられたように、v3 へのアップグレードを容易にするために、多くの非推奨と重大な変更が再検討されました。

つまり、Serverless v2 の時代で非推奨実装を行なってしまっている場合は、まず v2 の状態で Warning を排除する修正対応が必要になります。

以下はアップグレード手順です。

  1. 最新の v2 バージョンにアップグレードします(例: npm -g install serverless@2
  2. v2 でデプロイするときに発生する非推奨を修正します
  3. 非推奨が残っていない場合は、v3 に安全にアップグレードできます
$ npm -g install serverless
...
 
# Check the version
$ serverless --version
Framework Core: 3.0.0

Serverless Framework v3のメリット

ステージパラメータ

Serverless Framework v3 では、新機能「ステージパラメーター」が導入されています。これは現在のステージに基づいて動的に変数を展開することができます。

ステージパラメーターは、ルートに params キーを定義し、「${param:xxx}」変数を介して参照できます。

# serverless.yml
service: myapp

provider:
  name: aws
  environment:
    APP_DOMAIN: ${param:domain}

params:
  prod:
    domain: myapp.com
  dev:
    domain: preview.myapp.com

上記の例では、「${param:domain}」変数は次のように解決されます。

  • 「本番」ステージの myapp.com
  • 「開発」ステージの preview.myapp.com

デフォルトのキーを使用してデフォルトのパラメータ値を定義することもできます。これらの値は、他のすべてのステージに適用されます。

params:
  default:
    domain: ${sls:stage}.preview.myapp.com
  prod:
    domain: myapp.com
  dev:
    domain: preview.myapp.com

この新機能は、ネストされた変数で「custom」セクションを使用するという一般的なパターンに影響を受けて生まれています。例えば、従来で以下のように実装された方は多いのでは無いのかと思います。

provider:
  environment:
	APP_DOMAIN: ${self:custom.stages.${sls:stage}.domain}

すでに上記のパターンを実装している場合は、ステージパラメーター機能を利用するに修正しましょう。新しいステージパラメータが YAML を簡素化し、保守しやすくするのに役立つと思います。

また、サーバーレスダッシュボードとのオプションの統合により、シークレット値を安全に保存し、「${param:my-secret}」変数を介して取得することもできますので、あわせて抑えておいてください。

再設計された CLI インターフェース

公式の声明では、「Serverless Framework v3 は、皆に好まれているフレームワークです。当初『ユーザーとして、求めるものは何か』をコンセプトとして、以下の点に留意し新しくデザインしました」と語られています。

具体的には、私たちは以下の指標で修正がされたものだと解釈しています。

  • 余計な情報を排除
  • 必要な情報のみ出力
  • 目にやさしい配色

次は、最も一般的なコマンドを使用した新しいデザインのプレビューです。

デプロイ

「serverless deploy」コマンドは、クリーンで最小限の出力を備えています。 v2(左)とv3(右)の比較は次のとおりです。

引用元:https://www.serverless.com/blog/serverless-framework-v3-is-live

冗長出力

Serverless Framework v3 は、詳細を出力するための標準の「–verbose」フラグをサポートするようになりました。

このオプションは、CI / CD で特に役立ちます。たとえば、CloudFormation デプロイメントの詳細な履歴を取得する場合などです。

引用元:https://www.serverless.com/blog/serverless-framework-v3-is-live

エラーをクリア

エラー画面が改善されました。障害が発生した場合は明確に通知され、二次情報がトーンダウンされ、エラーメッセージが最後に出力され、コマンドプロンプトのすぐ上に表示されます。

さらに、CloudFormation エラーには、リソースとそのステータスに関する詳細が含まれるようになりました。

引用元:https://www.serverless.com/blog/serverless-framework-v3-is-live

よりクリーンなログ

「サーバーレスログ」コマンドは、よりクリーンで軽量な出力を備え、ログの内容により焦点を当てるようになりました。

引用元:https://www.serverless.com/blog/serverless-framework-v3-is-live

新しいサーバーレスオンボーディング

Serverless Framework は、新しいプロジェクトをインタラクティブにセットアップできるようになりました。空のディレクトリで「サーバーレス」を実行し、プロンプトに従います。

引用元:https://www.serverless.com/blog/serverless-framework-v3-is-live

インタラクティブなセットアップでは、サーバーレスダッシュボードをいくつかの手順でセットアップすることもできます。既存のプロジェクトで「サーバーレス」を実行すると、プレミアムモニタリング、AWS アカウント管理、パラメーターなどにアクセスできます。

プラグインのアップグレード

多くのプラグインが Serverless Framework v3 に対応できるように改善されました。

環境のサイズを考慮し、プラグインは3つのカテゴリに分けられています。

  1. カテゴリー1:v3 と互換性があり、新しい CLI デザインと統合されるプラグイン
  2. カテゴリー2:v3 と互換性のあるプラグイン
  3. カテゴリー3:まだ v3 と互換性のないプラグイン

幸い、ほとんどのプラグインはカテゴリ1または2にあります。一部のプラグインはまだ新しいデザインと完全に統合されていない可能性がありますが、正常に動作するはずです。

開発者がプラグインを次のレベルに引き上げるのを支援したいという思いで、以下の機能が追加されました。

  • 「プラグインの作成」に関する最新のドキュメント
  • より良い CLI 出力を作成するための新しいプラグイン API

まとめ

ステージパラメーターと、CLI のデザイン刷新が大きなところでは無いでしょうか。

CI.CD の時には –verbose オプションを使用することで、従来のログを出すことも可能なため、より様々なユースケースで力を発揮するようになったと感じます。

気になるのはプラグインの対応状況では無いでしょうか。お使いのプラグインが非対応の場合は慎重に導入されることを推奨します。

サーバーレスに関する開発は、お気軽にお問い合わせください。