# NatProvider

NAT providers.

Determines what type of NAT provider to create, either NAT gateways or NAT
instance.

Extends: NatProvider
Superclass of: NatGatewayProvider, NatInstanceProvider, NatInstanceProviderV2, RegionalNatGatewayProvider

- Source: [`aws-ec2/lib/nat.ts`](https://github.com/aws/aws-cdk/blob/v2.274.0/packages/aws-cdk-lib/aws-ec2/lib/nat.ts#L65)
- Type last changed: v2.272.0 · 30 Sep 2026

## Example

```ts
const natInstanceProvider = ec2.NatProvider.instance({
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.T4G, ec2.InstanceSize.LARGE),
  machineImage: new ec2.AmazonLinuxImage(),
  creditSpecification: ec2.CpuCredits.UNLIMITED,
});
new ec2.Vpc(this, 'VPC', {
  natGatewayProvider: natInstanceProvider,
});
```

## Initializer

```ts
new NatProvider()
```

## Properties

- `configuredGateways`: [GatewayConfig](/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.GatewayConfig.html)[] (required) — Return list of gateways spawned by the provider.

## Methods

- `configureNat(options: ConfigureNatOptions): void` — Called by the VPC to configure NAT.

  Don't call this directly, the VPC will call it automatically.

- `configureSubnet(subnet: PrivateSubnet): void` — Configures subnet with the gateway.

  Don't call this directly, the VPC will call it automatically.

- `gateway(props?: NatGatewayProps): NatProvider // chainable` (static) — Use NAT Gateways to provide NAT services for your VPC.

  NAT gateways are managed by AWS.

- `instance(props: NatInstanceProps): NatInstanceProvider` (static) — use instanceV2. 'instance' is deprecated since NatInstanceProvider uses a instance image that has reached EOL on Dec 31 2023

  NAT instances are managed by you, but in return allow more configuration.

  Be aware that instances created using this provider will not be
  automatically replaced if they are stopped for any reason. You should implement
  your own NatProvider based on AutoScaling groups if you need that.

- `instanceV2(props: NatInstanceProps): NatInstanceProviderV2` (static) — Use NAT instances to provide NAT services for your VPC.

  NAT instances are managed by you, but in return allow more configuration.

  Be aware that instances created using this provider will not be
  automatically replaced if they are stopped for any reason. You should implement
  your own NatProvider based on AutoScaling groups if you need that.

- `regionalGateway(props?: RegionalNatGatewayProviderProps): RegionalNatGatewayProvider` (static) — Use a Regional NAT Gateway to provide NAT services for your VPC.

  Regional NAT Gateways provide automatic multi-AZ redundancy with a single
  gateway that scales across availability zones. AWS automatically manages
  AZ coverage and EIP allocation.
