Class NatGateway


  • public class NatGateway
    extends com.pulumi.resources.CustomResource
    Provides 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
     
     package 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());
     
         }
     }
     
     
    ### Public NAT with Secondary Private IP Addresses
     
     package 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
     
     package 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());
     
         }
     }
     
     
    ### Private NAT with Secondary Private IP Addresses
     
     package 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 auto mode
     
     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.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());
     
         }
     }
     
     
    ### Regional NAT Gateway with manual mode
     
     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());
     
         }
     }
     
     
    ## 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 ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • 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 NatGateway get​(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()  
      • Methods inherited from class com.pulumi.resources.CustomResource

        getId, id, idFuture
      • Methods inherited from class com.pulumi.resources.Resource

        getChildResources, getResourceName, getResourceType, getUrn, pulumiChildResources, pulumiResourceName, pulumiResourceType, urn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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.