AWS CLIでVPC作成と情報取得方法

## はじめに
今回はAWS CLIを利用してVPC作成を実施します。
AWS CLIを利用することでスクリプト等を使用して情報取得することができます。
特にVPCID取得するには他CLIコマンドで利用することも多いかと思いますので、
投稿します。

## VPC作成

```bash
# 基本的利用方法
$ aws ec2 create-vpc \
  --cidr-block <VPC CIDR> \
  --tag-specifications <VPC TAGNAME>
```

利用例：

```bash
# 変数定義
$ VPC_TAG_NAME='example-cli-vpc'
$ VPC_CIDR='10.0.0.0/16'
$ STRING_VPC_TAG="ResourceType=vpc,Tags=[{Key=Name,Value=${VPC_TAG_NAME}}]" \
&& echo ${STRING_VPC_TAG}
ResourceType=vpc,Tags=[{Key=Name,Value=${VPC_TAG_NAME}}]

$ aws ec2 create-vpc \
  --cidr-block ${VPC_CIDR} \
  --tag-specifications ${STRING_VPC_TAG}

{
    "Vpc": {
        "CidrBlock": "10.0.0.0/16",
        "DhcpOptionsId": "dopt-09b680c4b58db5453",
        "State": "pending",
        "VpcId": "vpc-00da815ef79e7d0c5",
        "OwnerId": "030422977218",
        "InstanceTenancy": "default",
        "Ipv6CidrBlockAssociationSet": [],
        "CidrBlockAssociationSet": [
            {
                "AssociationId": "vpc-cidr-assoc-07b3e0f35900f52d1",
                "CidrBlock": "10.0.0.0/16",
                "CidrBlockState": {
                    "State": "associated"
                }
            }
        ],
        "IsDefault": false,
        "Tags": [
            {
                "Key": "Name",
                "Value": "example-cli-vpc"
            }
        ]
    }
}
```
各変数は以下。
```VPC_TAG_NAME='example-cli-vpc'```：作成したいVPC名
```VPC_CIDR='10.0.0.0/16'```：作成したいVPCのCIDR設定
```STRING_VPC_TAG="ResourceType=vpc,Tags=[{Key=Name,Value=${VPC_TAG_NAME}}]" ```：VPC名とタグ名を設定



## VPC内容取得

```bash
# 基本的利用方法
$ aws ec2 describe-vpcs \
  --filters Name=tag:Name,Values=<VPC TAGNAME>  \
  --query 'Vpcs[].Tags[?Key == `Name`].Value' \
  --output text
```

利用例：

```bash
# VPC情報取得
$ aws ec2 describe-vpcs \
  --filters Name=tag:Name,Values=${VPC_TAG_NAME}\

{
    "Vpcs": [
        {
            "CidrBlock": "11.0.0.0/16",
            "DhcpOptionsId": "dopt-09b680c4b58db5453",
            "State": "available",
            "VpcId": "vpc-00da815ef79e7d0c5",
            "OwnerId": "030422977218",
            "InstanceTenancy": "default",
            "CidrBlockAssociationSet": [
                {
                    "AssociationId": "vpc-cidr-assoc-07b3e0f35900f52d1",
                    "CidrBlock": "11.0.0.0/16",
                    "CidrBlockState": {
                        "State": "associated"
                    }
                }
            ],
            "IsDefault": false,
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "example-cli-vpc"
                }
            ]
        }
    ]
}
```

### 色々取得してみる

```bash
# VPCIDを取得する場合
$ aws ec2 describe-vpcs \
   --filter Name=tag:Name,Values=${VPC_TAG_NAME} \
   --query 'Vpcs[].VpcId' \
   --output text
vpc-0c9e269716aebf8ff

# VPC CIDRBLOCKを取得する場合
$ aws ec2 describe-vpcs \
   --filter Name=tag:Name,Values=${VPC_TAG_NAME} \
   --query 'Vpcs[].CidrBlock' \
   --output text
```

## VPC削除

```bash
# 基本的利用方法
$ aws ec2 delete-vpc
  --vpc-id <VPC ID>
```

利用例：
```bash
# VPC IDを変数に取得
$ EC2_VPC_ID=$( \
  aws ec2 describe-vpcs \
    --filters Name=tag:Name,Values=${VPC_TAG_NAME}  \
    --query 'Vpcs[].VpcId' \
    --output text \
) \
  && echo ${EC2_VPC_ID}

# VPC削除
$ aws ec2 delete-vpc \
  --vpc-id ${EC2_VPC_ID}
```