:doc:`DAX <../../dax>` / Client / decrease_replication_factor

***************************
decrease_replication_factor
***************************



.. py:method:: DAX.Client.decrease_replication_factor(**kwargs)

  

  Removes one or more nodes from a DAX cluster.

   

  .. note::

    

    You cannot use ``DecreaseReplicationFactor`` to remove the last node in a DAX cluster. If you need to do this, use ``DeleteCluster`` instead.

    

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/dax-2017-04-19/DecreaseReplicationFactor>`_  


  **Request Syntax**
  ::

    response = client.decrease_replication_factor(
        ClusterName='string',
        NewReplicationFactor=123,
        AvailabilityZones=[
            'string',
        ],
        NodeIdsToRemove=[
            'string',
        ]
    )
    
  :type ClusterName: string
  :param ClusterName: **[REQUIRED]** 

    The name of the DAX cluster from which you want to remove nodes.

    

  
  :type NewReplicationFactor: integer
  :param NewReplicationFactor: **[REQUIRED]** 

    The new number of nodes for the DAX cluster.

    

  
  :type AvailabilityZones: list
  :param AvailabilityZones: 

    The Availability Zone(s) from which to remove nodes.

    

  
    - *(string) --* 

    

  :type NodeIdsToRemove: list
  :param NodeIdsToRemove: 

    The unique identifiers of the nodes to be removed from the cluster.

    

  
    - *(string) --* 

    

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

    
    ::

      {
          'Cluster': {
              'ClusterName': 'string',
              'Description': 'string',
              'ClusterArn': 'string',
              'TotalNodes': 123,
              'ActiveNodes': 123,
              'NodeType': 'string',
              'Status': 'string',
              'ClusterDiscoveryEndpoint': {
                  'Address': 'string',
                  'Port': 123,
                  'URL': 'string'
              },
              'NodeIdsToRemove': [
                  'string',
              ],
              'Nodes': [
                  {
                      'NodeId': 'string',
                      'Endpoint': {
                          'Address': 'string',
                          'Port': 123,
                          'URL': 'string'
                      },
                      'NodeCreateTime': datetime(2015, 1, 1),
                      'AvailabilityZone': 'string',
                      'NodeStatus': 'string',
                      'ParameterGroupStatus': 'string'
                  },
              ],
              'PreferredMaintenanceWindow': 'string',
              'NotificationConfiguration': {
                  'TopicArn': 'string',
                  'TopicStatus': 'string'
              },
              'SubnetGroup': 'string',
              'SecurityGroups': [
                  {
                      'SecurityGroupIdentifier': 'string',
                      'Status': 'string'
                  },
              ],
              'IamRoleArn': 'string',
              'ParameterGroup': {
                  'ParameterGroupName': 'string',
                  'ParameterApplyStatus': 'string',
                  'NodeIdsToReboot': [
                      'string',
                  ]
              },
              'SSEDescription': {
                  'Status': 'ENABLING'|'ENABLED'|'DISABLING'|'DISABLED'
              },
              'ClusterEndpointEncryptionType': 'NONE'|'TLS',
              'NetworkType': 'ipv4'|'ipv6'|'dual_stack'
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **Cluster** *(dict) --* 

        A description of the DAX cluster, after you have decreased its replication factor.

        
        

        - **ClusterName** *(string) --* 

          The name of the DAX cluster.

          
        

        - **Description** *(string) --* 

          The description of the cluster.

          
        

        - **ClusterArn** *(string) --* 

          The Amazon Resource Name (ARN) that uniquely identifies the cluster.

          
        

        - **TotalNodes** *(integer) --* 

          The total number of nodes in the cluster.

          
        

        - **ActiveNodes** *(integer) --* 

          The number of nodes in the cluster that are active (i.e., capable of serving requests).

          
        

        - **NodeType** *(string) --* 

          The node type for the nodes in the cluster. (All nodes in a DAX cluster are of the same type.)

          
        

        - **Status** *(string) --* 

          The current status of the cluster.

          
        

        - **ClusterDiscoveryEndpoint** *(dict) --* 

          The endpoint for this DAX cluster, consisting of a DNS name, a port number, and a URL. Applications should use the URL to configure the DAX client to find their cluster.

          
          

          - **Address** *(string) --* 

            The DNS hostname of the endpoint.

            
          

          - **Port** *(integer) --* 

            The port number that applications should use to connect to the endpoint.

            
          

          - **URL** *(string) --* 

            The URL that applications should use to connect to the endpoint. The default ports are 8111 for the "dax" protocol and 9111 for the "daxs" protocol.

            
      
        

        - **NodeIdsToRemove** *(list) --* 

          A list of nodes to be removed from the cluster.

          
          

          - *(string) --* 
      
        

        - **Nodes** *(list) --* 

          A list of nodes that are currently in the cluster.

          
          

          - *(dict) --* 

            Represents an individual node within a DAX cluster.

            
            

            - **NodeId** *(string) --* 

              A system-generated identifier for the node.

              
            

            - **Endpoint** *(dict) --* 

              The endpoint for the node, consisting of a DNS name and a port number. Client applications can connect directly to a node endpoint, if desired (as an alternative to allowing DAX client software to intelligently route requests and responses to nodes in the DAX cluster.

              
              

              - **Address** *(string) --* 

                The DNS hostname of the endpoint.

                
              

              - **Port** *(integer) --* 

                The port number that applications should use to connect to the endpoint.

                
              

              - **URL** *(string) --* 

                The URL that applications should use to connect to the endpoint. The default ports are 8111 for the "dax" protocol and 9111 for the "daxs" protocol.

                
          
            

            - **NodeCreateTime** *(datetime) --* 

              The date and time (in UNIX epoch format) when the node was launched.

              
            

            - **AvailabilityZone** *(string) --* 

              The Availability Zone (AZ) in which the node has been deployed.

              
            

            - **NodeStatus** *(string) --* 

              The current status of the node. For example: ``available``.

              
            

            - **ParameterGroupStatus** *(string) --* 

              The status of the parameter group associated with this node. For example, ``in-sync``.

              
        
      
        

        - **PreferredMaintenanceWindow** *(string) --* 

          A range of time when maintenance of DAX cluster software will be performed. For example: ``sun:01:00-sun:09:00``. Cluster maintenance normally takes less than 30 minutes, and is performed automatically within the maintenance window.

          
        

        - **NotificationConfiguration** *(dict) --* 

          Describes a notification topic and its status. Notification topics are used for publishing DAX events to subscribers using Amazon Simple Notification Service (SNS).

          
          

          - **TopicArn** *(string) --* 

            The Amazon Resource Name (ARN) that identifies the topic.

            
          

          - **TopicStatus** *(string) --* 

            The current state of the topic. A value of “active” means that notifications will be sent to the topic. A value of “inactive” means that notifications will not be sent to the topic.

            
      
        

        - **SubnetGroup** *(string) --* 

          The subnet group where the DAX cluster is running.

          
        

        - **SecurityGroups** *(list) --* 

          A list of security groups, and the status of each, for the nodes in the cluster.

          
          

          - *(dict) --* 

            An individual VPC security group and its status.

            
            

            - **SecurityGroupIdentifier** *(string) --* 

              The unique ID for this security group.

              
            

            - **Status** *(string) --* 

              The status of this security group.

              
        
      
        

        - **IamRoleArn** *(string) --* 

          A valid Amazon Resource Name (ARN) that identifies an IAM role. At runtime, DAX will assume this role and use the role's permissions to access DynamoDB on your behalf.

          
        

        - **ParameterGroup** *(dict) --* 

          The parameter group being used by nodes in the cluster.

          
          

          - **ParameterGroupName** *(string) --* 

            The name of the parameter group.

            
          

          - **ParameterApplyStatus** *(string) --* 

            The status of parameter updates.

            
          

          - **NodeIdsToReboot** *(list) --* 

            The node IDs of one or more nodes to be rebooted.

            
            

            - *(string) --* 
        
      
        

        - **SSEDescription** *(dict) --* 

          The description of the server-side encryption status on the specified DAX cluster.

          
          

          - **Status** *(string) --* 

            The current state of server-side encryption:

             

            
            * ``ENABLING`` - Server-side encryption is being enabled.
             
            * ``ENABLED`` - Server-side encryption is enabled.
             
            * ``DISABLING`` - Server-side encryption is being disabled.
             
            * ``DISABLED`` - Server-side encryption is disabled.
            

            
      
        

        - **ClusterEndpointEncryptionType** *(string) --* 

          The type of encryption supported by the cluster's endpoint. Values are:

           

          
          * ``NONE`` for no encryption ``TLS`` for Transport Layer Security
          

          
        

        - **NetworkType** *(string) --* 

          The IP address type of the cluster. Values are:

           

          
          * ``ipv4`` - IPv4 addresses only
           
          * ``ipv6`` - IPv6 addresses only
           
          * ``dual_stack`` - Both IPv4 and IPv6 addresses
          

          
    
  
  **Exceptions**
  
  *   :py:class:`DAX.Client.exceptions.ClusterNotFoundFault`

  
  *   :py:class:`DAX.Client.exceptions.NodeNotFoundFault`

  
  *   :py:class:`DAX.Client.exceptions.InvalidClusterStateFault`

  
  *   :py:class:`DAX.Client.exceptions.ServiceLinkedRoleNotFoundFault`

  
  *   :py:class:`DAX.Client.exceptions.InvalidParameterValueException`

  
  *   :py:class:`DAX.Client.exceptions.InvalidParameterCombinationException`

  