1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-12-21

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

##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編

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

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?