aws-sdk-wafv2 1.25.0 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,6 +39,8 @@ module Aws::WAFV2
39
39
  # This is used only to indicate the web request component for WAF to
40
40
  # inspect, in the FieldToMatch specification.
41
41
  #
42
+ # JSON specification: `"All": \{\}`
43
+ #
42
44
  # @api private
43
45
  #
44
46
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/All AWS API Documentation
@@ -50,6 +52,8 @@ module Aws::WAFV2
50
52
  # This is used only to indicate the web request component for WAF to
51
53
  # inspect, in the FieldToMatch specification.
52
54
  #
55
+ # JSON specification: `"AllQueryArguments": \{\}`
56
+ #
53
57
  # @api private
54
58
  #
55
59
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/AllQueryArguments AWS API Documentation
@@ -353,6 +357,42 @@ module Aws::WAFV2
353
357
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
354
358
  # key: "LabelMatchKey", # required
355
359
  # },
360
+ # regex_match_statement: {
361
+ # regex_string: "RegexPatternString", # required
362
+ # field_to_match: { # required
363
+ # single_header: {
364
+ # name: "FieldToMatchData", # required
365
+ # },
366
+ # single_query_argument: {
367
+ # name: "FieldToMatchData", # required
368
+ # },
369
+ # all_query_arguments: {
370
+ # },
371
+ # uri_path: {
372
+ # },
373
+ # query_string: {
374
+ # },
375
+ # body: {
376
+ # },
377
+ # method: {
378
+ # },
379
+ # json_body: {
380
+ # match_pattern: { # required
381
+ # all: {
382
+ # },
383
+ # included_paths: ["JsonPointerPath"],
384
+ # },
385
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
386
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
387
+ # },
388
+ # },
389
+ # text_transformations: [ # required
390
+ # {
391
+ # priority: 1, # required
392
+ # 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
393
+ # },
394
+ # ],
395
+ # },
356
396
  # },
357
397
  # ],
358
398
  # }
@@ -462,6 +502,8 @@ module Aws::WAFV2
462
502
  # This is used only to indicate the web request component for WAF to
463
503
  # inspect, in the FieldToMatch specification.
464
504
  #
505
+ # JSON specification: `"Body": \{\}`
506
+ #
465
507
  # @api private
466
508
  #
467
509
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/Body AWS API Documentation
@@ -878,6 +920,42 @@ module Aws::WAFV2
878
920
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
879
921
  # key: "LabelMatchKey", # required
880
922
  # },
923
+ # regex_match_statement: {
924
+ # regex_string: "RegexPatternString", # required
925
+ # field_to_match: { # required
926
+ # single_header: {
927
+ # name: "FieldToMatchData", # required
928
+ # },
929
+ # single_query_argument: {
930
+ # name: "FieldToMatchData", # required
931
+ # },
932
+ # all_query_arguments: {
933
+ # },
934
+ # uri_path: {
935
+ # },
936
+ # query_string: {
937
+ # },
938
+ # body: {
939
+ # },
940
+ # method: {
941
+ # },
942
+ # json_body: {
943
+ # match_pattern: { # required
944
+ # all: {
945
+ # },
946
+ # included_paths: ["JsonPointerPath"],
947
+ # },
948
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
949
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
950
+ # },
951
+ # },
952
+ # text_transformations: [ # required
953
+ # {
954
+ # priority: 1, # required
955
+ # 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
956
+ # },
957
+ # ],
958
+ # },
881
959
  # },
882
960
  # action: {
883
961
  # block: {
@@ -1508,6 +1586,42 @@ module Aws::WAFV2
1508
1586
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
1509
1587
  # key: "LabelMatchKey", # required
1510
1588
  # },
1589
+ # regex_match_statement: {
1590
+ # regex_string: "RegexPatternString", # required
1591
+ # field_to_match: { # required
1592
+ # single_header: {
1593
+ # name: "FieldToMatchData", # required
1594
+ # },
1595
+ # single_query_argument: {
1596
+ # name: "FieldToMatchData", # required
1597
+ # },
1598
+ # all_query_arguments: {
1599
+ # },
1600
+ # uri_path: {
1601
+ # },
1602
+ # query_string: {
1603
+ # },
1604
+ # body: {
1605
+ # },
1606
+ # method: {
1607
+ # },
1608
+ # json_body: {
1609
+ # match_pattern: { # required
1610
+ # all: {
1611
+ # },
1612
+ # included_paths: ["JsonPointerPath"],
1613
+ # },
1614
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
1615
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
1616
+ # },
1617
+ # },
1618
+ # text_transformations: [ # required
1619
+ # {
1620
+ # priority: 1, # required
1621
+ # 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
1622
+ # },
1623
+ # ],
1624
+ # },
1511
1625
  # },
1512
1626
  # action: {
1513
1627
  # block: {
@@ -1984,6 +2098,42 @@ module Aws::WAFV2
1984
2098
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
1985
2099
  # key: "LabelMatchKey", # required
1986
2100
  # },
