CloudFormation デザイナーで
捗ろう
クラスメソッドAWSコンサルティング部
阿部 洸樹
自己紹介
• 阿部 洸樹
http://dev.classmethod.jp/author/abe-koki/
• クラスメソッドAWSコンサルティング部
• Twitter
@AbeIka
• 好きなAWSサービス
CloudFormation デザイナー
アジェンダ
• CloudFormationの基本を振り返る
• CloudFormationデザイナーで捗る
 サンプルテンプレートを試してみる
 1からテンプレートを作ってみる
• CloudFormationデザイナーのデメリット
• まとめ
アジェンダ
• CloudFormationの基本を振り返る
• CloudFormationデザイナーで捗る
 サンプルテンプレートを試してみる
 1からテンプレートを作ってみる
• CloudFormationデザイナーのデメリット
• まとめ
AWS CloudFormationとは?
CloudFormation:テンプレートに基づき、AWSの環境を自動構築
JSONのテキスト
CloudFormationの主なメリット
環境の複製 すぐに作ってすぐに消せる
CloudFormationの活用例
• 標準テンプレートの作成
 組織内で統一された環境構築
 統一的な命名、セキュリティグループルール
 自分でテンプレートをつくるパターン
• ISVベンダー提供のテンプレートの利用
 AWS上で製品を展開するベンダー
 Create Stackで製品を試せる
 他人のテンプレートを利用するパターン
利用料金
• CloudFormation自体は無料
• テンプレートで構築されたリソースに対して、課金
 EC2,ELB などの利用料金
アジェンダ
• CloudFormationの基本を振り返る
• CloudFormationデザイナーで捗る
 サンプルテンプレートを試してみる
 1からテンプレートを作ってみる
• CloudFormationデザイナーのデメリット
• まとめ
ここから
面白くなります!
@AbeIka
簡単そうなテンプレートで試してみる
http://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/sample-templates-services-us-west-2.html
“表示”を選択して、テンプレートを確認してみる
テンプレートの表示
適当なテキストエディタにコピー&ペースト
このまま参照、編集してもOK
206行
206段の石段
206行とか辛い
シンプルな構成でも
数百行のテンプレートになりがち
CloudFormation
デザイナーがあるよ
@AbeIka
これからやること
• サンプルテンプレートの参照
• 編集
• バリデーション
• 保存
• Create Stack
テンプレートを表示してみる(デザイナー)
http://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/sample-templates-services-us-west-2.html
“デザイナーで表示”を選択してみる
CloudFormationデザイナーが起動
画面上部:Canvas、下部:テキストエディタ
テキストエディタ
項目ごとにタブ表示
206行中、
140行がMappings
リソースのプロパティを確認
・Canvas でリソースを選択
→ テキストエディタに表示される
リソースのプロパティを編集
[EC2の削除保護の有効化]
1.リファレンスを開き
2.EC2::Instance開き
3.プロパティ名,書式の確認
テキストエディタの便利機能 – リファレンスへのリンク
リソースを右クリック > リファレンスがOpen
テキストエディタの便利機能 – ショートカット
キー 操作
Ctrl+Space リソースで使用可能なプロパティを表示
Ctrl+F 検索
Ctrl+ テキストのフォーマット
Ctrl+Shift+ 空白を削除
Windows https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-json-editor.html
Mac http://dev.classmethod.jp/cloud/aws/cfn-designer-macos-auto-complete-not-working/
ショートカット
編集の反映
Validate template(構文チェック)
デザイナーのツールバー
編集の反映
Undo, Redo
デザイナーのツールバー
編集の反映
ローカル or S3バケットに保存
デザイナーのツールバー
編集の反映
Create Stack
デザイナーのツールバー
Create Stack
パラメータやオプションを入力し、Create Stack!!
@AbeIka
デザイナーの捗りポイント①
• テンプレートの可視化
 Canvas
• 便利機能
 リファレンスへのリンク
 ショートカット
 Validate
他人が書いたテンプレートでも、デザイナーにかかれば捗る!
アジェンダ
• CloudFormationの基本を振り返る
• CloudFormationデザイナーで捗る
 サンプルテンプレートを試してみる
 1からテンプレートを作ってみる
