aws-cdk-lib 2.181.0__py3-none-any.whl → 2.182.0__py3-none-any.whl

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.

Potentially problematic release.


This version of aws-cdk-lib might be problematic. Click here for more details.

Files changed (49) hide show
  1. aws_cdk/__init__.py +292 -8
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.181.0.jsii.tgz → aws-cdk-lib@2.182.0.jsii.tgz} +0 -0
  4. aws_cdk/assertions/__init__.py +59 -0
  5. aws_cdk/aws_apigateway/__init__.py +122 -66
  6. aws_cdk/aws_applicationautoscaling/__init__.py +4 -0
  7. aws_cdk/aws_appsync/__init__.py +30 -4
  8. aws_cdk/aws_autoscaling/__init__.py +409 -36
  9. aws_cdk/aws_batch/__init__.py +629 -11
  10. aws_cdk/aws_bedrock/__init__.py +204 -0
  11. aws_cdk/aws_certificatemanager/__init__.py +24 -0
  12. aws_cdk/aws_cloudformation/__init__.py +284 -2
  13. aws_cdk/aws_cloudfront/__init__.py +1 -0
  14. aws_cdk/aws_cloudtrail/__init__.py +4 -4
  15. aws_cdk/aws_datazone/__init__.py +82 -0
  16. aws_cdk/aws_ec2/__init__.py +32 -12
  17. aws_cdk/aws_ecr/__init__.py +10 -4
  18. aws_cdk/aws_ecs/__init__.py +58 -9
  19. aws_cdk/aws_eks/__init__.py +32 -3
  20. aws_cdk/aws_fsx/__init__.py +2 -0
  21. aws_cdk/aws_guardduty/__init__.py +38 -26
  22. aws_cdk/aws_iam/__init__.py +5 -2
  23. aws_cdk/aws_inspector/__init__.py +176 -0
  24. aws_cdk/aws_iotsitewise/__init__.py +2 -3
  25. aws_cdk/aws_kinesisfirehose/__init__.py +6 -0
  26. aws_cdk/aws_lambda/__init__.py +8 -0
  27. aws_cdk/aws_logs/__init__.py +2 -0
  28. aws_cdk/aws_mediapackagev2/__init__.py +22 -14
  29. aws_cdk/aws_opensearchservice/__init__.py +261 -1
  30. aws_cdk/aws_pcaconnectorad/__init__.py +30 -4
  31. aws_cdk/aws_pipes/__init__.py +6 -2
  32. aws_cdk/aws_quicksight/__init__.py +225 -451
  33. aws_cdk/aws_rds/__init__.py +50 -13
  34. aws_cdk/aws_s3/__init__.py +8 -0
  35. aws_cdk/aws_sagemaker/__init__.py +68 -13
  36. aws_cdk/aws_sns/__init__.py +76 -1
  37. aws_cdk/aws_vpclattice/__init__.py +144 -9
  38. aws_cdk/aws_wafv2/__init__.py +702 -0
  39. aws_cdk/aws_wisdom/__init__.py +3 -110
  40. aws_cdk/aws_workspacesthinclient/__init__.py +4 -4
  41. aws_cdk/aws_workspacesweb/__init__.py +179 -2
  42. aws_cdk/cloud_assembly_schema/__init__.py +224 -4
  43. aws_cdk/cx_api/__init__.py +2 -1
  44. {aws_cdk_lib-2.181.0.dist-info → aws_cdk_lib-2.182.0.dist-info}/METADATA +2 -2
  45. {aws_cdk_lib-2.181.0.dist-info → aws_cdk_lib-2.182.0.dist-info}/RECORD +49 -49
  46. {aws_cdk_lib-2.181.0.dist-info → aws_cdk_lib-2.182.0.dist-info}/LICENSE +0 -0
  47. {aws_cdk_lib-2.181.0.dist-info → aws_cdk_lib-2.182.0.dist-info}/NOTICE +0 -0
  48. {aws_cdk_lib-2.181.0.dist-info → aws_cdk_lib-2.182.0.dist-info}/WHEEL +0 -0
  49. {aws_cdk_lib-2.181.0.dist-info → aws_cdk_lib-2.182.0.dist-info}/top_level.txt +0 -0
@@ -1987,6 +1987,9 @@ class CfnRuleGroup(
1987
1987
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
1988
1988
  fallback_behavior="fallbackBehavior"
1989
1989
  ),
1990
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
1991
+ fallback_behavior="fallbackBehavior"
1992
+ ),
1990
1993
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
1991
1994
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
1992
1995
  all=all,
@@ -2064,6 +2067,12 @@ class CfnRuleGroup(
2064
2067
  ),
2065
2068
  http_method=http_method,
2066
2069
  ip=ip,
2070
+ ja3_fingerprint=wafv2.CfnRuleGroup.RateLimitJA3FingerprintProperty(
2071
+ fallback_behavior="fallbackBehavior"
2072
+ ),
2073
+ ja4_fingerprint=wafv2.CfnRuleGroup.RateLimitJA4FingerprintProperty(
2074
+ fallback_behavior="fallbackBehavior"
2075
+ ),
2067
2076
  label_namespace=wafv2.CfnRuleGroup.RateLimitLabelNamespaceProperty(
2068
2077
  namespace="namespace"
2069
2078
  ),
@@ -2121,6 +2130,9 @@ class CfnRuleGroup(
2121
2130
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2122
2131
  fallback_behavior="fallbackBehavior"
2123
2132
  ),
2133
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
2134
+ fallback_behavior="fallbackBehavior"
2135
+ ),
2124
2136
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2125
2137
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2126
2138
  all=all,
@@ -2172,6 +2184,9 @@ class CfnRuleGroup(
2172
2184
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2173
2185
  fallback_behavior="fallbackBehavior"
2174
2186
  ),
2187
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
2188
+ fallback_behavior="fallbackBehavior"
2189
+ ),
2175
2190
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2176
2191
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2177
2192
  all=all,
@@ -2222,6 +2237,9 @@ class CfnRuleGroup(
2222
2237
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2223
2238
  fallback_behavior="fallbackBehavior"
2224
2239
  ),
2240
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
2241
+ fallback_behavior="fallbackBehavior"
2242
+ ),
2225
2243
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2226
2244
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2227
2245
  all=all,
@@ -2272,6 +2290,9 @@ class CfnRuleGroup(
2272
2290
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2273
2291
  fallback_behavior="fallbackBehavior"
2274
2292
  ),
2293
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
2294
+ fallback_behavior="fallbackBehavior"
2295
+ ),
2275
2296
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2276
2297
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2277
2298
  all=all,
@@ -2324,6 +2345,9 @@ class CfnRuleGroup(
2324
2345
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2325
2346
  fallback_behavior="fallbackBehavior"
2326
2347
  ),
2348
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
2349
+ fallback_behavior="fallbackBehavior"
2350
+ ),
2327
2351
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2328
2352
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2329
2353
  all=all,
@@ -2791,6 +2815,9 @@ class CfnRuleGroup(
2791
2815
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2792
2816
  fallback_behavior="fallbackBehavior"
2793
2817
  ),
2818
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
2819
+ fallback_behavior="fallbackBehavior"
2820
+ ),
2794
2821
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2795
2822
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2796
2823
  all=all,
@@ -2868,6 +2895,12 @@ class CfnRuleGroup(
2868
2895
  ),
2869
2896
  http_method=http_method,
2870
2897
  ip=ip,
2898
+ ja3_fingerprint=wafv2.CfnRuleGroup.RateLimitJA3FingerprintProperty(
2899
+ fallback_behavior="fallbackBehavior"
2900
+ ),
2901
+ ja4_fingerprint=wafv2.CfnRuleGroup.RateLimitJA4FingerprintProperty(
2902
+ fallback_behavior="fallbackBehavior"
2903
+ ),
2871
2904
  label_namespace=wafv2.CfnRuleGroup.RateLimitLabelNamespaceProperty(
2872
2905
  namespace="namespace"
2873
2906
  ),
@@ -2925,6 +2958,9 @@ class CfnRuleGroup(
2925
2958
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2926
2959
  fallback_behavior="fallbackBehavior"
2927
2960
  ),
2961
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
2962
+ fallback_behavior="fallbackBehavior"
2963
+ ),
2928
2964
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2929
2965
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2930
2966
  all=all,
@@ -2976,6 +3012,9 @@ class CfnRuleGroup(
2976
3012
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2977
3013
  fallback_behavior="fallbackBehavior"
2978
3014
  ),
3015
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
3016
+ fallback_behavior="fallbackBehavior"
3017
+ ),
2979
3018
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2980
3019
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2981
3020
  all=all,
@@ -3026,6 +3065,9 @@ class CfnRuleGroup(
3026
3065
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
3027
3066
  fallback_behavior="fallbackBehavior"
3028
3067
  ),
3068
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
3069
+ fallback_behavior="fallbackBehavior"
3070
+ ),
3029
3071
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
3030
3072
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
3031
3073
  all=all,
@@ -3076,6 +3118,9 @@ class CfnRuleGroup(
3076
3118
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
3077
3119
  fallback_behavior="fallbackBehavior"
3078
3120
  ),
3121
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
3122
+ fallback_behavior="fallbackBehavior"
3123
+ ),
3079
3124
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
3080
3125
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
3081
3126
  all=all,
@@ -3128,6 +3173,9 @@ class CfnRuleGroup(
3128
3173
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
3129
3174
  fallback_behavior="fallbackBehavior"
3130
3175
  ),
3176
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
3177
+ fallback_behavior="fallbackBehavior"
3178
+ ),
3131
3179
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
3132
3180
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
3133
3181
  all=all,
@@ -3398,6 +3446,9 @@ class CfnRuleGroup(
3398
3446
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
3399
3447
  fallback_behavior="fallbackBehavior"
3400
3448
  ),
