みなさんこんにちは。
私の所属する課では業務でCloudFormationテンプレート自体を作成することはあまりないのですが、AWS SysOps Administrator - Associate試験の範囲だったため実際にテンプレートを作成して動作確認をしてみました。
CloudFormationの基本
CloudFormationの基本的なところは下記に記載されていますので、こちらを参考にテンプレートを作成します。
CloudFormationを実行してみた
CloudFormationテンプレートの作成
作成したテンプレートがこちら。 今回は単純なCloudFormationの動作確認のため、あえて簡易的な構成にしました。
AWSTemplateFormatVersion: '2010-09-09' Description: KENSHO Template for VPC Resources: VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/22 EnableDnsHostnames: true EnableDnsSupport: true Tags: - Key: Name Value: vpc-kensho SubnetPublic01: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: ap-northeast-1a CidrBlock: 10.0.0.0/24 Tags: - Key: Name Value: subnet-public
CloudFormationの実行
1.CloudFormationの管理画面から新しいリソースを使用したスタックの作成をおこないます。
2.テンプレートファイルのアップロードを選択し、テンプレートファイルをアップロードして次へをクリックします
※テンプレートファイルは前項のものをテキストファイルに保存(test.yaml)したものを使用しました
3.スタックの名前を入力し次へをクリックします
4.スタックオプションの設定はデフォルト値で次へをクリックします
5.設定した値に間違いがないか確認し、スタックの作成をクリックします。
6.イベントのステータスのところに進捗状況が表示されますので、完了までしばらく待ちます。
7.CREATE_COMPLETEと表示されればスタックの実行は正常に終了しています。
8.実際に意図した通りリソースが作成されていることを確認します。
CloudFormationを更新してみた
CloudFormationを更新する場合は、スタックの更新または変更セットを用いてスタックを変更します。
更新を実行することで、変更されたテンプレートをすばやく適用することができます。更新をかけることでリソースが削除されたり置き換えられたりする場合がありますが、 更新をおこなうことでどのようなリソースに影響を与えるか事前に確認する場合は、変更セットを用いたスタックの更新をおこないます。
変更セットの詳細については公式ドキュメントをご参照ください。 docs.aws.amazon.com
CloudFormation更新用テンプレートの準備
サブネットを追加したテンプレートがこちら。
AWSTemplateFormatVersion: '2010-09-09' Description: KENSHO Template for VPC Resources: VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/22 EnableDnsHostnames: true EnableDnsSupport: true Tags: - Key: Name Value: vpc-kensho SubnetPublic01: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: ap-northeast-1a CidrBlock: 10.0.0.0/24 Tags: - Key: Name Value: subnet-public SubnetPublic02: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC AvailabilityZone: ap-northeast-1a CidrBlock: 10.0.1.0/24 Tags: - Key: Name Value: subnet-private
CloudFormationの更新
1.対象のスタックを選択し更新をクリックします。
2.既存テンプレートを置き換えるを選択し、テンプレートファイルをアップロードしたら次へをクリックします。
3.次へをクリックします。
4.デフォルト値のまま次へをクリックします。
5.内容を確認してスタックの更新をクリックします。
6.アップデートが終わるまでしばらく待ちます。
7.アップデートが完了したことを確認します。
8.実際に意図した通りリソースが更新されていることを確認します。
手動更新したリソースの差分を確認
手動更新したリソースとテンプレートの差分を確認する場合はドリフトを使用します。
今回は実験のため、CloudFormationで作成したリソースに簡単な変更を適用してみました。
1.変更した内容をCloudFormationテンプレートに反映するために、ドリフトの検出をクリックします。
2.変更があった箇所は MODIFIED として表示されました。
3.ドリフトの詳細を表示をクリックすると検出結果が表示されます。
その他
スタック作成に失敗したときの対策
スタック作成の際にスタックの失敗オプションを指定することができ、デフォルトでは「すべてのスタックリソースをロールバックする」設定になっています。
本番環境でスタックの更新中にロールバックしてしまうと問題になるケースもあるかと思いますので、本番環境を更新する際はこのあたりの設定に注意が必要です。
一緒に設定しておきたい項目
スタックの作成に時間がかかる場合は、通知オプションを有効にしておくことで、メールなどで状況を把握することができるようです。
スタック作成後にオペレーションミスなどによって間違ってCloudFormationスタックを削除しないように削除保護をかけることができます。
総括
AWS公式ドキュメントだけではわかりにくかったところが、実際に試してみることでより理解が深まりました。 CloudFormationを使用することでオペレーションミスなく同じインフラ環境を簡単にデプロイでき、実際の本番でも使う機会が多い技術だと思います。
これを機にCloudFormationの理解をもっと深めていきたいです。