テストを兼ねてCloudFormationでスタックを作成してみます。
CloudFormationでテスト
ミスタイプなどのチェックを兼ねてCloudFormationでスタックを作成しましょう。
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "AWS CloudFormation Sample Template Simple VPC.",
"Parameters" : {
"InstanceType" : {
"Description" : "WebServer EC2 instance type",
"Type" : "String",
"Default" : "t2.micro",
"AllowedValues" : [ "t2.micro", "t2.small", "t2.medium"],
"ConstraintDescription" : "must be a valid EC2 instance type."
},
"NetworkStructure" : {
"Type" : "String",
"Default" : "TEST1",
"AllowedValues" : [ "TEST1", "TEST2" ],
"ConstraintDescription" : ""
}
},
"Mappings" : {
"VPCConfig" : {
"VPCCidr" : { "TEST1" : "10.181.0.0/16", "TEST2" : "10.81.0.0/16" }
},
"SubnetConfig" : {
"PublicCidr" : { "TEST1" : "10.181.254.0/24", "TEST2" : "10.81.254.0/24" },
"PrivateCidr" : { "TEST1" : "10.181.80.0/24" , "TEST2" : "10.81.80.0/24" }
}
},
"Resources" : {
"VPC" : {
"Type" : "AWS::EC2::VPC",
"Properties" : {
"CidrBlock" : { "Fn::FindInMap" : [ "VPCConfig", "VPCCidr", { "Ref" : "NetworkStructure" } ] },
"EnableDnsSupport" : "true",
"EnableDnsHostnames" : "true",
"Tags" : [
{ "Key" : "Application", "Value" : { "Ref" : "AWS::StackId" } },
{ "Key" : "Network", "Value" : "Public" }
]
}
},
"PublicSubnet" : {
"Type" : "AWS::EC2::Subnet",
"Properties" : {
"VpcId" : { "Ref" : "VPC" },
"CidrBlock" : { "Fn::FindInMap" : [ "SubnetConfig", "PublicCidr", { "Ref" : "NetworkStructure" } ] },
"Tags" : [
{ "Key" : "Application", "Value" : { "Ref" : "AWS::StackId" } },
{ "Key" : "Network", "Value" : "Public" }
]
}
},
"PrivateSubnet" : {
"Type" : "AWS::EC2::Subnet",
"Properties" : {
"VpcId" : { "Ref" : "VPC" },
"CidrBlock" : { "Fn::FindInMap" : [ "SubnetConfig", "PrivateCidr", { "Ref" : "NetworkStructure" } ] },
"Tags" : [
{ "Key" : "Application", "Value" : { "Ref" : "AWS::StackId" } },
{ "Key" : "Network", "Value" : "Private" }
]
}
},
"InternetGateway" : {
"Type" : "AWS::EC2::InternetGateway",
"Properties" : {
"Tags" : [
{ "Key" : "Application", "Value" : { "Ref" : "AWS::StackId" } },
{ "Key" : "Network", "Value" : "Public" }
]
}
},
"GatewayToInternet" : {
"Type" : "AWS::EC2::VPCGatewayAttachment",
"Properties" : {
"VpcId" : { "Ref" : "VPC" },
"InternetGatewayId" : { "Ref" : "InternetGateway" }
}
},
"PublicRouteTable" : {
"Type" : "AWS::EC2::RouteTable",
"Properties" : {
"VpcId" : { "Ref" : "VPC" },
"Tags" : [
{ "Key" : "Application", "Value" : { "Ref" : "AWS::StackId" } },
{ "Key" : "Network", "Value" : "Public" }
]
}
},
"PublicRoute" : {
"Type" : "AWS::EC2::Route",
"DependsOn" : "GatewayToInternet",
"Properties" : {
"RouteTableId" : { "Ref" : "PublicRouteTable" },
"DestinationCidrBlock" : "0.0.0.0/0",
"GatewayId" : { "Ref" : "InternetGateway" }
}
},
"PublicSubnetRouteTableAssociation" : {
"Type" : "AWS::EC2::SubnetRouteTableAssociation",
"Properties" : {
"SubnetId" : { "Ref" : "PublicSubnet" },
"RouteTableId" : { "Ref" : "PublicRouteTable" }
}
},
"PrivateRouteTable" : {
"Type" : "AWS::EC2::RouteTable",
"Properties" : {
"VpcId" : { "Ref" : "VPC" },
"Tags" : [
{ "Key" : "Application", "Value" : { "Ref" : "AWS::StackId" } },
{ "Key" : "Network", "Value" : "Private" }
]
}
},
"PrivateRoute" : {
"Type" : "AWS::EC2::Route",
"Properties" : {
"RouteTableId" : { "Ref" : "PrivateRouteTable" },
"DestinationCidrBlock" : "0.0.0.0/0",
"GatewayId" : { "Ref" : "InternetGateway" }
}
},
"PrivateSubnetRouteTableAssociation" : {
"Type" : "AWS::EC2::SubnetRouteTableAssociation",
"Properties" : {
"SubnetId" : { "Ref" : "PrivateSubnet" },
"RouteTableId" : { "Ref" : "PrivateRouteTable" }
}
}
},
"Outputs" : {
"VPC" : {
"Description" : "VPC CIDR",
"Value" : { "Fn::FindInMap" : [ "VPCConfig", "VPCCidr", { "Ref" : "NetworkStructure" } ] }
},
"Public" : {
"Description" : "Public Subnet CIDR",
"Value" : { "Fn::FindInMap" : [ "SubnetConfig", "PublicCidr", { "Ref" : "NetworkStructure" } ] }
},
"Private" : {
"Description" : "Private Subnet CIDR",
"Value" : { "Fn::FindInMap" : [ "SubnetConfig", "PrivateCidr", { "Ref" : "NetworkStructure" } ] }
}
}
}
AWSマネジメントコンソールのCloudFormationを選択するとスタック一覧がでてきます。 そこで、[Create]を選択するとテンプレート選択に進みます。
Upload a template to Amazon S3を選択して、フィル選択からCloudFormationファイルを読み込みます。
[Next]をクリックすると・・・
あら、Validation Errorがでていますね。
Default値の設定にミスがありましたので修正して、読み直しをしてもう一度スタックを作成します。
Resourceで設定したリソースタイプとネットワーク構造が選択できるようになっていますね。 インスタンス・タイプをプルダウンしてみると、指定した通りにt2.micro,small,mediunだけがリストされてます。
他と混在しないようにタグを追加して、
レビューでチェック(レビューするほどの内容もありませんけど)したら、作成スタート
作成状況がイベントタブに表示されてきます。
記述したリソースが作られている様子がわかりますね。
出来上がると、OutputタブにCloudFormationファイルでOutputに記載した値がでているか確認して。
実際にVPCとサブネットが形成されていることを確認すると出来上がり。
ひとまず、スタックが形成できるようになりました。
次回は、サブネットを追加しましょう。