3449
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
3450
+ fallback_behavior="fallbackBehavior"
3451
+ ),
3401
3452
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
3402
3453
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
3403
3454
  all=all,
@@ -4400,6 +4451,7 @@ class CfnRuleGroup(
4400
4451
  "cookies": "cookies",
4401
4452
  "headers": "headers",
4402
4453
  "ja3_fingerprint": "ja3Fingerprint",
4454
+ "ja4_fingerprint": "ja4Fingerprint",
4403
4455
  "json_body": "jsonBody",
4404
4456
  "method": "method",
4405
4457
  "query_string": "queryString",
@@ -4417,6 +4469,7 @@ class CfnRuleGroup(
4417
4469
  cookies: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.CookiesProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4418
4470
  headers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.HeadersProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4419
4471
  ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.JA3FingerprintProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4472
+ ja4_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.JA4FingerprintProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4420
4473
  json_body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.JsonBodyProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4421
4474
  method: typing.Any = None,
4422
4475
  query_string: typing.Any = None,
@@ -4446,6 +4499,7 @@ class CfnRuleGroup(
4446
4499
  :param cookies: Inspect the request cookies. You must configure scope and pattern matching filters in the ``Cookies`` object, to define the set of cookies and the parts of the cookies that AWS WAF inspects. Only the first 8 KB (8192 bytes) of a request's cookies and only the first 200 cookies are forwarded to AWS WAF for inspection by the underlying host service. You must configure how to handle any oversize cookie content in the ``Cookies`` object. AWS WAF applies the pattern matching filters to the cookies that it receives from the underlying host service.
4447
4500
  :param headers: Inspect the request headers. You must configure scope and pattern matching filters in the ``Headers`` object, to define the set of headers to and the parts of the headers that AWS WAF inspects. Only the first 8 KB (8192 bytes) of a request's headers and only the first 200 headers are forwarded to AWS WAF for inspection by the underlying host service. You must configure how to handle any oversize header content in the ``Headers`` object. AWS WAF applies the pattern matching filters to the headers that it receives from the underlying host service.
4448
4501
  :param ja3_fingerprint: Available for use with Amazon CloudFront distributions and Application Load Balancers. Match against the request's JA3 fingerprint. The JA3 fingerprint is a 32-character hash derived from the TLS Client Hello of an incoming request. This fingerprint serves as a unique identifier for the client's TLS configuration. AWS WAF calculates and logs this fingerprint for each request that has enough TLS Client Hello information for the calculation. Almost all web requests include this information. .. epigraph:: You can use this choice only with a string match ``ByteMatchStatement`` with the ``PositionalConstraint`` set to ``EXACTLY`` . You can obtain the JA3 fingerprint for client requests from the web ACL logs. If AWS WAF is able to calculate the fingerprint, it includes it in the logs. For information about the logging fields, see `Log fields <https://docs.aws.amazon.com/waf/latest/developerguide/logging-fields.html>`_ in the *AWS WAF Developer Guide* . Provide the JA3 fingerprint string from the logs in your string match statement specification, to match with any future requests that have the same TLS configuration.
4502
+ :param ja4_fingerprint: Includes the JA4 fingerprint of a web request.
4449
4503
  :param json_body: Inspect the request body as JSON. The request body immediately follows the request headers. This is the part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form. AWS WAF does not support inspecting the entire contents of the web request body if the body exceeds the limit for the resource type. When a web request body is larger than the limit, the underlying host service only forwards the contents that are within the limit to AWS WAF for inspection. - For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes). - For CloudFront, API Gateway, Amazon Cognito, App Runner, and Verified Access, the default limit is 16 KB (16,384 bytes), and you can increase the limit for each resource type in the web ACL ``AssociationConfig`` , for additional processing fees. For information about how to handle oversized request bodies, see the ``JsonBody`` object configuration.
4450
4504
  :param method: Inspect the HTTP method. The method indicates the type of operation that the request is asking the origin to perform.
4451
4505
  :param query_string: Inspect the query string. This is the part of a URL that appears after a ``?`` character, if any.
@@ -4496,6 +4550,9 @@ class CfnRuleGroup(
4496
4550
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
4497
4551
  fallback_behavior="fallbackBehavior"
4498
4552
  ),
4553
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
4554
+ fallback_behavior="fallbackBehavior"
4555
+ ),
4499
4556
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
4500
4557
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
4501
4558
  all=all,
@@ -4521,6 +4578,7 @@ class CfnRuleGroup(
4521
4578
  check_type(argname="argument cookies", value=cookies, expected_type=type_hints["cookies"])
4522
4579
  check_type(argname="argument headers", value=headers, expected_type=type_hints["headers"])
4523
4580
  check_type(argname="argument ja3_fingerprint", value=ja3_fingerprint, expected_type=type_hints["ja3_fingerprint"])
4581
+ check_type(argname="argument ja4_fingerprint", value=ja4_fingerprint, expected_type=type_hints["ja4_fingerprint"])
4524
4582
  check_type(argname="argument json_body", value=json_body, expected_type=type_hints["json_body"])
4525
4583
  check_type(argname="argument method", value=method, expected_type=type_hints["method"])
4526
4584
  check_type(argname="argument query_string", value=query_string, expected_type=type_hints["query_string"])
@@ -4538,6 +4596,8 @@ class CfnRuleGroup(
4538
4596
  self._values["headers"] = headers
4539
4597
  if ja3_fingerprint is not None:
4540
4598
  self._values["ja3_fingerprint"] = ja3_fingerprint
4599
+ if ja4_fingerprint is not None:
4600
+ self._values["ja4_fingerprint"] = ja4_fingerprint
4541
4601
  if json_body is not None:
4542
4602
  self._values["json_body"] = json_body
4543
4603
  if method is not None:
@@ -4630,6 +4690,17 @@ class CfnRuleGroup(
4630
4690
  result = self._values.get("ja3_fingerprint")
4631
4691
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.JA3FingerprintProperty"]], result)
4632
4692
 
4693
+ @builtins.property
4694
+ def ja4_fingerprint(
4695
+ self,
4696
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.JA4FingerprintProperty"]]:
4697
+ '''Includes the JA4 fingerprint of a web request.
4698
+
4699
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-ja4fingerprint
4700
+ '''
4701
+ result = self._values.get("ja4_fingerprint")
4702
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.JA4FingerprintProperty"]], result)
4703
+
4633
4704
  @builtins.property
4634
4705
  def json_body(
4635
4706
  self,
@@ -5468,6 +5539,57 @@ class CfnRuleGroup(
5468
5539
  k + "=" + repr(v) for k, v in self._values.items()
5469
5540
  )
5470
5541
 
5542
+ @jsii.data_type(
5543
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.JA4FingerprintProperty",
5544
+ jsii_struct_bases=[],
5545
+ name_mapping={"fallback_behavior": "fallbackBehavior"},
5546
+ )
5547
+ class JA4FingerprintProperty:
5548
+ def __init__(self, *, fallback_behavior: builtins.str) -> None:
5549
+ '''Includes the JA4 fingerprint of a web request.
5550
+
5551
+ :param fallback_behavior:
5552
+
5553
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ja4fingerprint.html
5554
+ :exampleMetadata: fixture=_generated
5555
+
5556
+ Example::
5557
+
5558
+ # The code below shows an example of how to instantiate this type.
5559
+ # The values are placeholders you should change.
5560
+ from aws_cdk import aws_wafv2 as wafv2
5561
+
5562
+ j_a4_fingerprint_property = wafv2.CfnRuleGroup.JA4FingerprintProperty(
5563
+ fallback_behavior="fallbackBehavior"
5564
+ )
5565
+ '''
5566
+ if __debug__:
5567
+ type_hints = typing.get_type_hints(_typecheckingstub__98d25072bace816c3ee0005576dfb4321dc85cb549d85f10845ec1379f11441b)
5568
+ check_type(argname="argument fallback_behavior", value=fallback_behavior, expected_type=type_hints["fallback_behavior"])
5569
+ self._values: typing.Dict[builtins.str, typing.Any] = {
5570
+ "fallback_behavior": fallback_behavior,
5571
+ }
5572
+
5573
+ @builtins.property
5574
+ def fallback_behavior(self) -> builtins.str:
5575
+ '''
5576
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ja4fingerprint.html#cfn-wafv2-rulegroup-ja4fingerprint-fallbackbehavior
5577
+ '''
5578
+ result = self._values.get("fallback_behavior")
5579
+ assert result is not None, "Required property 'fallback_behavior' is missing"
5580
+ return typing.cast(builtins.str, result)
5581
+
5582
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
5583
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
5584
+
5585
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
5586
+ return not (rhs == self)
5587
+
5588
+ def __repr__(self) -> str:
5589
+ return "JA4FingerprintProperty(%s)" % ", ".join(
5590
+ k + "=" + repr(v) for k, v in self._values.items()
5591
+ )
5592
+
5471
5593
  @jsii.data_type(
5472
5594
  jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.JsonBodyProperty",
5473
5595
  jsii_struct_bases=[],
@@ -5958,6 +6080,9 @@ class CfnRuleGroup(
5958
6080
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
5959
6081
  fallback_behavior="fallbackBehavior"
5960
6082
  ),
6083
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6084
+ fallback_behavior="fallbackBehavior"
6085
+ ),
5961
6086
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
5962
6087
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
5963
6088
  all=all,
@@ -6033,6 +6158,12 @@ class CfnRuleGroup(
6033
6158
  ),
6034
6159
  http_method=http_method,
6035
6160
  ip=ip,
6161
+ ja3_fingerprint=wafv2.CfnRuleGroup.RateLimitJA3FingerprintProperty(
6162
+ fallback_behavior="fallbackBehavior"
6163
+ ),
6164
+ ja4_fingerprint=wafv2.CfnRuleGroup.RateLimitJA4FingerprintProperty(
6165
+ fallback_behavior="fallbackBehavior"
6166
+ ),
6036
6167
  label_namespace=wafv2.CfnRuleGroup.RateLimitLabelNamespaceProperty(
6037
6168
  namespace="namespace"
6038
6169
  ),
@@ -6090,6 +6221,9 @@ class CfnRuleGroup(
6090
6221
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6091
6222
  fallback_behavior="fallbackBehavior"
6092
6223
  ),
6224
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6225
+ fallback_behavior="fallbackBehavior"
6226
+ ),
6093
6227
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6094
6228
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6095
6229
  all=all,
@@ -6141,6 +6275,9 @@ class CfnRuleGroup(
6141
6275
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6142
6276
  fallback_behavior="fallbackBehavior"
6143
6277
  ),
6278
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6279
+ fallback_behavior="fallbackBehavior"
6280
+ ),
6144
6281
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6145
6282
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6146
6283
  all=all,
@@ -6191,6 +6328,9 @@ class CfnRuleGroup(
6191
6328
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6192
6329
  fallback_behavior="fallbackBehavior"
6193
6330
  ),
6331
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6332
+ fallback_behavior="fallbackBehavior"
6333
+ ),
6194
6334
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6195
6335
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6196
6336
  all=all,
@@ -6241,6 +6381,9 @@ class CfnRuleGroup(
6241
6381
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6242
6382
  fallback_behavior="fallbackBehavior"
6243
6383
  ),
6384
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6385
+ fallback_behavior="fallbackBehavior"
6386
+ ),
6244
6387
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6245
6388
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6246
6389
  all=all,
@@ -6293,6 +6436,9 @@ class CfnRuleGroup(
6293
6436
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6294
6437
  fallback_behavior="fallbackBehavior"
6295
6438
  ),
6439
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6440
+ fallback_behavior="fallbackBehavior"
6441
+ ),
6296
6442
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6297
6443
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6298
6444
  all=all,
@@ -6421,6 +6567,9 @@ class CfnRuleGroup(
6421
6567
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6422
6568
  fallback_behavior="fallbackBehavior"
6423
6569
  ),
6570
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6571
+ fallback_behavior="fallbackBehavior"
6572
+ ),
6424
6573
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6425
6574
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6426
6575
  all=all,
