

# 例: プライベートサブネットにサーバーがある VPC および NAT
<a name="vpc-example-private-subnets-nat"></a>

この例は、本番環境のサーバーに使用できる VPC を作成する方法について説明しています。回復性を高めるには、Auto Scaling グループと Application Load Balancer を使用してサーバーを 2 つのアベイラビリティーゾーンにデプロイします。セキュリティを強化するために、サーバーをプライベートサブネットにデプロイします。サーバーはロードバランサーを介してリクエストを受信します。サーバーは、NAT ゲートウェイを使用してインターネットに接続できます。回復性を高めるには、NAT ゲートウェイを両方のアベイラビリティーゾーンにデプロイします。

**Topics**
+ [

## 概要:
](#overview-vpc-private-subnets-nat)
+ [

## 1. VPC を作成する
](#create-vpc-private-subnets-nat)
+ [

## 2. アプリケーションをデプロイします
](#deploy-private-subnets)
+ [

## 3. 設定をテストする
](#test-private-subnets)
+ [

## 4. クリーンアップ
](#clean-up-private-subnets)

## 概要:
<a name="overview-vpc-private-subnets-nat"></a>

次の図は、この例に含まれるリソースの概要を示しています。VPC には、2 つのアベイラビリティーゾーンにパブリックサブネットとプライベートサブネットがあります。各パブリックサブネットには、NAT ゲートウェイとロードバランサーノードが含まれています。サーバーはプライベートサブネットで実行され、Auto Scaling グループを使用して起動および終了し、ロードバランサーからトラフィックを受信します。サーバーは、NAT ゲートウェイを使用してインターネットに接続できます。サーバーは、ゲートウェイ VPC エンドポイントを使用して Amazon S3 に接続できます。

![\[2 つのアベイラビリティーゾーンにサブネットを持つ VPC です。\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/images/vpc-example-private-subnets.png)


### ルーティング
<a name="routing-vpc-private-subnets-nat"></a>

Amazon VPC コンソールを使用してこの VPC を作成すると、ローカルルートとインターネットゲートウェイへのルートを含むパブリックサブネットのルートテーブルが作成されます。また、ローカルルートを含むプライベートサブネットのルートテーブルと、NAT ゲートウェイ、下り専用インターネットゲートウェイ、ゲートウェイ VPC エンドポイントへのルートが作成されます。

以下は、IPv4 と IPv6 の両方のルートを含むパブリックサブネットのルートテーブルの例です。デュアルスタックサブネットの代わりに IPv4 専用サブネットを作成した場合、ルートテーブルには IPv4 ルートのみが含まれます。


| ルーティング先 | ターゲット | 
| --- | --- | 
| 10.0.0.0/16 | ローカル | 
| 2001:db8:1234:1a00::/56 | ローカル | 
| 0.0.0.0/0 | igw-id | 
| ::/0 | igw-id | 

以下は、IPv4 と IPv6 の両方のルートを含む、いずれかのプライベートサブネットのルートテーブルの例です。IPv4 専用サブネットを作成した場合、ルートテーブルには IPv4 ルートのみが含まれます。最後のルートは、Amazon S3 を宛先とするトラフィックをゲートウェイ VPC エンドポイントに送信します。


| ルーティング先 | ターゲット | 
| --- | --- | 
| 10.0.0.0/16 | ローカル | 
| 2001:db8:1234:1a00::/56 | ローカル | 
| 0.0.0.0/0 | nat-gateway-id | 
| ::/0 | eigw-id | 
| s3-prefix-list-id | s3-gateway-id | 

### セキュリティ
<a name="security-vpc-private-subnets-nat"></a>

以下は、サーバーに関連付けるセキュリティグループ用に作成できるルールの例です。セキュリティグループは、リスナーポートとプロトコルを経由するロードバランサーからのトラフィックを許可する必要があります。ヘルスチェックトラフィックも許可する必要があります。


| ソース | プロトコル | ポート範囲 | コメント | 
| --- | --- | --- | --- | 
| ロードバランサーのセキュリティグループの ID | リスナープロトコル | リスナーポート | リスナーポートのロードバランサーからのインバウンドトラフィックを許可する | 
| ロードバランサーのセキュリティグループの ID | ヘルスチェックプロトコル | ヘルスチェックポート | ロードバランサーからのインバウンドヘルスチェックトラフィックを許可する | 

## 1. VPC を作成する
<a name="create-vpc-private-subnets-nat"></a>

次の手順を使用して、2 つのアベイラビリティーゾーン、および各アベイラビリティーゾーンの NAT ゲートウェイでパブリックサブネットとプライベートサブネットを持つ VPC を作成します。

**VPC を作成するには**

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

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

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

1. **VPC を設定する**

   1. [**名前タグの自動生成**] に、VPC の名前を入力します。

   1. **[IPv4 CIDR ブロック]** で、デフォルトの候補を維持するか、アプリケーションまたはネットワークが必要とする CIDR ブロックを入力します。

   1. アプリケーションが IPv6 アドレスを使用して通信する場合は、**[IPv6 CIDR ブロック]**、**[Amazon が提供する IPv6 CIDR ブロック]** を選択します。

1. **サブネットを設定する**

   1. **[アベイラビリティーゾーンの数]** で **[2]** を選択すると、複数のアベイラビリティーゾーンでインスタンスを起動し、回復性を改善できます。

   1. **[Number of public subnets]** (パブリックサブネットの数) で **2** を選択します。

   1. **[Number of private subnets]** (プライベートサブネットの数) は、**2** を選択します。

   1. パブリックサブネットのデフォルトの CIDR ブロックをそのまま使用することも、**[サブネット CIDR ブロックをカスタマイズする]** を展開して CIDR ブロックを入力することもできます。詳細については、「[サブネット CIDR ブロック](subnet-sizing.md)」を参照してください。

1. **[NAT ゲートウェイ]** で **[AZ ごとに 1]** を選択すると、回復性が高まります。

1. アプリケーションが IPv6 アドレスを使用して通信する場合、**[Egress Only インターネットゲートウェイ]** で **[はい]** を選択します。

1. インスタンスが S3 バケットにアクセスする必要がある場合は、**[VPC エンドポイント]** を、デフォルトの **[S3 ゲートウェイ]** のままにします。デフォルトのままにしないと、プライベートサブネットのインスタンスが Amazon S3 にアクセスできません。このオプションはコストがかからないため、今後、S3 バケットを使用する可能性がある場合は、デフォルトのままにしておくことができます。**[なし]** を選択した場合、後からいつでもゲートウェイ VPC エンドポイントを追加できます。

1. **[DNS オプション]** で、**[DNS ホスト名を有効化]** をオフにします。

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

## 2. アプリケーションをデプロイします
<a name="deploy-private-subnets"></a>

開発環境またはテスト環境でのサーバーのテストを完了し、アプリケーションを本番環境にデプロイするために使用するスクリプトまたはイメージを作成済みであることが理想的です。

[Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/) を使用すると、複数のアベイラビリティーゾーンにサーバーをデプロイし、アプリケーションに必要な最小限のサーバー容量を維持できます。

**Auto Scaling グループを使用してインスタンスを起動するには**

1. Amazon EC2 Auto Scaling を使用して EC2 インスタンスを起動する際に必要になる、設定情報を指定するための起動テンプレートを作成します。詳細な手順については、「Amazon EC2 Auto Scaling ユーザーガイド」の「[Auto Scaling グループの起動テンプレートを作成する](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html)」を参照してください。

1. 最小サイズ、最大サイズ、必要なサイズを持つ EC2 インスタンスのコレクションである Auto Scaling グループを作成します。詳細な手順については、「Amazon EC2 Auto Scaling ユーザーガイド」の「[起動テンプレートを使用して Auto Scaling グループを作成する](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-launch-template.html)」を参照してください。

1. Auto Scaling グループ内のインスタンス全体にトラフィックを均等に分散するロードバランサーを作成し、Auto Scaling グループにアタッチします。詳細については、「[Elastic Load Balancing ユーザーガイド](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)」および「Amazon EC2 Auto Scaling ユーザーガイド」の「[Elastic Load Balancing を使用する](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html)」を参照してください。

## 3. 設定をテストする
<a name="test-private-subnets"></a>

アプリケーションのデプロイが完了したら、それをテストできます。アプリケーションが想定どおりのトラフィックを送受信できない場合は、Reachability Analyzer を使用してトラブルシューティングを行います。例えば、Reachability Analyzer は、ルートテーブルやセキュリティグループの設定上の問題を特定できます。詳細については、「[Reachability Analyzer Guide](https://docs.aws.amazon.com/vpc/latest/reachability/)」(到達可能性アナライザーガイド) を参照してください。

## 4. クリーンアップ
<a name="clean-up-private-subnets"></a>

不要になった設定は、削除できます。VPC を削除する前に、Auto Scaling グループを削除してインスタンスを終了し、NAT ゲートウェイを削除してロードバランサーを削除する必要があります。詳細については、「[VPC の削除](delete-vpc.md)」を参照してください。