AWS CLIでWordPress環境を構築する~part1~

## 概要
AWS学習目的で、下記記事のレシピを参考にAWS CLIでの環境構築を行う。
[【Amazon3時間クッキング】材料費500円でAWSにWordPress環境を構築するレシピ](https://qiita.com/blackriver/items/9ef870b1624373d18dfa)

この記事では以下の作業を行う。

- VPCの作成
- サブネットの作成（パブリックセグメント）
- インターネットゲートウェイの作成
- ルートテーブルの作成

## 環境
- macOS Catalina

## 前提条件
- AWSアカウント
- AWS CLI
 - aws configureで設定済み

## 構築

### VPCの作成
|項目|値|
|:--|:--|
|リージョン|アジアパシフィック（東京）|
|CIDRブロック|10.0.0.0/16|
|名前|test-VPC|

```
# VPCの作成
$ aws ec2 create-vpc --region ap-northeast-1 --cidr-block 10.0.0.0/16
{
    "Vpc": {
        "CidrBlock": "10.0.0.0/16",
        "DhcpOptionsId": "dopt-81eaa2e6",
        "State": "pending",
        "VpcId": "vpc-07154996e6c851750",
        "OwnerId": "403733593576",
        "InstanceTenancy": "default",
        "Ipv6CidrBlockAssociationSet": [],
        "CidrBlockAssociationSet": [
            {
                "AssociationId": "vpc-cidr-assoc-0a6334afa0f843a96",
                "CidrBlock": "10.0.0.0/16",
                "CidrBlockState": {
                    "State": "associated"
                }
            }
        ],
        "IsDefault": false,
        "Tags": []
    }
}

# 名前の設定
$ aws ec2 create-tags --resources vpc-07154996e6c851750 --tags Key=Name,Value=test-VPC
```

### サブネットの作成（パブリックセグメント）
|項目|値|
|:--|:--|
|CIDRブロック|10.0.1.0/24|
|名前|test-PublicSegment|

```
# サブネットの作成
$ aws ec2 create-subnet --vpc-id vpc-07154996e6c851750 --cidr-block 10.0.1.0/24
{
    "Subnet": {
        "AvailabilityZone": "ap-northeast-1c",
        "AvailabilityZoneId": "apne1-az1",
        "AvailableIpAddressCount": 251,
        "CidrBlock": "10.0.1.0/24",
        "DefaultForAz": false,
        "MapPublicIpOnLaunch": false,
        "State": "pending",
        "SubnetId": "subnet-02558655ff2936296",
        "VpcId": "vpc-07154996e6c851750",
        "OwnerId": "403733593576",
        "AssignIpv6AddressOnCreation": false,
        "Ipv6CidrBlockAssociationSet": [],
        "SubnetArn": "arn:aws:ec2:ap-northeast-1:403733593576:subnet/subnet-02558655ff2936296"
    }
}

# 名前の設定
$ aws ec2 create-tags --resources subnet-02558655ff2936296 --tags Key=Name,Value=test-PublicSegment
```

### インターネットゲートウェイの作成
|項目|値|
|:--|:--|
|名前|test-IGW|

```
# ゲートウェイの作成
$ aws ec2 create-internet-gateway
{
    "InternetGateway": {
        "Attachments": [],
        "InternetGatewayId": "igw-069600493ea4658d1",
        "Tags": []
    }
}

# 名前の設定
$ aws ec2 create-tags --resources igw-069600493ea4658d1 --tags Key=Name,Value=test-IGW

# VPCにインターネットゲートウェイをアタッチ
$ aws ec2 attach-internet-gateway --vpc-id vpc-07154996e6c851750 --internet-gateway-id igw-069600493ea4658d1
```

### カスタムルートテーブルの作成
|項目|値|
|:--|:--|
|名前|test-PublicRouteTable|
|送信先|0.0.0.0/0|

```
# カスタムルートテーブルの作成
$ aws ec2 create-route-table --vpc-id vpc-07154996e6c851750
{
    "RouteTable": {
        "Associations": [],
        "PropagatingVgws": [],
        "RouteTableId": "rtb-0e03cccb92108b0d1",
        "Routes": [
            {
                "DestinationCidrBlock": "10.0.0.0/16",
                "GatewayId": "local",
                "Origin": "CreateRouteTable",
                "State": "active"
            }
        ],
        "Tags": [],
        "VpcId": "vpc-07154996e6c851750",
        "OwnerId": "403733593576"
    }
}

# 名前の設定
$ aws ec2 create-tags --resources rtb-0e03cccb92108b0d1 --tags Key=Name,Value=test-PublicRouteTable

# インターネットゲートウェイへのすべてのトラフィック (0.0.0.0/0) をポイントするルートテーブルでルートを作成
$ aws ec2 create-route --route-table-id rtb-0e03cccb92108b0d1 --destination-cidr-block 0.0.0.0/0 --gateway-id igw-069600493ea4658d1
{
    "Return": true
}
```

#### ルートテーブル サブネットの関連付け

```
$ aws ec2 associate-route-table  --subnet-id subnet-02558655ff2936296 --route-table-id rtb-0e03cccb92108b0d1
{
    "AssociationId": "rtbassoc-04f4894cba1ed2dab",
    "AssociationState": {
        "State": "associated"
    }
}
```


## 参考
- [【Amazon3時間クッキング】材料費500円でAWSにWordPress環境を構築するレシピ](https://qiita.com/blackriver/items/9ef870b1624373d18dfa)
- [例: AWS CLI を使用して IPv4 VPC とサブネットを作成](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-subnets-commands-example.html)