CheckCapacity
Returns the web ACL capacity unit (WCU) requirements for a specified scope and set of rules. You can use this to check the capacity requirements for the rules you want to use in a RuleGroup or WebACL.
AWS WAF uses WCUs to calculate and control the operating resources that are used to run your rules, rule groups, and web ACLs. AWS WAF calculates capacity differently for each rule type, to reflect the relative cost of each rule. Simple rules that cost little to run use fewer WCUs than more complex rules that use more processing power. Rule group capacity is fixed at creation, which helps users plan their web ACL WCU usage when they use a rule group. For more information, see AWS WAF web ACL capacity units (WCU) in the AWS WAF Developer Guide.
Request Syntax
{
"Rules": [
{
"Action": {
"Allow": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Block": {
"CustomResponse": {
"CustomResponseBodyKey": "string
",
"ResponseCode": number
,
"ResponseHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Captcha": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Challenge": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Count": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
}
},
"CaptchaConfig": {
"ImmunityTimeProperty": {
"ImmunityTime": number
}
},
"ChallengeConfig": {
"ImmunityTimeProperty": {
"ImmunityTime": number
}
},
"Name": "string
",
"OverrideAction": {
"Count": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"None": {
}
},
"Priority": number
,
"RuleLabels": [
{
"Name": "string
"
}
],
"Statement": {
"AndStatement": {
"Statements": [
"Statement"
]
},
"ByteMatchStatement": {
"FieldToMatch": {
"AllQueryArguments": {
},
"Body": {
"OversizeHandling": "string
"
},
"Cookies": {
"MatchPattern": {
"All": {
},
"ExcludedCookies": [ "string
" ],
"IncludedCookies": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"HeaderOrder": {
"OversizeHandling": "string
"
},
"Headers": {
"MatchPattern": {
"All": {
},
"ExcludedHeaders": [ "string
" ],
"IncludedHeaders": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"JA3Fingerprint": {
"FallbackBehavior": "string
"
},
"JsonBody": {
"InvalidFallbackBehavior": "string
",
"MatchPattern": {
"All": {
},
"IncludedPaths": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"Method": {
},
"QueryString": {
},
"SingleHeader": {
"Name": "string
"
},
"SingleQueryArgument": {
"Name": "string
"
},
"UriPath": {
}
},
"PositionalConstraint": "string
",
"SearchString": blob
,
"TextTransformations": [
{
"Priority": number
,
"Type": "string
"
}
]
},
"GeoMatchStatement": {
"CountryCodes": [ "string
" ],
"ForwardedIPConfig": {
"FallbackBehavior": "string
",
"HeaderName": "string
"
}
},
"IPSetReferenceStatement": {
"ARN": "string
",
"IPSetForwardedIPConfig": {
"FallbackBehavior": "string
",
"HeaderName": "string
",
"Position": "string
"
}
},
"LabelMatchStatement": {
"Key": "string
",
"Scope": "string
"
},
"ManagedRuleGroupStatement": {
"ExcludedRules": [
{
"Name": "string
"
}
],
"ManagedRuleGroupConfigs": [
{
"AWSManagedRulesACFPRuleSet": {
"CreationPath": "string
",
"EnableRegexInPath": boolean
,
"RegistrationPagePath": "string
",
"RequestInspection": {
"AddressFields": [
{
"Identifier": "string
"
}
],
"EmailField": {
"Identifier": "string
"
},
"PasswordField": {
"Identifier": "string
"
},
"PayloadType": "string
",
"PhoneNumberFields": [
{
"Identifier": "string
"
}
],
"UsernameField": {
"Identifier": "string
"
}
},
"ResponseInspection": {
"BodyContains": {
"FailureStrings": [ "string
" ],
"SuccessStrings": [ "string
" ]
},
"Header": {
"FailureValues": [ "string
" ],
"Name": "string
",
"SuccessValues": [ "string
" ]
},
"Json": {
"FailureValues": [ "string
" ],
"Identifier": "string
",
"SuccessValues": [ "string
" ]
},
"StatusCode": {
"FailureCodes": [ number
],
"SuccessCodes": [ number
]
}
}
},
"AWSManagedRulesATPRuleSet": {
"EnableRegexInPath": boolean
,
"LoginPath": "string
",
"RequestInspection": {
"PasswordField": {
"Identifier": "string
"
},
"PayloadType": "string
",
"UsernameField": {
"Identifier": "string
"
}
},
"ResponseInspection": {
"BodyContains": {
"FailureStrings": [ "string
" ],
"SuccessStrings": [ "string
" ]
},
"Header": {
"FailureValues": [ "string
" ],
"Name": "string
",
"SuccessValues": [ "string
" ]
},
"Json": {
"FailureValues": [ "string
" ],
"Identifier": "string
",
"SuccessValues": [ "string
" ]
},
"StatusCode": {
"FailureCodes": [ number
],
"SuccessCodes": [ number
]
}
}
},
"AWSManagedRulesBotControlRuleSet": {
"EnableMachineLearning": boolean
,
"InspectionLevel": "string
"
},
"LoginPath": "string
",
"PasswordField": {
"Identifier": "string
"
},
"PayloadType": "string
",
"UsernameField": {
"Identifier": "string
"
}
}
],
"Name": "string
",
"RuleActionOverrides": [
{
"ActionToUse": {
"Allow": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Block": {
"CustomResponse": {
"CustomResponseBodyKey": "string
",
"ResponseCode": number
,
"ResponseHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Captcha": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Challenge": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Count": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
}
},
"Name": "string
"
}
],
"ScopeDownStatement": "Statement",
"VendorName": "string
",
"Version": "string
"
},
"NotStatement": {
"Statement": "Statement"
},
"OrStatement": {
"Statements": [
"Statement"
]
},
"RateBasedStatement": {
"AggregateKeyType": "string
",
"CustomKeys": [
{
"Cookie": {
"Name": "string
",
"TextTransformations": [
{
"Priority": number
,
"Type": "string
"
}
]
},
"ForwardedIP": {
},
"Header": {
"Name": "string
",
"TextTransformations": [
{
"Priority": number
,
"Type": "string
"
}
]
},
"HTTPMethod": {
},
"IP": {
},
"LabelNamespace": {
"Namespace": "string
"
},
"QueryArgument": {
"Name": "string
",
"TextTransformations": [
{
"Priority": number
,
"Type": "string
"
}
]
},
"QueryString": {
"TextTransformations": [
{
"Priority": number
,
"Type": "string
"
}
]
},
"UriPath": {
"TextTransformations": [
{
"Priority": number
,
"Type": "string
"
}
]
}
}
],
"EvaluationWindowSec": number
,
"ForwardedIPConfig": {
"FallbackBehavior": "string
",
"HeaderName": "string
"
},
"Limit": number
,
"ScopeDownStatement": "Statement"
},
"RegexMatchStatement": {
"FieldToMatch": {
"AllQueryArguments": {
},
"Body": {
"OversizeHandling": "string
"
},
"Cookies": {
"MatchPattern": {
"All": {
},
"ExcludedCookies": [ "string
" ],
"IncludedCookies": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"HeaderOrder": {
"OversizeHandling": "string
"
},
"Headers": {
"MatchPattern": {
"All": {
},
"ExcludedHeaders": [ "string
" ],
"IncludedHeaders": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"JA3Fingerprint": {
"FallbackBehavior": "string
"
},
"JsonBody": {
"InvalidFallbackBehavior": "string
",
"MatchPattern": {
"All": {
},
"IncludedPaths": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"Method": {
},
"QueryString": {
},
"SingleHeader": {
"Name": "string
"
},
"SingleQueryArgument": {
"Name": "string
"
},
"UriPath": {
}
},
"RegexString": "string
",
"TextTransformations": [
{
"Priority": number
,
"Type": "string
"
}
]
},
"RegexPatternSetReferenceStatement": {
"ARN": "string
",
"FieldToMatch": {
"AllQueryArguments": {
},
"Body": {
"OversizeHandling": "string
"
},
"Cookies": {
"MatchPattern": {
"All": {
},
"ExcludedCookies": [ "string
" ],
"IncludedCookies": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"HeaderOrder": {
"OversizeHandling": "string
"
},
"Headers": {
"MatchPattern": {
"All": {
},
"ExcludedHeaders": [ "string
" ],
"IncludedHeaders": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"JA3Fingerprint": {
"FallbackBehavior": "string
"
},
"JsonBody": {
"InvalidFallbackBehavior": "string
",
"MatchPattern": {
"All": {
},
"IncludedPaths": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"Method": {
},
"QueryString": {
},
"SingleHeader": {
"Name": "string
"
},
"SingleQueryArgument": {
"Name": "string
"
},
"UriPath": {
}
},
"TextTransformations": [
{
"Priority": number
,
"Type": "string
"
}
]
},
"RuleGroupReferenceStatement": {
"ARN": "string
",
"ExcludedRules": [
{
"Name": "string
"
}
],
"RuleActionOverrides": [
{
"ActionToUse": {
"Allow": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Block": {
"CustomResponse": {
"CustomResponseBodyKey": "string
",
"ResponseCode": number
,
"ResponseHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Captcha": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Challenge": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
},
"Count": {
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "string
",
"Value": "string
"
}
]
}
}
},
"Name": "string
"
}
]
},
"SizeConstraintStatement": {
"ComparisonOperator": "string
",
"FieldToMatch": {
"AllQueryArguments": {
},
"Body": {
"OversizeHandling": "string
"
},
"Cookies": {
"MatchPattern": {
"All": {
},
"ExcludedCookies": [ "string
" ],
"IncludedCookies": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"HeaderOrder": {
"OversizeHandling": "string
"
},
"Headers": {
"MatchPattern": {
"All": {
},
"ExcludedHeaders": [ "string
" ],
"IncludedHeaders": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"JA3Fingerprint": {
"FallbackBehavior": "string
"
},
"JsonBody": {
"InvalidFallbackBehavior": "string
",
"MatchPattern": {
"All": {
},
"IncludedPaths": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"Method": {
},
"QueryString": {
},
"SingleHeader": {
"Name": "string
"
},
"SingleQueryArgument": {
"Name": "string
"
},
"UriPath": {
}
},
"Size": number
,
"TextTransformations": [
{
"Priority": number
,
"Type": "string
"
}
]
},
"SqliMatchStatement": {
"FieldToMatch": {
"AllQueryArguments": {
},
"Body": {
"OversizeHandling": "string
"
},
"Cookies": {
"MatchPattern": {
"All": {
},
"ExcludedCookies": [ "string
" ],
"IncludedCookies": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"HeaderOrder": {
"OversizeHandling": "string
"
},
"Headers": {
"MatchPattern": {
"All": {
},
"ExcludedHeaders": [ "string
" ],
"IncludedHeaders": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"JA3Fingerprint": {
"FallbackBehavior": "string
"
},
"JsonBody": {
"InvalidFallbackBehavior": "string
",
"MatchPattern": {
"All": {
},
"IncludedPaths": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"Method": {
},
"QueryString": {
},
"SingleHeader": {
"Name": "string
"
},
"SingleQueryArgument": {
"Name": "string
"
},
"UriPath": {
}
},
"SensitivityLevel": "string
",
"TextTransformations": [
{
"Priority": number
,
"Type": "string
"
}
]
},
"XssMatchStatement": {
"FieldToMatch": {
"AllQueryArguments": {
},
"Body": {
"OversizeHandling": "string
"
},
"Cookies": {
"MatchPattern": {
"All": {
},
"ExcludedCookies": [ "string
" ],
"IncludedCookies": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"HeaderOrder": {
"OversizeHandling": "string
"
},
"Headers": {
"MatchPattern": {
"All": {
},
"ExcludedHeaders": [ "string
" ],
"IncludedHeaders": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"JA3Fingerprint": {
"FallbackBehavior": "string
"
},
"JsonBody": {
"InvalidFallbackBehavior": "string
",
"MatchPattern": {
"All": {
},
"IncludedPaths": [ "string
" ]
},
"MatchScope": "string
",
"OversizeHandling": "string
"
},
"Method": {
},
"QueryString": {
},
"SingleHeader": {
"Name": "string
"
},
"SingleQueryArgument": {
"Name": "string
"
},
"UriPath": {
}
},
"TextTransformations": [
{
"Priority": number
,
"Type": "string
"
}
]
}
},
"VisibilityConfig": {
"CloudWatchMetricsEnabled": boolean
,
"MetricName": "string
",
"SampledRequestsEnabled": boolean
}
}
],
"Scope": "string
"
}
Request Parameters
For information about the parameters that are common to all actions, see Common Parameters.
The request accepts the following data in JSON format.
- Rules
-
An array of Rule that you're configuring to use in a rule group or web ACL.
Type: Array of Rule objects
Required: Yes
- Scope
-
Specifies whether this is for a global resource type, such as a Amazon CloudFront distribution.
To work with CloudFront, you must also specify the Region US East (N. Virginia) as follows:
-
CLI - Specify the Region when you use the CloudFront scope:
--scope=CLOUDFRONT --region=us-east-1
. -
API and SDKs - For all calls, use the Region endpoint us-east-1.
Type: String
Valid Values:
CLOUDFRONT | REGIONAL
Required: Yes
-
Response Syntax
{
"Capacity": number
}
Response Elements
If the action is successful, the service sends back an HTTP 200 response.
The following data is returned in JSON format by the service.
- Capacity
-
The capacity required by the rules and scope.
Type: Long
Valid Range: Minimum value of 0.
Errors
For information about the errors that are common to all actions, see Common Errors.
- WAFExpiredManagedRuleGroupVersionException
-
The operation failed because the specified version for the managed rule group has expired. You can retrieve the available versions for the managed rule group by calling ListAvailableManagedRuleGroupVersions.
HTTP Status Code: 400
- WAFInternalErrorException
-
Your request is valid, but AWS WAF couldn’t perform the operation because of a system problem. Retry your request.
HTTP Status Code: 500
- WAFInvalidOperationException
-
The operation isn't valid.
HTTP Status Code: 400
- WAFInvalidParameterException
-
The operation failed because AWS WAF didn't recognize a parameter in the request. For example:
-
You specified a parameter name or value that isn't valid.
-
Your nested statement isn't valid. You might have tried to nest a statement that can’t be nested.
-
You tried to update a
WebACL
with aDefaultAction
that isn't among the types available at DefaultAction. -
Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't be associated.
HTTP Status Code: 400
-
- WAFInvalidResourceException
-
AWS WAF couldn’t perform the operation because the resource that you requested isn’t valid. Check the resource, and try again.
HTTP Status Code: 400
- WAFLimitsExceededException
-
AWS WAF couldn’t perform the operation because you exceeded your resource limit. For example, the maximum number of
WebACL
objects that you can create for an AWS account. For more information, see AWS WAF quotas in the AWS WAF Developer Guide.HTTP Status Code: 400
- WAFNonexistentItemException
-
AWS WAF couldn’t perform the operation because your resource doesn't exist. If you've just created a resource that you're using in this operation, you might just need to wait a few minutes. It can take from a few seconds to a number of minutes for changes to propagate.
HTTP Status Code: 400
- WAFSubscriptionNotFoundException
-
You tried to use a managed rule group that's available by subscription, but you aren't subscribed to it yet.
HTTP Status Code: 400
- WAFUnavailableEntityException
-
AWS WAF couldn’t retrieve a resource that you specified for this operation. If you've just created a resource that you're using in this operation, you might just need to wait a few minutes. It can take from a few seconds to a number of minutes for changes to propagate. Verify the resources that you are specifying in your request parameters and then retry the operation.
HTTP Status Code: 400
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the following: