・はじめに
私はAWSを資格取得のために勉強はしたが、AWSを弄ったことはほとんどない。だが研修でWSFCをAWS上で構成するに当たり、複数台を同じ構成で作る必要があった。意外と一つ一つ設定して立ち上げてが面倒くさい。これを簡略化できないかと考えたところで、そういえば先日合格したAWS SAAの試験でCloudFormationというものが出てきたということを思い出した。これはどこまで構築してくれるのか。
典型的な頭でっかちを脱却すべく、各AWSサービスを弄ってみようと思う。
・CloudFormationに期待すること
設定さえしておけばAWSのサーバ立ち上げまでをワンクリックでぜんぶやってくれるシステム。
設計図作りもドラッグ&ドロップの直感的なGUIで、AWSでよくある構成図みたいなのを作っていくイメージ。あとは既存のVPCをそのままイメージ化できたりとかして欲しいなぁ。期待大。
・そもそもCloudFormationとは?
AWSのインフラ構成状況の設定を記録しておいてくれるサービス。インフラの構成を一つ一つ手動でやる必要がないということがメリットだ。
人の手だとどうしても選択間違いやロード時間の遅さに起因したイライラ間違い等がおこりやすい。だが、これを使えば簡単な操作でインフラのセットアップを全部やってくれるのだ。
この真価は、「誰がやっても簡単に同じものができる」ということではないだろうか。仕事において「誰がやっても同じクオリティ」「簡単ですぐにできる」「間違いがない」ことは非常に重要なことだ。それらをかなえてくれる。
そして料金体系。以下の通りとなっている。
・作成は無料
・インスタンスの起動ごとに課金
つまり、作成と保存はいくらでもできる(S3等、テンプレートを保存する場所は別途課金)のだ。「あの環境向けにはこのテンプレート」「この環境にはこのバージョン」といった風に、バージョン・タイプをいくらでも作成と保存ができるのは即応性があり、なおかつ誰がやっても間違いがない安全性がある。
・UIはどんな感じか
作成に当たってはJSON / YAMLで記載したテンプレートのほか、ビジュアルで直感的操作ができるGUIもある。やはりあるか、という安心感と期待感が膨らんでくる。これなら私も簡単に作れそうだ。
GUIはドラッグアンドドロップでVPCからインスタンスまで追加できる。しかもCloudFormationにCloudFormationを二重で設定できるようだ。このとき、ドラッグ&ドロップで追加するとテンプレートに勝手に記載されていく。JSON形式とYAML形式で相互変換してくれて、自由に変形可能。
また、既存の構成からCloudFormationに落とし込む、CloudFormerというサービスもある。しかし残念ながらまだBeta版なので注意だ。
・実際に作成してみる
CloudFormationDesignerという機能が、私の求めるGUIベースの作成機能のようだ。ということでとりあえずCloudFormationDesignerを弄ってみる。(・・・・・・JSONとかYAMLとか書くよりとりあえず楽に直感的に作りたい。初見で簡単に作れることを期待)
まずはGUIでEC2を選択してみるが、動かない。
と思ったらどうもサービス名が展開できるようなので、展開してみる。すると、いろいろある。
とりあえず[インスタンス]の[VPC]をD&Dで方眼上に置いてみると、なるほど。よくあるAWSの構成図のようなものができた。
次にEC2インスタンスをD&Dで配置してみた。配置するとVPCとEC2の枠上に、丸い「いかにも接続しますよ」というような矢印が出てくる。ドラッグしてみたが、特に接続できる様子はない。IGW等を設定するのだろうか。と思ったら、どうも配置するだけでいいようだ。
そしてここで疑問が。EC2のインスタンスサイズはどこで設定するのか、である。
どうもここら辺はパラメータを直接書き込んでやらなければならないようだ。残念だが、一番肝心なところを手書きでやらなければいけないということがわかった。
ここまで選択肢からのGUIでよかったと思うし、もしGUIでないにしてもヘルプくらいは一箇所にまとめておいてほしかった。一々[?]マークを押して、ヘルプを参照しに行かなければならないのは手間だ。そしてヘルプを参照しに行った先でも、一覧がズラーッと並んでいて非常に探しづらい。私個人の勝手な予想としては、GUIをクリックすると各プロパティの設定画面があってそこのボックスでプチプチ選択するか書き込んでいけばOKみたいなものを予想していただけに、意外とハードルが高いと感じた。
・気になったこと、感想
これがよい!
-Vaildationチェッカーがあるのでテンプレートの間違っている箇所を自動で判別して確認をかけてくれるので、いざ立ち上げて失敗しましたといった事態が防げる。
また、CloudFormerで最初に作った環境をうまいこと量産できる。ただしβ版機能である。
これが困る!
-一目名前を見てサービスを把握できないと、もしくは知っていないと、迅速にサービスを選べない。細かい分類がどうなっているのかも、コンソールをよくよく触って確認しておくべき。ツリーの分類も特に記載とかメモとか無いので一通り触ってみるとよし。でも分類が分かりづらい。
・ここまでのまとめ
そもそもの求めるものとして、私の考え方が違ったらしい。CloudFormationDesignerは“設定ファイルの大枠を作るもの”であり、CloudFormationは本来JSON/YAMLファイルを自分で書いてそれを使用する機能だ。今回はCloudFormationDesignerにフォーカスしたが、設定ファイルをしっかり書けるよう勉強しなければ。
・参考資料
<AWS CloudFormation>
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html
<AWS CloudFormer(Beta)>
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/cfn-using-cloudformer.html
・次回の目標
JSON/YAMLを書くのはその手の作業の下地が薄いので大変だが、これを乗り越えなければCloudFormationをマスターできないし、ここまで書いて投げ出すわけには行かない。一説によるとテンプレートをマスターするには時間がかかると聞くが、AWSの頭でっかちを脱却すると決めたからにはやるつもりだ。
というわけで次回は実際記入したJSON/YAMLを解説していこうと思う。