Serverless Framework コマンド チートシート


以下はAWSの場合に基づく。
基本的には 2019年4月現在、AWSが一番多機能。他環境(Azure等)では当該CLIコマンドがない場合がある。

### 用語とか。
- Service: 複数のLambda関数とAPI GatewayとかをまとめたServerless Framework 上の概念。Serverless Service。
- Function: Lambda関数のこと。
- Serverless registry: プラグインとテンプレートの登録サービス。以下単にレジストリと言う。

# CLIコマンド一覧


## 初回作成系

- [`sls create `](https://serverless.com/framework/docs/providers/aws/cli-reference/create/) Servelessサービスを新規作成。
  -  -t(レジストリ登録template名), -p(独自templateのディレクトリパス), -u(同左URL), のいずれかを指定するとそれのコピーを新規作成。 
- [`sls install `](https://serverless.com/framework/docs/providers/aws/cli-reference/install/) GitHubから npm install 的にプラグインをインストール
    
## deploy系: デプロイ
- [`sls deploy `](https://serverless.com/framework/docs/providers/aws/cli-reference/deploy/) デプロイ。LambdaとかAPI Gatewayに設定される。
	- デプロイ前には自動で webpack & パッケージ化する。
- [`sls deploy function `](https://serverless.com/framework/docs/providers/aws/cli-reference/deploy-function/) 指定した名前のLambda関数だけをデプロイする。 
- [`sls deploy list `](https://serverless.com/framework/docs/providers/aws/cli-reference/deploy-list/) デプロイしたServerless Serviceのリストを表示
- `sls deploy list functions ` デプロイしたLambda関数と、そのバージョン一覧を表示
- [`sls package `](https://serverless.com/framework/docs/providers/aws/cli-reference/package/) パッケージ(zip化)する。デプロイはしない。
- [`sls webpack `](https://serverless.com/framework/docs/providers/aws/cli-reference/webpack/) webpackする。パッケージはしない。


## invoke系: 実行
- [`sls invoke `](https://serverless.com/framework/docs/providers/aws/cli-reference/invoke/) 実行する。 **実際にデプロイ済みのLambda関数を実行する**。
- [`sls invoke local `](https://serverless.com/framework/docs/providers/aws/cli-reference/invoke-local/) ローカル環境で実行。nodeのバージョンやインストール済みライブラリ等、localでは様々な差異があることに留意。



## plugin系
- `sls plugin ` コレ自体は機能なしの起点コマンド
- [`sls plugin install `](https://serverless.com/framework/docs/providers/aws/cli-reference/plugin-install/) npm install のようにプラグインを導入
  - 例えばAWSの他機能(DynamoやSQSやら)の設定連携する機能や、<br>serverless-plugin-warmup という「CloudWatchイベントで5分ごとにLambda叩くことでウォームアップ状態を維持」とか、<br>serverless-offline というオフライン用のAPI Gateway立てるやつとか…<br>そういうカスタムもpluginで可能。
- [`sls plugin uninstall `](https://serverless.com/framework/docs/providers/aws/cli-reference/plugin-uninstall/) サービスからプラグインを削除&アンインストール
- [`sls plugin list `](https://serverless.com/framework/docs/providers/aws/cli-reference/plugin-list/) リポジトリ上の全プラグインが出る。AWSで作ったらAzure用プラグインとかは出ない。
- [`sls plugin search `](https://serverless.com/framework/docs/providers/aws/cli-reference/plugin-search/) --query sqs とか、指定したクエリに一致するやつ検索 

## info/log系

- [`sls info `](https://serverless.com/framework/docs/providers/aws/cli-reference/info/) 現在のサービスの情報を表示。serverless.yml見れば分かる情報のほかに、API GatewayのURLなど。
- [`sls logs -f [関数名]`](https://serverless.com/framework/docs/providers/aws/cli-reference/logs/) Lambdaの実行ログを、CloudWatchから取得。
- [`sls metrics `](https://serverless.com/framework/docs/providers/aws/cli-reference/metrics/) メトリクスを表示。関数の実行概要。多分CloudWatchメトリクスそのまま。
- [`sls print `](https://serverless.com/framework/docs/providers/aws/cli-reference/print/) serverless.yml ファイルを表示する。普通にエディタで開くのと何が違う？というと、`${opt:stage, "dev"}` などの変数解決済みなこと。

## remove/rollback系

- [`sls remove `](https://serverless.com/framework/docs/providers/aws/cli-reference/remove/) デプロイ済みのサービスを削除する。全削除。
- [`sls rollback `](https://serverless.com/framework/docs/providers/aws/cli-reference/rollback/) --timestamp で指定した日以前のサービスに戻す。
- [`sls rollback function `](https://serverless.com/framework/docs/providers/aws/cli-reference/rollback-function/) Lambda関数のロールバック。こっちは日付でなく--versionでバージョン指定。

## config系
- `sls config ` コレ自体は機能なしの起点コマンド。 
- [`sls config credentials `](https://serverless.com/framework/docs/providers/aws/cli-reference/config-credentials/) AWSのIAMの秘密鍵等を設定。デフォルトはaws-cliがあればそれを使う。 
- [`sls slstats `](https://serverless.com/framework/docs/providers/aws/cli-reference/slstats/) 統計情報の追跡を有効/無効にする。 sls slstats  --disable で追跡されなくなる。--enableで逆。


# 即始めるチートシート

```bash:
$ 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の使い方まとめ](https://qiita.com/horike37/items/b295a91908fcfd4033a2) とか見ると良いかと。