class Aws::WAFV2::Types::CreateWebACLRequest
@note 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 }, }, 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 }, ], }, }, }, 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 }, }, ], 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 }, }, }
@!attribute [rw] name
The name of the web ACL. You cannot change the name of a web ACL after you create it. @return [String]
@!attribute [rw] scope
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. @return [String]
@!attribute [rw] default_action
The action to perform if none of the `Rules` contained in the `WebACL` match. @return [Types::DefaultAction]
@!attribute [rw] description
A description of the web ACL that helps with identification. @return [String]
@!attribute [rw] rules
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. @return [Array<Types::Rule>]
@!attribute [rw] visibility_config
Defines and enables Amazon CloudWatch metrics and web request sample collection. @return [Types::VisibilityConfig]
@!attribute [rw] tags
An array of key:value pairs to associate with the resource. @return [Array<Types::Tag>]
@!attribute [rw] custom_response_bodies
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][2]. For information about the limits on count and size for custom request and response settings, see [WAF quotas][3] in the [WAF Developer Guide][2]. [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html [3]: https://docs.aws.amazon.com/waf/latest/developerguide/limits.html @return [Hash<String,Types::CustomResponseBody>]
@see docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CreateWebACLRequest AWS API Documentation
Constants
- SENSITIVE