【新機能】AWS CloudFormation Designer発表。CloudFormationをグラフィカルに構築

2015.10.02

こんにちは、せーのです。今日はAWS CloudFormation使いにはかなり嬉しい新機能が発表されましたのでご紹介します。

CloudFormationはJSON地獄

AWS CloudFormationはBlue-Green Deploymentなシステムを構築したり、細かい設定値を決めた初期構築、同じ環境を複数個作る時などに非常に便利です。テンプレートやOUTPUTが残るのでどのような設定値で構築したかを振り返るときにも便利ですね。 ただこのCloudFormation、昔から言われている大きな課題がありました。それは「テンプレートの構築方法がJSON一択」ということです。 EC2 + AutoScaling + RDS + ELB + S3 + ElastiCache、、、といった通常のWebシステム構築だけでも数百行を超えるJSONを手書きでシコシコ書き続ける必要がありました。 JSONですから当然タイポやカッコの数が合わなければ通りませんし、リソースの書き方によってはあと少しで完成、というところでリソースエラー、全てロールバック、、、なんて地獄絵図が日常茶飯事でした。 それを回避しようとRubyでラップしてみたり、Pythonでラップしてみたり、、と色々な知恵と勇気で乗り越えてきたわけですが、ここにきて公式からいよいよ待ちに待ったGUIツールが登場しました!!

特徴

特徴はなんといってもGUI、ドラック&ドロップでポトペタするだけでCloudFormantionが組めていく、というところですね。 それ以外にもS3やローカルディスクに対するsave、loadやUndoもコントロールバーからワンクリックで出来てとても便利です。Validateボタンもあるので自分で作ったJSONテンプレートのチェックにもなりますね。

やってみた

それでは早速触ってみましょう。マネージメントコンソールからCloudFormationを開いてみます。

cfn_designer

早速ボタンが増えていますね。このボタンを押すとデザイナーが立ち上がります。

cfn_designer1

見た目はVisual Studioのポトペタに似てる感じでしょうか。とりあえずネットワークを組んでみようとしてVPCを探してみました。VPCはEC2カテゴリの中にあるんですね。

cfn_designer2

貼り付けたリソースの上で右クリックをするとコンテキストメニューが出てきます。

cfn_designer3

ここには

  • 目: プロパティの修正
  • コピー: 同じAWSリソースをコピーする
  • ゴミ箱: リソースを削除する。
  • はてな: リソースに対応するCloudFormationのドキュメントページを開く

使った感じ、プロパティの値は下部のJSONに直接打ち込む関係で、はてなマークを使う頻度が高くなりました。その上ではここにドキュメントへのリンクがあると便利です。

cfn_designer5

リソースにはポイントが表示されていて、そこからドラッグすると矢印が出てきます。これを使ってリソース同士の関連をつけていく感じですね。

とりあえず何も考えずにシステムを組んでみました。

cfn_designerz11

こんな感じです。VPCにSubnetが3つあり、それぞれELB、EC2、RDSがついています。セキュリティグループとS3がついていて、EC2にはEIPがついています。またEC2にEBSをつけています。RDSを直接Subnetに入れようとするとエラーが出ましたので、DB SubnetGroupを入れて、その中にRDSを立てました。

cfn_designer6

リソースを追加、削除毎にCloudFormationのJSONテンプレートが動的に変わっていくのが確認出来ます。

cfn_designer9

ちなみにリソースを置いた位置もこのJSON上に記録されているので、次に開いた際には前回保管された状態そのままで続きができます。

コントロールバーはこんな感じです。New, Open, Saveと言った基本的な機能とUndo, Redo, CreateStack, Validateが用意されています。

cfn_designer7

Save先、Load元にはローカルのファイルとS3のどちらに入れるか選択できるようになっています。 S3に保存してバケット内を見てみると

cfn_designerz13

デザイナー用にフォルダが新たに作られるようです。

CreateStackを押すと

cfn_designerz12

いつものCloudFormationのCreate Stack画面になりました。あとは普通に組んでいくだけですね。

まとめ

いかがでしたでしょうか。使いこなせば生産性が大きく変わりそうですね。サンプルテンプレートを選択することもできるので、そちらを見てみながら必要なプロパティは何なのかを覚えていくのも良いかと思います。

参考サイト