AWS
JSON
CloudFormation

JSON Lintをつかって文法チェック

More than 3 years have passed since last update.

はじめに

CloudFromationを書いている時困るのがjsonの記述ミスです。いちいちStackの構築のエラーが出るのを待つのもつらいので、手元でエラーチェックができるツールをさがしていました。

yajl-toolsのjson_verifyを利用するで紹介されていたjson_verifyもつかってみましたが、エラーの場所を教えてくれません! CloudFormationのtemplateを書くと数百行は普通にあるので、これは死にます。ということで探したところJSON lintというツールがあったので、紹介します。

インストール

npmでインストールできます。Macでnpmから入れる場合はこんなかんじです。

$ brew install npm
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/node-0.10.32.mavericks.bottle.tar.gz
######################################################################## 100.0%
==> Pouring node-0.10.32.mavericks.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
==> make install
==> /usr/local/bin/npm install --global npm@latest --prefix /usr/local
==> Summary
?  /usr/local/Cellar/node/0.10.32: 1678 files, 19M

$ npm install jsonlint -g
/usr/local/bin/jsonlint -> /usr/local/lib/node_modules/jsonlint/lib/cli.js
jsonlint@1.6.2 /usr/local/lib/node_modules/jsonlint
├── JSV@4.0.2
└── nomnom@1.8.0 (underscore@1.6.0, chalk@0.4.0)
$

使い方

使い方は簡単です。jsonlintに検証したいファイルを引数としてわたすだけです。 -qは、正常終了時になにも出力しないオプションです。

$ jsonlint -q test.cfn
[Error: Parse error on line 307:
...        }        "LogBucketPolicy" :
--------------------^
Expecting 'EOF', '}', ',', ']', got 'STRING']

エラー発生行数がちゃんとでてますね。よかった。。。