• CloudFormationデザイナーのデメリット
• まとめ
ゴール
テンプレートでVPC,EC2インスタンス,セキュリティグループを作成
Canvasで絵を描く
プロパティの入力
論理名の変更
Canvasで絵を描く
ドラッグ ドロップ
Canvasで絵を描いた成果
Canvasの操作が、エディタに反映された
論理名の編集
鉛筆マークを選択し、わかりやすい名前に変更
Canvusで絵を描く その2
ドラッグ VPC上にドロップ
リソースの関連付け
Canvasの操作でリソースの関連付け出来た!
Canvasの完成系
EC2とセキュリティグループの関連付けは、線で結ぶ
プロパティの入力
• VPC
 CIDR
• EC2
 AMI ID
 インスタンスタイプ
• (オプション)Parameterなどの設定
Create Stack時に入力する値
 必須ではない
@AbeIka
デザイナーの捗りポイント②
• 直感的な操作
Canvasで絵を描く
 リソースの作成
 リソースの関連付け
Canvasで絵を描く
プロパティの入力
論理名の変更
アジェンダ
• CloudFormationの基本を振り返る
• CloudFormationデザイナーで捗る
 サンプルテンプレートを試してみる
 1からテンプレートを作ってみる
• CloudFormationデザイナーのデメリット
• まとめ
デメリット
• テンプレートにメタデータが入る
 リソースのサイズ、位置情報をメタデータとして持つ
 テンプレートサイズが大きくなる
• デメリット?
 テンプレートの自動整形
 改行やインデントが自動で入る
CloudFormationデザイナー以外の選択肢
• AWS CloudFormation Template Editor for Eclipse
 Eclipse から直接、スタックを作成/更新
 入力補完
 構文ハイライト
 バリデーション機能
• 普段使いのエディタ
 Vim
 Emacs
 Atom
 メモ帳
 Etc..
Emacsの場合
http://dev.classmethod.jp/devenv/emacs-edit-json-cloudformation/
Emacs + json-mode
→ シンタックスハイライト、リアルタイム文法チェック
Atomの場合
http://dev.classmethod.jp/cloud/aws/atom-settings-for-creating-a-cfn-template/
Atom + cform
→ 補完機能
@AbeIka
アジェンダ
• CloudFormationの基本を振り返る
• CloudFormationデザイナーで捗る
 サンプルテンプレートを試してみる
 1からテンプレートを作ってみる
• CloudFormationデザイナーのデメリット
• まとめ
まとめ
• CloudFormationは便利だが、つらい
• デザイナーは捗る
 グラフィカルな画面
 ショートカット
 バリデーション
• お好きなエディタでどうぞ
 テキストエディタであればOK
• デザイナーを始めたい
 ウォークスルーで覚えましょう
 https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/CHAP_Using.html

Cloud formation デザイナーで捗ろう

