AWS::WAF::Rule
Note
This is AWS WAF Classic documentation. For more information, see AWS WAF Classic in the developer guide.
For the latest version of AWS WAF , use the AWS WAFV2 API and see the AWS WAF Developer Guide. With the latest version, AWS WAF has a single set of endpoints for regional and global use.
A combination of ByteMatchSet
, IPSet
, and/or SqlInjectionMatchSet
objects that identify the web requests that you
want to allow, block, or count. For example, you might create a Rule
that includes the following predicates:
-
An
IPSet
that causes AWS WAF to search for web requests that originate from the IP address192.0.2.44
-
A
ByteMatchSet
that causes AWS WAF to search for web requests for which the value of theUser-Agent
header isBadBot
.
To match the settings in this Rule
, a request must originate from 192.0.2.44
AND include a User-Agent
header for which the value is BadBot
.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "Type" : "AWS::WAF::Rule", "Properties" : { "MetricName" :
String
, "Name" :String
, "Predicates" :[ Predicate, ... ]
} }
YAML
Type: AWS::WAF::Rule Properties: MetricName:
String
Name:String
Predicates:- Predicate
Properties
MetricName
-
The name of 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 changeMetricName
after you create theRule
.Required: Yes
Type: String
Pattern:
.*\S.*
Minimum:
1
Maximum:
128
Update requires: Replacement
Name
-
The friendly name or description for the
Rule
. You can't change the name of aRule
after you create it.Required: Yes
Type: String
Pattern:
.*\S.*
Minimum:
1
Maximum:
128
Update requires: Replacement
Predicates
-
The
Predicates
object contains onePredicate
element for eachByteMatchSet
,IPSet
, orSqlInjectionMatchSet
object that you want to include in aRule
.Required: No
Type: Array of Predicate
Update requires: No interruption
Return values
Ref
When you pass the logical ID of this resource to the intrinsic Ref
function, Ref
returns the resource physical ID, such as 1234a1a-a1b1-12a1-abcd-a123b123456.
For more information about using the Ref
function, see Ref
.
Fn::GetAtt
Examples
Associate an IPSet with a Web ACL Rule
The following example associates the MyIPSetDenylist
IPSet
object with a web ACL rule.
JSON
"MyIPSetRule" : { "Type": "AWS::WAF::Rule", "Properties": { "Name": "MyIPSetRule", "MetricName" : "MyIPSetRule", "Predicates": [ { "DataId" : { "Ref" : "MyIPSetDenylist" }, "Negated" : false, "Type" : "IPMatch" } ] } }
YAML
MyIPSetRule: Type: "AWS::WAF::Rule" Properties: Name: "MyIPSetRule" MetricName: "MyIPSetRule" Predicates: - DataId: Ref: "MyIPSetDenylist" Negated: false Type: "IPMatch"