[JAWS] コマンドから見る機能のOverView

モバイルアプリサービス部の五十嵐です。

前回のサーバレスアプリケーションフレームワーク JAWS を使ってみる | Developers.IOでは、JAWSのQuick Startを紹介しました。

今回は、JAWSのコマンドから、JAWSの機能をOverViewしてみたいと思います。

Project Commands

$ jaws project create

  • JAWSプロジェクトを作成して雛形のファイルを作成します。
  • CloudFormationでAWSにIAMロールなどのリソースを作成します。
Usage: project [options]

Work with JAWS Project. Valid 's: create

Options:

-h, --help output usage information
-d, --dont-exe-cf Don't execute CloudFormation, just generate it
-s, --stage Name for the stage to create
-r, --region Name of AWS region to use
-u, --domain domain ex: myapp.com
-n, --proj-name Name for the new project
-e, --email Notification email to use in CloudFormation
-p, --aws-profile Admin AWS profile as defined in ~/.aws/credentials to use

環境(dev,production,など)やリージョン、ドメイン、CloudFormationのNotificationメールアドレス、クレデンシャルなどが設定できることが分かります。

Module Commands

$ jaws module create

  • Lambda functionの雛形とAPI Gatewayの設定をaws_modulesフォルダに作成します。
Usage: module [options] [params]

aws-module commands

Valid 's: create

create: create aws-module action. Module will be created if DNE. create
Ex: jaws module create users list

Options:

-h, --help output usage information
-l, --lambda [create]: create lambda. Default is create lambda and endpoint.
-e, --endpoint [create]: create API Gateway endpoint. Default is create lambda and endpoint.
-r, --runtime [create]: lambda runtime. Valid: nodejs
-p, --package-manager [create]: Select package manager used when creating awsm for publishing. Valid options: npm

lambdaだけ、あるいはendpointだけを作成することもできます。 runtimeは今のところNode.jsのみ対応しているようです。 次に登場しますが、awsmを公開するのに使うパッケージマネージャを選択できます。 しかし手元の環境ではこれらのオプションは動作しませんでした。

$ jaws postinstall

  • awsm(Amazon Web Services Modules)というLambda functionのライブラリをダウンロードして、aws_modulesフォルダに雛形を作成します。
Usage: postinstall [options]

Performs automation when an aws-module is installed via a package manager

Options:

-h, --help output usage information

先にnpm installでプロジェクト内にパッケージをダウンロードしてから、postinstallを行うことで公開されているawsmをインポートできます。

Region Commands

$ jaws region create

  • プロジェクトに新しいリージョンを追加します。
Usage: region [options]

Work with AWS Regions. Valid 's: create

Options:

-h, --help output usage information
-d, --dont-exe-cf Don't execute CloudFormation, just generate it
-s, --stage Name for the stage to be created in the region
-r, --region Name of AWS region to use
-p, --aws-profile Admin AWS profile as defined in ~/.aws/credentials to use

Stage Commands

$ jaws stage create

  • リージョンに新しい環境(dev,production,など)を追加します。
Usage: stage [options]

Work with JAWS stages in a region. Valid 's: create

Options:

-h, --help output usage information
-d, --dont-exe-cf Don't execute CloudFormation, just generate it
-s, --stage Name for the stage create
-r, --region Name of aws region to use
-p, --aws-profile Admin AWS profile as defined in ~/.aws/credentials to use

Dash Commands

$ jaws dash

  • 対話的なダッシュボードを使ってリソースをデプロイします。
Usage: dash [options]

View a project summary and select resources to deploy.

Options:

-h, --help output usage information

ENV Commands

$ jaws env

  • 環境変数のCRUDコマンドです。
Usage: env [options] [key] [val]

Manage env vars for stage & region. can be "all" can be "local"

Valid 's:

list: vars for stage and region. jaws env list
Ex: jaws env list prod all

get: var value for stage and region. jaws env get
Ex: jaws env get prod all JAWS_STAGE

set: var value for stage and region. jaws set env
Ex: jaws env set prod us-east-1 TABLE_NAME users

unset: var value for stage and region. jaws env unset
Ex: jaws unset prod us-east-1 TABLE_NAME

Options:

-h, --help output usage information

Tag Commands

非推奨とあるので省略します(エラーになりました。)

Deploy Commands

$ jaws deploy [stage] [region]

  • jaws dashコマンドのようにインタラクティブではなく、type、stage、regionを指定してデプロイします。
Usage: deploy [options] [stage] [region]

Deploy a lambda function (type lambda), a REST API (endpoint), or provision AWS resources (resources) for the specified stage. By default will tag and deploy type at cwd

Options:

-h, --help output usage information
-t, --tags Deploy all lambdas tagged as deployable in their jaws.json. Default is to just deploy cwd
-d, --dont-exe-cf Don't execute the lambda cloudformation, just generate it. Zips will be uploaded to s3

Run Commands

$ jaws run

  • ローカル環境でLambdaをテストします。Lambdaの処理ロジックはhandlerのコードと分離しておき、Node.jsならmochaなどテストフレームワークを使うといいでしょう。
Usage: run [options]

Run the lambda in CWD locally

Options:

-h, --help output usage information

所感

注目はawsmですね。JAWSのライブラリでありサンプルとしても使えると思いますので、次回はこれで何か簡単なアプリケーションを作ってみようと思います。また、複数の環境へのデプロイが用意されているのはテストやデプロイ戦略的にも便利そうですね。

参考