AWS CloudFormationを始めるにあたり、最初何から手を付けていいのかわからなかった過去の自分に教えるつもりになって、色々書きたいと思います。
■CloudFormationって何?
「AWSサービスの構築自動化」「Infrastructure as Code」など、GUIからポチポチ操作してAWSサービスを構築するのではなくて、コードを書いて構築しましょう!って感じです。
AWS CloudFormation とは - AWS CloudFormation
■AWS CLIとの違いについて
「構築自動化」って書くと"AWS CLIと何か違うの?"って思われる方も多いと思います。
コードを書いてAWSサービスを構築する、という意味では同じです。
それに、自動化って意味でも同じです。(CLIの場合にはbash/powershellで作りこむことになります。)
では何が違うのかってなると、私が人に説明するときには下記のように伝えています。
優劣をつけられるものではなく、用途に応じて使い分けることになります。
同一環境を複製する場合には、CloudFormationを利用したほうが管理が楽です。
■CloudFormationで使用する言語について
CloudFormationでは、JSONとYAMLが使用できます。
どちらかの言語を使用したことがある方であればそちらを使ってもらえればよいのですが、初めての方はどちらを使用した方が良いのか(=応用が利くのか)というところを気にすると思います。
個人的には、どちらを使っても応用も利くので本当にどちらでもよいのですが、YAMLの方が可読性が高いと思っているため(=コメントを文中に添えられるため)、YAMLを使ってみてください。
■CloudFormationの勉強の仕方について
私がCloudFormationを触り始めたころ、情報をどこから入手するのかで時間がかかってしまうことがあったので、先に参考になるサイトを記載致します。
そのあとに、どういう流れで私が勉強したのかを記載致します。
1.参考サイト
【YAMLについて】
JSON と何が違う?ってところから始める YAML 入門 | 株式会社ビヨンド
【JSONについて】
非エンジニアに贈る「具体例でさらっと学ぶJSON」 | Developers.IO
【YAMLとJSON比較】
JSON, YAML, ini, TOML ざっくり比較 · GitHub
【AWS Blackbelt】
[AWS Black Belt Online Seminar] AWS CloudFormation アップデート 資料及び QA 公開 | Amazon Web Services ブログ
【AWSリソースおよびプロパティタイプのリファレンス】
AWS リソースおよびプロパティタイプのリファレンス - AWS CloudFormation
【テンプレート】
テンプレートの分析 - AWS CloudFormation
【サンプルシナリオ】
テンプレートスニペット - AWS CloudFormation
2.勉強の流れ
2-1.Blackbeltで概要を掴む
上記【AWS Blackbelt】でCloudFormationの概要を掴みます。
※ここでは、まずは一読してみることをお勧めします。
2-2.YAMLもしくはJSONの概要を掴む
上記【YAMLについて】【JSONについて】【YAMLとJSON比較】で概要を掴みます。
※どんな感じの構文なのかがわかれば大丈夫です。
(詳細な書式まで学習しようとすると、それはそれで時間がかかりますので・・・)
2-3.テンプレートを実際に作成してみる
テキストエディタ(メモ帳、さくら、秀丸、等)で実際にテンプレートを作成してみます。この時、難しいテンプレートを作成するのではなく、簡単なものから作成します。
参考サイト:
【CloudFormation入門】5分と6行で始めるAWS CloudFormationテンプレートによるインフラ構築 | Developers.IO
2-4.リファレンスに書いてある内容を確認する
上記【AWSリソースおよびプロパティタイプのリファレンス】を開き、例えばVPCの記載を確認してみます。
AWS::EC2::VPC - AWS CloudFormation
これにより書式の理解が進むかと思います。一つわかれば、後はどのAWSサービスを使用してもメジャーなものについては大差ないです。
以上です。CloudFormationを始める方のとっかかりになれば幸いです。