Kumogata v0.3.5をリリースしました。 0.2.x〜0.3.5の間に以下の機能を追加しました。
- イベントログの出力
- パラメーターの暗号化
イベントログの出力
Kumogataはスタックを作成したとき作成完了まで待ちますが、作成状況が見えないのがいやだったので、作成中にイベントログを出力するようにしました。 JSONテンプレートも普通に使えるので、Rubyテンプレートを使わなくても便利な機能な気がします。
デモ
テンプレート: https://gist.github.com/winebarrel/9b9bc263c0b80b1d4ca4
パラメーターの暗号化
パスワード等をパラメーターで渡すとき、平文で渡すのが何となくいやだったので、一応、暗号化機能をつけました。
Parameters do Param1 { Type "String" } Param2 { Type "String" } Password1 { Type "String"; NoEcho true } Password2 { Type "String"; NoEcho true } end # Parameters Resources do myEC2Instance do Type "AWS::EC2::Instance" Properties do ImageId "ami-XXXXXXXX" ...
上のようなテンプレートを書いたときにコマンドラインで-e
オプションを渡すと、指定されたパラメータが暗号化されます。
kumogata create template.rb -e 'Password1,Password2' -p 'Param1=xxx,Param2=xxx,Password1=xxx,Password2=xxx'
復号は以下のような感じで。
command (<<-EOS).fn_join ENCRYPTION_PASSWORD="`echo '<%= Ref Kumogata::ENCRYPTION_PASSWORD %>' | base64 -d`" # Decrypt Password1 echo '<%= Ref "Password1" %>' | base64 -d | openssl enc -d -aes256 -pass pass:"$ENCRYPTION_PASSWORD" > password1 # Decrypt Password2 echo '<%= Ref "Password2" %>' | base64 -d | openssl enc -d -aes256 -pass pass:"$ENCRYPTION_PASSWORD" > password2 EOS
実際は裏側で復号用のパスワードをパラメーターとして渡しているのでセキュアになったか微妙ですが、httpsで通信していいるとはいえ平文のパスワードを渡すのは気になります。
ヘビーに使っている人はどうしているんだろう…? ノウハウがあったらどなたか教えていただきたいです。