2101
+ # regex_match_statement: {
2102
+ # regex_string: "RegexPatternString", # required
2103
+ # field_to_match: { # required
2104
+ # single_header: {
2105
+ # name: "FieldToMatchData", # required
2106
+ # },
2107
+ # single_query_argument: {
2108
+ # name: "FieldToMatchData", # required
2109
+ # },
2110
+ # all_query_arguments: {
2111
+ # },
2112
+ # uri_path: {
2113
+ # },
2114
+ # query_string: {
2115
+ # },
2116
+ # body: {
2117
+ # },
2118
+ # method: {
2119
+ # },
2120
+ # json_body: {
2121
+ # match_pattern: { # required
2122
+ # all: {
2123
+ # },
2124
+ # included_paths: ["JsonPointerPath"],
2125
+ # },
2126
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
2127
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
2128
+ # },
2129
+ # },
2130
+ # text_transformations: [ # required
2131
+ # {
2132
+ # priority: 1, # required
2133
+ # 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
2134
+ # },
2135
+ # ],
2136
+ # },
1987
2137
  # },
1988
2138
  # action: {
1989
2139
  # block: {
@@ -2954,6 +3104,14 @@ module Aws::WAFV2
2954
3104
  # requires it. To inspect more than one component of a web request,
2955
3105
  # create a separate rule statement for each component.
2956
3106
  #
3107
+ # JSON specification for a `QueryString` field to match:
3108
+ #
3109
+ # ` "FieldToMatch": \{ "QueryString": \{\} \}`
3110
+ #
3111
+ # Example JSON for a `Method` field to match specification:
3112
+ #
3113
+ # ` "FieldToMatch": \{ "Method": \{ "Name": "DELETE" \} \}`
3114
+ #
2957
3115
  # @note When making an API call, you may pass FieldToMatch
2958
3116
  # data as a hash:
2959
3117
  #
@@ -3195,8 +3353,8 @@ module Aws::WAFV2
3195
3353
  # provide the ARN of the rule group in this statement.
3196
3354
  #
3197
3355
  # You cannot nest a `RuleGroupReferenceStatement`, for example for use
3198
- # inside a `NotStatement` or `OrStatement`. It can only be referenced
3199
- # as a top-level statement within a rule.
3356
+ # inside a `NotStatement` or `OrStatement`. You can only use a rule
3357
+ # group reference statement at the top level inside a web ACL.
3200
3358
  # @return [Types::RuleGroupReferenceStatement]
3201
3359
  #
3202
3360
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/FirewallManagerStatement AWS API Documentation
@@ -3525,6 +3683,7 @@ module Aws::WAFV2
3525
3683
  # scope: "CLOUDFRONT", # required, accepts CLOUDFRONT, REGIONAL
3526
3684
  # web_acl_name: "EntityName", # required
3527
3685
  # web_acl_id: "EntityId", # required
3686
+ # rule_group_rule_name: "EntityName",
3528
3687
  # rule_name: "EntityName", # required
3529
3688
  # }
3530
3689
  #
@@ -3554,8 +3713,17 @@ module Aws::WAFV2
3554
3713
  # like update and delete.
3555
3714
  # @return [String]
3556
3715
  #
3716
+ # @!attribute [rw] rule_group_rule_name
3717
+ # The name of the rule group reference statement in your web ACL. This
3718
+ # is required only when you have the rate-based rule nested inside a
3719
+ # rule group.
3720
+ # @return [String]
3721
+ #
3557
3722
  # @!attribute [rw] rule_name
3558
- # The name of the rate-based rule to get the keys for.
3723
+ # The name of the rate-based rule to get the keys for. If you have the
3724
+ # rule defined inside a rule group that you're using in your web ACL,
3725
+ # also provide the name of the rule group reference statement in the
3726
+ # request parameter `RuleGroupRuleName`.
3559
3727
  # @return [String]
3560
3728
  #
3561
3729
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetRateBasedStatementManagedKeysRequest AWS API Documentation
@@ -3564,6 +3732,7 @@ module Aws::WAFV2
3564
3732
  :scope,
3565
3733
  :web_acl_name,
3566
3734
  :web_acl_id,
3735
+ :rule_group_rule_name,
3567
3736
  :rule_name)
3568
3737
  SENSITIVE = []
3569
3738
  include Aws::Structure
@@ -4283,6 +4452,9 @@ module Aws::WAFV2
4283
4452
  # inspects only the parts of the JSON that result from the matches that
4284
4453
  # you indicate.
4285
4454
  #
4455
+ # Example JSON: `"JsonBody": \{ "MatchPattern": \{ "All": \{\} \},
4456
+ # "MatchScope": "ALL" \}`
4457
+ #
4286
4458
  # @note When making an API call, you may pass JsonBody
4287
4459
  # data as a hash:
4288
4460
  #
@@ -5267,11 +5439,11 @@ module Aws::WAFV2
5267
5439
  #
5268
5440
  # @!attribute [rw] redacted_fields
5269
5441
  # The parts of the request that you want to keep out of the logs. For
5270
- # example, if you redact the `HEADER` field, the `HEADER` field in the
5271
- # firehose will be `xxx`.
5442
+ # example, if you redact the `SingleHeader` field, the `HEADER` field
5443
+ # in the firehose will be `xxx`.
5272
5444
  #
5273
- # <note markdown="1"> You must use one of the following values: `URI`, `QUERY_STRING`,
5274
- # `HEADER`, or `METHOD`.
5445
+ # <note markdown="1"> You can specify only the following fields for redaction: `UriPath`,
5446
+ # `QueryString`, `SingleHeader`, `Method`, and `JsonBody`.
5275
5447
  #
5276
5448
  # </note>
5277
5449
  # @return [Array<Types::FieldToMatch>]
@@ -5620,6 +5792,42 @@ module Aws::WAFV2
5620
5792
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
5621
5793
  # key: "LabelMatchKey", # required
