Class: Aws::WAFV2::Types::CreateWebACLRequest
- Inherits:
-
Struct
- Object
- Struct
- Aws::WAFV2::Types::CreateWebACLRequest
- Includes:
- Structure
- Defined in:
- lib/aws-sdk-wafv2/types.rb
Overview
When making an API call, you may pass CreateWebACLRequest data as a hash:
{
name: "EntityName", # required
scope: "CLOUDFRONT", # required, accepts CLOUDFRONT, REGIONAL
default_action: { # required
block: {
custom_response: {
response_code: 1, # required
custom_response_body_key: "EntityName",
response_headers: [
{
name: "CustomHTTPHeaderName", # required
value: "CustomHTTPHeaderValue", # required
},
],
},
},
allow: {
custom_request_handling: {
insert_headers: [ # required
{
name: "CustomHTTPHeaderName", # required
value: "CustomHTTPHeaderValue", # required
},
],
},
},
},
description: "EntityDescription",
rules: [
{
name: "EntityName", # required
priority: 1, # required
statement: { # required
byte_match_statement: {
search_string: "data", # required
field_to_match: { # required
single_header: {
name: "FieldToMatchData", # required
},
single_query_argument: {
name: "FieldToMatchData", # required
},
all_query_arguments: {
},
uri_path: {
},
query_string: {
},
body: {
},
method: {
},
json_body: {
match_pattern: { # required
all: {
},
included_paths: ["JsonPointerPath"],
},
match_scope: "ALL", # required, accepts ALL, KEY, VALUE
invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
},
},
text_transformations: [ # required
{
priority: 1, # required
type: "NONE", # required, accepts NONE, COMPRESS_WHITE_SPACE, HTML_ENTITY_DECODE, LOWERCASE, CMD_LINE, URL_DECODE, BASE64_DECODE, HEX_DECODE, MD5, REPLACE_COMMENTS, ESCAPE_SEQ_DECODE, SQL_HEX_DECODE, CSS_DECODE, JS_DECODE, NORMALIZE_PATH, NORMALIZE_PATH_WIN, REMOVE_NULLS, REPLACE_NULLS, BASE64_DECODE_EXT, URL_DECODE_UNI, UTF8_TO_UNICODE
},
],
positional_constraint: "EXACTLY", # required, accepts EXACTLY, STARTS_WITH, ENDS_WITH, CONTAINS, CONTAINS_WORD
},
sqli_match_statement: {
field_to_match: { # required
single_header: {
name: "FieldToMatchData", # required
},
single_query_argument: {
name: "FieldToMatchData", # required
},
all_query_arguments: {
},
uri_path: {
},
query_string: {
},
body: {
},
method: {
},
json_body: {
match_pattern: { # required
all: {
},
included_paths: ["JsonPointerPath"],
},
match_scope: "ALL", # required, accepts ALL, KEY, VALUE
invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
},
},
text_transformations: [ # required
{
priority: 1, # required
type: "NONE", # required, accepts NONE, COMPRESS_WHITE_SPACE, HTML_ENTITY_DECODE, LOWERCASE, CMD_LINE, URL_DECODE, BASE64_DECODE, HEX_DECODE, MD5, REPLACE_COMMENTS, ESCAPE_SEQ_DECODE, SQL_HEX_DECODE, CSS_DECODE, JS_DECODE, NORMALIZE_PATH, NORMALIZE_PATH_WIN, REMOVE_NULLS, REPLACE_NULLS, BASE64_DECODE_EXT, URL_DECODE_UNI, UTF8_TO_UNICODE
},
],
},
xss_match_statement: {
field_to_match: { # required
single_header: {
name: "FieldToMatchData", # required
},
single_query_argument: {
name: "FieldToMatchData", # required
},
all_query_arguments: {
},
uri_path: {
},
query_string: {
},
body: {
},
method: {
},
json_body: {
match_pattern: { # required
all: {
},
included_paths: ["JsonPointerPath"],
},
match_scope: "ALL", # required, accepts ALL, KEY, VALUE
invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
},
},
text_transformations: [ # required
{
priority: 1, # required
type: "NONE", # required, accepts NONE, COMPRESS_WHITE_SPACE, HTML_ENTITY_DECODE, LOWERCASE, CMD_LINE, URL_DECODE, BASE64_DECODE, HEX_DECODE, MD5, REPLACE_COMMENTS, ESCAPE_SEQ_DECODE, SQL_HEX_DECODE, CSS_DECODE, JS_DECODE, NORMALIZE_PATH, NORMALIZE_PATH_WIN, REMOVE_NULLS, REPLACE_NULLS, BASE64_DECODE_EXT, URL_DECODE_UNI, UTF8_TO_UNICODE
},
],
},
size_constraint_statement: {
field_to_match: { # required
single_header: {
name: "FieldToMatchData", # required
},
single_query_argument: {
name: "FieldToMatchData", # required
},
all_query_arguments: {
},
uri_path: {
},
query_string: {
},
body: {
},
method: {
},
json_body: {
match_pattern: { # required
all: {
},
included_paths: ["JsonPointerPath"],
},
match_scope: "ALL", # required, accepts ALL, KEY, VALUE
invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
},
},
comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
size: 1, # required
text_transformations: [ # required
{
priority: 1, # required
type: "NONE", # required, accepts NONE, COMPRESS_WHITE_SPACE, HTML_ENTITY_DECODE, LOWERCASE, CMD_LINE, URL_DECODE, BASE64_DECODE, HEX_DECODE, MD5, REPLACE_COMMENTS, ESCAPE_SEQ_DECODE, SQL_HEX_DECODE, CSS_DECODE, JS_DECODE, NORMALIZE_PATH, NORMALIZE_PATH_WIN, REMOVE_NULLS, REPLACE_NULLS, BASE64_DECODE_EXT, URL_DECODE_UNI, UTF8_TO_UNICODE
},
],
},
geo_match_statement: {
country_codes: ["AF"], # accepts AF, AX, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, BQ, BA, BW, BV, BR, IO, BN, BG, BF, BI, KH, CM, CA, CV, KY, CF, TD, CL, CN, CX, CC, CO, KM, CG, CD, CK, CR, CI, HR, CU, CW, CY, CZ, DK, DJ, DM, DO, EC, EG, SV, GQ, ER, EE, ET, FK, FO, FJ, FI, FR, GF, PF, TF, GA, GM, GE, DE, GH, GI, GR, GL, GD, GP, GU, GT, GG, GN, GW, GY, HT, HM, VA, HN, HK, HU, IS, IN, ID, IR, IQ, IE, IM, IL, IT, JM, JP, JE, JO, KZ, KE, KI, KP, KR, KW, KG, LA, LV, LB, LS, LR, LY, LI, LT, LU, MO, MK, MG, MW, MY, MV, ML, MT, MH, MQ, MR, MU, YT, MX, FM, MD, MC, MN, ME, MS, MA, MZ, MM, NA, NR, NP, NL, NC, NZ, NI, NE, NG, NU, NF, MP, NO, OM, PK, PW, PS, PA, PG, PY, PE, PH, PN, PL, PT, PR, QA, RE, RO, RU, RW, BL, SH, KN, LC, MF, PM, VC, WS, SM, ST, SA, SN, RS, SC, SL, SG, SX, SK, SI, SB, SO, ZA, GS, SS, ES, LK, SD, SR, SJ, SZ, SE, CH, SY, TW, TJ, TZ, TH, TL, TG, TK, TO, TT, TN, TR, TM, TC, TV, UG, UA, AE, GB, US, UM, UY, UZ, VU, VE, VN, VG, VI, WF, EH, YE, ZM, ZW
forwarded_ip_config: {
header_name: "ForwardedIPHeaderName", # required
fallback_behavior: "MATCH", # required, accepts MATCH, NO_MATCH
},
},
rule_group_reference_statement: {
arn: "ResourceArn", # required
excluded_rules: [
{
name: "EntityName", # required
},
],
},
ip_set_reference_statement: {
arn: "ResourceArn", # required
ip_set_forwarded_ip_config: {
header_name: "ForwardedIPHeaderName", # required
fallback_behavior: "MATCH", # required, accepts MATCH, NO_MATCH
position: "FIRST", # required, accepts FIRST, LAST, ANY
},
},
regex_pattern_set_reference_statement: {
arn: "ResourceArn", # required
field_to_match: { # required
single_header: {
name: "FieldToMatchData", # required
},
single_query_argument: {
name: "FieldToMatchData", # required
},
all_query_arguments: {
},
uri_path: {
},
query_string: {
},
body: {
},
method: {
},
json_body: {
match_pattern: { # required
all: {
},
included_paths: ["JsonPointerPath"],
},
match_scope: "ALL", # required, accepts ALL, KEY, VALUE
invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
},
},
text_transformations: [ # required
{
priority: 1, # required
type: "NONE", # required, accepts NONE, COMPRESS_WHITE_SPACE, HTML_ENTITY_DECODE, LOWERCASE, CMD_LINE, URL_DECODE, BASE64_DECODE, HEX_DECODE, MD5, REPLACE_COMMENTS, ESCAPE_SEQ_DECODE, SQL_HEX_DECODE, CSS_DECODE, JS_DECODE, NORMALIZE_PATH, NORMALIZE_PATH_WIN, REMOVE_NULLS, REPLACE_NULLS, BASE64_DECODE_EXT, URL_DECODE_UNI, UTF8_TO_UNICODE
},
],
},
rate_based_statement: {
limit: 1, # required
aggregate_key_type: "IP", # required, accepts IP, FORWARDED_IP
scope_down_statement: {
# recursive Statement
},
forwarded_ip_config: {
header_name: "ForwardedIPHeaderName", # required
fallback_behavior: "MATCH", # required, accepts MATCH, NO_MATCH
},
},
and_statement: {
statements: [ # required
{
# recursive Statement
},
],
},
or_statement: {
statements: [ # required
{
# recursive Statement
},
],
},
not_statement: {
statement: { # required
# recursive Statement
},
},
managed_rule_group_statement: {
vendor_name: "VendorName", # required
name: "EntityName", # required
version: "VersionKeyString",
excluded_rules: [
{
name: "EntityName", # required
},
],
scope_down_statement: {
# recursive Statement
},
},
label_match_statement: {
scope: "LABEL", # required, accepts LABEL, NAMESPACE
key: "LabelMatchKey", # required
},
regex_match_statement: {
regex_string: "RegexPatternString", # required
field_to_match: { # required
single_header: {
name: "FieldToMatchData", # required
},
single_query_argument: {
name: "FieldToMatchData", # required
},
all_query_arguments: {
},
uri_path: {
},
query_string: {
},
body: {
},
method: {
},
json_body: {
match_pattern: { # required
all: {
},
included_paths: ["JsonPointerPath"],
},
match_scope: "ALL", # required, accepts ALL, KEY, VALUE
invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
},
},
text_transformations: [ # required
{
priority: 1, # required
type: "NONE", # required, accepts NONE, COMPRESS_WHITE_SPACE, HTML_ENTITY_DECODE, LOWERCASE, CMD_LINE, URL_DECODE, BASE64_DECODE, HEX_DECODE, MD5, REPLACE_COMMENTS, ESCAPE_SEQ_DECODE, SQL_HEX_DECODE, CSS_DECODE, JS_DECODE, NORMALIZE_PATH, NORMALIZE_PATH_WIN, REMOVE_NULLS, REPLACE_NULLS, BASE64_DECODE_EXT, URL_DECODE_UNI, UTF8_TO_UNICODE
},
],
},
},
action: {
block: {
custom_response: {
response_code: 1, # required
custom_response_body_key: "EntityName",
response_headers: [
{
name: "CustomHTTPHeaderName", # required
value: "CustomHTTPHeaderValue", # required
},
],
},
},
allow: {
custom_request_handling: {
insert_headers: [ # required
{
name: "CustomHTTPHeaderName", # required
value: "CustomHTTPHeaderValue", # required
},
],
},
},
count: {
custom_request_handling: {
insert_headers: [ # required
{
name: "CustomHTTPHeaderName", # required
value: "CustomHTTPHeaderValue", # required
},
],
},
},
captcha: {
custom_request_handling: {
insert_headers: [ # required
{
name: "CustomHTTPHeaderName", # required
value: "CustomHTTPHeaderValue", # required
},
],
},
},
},
override_action: {
count: {
custom_request_handling: {
insert_headers: [ # required
{
name: "CustomHTTPHeaderName", # required
value: "CustomHTTPHeaderValue", # required
},
],
},
},
none: {
},
},
rule_labels: [
{
name: "LabelName", # required
},
],
visibility_config: { # required
sampled_requests_enabled: false, # required
cloud_watch_metrics_enabled: false, # required
metric_name: "MetricName", # required
},
captcha_config: {
immunity_time_property: {
immunity_time: 1, # required
},
},
},
],
visibility_config: { # required
sampled_requests_enabled: false, # required
cloud_watch_metrics_enabled: false, # required
metric_name: "MetricName", # required
},
tags: [
{
key: "TagKey", # required
value: "TagValue", # required
},
],
custom_response_bodies: {
"EntityName" => {
content_type: "TEXT_PLAIN", # required, accepts TEXT_PLAIN, TEXT_HTML, APPLICATION_JSON
content: "ResponseContent", # required
},
},
captcha_config: {
immunity_time_property: {
immunity_time: 1, # required
},
},
}
Constant Summary collapse
- SENSITIVE =
[]
Instance Attribute Summary collapse
-
#captcha_config ⇒ Types::CaptchaConfig
Specifies how WAF should handle `CAPTCHA` evaluations for rules that don't have their own `CaptchaConfig` settings.
-
#custom_response_bodies ⇒ Hash<String,Types::CustomResponseBody>
A map of custom response keys and content bodies.
-
#default_action ⇒ Types::DefaultAction
The action to perform if none of the `Rules` contained in the `WebACL` match.
-
#description ⇒ String
A description of the web ACL that helps with identification.
-
#name ⇒ String
The name of the web ACL.
-
#rules ⇒ Array<Types::Rule>
The Rule statements used to identify the web requests that you want to allow, block, or count.
-
#scope ⇒ String
Specifies whether this is for an Amazon CloudFront distribution or for a regional application.
-
#tags ⇒ Array<Types::Tag>
An array of key:value pairs to associate with the resource.
-
#visibility_config ⇒ Types::VisibilityConfig
Defines and enables Amazon CloudWatch metrics and web request sample collection.
Instance Attribute Details
#captcha_config ⇒ Types::CaptchaConfig
Specifies how WAF should handle `CAPTCHA` evaluations for rules that don't have their own `CaptchaConfig` settings. If you don't specify this, WAF uses its default settings for `CaptchaConfig`.
2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 |
# File 'lib/aws-sdk-wafv2/types.rb', line 2460 class CreateWebACLRequest < Struct.new( :name, :scope, :default_action, :description, :rules, :visibility_config, :tags, :custom_response_bodies, :captcha_config) SENSITIVE = [] include Aws::Structure end |
#custom_response_bodies ⇒ Hash<String,Types::CustomResponseBody>
A map of custom response keys and content bodies. When you create a rule with a block action, you can send a custom response to the web request. You define these for the web ACL, and then use them in the rules and default actions that you define in the web ACL.
For information about customizing web requests and responses, see
- Customizing web requests and responses in WAF][1
-
in the [WAF
Developer Guide].
For information about the limits on count and size for custom request and response settings, see [WAF quotas] in the [WAF Developer Guide].
[1]: docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html [2]: docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html [3]: docs.aws.amazon.com/waf/latest/developerguide/limits.html
2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 |
# File 'lib/aws-sdk-wafv2/types.rb', line 2460 class CreateWebACLRequest < Struct.new( :name, :scope, :default_action, :description, :rules, :visibility_config, :tags, :custom_response_bodies, :captcha_config) SENSITIVE = [] include Aws::Structure end |
#default_action ⇒ Types::DefaultAction
The action to perform if none of the `Rules` contained in the `WebACL` match.
2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 |
# File 'lib/aws-sdk-wafv2/types.rb', line 2460 class CreateWebACLRequest < Struct.new( :name, :scope, :default_action, :description, :rules, :visibility_config, :tags, :custom_response_bodies, :captcha_config) SENSITIVE = [] include Aws::Structure end |
#description ⇒ String
A description of the web ACL that helps with identification.
2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 |
# File 'lib/aws-sdk-wafv2/types.rb', line 2460 class CreateWebACLRequest < Struct.new( :name, :scope, :default_action, :description, :rules, :visibility_config, :tags, :custom_response_bodies, :captcha_config) SENSITIVE = [] include Aws::Structure end |
#name ⇒ String
The name of the web ACL. You cannot change the name of a web ACL after you create it.
2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 |
# File 'lib/aws-sdk-wafv2/types.rb', line 2460 class CreateWebACLRequest < Struct.new( :name, :scope, :default_action, :description, :rules, :visibility_config, :tags, :custom_response_bodies, :captcha_config) SENSITIVE = [] include Aws::Structure end |
#rules ⇒ Array<Types::Rule>
The Rule statements used to identify the web requests that you want to allow, block, or count. Each rule includes one top-level statement that WAF uses to identify matching web requests, and parameters that govern how WAF handles them.
2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 |
# File 'lib/aws-sdk-wafv2/types.rb', line 2460 class CreateWebACLRequest < Struct.new( :name, :scope, :default_action, :description, :rules, :visibility_config, :tags, :custom_response_bodies, :captcha_config) SENSITIVE = [] include Aws::Structure end |
#scope ⇒ String
Specifies whether this is for an Amazon CloudFront distribution or for a regional application. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
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.
2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 |
# File 'lib/aws-sdk-wafv2/types.rb', line 2460 class CreateWebACLRequest < Struct.new( :name, :scope, :default_action, :description, :rules, :visibility_config, :tags, :custom_response_bodies, :captcha_config) SENSITIVE = [] include Aws::Structure end |
#tags ⇒ Array<Types::Tag>
An array of key:value pairs to associate with the resource.
2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 |
# File 'lib/aws-sdk-wafv2/types.rb', line 2460 class CreateWebACLRequest < Struct.new( :name, :scope, :default_action, :description, :rules, :visibility_config, :tags, :custom_response_bodies, :captcha_config) SENSITIVE = [] include Aws::Structure end |
#visibility_config ⇒ Types::VisibilityConfig
Defines and enables Amazon CloudWatch metrics and web request sample collection.
2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 |
# File 'lib/aws-sdk-wafv2/types.rb', line 2460 class CreateWebACLRequest < Struct.new( :name, :scope, :default_action, :description, :rules, :visibility_config, :tags, :custom_response_bodies, :captcha_config) SENSITIVE = [] include Aws::Structure end |