CloudFormationをいじります。
最低限の操作を抑えたい。
となると、以下のサイトがとてもわかり易い。
dev.classmethod.jp
dev.classmethod.jp
テンプレ例
入門者向け、コピペで役立つ最低限のテンプレ。
192.168.0.0/16のセグメントを持つVPC:"VPC1"を作成
"VPC1": {
"Type": "AWS::EC2::VPC",
"Properties": {
"CidrBlock": "192.168.0.0/16"
},
},
サブネットテンプレ
VPC:"VPC1"に紐づく192.168.1.0/24のセグメントを持つサブネット:"Subnet1"を作成
"Subnet1": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"VpcId": {
"Ref": "VPC1"
},
"CidrBlock": "192.168.1.0/24"
},
},
ルートテーブルテンプレ
VPC:"VPC1"と紐づくルートテーブル:"RouteTable1"を作成
※サブネットとの紐付けはプロパティに書かないんだ・・・。
以下、ルートテーブルサブネット結合必須
"RouteTable1": {
"Type": "AWS::EC2::RouteTable",
"Properties": {
"VpcId": {"Ref":"VPC1"}
},
},
ルートテーブルサブネット結合テンプレ
ルートテーブル:"RouteTable1"とサブネット:"Subnet1"を紐付けるルートテーブルサブネット結合:"RouteTable12Subnet1"を作成する。
"RouteTable12Subnet1": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",
"Properties": {
"RouteTableId": {
"Ref": "RouteTable1"
},
"SubnetId": {
"Ref": "Subnet1"
}
},
},
ルートテンプレ
ルートテーブル:"RouteTable1"に紐づく、宛先0.0.0.0/0のネクストホップを"IGW1"とするルート:"Route1"を作成
※ちなみにここでのIGW1はインターネットゲートウェイコンポーネント
"Route1": {
"Type": "AWS::EC2::Route",
"Properties": {
"DestinationCidrBlock": "0.0.0.0/0",
"GatewayId": {
"Ref": "IGW1"
},
"RouteTableId": {
"Ref": "RouteTable1"
}
},
},
セキュリティグループテンプレ
VPC:"VPC1"に紐づくセキュリティグループ:"SecurityGroup1"を作成。
インバウンド方向TCP/22~22 any通信を許可。
"SecurityGroup1": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "Allow SSH",
"SecurityGroupIngress": [
{
"IpProtocol": "TCP",
"FromPort": "22",
"ToPort": "22",
"CidrIp": "0.0.0.0/0"
}
],
"VpcId": {
"Ref": "VPC1"
}
},
},
EC2作成テンプレ
セキュリティグループ:"SecurityGroup1"、サブネット:"Subnet1"に属するt2.microのAmazon Linux AMIインスタンス(バージニア北部 "ami-22ce4934")を作成
"Instance1": {
"Type": "AWS::EC2::Instance",
"Properties": {
"InstanceType": "t2.micro",
"ImageId": "ami-22ce4934",
"SecurityGroupIds": [
{
"Ref": "SecurityGroup1"
}
],
"SubnetId": {
"Ref": "Subnet1"
}
},
},
上記テンプレを合体
以下のようになります。
www.dropbox.com