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

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
```

###↑どれの事？↑
![ふりがな.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/867277/ae4a6da8-f688-59e7-c55a-907d8a0373d1.png)
スタック作る時にパラメーターとか決められるんだけど、そこの設定を決めています。
画像と照らし合わせてみるとイメージしやすいかも！

##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"
```

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

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



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



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



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

##いったん終了

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

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

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

このVPC編の他に

- EC2編
- RDS編

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