5622
5794
  # },
5795
+ # regex_match_statement: {
5796
+ # regex_string: "RegexPatternString", # required
5797
+ # field_to_match: { # required
5798
+ # single_header: {
5799
+ # name: "FieldToMatchData", # required
5800
+ # },
5801
+ # single_query_argument: {
5802
+ # name: "FieldToMatchData", # required
5803
+ # },
5804
+ # all_query_arguments: {
5805
+ # },
5806
+ # uri_path: {
5807
+ # },
5808
+ # query_string: {
5809
+ # },
5810
+ # body: {
5811
+ # },
5812
+ # method: {
5813
+ # },
5814
+ # json_body: {
5815
+ # match_pattern: { # required
5816
+ # all: {
5817
+ # },
5818
+ # included_paths: ["JsonPointerPath"],
5819
+ # },
5820
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5821
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5822
+ # },
5823
+ # },
5824
+ # text_transformations: [ # required
5825
+ # {
5826
+ # priority: 1, # required
5827
+ # 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
5828
+ # },
5829
+ # ],
5830
+ # },
5623
5831
  # },
5624
5832
  # }
5625
5833
  #
@@ -5673,8 +5881,9 @@ module Aws::WAFV2
5673
5881
  # name and vendor name, that you provide when you add a
5674
5882
  # ManagedRuleGroupStatement to a web ACL. Managed rule groups include
5675
5883
  # Amazon Web Services Managed Rules rule groups, which are free of
5676
- # charge to WAF customers, and Marketplace managed rule groups, which
5677
- # you can subscribe to through Marketplace.
5884
+ # charge to WAF customers, and Amazon Web Services Marketplace managed
5885
+ # rule groups, which you can subscribe to through Amazon Web Services
5886
+ # Marketplace.
5678
5887
  #
5679
5888
  # @!attribute [rw] vendor_name
5680
5889
  # The name of the managed rule group vendor. You use this, along with
@@ -5688,7 +5897,8 @@ module Aws::WAFV2
5688
5897
  #
5689
5898
  # @!attribute [rw] description
5690
5899
  # The description of the managed rule group, provided by Amazon Web
5691
- # Services Managed Rules or the Marketplace seller who manages it.
5900
+ # Services Managed Rules or the Amazon Web Services Marketplace seller
5901
+ # who manages it.
5692
5902
  # @return [String]
5693
5903
  #
5694
5904
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ManagedRuleGroupSummary AWS API Documentation
@@ -5721,11 +5931,12 @@ module Aws::WAFV2
5721
5931
  include Aws::Structure
5722
5932
  end
5723
5933
 
5724
- # A set of rules that is managed by Amazon Web Services and Marketplace
5725
- # sellers to provide versioned managed rule groups for customers of WAF.
5934
+ # A set of rules that is managed by Amazon Web Services and Amazon Web
5935
+ # Services Marketplace sellers to provide versioned managed rule groups
5936
+ # for customers of WAF.
5726
5937
  #
5727
5938
  # <note markdown="1"> This is intended for use only by vendors of managed rule sets. Vendors
5728
- # are Amazon Web Services and Marketplace sellers.
5939
+ # are Amazon Web Services and Amazon Web Services Marketplace sellers.
5729
5940
  #
5730
5941
  # Vendors, you can use the managed rule set APIs to provide controlled
5731
5942
  # rollout of your versioned managed rule group offerings for your
@@ -5801,7 +6012,7 @@ module Aws::WAFV2
5801
6012
  # High-level information for a managed rule set.
5802
6013
  #
5803
6014
  # <note markdown="1"> This is intended for use only by vendors of managed rule sets. Vendors
5804
- # are Amazon Web Services and Marketplace sellers.
6015
+ # are Amazon Web Services and Amazon Web Services Marketplace sellers.
5805
6016
  #
5806
6017
  # Vendors, you can use the managed rule set APIs to provide controlled
5807
6018
  # rollout of your versioned managed rule group offerings for your
@@ -5879,7 +6090,7 @@ module Aws::WAFV2
5879
6090
  # Information for a single version of a managed rule set.
5880
6091
  #
5881
6092
  # <note markdown="1"> This is intended for use only by vendors of managed rule sets. Vendors
5882
- # are Amazon Web Services and Marketplace sellers.
6093
+ # are Amazon Web Services and Amazon Web Services Marketplace sellers.
5883
6094
  #
5884
6095
  # Vendors, you can use the managed rule set APIs to provide controlled
5885
6096
  # rollout of your versioned managed rule group offerings for your
@@ -5955,6 +6166,8 @@ module Aws::WAFV2
5955
6166
  # This is used only to indicate the web request component for WAF to
5956
6167
  # inspect, in the FieldToMatch specification.
5957
6168
  #
6169
+ # JSON specification: `"Method": \{\}`
6170
+ #
5958
6171
  # @api private
5959
6172
  #
5960
6173
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/Method AWS API Documentation
@@ -5968,6 +6181,8 @@ module Aws::WAFV2
5968
6181
  # This is used in the context of other settings, for example to specify
5969
6182
  # values for RuleAction and web ACL DefaultAction.
5970
6183
  #
6184
+ # JSON specification: `"None": \{\}`
6185
+ #
5971
6186
  # @api private
5972
6187
  #
5973
6188
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/NoneAction AWS API Documentation
@@ -6232,6 +6447,42 @@ module Aws::WAFV2
6232
6447
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
6233
6448
  # key: "LabelMatchKey", # required
