AWS CloudFormation

AWS CloudFormation

AWS CloudFormationとは

AWS CloudFormationとはプログラミング言語やテキストファイルを使用してAWSリソースを自動で構築するサービスです。 AWS環境をテンプレート化しておくことで、同じ環境を作成する時間を削減することができます。

Sys Opsアドミニストレータの資格を取得するにあたって必ずと言っていいほど問われます。
(個人的にはAWS CloudFormationよりもTeraFormを使用した方がよいと思っています)

ですが、AWSの試験なので仕方なく勉強していこうと思います。

概要

AWS CloudFormationは、コードによちAWSリソースの構築をおこなうためのサービスです。コード化されることによりリソース構築を自動化でき人為的なミスも極小化できます。また、インフラリソースが git 管理可能になり、チームでの作業や変更の追跡も容易となります。
このようなインフラのコード化はInfrastructure as Code(IaC) として近年普及しており、様々なサードパーティのツールサービスが登場しています。クラウドフォーメーションは AWS が提供する純正の IaC ツールと言えます。

CloudFormationの作成と管理

テンプレート:リソースを定義するファイルです。YAMLまたはJSONで記述できます。

要素概要
ParametersCloudFormationの利用者が指定したい値を定義できます。外部APIの接続先URLなど変数化したい値に設定できます。一方で、DBのパスワードなどのセキュアな情報には利用っすべきではありません。
Resources必須の属性です。作成するリソースやリソースごとのプロパティ情報を木佐氏します。例えば、EC2をt3.mediumで起動する、といった情報が記載されます。
Conditionsリソースを作成するための何らかの条件を記載できます。例えば、本番環境・開発環境の区別のためParametersで「EnvironmentType」という変数を指定し、この値が「Prod」(本番)だったら李祖s-スを作成する、といった動きが可能です。
Transformテンプレートの処理に利用するマクロを定義します
Outputsスタックの構築後に出力したい情報を定義します。EC2インスタンスに自動で割り当てられたIPアドレスなど、構築後に初めてわかる情報を確認するために利用できます。

スタック:テンプレートファイルから作成されるリソースの集合です。これをもとに、実際にAWSリソースが構築されます。たとえば、VPC、EC2、ELBといった複数のリソースを集合として定義すると、っそれらが一括で構築されます。なた削除も一括で行うことが可能です。

変更セット:CloudFormationの実行により影響を受けるリソースを事前に確認することができる機能です。これにより、予想していなかったリソースの変更点に気づくことができます。

ドリフト:CloudFormationから作成したリソースも、コンソールなどから手作業で変更されることがあるかもしれません。この場合には、スタックと実際のリソースに差分が生じることになります。この差分をドリフトと呼びますが、CloudFormationではドリフトを検出する機能があります。これにより、テンプレート以外からの変更がないかの確認が行えます。

実際にCloud Formationを使ってVPCだけデプロイしてみる

yamlファイルの作成

yamlファイルに下記内容を記載する。

create_vpc.yaml

AWSTemplateFormatVersion: ‘2010-09-09’
Resources:
FirstVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 172.16.1.0/24

スタックの作成

WebコンソールからAWS CloudFormationを開きます。

スタックを作成する

テンプレートファイルをアップロードする

スタックの詳細を指定

スタックオプションの設定

実施結果

VPCの作成に成功した。

最後に

VPCだけ作ってみましたが、今度EC2のデプロイなどもやってみようと思います。