@@ -6496,6 +6645,12 @@ class CfnRuleGroup(
6496
6645
  ),
6497
6646
  http_method=http_method,
6498
6647
  ip=ip,
6648
+ ja3_fingerprint=wafv2.CfnRuleGroup.RateLimitJA3FingerprintProperty(
6649
+ fallback_behavior="fallbackBehavior"
6650
+ ),
6651
+ ja4_fingerprint=wafv2.CfnRuleGroup.RateLimitJA4FingerprintProperty(
6652
+ fallback_behavior="fallbackBehavior"
6653
+ ),
6499
6654
  label_namespace=wafv2.CfnRuleGroup.RateLimitLabelNamespaceProperty(
6500
6655
  namespace="namespace"
6501
6656
  ),
@@ -6553,6 +6708,9 @@ class CfnRuleGroup(
6553
6708
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6554
6709
  fallback_behavior="fallbackBehavior"
6555
6710
  ),
6711
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6712
+ fallback_behavior="fallbackBehavior"
6713
+ ),
6556
6714
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6557
6715
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6558
6716
  all=all,
@@ -6604,6 +6762,9 @@ class CfnRuleGroup(
6604
6762
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6605
6763
  fallback_behavior="fallbackBehavior"
6606
6764
  ),
6765
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6766
+ fallback_behavior="fallbackBehavior"
6767
+ ),
6607
6768
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6608
6769
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6609
6770
  all=all,
@@ -6654,6 +6815,9 @@ class CfnRuleGroup(
6654
6815
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6655
6816
  fallback_behavior="fallbackBehavior"
6656
6817
  ),
6818
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6819
+ fallback_behavior="fallbackBehavior"
6820
+ ),
6657
6821
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6658
6822
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6659
6823
  all=all,
@@ -6704,6 +6868,9 @@ class CfnRuleGroup(
6704
6868
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6705
6869
  fallback_behavior="fallbackBehavior"
6706
6870
  ),
6871
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6872
+ fallback_behavior="fallbackBehavior"
6873
+ ),
6707
6874
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6708
6875
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6709
6876
  all=all,
@@ -6756,6 +6923,9 @@ class CfnRuleGroup(
6756
6923
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6757
6924
  fallback_behavior="fallbackBehavior"
6758
6925
  ),
6926
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
6927
+ fallback_behavior="fallbackBehavior"
6928
+ ),
6759
6929
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6760
6930
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6761
6931
  all=all,