6234
6449
  # },
6450
+ # regex_match_statement: {
6451
+ # regex_string: "RegexPatternString", # required
6452
+ # field_to_match: { # required
6453
+ # single_header: {
6454
+ # name: "FieldToMatchData", # required
6455
+ # },
6456
+ # single_query_argument: {
6457
+ # name: "FieldToMatchData", # required
6458
+ # },
6459
+ # all_query_arguments: {
6460
+ # },
6461
+ # uri_path: {
6462
+ # },
6463
+ # query_string: {
6464
+ # },
6465
+ # body: {
6466
+ # },
6467
+ # method: {
6468
+ # },
6469
+ # json_body: {
6470
+ # match_pattern: { # required
6471
+ # all: {
6472
+ # },
6473
+ # included_paths: ["JsonPointerPath"],
6474
+ # },
6475
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
6476
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
6477
+ # },
6478
+ # },
6479
+ # text_transformations: [ # required
6480
+ # {
6481
+ # priority: 1, # required
6482
+ # 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
6483
+ # },
6484
+ # ],
6485
+ # },
6235
6486
  # },
6236
6487
  # }
6237
6488
  #
@@ -6503,6 +6754,42 @@ module Aws::WAFV2
6503
6754
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
6504
6755
  # key: "LabelMatchKey", # required
6505
6756
  # },
6757
+ # regex_match_statement: {
6758
+ # regex_string: "RegexPatternString", # required
6759
+ # field_to_match: { # required
6760
+ # single_header: {
6761
+ # name: "FieldToMatchData", # required
6762
+ # },
6763
+ # single_query_argument: {
6764
+ # name: "FieldToMatchData", # required
6765
+ # },
6766
+ # all_query_arguments: {
6767
+ # },
6768
+ # uri_path: {
6769
+ # },
6770
+ # query_string: {
6771
+ # },
6772
+ # body: {
6773
+ # },
6774
+ # method: {
6775
+ # },
6776
+ # json_body: {
6777
+ # match_pattern: { # required
6778
+ # all: {
6779
+ # },
6780
+ # included_paths: ["JsonPointerPath"],
6781
+ # },
6782
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
6783
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
6784
+ # },
6785
+ # },
6786
+ # text_transformations: [ # required
6787
+ # {
6788
+ # priority: 1, # required
6789
+ # 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
6790
+ # },
6791
+ # ],
6792
+ # },
6506
6793
  # },
6507
6794
  # ],
6508
6795
  # }
@@ -6812,6 +7099,8 @@ module Aws::WAFV2
6812
7099
  # This is used only to indicate the web request component for WAF to
6813
7100
  # inspect, in the FieldToMatch specification.
6814
7101
  #
7102
+ # JSON specification: `"QueryString": \{\}`
7103
+ #
6815
7104
  # @api private
6816
7105
  #
6817
7106
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/QueryString AWS API Documentation
@@ -6824,6 +7113,15 @@ module Aws::WAFV2
6824
7113
  # You can use this to put a temporary block on requests from an IP
6825
7114
  # address that is sending excessive requests.
6826
7115
  #
7116
+ # WAF tracks and manages web requests separately for each instance of a
7117
+ # rate-based rule that you use. For example, if you provide the same
7118
+ # rate-based rule settings in two web ACLs, each of the two rule
7119
+ # statements represents a separate instance of the rate-based rule and
7120
+ # gets its own tracking and management by WAF. If you define a
7121
+ # rate-based rule inside a rule group, and then use that rule group in
7122
+ # multiple places, each use creates a separate instance of the
7123
+ # rate-based rule that gets its own tracking and management by WAF.
7124
+ #
6827
7125
  # When the rule action triggers, WAF blocks additional requests from the
6828
7126
  # IP address until the request rate falls below the limit.
6829
7127
  #
@@ -6847,9 +7145,9 @@ module Aws::WAFV2
6847
7145
  # not meet both conditions are not counted towards the rate limit and
6848
7146
  # are not affected by this rule.
6849
7147
  #
6850
- # You cannot nest a `RateBasedStatement`, for example for use inside a
6851
- # `NotStatement` or `OrStatement`. It can only be referenced as a
6852
- # top-level statement within a rule.
7148
+ # You cannot nest a `RateBasedStatement` inside another statement, for
7149
+ # example inside a `NotStatement` or `OrStatement`. You can define a
7150
+ # `RateBasedStatement` inside a web ACL and inside a rule group.
6853
7151
  #
6854
7152
  # @note When making an API call, you may pass RateBasedStatement
6855
7153
  # data as a hash:
@@ -7108,7 +7406,43 @@ module Aws::WAFV2
7108
7406
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
7109
7407
  # key: "LabelMatchKey", # required
7110
7408
  # },
7111
- # },
7409
+ # regex_match_statement: {
7410
+ # regex_string: "RegexPatternString", # required
7411
+ # field_to_match: { # required
7412
+ # single_header: {
7413
+ # name: "FieldToMatchData", # required
7414
+ # },
7415
+ # single_query_argument: {
7416
+ # name: "FieldToMatchData", # required
7417
+ # },
7418
+ # all_query_arguments: {
7419
+ # },
7420
+ # uri_path: {
7421
+ # },
7422
+ # query_string: {
7423
+ # },
7424
+ # body: {
7425
+ # },
7426
+ # method: {
7427
+ # },
7428
+ # json_body: {
7429
+ # match_pattern: { # required
7430
+ # all: {
7431
+ # },
7432
+ # included_paths: ["JsonPointerPath"],
7433
+ # },
7434
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7435
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7436
+ # },
7437
+ # },
7438
+ # text_transformations: [ # required
7439
+ # {
7440
+ # priority: 1, # required
7441
+ # 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
7442
+ # },
7443
+ # ],
7444
+ # },
7445
+ # },
7112
7446
  # forwarded_ip_config: {
