AWS CLIとCloudFormationでVPCを作ってEC2を立ち上げてみた①~AWS CLI編~

はじめまして!Tamaです!

今回からレシピ記事を書いていきます!よろしくお願いいたします!

AWS CLIからのデプロイ

今回は一括デプロイサービスであるCroudFormationをAWS CLIでの構築と比較するため、まずはAWS CLIからVPCを作りその中にEC2インスタンスの立ち上げを行います。

AWS CLIの導入や使い方は こちら から

今回作成する環境は下の表になります。

OS Amazon Linux AMI 2015.03.0 x86_64 HVM GP2
AMI ami-cbf90ecb
Instance Type t2.micro
Root Volume 8GiB
VPC IP Range 10.0.0.0/16
Subnet IP Range 10.0.0.0/24
SecurityGroup SSH(port:22) source:0.0.0.0/0
New Key Pair NO

EC2インスタンスにSSHで接続し、コマンドを入力していきます。

1. VPCの作成

1# aws ec2 create-vpc --cidr-block 10.0.0.0/16

[実行結果]

1{2    "Vpc": {3        "InstanceTenancy": "default",4        "State": "pending",5        "VpcId": "[VPC ID]",6        "CidrBlock": "10.0.0.0/16",7        "DhcpOptionsId": "XXXXXXXXXXXX"8    }9}

2. Subnetの作成

1# aws ec2 create-subnet --vpc-id [VPC ID] --cidr-block 10.0.0.0/24

[実行結果]

1{2    "Subnet": {3        "VpcId": "[VPC ID]",4        "CidrBlock": "10.0.0.0/24",5        "State": "pending",6        "AvailabilityZone": "ap-northeast-1a",7        "SubnetId": "[SubnetID]",8        "AvailableIpAddressCount": 2519    }10}

3. インターネットゲートウェイの作成

1# aws ec2 create-internet-gateway

[実行結果]

1{2    "InternetGateway": {3        "Tags": [],4        "InternetGatewayId": "[InternetGatewayID]",5        "Attachments": []6    }7}

4. インターネットゲートウェイのアタッチ

1# aws ec2 attach-internet-gateway --internet-gateway-id [InternetGatewayID] --vpc-id [VPC ID]

5. ルートテーブルの作成

1# aws ec2 create-route-table --vpc-id [VPC ID]

[実行結果]

1{2    "RouteTable": {3        "Associations": [],4        "RouteTableId": "[RootTableID]",5        "VpcId": "[VPC ID]",6        "PropagatingVgws": [],7        "Tags": [],8        "Routes": [9            {10                "GatewayId": "local",11                "DestinationCidrBlock": "10.0.0.0/16",12                "State": "active",13                "Origin": "CreateRouteTable"14            }15        ]16    }17}

6. ルートの設定

1# aws ec2 create-route --route-table-id [RootTableID] --destination-cidr-block 0.0.0.0/0 --gateway-id [InternetGatewayID]

[実行結果]

1{2    "Return": true3}

7. ルートテーブルの割り当て

1# aws ec2 associate-route-table --subnet-id [SubnetID] --route-table-id [RootTableID]

[実行結果]

1{2    "AssociationId": "[AssociationID]"3}

8. セキュリティグループの作成

1# aws ec2 create-security-group --group-name EC2inVPC --description EC2inVPC --vpc-id [VPC ID]

[実行結果]

1{2    "GroupId": "[GroupID]"3}

9. インバウンドルールの設定

1# aws ec2 authorize-security-group-ingress --group-id [GroupID] --protocol tcp --port 22 --cidr 0.0.0.0/0

10. EC2インスタンスの立ち上げ

1# aws ec2 run-instances --image-id ami-cbf90ecb --key-name [KeyName] --security-group-ids [GroupID] --instance-type t2.micro --block-device-mappings "[{\"DeviceName\":\"/dev/xvda\",\"Ebs\":{\"VolumeSize\":8}}]" --subnet-id [SubnetID] --count 1 --associate-public-ip-address

[実行結果]

1{2    "OwnerId": "XXXXXXXXX",3    "ReservationId": "XXXXXXXXX",4    "Groups": [],5    "Instances": [6        {7            "Monitoring": {8                "State": "disabled"9            },10            "PublicDnsName": "",11            "RootDeviceType": "ebs",12            "State": {13                "Code": 0,14                "Name": "pending"15            },16            "EbsOptimized": false,17            "LaunchTime": "2015-XX-XXTXX:XX:XX.000Z",18            "PrivateIpAddress": "10.0.0.138",19            "ProductCodes": [],20            "VpcId": "[VPC ID]",21            "StateTransitionReason": "",22            "InstanceId": "[InstanceID]",23            "ImageId": "ami-cbf90ecb",24            "PrivateDnsName": "ip-10-0-0-138.ap-northeast-1.compute.internal",25            "KeyName": "[KeyName]",26            "SecurityGroups": [27                {28                    "GroupName": "EC2inVPC",29                    "GroupId": "[GroupID]"30                }31            ],32            "ClientToken": "",33            "SubnetId": "[SubnetID]",34            "InstanceType": "t2.micro",35            "NetworkInterfaces": [36                {37                    "Status": "in-use",38                    "MacAddress": "XX:XX:XX:XX:XX:XX",39                    "SourceDestCheck": true,40                    "VpcId": "[VPC ID]",41                    "Description": "",42                    "NetworkInterfaceId": "XXXXXXXXXX",43                    "PrivateIpAddresses": [44                        {45                            "Primary": true,46                            "PrivateIpAddress": "10.0.0.138"47                        }48                    ],49                    "Attachment": {50                        "Status": "attaching",51                        "DeviceIndex": 0,52                        "DeleteOnTermination": true,53                        "AttachmentId": "XXXXXXXXXXX",54                        "AttachTime": "2015-XX-XXTXX:XX:XX.000Z"55                    },56                    "Groups": [57                        {58                            "GroupName": "EC2inVPC",59                            "GroupId": "[GroupID]"60                        }61                    ],62                    "SubnetId": "[SubnetID]",63                    "OwnerId": "XXXXXXXXXXXX",64                    "PrivateIpAddress": "10.0.0.138"65                }66            ],67            "SourceDestCheck": true,68            "Placement": {69                "Tenancy": "default",70                "GroupName": "",71                "AvailabilityZone": "ap-northeast-1a"72            },73            "Hypervisor": "xen",74            "BlockDeviceMappings": [],75            "Architecture": "x86_64",76            "StateReason": {77                "Message": "pending",78                "Code": "pending"79            },80            "RootDeviceName": "/dev/xvda",81            "VirtualizationType": "hvm",82            "AmiLaunchIndex": 083        }84    ]85}

コンソールからデプロイされたインスタンスを見てみます。

今回作成したVPC, Subnet内にデプロイされているのが確認できます。

007
AWS CLIでのVPCへのEC2インスタンスの立ち上げは以上になります!お疲れさまでした!CLIではコンソール以上に細かな設定が行えて便利ですね。次回は同じ構成をCloudFormationで作成します!またお会いしましょう!

この記事を書いた人

aws-recipe-user