Package com.pulumi.aws.ec2
Class NatGateway
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.ec2.NatGateway
-
public class NatGateway extends com.pulumi.resources.CustomResourceProvides a resource to create a VPC NAT Gateway. > **WARNING:** You should not use the `aws.ec2.NatGateway` resource that has `secondaryAllocationIds` in conjunction with an `aws.ec2.NatGatewayEipAssociation` resource. Doing so may cause perpetual differences, and result in associations being overwritten. ## Example Usage ### Public NAT
### Public NAT with Secondary Private IP Addressespackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.NatGateway; import com.pulumi.aws.ec2.NatGatewayArgs; import com.pulumi.resources.CustomResourceOptions; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new NatGateway("example", NatGatewayArgs.builder() .allocationId(exampleAwsEip.id()) .subnetId(exampleAwsSubnet.id()) .tags(Map.of("Name", "gw NAT")) .build(), CustomResourceOptions.builder() .dependsOn(exampleAwsInternetGateway) .build()); } }
### Private NATpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.NatGateway; import com.pulumi.aws.ec2.NatGatewayArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new NatGateway("example", NatGatewayArgs.builder() .allocationId(exampleAwsEip.id()) .subnetId(exampleAwsSubnet.id()) .secondaryAllocationIds(secondary.id()) .secondaryPrivateIpAddresses("10.0.1.5") .build()); } }
### Private NAT with Secondary Private IP Addressespackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.NatGateway; import com.pulumi.aws.ec2.NatGatewayArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new NatGateway("example", NatGatewayArgs.builder() .connectivityType("private") .subnetId(exampleAwsSubnet.id()) .build()); } }
### Regional NAT Gateway with auto modepackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.NatGateway; import com.pulumi.aws.ec2.NatGatewayArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new NatGateway("example", NatGatewayArgs.builder() .connectivityType("private") .subnetId(exampleAwsSubnet.id()) .secondaryPrivateIpAddressCount(7) .build()); } }
### Regional NAT Gateway with manual modepackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.AwsFunctions; import com.pulumi.aws.inputs.GetAvailabilityZonesArgs; import com.pulumi.aws.ec2.Vpc; import com.pulumi.aws.ec2.VpcArgs; import com.pulumi.aws.ec2.InternetGateway; import com.pulumi.aws.ec2.InternetGatewayArgs; import com.pulumi.aws.ec2.NatGateway; import com.pulumi.aws.ec2.NatGatewayArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder() .build()); var example = new Vpc("example", VpcArgs.builder() .cidrBlock("10.0.0.0/16") .build()); var exampleInternetGateway = new InternetGateway("exampleInternetGateway", InternetGatewayArgs.builder() .vpcId(example.id()) .build()); var exampleNatGateway = new NatGateway("exampleNatGateway", NatGatewayArgs.builder() .vpcId(example.id()) .availabilityMode("regional") .build()); } }
## Import ### Identity Schema #### Required * `id` (String) ID of the NAT Gateway. #### Optional * `accountId` (String) AWS Account where this resource is managed. * `region` (String) Region where this resource is managed. Using `pulumi import`, import NAT Gateways using the `id`. For example: ```sh $ pulumi import aws:ec2/natGateway:NatGateway private_gw nat-05dba92075d71c408 ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.AwsFunctions; import com.pulumi.aws.inputs.GetAvailabilityZonesArgs; import com.pulumi.aws.ec2.Vpc; import com.pulumi.aws.ec2.VpcArgs; import com.pulumi.aws.ec2.InternetGateway; import com.pulumi.aws.ec2.InternetGatewayArgs; import com.pulumi.aws.ec2.Eip; import com.pulumi.aws.ec2.EipArgs; import com.pulumi.aws.ec2.NatGateway; import com.pulumi.aws.ec2.NatGatewayArgs; import com.pulumi.aws.ec2.inputs.NatGatewayAvailabilityZoneAddressArgs; import com.pulumi.codegen.internal.KeyedValue; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder() .build()); var example = new Vpc("example", VpcArgs.builder() .cidrBlock("10.0.0.0/16") .build()); var exampleInternetGateway = new InternetGateway("exampleInternetGateway", InternetGatewayArgs.builder() .vpcId(example.id()) .build()); for (var i = 0; i < 3; i++) { new Eip("exampleEip-" + i, EipArgs.builder() .domain("vpc") .build()); } var exampleNatGateway = new NatGateway("exampleNatGateway", NatGatewayArgs.builder() .availabilityZoneAddresses( NatGatewayAvailabilityZoneAddressArgs.builder() .allocationIds(exampleEip[0].id()) .availabilityZone(available.names()[0]) .build(), NatGatewayAvailabilityZoneAddressArgs.builder() .allocationIds( exampleEip[1].id(), exampleEip[2].id()) .availabilityZone(available.names()[1]) .build()) .vpcId(example.id()) .availabilityMode("regional") .build()); } }
-
-
Constructor Summary
Constructors Constructor Description NatGateway(java.lang.String name)NatGateway(java.lang.String name, NatGatewayArgs args)NatGateway(java.lang.String name, NatGatewayArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.util.Optional<java.lang.String>>allocationId()com.pulumi.core.Output<java.lang.String>associationId()com.pulumi.core.Output<java.lang.String>autoProvisionZones()com.pulumi.core.Output<java.lang.String>autoScalingIps()com.pulumi.core.Output<java.lang.String>availabilityMode()com.pulumi.core.Output<java.util.Optional<java.util.List<NatGatewayAvailabilityZoneAddress>>>availabilityZoneAddresses()com.pulumi.core.Output<java.util.Optional<java.lang.String>>connectivityType()static NatGatewayget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, NatGatewayState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.lang.String>networkInterfaceId()com.pulumi.core.Output<java.lang.String>privateIp()com.pulumi.core.Output<java.lang.String>publicIp()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.util.List<NatGatewayRegionalNatGatewayAddress>>regionalNatGatewayAddresses()com.pulumi.core.Output<java.lang.String>regionalNatGatewayAutoMode()com.pulumi.core.Output<java.lang.String>routeTableId()com.pulumi.core.Output<java.util.List<java.lang.String>>secondaryAllocationIds()com.pulumi.core.Output<java.lang.Integer>secondaryPrivateIpAddressCount()com.pulumi.core.Output<java.util.List<java.lang.String>>secondaryPrivateIpAddresses()com.pulumi.core.Output<java.util.Optional<java.lang.String>>subnetId()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()com.pulumi.core.Output<java.lang.String>vpcId()
-
-
-
Constructor Detail
-
NatGateway
public NatGateway(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
NatGateway
public NatGateway(java.lang.String name, @Nullable NatGatewayArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
NatGateway
public NatGateway(java.lang.String name, @Nullable NatGatewayArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
allocationId
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> allocationId()
- Returns:
- The Allocation ID of the Elastic IP address for the NAT Gateway. Required when `connectivityType` is set to `public` and `availabilityMode` is set to `zonal`. When `availabilityMode` is set to `regional`, this must not be set; instead, use the `availabilityZoneAddress` block to specify EIPs for each AZ.
-
associationId
public com.pulumi.core.Output<java.lang.String> associationId()
- Returns:
- Association ID of the Elastic IP address.
-
autoProvisionZones
public com.pulumi.core.Output<java.lang.String> autoProvisionZones()
- Returns:
- (regional NAT gateways only) Indicates whether AWS automatically manages AZ coverage.
-
autoScalingIps
public com.pulumi.core.Output<java.lang.String> autoScalingIps()
- Returns:
- (regional NAT gateways only) Indicates whether AWS automatically allocates additional Elastic IP addresses (EIPs) in an AZ when the NAT gateway needs more ports due to increased concurrent connections to a single destination from that AZ.
-
availabilityMode
public com.pulumi.core.Output<java.lang.String> availabilityMode()
- Returns:
- Specifies whether to create a zonal (single-AZ) or regional (multi-AZ) NAT gateway. Valid values are `zonal` and `regional`. Defaults to `zonal`.
-
availabilityZoneAddresses
public com.pulumi.core.Output<java.util.Optional<java.util.List<NatGatewayAvailabilityZoneAddress>>> availabilityZoneAddresses()
- Returns:
- Repeatable configuration block for the Elastic IP addresses (EIPs) and availability zones for the regional NAT gateway. When not specified, the regional NAT gateway will automatically expand to new AZs and associate EIPs upon detection of an elastic network interface (auto mode). When specified, auto-expansion is disabled (manual mode). See `availabilityZoneAddress` below for details.
-
connectivityType
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> connectivityType()
- Returns:
- Connectivity type for the NAT Gateway. Valid values are `private` and `public`. When `availabilityMode` is set to `regional`, this must be set to `public`. Defaults to `public`.
-
networkInterfaceId
public com.pulumi.core.Output<java.lang.String> networkInterfaceId()
- Returns:
- ID of the network interface.
-
privateIp
public com.pulumi.core.Output<java.lang.String> privateIp()
- Returns:
- The private IPv4 address to assign to the NAT Gateway. If you don't provide an address, a private IPv4 address will be automatically assigned.
-
publicIp
public com.pulumi.core.Output<java.lang.String> publicIp()
- Returns:
- Public IP address.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
-
regionalNatGatewayAddresses
public com.pulumi.core.Output<java.util.List<NatGatewayRegionalNatGatewayAddress>> regionalNatGatewayAddresses()
- Returns:
- (regional NAT gateways only) Repeatable blocks for information about the IP addresses and network interface associated with the regional NAT gateway.
-
regionalNatGatewayAutoMode
public com.pulumi.core.Output<java.lang.String> regionalNatGatewayAutoMode()
-
routeTableId
public com.pulumi.core.Output<java.lang.String> routeTableId()
- Returns:
- (regional NAT gateways only) ID of the automatically created route table.
-
secondaryAllocationIds
public com.pulumi.core.Output<java.util.List<java.lang.String>> secondaryAllocationIds()
- Returns:
- A list of secondary allocation EIP IDs for this NAT Gateway. To remove all secondary allocations an empty list should be specified.
-
secondaryPrivateIpAddressCount
public com.pulumi.core.Output<java.lang.Integer> secondaryPrivateIpAddressCount()
- Returns:
- The number of secondary private IPv4 addresses you want to assign to the NAT Gateway.
-
secondaryPrivateIpAddresses
public com.pulumi.core.Output<java.util.List<java.lang.String>> secondaryPrivateIpAddresses()
- Returns:
- A list of secondary private IPv4 addresses to assign to the NAT Gateway. To remove all secondary private addresses an empty list should be specified.
-
subnetId
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> subnetId()
- Returns:
- The Subnet ID of the subnet in which to place the NAT Gateway. Required when `availabilityMode` is set to `zonal`. Must not be set when `availabilityMode` is set to `regional`.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
-
tagsAll
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
- Returns:
- A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
-
vpcId
public com.pulumi.core.Output<java.lang.String> vpcId()
- Returns:
- VPC ID where this NAT Gateway will be created. Required when `availabilityMode` is set to `regional`.
-
get
public static NatGateway get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable NatGatewayState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-