share facebook facebook facebook twitter twitter menu hatena pocket slack

2021.09.10 FRI

CloudFormationのスタックに全部ふりがな振ってみた

笹崎日登

WRITTEN BY 笹崎日登

CloudFormationのスタックを書いていて、自分が何書いてるんだかわからなくなったことがあったので、
「ふりがな振ってみるとわかりやすくなるんじゃね?」
と思って早速、書き込んでみました。
自分で見るとわかりやすくなったのでこれで良しとします(;´∀`)

コンソールパラメーター

作法 考えるな 感じろ
AWSTemplateFormatVersion: "2010-09-09"
何作るか紹介するね
Description:
  VPCとサブネット作るよ
  VPC and Subnet Create



コンソール上で決める詳細情報だよ
Metadata: 
 コンソールで表示させる入力パラメーターの表示順序決めるよ
  "AWS::CloudFormation::Interface": 
  パラメーターの一覧だよ
    ParameterGroups: 
     項目欄(ラベル)
      - Label: 
        項目で実際に表示される文字 この場合Project Name Prefixと表示されるよ
        default: "Project Name Prefix
        パラメーター
        Parameters: 
       PJPrefixが書かれたスタックはみんな仲間 クロススタックするとき便利だよ!
          - PJPrefix



コンソールで入力するパラメーターだよ
Parameters:
 さっきの呪文はここで入力できるよ
  PJPrefix:
  指定 文字で入力してね(ここではhogeとします)
    Type: String

↑どれの事?↑

スタック作る時にパラメーターとか決められるんだけど、そこの設定を決めています。
画像と照らし合わせてみるとイメージしやすいかも!

VPCとインターネットゲートウェイの設定

スタックの設定だよ
Resources: 
 VPCの設定決めるよ!
  VPC: 
  タイプ 指定したCIDRブロックでVPCを設定するよ
    Type: "AWS::EC2::VPC"
   情報
    Properties:
      CIDRブロック
      CidrBlock: 10.0.0.0/16
     VPCへのDNS解決   有効
      EnableDnsSupport: "true"
      VPCへのDNS名前解決  有効 ※DNS解決が有効になっていないと名前解決を有効にできないよ!
      EnableDnsHostnames: "true"
     テナント属性決めるよ デフォルトだと共有ハードウェアになるよ。
      InstanceTenancy: default
      タグ
      Tags: 
      キー Name
        - Key: Name
       値   事前に定義した変数(序盤のhoge)を!Subで呼べるよ。つまり"hoge-vpc"ってなるよ!
          Value: !Sub "${PJPrefix}-vpc"



  インターネットゲートウェイの設定だよ
  InternetGateway: 
    タイプ インターネットゲートウェイ
    Type: "AWS::EC2::InternetGateway"
    情報
    Properties: 
      タグ
      Tags: 
          キー Name
        - Key: Name
          値   事前に定義した変数(序盤のhoge)を!Subで呼べるよ。つまり"hoge-igw"ってなるよ!
          Value: !Sub "${PJPrefix}-igw"


  VPCにインターネットゲートウェイをアタッチするよ!
  InternetGatewayAttachment: 
    タイプ VPCにゲートウェイをアタッチするよ
    Type: "AWS::EC2::VPCGatewayAttachment"
    情報
    Properties: 
      インターネットゲートウェイのID このRef関数はInternetGatewayの設定を持ってきてくれるよ!
      InternetGatewayId: !Ref InternetGateway
      VPCのID このRef関数はVPCの設定を持ってきてくれるよ!
      VpcId: !Ref VPC 

パブリックサブネットとプライベートサブネットの設定

 パブリックサブネットAの設定だよ
  PublicSubnetA: 
    タイプ サブネット
    Type: "AWS::EC2::Subnet"
    詳細
    Properties: 
      アベイラビリティゾーン 
      AvailabilityZone: "ap-northeast-1a"
      CIDRブロック
      CidrBlock: 10.0.0.0/24
      VPCのID Ref関数は指定した値を返してくれるよ(この場合はVPCの設定を持ってきてくれるよ)
      VpcId: !Ref VPC 
      タグ
      Tags: 
          キー Name
        - Key: Name
          値   事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-public-subnet-a"ってなるよ!
          Value: !Sub "${PJPrefix}-public-subnet-a"



  パブリックサブネットCの設定だよ
  PublicSubnetC: 
    タイプ サブネット
    Type: "AWS::EC2::Subnet"
    詳細
    Properties: 
      アベイラビリティゾーン 
      AvailabilityZone: "ap-northeast-1c"
      CIDRブロック
      CidrBlock: 10.0.2.0/24
      VPCのID Ref関数は指定した値を返してくれるよ(この場合はVPCの設定を持ってきてくれるよ)
      VpcId: !Ref VPC 
      タグ
      Tags: 
          キー Name
        - Key: Name
          値 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-public-subnet-c"ってなるよ!
          Value: !Sub "${PJPrefix}-public-subnet-c"



  プライベートサブネットAの設定だよ
  PrivateSubnetA: 
    タイプ サブネット
    Type: "AWS::EC2::Subnet"
    詳細
    Properties: 
     アベイラビリティゾーン
      AvailabilityZone: "ap-northeast-1a"
      CIDRブロック
      CidrBlock: 10.0.1.0/24
      VPCのID Ref関数は指定した値を返してくれるよ(この場合はVPCの設定を持ってきてくれるよ)
      VpcId: !Ref VPC 
      タグ
      Tags:
          キー Name 
        - Key: Name
          値 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-private-subnet-a"ってなるよ!
          Value: !Sub "${PJPrefix}-private-subnet-a"



  プライベートサブネットCの設定だよ
  PrivateSubnetC: 
    タイプ サブネット
    Type: "AWS::EC2::Subnet"
    詳細
    Properties:
      アベイラビリティゾーン 
      AvailabilityZone: "ap-northeast-1c"
      CIDRブロック
      CidrBlock: 10.0.3.0/24
      VPCのID Ref関数は指定した値を返してくれるよ(この場合はVPCの設定を持ってきてくれるよ)
      VpcId: !Ref VPC 
      タグ
      Tags:
          キー Name 
        - Key: Name
          値 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-private-subnet-c"ってなるよ!
          Value: !Sub "${PJPrefix}-private-subnet-c"

ルートテーブルの設定

  パブリックルートテーブルAの設定だよ
  PublicRouteTableA: 
    タイプ ルートテーブル
    Type: "AWS::EC2::RouteTable"
    詳細
    Properties:
      VPCのID  Ref関数は指定した値を返してくれるよ(この場合はVPCの設定を持ってきてくれるよ)
      VpcId: !Ref VPC 
      タグ
      Tags:
          キー Name 
        - Key: Name
          値 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-public-route-a"ってなるよ!
          Value: !Sub "${PJPrefix}-public-route-a"



  パブリックルートテーブルCの設定だよ
  PublicRouteTableC: 
    タイプ ルートテーブル
    Type: "AWS::EC2::RouteTable"
    詳細
    Properties:
      VPCのID  Ref関数は指定した値を返してくれるよ(この場合はVPCの設定を持ってきてくれるよ)
      VpcId: !Ref VPC 
      タグ
      Tags:
          キー Name 
        - Key: Name
          値 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-public-route-c"ってなるよ!
          Value: !Sub "${PJPrefix}-public-route-c"



  プライベートルートテーブルAの設定だよ
  PrivateRouteTableA: 
    タイプ ルートテーブル
    Type: "AWS::EC2::RouteTable"
    詳細
    Properties:
      VPCのID Ref関数は指定した値を返してくれるよ(この場合はVPCの設定を持ってきてくれるよ)
      VpcId: !Ref VPC 
      タグ
      Tags:
          キー Name 
        - Key: Name
          値 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-private-route-a"ってなるよ!
          Value: !Sub "${PJPrefix}-private-route-a"



  プライベートルートテーブルCの設定だよ
  PrivateRouteTableC: 
    タイプ ルートテーブル
    Type: "AWS::EC2::RouteTable"
    詳細
    Properties:
      VPCのID Ref関数は指定した値を返してくれるよ(この場合はVPCの設定を持ってきてくれるよ)
      VpcId: !Ref VPC 
      タグ
      Tags:
          キー Name 
        - Key: Name
          値 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-private-route-c"ってなるよ!
          Value: !Sub "${PJPrefix}-private-route-c"

インターネットゲートウェイのルーティング設定

  パブリックルートA
  PublicRouteA: 
    タイプ ルート
    Type: "AWS::EC2::Route"
    詳細
    Properties:
      ルートテーブルのID  Ref関数は指定した値を返してくれるよ(この場合はPublicRouteTableAの設定を持ってきてくれるよ)
      RouteTableId: !Ref PublicRouteTableA 
      送信先のCIDRブロック
      DestinationCidrBlock: "0.0.0.0/0"
      ゲートウェイID Ref関数は指定した値を返してくれるよ(この場合はInternetGatewayの設定を持ってきてくれるよ)
      GatewayId: !Ref InternetGateway 



 パブリックルートC
  PublicRouteC: 
    タイプ ルート
    Type: "AWS::EC2::Route"
    詳細
    Properties:
      ルートテーブルのID  Ref関数は指定した値を返してくれるよ(この場合はPublicRouteTableCの設定を持ってきてくれるよ)
      RouteTableId: !Ref PublicRouteTableC 
      送信先のCIDRブロック
      DestinationCidrBlock: "0.0.0.0/0"
      ゲートウェイID Ref関数は指定した値を返してくれるよ(この場合はInternetGatewayの設定を持ってきてくれるよ)
      GatewayId: !Ref InternetGateway 

ルートテーブルの関連付け

  パブリックサブネットAのルートテーブル関連付け
  PublicSubnetARouteTableAssociation: 
    タイプ サブネットをルートテーブルに関連付ける
    Type: "AWS::EC2::SubnetRouteTableAssociation"
    詳細
    Properties: 
      サブネットのID Ref関数は指定した値を返してくれるよ(この場合はPublicSubnetAの設定を持ってきてくれるよ)
      SubnetId: !Ref PublicSubnetA 
      ルートテーブルのID Ref関数は指定した値を返してくれるよ(この場合はPublicRouteTableAの設定を持ってきてくれるよ)
      RouteTableId: !Ref PublicRouteTableA



  パブリックサブネットCのルートテーブル関連付け
  PublicSubnetCRouteTableAssociation: 
    タイプ サブネットをルートテーブルに関連付ける
    Type: "AWS::EC2::SubnetRouteTableAssociation"
    詳細
    Properties:
      サブネットのID  Ref関数は指定した値を返してくれるよ(この場合はPublicSubnetCの設定を持ってきてくれるよ)
      SubnetId: !Ref PublicSubnetC 
      ルートテーブルのID Ref関数は指定した値を返してくれるよ(この場合はPublicRouteTableCの設定を持ってきてくれるよ)
      RouteTableId: !Ref PublicRouteTableC



  プライベートサブネットAのルートテーブル関連付け
  PrivateSubnetARouteTableAssociation: 
    タイプ サブネットをルートテーブルに関連付ける
    Type: "AWS::EC2::SubnetRouteTableAssociation"
    詳細
    Properties:
      サブネットのID Ref関数は指定した値を返してくれるよ(この場合はPrivateSubnetAの設定を持ってきてくれるよ)
      SubnetId: !Ref PrivateSubnetA
      ルートテーブルのID Ref関数は指定した値を返してくれるよ(この場合はPrivateRouteTableAの設定を持ってきてくれるよ)
      RouteTableId: !Ref PrivateRouteTableA 



  プライベートサブネットCのルートテーブル関連付け
  PrivateSubnetCRouteTableAssociation: 
    タイプ サブネットをルートテーブルに関連付ける
    Type: "AWS::EC2::SubnetRouteTableAssociation"
    詳細
    Properties:
      サブネットのID  Ref関数は指定した値を返してくれるよ(この場合はPrivateSubnetCの設定を持ってきてくれるよ)
      SubnetId: !Ref PrivateSubnetC
      ルートテーブルのID Ref関数は指定した値を返してくれるよ(この場合はPrivateRouteTableCの設定を持ってきてくれるよ)
      RouteTableId: !Ref PrivateRouteTableC

アウトプット①:VPCとVPCのCIDR

アウトプット これはスタック同士で参照や応答できるクロススタックの目印だよ       
Outputs:


  VPC:
    値 Ref関数は指定した値を返してくれるよ(この場合はVPCの設定を持ってきてくれるよ)
    Value: !Ref VPC
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-vpc"ってなるよ!
      Name: !Sub "${PJPrefix}-vpc"



  VPCのCIDR
  VPCCIDR:
    値
    Value: 10.0.0.0/16
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-vpc-cidr"ってなるよ!
      Name: !Sub "${PJPrefix}-vpc-cidr"

アウトプット②:パブリックサブネットとプライベートサブネット

  パブリックサブネットA
  PublicSubnetA:
    値 Ref関数は指定した値を返してくれるよ(この場合はPublicSubnetAの設定を持ってきてくれるよ)
    Value: !Ref PublicSubnetA
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-public-subnet-a"ってなるよ!
      Name: !Sub "${PJPrefix}-public-subnet-a"



 パブリックサブネットACIDR
  PublicSubnetACIDR:
    値
    Value: 10.0.0.0/24
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-public-subnet-a-cidr"ってなるよ!
      Name: !Sub "${PJPrefix}-public-subnet-a-cidr"



  パブリックサブネットC
  PublicSubnetC:
    値 Ref関数は指定した値を返してくれるよ(この場合はPublicSubnetCの設定を持ってきてくれるよ)
    Value: !Ref PublicSubnetC
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-public-subnet-c"ってなるよ!
      Name: !Sub "${PJPrefix}-public-subnet-c"



 パブリックサブネットCCIDR
  PublicSubnetCCIDR:
    値
    Value: 10.0.2.0/24
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-public-subnet-c-cidr"ってなるよ!
      Name: !Sub "${PJPrefix}-public-subnet-c-cidr"



  プライベートサブネットA
  PrivateSubnetA:
    値 Ref関数は指定した値を返してくれるよ(この場合はPrivateSubnetAの設定を持ってきてくれるよ)
    Value: !Ref PrivateSubnetA
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-private-subnet-a"ってなるよ!
      Name: !Sub "${PJPrefix}-private-subnet-a"



  プライベートサブネットACIDR
  PrivateSubnetACIDR:
    値
    Value: 10.0.1.0/24
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-private-subnet-a-cidr"ってなるよ!
      Name: !Sub "${PJPrefix}-private-subnet-a-cidr"



  プライベートサブネットC
  PrivateSubnetC:
    値 Ref関数は指定した値を返してくれるよ(この場合はPrivateSubnetCの設定を持ってきてくれるよ)
    Value: !Ref PrivateSubnetC
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-private-subnet-c"ってなるよ!
      Name: !Sub "${PJPrefix}-private-subnet-c"



  プライベートサブネットCCIDR
  PrivateSubnetCCIDR:
    値
    Value: 10.0.3.0/24
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-private-subnet-c-cidr"ってなるよ!
      Name: !Sub "${PJPrefix}-private-subnet-c-cidr"

アウトプット③:ルートテーブル

  パブリックルートテーブルA
  PublicRouteTableA:
    値 Ref関数は指定した値を返してくれるよ(この場合はPublicRouteTableAの設定を持ってきてくれるよ)
    Value: !Ref PublicRouteTableA
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-public-route-a"ってなるよ!
      Name: !Sub "${PJPrefix}-public-route-a"



  パブリックルートテーブルC
  PublicRouteTableC:
    値 Ref関数は指定した値を返してくれるよ(この場合はPublicRouteTableCの設定を持ってきてくれるよ)
    Value: !Ref PublicRouteTableC
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-public-route-c"ってなるよ!
      Name: !Sub "${PJPrefix}-public-route-c"



  プライベートルートテーブルA
  PrivateRouteTableA:
    値 Ref関数は指定した値を返してくれるよ(この場合はPrivateRouteTableAの設定を持ってきてくれるよ)
    Value: !Ref PrivateRouteTableA
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-private-route-a"ってなるよ!
      Name: !Sub "${PJPrefix}-private-route-a"



  プライベートルートテーブルC
  PrivateRouteTableC:
    値 Ref関数は指定した値を返してくれるよ(この場合はPrivateRouteTableCの設定を持ってきてくれるよ)
    Value: !Ref PrivateRouteTableC
    クロススタックの参照元にするよ
    Export:
      名前 事前に定義した変数(hoge)を!Subで呼べるよ つまり"hoge-private-route-c"ってなるよ!
      Name: !Sub "${PJPrefix}-private-route-c"

いったん終了

ひとまずVPC、サブネット、インターネットゲートウェイ、ルートテーブル、アウトプットのスタックすべてにふりがな振ってみた訳ですが、うん。かなり勉強になった。前よりも読めるようになったというか、

英語(;’∀’)無理(;’∀’)

みたいなアレルギーは緩和された気がします。

このVPC編の他に

  • EC2編
  • RDS編

とポチポチ書いて行こうかと思います(‘◇’)ゞ

元記事はこちら

https://qiita.com/sengoku4902/items/c48c75f8b9d95972e947


アイレットなら、AWS で稼働するサーバーを対象とした監視・運用・保守における煩わしい作業をすべて一括して対応し、経験豊富なプロフェッショナルが最適なシステム環境を実現いたします。AWS プレミアコンサルティングパートナーであるアイレットに、ぜひお任せください。

AWS 運用・保守サービスページ:
https://cloudpack.jp/service/aws/maintenance.html

その他のサービスについてのお問合せ、お見積り依頼は下記フォームよりお気軽にご相談ください。
https://cloudpack.jp/contact/form/

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。