7113
7447
  # header_name: "ForwardedIPHeaderName", # required
7114
7448
  # fallback_behavior: "MATCH", # required, accepts MATCH, NO_MATCH
@@ -7167,8 +7501,8 @@ module Aws::WAFV2
7167
7501
  include Aws::Structure
7168
7502
  end
7169
7503
 
7170
- # The set of IP addresses that are currently blocked for a rate-based
7171
- # statement.
7504
+ # The set of IP addresses that are currently blocked for a
7505
+ # RateBasedStatement.
7172
7506
  #
7173
7507
  # @!attribute [rw] ip_address_version
7174
7508
  # The version of the IP addresses, either `IPV4` or `IPV6`.
@@ -7208,6 +7542,77 @@ module Aws::WAFV2
7208
7542
  include Aws::Structure
7209
7543
  end
7210
7544
 
7545
+ # A rule statement used to search web request components for a match
7546
+ # against a single regular expression.
7547
+ #
7548
+ # @note When making an API call, you may pass RegexMatchStatement
7549
+ # data as a hash:
7550
+ #
7551
+ # {
7552
+ # regex_string: "RegexPatternString", # required
7553
+ # field_to_match: { # required
7554
+ # single_header: {
7555
+ # name: "FieldToMatchData", # required
7556
+ # },
7557
+ # single_query_argument: {
7558
+ # name: "FieldToMatchData", # required
7559
+ # },
7560
+ # all_query_arguments: {
7561
+ # },
7562
+ # uri_path: {
7563
+ # },
7564
+ # query_string: {
7565
+ # },
7566
+ # body: {
7567
+ # },
7568
+ # method: {
7569
+ # },
7570
+ # json_body: {
7571
+ # match_pattern: { # required
7572
+ # all: {
7573
+ # },
7574
+ # included_paths: ["JsonPointerPath"],
7575
+ # },
7576
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7577
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7578
+ # },
7579
+ # },
7580
+ # text_transformations: [ # required
7581
+ # {
7582
+ # priority: 1, # required
7583
+ # 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
7584
+ # },
7585
+ # ],
7586
+ # }
7587
+ #
7588
+ # @!attribute [rw] regex_string
7589
+ # The string representing the regular expression.
7590
+ # @return [String]
7591
+ #
7592
+ # @!attribute [rw] field_to_match
7593
+ # The part of a web request that you want WAF to inspect. For more
7594
+ # information, see FieldToMatch.
7595
+ # @return [Types::FieldToMatch]
7596
+ #
7597
+ # @!attribute [rw] text_transformations
7598
+ # Text transformations eliminate some of the unusual formatting that
7599
+ # attackers use in web requests in an effort to bypass detection. If
7600
+ # you specify one or more transformations in a rule statement, WAF
7601
+ # performs all transformations on the content of the request component
7602
+ # identified by `FieldToMatch`, starting from the lowest priority
7603
+ # setting, before inspecting the content for a match.
7604
+ # @return [Array<Types::TextTransformation>]
7605
+ #
7606
+ # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/RegexMatchStatement AWS API Documentation
7607
+ #
7608
+ class RegexMatchStatement < Struct.new(
7609
+ :regex_string,
7610
+ :field_to_match,
7611
+ :text_transformations)
7612
+ SENSITIVE = []
7613
+ include Aws::Structure
7614
+ end
7615
+
7211
7616
  # Contains one or more regular expressions.
7212
7617
  #
7213
7618
  # WAF assigns an ARN to each `RegexPatternSet` that you create. To use a
@@ -7641,6 +8046,42 @@ module Aws::WAFV2
7641
8046
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
7642
8047
  # key: "LabelMatchKey", # required
7643
8048
  # },
8049
+ # regex_match_statement: {
8050
+ # regex_string: "RegexPatternString", # required
8051
+ # field_to_match: { # required
8052
+ # single_header: {
8053
+ # name: "FieldToMatchData", # required
8054
+ # },
8055
+ # single_query_argument: {
8056
+ # name: "FieldToMatchData", # required
8057
+ # },
8058
+ # all_query_arguments: {
8059
+ # },
8060
+ # uri_path: {
8061
+ # },
8062
+ # query_string: {
8063
+ # },
8064
+ # body: {
8065
+ # },
8066
+ # method: {
8067
+ # },
8068
+ # json_body: {
8069
+ # match_pattern: { # required
8070
+ # all: {
8071
+ # },
8072
+ # included_paths: ["JsonPointerPath"],
8073
+ # },
8074
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
8075
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
8076
+ # },
8077
+ # },
8078
+ # text_transformations: [ # required
8079
+ # {
8080
+ # priority: 1, # required
8081
+ # 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
8082
+ # },
8083
+ # ],
8084
+ # },
7644
8085
  # },
7645
8086
  # action: {
7646
8087
  # block: {
@@ -7996,8 +8437,8 @@ module Aws::WAFV2
7996
8437
  # provide the ARN of the rule group in this statement.
7997
8438
  #
