はじめに
AWS NAT Gatewayに新しく、リージョナルNAT Gatewayが追加されました。この機能により、単一のNAT Gatewayを作成するだけで、ワークロードの存在に基づいてVPC内の複数のアベイラビリティーゾーンに自動的に拡張・縮小し、高可用性を維持しながら設定と管理を簡素化できます。
AWS NAT Gateway now supports regional availability - AWS
早速、作成して動作を確認してみました。
リージョナルNAT Gatewayとは
先に簡単に、リージョナルNAT Gatewayで何が変わり、何がよくなるのかをまとめます。
- マルチAZ自動展開: 複数のAZに自動的にNAT Gatewayを配置。従来ですと、AZごとにNAT Gatewayを作成しルートテーブルを管理する必要がありました
- 管理の簡素化: 自動で単一のNAT Gatewayが展開されるため、ルートテーブルもAZ毎に異なった宛先にする必要がなくなります
- セキュリティの強化: パブリックサブネットの作成が不要となり、不用意にパブリックサブネットにリソースが作成されることを防げます
- IP上限の引き上げ: ゾーンNAT Gatewayに比べ利用可能なIPアドレス数が増えています(8 -> 32)。より多くのクライアントによる接続が可能になります
- 手動モード: 手動でNAT Gatewayを配置することも可能です。自動で拡張されたくない場合な手動モードで、ゾーンNAT Gatewayのように管理も可能です
実際に試してみる
では、実際に試してみましょう。リリース時点ではCLIもしくはSDKからのみ作成可能で、マネジメントコンソールからは作成不可となっています。
環境情報
$ aws --version aws-cli/2.32.0 Python/3.13.9 Linux/6.1.156-177.286.amzn2023.x86_64 exec-env/CloudShell exe/x86_64.amzn.2023
リージョナルNAT Gatewayの作成
リージョナルNAT Gatewayを作成するには、--availability-mode regionalオプションを指定します。
aws ec2 create-nat-gateway \ --vpc-id vpc-073d4c2cf7e2667d5 \ --availability-mode regional
レスポンス:
{ "ClientToken": "989c6cc3-5325-470a-9897-7b600bb53a15", "NatGateway": { "CreateTime": "2025-11-20T00:38:29+00:00", "NatGatewayAddresses": [], "NatGatewayId": "nat-1138e09e22001462a", "State": "pending", "VpcId": "vpc-073d4c2cf7e2667d5", "ConnectivityType": "public", "AvailabilityMode": "regional", "AutoScalingIps": "enabled", "AutoProvisionZones": "enabled" } }
注目すべきポイントは以下のとおりです。
AvailabilityMode:regionalが指定されているAutoScalingIps:enabled- Elastic IPの自動スケーリングが有効AutoProvisionZones:enabled- AZへの自動プロビジョニングが有効
なお、今回は自動モードで作成されていますが、IPやAZへの展開を手動で行う手動モードもあるようです。
マネジメントコンソールでもNAT Gatewayを確認できます。ただ、リージョナルであることの確認やIPアドレスの編集などはまだ未対応です。

