【AWS基本の”キ”:vol4】CloudFormationでVPCを作成してみる

AWS CloudFormationは、インフラストラクチャをコードで管理できる便利なツールです。この記事では、CloudFormationを使ってシンプルなVPCを作成する方法を解説します。

具体的には、VPC、サブネット、インターネットゲートウェイを含む基本的なネットワーク構成を構築します。

CloudFormationとは?

CloudFormationは、JSONまたはYAML形式で記述されたテンプレートを使って、AWSリソースを自動的にデプロイおよび管理できるサービスです。手動操作を削減し、一貫性のあるインフラ構築が可能になります。

作成するリソース

今回作成するテンプレートでは、以下のリソースを定義します:

  • VPC
  • パブリックサブネット
  • インターネットゲートウェイ
  • ルートテーブルとルート

サンプルテンプレート

以下はYAML形式のCloudFormationテンプレートの例です。

AWSTemplateFormatVersion: "2010-09-09"
Description: "Sample VPC with a public subnet and internet access"

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

  PublicSubnet:
    Type: "AWS::EC2::Subnet"
    Properties:
      VpcId: !Ref MyVPC
      CidrBlock: "10.0.1.0/24"
      MapPublicIpOnLaunch: true
      AvailabilityZone: !Select [ 0, !GetAZs "" ]
      Tags:
        - Key: "Name"
          Value: "PublicSubnet"

  InternetGateway:
    Type: "AWS::EC2::InternetGateway"
    Properties:
      Tags:
        - Key: "Name"
          Value: "MyInternetGateway"

  AttachGateway:
    Type: "AWS::EC2::VPCGatewayAttachment"
    Properties:
      VpcId: !Ref MyVPC
      InternetGatewayId: !Ref InternetGateway

  PublicRouteTable:
    Type: "AWS::EC2::RouteTable"
    Properties:
      VpcId: !Ref MyVPC
      Tags:
        - Key: "Name"
          Value: "PublicRouteTable"

  PublicRoute:
    Type: "AWS::EC2::Route"
    Properties:
      RouteTableId: !Ref PublicRouteTable
      DestinationCidrBlock: "0.0.0.0/0"
      GatewayId: !Ref InternetGateway

  SubnetRouteTableAssociation:
    Type: "AWS::EC2::SubnetRouteTableAssociation"
    Properties:
      SubnetId: !Ref PublicSubnet
      RouteTableId: !Ref PublicRouteTable

Outputs:
  VpcId:
    Description: "VPC ID"
    Value: !Ref MyVPC
  PublicSubnetId:
    Description: "Public Subnet ID"
    Value: !Ref PublicSubnet

テンプレートのデプロイ方法

  1. CloudFormationコンソールを開く
    • AWSマネジメントコンソールでCloudFormationサービスを選択します。
  2. 新しいスタックを作成
    • 「スタックの作成」をクリックし、「テンプレートファイルをアップロード」を選択します。
  1. テンプレートファイルを選択
    • 上記のテンプレートをファイルとして保存し、アップロードします。

今回は”VPCSampleTemplate.yaml”という名前のファイルでテンプレートを作成してアップロードしました。

  1. スタック設定を入力
    • スタック名を入力します(例: MySampleVPCStack)。
  1. スタックの作成を完了
    • “次へ”を何回かクリックし、”確認して作成”のステップで”送信”をクリックすると、数分でリソースがデプロイされます。

確認して作成の画面まで来たら、画面の一番下までスクロールする。

論理IDが作成したスタック名、ステータスが”CREATE_COMPLETE”となれば作成が完了です。

確認と後片付け

作成されたVPCやサブネットは、VPCダッシュボードの「仮想プライベートクラウド」セクションで確認できます。実際にコンソール画面から確認してみましょう。

  • VPC
  • パブリックサブネット
  • インターネットゲートウェイ
  • ルートテーブルとルート

ちゃんと全てのリソースが作成されていました!

不要になったリソースは、CloudFormationスタックを削除することで簡単にクリーンアップできます。

ステータスのフィルターを”削除済み”に設定して、ステータスが”DELETE_COMPLETE”になっていれば正常に削除が完了しています。

まとめ

CloudFormationを使えば、手動で複数のリソースを作成する手間を省き、一貫性のあるインフラ構築が可能です。今回のテンプレートをもとに、より複雑な構成や追加機能を実装してみてはいかがでしょうか?

コメント

タイトルとURLをコピーしました