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編
とポチポチ書いて行こうかと思います('◇')ゞ