:doc:`EC2 <../../ec2>` / Client / create_customer_gateway

***********************
create_customer_gateway
***********************



.. py:method:: EC2.Client.create_customer_gateway(**kwargs)

  

  Provides information to Amazon Web Services about your customer gateway device. The customer gateway device is the appliance at your end of the VPN connection. You must provide the IP address of the customer gateway device’s external interface. The IP address must be static and can be behind a device performing network address translation (NAT).

   

  For devices that use Border Gateway Protocol (BGP), you can also provide the device's BGP Autonomous System Number (ASN). You can use an existing ASN assigned to your network. If you don't have an ASN already, you can use a private ASN. For more information, see `Customer gateway options for your Site-to-Site VPN connection <https://docs.aws.amazon.com/vpn/latest/s2svpn/cgw-options.html>`__ in the *Amazon Web Services Site-to-Site VPN User Guide*.

   

  To create more than one customer gateway with the same VPN type, IP address, and BGP ASN, specify a unique device name for each customer gateway. An identical request returns information about the existing customer gateway; it doesn't create a new customer gateway.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateCustomerGateway>`_  


  **Request Syntax**
  ::

    response = client.create_customer_gateway(
        BgpAsn=123,
        PublicIp='string',
        CertificateArn='string',
        Type='ipsec.1',
        TagSpecifications=[
            {
                'ResourceType': 'capacity-reservation'|'client-vpn-endpoint'|'customer-gateway'|'carrier-gateway'|'coip-pool'|'declarative-policies-report'|'dedicated-host'|'dhcp-options'|'egress-only-internet-gateway'|'elastic-ip'|'elastic-gpu'|'export-image-task'|'export-instance-task'|'fleet'|'fpga-image'|'host-reservation'|'image'|'image-usage-report'|'import-image-task'|'import-snapshot-task'|'instance'|'instance-event-window'|'internet-gateway'|'ipam'|'ipam-pool'|'ipam-scope'|'ipv4pool-ec2'|'ipv6pool-ec2'|'key-pair'|'launch-template'|'local-gateway'|'local-gateway-route-table'|'local-gateway-virtual-interface'|'local-gateway-virtual-interface-group'|'local-gateway-route-table-vpc-association'|'local-gateway-route-table-virtual-interface-group-association'|'natgateway'|'network-acl'|'network-interface'|'network-insights-analysis'|'network-insights-path'|'network-insights-access-scope'|'network-insights-access-scope-analysis'|'outpost-lag'|'placement-group'|'prefix-list'|'replace-root-volume-task'|'reserved-instances'|'route-table'|'security-group'|'security-group-rule'|'service-link-virtual-interface'|'snapshot'|'spot-fleet-request'|'spot-instances-request'|'subnet'|'subnet-cidr-reservation'|'traffic-mirror-filter'|'traffic-mirror-session'|'traffic-mirror-target'|'transit-gateway'|'transit-gateway-attachment'|'transit-gateway-connect-peer'|'transit-gateway-multicast-domain'|'transit-gateway-policy-table'|'transit-gateway-metering-policy'|'transit-gateway-route-table'|'transit-gateway-route-table-announcement'|'volume'|'vpc'|'vpc-endpoint'|'vpc-endpoint-connection'|'vpc-endpoint-service'|'vpc-endpoint-service-permission'|'vpc-peering-connection'|'vpn-connection'|'vpn-gateway'|'vpc-flow-log'|'capacity-reservation-fleet'|'traffic-mirror-filter-rule'|'vpc-endpoint-connection-device-type'|'verified-access-instance'|'verified-access-group'|'verified-access-endpoint'|'verified-access-policy'|'verified-access-trust-provider'|'vpn-connection-device-type'|'vpc-block-public-access-exclusion'|'vpc-encryption-control'|'route-server'|'route-server-endpoint'|'route-server-peer'|'ipam-resource-discovery'|'ipam-resource-discovery-association'|'instance-connect-endpoint'|'verified-access-endpoint-target'|'ipam-external-resource-verification-token'|'capacity-block'|'mac-modification-task'|'ipam-prefix-list-resolver'|'ipam-policy'|'ipam-prefix-list-resolver-target'|'secondary-interface'|'secondary-network'|'secondary-subnet'|'capacity-manager-data-export'|'vpn-concentrator',
                'Tags': [
                    {
                        'Key': 'string',
                        'Value': 'string'
                    },
                ]
            },
        ],
        DeviceName='string',
        IpAddress='string',
        BgpAsnExtended=123,
        DryRun=True|False
    )
    
  :type BgpAsn: integer
  :param BgpAsn: 

    For customer gateway devices that support BGP, specify the device's ASN. You must specify either ``BgpAsn`` or ``BgpAsnExtended`` when creating the customer gateway. If the ASN is larger than ``2,147,483,647``, you must use ``BgpAsnExtended``.

     

    Default: 65000

     

    Valid values: ``1`` to ``2,147,483,647``

    

  
  :type PublicIp: string
  :param PublicIp: 

    *This member has been deprecated.* The Internet-routable IP address for the customer gateway's outside interface. The address must be static.

    

  
  :type CertificateArn: string
  :param CertificateArn: 

    The Amazon Resource Name (ARN) for the customer gateway certificate.

    

  
  :type Type: string
  :param Type: **[REQUIRED]** 

    The type of VPN connection that this customer gateway supports ( ``ipsec.1``).

    

  
  :type TagSpecifications: list
  :param TagSpecifications: 

    The tags to apply to the customer gateway.

    

  
    - *(dict) --* 

      The tags to apply to a resource when the resource is being created. When you specify a tag, you must specify the resource type to tag, otherwise the request will fail.

       

      .. note::

        

        The ``Valid Values`` lists all the resource types that can be tagged. However, the action you're using might not support tagging all of these resource types. If you try to tag a resource type that is unsupported for the action you're using, you'll get an error.

        

      

    
      - **ResourceType** *(string) --* 

        The type of resource to tag on creation.

        

      
      - **Tags** *(list) --* 

        The tags to apply to the resource.

        

      
        - *(dict) --* 

          Describes a tag.

          

        
          - **Key** *(string) --* 

            The key of the tag.

             

            Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with ``aws:``.

            

          
          - **Value** *(string) --* 

            The value of the tag.

             

            Constraints: Tag values are case-sensitive and accept a maximum of 256 Unicode characters.

            

          
        
    
    

  :type DeviceName: string
  :param DeviceName: 

    A name for the customer gateway device.

     

    Length Constraints: Up to 255 characters.

    

  
  :type IpAddress: string
  :param IpAddress: 

    The IP address for the customer gateway device's outside interface. The address must be static. If ``OutsideIpAddressType`` in your VPN connection options is set to ``PrivateIpv4``, you can use an RFC6598 or RFC1918 private IPv4 address. If ``OutsideIpAddressType`` is set to ``Ipv6``, you can use an IPv6 address.

    

  
  :type BgpAsnExtended: integer
  :param BgpAsnExtended: 

    For customer gateway devices that support BGP, specify the device's ASN. You must specify either ``BgpAsn`` or ``BgpAsnExtended`` when creating the customer gateway. If the ASN is larger than ``2,147,483,647``, you must use ``BgpAsnExtended``.

     

    Valid values: ``2,147,483,648`` to ``4,294,967,295``

    

  
  :type DryRun: boolean
  :param DryRun: 

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is ``DryRunOperation``. Otherwise, it is ``UnauthorizedOperation``.

    

  
  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'CustomerGateway': {
              'CertificateArn': 'string',
              'DeviceName': 'string',
              'Tags': [
                  {
                      'Key': 'string',
                      'Value': 'string'
                  },
              ],
              'BgpAsnExtended': 'string',
              'CustomerGatewayId': 'string',
              'State': 'string',
              'Type': 'string',
              'IpAddress': 'string',
              'BgpAsn': 'string'
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 

      Contains the output of CreateCustomerGateway.

      
      

      - **CustomerGateway** *(dict) --* 

        Information about the customer gateway.

        
        

        - **CertificateArn** *(string) --* 

          The Amazon Resource Name (ARN) for the customer gateway certificate.

          
        

        - **DeviceName** *(string) --* 

          The name of customer gateway device.

          
        

        - **Tags** *(list) --* 

          Any tags assigned to the customer gateway.

          
          

          - *(dict) --* 

            Describes a tag.

            
            

            - **Key** *(string) --* 

              The key of the tag.

               

              Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with ``aws:``.

              
            

            - **Value** *(string) --* 

              The value of the tag.

               

              Constraints: Tag values are case-sensitive and accept a maximum of 256 Unicode characters.

              
        
      
        

        - **BgpAsnExtended** *(string) --* 

          The customer gateway device's Border Gateway Protocol (BGP) Autonomous System Number (ASN).

           

          Valid values: ``2,147,483,648`` to ``4,294,967,295``

          
        

        - **CustomerGatewayId** *(string) --* 

          The ID of the customer gateway.

          
        

        - **State** *(string) --* 

          The current state of the customer gateway ( ``pending | available | deleting | deleted``).

          
        

        - **Type** *(string) --* 

          The type of VPN connection the customer gateway supports ( ``ipsec.1``).

          
        

        - **IpAddress** *(string) --* 

          The IP address for the customer gateway device's outside interface. The address must be static. If ``OutsideIpAddressType`` in your VPN connection options is set to ``PrivateIpv4``, you can use an RFC6598 or RFC1918 private IPv4 address. If ``OutsideIpAddressType`` is set to ``PublicIpv4``, you can use a public IPv4 address. If ``OutsideIpAddressType`` is set to ``Ipv6``, you can use a public IPv6 address.

          
        

        - **BgpAsn** *(string) --* 

          The customer gateway device's Border Gateway Protocol (BGP) Autonomous System Number (ASN).

           

          Valid values: ``1`` to ``2,147,483,647``

          
    
  

  **Examples**

  This example creates a customer gateway with the specified IP address for its outside interface.
  ::

    response = client.create_customer_gateway(
        BgpAsn=65534,
        PublicIp='12.1.2.3',
        Type='ipsec.1',
    )
    
    print(response)

  
  Expected Output:
  ::

    {
        'CustomerGateway': {
            'BgpAsn': '65534',
            'CustomerGatewayId': 'cgw-0e11f167',
            'IpAddress': '12.1.2.3',
            'State': 'available',
            'Type': 'ipsec.1',
        },
        'ResponseMetadata': {
            '...': '...',
        },
    }

  