/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include This is the latest version of AWS WAF, named AWS WAFV2,
* released in November, 2019. For information, including how to migrate your AWS
* WAF resources from the prior release, see the AWS
* WAF Developer Guide. A single rule, which you can use in a
* WebACL or RuleGroup to identify web requests that you want to
* allow, block, or count. Each rule includes one top-level Statement that
* AWS WAF uses to identify matching web requests, and parameters that govern how
* AWS WAF handles them. See Also:
AWS API
* Reference
The name of the rule. You can't change the name of a Rule after
* you create it.
The name of the rule. You can't change the name of a Rule after
* you create it.
The name of the rule. You can't change the name of a Rule after
* you create it.
The name of the rule. You can't change the name of a Rule after
* you create it.
The name of the rule. You can't change the name of a Rule after
* you create it.
The name of the rule. You can't change the name of a Rule after
* you create it.
The name of the rule. You can't change the name of a Rule after
* you create it.
The name of the rule. You can't change the name of a Rule after
* you create it.
If you define more than one Rule in a WebACL, AWS
* WAF evaluates each request against the Rules in order based on the
* value of Priority. AWS WAF processes rules with lower priority
* first. The priorities don't need to be consecutive, but they must all be
* different.
If you define more than one Rule in a WebACL, AWS
* WAF evaluates each request against the Rules in order based on the
* value of Priority. AWS WAF processes rules with lower priority
* first. The priorities don't need to be consecutive, but they must all be
* different.
If you define more than one Rule in a WebACL, AWS
* WAF evaluates each request against the Rules in order based on the
* value of Priority. AWS WAF processes rules with lower priority
* first. The priorities don't need to be consecutive, but they must all be
* different.
If you define more than one Rule in a WebACL, AWS
* WAF evaluates each request against the Rules in order based on the
* value of Priority. AWS WAF processes rules with lower priority
* first. The priorities don't need to be consecutive, but they must all be
* different.
The AWS WAF processing statement for the rule, for example * ByteMatchStatement or SizeConstraintStatement.
*/ inline const Statement& GetStatement() const{ return m_statement; } /** *The AWS WAF processing statement for the rule, for example * ByteMatchStatement or SizeConstraintStatement.
*/ inline bool StatementHasBeenSet() const { return m_statementHasBeenSet; } /** *The AWS WAF processing statement for the rule, for example * ByteMatchStatement or SizeConstraintStatement.
*/ inline void SetStatement(const Statement& value) { m_statementHasBeenSet = true; m_statement = value; } /** *The AWS WAF processing statement for the rule, for example * ByteMatchStatement or SizeConstraintStatement.
*/ inline void SetStatement(Statement&& value) { m_statementHasBeenSet = true; m_statement = std::move(value); } /** *The AWS WAF processing statement for the rule, for example * ByteMatchStatement or SizeConstraintStatement.
*/ inline Rule& WithStatement(const Statement& value) { SetStatement(value); return *this;} /** *The AWS WAF processing statement for the rule, for example * ByteMatchStatement or SizeConstraintStatement.
*/ inline Rule& WithStatement(Statement&& value) { SetStatement(std::move(value)); return *this;} /** *The action that AWS WAF should take on a web request when it matches the rule * statement. Settings at the web ACL level can override the rule action setting. *
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule * group, use this rule action setting and not the rule override action setting. *
If the rule statement references a rule group, use the * override action setting and not this action setting.
The action that AWS WAF should take on a web request when it matches the rule * statement. Settings at the web ACL level can override the rule action setting. *
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule * group, use this rule action setting and not the rule override action setting. *
If the rule statement references a rule group, use the * override action setting and not this action setting.
The action that AWS WAF should take on a web request when it matches the rule * statement. Settings at the web ACL level can override the rule action setting. *
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule * group, use this rule action setting and not the rule override action setting. *
If the rule statement references a rule group, use the * override action setting and not this action setting.
The action that AWS WAF should take on a web request when it matches the rule * statement. Settings at the web ACL level can override the rule action setting. *
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule * group, use this rule action setting and not the rule override action setting. *
If the rule statement references a rule group, use the * override action setting and not this action setting.
The action that AWS WAF should take on a web request when it matches the rule * statement. Settings at the web ACL level can override the rule action setting. *
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule * group, use this rule action setting and not the rule override action setting. *
If the rule statement references a rule group, use the * override action setting and not this action setting.
The action that AWS WAF should take on a web request when it matches the rule * statement. Settings at the web ACL level can override the rule action setting. *
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule * group, use this rule action setting and not the rule override action setting. *
If the rule statement references a rule group, use the * override action setting and not this action setting.
The override action to apply to the rules in a rule group. Used only for rule
* statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
Set the override action to none * to leave the rule actions in effect. Set it to count to only count matches, * regardless of the rule action settings.
In a Rule, you must
* specify either this OverrideAction setting or the rule
* Action setting, but not both:
If the rule * statement references a rule group, use this override action setting and not the * action setting.
If the rule statement does not reference a * rule group, use the rule action setting and not this rule override action * setting.
The override action to apply to the rules in a rule group. Used only for rule
* statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
Set the override action to none * to leave the rule actions in effect. Set it to count to only count matches, * regardless of the rule action settings.
In a Rule, you must
* specify either this OverrideAction setting or the rule
* Action setting, but not both:
If the rule * statement references a rule group, use this override action setting and not the * action setting.
If the rule statement does not reference a * rule group, use the rule action setting and not this rule override action * setting.
The override action to apply to the rules in a rule group. Used only for rule
* statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
Set the override action to none * to leave the rule actions in effect. Set it to count to only count matches, * regardless of the rule action settings.
In a Rule, you must
* specify either this OverrideAction setting or the rule
* Action setting, but not both:
If the rule * statement references a rule group, use this override action setting and not the * action setting.
If the rule statement does not reference a * rule group, use the rule action setting and not this rule override action * setting.
The override action to apply to the rules in a rule group. Used only for rule
* statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
Set the override action to none * to leave the rule actions in effect. Set it to count to only count matches, * regardless of the rule action settings.
In a Rule, you must
* specify either this OverrideAction setting or the rule
* Action setting, but not both:
If the rule * statement references a rule group, use this override action setting and not the * action setting.
If the rule statement does not reference a * rule group, use the rule action setting and not this rule override action * setting.
The override action to apply to the rules in a rule group. Used only for rule
* statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
Set the override action to none * to leave the rule actions in effect. Set it to count to only count matches, * regardless of the rule action settings.
In a Rule, you must
* specify either this OverrideAction setting or the rule
* Action setting, but not both:
If the rule * statement references a rule group, use this override action setting and not the * action setting.
If the rule statement does not reference a * rule group, use the rule action setting and not this rule override action * setting.
The override action to apply to the rules in a rule group. Used only for rule
* statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
Set the override action to none * to leave the rule actions in effect. Set it to count to only count matches, * regardless of the rule action settings.
In a Rule, you must
* specify either this OverrideAction setting or the rule
* Action setting, but not both:
If the rule * statement references a rule group, use this override action setting and not the * action setting.
If the rule statement does not reference a * rule group, use the rule action setting and not this rule override action * setting.
Defines and enables Amazon CloudWatch metrics and web request sample * collection.
*/ inline const VisibilityConfig& GetVisibilityConfig() const{ return m_visibilityConfig; } /** *Defines and enables Amazon CloudWatch metrics and web request sample * collection.
*/ inline bool VisibilityConfigHasBeenSet() const { return m_visibilityConfigHasBeenSet; } /** *Defines and enables Amazon CloudWatch metrics and web request sample * collection.
*/ inline void SetVisibilityConfig(const VisibilityConfig& value) { m_visibilityConfigHasBeenSet = true; m_visibilityConfig = value; } /** *Defines and enables Amazon CloudWatch metrics and web request sample * collection.
*/ inline void SetVisibilityConfig(VisibilityConfig&& value) { m_visibilityConfigHasBeenSet = true; m_visibilityConfig = std::move(value); } /** *Defines and enables Amazon CloudWatch metrics and web request sample * collection.
*/ inline Rule& WithVisibilityConfig(const VisibilityConfig& value) { SetVisibilityConfig(value); return *this;} /** *Defines and enables Amazon CloudWatch metrics and web request sample * collection.
*/ inline Rule& WithVisibilityConfig(VisibilityConfig&& value) { SetVisibilityConfig(std::move(value)); return *this;} private: Aws::String m_name; bool m_nameHasBeenSet; int m_priority; bool m_priorityHasBeenSet; Statement m_statement; bool m_statementHasBeenSet; RuleAction m_action; bool m_actionHasBeenSet; OverrideAction m_overrideAction; bool m_overrideActionHasBeenSet; VisibilityConfig m_visibilityConfig; bool m_visibilityConfigHasBeenSet; }; } // namespace Model } // namespace WAFV2 } // namespace Aws