def create_web_acl(Name=None, MetricName=None, DefaultAction=None,
    ChangeToken=None):
    """
    Creates a WebACL , which contains the Rules that identify the CloudFront web requests that you want to allow, block, or count. AWS WAF evaluates Rules in order based on the value of Priority for each Rule .
    You also specify a default action, either ALLOW or BLOCK . If a web request doesn't match any of the Rules in a WebACL , AWS WAF responds to the request with the default action.
    To create and configure a WebACL , perform the following steps:
    For more information about how to use the AWS WAF API, see the AWS WAF Developer Guide .
    See also: AWS API Documentation
    
    Examples
    The following example creates a web ACL named CreateExample.
    Expected Output:
    
    :example: response = client.create_web_acl(
        Name='string',
        MetricName='string',
        DefaultAction={
            'Type': 'BLOCK'|'ALLOW'|'COUNT'
        },
        ChangeToken='string'
    )
    
    
    :type Name: string
    :param Name: [REQUIRED]
            A friendly name or description of the WebACL . You can't change Name after you create the WebACL .
            

    :type MetricName: string
    :param MetricName: [REQUIRED]
            A friendly name or description for the metrics for this WebACL . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change MetricName after you create the WebACL .
            

    :type DefaultAction: dict
    :param DefaultAction: [REQUIRED]
            The action that you want AWS WAF to take when a request doesn't match the criteria specified in any of the Rule objects that are associated with the WebACL .
            Type (string) -- [REQUIRED]Specifies how you want AWS WAF to respond to requests that match the settings in a Rule . Valid settings include the following:
            ALLOW : AWS WAF allows requests
            BLOCK : AWS WAF blocks requests
            COUNT : AWS WAF increments a counter of the requests that match all of the conditions in the rule. AWS WAF then continues to inspect the web request based on the remaining rules in the web ACL. You can't specify COUNT for the default action for a WebACL .
            

    :type ChangeToken: string
    :param ChangeToken: [REQUIRED]
            The value returned by the most recent call to GetChangeToken .
            

    :rtype: dict
    :return: {
        'WebACL': {
            'WebACLId': 'string',
            'Name': 'string',
            'MetricName': 'string',
            'DefaultAction': {
                'Type': 'BLOCK'|'ALLOW'|'COUNT'
            },
            'Rules': [
                {
                    'Priority': 123,
                    'RuleId': 'string',
                    'Action': {
                        'Type': 'BLOCK'|'ALLOW'|'COUNT'
                    }
                },
            ]
        },
        'ChangeToken': 'string'
    }
    
    
    :returns: 
    Name (string) -- [REQUIRED]
    A friendly name or description of the  WebACL . You can't change Name after you create the WebACL .
    
    MetricName (string) -- [REQUIRED]
    A friendly name or description for the metrics for this WebACL . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change MetricName after you create the WebACL .
    
    DefaultAction (dict) -- [REQUIRED]
    The action that you want AWS WAF to take when a request doesn't match the criteria specified in any of the Rule objects that are associated with the WebACL .
    
    Type (string) -- [REQUIRED]Specifies how you want AWS WAF to respond to requests that match the settings in a Rule . Valid settings include the following:
    
    ALLOW : AWS WAF allows requests
    BLOCK : AWS WAF blocks requests
    COUNT : AWS WAF increments a counter of the requests that match all of the conditions in the rule. AWS WAF then continues to inspect the web request based on the remaining rules in the web ACL. You can't specify COUNT for the default action for a WebACL .
    
    
    
    
    ChangeToken (string) -- [REQUIRED]
    The value returned by the most recent call to  GetChangeToken .
    
    
    """
    pass