@@ -6822,6 +6992,8 @@ class CfnRuleGroup(
6822
6992
  "header": "header",
6823
6993
  "http_method": "httpMethod",
6824
6994
  "ip": "ip",
6995
+ "ja3_fingerprint": "ja3Fingerprint",
6996
+ "ja4_fingerprint": "ja4Fingerprint",
6825
6997
  "label_namespace": "labelNamespace",
6826
6998
  "query_argument": "queryArgument",
6827
6999
  "query_string": "queryString",
@@ -6837,6 +7009,8 @@ class CfnRuleGroup(
6837
7009
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.RateLimitHeaderProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6838
7010
  http_method: typing.Any = None,
6839
7011
  ip: typing.Any = None,
7012
+ ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.RateLimitJA3FingerprintProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
7013
+ ja4_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.RateLimitJA4FingerprintProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6840
7014
  label_namespace: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.RateLimitLabelNamespaceProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6841
7015
  query_argument: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.RateLimitQueryArgumentProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6842
7016
  query_string: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.RateLimitQueryStringProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -6853,6 +7027,8 @@ class CfnRuleGroup(
6853
7027
  :param header: Use the value of a header in the request as an aggregate key. Each distinct value in the header contributes to the aggregation instance. If you use a single header as your custom key, then each value fully defines an aggregation instance.
6854
7028
  :param http_method: Use the request's HTTP method as an aggregate key. Each distinct HTTP method contributes to the aggregation instance. If you use just the HTTP method as your custom key, then each method fully defines an aggregation instance.
6855
7029
  :param ip: Use the request's originating IP address as an aggregate key. Each distinct IP address contributes to the aggregation instance. When you specify an IP or forwarded IP in the custom key settings, you must also specify at least one other key to use. You can aggregate on only the IP address by specifying ``IP`` in your rate-based statement's ``AggregateKeyType`` .
7030
+ :param ja3_fingerprint: Specifies the request's JA3 fingerprint as an aggregate key for a rate-based rule.
7031
+ :param ja4_fingerprint: Specifies the request's JA4 fingerprint as an aggregate key for a rate-based rule.
6856
7032
  :param label_namespace: Use the specified label namespace as an aggregate key. Each distinct fully qualified label name that has the specified label namespace contributes to the aggregation instance. If you use just one label namespace as your custom key, then each label name fully defines an aggregation instance. This uses only labels that have been added to the request by rules that are evaluated before this rate-based rule in the web ACL. For information about label namespaces and names, see `Label syntax and naming requirements <https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-label-requirements.html>`_ in the *AWS WAF Developer Guide* .
6857
7033
  :param query_argument: Use the specified query argument as an aggregate key. Each distinct value for the named query argument contributes to the aggregation instance. If you use a single query argument as your custom key, then each value fully defines an aggregation instance.
6858
7034
  :param query_string: Use the request's query string as an aggregate key. Each distinct string contributes to the aggregation instance. If you use just the query string as your custom key, then each string fully defines an aggregation instance.
@@ -6889,6 +7065,12 @@ class CfnRuleGroup(
6889
7065
  ),
6890
7066
  http_method=http_method,
6891
7067
  ip=ip,
7068
+ ja3_fingerprint=wafv2.CfnRuleGroup.RateLimitJA3FingerprintProperty(
7069
+ fallback_behavior="fallbackBehavior"
7070
+ ),
7071
+ ja4_fingerprint=wafv2.CfnRuleGroup.RateLimitJA4FingerprintProperty(
7072
+ fallback_behavior="fallbackBehavior"
7073
+ ),
6892
7074
  label_namespace=wafv2.CfnRuleGroup.RateLimitLabelNamespaceProperty(
6893
7075
  namespace="namespace"
6894
7076
  ),
@@ -6920,6 +7102,8 @@ class CfnRuleGroup(
6920
7102
  check_type(argname="argument header", value=header, expected_type=type_hints["header"])
6921
7103
  check_type(argname="argument http_method", value=http_method, expected_type=type_hints["http_method"])
6922
7104
  check_type(argname="argument ip", value=ip, expected_type=type_hints["ip"])
7105
+ check_type(argname="argument ja3_fingerprint", value=ja3_fingerprint, expected_type=type_hints["ja3_fingerprint"])
7106
+ check_type(argname="argument ja4_fingerprint", value=ja4_fingerprint, expected_type=type_hints["ja4_fingerprint"])
6923
7107
  check_type(argname="argument label_namespace", value=label_namespace, expected_type=type_hints["label_namespace"])
6924
7108
  check_type(argname="argument query_argument", value=query_argument, expected_type=type_hints["query_argument"])
6925
7109
  check_type(argname="argument query_string", value=query_string, expected_type=type_hints["query_string"])
@@ -6935,6 +7119,10 @@ class CfnRuleGroup(
6935
7119
  self._values["http_method"] = http_method
6936
7120
  if ip is not None:
6937
7121
  self._values["ip"] = ip
7122
+ if ja3_fingerprint is not None:
7123
+ self._values["ja3_fingerprint"] = ja3_fingerprint
7124
+ if ja4_fingerprint is not None:
7125
+ self._values["ja4_fingerprint"] = ja4_fingerprint
6938
7126
  if label_namespace is not None:
6939
7127
  self._values["label_namespace"] = label_namespace
6940
7128
  if query_argument is not None:
@@ -7007,6 +7195,28 @@ class CfnRuleGroup(
7007
7195
  result = self._values.get("ip")
7008
7196
  return typing.cast(typing.Any, result)
7009
7197
 
7198
+ @builtins.property
7199
+ def ja3_fingerprint(
7200
+ self,
7201
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.RateLimitJA3FingerprintProperty"]]:
7202
+ '''Specifies the request's JA3 fingerprint as an aggregate key for a rate-based rule.
7203
+
7204
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementcustomkey.html#cfn-wafv2-rulegroup-ratebasedstatementcustomkey-ja3fingerprint
7205
+ '''
7206
+ result = self._values.get("ja3_fingerprint")
7207
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.RateLimitJA3FingerprintProperty"]], result)
7208
+
7209
+ @builtins.property
7210
+ def ja4_fingerprint(
7211
+ self,
7212
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.RateLimitJA4FingerprintProperty"]]:
7213
+ '''Specifies the request's JA4 fingerprint as an aggregate key for a rate-based rule.
7214
+
7215
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementcustomkey.html#cfn-wafv2-rulegroup-ratebasedstatementcustomkey-ja4fingerprint
7216
+ '''
7217
+ result = self._values.get("ja4_fingerprint")
7218
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.RateLimitJA4FingerprintProperty"]], result)
7219
+
7010
7220
  @builtins.property
7011
7221
  def label_namespace(
7012
7222
  self,
@@ -7192,6 +7402,12 @@ class CfnRuleGroup(
7192
7402
  ),
7193
7403
  http_method=http_method,
7194
7404
  ip=ip,
7405
+ ja3_fingerprint=wafv2.CfnRuleGroup.RateLimitJA3FingerprintProperty(
7406
+ fallback_behavior="fallbackBehavior"
7407
+ ),
7408
+ ja4_fingerprint=wafv2.CfnRuleGroup.RateLimitJA4FingerprintProperty(
7409
+ fallback_behavior="fallbackBehavior"
7410
+ ),
7195
7411
  label_namespace=wafv2.CfnRuleGroup.RateLimitLabelNamespaceProperty(
7196
7412
  namespace="namespace"
7197
7413
  ),
@@ -7251,6 +7467,9 @@ class CfnRuleGroup(
7251
7467
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7252
7468
  fallback_behavior="fallbackBehavior"
7253
7469
  ),
7470
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
7471
+ fallback_behavior="fallbackBehavior"
7472
+ ),
7254
7473
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7255
7474
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7256
7475
  all=all,
@@ -7333,6 +7552,9 @@ class CfnRuleGroup(
7333
7552
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7334
7553
  fallback_behavior="fallbackBehavior"
7335
7554
  ),
7555
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
7556
+ fallback_behavior="fallbackBehavior"
7557
+ ),
7336
7558
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7337
7559
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7338
7560
  all=all,
@@ -7384,6 +7606,9 @@ class CfnRuleGroup(
7384
7606
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7385
7607
  fallback_behavior="fallbackBehavior"
7386
7608
  ),
7609
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
7610
+ fallback_behavior="fallbackBehavior"
7611
+ ),
7387
7612
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7388
7613
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7389
7614
  all=all,
@@ -7434,6 +7659,9 @@ class CfnRuleGroup(
7434
7659
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7435
7660
  fallback_behavior="fallbackBehavior"
7436
7661
  ),
7662
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
7663
+ fallback_behavior="fallbackBehavior"
7664
+ ),
7437
7665
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7438
7666
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7439
7667
  all=all,
@@ -7484,6 +7712,9 @@ class CfnRuleGroup(
7484
7712
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7485
7713
  fallback_behavior="fallbackBehavior"
7486
7714
  ),
7715
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
7716
+ fallback_behavior="fallbackBehavior"
7717
+ ),
7487
7718
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7488
7719
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7489
7720
  all=all,
@@ -7536,6 +7767,9 @@ class CfnRuleGroup(
7536
7767
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7537
7768
  fallback_behavior="fallbackBehavior"
7538
7769
  ),
7770
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
7771
+ fallback_behavior="fallbackBehavior"
7772
+ ),
7539
7773
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7540
7774
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7541
7775
  all=all,
@@ -7861,6 +8095,108 @@ class CfnRuleGroup(
7861
8095
  k + "=" + repr(v) for k, v in self._values.items()
7862
8096
  )
7863
8097
 
8098
+ @jsii.data_type(
8099
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.RateLimitJA3FingerprintProperty",
8100
+ jsii_struct_bases=[],
8101
+ name_mapping={"fallback_behavior": "fallbackBehavior"},
8102
+ )
8103
+ class RateLimitJA3FingerprintProperty:
8104
+ def __init__(self, *, fallback_behavior: builtins.str) -> None:
8105
+ '''Specifies the request's JA3 fingerprint as an aggregate key for a rate-based rule.
8106
+
8107
+ :param fallback_behavior:
8108
+
8109
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratelimitja3fingerprint.html
8110
+ :exampleMetadata: fixture=_generated
8111
+
8112
+ Example::
8113
+
8114
+ # The code below shows an example of how to instantiate this type.
8115
+ # The values are placeholders you should change.
8116
+ from aws_cdk import aws_wafv2 as wafv2
8117
+
8118
+ rate_limit_jA3_fingerprint_property = wafv2.CfnRuleGroup.RateLimitJA3FingerprintProperty(
8119
+ fallback_behavior="fallbackBehavior"
8120
+ )
8121
+ '''
8122
+ if __debug__:
8123
+ type_hints = typing.get_type_hints(_typecheckingstub__01cbbd4025c041374160f1ace2284204fed871076ebb05f8dbb9425055cf3060)
8124
+ check_type(argname="argument fallback_behavior", value=fallback_behavior, expected_type=type_hints["fallback_behavior"])
8125
+ self._values: typing.Dict[builtins.str, typing.Any] = {
8126
+ "fallback_behavior": fallback_behavior,
8127
+ }
8128
+
8129
+ @builtins.property
8130
+ def fallback_behavior(self) -> builtins.str:
8131
+ '''
8132
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratelimitja3fingerprint.html#cfn-wafv2-rulegroup-ratelimitja3fingerprint-fallbackbehavior
8133
+ '''
8134
+ result = self._values.get("fallback_behavior")
8135
+ assert result is not None, "Required property 'fallback_behavior' is missing"
8136
+ return typing.cast(builtins.str, result)
8137
+
8138
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
8139
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
8140
+
8141
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
8142
+ return not (rhs == self)
8143
+
8144
+ def __repr__(self) -> str:
8145
+ return "RateLimitJA3FingerprintProperty(%s)" % ", ".join(
8146
+ k + "=" + repr(v) for k, v in self._values.items()
8147
+ )
8148
+
8149
+ @jsii.data_type(
8150
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.RateLimitJA4FingerprintProperty",
8151
+ jsii_struct_bases=[],
8152
+ name_mapping={"fallback_behavior": "fallbackBehavior"},
8153
+ )
8154
+ class RateLimitJA4FingerprintProperty:
8155
+ def __init__(self, *, fallback_behavior: builtins.str) -> None:
8156
+ '''Specifies the request's JA4 fingerprint as an aggregate key for a rate-based rule.
8157
+
8158
+ :param fallback_behavior:
8159
+
8160
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratelimitja4fingerprint.html
8161
+ :exampleMetadata: fixture=_generated
8162
+
8163
+ Example::
8164
+
8165
+ # The code below shows an example of how to instantiate this type.
8166
+ # The values are placeholders you should change.
8167
+ from aws_cdk import aws_wafv2 as wafv2
8168
+
8169
+ rate_limit_jA4_fingerprint_property = wafv2.CfnRuleGroup.RateLimitJA4FingerprintProperty(
8170
+ fallback_behavior="fallbackBehavior"
8171
+ )
8172
+ '''
8173
+ if __debug__:
8174
+ type_hints = typing.get_type_hints(_typecheckingstub__7133c91d3834ea8b9f0c3938b2bfa71b20890314ee89527acbfc32927f991d59)
8175
+ check_type(argname="argument fallback_behavior", value=fallback_behavior, expected_type=type_hints["fallback_behavior"])
8176
+ self._values: typing.Dict[builtins.str, typing.Any] = {
8177
+ "fallback_behavior": fallback_behavior,
8178
+ }
8179
+
8180
+ @builtins.property
8181
+ def fallback_behavior(self) -> builtins.str:
8182
+ '''
8183
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratelimitja4fingerprint.html#cfn-wafv2-rulegroup-ratelimitja4fingerprint-fallbackbehavior
8184
+ '''
8185
+ result = self._values.get("fallback_behavior")
8186
+ assert result is not None, "Required property 'fallback_behavior' is missing"
8187
+ return typing.cast(builtins.str, result)
8188
+
8189
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
8190
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
8191
+
8192
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
8193
+ return not (rhs == self)
8194
+
8195
+ def __repr__(self) -> str:
8196
+ return "RateLimitJA4FingerprintProperty(%s)" % ", ".join(
8197
+ k + "=" + repr(v) for k, v in self._values.items()
8198
+ )
8199
+
7864
8200
  @jsii.data_type(
7865
8201
  jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.RateLimitLabelNamespaceProperty",
7866
8202
  jsii_struct_bases=[],
@@ -8196,6 +8532,9 @@ class CfnRuleGroup(
8196
8532
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8197
8533
  fallback_behavior="fallbackBehavior"
8198
8534
  ),
8535
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
8536
+ fallback_behavior="fallbackBehavior"
8537
+ ),
8199
8538
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8200
8539
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8201
8540
  all=all,
@@ -8350,6 +8689,9 @@ class CfnRuleGroup(
8350
8689
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8351
8690
  fallback_behavior="fallbackBehavior"
8352
8691
  ),
8692
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
8693
+ fallback_behavior="fallbackBehavior"
8694
+ ),
8353
8695
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8354
8696
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8355
8697
  all=all,
@@ -8673,6 +9015,9 @@ class CfnRuleGroup(
8673
9015
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8674
9016
  fallback_behavior="fallbackBehavior"
8675
9017
  ),
9018
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
9019
+ fallback_behavior="fallbackBehavior"
9020
+ ),
8676
9021
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8677
9022
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8678
9023
  all=all,
@@ -8750,6 +9095,12 @@ class CfnRuleGroup(
8750
9095
  ),
8751
9096
  http_method=http_method,
8752
9097
  ip=ip,
9098
+ ja3_fingerprint=wafv2.CfnRuleGroup.RateLimitJA3FingerprintProperty(
9099
+ fallback_behavior="fallbackBehavior"
9100
+ ),
9101
+ ja4_fingerprint=wafv2.CfnRuleGroup.RateLimitJA4FingerprintProperty(
9102
+ fallback_behavior="fallbackBehavior"
9103
+ ),
8753
9104
  label_namespace=wafv2.CfnRuleGroup.RateLimitLabelNamespaceProperty(
8754
9105
  namespace="namespace"
8755
9106
  ),
@@ -8807,6 +9158,9 @@ class CfnRuleGroup(
8807
9158
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8808
9159
  fallback_behavior="fallbackBehavior"
8809
9160
  ),
9161
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
9162
+ fallback_behavior="fallbackBehavior"
9163
+ ),
8810
9164
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8811
9165
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8812
9166
  all=all,
