:doc:`WAF <../../waf>` / Client / get_rule

********
get_rule
********



.. py:method:: WAF.Client.get_rule(**kwargs)

  

  .. note::

    

    This is **AWS WAF Classic** documentation. For more information, see `AWS WAF Classic <https://docs.aws.amazon.com/waf/latest/developerguide/classic-waf-chapter.html>`__ in the developer guide.

     

    **For the latest version of AWS WAF**, use the AWS WAFV2 API and see the `AWS WAF Developer Guide <https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html>`__. With the latest version, AWS WAF has a single set of endpoints for regional and global use.

    

   

  Returns the  Rule that is specified by the ``RuleId`` that you included in the ``GetRule`` request.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRule>`_  


  **Request Syntax**
  ::

    response = client.get_rule(
        RuleId='string'
    )
    
  :type RuleId: string
  :param RuleId: **[REQUIRED]** 

    The ``RuleId`` of the  Rule that you want to get. ``RuleId`` is returned by  CreateRule and by  ListRules.

    

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

    
    ::

      {
          'Rule': {
              'RuleId': 'string',
              'Name': 'string',
              'MetricName': 'string',
              'Predicates': [
                  {
                      'Negated': True|False,
                      'Type': 'IPMatch'|'ByteMatch'|'SqlInjectionMatch'|'GeoMatch'|'SizeConstraint'|'XssMatch'|'RegexMatch',
                      'DataId': 'string'
                  },
              ]
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **Rule** *(dict) --* 

        Information about the  Rule that you specified in the ``GetRule`` request. For more information, see the following topics:

         

        
        *  Rule: Contains ``MetricName``, ``Name``, an array of ``Predicate`` objects, and ``RuleId``
         
        *  Predicate: Each ``Predicate`` object contains ``DataId``, ``Negated``, and ``Type``
        

        
        

        - **RuleId** *(string) --* 

          A unique identifier for a ``Rule``. You use ``RuleId`` to get more information about a ``Rule`` (see  GetRule), update a ``Rule`` (see  UpdateRule), insert a ``Rule`` into a ``WebACL`` or delete a one from a ``WebACL`` (see  UpdateWebACL), or delete a ``Rule`` from AWS WAF (see  DeleteRule).

           

          ``RuleId`` is returned by  CreateRule and by  ListRules.

          
        

        - **Name** *(string) --* 

          The friendly name or description for the ``Rule``. You can't change the name of a ``Rule`` after you create it.

          
        

        - **MetricName** *(string) --* 

          A friendly name or description for the metrics for this ``Rule``. The name can contain only alphanumeric characters (A-Z, a-z, 0-9), with maximum length 128 and minimum length one. It can't contain whitespace or metric names reserved for AWS WAF, including "All" and "Default_Action." You can't change ``MetricName`` after you create the ``Rule``.

          
        

        - **Predicates** *(list) --* 

          The ``Predicates`` object contains one ``Predicate`` element for each  ByteMatchSet,  IPSet, or  SqlInjectionMatchSet object that you want to include in a ``Rule``.

          
          

          - *(dict) --* 

            .. note::

              

              This is **AWS WAF Classic** documentation. For more information, see `AWS WAF Classic <https://docs.aws.amazon.com/waf/latest/developerguide/classic-waf-chapter.html>`__ in the developer guide.

               

              **For the latest version of AWS WAF**, use the AWS WAFV2 API and see the `AWS WAF Developer Guide <https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html>`__. With the latest version, AWS WAF has a single set of endpoints for regional and global use.

              

             

            Specifies the  ByteMatchSet,  IPSet,  SqlInjectionMatchSet,  XssMatchSet,  RegexMatchSet,  GeoMatchSet, and  SizeConstraintSet objects that you want to add to a ``Rule`` and, for each object, indicates whether you want to negate the settings, for example, requests that do NOT originate from the IP address 192.0.2.44.

            
            

            - **Negated** *(boolean) --* 

              Set ``Negated`` to ``False`` if you want AWS WAF to allow, block, or count requests based on the settings in the specified  ByteMatchSet,  IPSet,  SqlInjectionMatchSet,  XssMatchSet,  RegexMatchSet,  GeoMatchSet, or  SizeConstraintSet. For example, if an ``IPSet`` includes the IP address ``192.0.2.44``, AWS WAF will allow or block requests based on that IP address.

               

              Set ``Negated`` to ``True`` if you want AWS WAF to allow or block a request based on the negation of the settings in the  ByteMatchSet,  IPSet,  SqlInjectionMatchSet,  XssMatchSet,  RegexMatchSet,  GeoMatchSet, or  SizeConstraintSet. For example, if an ``IPSet`` includes the IP address ``192.0.2.44``, AWS WAF will allow, block, or count requests based on all IP addresses *except* ``192.0.2.44``.

              
            

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

              The type of predicate in a ``Rule``, such as ``ByteMatch`` or ``IPSet``.

              
            

            - **DataId** *(string) --* 

              A unique identifier for a predicate in a ``Rule``, such as ``ByteMatchSetId`` or ``IPSetId``. The ID is returned by the corresponding ``Create`` or ``List`` command.

              
        
      
    
  
  **Exceptions**
  
  *   :py:class:`WAF.Client.exceptions.WAFInternalErrorException`

  
  *   :py:class:`WAF.Client.exceptions.WAFInvalidAccountException`

  
  *   :py:class:`WAF.Client.exceptions.WAFNonexistentItemException`

  

  **Examples**

  The following example returns the details of a rule with the ID example1ds3t-46da-4fdb-b8d5-abc321j569j5.
  ::

    response = client.get_rule(
        RuleId='example1ds3t-46da-4fdb-b8d5-abc321j569j5',
    )
    
    print(response)

  
  Expected Output:
  ::

    {
        'Rule': {
            'MetricName': 'WAFByteHeaderRule',
            'Name': 'WAFByteHeaderRule',
            'Predicates': [
                {
                    'DataId': 'MyByteMatchSetID',
                    'Negated': False,
                    'Type': 'ByteMatch',
                },
            ],
            'RuleId': 'example1ds3t-46da-4fdb-b8d5-abc321j569j5',
        },
        'ResponseMetadata': {
            '...': '...',
        },
    }

  