:doc:`ServiceDiscovery <../../servicediscovery>` / Client / create_private_dns_namespace

****************************
create_private_dns_namespace
****************************



.. py:method:: ServiceDiscovery.Client.create_private_dns_namespace(**kwargs)

  

  Creates a private namespace based on DNS, which is visible only inside a specified Amazon VPC. The namespace defines your service naming scheme. For example, if you name your namespace ``example.com`` and name your service ``backend``, the resulting DNS name for the service is ``backend.example.com``. Service instances that are registered using a private DNS namespace can be discovered using either a ``DiscoverInstances`` request or using DNS. For the current quota on the number of namespaces that you can create using the same Amazon Web Services account, see `Cloud Map quotas <https://docs.aws.amazon.com/cloud-map/latest/dg/cloud-map-limits.html>`__ in the *Cloud Map Developer Guide*.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/servicediscovery-2017-03-14/CreatePrivateDnsNamespace>`_  


  **Request Syntax**
  ::

    response = client.create_private_dns_namespace(
        Name='string',
        CreatorRequestId='string',
        Description='string',
        Vpc='string',
        Tags=[
            {
                'Key': 'string',
                'Value': 'string'
            },
        ],
        Properties={
            'DnsProperties': {
                'SOA': {
                    'TTL': 123
                }
            }
        }
    )
    
  :type Name: string
  :param Name: **[REQUIRED]** 

    The name that you want to assign to this namespace. When you create a private DNS namespace, Cloud Map automatically creates an Amazon Route 53 private hosted zone that has the same name as the namespace.

    

  
  :type CreatorRequestId: string
  :param CreatorRequestId: 

    A unique string that identifies the request and that allows failed ``CreatePrivateDnsNamespace`` requests to be retried without the risk of running the operation twice. ``CreatorRequestId`` can be any unique string (for example, a date/timestamp).

    This field is autopopulated if not provided.

  
  :type Description: string
  :param Description: 

    A description for the namespace.

    

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

    The ID of the Amazon VPC that you want to associate the namespace with.

    

  
  :type Tags: list
  :param Tags: 

    The tags to add to the namespace. Each tag consists of a key and an optional value that you define. Tags keys can be up to 128 characters in length, and tag values can be up to 256 characters in length.

    

  
    - *(dict) --* 

      A custom key-value pair that's associated with a resource.

      

    
      - **Key** *(string) --* **[REQUIRED]** 

        The key identifier, or name, of the tag.

        

      
      - **Value** *(string) --* **[REQUIRED]** 

        The string value that's associated with the key of the tag. You can set the value of a tag to an empty string, but you can't set the value of a tag to null.

        

      
    

  :type Properties: dict
  :param Properties: 

    Properties for the private DNS namespace.

    

  
    - **DnsProperties** *(dict) --* **[REQUIRED]** 

      DNS properties for the private DNS namespace.

      

    
      - **SOA** *(dict) --* **[REQUIRED]** 

        Fields for the Start of Authority (SOA) record for the hosted zone for the private DNS namespace.

        

      
        - **TTL** *(integer) --* **[REQUIRED]** 

          The time to live (TTL) for purposes of negative caching.

          

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

    
    ::

      {
          'OperationId': 'string'
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **OperationId** *(string) --* 

        A value that you can use to determine whether the request completed successfully. To get the status of the operation, see `GetOperation <https://docs.aws.amazon.com/cloud-map/latest/api/API_GetOperation.html>`__.

        
  
  **Exceptions**
  
  *   :py:class:`ServiceDiscovery.Client.exceptions.InvalidInput`

  
  *   :py:class:`ServiceDiscovery.Client.exceptions.NamespaceAlreadyExists`

  
  *   :py:class:`ServiceDiscovery.Client.exceptions.ResourceLimitExceeded`

  
  *   :py:class:`ServiceDiscovery.Client.exceptions.DuplicateRequest`

  
  *   :py:class:`ServiceDiscovery.Client.exceptions.TooManyTagsException`

  

  **Examples**

  Example: Create private DNS namespace
  ::

    response = client.create_private_dns_namespace(
        CreatorRequestId='eedd6892-50f3-41b2-8af9-611d6e1d1a8c',
        Name='example.com',
        Vpc='vpc-1c56417b',
    )
    
    print(response)

  
  Expected Output:
  ::

    {
        'OperationId': 'gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9302yzd',
        'ResponseMetadata': {
            '...': '...',
        },
    }

  