@@ -8858,6 +9212,9 @@ class CfnRuleGroup(
8858
9212
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8859
9213
  fallback_behavior="fallbackBehavior"
8860
9214
  ),
9215
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
9216
+ fallback_behavior="fallbackBehavior"
9217
+ ),
8861
9218
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8862
9219
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8863
9220
  all=all,
@@ -8908,6 +9265,9 @@ class CfnRuleGroup(
8908
9265
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8909
9266
  fallback_behavior="fallbackBehavior"
8910
9267
  ),
9268
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
9269
+ fallback_behavior="fallbackBehavior"
9270
+ ),
8911
9271
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8912
9272
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8913
9273
  all=all,
@@ -8958,6 +9318,9 @@ class CfnRuleGroup(
8958
9318
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8959
9319
  fallback_behavior="fallbackBehavior"
8960
9320
  ),
9321
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
9322
+ fallback_behavior="fallbackBehavior"
9323
+ ),
8961
9324
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8962
9325
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8963
9326
  all=all,
@@ -9010,6 +9373,9 @@ class CfnRuleGroup(
9010
9373
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9011
9374
  fallback_behavior="fallbackBehavior"
9012
9375
  ),
9376
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
9377
+ fallback_behavior="fallbackBehavior"
9378
+ ),
9013
9379
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9014
9380
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9015
9381
  all=all,
@@ -9409,6 +9775,9 @@ class CfnRuleGroup(
9409
9775
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9410
9776
  fallback_behavior="fallbackBehavior"
9411
9777
  ),
9778
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
9779
+ fallback_behavior="fallbackBehavior"
9780
+ ),
9412
9781
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9413
9782
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9414
9783
  all=all,
@@ -9572,6 +9941,9 @@ class CfnRuleGroup(
9572
9941
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9573
9942
  fallback_behavior="fallbackBehavior"
9574
9943
  ),
9944
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
9945
+ fallback_behavior="fallbackBehavior"
9946
+ ),
9575
9947
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9576
9948
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9577
9949
  all=all,
@@ -9767,6 +10139,9 @@ class CfnRuleGroup(
9767
10139
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9768
10140
  fallback_behavior="fallbackBehavior"
9769
10141
  ),
10142
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
10143
+ fallback_behavior="fallbackBehavior"
10144
+ ),
9770
10145
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9771
10146
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9772
10147
  all=all,
@@ -9844,6 +10219,12 @@ class CfnRuleGroup(
9844
10219
  ),
9845
10220
  http_method=http_method,
9846
10221
  ip=ip,
10222
+ ja3_fingerprint=wafv2.CfnRuleGroup.RateLimitJA3FingerprintProperty(
10223
+ fallback_behavior="fallbackBehavior"
10224
+ ),
10225
+ ja4_fingerprint=wafv2.CfnRuleGroup.RateLimitJA4FingerprintProperty(
10226
+ fallback_behavior="fallbackBehavior"
10227
+ ),
9847
10228
  label_namespace=wafv2.CfnRuleGroup.RateLimitLabelNamespaceProperty(
9848
10229
  namespace="namespace"
9849
10230
  ),
@@ -9901,6 +10282,9 @@ class CfnRuleGroup(
9901
10282
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9902
10283
  fallback_behavior="fallbackBehavior"
9903
10284
  ),
10285
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
10286
+ fallback_behavior="fallbackBehavior"
10287
+ ),
9904
10288
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9905
10289
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9906
10290
  all=all,
@@ -9952,6 +10336,9 @@ class CfnRuleGroup(
9952
10336
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9953
10337
  fallback_behavior="fallbackBehavior"
9954
10338
  ),
10339
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
10340
+ fallback_behavior="fallbackBehavior"
10341
+ ),
9955
10342
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9956
10343
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9957
10344
  all=all,
@@ -10002,6 +10389,9 @@ class CfnRuleGroup(
10002
10389
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
10003
10390
  fallback_behavior="fallbackBehavior"
10004
10391
  ),
10392
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
10393
+ fallback_behavior="fallbackBehavior"
10394
+ ),
10005
10395
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10006
10396
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10007
10397
  all=all,
@@ -10052,6 +10442,9 @@ class CfnRuleGroup(
10052
10442
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
10053
10443
  fallback_behavior="fallbackBehavior"
10054
10444
  ),
10445
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
10446
+ fallback_behavior="fallbackBehavior"
10447
+ ),
10055
10448
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10056
10449
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10057
10450
  all=all,
@@ -10104,6 +10497,9 @@ class CfnRuleGroup(
10104
10497
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
10105
10498
  fallback_behavior="fallbackBehavior"
10106
10499
  ),
10500
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
10501
+ fallback_behavior="fallbackBehavior"
10502
+ ),
10107
10503
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10108
10504
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10109
10505
  all=all,
@@ -10649,6 +11045,9 @@ class CfnRuleGroup(
10649
11045
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
10650
11046
  fallback_behavior="fallbackBehavior"
10651
11047
  ),
11048
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
11049
+ fallback_behavior="fallbackBehavior"
11050
+ ),
10652
11051
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10653
11052
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10654
11053
  all=all,
@@ -10847,6 +11246,9 @@ class CfnRuleGroupProps:
10847
11246
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
10848
11247
  fallback_behavior="fallbackBehavior"
10849
11248
  ),
11249
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
11250
+ fallback_behavior="fallbackBehavior"
11251
+ ),
10850
11252
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10851
11253
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10852
11254
  all=all,
@@ -10924,6 +11326,12 @@ class CfnRuleGroupProps:
10924
11326
  ),
10925
11327
  http_method=http_method,
10926
11328
  ip=ip,
11329
+ ja3_fingerprint=wafv2.CfnRuleGroup.RateLimitJA3FingerprintProperty(
11330
+ fallback_behavior="fallbackBehavior"
11331
+ ),
11332
+ ja4_fingerprint=wafv2.CfnRuleGroup.RateLimitJA4FingerprintProperty(
11333
+ fallback_behavior="fallbackBehavior"
11334
+ ),
10927
11335
  label_namespace=wafv2.CfnRuleGroup.RateLimitLabelNamespaceProperty(
10928
11336
  namespace="namespace"
10929
11337
  ),
@@ -10981,6 +11389,9 @@ class CfnRuleGroupProps:
10981
11389
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
10982
11390
  fallback_behavior="fallbackBehavior"
10983
11391
  ),
11392
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
11393
+ fallback_behavior="fallbackBehavior"
11394
+ ),
10984
11395
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10985
11396
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10986
11397
  all=all,
@@ -11032,6 +11443,9 @@ class CfnRuleGroupProps:
11032
11443
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
11033
11444
  fallback_behavior="fallbackBehavior"
11034
11445
  ),
11446
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
11447
+ fallback_behavior="fallbackBehavior"
11448
+ ),
11035
11449
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
11036
11450
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
11037
11451
  all=all,
@@ -11082,6 +11496,9 @@ class CfnRuleGroupProps:
11082
11496
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
11083
11497
  fallback_behavior="fallbackBehavior"
11084
11498
  ),
11499
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
11500
+ fallback_behavior="fallbackBehavior"
11501
+ ),
11085
11502
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
11086
11503
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
11087
11504
  all=all,
@@ -11132,6 +11549,9 @@ class CfnRuleGroupProps:
11132
11549
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
11133
11550
  fallback_behavior="fallbackBehavior"
11134
11551
  ),
11552
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
11553
+ fallback_behavior="fallbackBehavior"
11554
+ ),
11135
11555
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
11136
11556
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
11137
11557
  all=all,
@@ -11184,6 +11604,9 @@ class CfnRuleGroupProps:
11184
11604
  ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
11185
11605
  fallback_behavior="fallbackBehavior"
11186
11606
  ),
11607
+ ja4_fingerprint=wafv2.CfnRuleGroup.JA4FingerprintProperty(
11608
+ fallback_behavior="fallbackBehavior"
11609
+ ),
11187
11610
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
11188
11611
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
11189
11612
  all=all,
