【小ネタ】Amazon States Languageの静的解析ツールstatelintのご紹介 #reinvent

2016.12.05

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

はじめに

こんにちは、中山です。

AWS re:Invent 2016で発表されたAWS Step Functions。複数のLambda関数の連携をAmazon States LanguageというJSONベースの設定ファイルで記述することができ、大変便利なサービスだと感じています。今回はこのAmazon States Languageを静的解析し、記述内容に間違いがあればエラーを標準出力に表示してくれるCLIツールawslabs/statelintをご紹介したいと思います。ちなみにこのツールはご存知Jeffさんのエントリでも軽く触れられています。

使ってみる

インストールはとても簡単です。Gemとして配布されているため gem コマンドでインストール可能です。

$ gem install statelint
<snip>

使い方も非常にシンプルなものになっています。現時点(2016年12月05日)では引数に渡せるのはAmazon States Languageファイルのみです(複数指定可)。オプションすらありません。

$ statelint <Amazon-States-Language-file>

標準出力に何も表示されていなければそのファイルの内容は文法的に問題ありません。もし、問題のある記述がある場合は以下のようにエラーが標準出力に表示されます。

$ statelint <Amazon-States-Language-file-with-errors>
9 errors:
 State Machine does not have required field "States"
 State Machine does not have required field "StartAt"
 Field "StackId" not allowed in State Machine
 Field "ResponseURL" not allowed in State Machine
 Field "ResourceProperties" not allowed in State Machine
 Field "RequestType" not allowed in State Machine
 Field "ResourceType" not allowed in State Machine
 Field "RequestId" not allowed in State Machine
 Field "LogicalResourceId" not allowed in State Machine

まとめ

いかがだったでしょうか。

Amazon States Languageを静的解析するツールstatelintをご紹介しました。AWS謹製のツールなので、今後AWS Step Functionsを利用する際には必須のツールと言ってよいかと思います。また、CLIとして提供されているため各種エディタとの連携もできそうですね。

本エントリがみなさんの参考になったら幸いです。