はじめに
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']
エラー発生行数がちゃんとでてますね。よかった。。。