以下はAWSの場合に基づく。
基本的には 2019年4月現在、AWSが一番多機能。他環境(Azure等)では当該CLIコマンドがない場合がある。
用語とか。
- Service: 複数のLambda関数とAPI GatewayとかをまとめたServerless Framework 上の概念。Serverless Service。
- Function: Lambda関数のこと。
- Serverless registry: プラグインとテンプレートの登録サービス。以下単にレジストリと言う。
CLIコマンド一覧
初回作成系
-
sls create
Servelessサービスを新規作成。- -t(レジストリ登録template名), -p(独自templateのディレクトリパス), -u(同左URL), のいずれかを指定するとそれのコピーを新規作成。
-
sls install
GitHubから npm install 的にプラグインをインストール
deploy系: デプロイ
-
sls deploy
デプロイ。LambdaとかAPI Gatewayに設定される。- デプロイ前には自動で webpack & パッケージ化する。
-
sls deploy function
指定した名前のLambda関数だけをデプロイする。 -
sls deploy list
デプロイしたServerless Serviceのリストを表示 -
sls deploy list functions
デプロイしたLambda関数と、そのバージョン一覧を表示 -
sls package
パッケージ(zip化)する。デプロイはしない。 -
sls webpack
webpackする。パッケージはしない。
invoke系: 実行
-
sls invoke
実行する。 実際にデプロイ済みのLambda関数を実行する。 -
sls invoke local
ローカル環境で実行。nodeのバージョンやインストール済みライブラリ等、localでは様々な差異があることに留意。
plugin系
-
sls plugin
コレ自体は機能なしの起点コマンド -
sls plugin install
npm install のようにプラグインを導入- 例えばAWSの他機能(DynamoやSQSやら)の設定連携する機能や、
serverless-plugin-warmup という「CloudWatchイベントで5分ごとにLambda叩くことでウォームアップ状態を維持」とか、
serverless-offline というオフライン用のAPI Gateway立てるやつとか…
そういうカスタムもpluginで可能。
- 例えばAWSの他機能(DynamoやSQSやら)の設定連携する機能や、
-
sls plugin uninstall
サービスからプラグインを削除&アンインストール -
sls plugin list
リポジトリ上の全プラグインが出る。AWSで作ったらAzure用プラグインとかは出ない。 -
sls plugin search
--query sqs とか、指定したクエリに一致するやつ検索
info/log系
-
sls info
現在のサービスの情報を表示。serverless.yml見れば分かる情報のほかに、API GatewayのURLなど。 -
sls logs -f [関数名]
Lambdaの実行ログを、CloudWatchから取得。 -
sls metrics
メトリクスを表示。関数の実行概要。多分CloudWatchメトリクスそのまま。 -
sls print
serverless.yml ファイルを表示する。普通にエディタで開くのと何が違う?というと、${opt:stage, "dev"}
などの変数解決済みなこと。
remove/rollback系
-
sls remove
デプロイ済みのサービスを削除する。全削除。 -
sls rollback
--timestamp で指定した日以前のサービスに戻す。 -
sls rollback function
Lambda関数のロールバック。こっちは日付でなく--versionでバージョン指定。
config系
-
sls config
コレ自体は機能なしの起点コマンド。 -
sls config credentials
AWSのIAMの秘密鍵等を設定。デフォルトはaws-cliがあればそれを使う。 -
sls slstats
統計情報の追跡を有効/無効にする。 sls slstats --disable で追跡されなくなる。--enableで逆。
即始めるチートシート
$ npm install -g serverless
# 作成。 テンプレート指定は、aws-nodejs の代わりに aws-nodejs-typescript 等も。
# 使用可能なテンプレートは serverless create --help コマンドで一覧が出る
$ serverless create --template aws-nodejs --path my-service
$ cd my-service
# デプロイ
$ serverless deploy -v
一旦作ってから aws console を見るほうが早い。
CloudFormationから見ると良い。
serverless
と sls
コマンドの違い
同じです。sls
が短縮形なだけ。
雑感
構成管理をコードに出来る/分散しがちなAWSの設定を一括管理、というのは嬉しい反面、今までと設定内容が違う・S3ほかあちこちにファイル作られてしまう…など既存サービスと混在するとややこしくなりがち。
詳しい使い方
Serverless Frameworkの使い方まとめ とか見ると良いかと。