7998
8439
  # You cannot nest a `RuleGroupReferenceStatement`, for example for use
7999
- # inside a `NotStatement` or `OrStatement`. It can only be referenced as
8000
- # a top-level statement within a rule.
8440
+ # inside a `NotStatement` or `OrStatement`. You can only use a rule
8441
+ # group reference statement at the top level inside a web ACL.
8001
8442
  #
8002
8443
  # @note When making an API call, you may pass RuleGroupReferenceStatement
8003
8444
  # data as a hash:
@@ -8179,6 +8620,8 @@ module Aws::WAFV2
8179
8620
  # This is used only to indicate the web request component for WAF to
8180
8621
  # inspect, in the FieldToMatch specification.
8181
8622
  #
8623
+ # Example JSON: `"SingleHeader": \{ "Name": "haystack" \}`
8624
+ #
8182
8625
  # @note When making an API call, you may pass SingleHeader
8183
8626
  # data as a hash:
8184
8627
  #
@@ -8202,6 +8645,8 @@ module Aws::WAFV2
8202
8645
  # *UserName* or *SalesRegion*. The name can be up to 30 characters long
8203
8646
  # and isn't case sensitive.
8204
8647
  #
8648
+ # Example JSON: `"SingleQueryArgument": \{ "Name": "myArgument" \}`
8649
+ #
8205
8650
  # @note When making an API call, you may pass SingleQueryArgument
8206
8651
  # data as a hash:
8207
8652
  #
@@ -8837,6 +9282,42 @@ module Aws::WAFV2
8837
9282
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
8838
9283
  # key: "LabelMatchKey", # required
8839
9284
  # },
9285
+ # regex_match_statement: {
9286
+ # regex_string: "RegexPatternString", # required
9287
+ # field_to_match: { # required
9288
+ # single_header: {
9289
+ # name: "FieldToMatchData", # required
9290
+ # },
9291
+ # single_query_argument: {
9292
+ # name: "FieldToMatchData", # required
9293
+ # },
9294
+ # all_query_arguments: {
9295
+ # },
9296
+ # uri_path: {
9297
+ # },
9298
+ # query_string: {
9299
+ # },
9300
+ # body: {
9301
+ # },
9302
+ # method: {
9303
+ # },
9304
+ # json_body: {
9305
+ # match_pattern: { # required
9306
+ # all: {
9307
+ # },
9308
+ # included_paths: ["JsonPointerPath"],
9309
+ # },
9310
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
9311
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
9312
+ # },
9313
+ # },
9314
+ # text_transformations: [ # required
9315
+ # {
9316
+ # priority: 1, # required
9317
+ # 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
9318
+ # },
9319
+ # ],
9320
+ # },
8840
9321
  # },
8841
9322
  # forwarded_ip_config: {
8842
9323
  # header_name: "ForwardedIPHeaderName", # required
@@ -9090,6 +9571,42 @@ module Aws::WAFV2
9090
9571
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
9091
9572
  # key: "LabelMatchKey", # required
9092
9573
  # },
9574
+ # regex_match_statement: {
9575
+ # regex_string: "RegexPatternString", # required
9576
+ # field_to_match: { # required
9577
+ # single_header: {
9578
+ # name: "FieldToMatchData", # required
9579
+ # },
9580
+ # single_query_argument: {
9581
+ # name: "FieldToMatchData", # required
9582
+ # },
9583
+ # all_query_arguments: {
9584
+ # },
9585
+ # uri_path: {
9586
+ # },
9587
+ # query_string: {
9588
+ # },
9589
+ # body: {
9590
+ # },
9591
+ # method: {
9592
+ # },
9593
+ # json_body: {
9594
+ # match_pattern: { # required
9595
+ # all: {
9596
+ # },
9597
+ # included_paths: ["JsonPointerPath"],
9598
+ # },
9599
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
9600
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
9601
+ # },
9602
+ # },
9603
+ # text_transformations: [ # required
9604
+ # {
9605
+ # priority: 1, # required
9606
+ # 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
9607
+ # },
9608
+ # ],
9609
+ # },
9093
9610
  # },
9094
9611
  # ],
9095
9612
  # },
@@ -9340,6 +9857,42 @@ module Aws::WAFV2
9340
9857
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
9341
9858
  # key: "LabelMatchKey", # required
9342
9859
  # },
9860
+ # regex_match_statement: {
9861
+ # regex_string: "RegexPatternString", # required
9862
+ # field_to_match: { # required
9863
+ # single_header: {
9864
+ # name: "FieldToMatchData", # required
9865
+ # },
9866
+ # single_query_argument: {
9867
+ # name: "FieldToMatchData", # required
9868
+ # },
9869
+ # all_query_arguments: {
9870
+ # },
9871
+ # uri_path: {
9872
+ # },
9873
+ # query_string: {
9874
+ # },
9875
+ # body: {
9876
+ # },
9877
+ # method: {
9878
+ # },
9879
+ # json_body: {
9880
+ # match_pattern: { # required
9881
+ # all: {
9882
+ # },
9883
+ # included_paths: ["JsonPointerPath"],
9884
+ # },
9885
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
9886
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
9887
+ # },
9888
+ # },
9889
+ # text_transformations: [ # required
9890
+ # {
9891
+ # priority: 1, # required
9892
+ # 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
9893
+ # },
9894
+ # ],
9895
+ # },
9343
9896
  # },
9344
9897
  # ],
9345
9898
  # },
