CloudFormationをいじる VPC EC2基礎編

CloudFormationをいじります。

最低限の操作を抑えたい。

 

となると、以下のサイトがとてもわかり易い。

dev.classmethod.jp

 

dev.classmethod.jp

 

 

テンプレ例

入門者向け、コピペで役立つ最低限のテンプレ。

VPCテンプレ

 

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"
                }
            },
        },

上記テンプレを合体

以下のようになります。

 

f:id:no1497:20170408212155j:plain

 

www.dropbox.com