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で記述できます。
要素 | 概要 |
---|---|
Parameters | CloudFormationの利用者が指定したい値を定義できます。外部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のデプロイなどもやってみようと思います。
-
前の記事
ELBとEC2で負荷分散してみる 2023.01.14
-
次の記事
AWS Lambda で Slack に通知するハンズオン 2023.02.03