Editor's Notes

  • #2 CloudFormationデザイナーで捗ろうというテーマで、わたくし あべが発表させて頂きます。
  • #3 簡単に自己紹介させて頂きます。 クラスメソッドAWSコンサルティング部に所属しております。阿部と申します。 普段は東京で主にAWSのインフラ構築を担当しています。 SNSでは、いかのアイコンを使っていまして、Twitterではあべいかというアカウントでつぶやいています。 好きなAWSサービスはCloudFormationデザイナーです。 今回は、CloudFormationとデザイナーの良さをお伝えできればと思います。
  • #4 本日のアジェンダです。 まず、CloudFormationの基本を振り返ります。 CloudFormationが、どんなサービスでどんなメリットがあるのか確認します。 次にCloufFormationデザイナーでどれだけ捗るのかを、 サンプルテンプレートと、1からのテンプレート作成でご紹介します。 デザイナー捗るんですが、デメリットもありますのでご紹介し、 最後にまとめとさせていただきます
  • #5 では、CloudFormationの基本を振り返ってみます。
  • #6 CloudFormationがそもそもどんなサービスなのか復習します。 CloudFormationは、テンプレートに基づいて、AWSの環境を自動構築してくれるサービスです。 AWS上のリソース、例えば、EC2やVPC、ELBなどを構築します。 ユーザーは構成情報が書かれたテンプレートを準備しておきます。 テンプレートはJSON形式のテキストファイルです。 内容としては、EC2のインスタンスタイプやVPCのCIDRなどなど構成情報を記載します。 テンプレートが出来たら、Create Stackという操作を行う事で、環境構築が行われます。
  • #7 CloudFormationのメリットを確認します。 まず、環境の複製があります。一度テンプレート化してしまえば、同等のAWS環境がすぐに手に入ります。 Create Stackの操作ですぐに環境が出来上がりますので、デモや一時的な検証環境に適しています。 環境が不要になったら、Delete Stackという操作を行う事で、AWSリソースをまとめて削除する事が出来ます。 スライドに記載していませんが、 AWSのEC2やVPCなどのインフラストラクチャーをコードで管理できるため、ソフトウェアのようにバージョン管理が出来るメリットなどがあります。
  • #8 CloudFormationの活用例をご紹介します。 まず、標準テンプレートの作成です。 マネージメントコンソールからの構築では、エンジニアによって、命名やセキュリティ方針が異なってしまいます。 命名やセキュリティグループのルールについても、テンプレート化できるので、組織で統一した環境をつくることが可能です 自分たちでテンプレートをつくり、利用するパターンになります。 次に、ISVベンダーが提供するテンプレートです。 AWS上で製品を展開するISVベンダーは、よくCloudFormationテンプレートを公開しています。 ユーザーからすると、Create Stackをするだけで製品を試せるメリットがあります。 エンジニアは、自分でテンプレートを作成することもあり、 また、ほかの人が書いたテンプレートを読んだり、編集することもあるという事になります。
  • #9 利用料金について、CloudFormation自体の料金は無料です。 テンプレートから構築したリソースについて、課金が発生します。 EC2とELBを作成したのであれば、EC2とELBについての課金となります。
  • #10 サンプルテンプレートの閲覧と編集を通して、CloudFormationデザイナーが捗る事をご紹介します。
  • #12 AWSでは、サービスごとにCloudFormationテンプレートを公開しています。 その中から、一番簡単そうなEC2のテンプレートをピックアップしました。 セキュリティグループ内にEC2インスタンスを作成するテンプレートです。 表示を選択して、テンプレートの内容を確認してみます。
  • #13 ブラウザ上にテンプレートが表示されますので、適当なテキストエディタにコピー&ペーストしてみます。 すると、テンプレートが206行あることがわかります。
  • #14 そう206行あります。
  • #15 石段で表現するとこんな感じです。
  • #16 206行が多いか少ないか、受け取り方には個人差があると思います。 私は、簡単そうなテンプレートを選んだのに206行もあるのかーと感じてしまいます。 ただ、実際にテンプレートを書いていると、数百行~数千行になってしまいがちです。 サンプルが悪いわけではありません。 といつつ、他の人が書いた数百行のテンプレートを読むのは、つらさを感じてしまいます。
  • #17 そんなモヤモヤを解消するのが、CloudFormationデザイナーです。 昨年の10月にリリースされたAWS公式のGUIエディターです。
  • #18 これから、CloudFormationデザイナーで サンプルテンプレートを参照、編集し、 バリデーションをかけたうえで、 保存、Create Stackする一連の流れをご紹介します。
  • #19 サンプルテンプレートの画面に戻ります。 デザイナーで表示というリンクがありますので、選択してみましょう。
  • #20 CloudFormationデザイナーが起動します。 画面の上がキャンバスで、下がテキストエディタになっています。
  • #21 ドーーーーーンと、 キャンバスの表示拡大してみます。 すると、EC2が1台、セキュリティグループが1つのテンプレートであることがわかります。
  • #22 この機能、すばらしいですよね 206行のテンプレートを読まずとも、概要を把握することができました。
  • #23 何行でも同じです
  • #24 テキストエディタに注目します。 エディタは項目ごとにタブで分かれています。 タブを切り替えていくと、206行のうち、ほとんどがMappingsという項目であることがわかります。 サンプルテンプレートは、旧世代のインスタンスタイプとマルチリージョンに対応する形で作られていて、行数が増えていました。 テンプレートのボリュームが大きくなったときに、タブ表示の利便性を感じることが出来ると思います。
  • #25 サンプルテンプレートのEC2インスタンスのプロパティを確認します。 まず、キャンバスでEC2を選択します。 すると、テキストエディタに設定内容が表示されます。 テンプレートのボリュームが増えると、何がどこに書いてあるかわからなくなりがちですが、 デザイナーであれば、エディタとキャンバスが連動しますので、見たい設定をすぐに確認できます。
  • #26 リソースのプロパティの編集にうつります。 EC2の削除保護の有効化をする例について、考えます。 まず、CloudFormationのリファレンスを開き、EC2::Instanceの章を開きます。 すると、プロパティ名と書式が記載されていますので、 テンプレートを編集します。 CloudFormationテンプレートを作成、編集するにあたり、リファレンスは必要になってきます。
  • #27 大事なので、協調します。 CloudFormationテンプレートの読み書きには、リファレンスが必要です!!
  • #28 デザイナーでは、リファレンスへのリンクを提供しています。 対象のリソースを右クリックし、はてなマークを選択すると、そのリソースのリファレンスが開かれます。 必要なリファレンスをすぐに確認できるという事です。
  • #29 大事なので、協調します。 CloudFormationテンプレートの読み書きには、リファレンスが必要です!!
  • #30 便利機能として、ショートカットも提供されます。 利用可能なプロパティの表示、検索、フォーマット、空白の削除が使えます。 特に、プロパティの表示は使う事が多いです。 削除保護の有効化では、DisableApiTerminationプロパティを使います。 これを入力するには、スペルミスが怖いしですから、ショートカットを積極的に使っていきます。 ショートカットは、WinodowsとMacで異なるので気をつけてください。 スライドの表はWindowsのキーバインドです。
  • #31 編集が完了したら、デザイナーのツールバーに注目します。 構文チェックのアイコンがありますので、こまめにチェックします。
  • #32 誤りがあった場合は、 テキストエディタで修正する。もしくは、Undo,Redoを使って、修正します。
  • #33 修正がおわったら、PCのローカルまたは、S3バケットにテンプレートを保存します。 基本的にはローカルにダウンロードして、バージョン管理システムで管理する形が良いかと思います。
  • #34 スタックをつくる場合は、Create Stackを選択し、作成画面にうつります。
  • #35 Create Stackの画面に遷移します。 Create Stackの画面では、パラメータやオプションを入力します。
  • #36 CloudFormationがAWS環境を自動構築してくれます。 私たちのタスクは完了しました。
  • #37 やってやったぜ!って事です。
  • #38 デザイナーのはかどりポイントを整理します。 テンプレートの可視化ということで、Canvusでグラフィカルにテンプレートの状況を確認することができます。 テンプレートの中身を確認する場合、まずはCunvusで表示してみるような使い方が出来ます。 便利機能として、大きく3つありました。 1つめがリファレンスへのリンクです。必要なリファレンスをすぐに参照できます。 2つ目がショートカットです。 主に、リソースで利用可能なプロパティを表示する機能を使って、スペルミスを防止します。 最後にバリデートです。テンプレートの書式チェックを行うことができます。 他人が書いたテンプレートでも、デザイナーにかかれば、参照も編集も簡単に出来て、捗ります。
  • #39 1からテンプレートを作る際に、デザイナーで捗ることをご紹介します。
  • #40 デザイナーを使って、1からテンプレートをつくるケースを考えてみます。 テンプレートには、VPC、サブネット、セキュリティグループ、EC2を記載します。 テンプレートづくりには、3つのタスクが必要になります。 1つ目が、Canvusで絵を描くことです。Cunvusにサービスアイコンを配置していきます。 2つ目が、論理名の変更です。デザイナーが自動でつける名前をわかりやすいものに変更します。 3つ目が、プロパティの入力です。VPCのプロパティであれば、CIDRなどがありますし、EC2のプロパティであれば、インスタンスタイプなどがあります。 1つずつ解説していきます。
  • #41 まずは、Canvasで絵を描くタスクです。 キャンバスの左メニューには、AWSサービスのアイコンが並んでいます。 左メニューからVPCアイコンをドラッグし、キャンバスにドロップします。
  • #42 以上の操作で、テンプレートにVPCが追加されました。 プロパティについては、空の状態です。 また、リソースには、自動で名前が付けられます。 この例ですと、”EC2VPC59UPC”です。 自動でつけられた名前では、テンプレートが読みづらくなってしまうため、変更します。
  • #43 エディタの鉛筆マークを選択することで、論理名を変更することができます。 基本的に、ドラッグ&ドロップと論理名の変更はセットと考えます。 論理名は、テンプレート内で一意である必要があります。 わかりやすいかつ、かぶらない名前に変更します。
  • #44 サブネットを追加します。VPCと同様にアイコンをドラッグし、ドロップします。 このとき、VPCの上にドロップします。
  • #45 VPCの上にドロップする事で、サブネットのプロパティにVPCへのリンクが記載されます。 プロパティのVpcIDで、Ref関数を使ってリンクされています。 このように、Canvasの操作でリソースの関連付けを行うことができます。
  • #46 EC2とセキュリティグループを、配置します。 EC2はサブネットの上に配置し、セキュリティグループは、VPCの上に配置します。 EC2とセキュリティグループの関連付けは、線で表現します。 EC2の丸を選択すると線が表示されるので、セキュリティグループに伸ばします。
  • #47 Canvusの操作で、リソースを関連付けることができました。 当然、Canvasを見れば、リソースの関連付けを確認することが出来ます。
  • #48 最後の作業がプロパティの入力です。 リファレンスを参照しつつ、ショートカットを駆使して記載します。 VPCであれば、CIDR、EC2であれば、AMI IDやインスタンスタイプなどを記載します。 必要であれば、ParamterやMapping、Outputについても、記載します。 例えば、Parameterを使えば、Create Stack時にパラメータを渡すことが出来ます。
  • #49 テンプレートが出来たら、
  • #50 CloudFormationがAWS環境を自動構築してくれます。 私たちのタスクは完了しました。
  • #51 やってやったぜって事です。
  • #52 1からテンプレートを作成する流れ、 Canvasで絵をかき、論理名を変更し、プロパティを入力する事をご説明しました。 Canvasで絵を描くことで、 2点の操作、リソースの作成と関連付けを行いました。 これらの操作を直感的に行えるのは、デザイナーの捗りポイントです。
  • #53 CloudFormationが捗ることをご紹介してきましたが、デメリットもあります。
  • #54 大きいデメリットは、メタデータが入ることだと考えています。 キャンバスでの表示に必要な、サイズや、位置情報がテンプレートに入ってきます。 結果、テンプレートのサイズが大きくなってしまいます。 デザイナーを使っていれば、気になることはほとんどないですが、 デザイナーで作成したテンプレートを、ほかのエディターで開くと邪魔に感じてしまいます。 デメリットか、メリットか判断が難しいものとして、自動整形があります。 改行やインデントが自動ではいります。 誰が書いても同じようなテンプレートが出来上がるメリットがありますがが、気が利かないなと思うことはあります。
  • #55 デザイナー以外の選択肢もあります。 Template Editor for Eclipse は、AWS公式のツールです。公式ツールだけあぅて、機能が豊富です。 普段、Eclipseをお使いのかたは、第1選択肢に入ってくると思います。 また、CloudFormationテンプレートはテキストですので、 普段使いのエディタを使う手もあります。 JSON用のプラグインを入れたり、サードパーティーツールを使う形になるかと思います。
  • #58 やってやったぜって事です。
  • #59 さいごにまとめにはいります。
  • #60 まとめです。 CloudFormationは、環境の複製ができたり、標準構成をつくるなど、便利な機能です。 ただ、行数が増えることで閲覧や編集が難しくなりがちです。 CloudFormationデザイナーは、グラフィカルな画面に加えて ショートカットやバリデーションなどの便利機能があり、捗ります。 デザイナーをお勧めしましたが、CloudFormationテンプレートはあくまでテキストです。 お好きなテキストエディタを使って、捗って頂ければと思います。 デザイナーをはじめたいというかたは、AWSが出しているウォークスルーを試してみてください。 CloudFormationの基本とデザイナーの使い方を習得することができます。 以上で発表を終わらせて頂きます。