ゾーン NAT Gateway のマルチAZ化手順
ゾーン NAT Gateway の冗長化手順
こんにちは!コンサルティング部のくろすけです!
NAT Gateway を AZ ごとに常時配置すると可用性を高められる一方で、NAT Gateway の利用料金が AZ 数に応じて増加します。
コスト管理がシビアな環境では、通常時は NAT Gateway をシングル AZ 構成にし、必要に応じてマルチ AZ 構成に切り替える運用が考えられます。
この記事では、既存の NAT Gateway に加えて別 AZ に NAT Gateway を作成し、対象のプライベートサブネットが同じ AZ の NAT Gateway を使用する構成へ変更する手順を紹介します。
概要
パブリック NAT Gateway はパブリックサブネットに作成し、Elastic IP アドレスを割り当てます。
インターネットへ通信するプライベートサブネットのルートテーブルには、0.0.0.0/0 の送信先として NAT Gateway を設定します。
今回の構成では、各 AZ に次のリソースを作成します。
- パブリック NAT Gateway
- NAT Gateway 用の Elastic IP アドレス
- 同一 AZ のプライベートサブネット用ルートテーブル
- プライベートサブネットから NAT Gateway へのデフォルトルート
やってみた
ここでは、既存の NAT Gateway がある ap-northeast-1a に加え、ap-northeast-1c に NAT Gateway を作成し、1c のプライベートサブネットのデフォルトルートを新しい NAT Gateway へ切り替えます。
変更前は、ap-northeast-1c のプライベートサブネットも ap-northeast-1a の NAT Gateway を使用しています。

1. 切り替え前のインターネット接続を確認する
-
対象のプライベートサブネット内にある EC2 インスタンスへ接続する
-
次のコマンドを実行する
curl inet-ip.info -
表示された送信元 IPv4 アドレスを確認する
1aの NAT Gateway に割り当てられた Elastic IP アドレスが表示されます
切り替え後に、送信元 IPv4 アドレスが新しい NAT Gateway の Elastic IP アドレスへ変わったことを確認します。
2. プライベートサブネット用のルートテーブルを作成する
-
Amazon VPC コンソールで「ルートテーブル」を開く
-
「ルートテーブルを作成」を選択する

-
名前と対象 VPC を設定する
-
「ルートテーブルを作成」を選択する

3. Elastic IP アドレスを割り当てる
-
Amazon VPC コンソールで「Elastic IP アドレス」を開く
-
「Elastic IP アドレスを割り当てる」を選択する

-
ネットワークボーダーグループを NAT Gateway と同じリージョンに設定する
-
必要に応じて
Nameタグを設定する -
「割り当てる」を選択する

-
Elastic IP アドレスが作成されたことを確認する

4. パブリック NAT Gateway を作成する
-
Amazon VPC コンソールで「NAT ゲートウェイ」を開く
-
「NAT ゲートウェイを作成」を選択する

-
名前を設定する
-
ゾーンを選択する
-
NAT Gateway を配置するパブリックサブネットを選択する
-
手順 3 で割り当てた Elastic IP アドレスを選択する
-
「NAT ゲートウェイを作成」を選択する

-
状態が「Available」になることを確認する

NAT Gateway を配置するパブリックサブネットのルートテーブルには、0.0.0.0/0 の送信先として Internet Gateway が設定されている必要があります。
5. 新しいルートテーブルに NAT Gateway 向けルートを追加する
-
手順 2 で作成したルートテーブルを開く
-
「ルート」タブで「ルートを編集」を選択する

-
送信先に
0.0.0.0/0を入力する -
ターゲットに「NAT ゲートウェイ」を選択する
-
手順 4 で作成した NAT Gateway を選択する
-
「変更を保存」を選択する

6. プライベートサブネットを新しいルートテーブルに関連付ける
-
新しいルートテーブルで「サブネットの関連付け」タブを開く
-
「サブネットの関連付けを編集」を選択する

-
対象 AZ のプライベートサブネットを選択する
-
「関連付けを保存」を選択する

-
関連付けたサブネットと
0.0.0.0/0の NAT Gateway が意図どおりであることを確認するリソースマップで、プライベートサブネット、ルートテーブル、NAT Gateway の経路を確認できます。

7. 切り替え後のインターネット接続を確認する
-
手順 6 の関連付け後に、同じ EC2 インスタンスで次のコマンドを実行する
curl inet-ip.info -
表示された IPv4 アドレスが、手順 3 で NAT Gateway に割り当てた Elastic IP アドレスであることを確認する

パブリック NAT Gateway を経由する場合、外部サービスからは NAT Gateway に割り当てた Elastic IP アドレスが送信元として見えます。
切り戻し手順
切り替え後の状態を確認してから、切り替え手順を逆順にたどって元の構成へ戻します。
- 対象の EC2 インスタンスで
curl inet-ip.infoを実行し、今回追加した NAT Gateway の Elastic IP アドレスからインターネットへ接続できていることを確認する - 切り替え前から使用していた NAT Gateway の状態が「Available」であることを確認する
- プライベートサブネットを、切り替え前のルートテーブルへ関連付ける
- 対象の EC2 インスタンスで
curl inet-ip.infoを実行し、切り替え前の NAT Gateway の Elastic IP アドレスが表示されることを確認する - 今回追加したルートテーブルから、今回追加した NAT Gateway をターゲットとする
0.0.0.0/0のルートを削除する - 今回追加した NAT Gateway を削除し、状態が「Deleted」になることを確認する
- 今回追加した Elastic IP アドレスを解放する
- 今回追加したルートテーブルを削除する
あとがき
NAT Gateway の作成自体はコンソールから簡単に実施できます。
コスト管理がシビアで、冗長構成が常に必要ではない場合には、この手順を参考にしてみてください。
以上、くろすけでした!





