ローカルに置いたテンプレートファイルを利用して、PowershellでCloudFormationスタックを作成する

ローカルにあるCloudFormationテンプレートを利用して、PowershellからCloudFormationスタックを作成するコマンド。地味にハマったので、メモ。

CloudFormationスタック作成用のコマンドレットはこちら。

AWS CloudFormation: New-CFNStack Cmdlet | AWS Tools for PowerShell

"TemplateBody"というオプションがあるので、これを利用すればいいのだなあ、とコマンドを実行しても上手くいかない。以下エラーメッセージが返ってくる。

PS > New-CFNStack -StackName TestStack -TemplateBody file://C:/temp/Test.template
Template format error: unsupported structure

「テンプレートの構造が違う」って?!いやいや、コンソールからは、そのテンプレート使って処理できるから。などと困惑していたら、stack overflow が教えてくれました。偉大ですね。

amazon web services - CloudFormation and PowerShell: Template format error: unsupported structure with - Stack Overflow

"TemplateBody"にローカルファイルのURIを指定しても駄目らしいです。以下みたいに、変数へ一度読み込まないとっ、て話らしいです。

PS > $template = "C:/temp/Test.template"
PS > $content = [IO.File]::ReadAllText($template)
PS > Test-CFNTemplate -TemplateBody $content

Test-CFNTemplate は、テンプレートの構造を確認してくれるコマンドレット。テンプレート確認の都度、スタック実行するのは、お金もかかっちゃうし、だるいしで、検証作業にお薦めとのこと。