0.5から始めるAWS CLI入門 - ③VPCの構築

AWS CLI勉強中の内容をまとめていきます。
PREV：**[0.5から始めるAWS CLI入門 - ②基本使用](http://qiita.com/yarakaki/items/dbd1c8a4feed2936107e)**
* * *

[hiroshik1985](http://qiita.com/hiroshik1985)さんの[0から始めるAWS入門①：VPC編](http://qiita.com/hiroshik1985/items/9de2dd02c9c2f6911f3b)の内容をAWS CLIで行います（若干違うとこもあります）。
[0から始めるAWS入門：概要](http://qiita.com/hiroshik1985/items/6433d5de97ac55fedfde)は、凄くわかりやすいので一読をお勧めします。

**※アルファベット大文字もしくは＠が8文字連続する場所は、出力されたidを入力して下さい。**

#VPCの作成
10.0.0.0/16のアドレス空間を扱うVPCを作成する。

|項目|値|
|:-----------|:------------|
|Name tag|任意|
|CIDR|10.0.0.0/16|
|tenancy|Default|

```:
$ aws ec2 create-vpc --cidr-block 10.0.0.0/16
{
    "Vpc": {
        "InstanceTenancy": "default", 
        "State": "pending", 
        "VpcId": "vpc-@@@@@@@@", 
        "CidrBlock": "10.0.0.0/16", 
        "DhcpOptionsId": "dopt-@@@@@@@@"
    }
}
```

![スクリーンショット 2016-02-22 22.10.20.png](https://qiita-image-store.s3.amazonaws.com/0/113901/e3f7fa85-2d16-c661-1e03-6a31d2b35725.png)

VPCは作成されました、Nameタグをつけてあげます。

```:
$ aws ec2 create-tags --resources vpc-@@@@@@@@ --tags Key=Name,Value=Test-VPC
```

#Subnetの作成
上記で作ったVPC内のAZ-aとAZ-cにSubnetを作成する。このVPC内で扱うアドレス空間として、CIDRは10.0.0.0/24と10.0.1.0/24とする。

|項目|値|
|:--------------|:---------------|
|Name tag|任意(VPCのタグ名と関連付けたほうが管理しやすい)|
|VPC|上記で作成したVPCを選択する|
|Availability Zone|ap-northeast-1a|
|CIDR|10.0.0.0/24|

|項目|値|
|:--------------|:---------------|
|Name tag|任意(VPCのタグ名と関連付けたほうが管理しやすい)|
|VPC|上記で作成したVPCを選択する|
|Availability Zone|ap-northeast-1c|
|CIDR|10.0.1.0/24|

```:
$ aws ec2 create-subnet --vpc-id vpc-@@@@@@@@ --availability-zone ap-northeast-1a --cidr-block 10.0.0.0/24
{
    "Subnet": {
        "VpcId": "vpc-@@@@@@@@", 
        "CidrBlock": "10.0.0.0/24", 
        "State": "pending", 
        "AvailabilityZone": "ap-northeast-1a", 
        "SubnetId": "subnet-AAAAAAAA", 
        "AvailableIpAddressCount": 251
    }
}

$ aws ec2 create-subnet --vpc-id vpc-@@@@@@@@ --availability-zone ap-northeast-1c --cidr-block 10.0.1.0/24

{
    "Subnet": {
        "VpcId": "vpc-@@@@@@@@", 
        "CidrBlock": "10.0.1.0/24", 
        "State": "pending", 
        "AvailabilityZone": "ap-northeast-1c", 
        "SubnetId": "subnet-CCCCCCCC", 
        "AvailableIpAddressCount": 251
    }
}
```

VPCと同様にNameタグをつけてあげる

```:
$ aws ec2 create-tags --resources subnet-AAAAAAAA --tags Key=Name,Value=Test-subnet-AZ-a
$ aws ec2 create-tags --resources subnet-CCCCCCCC --tags Key=Name,Value=Test-subnet-AZ-c
```

#Internet Gatewayの追加
Internet Gatewayを作成

```:
$ aws ec2 create-internet-gateway
{
    "InternetGateway": {
        "Tags": [], 
        "InternetGatewayId": "igw-IIIIIIII", 
        "Attachments": []
    }
}
```

VPC・Subnetと同様にNameタグをつけてあげる。

```:
$ aws ec2 create-tags --resources igw-IIIIIIII --tags Key=Name,Value=Test-igw
```

VPCにアタッチ

```:
$ aws ec2 attach-internet-gateway --internet-gateway-id igw-IIIIIIII --vpc-id vpc-@@@@@@@@
```

#Routes Tableの作成
Routes TableはVPCを作成したら、デフォルトであるのですが今回は別途作成します。

```:
$ aws ec2 create-route-table --vpc-id vpc-@@@@@@@@
{
    "RouteTable": {
        "Associations": [], 
        "RouteTableId": "rtb-RRRRRRRR", 
        "VpcId": "vpc-@@@@@@@@", 
        "PropagatingVgws": [], 
        "Tags": [], 
        "Routes": [
            {
                "GatewayId": "local", 
                "DestinationCidrBlock": "10.0.0.0/16", 
                "State": "active", 
                "Origin": "CreateRouteTable"
            }
        ]
    }
}
```

Nameタグ〜(略

```:
$ aws ec2 create-tags --resources rtb-RRRRRRRR --tags Key=Name,Value=Test-rtb
```

サブネットの関連付けもしとく

```:
$ aws ec2 associate-route-table --route-table-id rtb-RRRRRRRR --subnet-id subnet-AAAAAAAA
{
    "AssociationId": "rtbassoc-SSSSSSSS"
}

$ aws ec2 associate-route-table --route-table-id rtb-RRRRRRRR --subnet-id subnet-CCCCCCCC
{
    "AssociationId": "rtbassoc-TTTTTTTT"
}
```

Internet Gatewayへルーティング

```:
$ aws ec2 create-route --route-table-id rtb-RRRRRRRR --destination-cidr-block 0.0.0.0/0 --gateway-id igw-IIIIIIII
{
    "Return": true
}
```

#おまけ
VPCのテナンシーをハードウェア専有で作成する場合

```:
aws ec2 create-vpc --cidr-block 10.0.0.0/16 --instance-tenancy dedicated
```

***

間違い、改善点などありましたらご指摘お願いします。

Next：**[0.5から始めるAWS CLI入門 - ④EC2](http://qiita.com/yarakaki/items/45b59ad11f17142b5817)**