presents by IT Consulting 109

AWS – CloudFormationで環境構築 ルートテーブル編

概要

CloudFormation を利用した環境構築について連載3回目。

第1回 VPC編
第2回 サブネット編

本章「ルートテーブル」編では以下の環境について構築を行います。
・ルーテーブルを作成
・パブリック用とプライベート用のルートを作成
・パブリック用ルートに作成したインターネットゲートウェイを追加
・各ルートに作成したサブネットを設定

 

イメージ図

それでは実際にコードを確認しながら説明していきます。

 

コード

AWSTemplateFormatVersion: 2010-09-09
Description: Creation of Route Table and Set Subnet Range.

Parameters:
  VPC:
    Type: String
    Default: vpc
    Description: Set stack output value

  INTERNETGATEWAY:
    Type: String
    Default: igw
    Description: Set stack output value

  TAGpublic:
    Type: String
    Default: public
    Description: Please set a name

  TAGprivate:
    Type: String
    Default: private
    Description: Please set a name

  SUBNETCIDRpublicAZa:
    Type: String
    Default: subnet-public-apne1a
    Description: Set stack output value

  SUBNETCIDRpublicAZc:
    Type: String
    Default: subnet-public-apne1c
    Description: Set stack output value

  SUBNETCIDRprivateAZa:
    Type: String
    Default: subnet-private-apne1a
    Description: Set stack output value

  SUBNETCIDRprivateAZc:
    Type: String
    Default: subnet-private-apne1c
    Description: Set stack output value


Resources:
  ROUTETABLEpublic:
    DeletionPolicy: Delete
    Type: 'AWS::EC2::RouteTable'
    Properties:
      VpcId: !ImportValue
        'Fn::Sub': '${VPC}'
      Tags:
        - Key: Name
          Value:
            Fn::Sub: rtb-${TAGpublic}

  ROUTETABLEprivate:
    DeletionPolicy: Retain
    Type: 'AWS::EC2::RouteTable'
    Properties:
      VpcId: !ImportValue
        'Fn::Sub': '${VPC}'
      Tags:
        - Key: Name
          Value:
            Fn::Sub: rtb-${TAGprivate}

  ROUTE:
    DeletionPolicy: Delete
    Type: 'AWS::EC2::Route'
    Properties:
      RouteTableId: !Ref ROUTETABLEpublic
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !ImportValue 
        'Fn::Sub': '${INTERNETGATEWAY}'

  ASSOCIATIONpublicAZa:
    DeletionPolicy: Delete
    Type: 'AWS::EC2::SubnetRouteTableAssociation'
    Properties:
      RouteTableId: !Ref ROUTETABLEpublic
      SubnetId: !ImportValue 
        'Fn::Sub': '${SUBNETCIDRpublicAZa}'

  ASSOCIATIONpublicAZc:
    DeletionPolicy: Delete
    Type: 'AWS::EC2::SubnetRouteTableAssociation'
    Properties:
      RouteTableId: !Ref ROUTETABLEpublic
      SubnetId: !ImportValue 
        'Fn::Sub': '${SUBNETCIDRpublicAZc}'

  ASSOCIATIONprivateAZa:
    DeletionPolicy: Delete
    Type: 'AWS::EC2::SubnetRouteTableAssociation'
    Properties:
      RouteTableId: !Ref ROUTETABLEprivate
      SubnetId: !ImportValue 
        'Fn::Sub': '${SUBNETCIDRprivateAZa}'

  ASSOCIATIONprivateAZc:
    DeletionPolicy: Delete
    Type: 'AWS::EC2::SubnetRouteTableAssociation'
    Properties:
      RouteTableId: !Ref ROUTETABLEprivate
      SubnetId: !ImportValue 
        'Fn::Sub': '${SUBNETCIDRprivateAZc}'
Type: 'AWS::EC2::RouteTable'

ルートテーブルを作成

Type: 'AWS::EC2::RouteTable'

ルートテーブルにルートを作成

Type: 'AWS::EC2::SubnetRouteTableAssociation'

ルートにサブネットを設定

VpcId: !ImportValue 
'Fn::Sub': '${VPC}'

別スタックで作成したVPCを参照

SubnetId: !ImportValue 
  'Fn::Sub': '${SUBNETCIDRprivateAZa}'

別スタックで作成したサブネットを参照
※例:プライベートサブネットのゾーンAを参照

 

補足

AWS CloudFormationテンプレートリファレンス
AWS::EC2::RouteTable

この記事を書いた人
名前:TRUE's。 千葉県育ち、神奈川県在住のIT系フリーエンジニア。 IT系のナレッジサイトを不定期で更新中。 フォトグラファー兼エンジニアとして日々勤しんでいる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です