CloudFormationのテンプレートをrubyで記述できるツールとしてkumogata(kumogata2)とSparkleFormationを触ってみた。
自分なりに比較してみて結果をメモしておく。
とりあえずは過去の資産がないのでSparkleFormation使ってみるかなあ。
テンプレート記述の機能比較
基本的にテンプレート記述に関する機能に関してはそこまで差はない感じ。
ただし、SparkleFormationはjsonからの変換ができないのでそのままでは過去の資産が利用できない印象。
機能 | SparkleFormation | kumogata2 |
---|---|---|
ruby => json変換 | ○ | ○ |
json => ruby変換 | × | ○ |
テンプレート分割 | ○ | ○ |
テンプレートの記述
一般的なテンプレートの記述としてはそこまで違いがない。
(SparkleFormationの方が多少rubyチックに書ける)
- kumogata2
template do
AWSTemplateFormatVersion "2010-09-09"
Resources do
Vpc do
Type "AWS::EC2::VPC"
CidrBlock "10.0.0.0/16"
Tags [ {"Key" => "Name", "Value" => "test"} ]
end
end
end
- SparkleFormation
SparkleFormation.new(:test, provider: :aws) do
AWSTemplateFormatVersion '2010-09-09'
resources do
vpc do
properties do
cidr_block "10.0.0.0/16"
tags!("Name" => "test")
end
end
end
end
複雑なテンプレートを書こうとすると関数が用意されているSparkleFormationの方が書きやすい。
- kumogata2(ちょっと書き方を間違えるとエラーとなって辛い)
Conditions do
["Parameter1", "Parameter2"].each do |param|
_("#{param}Exist") do
Fn__Not do |*|
Fn__Equals [ _{ Ref param }, "" ]
end
end
end
- SparkleFormation
conditions do
["Parameter1", "Parameter2"].each do |param|
set!("#{param}Exist", not!(equals!(ref!(param), "")))
end
end
テンプレート実行ツール
どちらもrubyのテンプレートをそのままCloudFormationのスタックとして実行できるツールを持っている。
rubyからJSONへの変換はどちらも行えるので自分で実行ツールを実装することも可能。
kumogataはcloudformationの基本的な機能をラップしただけのような印象。
SparkleFormationはPolicyをテンプレート内に記述したりコンパイルパラメータが指定できたりと+αの機能を有している。
ただし、実装不足やバグ?で十分に動作しない機能やドキュメント不足でコードを読まなければいけない場合がある。
- sfn createコマンドに--compile-parametersオプションがあるが効かない。コードを読んでも使われてる感じがしない?
- Sparkleformationでstack policyを設定する - Qiita参照
ドキュメント充実度
- kumogataは日本人の利用ユーザが多く日本語ドキュメントが充実している。
- SparkleFormationは公式ドキュメントが充実している。
- 日本語のドキュメントはCloudFormationのtemplateをRubyで作成 – 「SparkleFormation」を触ってみた。 | Developers.IOくらいしか見当たらなかった。