0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

0.5から始めるAWS CloudFormation #0.5シリーズ第1回

Posted at

この記事は、「0.5から始めるシリーズ」です。AWSを久々に触る筆者が技術的なアレコレを思い出すための旅路を共有します。

今回は、AWS CloudFormationです。


初めまして、なんどです。

業務でクラウドを扱っていますが、直近1年間はAzureを扱っており、AWSは3年ほど触っていませんでした。
忘れていることも多いため、扱っていた技術を思い出していく過程が何か皆さんのお役に立てたら、と思い始めました。

CloudFormationとは

ざっくり言うと、VPCやEC2といったAWSリソースをコード管理するためのサービスです。

まったく同じインフラ環境を、CloudFormationを使用して複数環境で作成したり、東京リージョンのリージョン障害発生時に大阪リージョンで再構築したり...といった要望の実現が可能です。

早速使ってみる

まずはAWSコンソールにログインし、検索バーで「CFN」と入力します。
CloudFormationが表示されたのでクリックします。

WS000000.JPG

CloudFormationの画面に遷移しました。
「スタックなし」と表示されています。
WS000001.JPG

スタックとは

CloudFormationでは、「スタック」という単位でAWSリソースを管理します。
このスタックを削除すると、それに紐づくAWSリソースがすべて削除されます。

例えば、「スタックA」にVPC・サブネットを作成し、「スタックB」にスタックAで作成したサブネット内にEC2・ALBを作成します。
この状態で「スタックB」を削除した場合、EC2・ALBは削除されますが、VPC・サブネットは削除されません。

テンプレートとは

CloudFormationでリソースを作成するには、テンプレートを記載する必要があります。
テンプレートとは、こういう設定でリソースを作成してください、という指示をCloudFormationに出すためのコードのようなものです。

テンプレートは、JSON/YAMLの二種類の形式で記載可能です。
いずれも同じ機能が実現できるため、特に理由がない限りは可読性の高いYAMLを推奨します。

スタックとテンプレートは1対多の関係性です。
VPC・サブネット・EC2を1つのスタックで作成する場合、1つのテンプレート内にこれらを作成する旨を記載します。
一度作成したテンプレートは、他のスタックに使い回すことが可能です。

テンプレート作成

それではテンプレートを作成してみます。
ゼロから書いてみてもいいですが、今時はAIに聞けば一発で教えてくれます。
まずは最も基本的な、VPCを作るテンプレートを出力してもらいましょう。

001-vpc.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: Create a single VPC

Resources:
  MyVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: Name
          Value: MyVPC

極めて簡易的なテンプレートを出力してもらいました。
「CIDRを10.0.0./16」「DNS解決を有効」「DNSホスト名を有効」のみ記載してあります。
他の設定値は、明示的に記載しない場合デフォルト値で作成されます。

それぞれのセクションについて解説します。

AWSTemplateFormatVersion:

CloudFormationのバージョンを指定するセクションです。
現在は「'2010-09-09'」固定のため特に考慮する必要はありません。

Description:

テンプレートの説明をここに記載します。管理者、利用者向けのメッセージで、動作には影響しません。

Resources:

実際にAWS上に作成されるリソースをResources配下で定義します。
このテンプレートの場合、MyVPCでどのようなVPCを作成するか、を記載します。
他にも例えば同じテンプレート内でサブネットを作成したい場合、MySubnetのようなものをテンプレート末尾に追加し、その配下に設定値を記載していきます。この際、MySubnetMyVPCとインデントを揃えてあげる必要があります。

他にもさまざまな要素はありますが、最低限これだけあればVPCの作成が可能です。

スタック作成

それでは先ほど用意したテンプレートを使用してスタックを作成してみます。
[スタックの作成] > [新しいリソースを使用(標準)]を選択します。
(リソースをインポート)はいったん気にしないでください。

WS000002.JPG

「前提条件」では[既存のテンプレートを選択]、「テンプレートの指定」では[テンプレートファイルのアップロード]を選択します。
先ほど作成したテンプレートファイルをここにアップロードしましょう。

WS000003.JPG

続いて、スタックの詳細を指定します。
今回は最小構成のため、スタック名くらいしか入力項目がありません。
試しに001-vpcと入力したところ、 「スタック名には頭文字に数字は使えないよ」 と怒られてしまいました。
そうだったっけ...
WS000004.JPG

仕方なく、名前をvpc-001に変更しました。

WS000005.JPG

その後の画面で、何やら珍妙な設定値が様々ありますが、一旦気にせず送信をしてみましょう。
送信後、出来上がったスタックの「イベント」タブで、ステータスが「CREATE_COMPLETE」となっていればテンプレートで記載したリソースの作成は完了です。

WS000008.JPG

「リソース」タブに移動し、作成されたリソースを見てみましょう。
今回はVPCのみなので、MyVPCの物理IDを選択します。

WS000009.JPG

テンプレートで指定した設定値でVPCが作成されていることが確認できます。

WS000010.JPG

さいごに

ここまででCloudFormationのさわりは終了です。
次回は、テンプレートをより実務で使いやすい形にアレンジしてみようと思います。

最後までご覧いただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?