text: # coding=utf-8
  # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
  # *** Do not edit by hand unless you're certain you know what you are doing! ***
  
  import pulumi
  import pulumi.runtime
  
  class NatGateway(pulumi.CustomResource):
      """
      Provides a resource to create a VPC NAT Gateway.
      """
      def __init__(__self__, __name__, __opts__=None, allocation_id=None, network_interface_id=None, private_ip=None, public_ip=None, subnet_id=None, tags=None):
          """Create a NatGateway resource with the given unique name, props, and options."""
          if not __name__:
              raise TypeError('Missing resource name argument (for URN creation)')
          if not isinstance(__name__, basestring):
              raise TypeError('Expected resource name to be a string')
          if __opts__ and not isinstance(__opts__, pulumi.ResourceOptions):
              raise TypeError('Expected resource options to be a ResourceOptions instance')
  
          __props__ = dict()
  
          if not allocation_id:
              raise TypeError('Missing required property allocation_id')
          elif not isinstance(allocation_id, basestring):
              raise TypeError('Expected property allocation_id to be a basestring')
          __self__.allocation_id = allocation_id
          """
          The Allocation ID of the Elastic IP address for the gateway.
          """
          __props__['allocationId'] = allocation_id
  
          if network_interface_id and not isinstance(network_interface_id, basestring):
              raise TypeError('Expected property network_interface_id to be a basestring')
          __self__.network_interface_id = network_interface_id
          """
          The ENI ID of the network interface created by the NAT gateway.
          """
          __props__['networkInterfaceId'] = network_interface_id
  
          if private_ip and not isinstance(private_ip, basestring):
              raise TypeError('Expected property private_ip to be a basestring')
          __self__.private_ip = private_ip
          """
          The private IP address of the NAT Gateway.
          """
          __props__['privateIp'] = private_ip
  
          if public_ip and not isinstance(public_ip, basestring):
              raise TypeError('Expected property public_ip to be a basestring')
          __self__.public_ip = public_ip
          """
          The public IP address of the NAT Gateway.
          """
          __props__['publicIp'] = public_ip
  
          if not subnet_id:
              raise TypeError('Missing required property subnet_id')
          elif not isinstance(subnet_id, basestring):
              raise TypeError('Expected property subnet_id to be a basestring')
          __self__.subnet_id = subnet_id
          """
          The Subnet ID of the subnet in which to place the gateway.
          """
          __props__['subnetId'] = subnet_id
  
          if tags and not isinstance(tags, dict):
              raise TypeError('Expected property tags to be a dict')
          __self__.tags = tags
          """
          A mapping of tags to assign to the resource.
          """
          __props__['tags'] = tags
  
          super(NatGateway, __self__).__init__(
              'aws:ec2/natGateway:NatGateway',
              __name__,
              __props__,
              __opts__)
  
      def set_outputs(self, outs):
          if 'allocationId' in outs:
              self.allocation_id = outs['allocationId']
          if 'networkInterfaceId' in outs:
              self.network_interface_id = outs['networkInterfaceId']
          if 'privateIp' in outs:
              self.private_ip = outs['privateIp']
          if 'publicIp' in outs:
              self.public_ip = outs['publicIp']
          if 'subnetId' in outs:
              self.subnet_id = outs['subnetId']
          if 'tags' in outs:
              self.tags = outs['tags']
  