作成後の状態確認
少し待ってから状態を確認すると、複数のAZにElastic IPが自動的に割り当てられていることがわかります。
aws ec2 describe-nat-gateways --nat-gateway-ids nat-1138e09e22001462a
レスポンス:
{ "NatGateways": [ { "CreateTime": "2025-11-20T00:38:29+00:00", "NatGatewayAddresses": [ { "AllocationId": "eipalloc-04f5a2cfa401a958c", "PublicIp": "xxx.xxx.xxx.xxx", "AssociationId": "eipassoc-038e876386b490d73", "Status": "succeeded", "AvailabilityZone": "us-east-1b", "AvailabilityZoneId": "use1-az4" }, { "AllocationId": "eipalloc-06aa94792ae563af2", "PublicIp": "x.x.x.x", "AssociationId": "eipassoc-007fcef17b2311e27", "Status": "succeeded", "AvailabilityZone": "us-east-1a", "AvailabilityZoneId": "use1-az2" } ], "NatGatewayId": "nat-1138e09e22001462a", "State": "available", "VpcId": "vpc-073d4c2cf7e2667d5", "Tags": [], "ConnectivityType": "public", "AvailabilityMode": "regional", "AutoScalingIps": "enabled", "AutoProvisionZones": "enabled", "RouteTableId": "rtb-0835fb1922839075e" } ] }
注目すべきポイントは以下のとおりです。
NatGatewayAddressesに2つのエントリが存在- それぞれ異なるAZ(
us-east-1aとus-east-1b)に配置 - 各AZに独自のElastic IPが自動的に割り当てられている
ルートテーブルの確認
リージョナルNAT Gatewayは、専用のルートテーブルに関連付けられます。
aws ec2 describe-route-tables --route-table-ids rtb-0835fb1922839075e
レスポンス:
{ "RouteTables": [ { "Associations": [ { "Main": false, "RouteTableAssociationId": "rtbassoc-042d2c2ae45a9e2c5", "RouteTableId": "rtb-0835fb1922839075e", "GatewayId": "nat-1138e09e22001462a", "AssociationState": { "State": "associated" } } ], "PropagatingVgws": [], "RouteTableId": "rtb-0835fb1922839075e", "Routes": [ { "DestinationCidrBlock": "10.20.0.0/16", "GatewayId": "local", "Origin": "CreateRouteTable", "State": "active" }, { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": "igw-0198cc91057a8853e", "Origin": "CreateRoute", "State": "active" }, { "DestinationIpv6CidrBlock": "2600:1f18:640c:7e00::/56", "GatewayId": "local", "Origin": "CreateRouteTable", "State": "active" } ], "Tags": [], "VpcId": "vpc-073d4c2cf7e2667d5", "OwnerId": "xxx" } ] }
ルートテーブルのAssociationsを見ると、GatewayIdにNAT GatewayのIDが関連付けられていることがわかります。これはリージョナルNAT Gateway専用のルートテーブルです。
サブネットルートテーブルの編集
既存のサブネットのルートテーブルへ、今回作成したリージョナルNAT Gatewayへのルートを追加します。

これで、リージョナルNAT Gatewayを利用してインターネットへの接続が可能になりました。異なるAZに複数サブネットがある場合も、宛先としては同一のNAT Gatewayを指定できます。
ENIを追加してAZ拡張が実施されるか確認してみる
ドキュメントには、以下のとおりENIの検知を契機にAZに対してNAT Gatewayが追加されるとあります。
When you launch resources in a new Availability Zone, the regional NAT gateway detects the presence of a network interface (ENI) in that Availability Zone and automatically expands to that zone. Similarly, the NAT Gateway contracts from the Availability Zone that has no active workloads.
試しにENIのみを作成(EC2にアタッチなし)したところ、しばらくして追加のIPが付与されていることが確認できました。ドキュメント通りにENIを検知して、NAT Gatewayが拡張されています。
aws ec2 describe-nat-gateways --nat-gateway-ids nat-1138e09e22001462a
{
"NatGateways": [
{
"CreateTime": "2025-11-20T00:38:29+00:00",
"NatGatewayAddresses": [
{
"AllocationId": "eipalloc-04f5a2cfa401a958c",
"PublicIp": "x.x.x.x",
"AssociationId": "eipassoc-038e876386b490d73",
"Status": "succeeded"
},
{
"AllocationId": "eipalloc-06aa94792ae563af2",
"PublicIp": "x.x.x.x",
"AssociationId": "eipassoc-007fcef17b2311e27",
"Status": "succeeded"
},
{
"AllocationId": "eipalloc-0533efd69df1d20e0",
"PublicIp": "x.x.x.x",
"AssociationId": "eipassoc-038332dda73b1df6f",
"Status": "succeeded"
}
],
"NatGatewayId": "nat-1138e09e22001462a",
"State": "available",
"VpcId": "vpc-073d4c2cf7e2667d5",
"Tags": [],
"ConnectivityType": "public"
}
]
}
手動モードでの作成
手動モードでは、EIPの割り当てと、どのAZに対してNAT Gatewayを展開するかを手動で指定することが可能です。
NAT Gatewayを作成する際に、以下の様にオプション--availability-zone-addressでEIPやAZを指定します。
$ aws ec2 create-nat-gateway \
--vpc-id vpc-073d4c2cf7e2667d5 \
--availability-mode regional \
--availability-zone-address '[
{
"AvailabilityZone": "us-east-1a",
"AllocationIds": ["eipalloc-0002c72e76b2b1523"]
},
{
"AvailabilityZone": "us-east-1d",
"AllocationIds": ["eipalloc-0178da0daa7b001cf"]
}
]'
しばらく待つと、指定したEIPとAZでNAT Gatewayが立ち上がります。
$ aws ec2 describe-nat-gateways --nat-gateway-ids nat-12a01e8b84b14c1a6
{
"NatGateways": [
{
"CreateTime": "2025-11-20T06:49:25+00:00",
"NatGatewayAddresses": [
{
"AllocationId": "eipalloc-0178da0daa7b001cf",
"PublicIp": "x.x.x.x",
"AssociationId": "eipassoc-07d4f4a5979ff8132",
"Status": "succeeded",
"AvailabilityZone": "us-east-1d",
"AvailabilityZoneId": "use1-az1"
},
{
"AllocationId": "eipalloc-0002c72e76b2b1523",
"PublicIp": "x.x.x.x",
"AssociationId": "eipassoc-0fefcd7c3479819ee",
"Status": "succeeded",
"AvailabilityZone": "us-east-1a",
"AvailabilityZoneId": "use1-az2"
}
],
"NatGatewayId": "nat-12a01e8b84b14c1a6",
"State": "available",
"VpcId": "vpc-073d4c2cf7e2667d5",
"Tags": [],
"ConnectivityType": "public",
"AvailabilityMode": "regional",
"AutoScalingIps": "disabled",
"AutoProvisionZones": "disabled",
"RouteTableId": "rtb-0d137aa25841e72bc"
}
]
}
AutoScalingIpsとAutoProvisionZonesが無効になっています。
料金体系
リージョナルNAT Gatewayの料金は、従来のNAT Gatewayとは別に料金体系が設定されています。ただし、AZごとに作成された分に費用がかかるという点と、単位あたりの料金は変わっておらず、コスト的にはあまり変化はないでしょう。
以下は、東京リージョンの料金となります。
従来のNAT Gateway料金
- 時間料金: $0.062/時間
- データ処理料金: $0.062/GB
リージョナルNAT Gateway料金
- 時間料金: $0.062/時間/AZ
- データ処理料金: $0.062/GB
料金計算例
3つのAZに展開されたリージョナルNAT Gatewayを使用した場合:
- 時間料金: $0.062 × 3 AZ = $0.186/時間
- データ処理料金: $0.062/GB
従来の3AZ構成(各AZにNAT Gatewayを個別作成)と比較すると、時間料金は同じですが、管理の手間が大幅に削減されます。
まとめ
リージョナルNAT Gatewayは、マルチAZ構成のNAT Gatewayを簡単に実現できる便利な機能です。従来は各AZごとにNAT Gatewayを作成し、それぞれにElastic IPを割り当て、ルートテーブルを設定する必要がありましたが、リージョナル版では1つのコマンドで完結します。
パブリックなNAT Gatewayが必要であれば、ファーストチョイスとしてリージョナルNAT Gatewayを選んで良いのではないでしょうか。
参考
石田順一(記事一覧)
カスタマーサクセス部 CS3課