CloudFormationとは?
CloudFormationとは、Infrastructure as Codeを実現する為に、AWSが提供するマネージドサービスです。 私が運用保守をやっていた頃、サーバ構築といえば、仮想マシンを立ち上げて、OSをインストールして、ミドルウェアを設定する、というイメージでした。 CloudFormationは、これらの設定を全てコードで記述し、実行するだけでリソースを構築できます。
案ずるより産むが易し、という事で、サンプルコードで体験してみましょう!
CloudFormationハンズオン
注意事項
CloudFormation自体に課金はありませんが、CFnで立ち上がるEC2インスタンスは課金されます。 本ハンズオンを実施した方は、作成したスタックを必ず削除して下さい。
事前準備
- ・立ち上げるインスタンスのAMI IDを控える
- – 東京リージョンでの例: ami-08a8688fb7eacb171 (2022/02執筆時点)
本手順
-
テンプレート保存 「sample.yaml」というファイルを作成し、以下の内容をコピーペーストし保存
AWSTemplateFormatVersion: 2010-09-09Parameters: ImageId: Type: AWS::EC2::Image::Id KeyName: Type: AWS::EC2::KeyPair::KeyName SecurityGroupId: Type: AWS::EC2::SecurityGroup::Id SubnetId: Type: AWS::EC2::Subnet::Id Resources: EC2Instance: Type: ‘AWS::EC2::Instance’ Properties: ImageId: !Ref ImageId InstanceType: “t2.micro” KeyName: !Ref KeyName NetworkInterfaces: DeleteOnTermination: ‘true’ Description: Primary network interface DeviceIndex: 0 AssociatePublicIpAddress: ‘false’ SubnetId: Ref SubnetId GroupSet: – !Ref SecurityGroupId BlockDeviceMappings: – DeviceName: ‘/dev/xvda’ Ebs: DeleteOnTermination: ‘true’
-
CloudFormationコンソールにて、スタックの作成を押下
- スタックの作成にて、以下を選択し次へ
- ・前提条件: 「テンプレートの準備完了」
- ・テンプレートの指定: 「テンプレートファイルのアップロード」
- ・「ファイルの選択」: 最初に保存した「sample.yaml」を選択
- スタックの詳細を設定にて、以下を設定し次へ
- ・スタックの名前: 任意
- ・パラメータ
- – ImageId: 事前準備で控えたAMI ID
- – KeyName: プルダウンより任意のものを選択ト
- – SecurityGroupId: プルダウンより任意のものを選択
- – SubnetId: プルダウンより任意のものを選択
- オプションの設定は何も設定せず次へ
- レビューは何も設定せず、スタックの作成を押下
- ・テンプレートのプロビジョニングが始まる
- スタックのステータスが「CREATE_COMPLETE」になったら完了
- ・EC2コンソールを確認すると、インスタンスが1台立ち上がっている筈です
- ・削除する際は、作成したスタックを選択して削除を押下
以上でハンズオンは終了です。 私が初めてCloudFormationでサーバを構築した時、あまりの手軽さにとても感動した事を覚えています。
ユースケース
CloudFormation(というか、Infrastructure as Code)の最大の特徴は、再現性にあります。
要は、何度実行しても同じものを作成できるという事です。
この特徴を活かして、以下の様に利用される事が多いです。
- ・検証 / 本番環境のテンプレート管理
- ・検証環境のスクラップ & ビルド
- ・バックアップ & リストア
弊社システムの基盤構築でも1枚のテンプレートで検証・本番環境を作成・管理しているものがあります。
終わりに
今回はCloudFormationの特徴を簡単にご紹介しました。
自分の作ったコードが思い通りに動くのって楽しいですよね。
次回は第一回でご紹介した事例のテンプレートを作成し、記述する際のポイントまでご紹介する予定です(字数的にどうなるか……)
ここまでお読み下さり、有難うございました。
参考
- ・AWS公式ドキュメント – CloudFormation EC2作成
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html