

# VPC を作成する
<a name="create-vpc"></a>

次のステップを使用して、仮想プライベートクラウド (VPC) を作成します。VPC に AWS リソースを作成する前に、VPC にはサブネット、ルートテーブル、ゲートウェイなどの追加リソースが必要です。

**Topics**
+ [VPC と他の VPC リソースを作成する](#create-vpc-and-other-resources)
+ [VPC のみを作成する](#create-vpc-only)
+ [AWS CLI を使用して VPC を作成する](#create-vpc-cli)

VPC を変更する方法については、「[CIDR ブロックを追加するまたは VPC から削除する](add-ipv4-cidr.md)」を参照してください。

## VPC と他の VPC リソースを作成する
<a name="create-vpc-and-other-resources"></a>

次の手順に従って、VPC に加え、サブネット、ルートテーブル、インターネットゲートウェイ、NAT ゲートウェイなど、アプリケーションの実行に必要な追加の VPC リソースを作成します。VPC の設定例については、「[VPC の例](vpc-examples-intro.md)」を参照してください。

**コンソールを使用して VPC、サブネット、その他の VPC リソースを作成するには**

1. Amazon VPC コンソールの [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) を開いてください。

1. VPC ダッシュボードで、[**Create VPC (VPC を作成する)**] を選択します。

1. **[Resources to create]** (作成するリソース) で、**[VPC and more]** (VPC など) を選択します。

1. **[名前タグの自動生成]** を選択したままにすると VPC リソース用の名前タグが作成され、オフにすると VPC リソース用の独自の名前タグが提供されます。

1. **[IPv4 CIDR ブロック]** に VPC の IPv4 アドレス範囲を入力します。VPC には IPv4 アドレス範囲が必要です。

1. (オプション) IPv6 トラフィックをサポートするには、**[IPv6 CIDR ブロック]**、**[Amazon が提供する IPv6 CIDR ブロック]** の順に選択します。

1. **[テナンシー]** を選択します 。このオプションは、VPC で起動する EC2 インスタンスを、他の AWS アカウント と共有しているハードウェアで実行するか、または自分専用のハードウェアで実行するかを定義します。VPC のテナンシーとして `Default` を選択すると、この VPC で起動した EC2 インスタンスは、インスタンスの起動時に指定したテナンシー属性を使用します。詳細については、「Amazon EC2 ユーザーガイド」の「[定義済みのパラメータを使用したインスタンスの起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)」を参照してください。**VPC のテナンシーで `Dedicated` を選択すると、インスタンスは常に、ユーザー専用のハードウェアで実行される、[専有インスタンス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)として実行されます。AWS Outposts を使用している場合、その Outpost にはプライベート接続が必要となります。つまり、`Default` テナンシーを使用する必要があります。

1. **[アベイラビリティーゾーン (AZ) の数]** では、本番環境のため、サブネットを 2 つ以上のアベイラビリティーゾーンでプロビジョニングしておくことが推奨されます。サブネットの AZ を選択するには、**[AZ のカスタマイズ]** を展開します。それ以外の場合は、AWS で自動的に選択します。

1. サブネットを設定するには、**[パブリックサブネットの数]** と **[プライベートサブネットの数]** の値を選択します。サブネットの IP アドレス範囲を選択するには、**[サブネット CIDR ブロックをカスタマイズ]** を展開します。それ以外の場合は、AWS で自動的に選択します。

1. (オプション) プライベートサブネットのリソースが IPv4 経由でパブリックインターネットにアクセスする必要がある場合、**[NAT ゲートウェイ]** で、NAT ゲートウェイを作成する AZ の数を選択します。本番環境では、パブリックインターネットへのアクセスを必要とするリソースがある各 AZ に NAT ゲートウェイをデプロイすることをお勧めします。NAT ゲートウェイにはコストが発生することに注意してください。詳細については、「[NAT ゲートウェイの料金](nat-gateway-pricing.md)」を参照してください。

1. (オプション) プライベートサブネット内のリソースが IPv6 経由でパブリックインターネットにアクセスする必要がある場合、**[Egress Only インターネットゲートウェイ]** で、**[はい]** をクリックします。

1. (オプション) VPC から Amazon S3 に直接アクセスする必要がある場合は、**[VPC エンドポイント]**、**[S3 ゲートウェイ]** の順に選択します。これにより、Amazon S3 用のゲートウェイ VPC エンドポイントが作成されます。詳細については、**「AWS PrivateLink ガイド」の「[Gateway endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)」を参照してください。

1. (オプション) **[DNS オプション]** では、ドメイン名解決の両方のオプションがデフォルトで有効になっています。デフォルトの設定がニーズに合わない場合は、これらのオプションを無効にできます。

1. (オプション) VPC にタグを追加するには、**[追加のタグ]** を展開して、**[新しいタグを追加]** を選択し、タグキーとタグ値を入力します。

1. **[プレビュー]** ペインでは、設定した VPC リソース間の関係を視覚化できます。実線はリソース間の関係を表します。点線は、NAT ゲートウェイ、インターネットゲートウェイ、およびゲートウェイエンドポイントへのネットワークトラフィックを表します。VPC の作成後、**[リソースマップ]** タブを使用することで、VPC 内のリソースをこの形式でいつでも視覚化できます。詳細については、「[VPC 内のリソースを視覚化する](view-vpc-resource-map.md)」を参照してください。

1. VPC の設定が終了したら、**[VPC の作成]** を選択します。

## VPC のみを作成する
<a name="create-vpc-only"></a>

以下の手順で、Amazon VPC コンソールを使用して、追加の VPC リソースのない VPC を作成します。

**コンソールを使用して追加の VPC リソースのない VPC を作成するには**

1. Amazon VPC コンソールの [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) を開いてください。

1. VPC ダッシュボードで、[**Create VPC (VPC を作成する)**] を選択します。

1. **[作成するリソース]**で、**[VPC のみ]** を選択します。

1. (オプション) **[名前タグ]** に、使用する VPC の名前を入力します。これにより、`Name` というキーと指定した値を含むタグが作成されます。

1. [**IPv4 CIDR block**] で、次のいずれかを実行します。
   + **[IPv4 CIDR 手動入力]** を選択し、VPC の IPv4 アドレス範囲を入力します。
   + **[IPAM が割り当てられた IPv4 CIDR ブロック]** を選択し、Amazon VPC IP Address Manager (IPAM) の IPv4 アドレスプールとネットマスクを選択します。CIDR ブロックのサイズは、IPAM プールの割り当てルールによって制限されます。IPAM は、AWS ワークロードの IP アドレスを簡単に計画、追跡、およびモニタリングできる VPC 機能です。詳細については、「[Amazon VPC IPAM ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html)」を参照してください。

     IPAM を使用して IP アドレスを管理している場合は、このオプションを選択することをお勧めします。このオプションを選択しないと、VPC に指定した CIDR ブロックが IPAM CIDR 割り当てと重複する可能性があります。

1. (オプション) デュアルスタック VPC を作成するには、VPC の IPv6 アドレス範囲を指定します。**[IPv6 CIDR ブロック]** で、次のいずれかを実行します。
   + Amazon VPC IP アドレスマネージャーを使用していて、IPAM プールから IPv6 CIDR をプロビジョニングする場合は、[**IPAM 割り当て済み IPv6 CIDR ブロック**] を選択します。IPAM 割り当ての IPv6 CIDR ブロックを使用して VPC に IPv6 CIDR をプロビジョニングすると、VPC 作成用に連続した IPv6 CIDR の利点を得られます。連続して割り当てられた CIDR とは、続いて割り当てられた CIDR を意味します。これにより、セキュリティルールとネットワークルールを簡素化できます。IPv6 CIDR は、アクセスコントロールリスト、ルートテーブル、セキュリティグループ、ファイアウォールなどのネットワークおよびセキュリティ構造全体で 1 つのエントリに集約できます。

     **CIDR ブロック**で VPC に IP アドレス範囲をプロビジョニングするには、2 つのオプションがあります。
     + **ネットマスク長**: CIDR のネットマスク長を選択するには、このオプションを選択します。次のいずれかを行います：
       + IPAM プールにデフォルトのネットマスク長が選択されている場合は、[**デフォルトのIPAM ネットマスク長**] を選択して、IPAM 管理者が IPAM プールに設定したデフォルトのネットマスク長を使用できます。オプションのデフォルトネットマスク長割り当てルールの詳細については、「*Amazon VPC IPAM ユーザーガイド*」の「[リージョンの IPv6 プールの作成](https://docs.aws.amazon.com/vpc/latest/ipam/create-ipv6-reg-pool.html)」を参照してください。
       + IPAM プールにデフォルトのネットマスク長が選択されていない場合は、IPAM プール CIDR のネットマスク長よりも具体的なネットマスク長を選択します。例えば、IPAM プールの CIDR が /50 の場合、VPC のネットマスク長は **/52** から **/60** の間で選択できます。ネットマスク長さは **/44** から **/60** の間で、/4 刻みです。
     + **CIDR の選択**: IPv6 アドレスを手動で入力するには、このオプションを選択します。選択できるネットマスクの長さは IPAM プール CIDR のネットマスク長より具体的である必要があります。例えば、IPAM プールの CIDR が /50 の場合、VPC のネットマスク長は **/52** から **/60** の間で選択できます。IPv6 のネットマスク長は **/44** から **/60** の間で、/4 ずつ増えます。
   + **[Amazon が提供する IPv6 CIDR ブロック]** を選択して、Amazon の IPv6 アドレスプールから IPv6 CIDR ブロックをリクエストします。[**Network Border Group**] (ネットワーク境界グループ) で、AWS による IP アドレスのアドバタイズ元となるグループを選択します。Amazon では IPv6 CIDR ブロックサイズが **/56** に固定されています。
   + [**自身で所有する IPv6 CIDR**] を選択して、AWS に導入した IPv6 CIDR をプロビジョニングします。AWS に独自の IP アドレスを導入する場合の詳細は、「Amazon EC2 ユーザーガイド」の「[Amazon EC2 で自分の IP アドレスを使用する (BYOIP)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html)」を参照してください。**[CIDR ブロック]** の次のオプションを使用して、VPC の IP アドレス範囲をプロビジョニングできます。
     + **指定なし**: /**56** のネットマスク長を使用する場合は、このオプションを選択します。
     + **CIDR の選択**: このオプションを選択すると、IPv6 アドレスを手動で入力し、BYOIP CIDR のサイズよりも具体的なネットマスク長を選択できます。例えば、BYOIP プール CIDR が /50 の場合、VPC のネットマスク長は **/52** から **/60** の間で選択できます。IPv6 のネットマスク長は **/44** から **/60** の間で、/4 刻みです。

1. (オプション) **[テナンシー]** を選択します 。このオプションは、VPC で起動する EC2 インスタンスを、他の AWS アカウント と共有しているハードウェアで実行するか、または自分専用のハードウェアで実行するかを定義します。VPC のテナンシーで `Default` を選択すると、この VPC で起動された EC2 インスタンスは、インスタンスの起動時に指定されたテナンシーの属性を使用します。詳細については、「Amazon EC2 ユーザーガイド」の「[定義済みのパラメータを使用したインスタンスの起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)」を参照してください。VPC のテナンシーで `Dedicated` を選択すると、インスタンスは常に、ユーザー専用のハードウェアで実行される、[専有インスタンス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)として実行されます。AWS Outposts を使用している場合、その Outpost にはプライベート接続が必要となります。つまり、`Default` テナンシーを使用する必要があります。

1. (オプション) VPC にタグを追加するには、**[新しいタグを追加]** を選択し、タグキーとタグ値を入力します。

1. [**Create VPC（VPC の作成）**] を選択します。

1. VPC の作成後、サブネットを追加できます。詳細については、「[サブネットの作成](create-subnets.md)」を参照してください。

## AWS CLI を使用して VPC を作成する
<a name="create-vpc-cli"></a>

以下の手順には、VPC に加え、アプリケーションの実行に必要な追加の VPC リソースを作成する AWS CLI コマンド例が含まれています。この手順のすべてのコマンドを実行すると、VPC、パブリックサブネット、プライベートサブネット、各サブネットのルートテーブル、インターネットゲートウェイ、エグレス専用インターネットゲートウェイ、パブリック NAT ゲートウェイが作成されます。これらのリソースのすべてを必要としない場合は、必要なサンプルコマンドのみを使用できます。

**前提条件**  
開始する前に、AWS CLI をインストールして設定します。AWS CLI を設定するときには、AWS 認証情報の入力を求められます。この手順の例では、デフォルトのリージョンも設定済みであることを前提としています。設定していない場合は、`--region` オプションを各コマンドに追加します。詳細については、「[AWS CLI のインストールまたは更新](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」および「[AWS CLI の設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」を参照してください。

**タグ付け**  
タグは、[create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) コマンドを使用してリソースを作成した後に、リソースに追加できます。または、以下のようにリソースの作成コマンドに `--tag-specification` オプションを追加することもできます。

```
--tag-specifications ResourceType=vpc,Tags=[{Key=Name,Value=my-project}]
```

**AWS CLI を使用して VPC と VPC リソースを作成するには**

1. 以下の [create-vpc](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc.html) コマンドを使用して、指定された IPv4 CIDR ブロックを持つ VPC を作成します。

   ```
   aws ec2 create-vpc --cidr-block 10.0.0.0/24 --query Vpc.VpcId --output text
   ```

   または、デュアルスタック VPC を作成するには、次の例に示すように、Amazon が提供する IPv6 CIDR ブロックを追加する `--amazon-provided-ipv6-cidr-block` オプションを追加します。

   ```
   aws ec2 create-vpc --cidr-block 10.0.0.0/24 --amazon-provided-ipv6-cidr-block --query Vpc.VpcId --output text
   ```

   これらのコマンドは、新しい VPC の ID を返します。以下に例を示します。

   ```
   vpc-1a2b3c4d5e6f1a2b3
   ```

1. [デュアルスタック VPC] 以下の [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) コマンドを使用して、VPC に関連付けられている IPv6 CIDR ブロックを取得します。

   ```
   aws ec2 describe-vpcs --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query Vpcs[].Ipv6CidrBlockAssociationSet[].Ipv6CidrBlock --output text
   ```

   以下は出力の例です。

   ```
   2600:1f13:cfe:3600::/56
   ```

1. ユースケースに応じて、1 つ以上のサブネットを作成します。本番環境では、少なくとも 2 つのアベイラビリティーゾーンでリソースを起動することをお勧めします。以下のいずれかのコマンドを使用して各サブネットを作成します。
   + **IPv4 専用サブネット** — 特定の IPv4 CIDR ブロックを持つサブネットを作成するには、次の [create-subnet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-subnet.html) コマンドを使用します。

     ```
     aws ec2 create-subnet --vpc-id vpc-1a2b3c4d5e6f1a2b3 --cidr-block 10.0.1.0/20 --availability-zone us-east-2a --query Subnet.SubnetId --output text
     ```
   + **デュアルスタックサブネット** — デュアルスタック VPC を作成した場合、次のコマンドに示すように、`--ipv6-cidr-block` オプションを使用してデュアルスタックサブネットを作成できます。

     ```
     aws ec2 create-subnet --vpc-id vpc-1a2b3c4d5e6f1a2b3 --cidr-block 10.0.1.0/20 --ipv6-cidr-block 2600:1f13:cfe:3600::/64 --availability-zone us-east-2a --query Subnet.SubnetId --output text
     ```
   + **IPv6 専用サブネット** — デュアルスタック VPC を作成した場合、次のコマンドに示すように、`--ipv6-native`オプションを使用して IPv6 専用サブネットを作成できます。

     ```
     aws ec2 create-subnet --vpc-id vpc-1a2b3c4d5e6f1a2b3 --ipv6-native --ipv6-cidr-block 2600:1f13:cfe:3600::/64 --availability-zone us-east-2a --query Subnet.SubnetId --output text
     ```

   これらのコマンドは、新しいサブネットの ID を返します。以下に例を示します。

   ```
   subnet-1a2b3c4d5e6f1a2b3
   ```

1. ウェブサーバーまたは NAT ゲートウェイにパブリックサブネットが必要な場合は、次の操作を行います。

   1. 以下の [create-internet-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-internet-gateway.html) コマンドを使用して、インターネットゲートウェイを作成します。このコマンドは、新しいインターネットゲートウェイの ID を返します。

      ```
      aws ec2 create-internet-gateway --query InternetGateway.InternetGatewayId --output text
      ```

   1. 以下の [attach-internet-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/attach-internet-gateway.html) コマンドを使用して、インターネットゲートウェイを VPC に接続します。前の手順で返されたインターネットゲートウェイ ID を使用します。

      ```
      aws ec2 attach-internet-gateway --vpc-id vpc-1a2b3c4d5e6f1a2b3 --internet-gateway-id igw-id
      ```

   1. 以下の [create-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route-table.html) コマンドを使用して、パブリックサブネットのカスタムルートテーブルを作成します。このコマンドは、新しいルートテーブルの ID を返します。

      ```
      aws ec2 create-route-table --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query RouteTable.RouteTableId --output text
      ```

   1. 以下の [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) コマンドを使用して、すべての IPv4 トラフィックをインターネットゲートウェイに送信するルートをルートテーブルに作成します。パブリックサブネット用のルートテーブル ID を使用します。

      ```
      aws ec2 create-route --route-table-id rtb-id-public --destination-cidr-block 0.0.0.0/0 --gateway-id igw-id
      ```

   1. 以下の [associate-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-route-table.html) コマンドを使用して、ルートテーブルをパブリックサブネットに関連付けます。パブリックサブネット用のルートテーブル ID、パブリックサブネットの ID を使用します。

      ```
      aws ec2 associate-route-table --route-table-id rtb-id-public --subnet-id subnet-id-public-subnet
      ```

1. [IPv6] Egress-Only インターネットゲートウェイを追加すると、プライベートサブネットのインスタンスは IPv6 経由でインターネットにアクセスできますが (例:ソフトウェアアップデートの取得)、インターネットのホストはインスタンスにアクセスすることはできません。

   1. 以下の [create-egress-only-internet-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-egress-only-internet-gateway.html) コマンドを使用して、エグレス専用インターネットゲートウェイを作成します。このコマンドは、新しいインターネットゲートウェイの ID を返します。

      ```
      aws ec2 create-egress-only-internet-gateway --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query EgressOnlyInternetGateway.EgressOnlyInternetGatewayId --output text
      ```

   1. 以下の [create-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route-table.html) コマンドを使用して、プライベートサブネットのカスタムルートテーブルを作成します。このコマンドは、新しいルートテーブルの ID を返します。

      ```
      aws ec2 create-route-table --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query RouteTable.RouteTableId --output text
      ```

   1. 以下の [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) コマンドを使用して、すべての IPv6 トラフィックをエグレス専用インターネットゲートウェイに送信するルートをプライベートサブネット用のルートテーブルに作成します。前の手順で返されたルートテーブル ID を使用します。

      ```
      aws ec2 create-route --route-table-id rtb-id-private --destination-cidr-block ::/0 --egress-only-internet-gateway eigw-id
      ```

   1. 以下の [associate-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-route-table.html) コマンドを使用して、ルートテーブルをプライベートサブネットに関連付けます。

      ```
      aws ec2 associate-route-table --route-table-id rtb-id-private --subnet-id subnet-id-private-subnet
      ```

1. プライベートサブネット内のリソースに NAT ゲートウェイが必要な場合は、以下を実行してください。

   1. 以下の [allocate-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/allocate-address.html) コマンドを使用して、NAT ゲートウェイ用の Elastic IP アドレスを作成します。

      ```
      aws ec2 allocate-address --domain vpc --query AllocationId --output text
      ```

   1. 以下の [create-nat-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-nat-gateway.html) コマンドを使用して、パブリックサブネットに NAT ゲートウェイを作成します。前の手順で返された割り当て ID を使用します。

      ```
      aws ec2 create-nat-gateway --subnet-id subnet-id-public-subnet --allocation-id eipalloc-id
      ```

   1. (オプション) ステップ 5 でプライベートサブネット用のルートテーブルを既に作成している場合は、このステップをスキップしてください。それ以外の場合は、次の [create-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route-table.html) コマンドを使用して、プライベートサブネット用のルートテーブルを作成します。このコマンドは、新しいルートテーブルの ID を返します。

      ```
      aws ec2 create-route-table --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query RouteTable.RouteTableId --output text
      ```

   1. 以下の [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) コマンドを使用して、すべての IPv4 トラフィックを NAT ゲートウェイに送信するルートをプライベートサブネット用のルートテーブルに作成します。このステップまたはステップ 5 のいずれかで作成したプライベートサブネット用のルートテーブル ID を使用します。

      ```
      aws ec2 create-route --route-table-id rtb-id-private --destination-cidr-block 0.0.0.0/0 --gateway-id nat-id
      ```

   1. (オプション) ステップ 5 ですでにルートテーブルをプライベートサブネットに関連付けている場合は、このステップをスキップしてください。それ以外の場合は、次の [associate-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-route-table.html) コマンドを使用して、ルートテーブルをプライベートサブネットに関連付けます。このステップまたはステップ 5 のいずれかで作成したプライベートサブネット用のルートテーブル ID を使用します。

      ```
      aws ec2 associate-route-table --route-table-id rtb-id-private --subnet-id subnet-id-private-subnet
      ```