@@ -9593,6 +10146,42 @@ module Aws::WAFV2
9593
10146
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
9594
10147
  # key: "LabelMatchKey", # required
9595
10148
  # },
10149
+ # regex_match_statement: {
10150
+ # regex_string: "RegexPatternString", # required
10151
+ # field_to_match: { # required
10152
+ # single_header: {
10153
+ # name: "FieldToMatchData", # required
10154
+ # },
10155
+ # single_query_argument: {
10156
+ # name: "FieldToMatchData", # required
10157
+ # },
10158
+ # all_query_arguments: {
10159
+ # },
10160
+ # uri_path: {
10161
+ # },
10162
+ # query_string: {
10163
+ # },
10164
+ # body: {
10165
+ # },
10166
+ # method: {
10167
+ # },
10168
+ # json_body: {
10169
+ # match_pattern: { # required
10170
+ # all: {
10171
+ # },
10172
+ # included_paths: ["JsonPointerPath"],
10173
+ # },
10174
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
10175
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
10176
+ # },
10177
+ # },
10178
+ # text_transformations: [ # required
10179
+ # {
10180
+ # priority: 1, # required
10181
+ # 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
10182
+ # },
10183
+ # ],
10184
+ # },
9596
10185
  # },
9597
10186
  # },
9598
10187
  # managed_rule_group_statement: {
@@ -9845,12 +10434,84 @@ module Aws::WAFV2
9845
10434
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
9846
10435
  # key: "LabelMatchKey", # required
9847
10436
  # },
10437
+ # regex_match_statement: {
10438
+ # regex_string: "RegexPatternString", # required
10439
+ # field_to_match: { # required
10440
+ # single_header: {
10441
+ # name: "FieldToMatchData", # required
10442
+ # },
10443
+ # single_query_argument: {
10444
+ # name: "FieldToMatchData", # required
10445
+ # },
10446
+ # all_query_arguments: {
10447
+ # },
10448
+ # uri_path: {
10449
+ # },
10450
+ # query_string: {
10451
+ # },
10452
+ # body: {
10453
+ # },
10454
+ # method: {
10455
+ # },
10456
+ # json_body: {
10457
+ # match_pattern: { # required
10458
+ # all: {
10459
+ # },
10460
+ # included_paths: ["JsonPointerPath"],
10461
+ # },
10462
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
10463
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
10464
+ # },
10465
+ # },
10466
+ # text_transformations: [ # required
10467
+ # {
10468
+ # priority: 1, # required
10469
+ # 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
10470
+ # },
10471
+ # ],
10472
+ # },
9848
10473
  # },
9849
10474
  # },
9850
10475
  # label_match_statement: {
9851
10476
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
9852
10477
  # key: "LabelMatchKey", # required
9853
10478
  # },
10479
+ # regex_match_statement: {
10480
+ # regex_string: "RegexPatternString", # required
10481
+ # field_to_match: { # required
10482
+ # single_header: {
10483
+ # name: "FieldToMatchData", # required
10484
+ # },
10485
+ # single_query_argument: {
10486
+ # name: "FieldToMatchData", # required
10487
+ # },
10488
+ # all_query_arguments: {
10489
+ # },
10490
+ # uri_path: {
10491
+ # },
10492
+ # query_string: {
10493
+ # },
10494
+ # body: {
10495
+ # },
10496
+ # method: {
10497
+ # },
10498
+ # json_body: {
10499
+ # match_pattern: { # required
10500
+ # all: {
10501
+ # },
10502
+ # included_paths: ["JsonPointerPath"],
10503
+ # },
10504
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
10505
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
10506
+ # },
10507
+ # },
10508
+ # text_transformations: [ # required
10509
+ # {
10510
+ # priority: 1, # required
10511
+ # 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
10512
+ # },
10513
+ # ],
10514
+ # },
9854
10515
  # }
9855
10516
  #
9856
10517
  # @!attribute [rw] byte_match_statement
@@ -9913,8 +10574,8 @@ module Aws::WAFV2
9913
10574
  # provide the ARN of the rule group in this statement.
9914
10575
  #
9915
10576
  # You cannot nest a `RuleGroupReferenceStatement`, for example for use
9916
- # inside a `NotStatement` or `OrStatement`. It can only be referenced
9917
- # as a top-level statement within a rule.
10577
+ # inside a `NotStatement` or `OrStatement`. You can only use a rule
10578
+ # group reference statement at the top level inside a web ACL.
9918
10579
  # @return [Types::RuleGroupReferenceStatement]
9919
10580
  #
9920
10581
  # @!attribute [rw] ip_set_reference_statement
@@ -9952,6 +10613,15 @@ module Aws::WAFV2
9952
10613
  # time span. You can use this to put a temporary block on requests
9953
10614
  # from an IP address that is sending excessive requests.
9954
10615
  #
10616
+ # WAF tracks and manages web requests separately for each instance of
10617
+ # a rate-based rule that you use. For example, if you provide the same
10618
+ # rate-based rule settings in two web ACLs, each of the two rule
10619
+ # statements represents a separate instance of the rate-based rule and
10620
+ # gets its own tracking and management by WAF. If you define a
10621
+ # rate-based rule inside a rule group, and then use that rule group in
10622
+ # multiple places, each use creates a separate instance of the
10623
+ # rate-based rule that gets its own tracking and management by WAF.
10624
+ #
9955
10625
  # When the rule action triggers, WAF blocks additional requests from
9956
10626
  # the IP address until the request rate falls below the limit.