@@ -12631,6 +13054,9 @@ class CfnWebACL(
12631
13054
  ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
12632
13055
  fallback_behavior="fallbackBehavior"
12633
13056
  ),
13057
+ ja4_fingerprint=wafv2.CfnWebACL.JA4FingerprintProperty(
13058
+ fallback_behavior="fallbackBehavior"
13059
+ ),
12634
13060
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
12635
13061
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
12636
13062
  all=all,
@@ -13882,6 +14308,7 @@ class CfnWebACL(
13882
14308
  "cookies": "cookies",
13883
14309
  "headers": "headers",
13884
14310
  "ja3_fingerprint": "ja3Fingerprint",
14311
+ "ja4_fingerprint": "ja4Fingerprint",
13885
14312
  "json_body": "jsonBody",
13886
14313
  "method": "method",
13887
14314
  "query_string": "queryString",
@@ -13899,6 +14326,7 @@ class CfnWebACL(
13899
14326
  cookies: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.CookiesProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
13900
14327
  headers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.HeadersProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
13901
14328
  ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.JA3FingerprintProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
14329
+ ja4_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.JA4FingerprintProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
13902
14330
  json_body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.JsonBodyProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
13903
14331
  method: typing.Any = None,
13904
14332
  query_string: typing.Any = None,
@@ -13928,6 +14356,7 @@ class CfnWebACL(
13928
14356
  :param cookies: Inspect the request cookies. You must configure scope and pattern matching filters in the ``Cookies`` object, to define the set of cookies and the parts of the cookies that AWS WAF inspects. Only the first 8 KB (8192 bytes) of a request's cookies and only the first 200 cookies are forwarded to AWS WAF for inspection by the underlying host service. You must configure how to handle any oversize cookie content in the ``Cookies`` object. AWS WAF applies the pattern matching filters to the cookies that it receives from the underlying host service.
13929
14357
  :param headers: Inspect the request headers. You must configure scope and pattern matching filters in the ``Headers`` object, to define the set of headers to and the parts of the headers that AWS WAF inspects. Only the first 8 KB (8192 bytes) of a request's headers and only the first 200 headers are forwarded to AWS WAF for inspection by the underlying host service. You must configure how to handle any oversize header content in the ``Headers`` object. AWS WAF applies the pattern matching filters to the headers that it receives from the underlying host service.
13930
14358
  :param ja3_fingerprint: Available for use with Amazon CloudFront distributions and Application Load Balancers. Match against the request's JA3 fingerprint. The JA3 fingerprint is a 32-character hash derived from the TLS Client Hello of an incoming request. This fingerprint serves as a unique identifier for the client's TLS configuration. AWS WAF calculates and logs this fingerprint for each request that has enough TLS Client Hello information for the calculation. Almost all web requests include this information. .. epigraph:: You can use this choice only with a string match ``ByteMatchStatement`` with the ``PositionalConstraint`` set to ``EXACTLY`` . You can obtain the JA3 fingerprint for client requests from the web ACL logs. If AWS WAF is able to calculate the fingerprint, it includes it in the logs. For information about the logging fields, see `Log fields <https://docs.aws.amazon.com/waf/latest/developerguide/logging-fields.html>`_ in the *AWS WAF Developer Guide* . Provide the JA3 fingerprint string from the logs in your string match statement specification, to match with any future requests that have the same TLS configuration.
14359
+ :param ja4_fingerprint: Includes the JA4 fingerprint of a web request.
13931
14360
  :param json_body: Inspect the request body as JSON. The request body immediately follows the request headers. This is the part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form. AWS WAF does not support inspecting the entire contents of the web request body if the body exceeds the limit for the resource type. When a web request body is larger than the limit, the underlying host service only forwards the contents that are within the limit to AWS WAF for inspection. - For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes). - For CloudFront, API Gateway, Amazon Cognito, App Runner, and Verified Access, the default limit is 16 KB (16,384 bytes), and you can increase the limit for each resource type in the web ACL ``AssociationConfig`` , for additional processing fees. For information about how to handle oversized request bodies, see the ``JsonBody`` object configuration.
13932
14361
  :param method: Inspect the HTTP method. The method indicates the type of operation that the request is asking the origin to perform.
13933
14362
  :param query_string: Inspect the query string. This is the part of a URL that appears after a ``?`` character, if any.
@@ -13978,6 +14407,9 @@ class CfnWebACL(
13978
14407
  ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
13979
14408
  fallback_behavior="fallbackBehavior"
13980
14409
  ),
14410
+ ja4_fingerprint=wafv2.CfnWebACL.JA4FingerprintProperty(
14411
+ fallback_behavior="fallbackBehavior"
14412
+ ),
13981
14413
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
13982
14414
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
13983
14415
  all=all,
@@ -14003,6 +14435,7 @@ class CfnWebACL(
14003
14435
  check_type(argname="argument cookies", value=cookies, expected_type=type_hints["cookies"])
14004
14436
  check_type(argname="argument headers", value=headers, expected_type=type_hints["headers"])
14005
14437
  check_type(argname="argument ja3_fingerprint", value=ja3_fingerprint, expected_type=type_hints["ja3_fingerprint"])
14438
+ check_type(argname="argument ja4_fingerprint", value=ja4_fingerprint, expected_type=type_hints["ja4_fingerprint"])
14006
14439
  check_type(argname="argument json_body", value=json_body, expected_type=type_hints["json_body"])
14007
14440
  check_type(argname="argument method", value=method, expected_type=type_hints["method"])
14008
14441
  check_type(argname="argument query_string", value=query_string, expected_type=type_hints["query_string"])
@@ -14020,6 +14453,8 @@ class CfnWebACL(
14020
14453
  self._values["headers"] = headers
14021
14454
  if ja3_fingerprint is not None:
14022
14455
  self._values["ja3_fingerprint"] = ja3_fingerprint
14456
+ if ja4_fingerprint is not None:
14457
+ self._values["ja4_fingerprint"] = ja4_fingerprint
14023
14458
  if json_body is not None:
14024
14459
  self._values["json_body"] = json_body
14025
14460
  if method is not None:
@@ -14112,6 +14547,17 @@ class CfnWebACL(
14112
14547
  result = self._values.get("ja3_fingerprint")
14113
14548
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.JA3FingerprintProperty"]], result)
14114
14549
 
14550
+ @builtins.property
14551
+ def ja4_fingerprint(
14552
+ self,
14553
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.JA4FingerprintProperty"]]:
14554
+ '''Includes the JA4 fingerprint of a web request.
14555
+
14556
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-ja4fingerprint
14557
+ '''
14558
+ result = self._values.get("ja4_fingerprint")
14559
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.JA4FingerprintProperty"]], result)
14560
+
14115
14561
  @builtins.property
14116
14562
  def json_body(
14117
14563
  self,
@@ -14950,6 +15396,57 @@ class CfnWebACL(
14950
15396
  k + "=" + repr(v) for k, v in self._values.items()
14951
15397
  )
14952
15398
 
15399
+ @jsii.data_type(
15400
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.JA4FingerprintProperty",
15401
+ jsii_struct_bases=[],
15402
+ name_mapping={"fallback_behavior": "fallbackBehavior"},
15403
+ )
15404
+ class JA4FingerprintProperty:
15405
+ def __init__(self, *, fallback_behavior: builtins.str) -> None:
15406
+ '''Includes the JA4 fingerprint of a web request.
15407
+
15408
+ :param fallback_behavior:
15409
+
15410
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ja4fingerprint.html
15411
+ :exampleMetadata: fixture=_generated
15412
+
15413
+ Example::
15414
+
15415
+ # The code below shows an example of how to instantiate this type.
15416
+ # The values are placeholders you should change.
15417
+ from aws_cdk import aws_wafv2 as wafv2
15418
+
15419
+ j_a4_fingerprint_property = wafv2.CfnWebACL.JA4FingerprintProperty(
15420
+ fallback_behavior="fallbackBehavior"
15421
+ )
15422
+ '''
15423
+ if __debug__:
15424
+ type_hints = typing.get_type_hints(_typecheckingstub__d291ee91c69174f3c85a4f366df59f9a94555bb2191f94bfec169a28f40438d6)
15425
+ check_type(argname="argument fallback_behavior", value=fallback_behavior, expected_type=type_hints["fallback_behavior"])
15426
+ self._values: typing.Dict[builtins.str, typing.Any] = {
15427
+ "fallback_behavior": fallback_behavior,
15428
+ }
15429
+
15430
+ @builtins.property
15431
+ def fallback_behavior(self) -> builtins.str:
15432
+ '''
15433
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ja4fingerprint.html#cfn-wafv2-webacl-ja4fingerprint-fallbackbehavior
15434
+ '''
15435
+ result = self._values.get("fallback_behavior")
15436
+ assert result is not None, "Required property 'fallback_behavior' is missing"
15437
+ return typing.cast(builtins.str, result)
15438
+
15439
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
15440
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
15441
+
15442
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
15443
+ return not (rhs == self)
15444
+
15445
+ def __repr__(self) -> str:
15446
+ return "JA4FingerprintProperty(%s)" % ", ".join(
15447
+ k + "=" + repr(v) for k, v in self._values.items()
15448
+ )
15449
+
14953
15450
  @jsii.data_type(
14954
15451
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.JsonBodyProperty",
14955
15452
  jsii_struct_bases=[],
@@ -15980,6 +16477,8 @@ class CfnWebACL(
15980
16477
  "header": "header",
15981
16478
  "http_method": "httpMethod",
15982
16479
  "ip": "ip",
16480
+ "ja3_fingerprint": "ja3Fingerprint",
16481
+ "ja4_fingerprint": "ja4Fingerprint",
15983
16482
  "label_namespace": "labelNamespace",
15984
16483
  "query_argument": "queryArgument",
15985
16484
  "query_string": "queryString",
@@ -15995,6 +16494,8 @@ class CfnWebACL(
15995
16494
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RateLimitHeaderProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
15996
16495
  http_method: typing.Any = None,
15997
16496
  ip: typing.Any = None,
16497
+ ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RateLimitJA3FingerprintProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
16498
+ ja4_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RateLimitJA4FingerprintProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
15998
16499
  label_namespace: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RateLimitLabelNamespaceProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
15999
16500
  query_argument: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RateLimitQueryArgumentProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
16000
16501
  query_string: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RateLimitQueryStringProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -16011,6 +16512,8 @@ class CfnWebACL(
16011
16512
  :param header: Use the value of a header in the request as an aggregate key. Each distinct value in the header contributes to the aggregation instance. If you use a single header as your custom key, then each value fully defines an aggregation instance.
16012
16513
  :param http_method: Use the request's HTTP method as an aggregate key. Each distinct HTTP method contributes to the aggregation instance. If you use just the HTTP method as your custom key, then each method fully defines an aggregation instance.
16013
16514
  :param ip: Use the request's originating IP address as an aggregate key. Each distinct IP address contributes to the aggregation instance. When you specify an IP or forwarded IP in the custom key settings, you must also specify at least one other key to use. You can aggregate on only the IP address by specifying ``IP`` in your rate-based statement's ``AggregateKeyType`` .
16515
+ :param ja3_fingerprint: Specifies the request's JA3 fingerprint as an aggregate key for a rate-based rule.
16516
+ :param ja4_fingerprint: Specifies the request's JA4 fingerprint as an aggregate key for a rate-based rule.
16014
16517
  :param label_namespace: Use the specified label namespace as an aggregate key. Each distinct fully qualified label name that has the specified label namespace contributes to the aggregation instance. If you use just one label namespace as your custom key, then each label name fully defines an aggregation instance. This uses only labels that have been added to the request by rules that are evaluated before this rate-based rule in the web ACL. For information about label namespaces and names, see `Label syntax and naming requirements <https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-label-requirements.html>`_ in the *AWS WAF Developer Guide* .
16015
16518
  :param query_argument: Use the specified query argument as an aggregate key. Each distinct value for the named query argument contributes to the aggregation instance. If you use a single query argument as your custom key, then each value fully defines an aggregation instance.
16016
16519
  :param query_string: Use the request's query string as an aggregate key. Each distinct string contributes to the aggregation instance. If you use just the query string as your custom key, then each string fully defines an aggregation instance.
@@ -16047,6 +16550,12 @@ class CfnWebACL(
16047
16550
  ),
16048
16551
  http_method=http_method,
16049
16552
  ip=ip,
16553
+ ja3_fingerprint=wafv2.CfnWebACL.RateLimitJA3FingerprintProperty(
16554
+ fallback_behavior="fallbackBehavior"
16555
+ ),
16556
+ ja4_fingerprint=wafv2.CfnWebACL.RateLimitJA4FingerprintProperty(
16557
+ fallback_behavior="fallbackBehavior"
16558
+ ),
16050
16559
  label_namespace=wafv2.CfnWebACL.RateLimitLabelNamespaceProperty(
16051
16560
  namespace="namespace"
16052
16561
  ),
@@ -16078,6 +16587,8 @@ class CfnWebACL(
16078
16587
  check_type(argname="argument header", value=header, expected_type=type_hints["header"])
16079
16588
  check_type(argname="argument http_method", value=http_method, expected_type=type_hints["http_method"])
16080
16589
  check_type(argname="argument ip", value=ip, expected_type=type_hints["ip"])
16590
+ check_type(argname="argument ja3_fingerprint", value=ja3_fingerprint, expected_type=type_hints["ja3_fingerprint"])
16591
+ check_type(argname="argument ja4_fingerprint", value=ja4_fingerprint, expected_type=type_hints["ja4_fingerprint"])
16081
16592
  check_type(argname="argument label_namespace", value=label_namespace, expected_type=type_hints["label_namespace"])
16082
16593
  check_type(argname="argument query_argument", value=query_argument, expected_type=type_hints["query_argument"])
16083
16594
  check_type(argname="argument query_string", value=query_string, expected_type=type_hints["query_string"])
@@ -16093,6 +16604,10 @@ class CfnWebACL(
16093
16604
  self._values["http_method"] = http_method
16094
16605
  if ip is not None:
16095
16606
  self._values["ip"] = ip
16607
+ if ja3_fingerprint is not None:
16608
+ self._values["ja3_fingerprint"] = ja3_fingerprint
16609
+ if ja4_fingerprint is not None:
16610
+ self._values["ja4_fingerprint"] = ja4_fingerprint
16096
16611
  if label_namespace is not None:
16097
16612
  self._values["label_namespace"] = label_namespace
16098
16613
  if query_argument is not None:
@@ -16165,6 +16680,28 @@ class CfnWebACL(
16165
16680
  result = self._values.get("ip")
16166
16681
  return typing.cast(typing.Any, result)
16167
16682
 
16683
+ @builtins.property
16684
+ def ja3_fingerprint(
16685
+ self,
16686
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.RateLimitJA3FingerprintProperty"]]:
16687
+ '''Specifies the request's JA3 fingerprint as an aggregate key for a rate-based rule.
16688
+
16689
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementcustomkey.html#cfn-wafv2-webacl-ratebasedstatementcustomkey-ja3fingerprint
16690
+ '''
16691
+ result = self._values.get("ja3_fingerprint")
16692
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.RateLimitJA3FingerprintProperty"]], result)
16693
+
16694
+ @builtins.property
16695
+ def ja4_fingerprint(
16696
+ self,
16697
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.RateLimitJA4FingerprintProperty"]]:
16698
+ '''Specifies the request's JA4 fingerprint as an aggregate key for a rate-based rule.
16699
+
16700
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementcustomkey.html#cfn-wafv2-webacl-ratebasedstatementcustomkey-ja4fingerprint
16701
+ '''
16702
+ result = self._values.get("ja4_fingerprint")
16703
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.RateLimitJA4FingerprintProperty"]], result)
16704
+
16168
16705
  @builtins.property
16169
16706
  def label_namespace(
16170
16707
  self,
@@ -16612,6 +17149,108 @@ class CfnWebACL(
16612
17149
  k + "=" + repr(v) for k, v in self._values.items()
16613
17150
  )
16614
17151
 
17152
+ @jsii.data_type(
17153
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.RateLimitJA3FingerprintProperty",
17154
+ jsii_struct_bases=[],
17155
+ name_mapping={"fallback_behavior": "fallbackBehavior"},
17156
+ )
17157
+ class RateLimitJA3FingerprintProperty:
17158
+ def __init__(self, *, fallback_behavior: builtins.str) -> None:
17159
+ '''Specifies the request's JA3 fingerprint as an aggregate key for a rate-based rule.
17160
+
17161
+ :param fallback_behavior:
17162
+
17163
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratelimitja3fingerprint.html
17164
+ :exampleMetadata: fixture=_generated
17165
+
17166
+ Example::
17167
+
17168
+ # The code below shows an example of how to instantiate this type.
17169
+ # The values are placeholders you should change.
17170
+ from aws_cdk import aws_wafv2 as wafv2
17171
+
17172
+ rate_limit_jA3_fingerprint_property = wafv2.CfnWebACL.RateLimitJA3FingerprintProperty(
17173
+ fallback_behavior="fallbackBehavior"
17174
+ )
17175
+ '''
17176
+ if __debug__:
17177
+ type_hints = typing.get_type_hints(_typecheckingstub__6e8bd22e62b0bf12b8760a47f017961b595e2b5836296741e4be4bc580092564)
17178
+ check_type(argname="argument fallback_behavior", value=fallback_behavior, expected_type=type_hints["fallback_behavior"])
17179
+ self._values: typing.Dict[builtins.str, typing.Any] = {
17180
+ "fallback_behavior": fallback_behavior,
17181
+ }
17182
+
17183
+ @builtins.property
17184
+ def fallback_behavior(self) -> builtins.str:
17185
+ '''
17186
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratelimitja3fingerprint.html#cfn-wafv2-webacl-ratelimitja3fingerprint-fallbackbehavior
17187
+ '''
17188
+ result = self._values.get("fallback_behavior")
17189
+ assert result is not None, "Required property 'fallback_behavior' is missing"
17190
+ return typing.cast(builtins.str, result)
17191
+
17192
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
17193
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
17194
+
17195
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
17196
+ return not (rhs == self)
17197
+
17198
+ def __repr__(self) -> str:
17199
+ return "RateLimitJA3FingerprintProperty(%s)" % ", ".join(
17200
+ k + "=" + repr(v) for k, v in self._values.items()
17201
+ )
17202
+
17203
+ @jsii.data_type(
17204
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.RateLimitJA4FingerprintProperty",
17205
+ jsii_struct_bases=[],
17206
+ name_mapping={"fallback_behavior": "fallbackBehavior"},
17207
+ )
17208
+ class RateLimitJA4FingerprintProperty:
17209
+ def __init__(self, *, fallback_behavior: builtins.str) -> None:
17210
+ '''Specifies the request's JA4 fingerprint as an aggregate key for a rate-based rule.
17211
+
17212
+ :param fallback_behavior:
17213
+
17214
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratelimitja4fingerprint.html
17215
+ :exampleMetadata: fixture=_generated
17216
+
17217
+ Example::
17218
+
17219
+ # The code below shows an example of how to instantiate this type.
17220
+ # The values are placeholders you should change.
17221
+ from aws_cdk import aws_wafv2 as wafv2
17222
+
17223
+ rate_limit_jA4_fingerprint_property = wafv2.CfnWebACL.RateLimitJA4FingerprintProperty(
17224
+ fallback_behavior="fallbackBehavior"
17225
+ )
17226
+ '''
17227
+ if __debug__:
17228
+ type_hints = typing.get_type_hints(_typecheckingstub__0fb6ee2c595dd2947dc6947a55f9aef69ae22832d84e4a5bdc269461247f50b4)
17229
+ check_type(argname="argument fallback_behavior", value=fallback_behavior, expected_type=type_hints["fallback_behavior"])
17230
+ self._values: typing.Dict[builtins.str, typing.Any] = {
17231
+ "fallback_behavior": fallback_behavior,
17232
+ }
17233
+
17234
+ @builtins.property
17235
+ def fallback_behavior(self) -> builtins.str:
17236
+ '''
17237
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratelimitja4fingerprint.html#cfn-wafv2-webacl-ratelimitja4fingerprint-fallbackbehavior
17238
+ '''
17239
+ result = self._values.get("fallback_behavior")
17240
+ assert result is not None, "Required property 'fallback_behavior' is missing"
17241
+ return typing.cast(builtins.str, result)
17242
+
17243
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
17244
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
17245
+
17246
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
17247
+ return not (rhs == self)
17248
+
17249
+ def __repr__(self) -> str:
17250
+ return "RateLimitJA4FingerprintProperty(%s)" % ", ".join(
17251
+ k + "=" + repr(v) for k, v in self._values.items()
17252
+ )
17253
+
16615
17254
  @jsii.data_type(
16616
17255
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.RateLimitLabelNamespaceProperty",
16617
17256
  jsii_struct_bases=[],
@@ -16947,6 +17586,9 @@ class CfnWebACL(
16947
17586
  ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
16948
17587
  fallback_behavior="fallbackBehavior"
16949
17588
  ),
17589
+ ja4_fingerprint=wafv2.CfnWebACL.JA4FingerprintProperty(
17590
+ fallback_behavior="fallbackBehavior"
17591
+ ),
16950
17592
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
16951
17593
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
16952
17594
  all=all,
@@ -17101,6 +17743,9 @@ class CfnWebACL(
17101
17743
  ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
17102
17744
  fallback_behavior="fallbackBehavior"
17103
17745
  ),
17746
+ ja4_fingerprint=wafv2.CfnWebACL.JA4FingerprintProperty(
17747
+ fallback_behavior="fallbackBehavior"
17748
+ ),
17104
17749
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
17105
17750
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
17106
17751
  all=all,
@@ -19013,6 +19658,9 @@ class CfnWebACL(
19013
19658
  ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
19014
19659
  fallback_behavior="fallbackBehavior"
19015
19660
  ),
19661
+ ja4_fingerprint=wafv2.CfnWebACL.JA4FingerprintProperty(
19662
+ fallback_behavior="fallbackBehavior"
19663
+ ),
19016
19664
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
19017
19665
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
19018
19666
  all=all,
@@ -19176,6 +19824,9 @@ class CfnWebACL(
19176
19824
  ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
19177
19825
  fallback_behavior="fallbackBehavior"
19178
19826
  ),
19827
+ ja4_fingerprint=wafv2.CfnWebACL.JA4FingerprintProperty(
19828
+ fallback_behavior="fallbackBehavior"
19829
+ ),
19179
19830
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
19180
19831
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
19181
19832
  all=all,
@@ -19892,6 +20543,9 @@ class CfnWebACL(
19892
20543
  ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
19893
20544
  fallback_behavior="fallbackBehavior"
19894
20545
  ),
20546
+ ja4_fingerprint=wafv2.CfnWebACL.JA4FingerprintProperty(
20547
+ fallback_behavior="fallbackBehavior"
20548
+ ),
19895
20549
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
19896
20550
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
19897
20551
  all=all,
@@ -20955,6 +21609,7 @@ def _typecheckingstub__dcb790c3130e52c64e6b7cf00db86b37d1b54427689c46b6c9e6a7122
20955
21609
  cookies: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.CookiesProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20956
21610
  headers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.HeadersProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20957
21611
  ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.JA3FingerprintProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21612
+ ja4_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.JA4FingerprintProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20958
21613
  json_body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.JsonBodyProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20959
21614
  method: typing.Any = None,
20960
21615
  query_string: typing.Any = None,
@@ -21030,6 +21685,13 @@ def _typecheckingstub__1cba50229767598d7603bfa317a8bd11cfc2b12ca28d38737119d57d5
21030
21685
  """Type checking stubs"""
21031
21686
  pass
21032
21687
 
21688
+ def _typecheckingstub__98d25072bace816c3ee0005576dfb4321dc85cb549d85f10845ec1379f11441b(
21689
+ *,
21690
+ fallback_behavior: builtins.str,
21691
+ ) -> None:
21692
+ """Type checking stubs"""
21693
+ pass
21694
+
21033
21695
  def _typecheckingstub__602ab3bf019e524b1f85e0a2cdb3225626316719b294dfa66fcfd8b7fc9e7a09(
21034
21696
  *,
21035
21697
  match_pattern: typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.JsonMatchPatternProperty, typing.Dict[builtins.str, typing.Any]]],
@@ -21091,6 +21753,8 @@ def _typecheckingstub__6bc232408309212f7b145d76c0106073269f111e106ab6d74a4d2168f
21091
21753
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.RateLimitHeaderProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21092
21754
  http_method: typing.Any = None,
21093
21755
  ip: typing.Any = None,
21756
+ ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.RateLimitJA3FingerprintProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21757
+ ja4_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.RateLimitJA4FingerprintProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21094
21758
  label_namespace: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.RateLimitLabelNamespaceProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21095
21759
  query_argument: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.RateLimitQueryArgumentProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21096
21760
  query_string: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.RateLimitQueryStringProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -21127,6 +21791,20 @@ def _typecheckingstub__fdb02cef74b9bb28719ad3e0dbe3149e38c2bcf0347d4db5a38e8fae7
21127
21791
  """Type checking stubs"""
21128
21792
  pass
21129
21793
 
21794
+ def _typecheckingstub__01cbbd4025c041374160f1ace2284204fed871076ebb05f8dbb9425055cf3060(
21795
+ *,
21796
+ fallback_behavior: builtins.str,
21797
+ ) -> None:
21798
+ """Type checking stubs"""
21799
+ pass
21800
+
21801
+ def _typecheckingstub__7133c91d3834ea8b9f0c3938b2bfa71b20890314ee89527acbfc32927f991d59(
21802
+ *,
21803
+ fallback_behavior: builtins.str,
21804
+ ) -> None:
21805
+ """Type checking stubs"""
21806
+ pass
21807
+
21130
21808
  def _typecheckingstub__1b9d57259a6a98849a716499d960fb16a9c2fff26fa8916f287a6d4cbe4a1303(
21131
21809
  *,
21132
21810
  namespace: builtins.str,
@@ -21585,6 +22263,7 @@ def _typecheckingstub__25d147c856e9a8fd64f4cc05856e4813e584f37ef787792ad3c4e0790
21585
22263
  cookies: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.CookiesProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21586
22264
  headers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.HeadersProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21587
22265
  ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.JA3FingerprintProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22266
+ ja4_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.JA4FingerprintProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21588
22267
  json_body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.JsonBodyProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21589
22268
  method: typing.Any = None,
21590
22269
  query_string: typing.Any = None,
@@ -21660,6 +22339,13 @@ def _typecheckingstub__129b51143b193ce4679091a559f9a4073c03a2bccc1ccb884fe1b4dd3
21660
22339
  """Type checking stubs"""
21661
22340
  pass
21662
22341
 
22342
+ def _typecheckingstub__d291ee91c69174f3c85a4f366df59f9a94555bb2191f94bfec169a28f40438d6(
22343
+ *,
22344
+ fallback_behavior: builtins.str,
22345
+ ) -> None:
22346
+ """Type checking stubs"""
22347
+ pass
22348
+
21663
22349
  def _typecheckingstub__b371d01e6e192e377c25d061f5a40b73b3aca7d15781a83f612151eddebe6fa2(
21664
22350
  *,
21665
22351
  match_pattern: typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.JsonMatchPatternProperty, typing.Dict[builtins.str, typing.Any]]],
@@ -21748,6 +22434,8 @@ def _typecheckingstub__2edac52bcb13f69d4349ba55a4d083851908f1dd71831794e88ac043e
21748
22434
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RateLimitHeaderProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21749
22435
  http_method: typing.Any = None,
21750
22436
  ip: typing.Any = None,
22437
+ ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RateLimitJA3FingerprintProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22438
+ ja4_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RateLimitJA4FingerprintProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21751
22439
  label_namespace: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RateLimitLabelNamespaceProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21752
22440
  query_argument: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RateLimitQueryArgumentProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21753
22441
  query_string: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RateLimitQueryStringProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -21784,6 +22472,20 @@ def _typecheckingstub__da3edefddbc454f4818df98348789f048fa440013638ab8b17bcf3ee2
21784
22472
  """Type checking stubs"""
21785
22473
  pass
21786
22474
 
22475
+ def _typecheckingstub__6e8bd22e62b0bf12b8760a47f017961b595e2b5836296741e4be4bc580092564(
22476
+ *,
22477
+ fallback_behavior: builtins.str,
22478
+ ) -> None:
22479
+ """Type checking stubs"""
22480
+ pass
22481
+
22482
+ def _typecheckingstub__0fb6ee2c595dd2947dc6947a55f9aef69ae22832d84e4a5bdc269461247f50b4(
22483
+ *,
22484
+ fallback_behavior: builtins.str,
22485
+ ) -> None:
22486
+ """Type checking stubs"""
22487
+ pass
22488
+
21787
22489
  def _typecheckingstub__cd332af4365738eada762a2b31aa36cbf28e27c021a06c4030d009ae6e2ec6e8(
21788
22490
  *,
21789
22491
  namespace: builtins.str,