9957
10627
  #
@@ -9975,9 +10645,9 @@ module Aws::WAFV2
9975
10645
  # do not meet both conditions are not counted towards the rate limit
9976
10646
  # and are not affected by this rule.
9977
10647
  #
9978
- # You cannot nest a `RateBasedStatement`, for example for use inside a
9979
- # `NotStatement` or `OrStatement`. It can only be referenced as a
9980
- # top-level statement within a rule.
10648
+ # You cannot nest a `RateBasedStatement` inside another statement, for
10649
+ # example inside a `NotStatement` or `OrStatement`. You can define a
10650
+ # `RateBasedStatement` inside a web ACL and inside a rule group.
9981
10651
  # @return [Types::RateBasedStatement]
9982
10652
  #
9983
10653
  # @!attribute [rw] and_statement
@@ -10023,6 +10693,11 @@ module Aws::WAFV2
10023
10693
  # that were added in the same context as the label match statement.
10024
10694
  # @return [Types::LabelMatchStatement]
10025
10695
  #
10696
+ # @!attribute [rw] regex_match_statement
10697
+ # A rule statement used to search web request components for a match
10698
+ # against a single regular expression.
10699
+ # @return [Types::RegexMatchStatement]
10700
+ #
10026
10701
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/Statement AWS API Documentation
10027
10702
  #
10028
10703
  class Statement < Struct.new(
@@ -10039,7 +10714,8 @@ module Aws::WAFV2
10039
10714
  :or_statement,
10040
10715
  :not_statement,
10041
10716
  :managed_rule_group_statement,
10042
- :label_match_statement)
10717
+ :label_match_statement,
10718
+ :regex_match_statement)
10043
10719
  SENSITIVE = []
10044
10720
  include Aws::Structure
10045
10721
  end
@@ -10965,6 +11641,42 @@ module Aws::WAFV2
10965
11641
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
10966
11642
  # key: "LabelMatchKey", # required
10967
11643
  # },
11644
+ # regex_match_statement: {
11645
+ # regex_string: "RegexPatternString", # required
11646
+ # field_to_match: { # required
11647
+ # single_header: {
11648
+ # name: "FieldToMatchData", # required
11649
+ # },
11650
+ # single_query_argument: {
11651
+ # name: "FieldToMatchData", # required
11652
+ # },
11653
+ # all_query_arguments: {
11654
+ # },
11655
+ # uri_path: {
11656
+ # },
11657
+ # query_string: {
11658
+ # },
11659
+ # body: {
11660
+ # },
11661
+ # method: {
11662
+ # },
11663
+ # json_body: {
11664
+ # match_pattern: { # required
11665
+ # all: {
11666
+ # },
11667
+ # included_paths: ["JsonPointerPath"],
11668
+ # },
11669
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
11670
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
11671
+ # },
11672
+ # },
11673
+ # text_transformations: [ # required
11674
+ # {
11675
+ # priority: 1, # required
11676
+ # 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
11677
+ # },
11678
+ # ],
11679
+ # },
10968
11680
  # },
10969
11681
  # action: {
10970
11682
  # block: {
@@ -11431,6 +12143,42 @@ module Aws::WAFV2
11431
12143
  # scope: "LABEL", # required, accepts LABEL, NAMESPACE
11432
12144
  # key: "LabelMatchKey", # required
11433
12145
  # },
12146
+ # regex_match_statement: {
12147
+ # regex_string: "RegexPatternString", # required
12148
+ # field_to_match: { # required
12149
+ # single_header: {
12150
+ # name: "FieldToMatchData", # required
12151
+ # },
12152
+ # single_query_argument: {
12153
+ # name: "FieldToMatchData", # required
12154
+ # },
12155
+ # all_query_arguments: {
12156
+ # },
12157
+ # uri_path: {
12158
+ # },
12159
+ # query_string: {
12160
+ # },
12161
+ # body: {
12162
+ # },
12163
+ # method: {
12164
+ # },
12165
+ # json_body: {
12166
+ # match_pattern: { # required
12167
+ # all: {
12168
+ # },
12169
+ # included_paths: ["JsonPointerPath"],
12170
+ # },
12171
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
12172
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
12173
+ # },
12174
+ # },
12175
+ # text_transformations: [ # required
12176
+ # {
12177
+ # priority: 1, # required
12178
+ # 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
12179
+ # },
12180
+ # ],
12181
+ # },
11434
12182
  # },
11435
12183
  # action: {
11436
12184
  # block: {
@@ -11623,6 +12371,8 @@ module Aws::WAFV2
11623
12371
  # This is used only to indicate the web request component for WAF to
11624
12372
  # inspect, in the FieldToMatch specification.
11625
12373
  #
12374
+ # JSON specification: `"UriPath": \{\}`
12375
+ #
11626
12376
  # @api private
11627
12377
  #
11628
12378
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UriPath AWS API Documentation
@@ -11633,7 +12383,7 @@ module Aws::WAFV2
11633
12383
  # vendor publishes for use by customers.
11634
12384
  #
11635
12385
  # <note markdown="1"> This is intended for use only by vendors of managed rule sets. Vendors
11636
- # are Amazon Web Services and Marketplace sellers.
12386
+ # are Amazon Web Services and Amazon Web Services Marketplace sellers.
11637
12387
  #
11638
12388
  # Vendors, you can use the managed rule set APIs to provide controlled
11639
12389
  # rollout of your versioned managed rule group offerings for your