aws-cdk-lib 2.132.1__py3-none-any.whl → 2.134.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 (69) hide show
  1. aws_cdk/__init__.py +9 -1
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.132.1.jsii.tgz → aws-cdk-lib@2.134.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_amplify/__init__.py +12 -10
  5. aws_cdk/aws_apigatewayv2/__init__.py +112 -6
  6. aws_cdk/aws_apigatewayv2_integrations/__init__.py +155 -3
  7. aws_cdk/aws_appconfig/__init__.py +186 -8
  8. aws_cdk/aws_appintegrations/__init__.py +551 -0
  9. aws_cdk/aws_applicationautoscaling/__init__.py +6 -6
  10. aws_cdk/aws_appsync/__init__.py +71 -0
  11. aws_cdk/aws_autoscaling/__init__.py +10 -14
  12. aws_cdk/aws_b2bi/__init__.py +2 -42
  13. aws_cdk/aws_backup/__init__.py +23 -12
  14. aws_cdk/aws_batch/__init__.py +2150 -1078
  15. aws_cdk/aws_bedrock/__init__.py +197 -2
  16. aws_cdk/aws_cloudformation/__init__.py +1 -1
  17. aws_cdk/aws_cloudfront/__init__.py +4 -4
  18. aws_cdk/aws_cloudtrail/__init__.py +44 -14
  19. aws_cdk/aws_cloudwatch/__init__.py +20 -4
  20. aws_cdk/aws_codeartifact/__init__.py +812 -2
  21. aws_cdk/aws_codebuild/__init__.py +32 -10
  22. aws_cdk/aws_codepipeline/__init__.py +33 -11
  23. aws_cdk/aws_cognito/__init__.py +49 -44
  24. aws_cdk/aws_connect/__init__.py +256 -0
  25. aws_cdk/aws_controltower/__init__.py +4 -4
  26. aws_cdk/aws_datasync/__init__.py +393 -13
  27. aws_cdk/aws_dlm/__init__.py +2 -2
  28. aws_cdk/aws_docdbelastic/__init__.py +117 -0
  29. aws_cdk/aws_dynamodb/__init__.py +416 -5
  30. aws_cdk/aws_ec2/__init__.py +590 -134
  31. aws_cdk/aws_ecs/__init__.py +29 -20
  32. aws_cdk/aws_ecs_patterns/__init__.py +52 -12
  33. aws_cdk/aws_eks/__init__.py +27 -25
  34. aws_cdk/aws_elasticloadbalancing/__init__.py +6 -9
  35. aws_cdk/aws_elasticloadbalancingv2/__init__.py +363 -62
  36. aws_cdk/aws_emr/__init__.py +7 -4
  37. aws_cdk/aws_entityresolution/__init__.py +91 -64
  38. aws_cdk/aws_fsx/__init__.py +7 -7
  39. aws_cdk/aws_glue/__init__.py +137 -3
  40. aws_cdk/aws_iam/__init__.py +9 -10
  41. aws_cdk/aws_internetmonitor/__init__.py +85 -0
  42. aws_cdk/aws_iotsitewise/__init__.py +208 -198
  43. aws_cdk/aws_iotwireless/__init__.py +6 -5
  44. aws_cdk/aws_kafkaconnect/__init__.py +1237 -162
  45. aws_cdk/aws_kendra/__init__.py +34 -24
  46. aws_cdk/aws_kinesisanalytics/__init__.py +37 -37
  47. aws_cdk/aws_kinesisanalyticsv2/__init__.py +37 -37
  48. aws_cdk/aws_kinesisfirehose/__init__.py +6 -2
  49. aws_cdk/aws_lambda/__init__.py +16 -16
  50. aws_cdk/aws_msk/__init__.py +88 -0
  51. aws_cdk/aws_opensearchservice/__init__.py +61 -18
  52. aws_cdk/aws_pinpoint/__init__.py +42 -0
  53. aws_cdk/aws_rds/__init__.py +1292 -216
  54. aws_cdk/aws_redshift/__init__.py +6 -3
  55. aws_cdk/aws_redshiftserverless/__init__.py +0 -157
  56. aws_cdk/aws_sagemaker/__init__.py +29 -9
  57. aws_cdk/aws_shield/__init__.py +7 -8
  58. aws_cdk/aws_ssm/__init__.py +15 -12
  59. aws_cdk/aws_stepfunctions_tasks/__init__.py +476 -0
  60. aws_cdk/aws_synthetics/__init__.py +74 -14
  61. aws_cdk/aws_transfer/__init__.py +4 -3
  62. aws_cdk/aws_wafv2/__init__.py +516 -42
  63. aws_cdk/cx_api/__init__.py +34 -0
  64. {aws_cdk_lib-2.132.1.dist-info → aws_cdk_lib-2.134.0.dist-info}/METADATA +2 -2
  65. {aws_cdk_lib-2.132.1.dist-info → aws_cdk_lib-2.134.0.dist-info}/RECORD +69 -69
  66. {aws_cdk_lib-2.132.1.dist-info → aws_cdk_lib-2.134.0.dist-info}/LICENSE +0 -0
  67. {aws_cdk_lib-2.132.1.dist-info → aws_cdk_lib-2.134.0.dist-info}/NOTICE +0 -0
  68. {aws_cdk_lib-2.132.1.dist-info → aws_cdk_lib-2.134.0.dist-info}/WHEEL +0 -0
  69. {aws_cdk_lib-2.132.1.dist-info → aws_cdk_lib-2.134.0.dist-info}/top_level.txt +0 -0
@@ -517,7 +517,7 @@ class CfnLoggingConfiguration(
517
517
  :param log_destination_configs: The logging destination configuration that you want to associate with the web ACL. .. epigraph:: You can associate one logging destination to a web ACL.
518
518
  :param resource_arn: The Amazon Resource Name (ARN) of the web ACL that you want to associate with ``LogDestinationConfigs`` .
519
519
  :param logging_filter: Filtering that specifies which web requests are kept in the logs and which are dropped. You can filter on the rule action and on the web request labels that were applied by matching rules during web ACL evaluation.
520
- :param redacted_fields: The parts of the request that you want to keep out of the logs. For example, if you redact the ``SingleHeader`` field, the ``HEADER`` field in the logs will be ``REDACTED`` for all rules that use the ``SingleHeader`` ``FieldToMatch`` setting. Redaction applies only to the component that's specified in the rule's ``FieldToMatch`` setting, so the ``SingleHeader`` redaction doesn't apply to rules that use the ``Headers`` ``FieldToMatch`` . .. epigraph:: You can specify only the following fields for redaction: ``UriPath`` , ``QueryString`` , ``SingleHeader`` , and ``Method`` .
520
+ :param redacted_fields: The parts of the request that you want to keep out of the logs. For example, if you redact the ``SingleHeader`` field, the ``HEADER`` field in the logs will be ``REDACTED`` for all rules that use the ``SingleHeader`` ``FieldToMatch`` setting. Redaction applies only to the component that's specified in the rule's ``FieldToMatch`` setting, so the ``SingleHeader`` redaction doesn't apply to rules that use the ``Headers`` ``FieldToMatch`` . .. epigraph:: You can specify only the following fields for redaction: ``UriPath`` , ``QueryString`` , ``SingleHeader`` , and ``Method`` . > This setting has no impact on request sampling. With request sampling, the only way to exclude fields is by disabling sampling in the web ACL visibility configuration.
521
521
  '''
522
522
  if __debug__:
523
523
  type_hints = typing.get_type_hints(_typecheckingstub__8a8c4ba5ee1b98a4ed1dd5001182ec8712406026687793bcb17c7a78771fa41c)
@@ -1412,7 +1412,7 @@ class CfnLoggingConfigurationProps:
1412
1412
  :param log_destination_configs: The logging destination configuration that you want to associate with the web ACL. .. epigraph:: You can associate one logging destination to a web ACL.
1413
1413
  :param resource_arn: The Amazon Resource Name (ARN) of the web ACL that you want to associate with ``LogDestinationConfigs`` .
1414
1414
  :param logging_filter: Filtering that specifies which web requests are kept in the logs and which are dropped. You can filter on the rule action and on the web request labels that were applied by matching rules during web ACL evaluation.
1415
- :param redacted_fields: The parts of the request that you want to keep out of the logs. For example, if you redact the ``SingleHeader`` field, the ``HEADER`` field in the logs will be ``REDACTED`` for all rules that use the ``SingleHeader`` ``FieldToMatch`` setting. Redaction applies only to the component that's specified in the rule's ``FieldToMatch`` setting, so the ``SingleHeader`` redaction doesn't apply to rules that use the ``Headers`` ``FieldToMatch`` . .. epigraph:: You can specify only the following fields for redaction: ``UriPath`` , ``QueryString`` , ``SingleHeader`` , and ``Method`` .
1415
+ :param redacted_fields: The parts of the request that you want to keep out of the logs. For example, if you redact the ``SingleHeader`` field, the ``HEADER`` field in the logs will be ``REDACTED`` for all rules that use the ``SingleHeader`` ``FieldToMatch`` setting. Redaction applies only to the component that's specified in the rule's ``FieldToMatch`` setting, so the ``SingleHeader`` redaction doesn't apply to rules that use the ``Headers`` ``FieldToMatch`` . .. epigraph:: You can specify only the following fields for redaction: ``UriPath`` , ``QueryString`` , ``SingleHeader`` , and ``Method`` . > This setting has no impact on request sampling. With request sampling, the only way to exclude fields is by disabling sampling in the web ACL visibility configuration.
1416
1416
 
1417
1417
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-loggingconfiguration.html
1418
1418
  :exampleMetadata: fixture=_generated
@@ -1506,7 +1506,7 @@ class CfnLoggingConfigurationProps:
1506
1506
  Redaction applies only to the component that's specified in the rule's ``FieldToMatch`` setting, so the ``SingleHeader`` redaction doesn't apply to rules that use the ``Headers`` ``FieldToMatch`` .
1507
1507
  .. epigraph::
1508
1508
 
1509
- You can specify only the following fields for redaction: ``UriPath`` , ``QueryString`` , ``SingleHeader`` , and ``Method`` .
1509
+ You can specify only the following fields for redaction: ``UriPath`` , ``QueryString`` , ``SingleHeader`` , and ``Method`` . > This setting has no impact on request sampling. With request sampling, the only way to exclude fields is by disabling sampling in the web ACL visibility configuration.
1510
1510
 
1511
1511
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-loggingconfiguration.html#cfn-wafv2-loggingconfiguration-redactedfields
1512
1512
  '''
@@ -1962,6 +1962,9 @@ class CfnRuleGroup(
1962
1962
  match_scope="matchScope",
1963
1963
  oversize_handling="oversizeHandling"
1964
1964
  ),
1965
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
1966
+ fallback_behavior="fallbackBehavior"
1967
+ ),
1965
1968
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
1966
1969
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
1967
1970
  all=all,
@@ -2062,6 +2065,7 @@ class CfnRuleGroup(
2062
2065
  )]
2063
2066
  )
2064
2067
  )],
2068
+ evaluation_window_sec=123,
2065
2069
  forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
2066
2070
  fallback_behavior="fallbackBehavior",
2067
2071
  header_name="headerName"
@@ -2092,6 +2096,9 @@ class CfnRuleGroup(
2092
2096
  match_scope="matchScope",
2093
2097
  oversize_handling="oversizeHandling"
2094
2098
  ),
2099
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2100
+ fallback_behavior="fallbackBehavior"
2101
+ ),
2095
2102
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2096
2103
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2097
2104
  all=all,
@@ -2140,6 +2147,9 @@ class CfnRuleGroup(
2140
2147
  match_scope="matchScope",
2141
2148
  oversize_handling="oversizeHandling"
2142
2149
  ),
2150
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2151
+ fallback_behavior="fallbackBehavior"
2152
+ ),
2143
2153
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2144
2154
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2145
2155
  all=all,
@@ -2187,6 +2197,9 @@ class CfnRuleGroup(
2187
2197
  match_scope="matchScope",
2188
2198
  oversize_handling="oversizeHandling"
2189
2199
  ),
2200
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2201
+ fallback_behavior="fallbackBehavior"
2202
+ ),
2190
2203
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2191
2204
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2192
2205
  all=all,
@@ -2234,6 +2247,9 @@ class CfnRuleGroup(
2234
2247
  match_scope="matchScope",
2235
2248
  oversize_handling="oversizeHandling"
2236
2249
  ),
2250
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2251
+ fallback_behavior="fallbackBehavior"
2252
+ ),
2237
2253
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2238
2254
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2239
2255
  all=all,
@@ -2283,6 +2299,9 @@ class CfnRuleGroup(
2283
2299
  match_scope="matchScope",
2284
2300
  oversize_handling="oversizeHandling"
2285
2301
  ),
2302
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2303
+ fallback_behavior="fallbackBehavior"
2304
+ ),
2286
2305
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2287
2306
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2288
2307
  all=all,
@@ -2747,6 +2766,9 @@ class CfnRuleGroup(
2747
2766
  match_scope="matchScope",
2748
2767
  oversize_handling="oversizeHandling"
2749
2768
  ),
2769
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2770
+ fallback_behavior="fallbackBehavior"
2771
+ ),
2750
2772
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2751
2773
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2752
2774
  all=all,
@@ -2847,6 +2869,7 @@ class CfnRuleGroup(
2847
2869
  )]
2848
2870
  )
2849
2871
  )],
2872
+ evaluation_window_sec=123,
2850
2873
  forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
2851
2874
  fallback_behavior="fallbackBehavior",
2852
2875
  header_name="headerName"
@@ -2877,6 +2900,9 @@ class CfnRuleGroup(
2877
2900
  match_scope="matchScope",
2878
2901
  oversize_handling="oversizeHandling"
2879
2902
  ),
2903
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2904
+ fallback_behavior="fallbackBehavior"
2905
+ ),
2880
2906
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2881
2907
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2882
2908
  all=all,
@@ -2925,6 +2951,9 @@ class CfnRuleGroup(
2925
2951
  match_scope="matchScope",
2926
2952
  oversize_handling="oversizeHandling"
2927
2953
  ),
2954
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
2955
+ fallback_behavior="fallbackBehavior"
2956
+ ),
2928
2957
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2929
2958
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2930
2959
  all=all,
@@ -2972,6 +3001,9 @@ class CfnRuleGroup(
2972
3001
  match_scope="matchScope",
2973
3002
  oversize_handling="oversizeHandling"
2974
3003
  ),
3004
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
3005
+ fallback_behavior="fallbackBehavior"
3006
+ ),
2975
3007
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
2976
3008
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
2977
3009
  all=all,
@@ -3019,6 +3051,9 @@ class CfnRuleGroup(
3019
3051
  match_scope="matchScope",
3020
3052
  oversize_handling="oversizeHandling"
3021
3053
  ),
3054
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
3055
+ fallback_behavior="fallbackBehavior"
3056
+ ),
3022
3057
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
3023
3058
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
3024
3059
  all=all,
@@ -3068,6 +3103,9 @@ class CfnRuleGroup(
3068
3103
  match_scope="matchScope",
3069
3104
  oversize_handling="oversizeHandling"
3070
3105
  ),
3106
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
3107
+ fallback_behavior="fallbackBehavior"
3108
+ ),
3071
3109
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
3072
3110
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
3073
3111
  all=all,
@@ -3206,7 +3244,7 @@ class CfnRuleGroup(
3206
3244
 
3207
3245
  This is used to indicate the web request component to inspect, in the ``FieldToMatch`` specification.
3208
3246
 
3209
- :param oversize_handling: What AWS WAF should do if the body is larger than AWS WAF can inspect. AWS WAF does not support inspecting the entire contents of the web request body if the body exceeds the limit for the resource type. If the body is larger than the limit, the underlying host service only forwards the contents that are below the limit to AWS WAF for inspection. The default limit is 8 KB (8,192 bytes) for regional resources and 16 KB (16,384 bytes) for CloudFront distributions. For CloudFront distributions, you can increase the limit in the web ACL ``AssociationConfig`` , for additional processing fees. The options for oversize handling are the following: - ``CONTINUE`` - Inspect the available body contents normally, according to the rule inspection criteria. - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement. You can combine the ``MATCH`` or ``NO_MATCH`` settings for oversize handling with your rule and web ACL action settings, so that you block any request whose body is over the limit. Default: ``CONTINUE``
3247
+ :param oversize_handling: What AWS WAF should do if the body is larger than AWS WAF can inspect. 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. The options for oversize handling are the following: - ``CONTINUE`` - Inspect the available body contents normally, according to the rule inspection criteria. - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement. You can combine the ``MATCH`` or ``NO_MATCH`` settings for oversize handling with your rule and web ACL action settings, so that you block any request whose body is over the limit. Default: ``CONTINUE``
3210
3248
 
3211
3249
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-body.html
3212
3250
  :exampleMetadata: fixture=_generated
@@ -3232,9 +3270,10 @@ class CfnRuleGroup(
3232
3270
  def oversize_handling(self) -> typing.Optional[builtins.str]:
3233
3271
  '''What AWS WAF should do if the body is larger than AWS WAF can inspect.
3234
3272
 
3235
- AWS WAF does not support inspecting the entire contents of the web request body if the body exceeds the limit for the resource type. If the body is larger than the limit, the underlying host service only forwards the contents that are below the limit to AWS WAF for inspection.
3273
+ 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.
3236
3274
 
3237
- The default limit is 8 KB (8,192 bytes) for regional resources and 16 KB (16,384 bytes) for CloudFront distributions. For CloudFront distributions, you can increase the limit in the web ACL ``AssociationConfig`` , for additional processing fees.
3275
+ - For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
3276
+ - 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.
3238
3277
 
3239
3278
  The options for oversize handling are the following:
3240
3279
 
@@ -3334,6 +3373,9 @@ class CfnRuleGroup(
3334
3373
  match_scope="matchScope",
3335
3374
  oversize_handling="oversizeHandling"
3336
3375
  ),
3376
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
3377
+ fallback_behavior="fallbackBehavior"
3378
+ ),
3337
3379
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
3338
3380
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
3339
3381
  all=all,
@@ -4335,6 +4377,7 @@ class CfnRuleGroup(
4335
4377
  "body": "body",
4336
4378
  "cookies": "cookies",
4337
4379
  "headers": "headers",
4380
+ "ja3_fingerprint": "ja3Fingerprint",
4338
4381
  "json_body": "jsonBody",
4339
4382
  "method": "method",
4340
4383
  "query_string": "queryString",
@@ -4351,6 +4394,7 @@ class CfnRuleGroup(
4351
4394
  body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.BodyProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4352
4395
  cookies: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.CookiesProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4353
4396
  headers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.HeadersProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4397
+ ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.JA3FingerprintProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4354
4398
  json_body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.JsonBodyProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4355
4399
  method: typing.Any = None,
4356
4400
  query_string: typing.Any = None,
@@ -4373,12 +4417,14 @@ class CfnRuleGroup(
4373
4417
  - In a logging configuration, this is used in the ``RedactedFields`` property to specify a field to redact from the logging records. For this use case, note the following:
4374
4418
  - Even though all ``FieldToMatch`` settings are available, the only valid settings for field redaction are ``UriPath`` , ``QueryString`` , ``SingleHeader`` , and ``Method`` .
4375
4419
  - In this documentation, the descriptions of the individual fields talk about specifying the web request component to inspect, but for field redaction, you are specifying the component type to redact from the logs.
4420
+ - If you have request sampling enabled, the redacted fields configuration for logging has no impact on sampling. The only way to exclude fields from request sampling is by disabling sampling in the web ACL visibility configuration.
4376
4421
 
4377
4422
  :param all_query_arguments: Inspect all query arguments.
4378
- :param body: Inspect the request body as plain text. 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. A limited amount of the request body is forwarded to AWS WAF for inspection by the underlying host service. For regional resources, the limit is 8 KB (8,192 bytes) and for CloudFront distributions, the limit is 16 KB (16,384 bytes). For CloudFront distributions, you can increase the limit in the web ACL's ``AssociationConfig`` , for additional processing fees. For information about how to handle oversized request bodies, see the ``Body`` object configuration.
4423
+ :param body: Inspect the request body as plain text. 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 ``Body`` object configuration.
4379
4424
  :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.
4380
4425
  :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.
4381
- :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. A limited amount of the request body is forwarded to AWS WAF for inspection by the underlying host service. For regional resources, the limit is 8 KB (8,192 bytes) and for CloudFront distributions, the limit is 16 KB (16,384 bytes). For CloudFront distributions, you can increase the limit in the web ACL's ``AssociationConfig`` , for additional processing fees. For information about how to handle oversized request bodies, see the ``JsonBody`` object configuration.
4426
+ :param ja3_fingerprint: 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.
4427
+ :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.
4382
4428
  :param method: Inspect the HTTP method. The method indicates the type of operation that the request is asking the origin to perform.
4383
4429
  :param query_string: Inspect the query string. This is the part of a URL that appears after a ``?`` character, if any.
4384
4430
  :param single_header: Inspect a single header. Provide the name of the header to inspect, for example, ``User-Agent`` or ``Referer`` . This setting isn't case sensitive. Example JSON: ``"SingleHeader": { "Name": "haystack" }`` Alternately, you can filter and inspect all headers with the ``Headers`` ``FieldToMatch`` setting.
@@ -4425,6 +4471,9 @@ class CfnRuleGroup(
4425
4471
  match_scope="matchScope",
4426
4472
  oversize_handling="oversizeHandling"
4427
4473
  ),
4474
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
4475
+ fallback_behavior="fallbackBehavior"
4476
+ ),
4428
4477
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
4429
4478
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
4430
4479
  all=all,
@@ -4449,6 +4498,7 @@ class CfnRuleGroup(
4449
4498
  check_type(argname="argument body", value=body, expected_type=type_hints["body"])
4450
4499
  check_type(argname="argument cookies", value=cookies, expected_type=type_hints["cookies"])
4451
4500
  check_type(argname="argument headers", value=headers, expected_type=type_hints["headers"])
4501
+ check_type(argname="argument ja3_fingerprint", value=ja3_fingerprint, expected_type=type_hints["ja3_fingerprint"])
4452
4502
  check_type(argname="argument json_body", value=json_body, expected_type=type_hints["json_body"])
4453
4503
  check_type(argname="argument method", value=method, expected_type=type_hints["method"])
4454
4504
  check_type(argname="argument query_string", value=query_string, expected_type=type_hints["query_string"])
@@ -4464,6 +4514,8 @@ class CfnRuleGroup(
4464
4514
  self._values["cookies"] = cookies
4465
4515
  if headers is not None:
4466
4516
  self._values["headers"] = headers
4517
+ if ja3_fingerprint is not None:
4518
+ self._values["ja3_fingerprint"] = ja3_fingerprint
4467
4519
  if json_body is not None:
4468
4520
  self._values["json_body"] = json_body
4469
4521
  if method is not None:
@@ -4494,7 +4546,10 @@ class CfnRuleGroup(
4494
4546
 
4495
4547
  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.
4496
4548
 
4497
- A limited amount of the request body is forwarded to AWS WAF for inspection by the underlying host service. For regional resources, the limit is 8 KB (8,192 bytes) and for CloudFront distributions, the limit is 16 KB (16,384 bytes). For CloudFront distributions, you can increase the limit in the web ACL's ``AssociationConfig`` , for additional processing fees.
4549
+ 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.
4550
+
4551
+ - For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
4552
+ - 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.
4498
4553
 
4499
4554
  For information about how to handle oversized request bodies, see the ``Body`` object configuration.
4500
4555
 
@@ -4533,6 +4588,26 @@ class CfnRuleGroup(
4533
4588
  result = self._values.get("headers")
4534
4589
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.HeadersProperty"]], result)
4535
4590
 
4591
+ @builtins.property
4592
+ def ja3_fingerprint(
4593
+ self,
4594
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.JA3FingerprintProperty"]]:
4595
+ '''Match against the request's JA3 fingerprint.
4596
+
4597
+ 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.
4598
+ .. epigraph::
4599
+
4600
+ You can use this choice only with a string match ``ByteMatchStatement`` with the ``PositionalConstraint`` set to ``EXACTLY`` .
4601
+
4602
+ 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* .
4603
+
4604
+ 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.
4605
+
4606
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-ja3fingerprint
4607
+ '''
4608
+ result = self._values.get("ja3_fingerprint")
4609
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.JA3FingerprintProperty"]], result)
4610
+
4536
4611
  @builtins.property
4537
4612
  def json_body(
4538
4613
  self,
@@ -4541,7 +4616,10 @@ class CfnRuleGroup(
4541
4616
 
4542
4617
  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.
4543
4618
 
4544
- A limited amount of the request body is forwarded to AWS WAF for inspection by the underlying host service. For regional resources, the limit is 8 KB (8,192 bytes) and for CloudFront distributions, the limit is 16 KB (16,384 bytes). For CloudFront distributions, you can increase the limit in the web ACL's ``AssociationConfig`` , for additional processing fees.
4619
+ 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.
4620
+
4621
+ - For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
4622
+ - 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.
4545
4623
 
4546
4624
  For information about how to handle oversized request bodies, see the ``JsonBody`` object configuration.
4547
4625
 
@@ -5302,6 +5380,72 @@ class CfnRuleGroup(
5302
5380
  k + "=" + repr(v) for k, v in self._values.items()
5303
5381
  )
5304
5382
 
5383
+ @jsii.data_type(
5384
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.JA3FingerprintProperty",
5385
+ jsii_struct_bases=[],
5386
+ name_mapping={"fallback_behavior": "fallbackBehavior"},
5387
+ )
5388
+ class JA3FingerprintProperty:
5389
+ def __init__(self, *, fallback_behavior: builtins.str) -> None:
5390
+ '''Match against the request's JA3 fingerprint.
5391
+
5392
+ 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.
5393
+ .. epigraph::
5394
+
5395
+ You can use this choice only with a string match ``ByteMatchStatement`` with the ``PositionalConstraint`` set to ``EXACTLY`` .
5396
+
5397
+ 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* .
5398
+
5399
+ 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.
5400
+
5401
+ :param fallback_behavior: The match status to assign to the web request if the request doesn't have a JA3 fingerprint. You can specify the following fallback behaviors: - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement.
5402
+
5403
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ja3fingerprint.html
5404
+ :exampleMetadata: fixture=_generated
5405
+
5406
+ Example::
5407
+
5408
+ # The code below shows an example of how to instantiate this type.
5409
+ # The values are placeholders you should change.
5410
+ from aws_cdk import aws_wafv2 as wafv2
5411
+
5412
+ j_a3_fingerprint_property = wafv2.CfnRuleGroup.JA3FingerprintProperty(
5413
+ fallback_behavior="fallbackBehavior"
5414
+ )
5415
+ '''
5416
+ if __debug__:
5417
+ type_hints = typing.get_type_hints(_typecheckingstub__1cba50229767598d7603bfa317a8bd11cfc2b12ca28d38737119d57d5d04667d)
5418
+ check_type(argname="argument fallback_behavior", value=fallback_behavior, expected_type=type_hints["fallback_behavior"])
5419
+ self._values: typing.Dict[builtins.str, typing.Any] = {
5420
+ "fallback_behavior": fallback_behavior,
5421
+ }
5422
+
5423
+ @builtins.property
5424
+ def fallback_behavior(self) -> builtins.str:
5425
+ '''The match status to assign to the web request if the request doesn't have a JA3 fingerprint.
5426
+
5427
+ You can specify the following fallback behaviors:
5428
+
5429
+ - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request.
5430
+ - ``NO_MATCH`` - Treat the web request as not matching the rule statement.
5431
+
5432
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ja3fingerprint.html#cfn-wafv2-rulegroup-ja3fingerprint-fallbackbehavior
5433
+ '''
5434
+ result = self._values.get("fallback_behavior")
5435
+ assert result is not None, "Required property 'fallback_behavior' is missing"
5436
+ return typing.cast(builtins.str, result)
5437
+
5438
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
5439
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
5440
+
5441
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
5442
+ return not (rhs == self)
5443
+
5444
+ def __repr__(self) -> str:
5445
+ return "JA3FingerprintProperty(%s)" % ", ".join(
5446
+ k + "=" + repr(v) for k, v in self._values.items()
5447
+ )
5448
+
5305
5449
  @jsii.data_type(
5306
5450
  jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.JsonBodyProperty",
5307
5451
  jsii_struct_bases=[],
@@ -5332,7 +5476,7 @@ class CfnRuleGroup(
5332
5476
  :param match_pattern: The patterns to look for in the JSON body. AWS WAF inspects the results of these pattern matches against the rule inspection criteria.
5333
5477
  :param match_scope: The parts of the JSON to match against using the ``MatchPattern`` . If you specify ``ALL`` , AWS WAF matches against keys and values. ``All`` does not require a match to be found in the keys and a match to be found in the values. It requires a match to be found in the keys or the values or both. To require a match in the keys and in the values, use a logical ``AND`` statement to combine two match rules, one that inspects the keys and another that inspects the values.
5334
5478
  :param invalid_fallback_behavior: What AWS WAF should do if it fails to completely parse the JSON body. The options are the following:. - ``EVALUATE_AS_STRING`` - Inspect the body as plain text. AWS WAF applies the text transformations and inspection criteria that you defined for the JSON inspection to the body text string. - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement. If you don't provide this setting, AWS WAF parses and evaluates the content only up to the first parsing failure that it encounters. AWS WAF does its best to parse the entire JSON body, but might be forced to stop for reasons such as invalid characters, duplicate keys, truncation, and any content whose root node isn't an object or an array. AWS WAF parses the JSON in the following examples as two valid key, value pairs: - Missing comma: ``{"key1":"value1""key2":"value2"}`` - Missing colon: ``{"key1":"value1","key2""value2"}`` - Extra colons: ``{"key1"::"value1","key2""value2"}``
5335
- :param oversize_handling: What AWS WAF should do if the body is larger than AWS WAF can inspect. AWS WAF does not support inspecting the entire contents of the web request body if the body exceeds the limit for the resource type. If the body is larger than the limit, the underlying host service only forwards the contents that are below the limit to AWS WAF for inspection. The default limit is 8 KB (8,192 bytes) for regional resources and 16 KB (16,384 bytes) for CloudFront distributions. For CloudFront distributions, you can increase the limit in the web ACL ``AssociationConfig`` , for additional processing fees. The options for oversize handling are the following: - ``CONTINUE`` - Inspect the available body contents normally, according to the rule inspection criteria. - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement. You can combine the ``MATCH`` or ``NO_MATCH`` settings for oversize handling with your rule and web ACL action settings, so that you block any request whose body is over the limit. Default: ``CONTINUE``
5479
+ :param oversize_handling: What AWS WAF should do if the body is larger than AWS WAF can inspect. 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. The options for oversize handling are the following: - ``CONTINUE`` - Inspect the available body contents normally, according to the rule inspection criteria. - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement. You can combine the ``MATCH`` or ``NO_MATCH`` settings for oversize handling with your rule and web ACL action settings, so that you block any request whose body is over the limit. Default: ``CONTINUE``
5336
5480
 
5337
5481
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-jsonbody.html
5338
5482
  :exampleMetadata: fixture=_generated
@@ -5427,9 +5571,10 @@ class CfnRuleGroup(
5427
5571
  def oversize_handling(self) -> typing.Optional[builtins.str]:
5428
5572
  '''What AWS WAF should do if the body is larger than AWS WAF can inspect.
5429
5573
 
5430
- AWS WAF does not support inspecting the entire contents of the web request body if the body exceeds the limit for the resource type. If the body is larger than the limit, the underlying host service only forwards the contents that are below the limit to AWS WAF for inspection.
5574
+ 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.
5431
5575
 
5432
- The default limit is 8 KB (8,192 bytes) for regional resources and 16 KB (16,384 bytes) for CloudFront distributions. For CloudFront distributions, you can increase the limit in the web ACL ``AssociationConfig`` , for additional processing fees.
5576
+ - For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
5577
+ - 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.
5433
5578
 
5434
5579
  The options for oversize handling are the following:
5435
5580
 
@@ -5791,6 +5936,9 @@ class CfnRuleGroup(
5791
5936
  match_scope="matchScope",
5792
5937
  oversize_handling="oversizeHandling"
5793
5938
  ),
5939
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
5940
+ fallback_behavior="fallbackBehavior"
5941
+ ),
5794
5942
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
5795
5943
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
5796
5944
  all=all,
@@ -5889,6 +6037,7 @@ class CfnRuleGroup(
5889
6037
  )]
5890
6038
  )
5891
6039
  )],
6040
+ evaluation_window_sec=123,
5892
6041
  forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
5893
6042
  fallback_behavior="fallbackBehavior",
5894
6043
  header_name="headerName"
@@ -5919,6 +6068,9 @@ class CfnRuleGroup(
5919
6068
  match_scope="matchScope",
5920
6069
  oversize_handling="oversizeHandling"
5921
6070
  ),
6071
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6072
+ fallback_behavior="fallbackBehavior"
6073
+ ),
5922
6074
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
5923
6075
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
5924
6076
  all=all,
@@ -5967,6 +6119,9 @@ class CfnRuleGroup(
5967
6119
  match_scope="matchScope",
5968
6120
  oversize_handling="oversizeHandling"
5969
6121
  ),
6122
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6123
+ fallback_behavior="fallbackBehavior"
6124
+ ),
5970
6125
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
5971
6126
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
5972
6127
  all=all,
@@ -6014,6 +6169,9 @@ class CfnRuleGroup(
6014
6169
  match_scope="matchScope",
6015
6170
  oversize_handling="oversizeHandling"
6016
6171
  ),
6172
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6173
+ fallback_behavior="fallbackBehavior"
6174
+ ),
6017
6175
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6018
6176
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6019
6177
  all=all,
@@ -6061,6 +6219,9 @@ class CfnRuleGroup(
6061
6219
  match_scope="matchScope",
6062
6220
  oversize_handling="oversizeHandling"
6063
6221
  ),
6222
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6223
+ fallback_behavior="fallbackBehavior"
6224
+ ),
6064
6225
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6065
6226
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6066
6227
  all=all,
@@ -6110,6 +6271,9 @@ class CfnRuleGroup(
6110
6271
  match_scope="matchScope",
6111
6272
  oversize_handling="oversizeHandling"
6112
6273
  ),
6274
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6275
+ fallback_behavior="fallbackBehavior"
6276
+ ),
6113
6277
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6114
6278
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6115
6279
  all=all,
@@ -6235,6 +6399,9 @@ class CfnRuleGroup(
6235
6399
  match_scope="matchScope",
6236
6400
  oversize_handling="oversizeHandling"
6237
6401
  ),
6402
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6403
+ fallback_behavior="fallbackBehavior"
6404
+ ),
6238
6405
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6239
6406
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6240
6407
  all=all,
@@ -6333,6 +6500,7 @@ class CfnRuleGroup(
6333
6500
  )]
6334
6501
  )
6335
6502
  )],
6503
+ evaluation_window_sec=123,
6336
6504
  forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
6337
6505
  fallback_behavior="fallbackBehavior",
6338
6506
  header_name="headerName"
@@ -6363,6 +6531,9 @@ class CfnRuleGroup(
6363
6531
  match_scope="matchScope",
6364
6532
  oversize_handling="oversizeHandling"
6365
6533
  ),
6534
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6535
+ fallback_behavior="fallbackBehavior"
6536
+ ),
6366
6537
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6367
6538
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6368
6539
  all=all,
@@ -6411,6 +6582,9 @@ class CfnRuleGroup(
6411
6582
  match_scope="matchScope",
6412
6583
  oversize_handling="oversizeHandling"
6413
6584
  ),
6585
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6586
+ fallback_behavior="fallbackBehavior"
6587
+ ),
6414
6588
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6415
6589
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6416
6590
  all=all,
@@ -6458,6 +6632,9 @@ class CfnRuleGroup(
6458
6632
  match_scope="matchScope",
6459
6633
  oversize_handling="oversizeHandling"
6460
6634
  ),
6635
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6636
+ fallback_behavior="fallbackBehavior"
6637
+ ),
6461
6638
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6462
6639
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6463
6640
  all=all,
@@ -6505,6 +6682,9 @@ class CfnRuleGroup(
6505
6682
  match_scope="matchScope",
6506
6683
  oversize_handling="oversizeHandling"
6507
6684
  ),
6685
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6686
+ fallback_behavior="fallbackBehavior"
6687
+ ),
6508
6688
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6509
6689
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6510
6690
  all=all,
@@ -6554,6 +6734,9 @@ class CfnRuleGroup(
6554
6734
  match_scope="matchScope",
6555
6735
  oversize_handling="oversizeHandling"
6556
6736
  ),
6737
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
6738
+ fallback_behavior="fallbackBehavior"
6739
+ ),
6557
6740
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
6558
6741
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
6559
6742
  all=all,
@@ -6879,6 +7062,7 @@ class CfnRuleGroup(
6879
7062
  "aggregate_key_type": "aggregateKeyType",
6880
7063
  "limit": "limit",
6881
7064
  "custom_keys": "customKeys",
7065
+ "evaluation_window_sec": "evaluationWindowSec",
6882
7066
  "forwarded_ip_config": "forwardedIpConfig",
6883
7067
  "scope_down_statement": "scopeDownStatement",
6884
7068
  },
@@ -6890,6 +7074,7 @@ class CfnRuleGroup(
6890
7074
  aggregate_key_type: builtins.str,
6891
7075
  limit: jsii.Number,
6892
7076
  custom_keys: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.RateBasedStatementCustomKeyProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
7077
+ evaluation_window_sec: typing.Optional[jsii.Number] = None,
6893
7078
  forwarded_ip_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.ForwardedIPConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6894
7079
  scope_down_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.StatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6895
7080
  ) -> None:
@@ -6939,6 +7124,7 @@ class CfnRuleGroup(
6939
7124
  :param aggregate_key_type: Setting that indicates how to aggregate the request counts. .. epigraph:: Web requests that are missing any of the components specified in the aggregation keys are omitted from the rate-based rule evaluation and handling. - ``CONSTANT`` - Count and limit the requests that match the rate-based rule's scope-down statement. With this option, the counted requests aren't further aggregated. The scope-down statement is the only specification used. When the count of all requests that satisfy the scope-down statement goes over the limit, AWS WAF applies the rule action to all requests that satisfy the scope-down statement. With this option, you must configure the ``ScopeDownStatement`` property. - ``CUSTOM_KEYS`` - Aggregate the request counts using one or more web request components as the aggregate keys. With this option, you must specify the aggregate keys in the ``CustomKeys`` property. To aggregate on only the IP address or only the forwarded IP address, don't use custom keys. Instead, set the aggregate key type to ``IP`` or ``FORWARDED_IP`` . - ``FORWARDED_IP`` - Aggregate the request counts on the first IP address in an HTTP header. With this option, you must specify the header to use in the ``ForwardedIPConfig`` property. To aggregate on a combination of the forwarded IP address with other aggregate keys, use ``CUSTOM_KEYS`` . - ``IP`` - Aggregate the request counts on the IP address from the web request origin. To aggregate on a combination of the IP address with other aggregate keys, use ``CUSTOM_KEYS`` .
6940
7125
  :param limit: The limit on requests per 5-minute period for a single aggregation instance for the rate-based rule. If the rate-based statement includes a ``ScopeDownStatement`` , this limit is applied only to the requests that match the statement. Examples: - If you aggregate on just the IP address, this is the limit on requests from any single IP address. - If you aggregate on the HTTP method and the query argument name "city", then this is the limit on requests for any single method, city pair.
6941
7126
  :param custom_keys: Specifies the aggregate keys to use in a rate-base rule.
7127
+ :param evaluation_window_sec: The amount of time, in seconds, that AWS WAF should include in its request counts, looking back from the current time. For example, for a setting of 120, when AWS WAF checks the rate, it counts the requests for the 2 minutes immediately preceding the current time. Valid settings are 60, 120, 300, and 600. This setting doesn't determine how often AWS WAF checks the rate, but how far back it looks each time it checks. AWS WAF checks the rate about every 10 seconds. Default: ``300`` (5 minutes)
6942
7128
  :param forwarded_ip_config: The configuration for inspecting IP addresses in an HTTP header that you specify, instead of using the IP address that's reported by the web request origin. Commonly, this is the X-Forwarded-For (XFF) header, but you can specify any header name. .. epigraph:: If the specified header isn't present in the request, AWS WAF doesn't apply the rule to the web request at all. This is required if you specify a forwarded IP in the rule's aggregate key settings.
6943
7129
  :param scope_down_statement: An optional nested statement that narrows the scope of the web requests that are evaluated and managed by the rate-based statement. When you use a scope-down statement, the rate-based rule only tracks and rate limits requests that match the scope-down statement. You can use any nestable ``Statement`` in the scope-down statement, and you can nest statements at any level, the same as you can for a rule statement.
6944
7130
 
@@ -7010,6 +7196,7 @@ class CfnRuleGroup(
7010
7196
  )]
7011
7197
  )
7012
7198
  )],
7199
+ evaluation_window_sec=123,
7013
7200
  forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
7014
7201
  fallback_behavior="fallbackBehavior",
7015
7202
  header_name="headerName"
@@ -7042,6 +7229,9 @@ class CfnRuleGroup(
7042
7229
  match_scope="matchScope",
7043
7230
  oversize_handling="oversizeHandling"
7044
7231
  ),
7232
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7233
+ fallback_behavior="fallbackBehavior"
7234
+ ),
7045
7235
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7046
7236
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7047
7237
  all=all,
@@ -7121,6 +7311,9 @@ class CfnRuleGroup(
7121
7311
  match_scope="matchScope",
7122
7312
  oversize_handling="oversizeHandling"
7123
7313
  ),
7314
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7315
+ fallback_behavior="fallbackBehavior"
7316
+ ),
7124
7317
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7125
7318
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7126
7319
  all=all,
@@ -7169,6 +7362,9 @@ class CfnRuleGroup(
7169
7362
  match_scope="matchScope",
7170
7363
  oversize_handling="oversizeHandling"
7171
7364
  ),
7365
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7366
+ fallback_behavior="fallbackBehavior"
7367
+ ),
7172
7368
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7173
7369
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7174
7370
  all=all,
@@ -7216,6 +7412,9 @@ class CfnRuleGroup(
7216
7412
  match_scope="matchScope",
7217
7413
  oversize_handling="oversizeHandling"
7218
7414
  ),
7415
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7416
+ fallback_behavior="fallbackBehavior"
7417
+ ),
7219
7418
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7220
7419
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7221
7420
  all=all,
@@ -7263,6 +7462,9 @@ class CfnRuleGroup(
7263
7462
  match_scope="matchScope",
7264
7463
  oversize_handling="oversizeHandling"
7265
7464
  ),
7465
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7466
+ fallback_behavior="fallbackBehavior"
7467
+ ),
7266
7468
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7267
7469
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7268
7470
  all=all,
@@ -7312,6 +7514,9 @@ class CfnRuleGroup(
7312
7514
  match_scope="matchScope",
7313
7515
  oversize_handling="oversizeHandling"
7314
7516
  ),
7517
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
7518
+ fallback_behavior="fallbackBehavior"
7519
+ ),
7315
7520
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7316
7521
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7317
7522
  all=all,
@@ -7342,6 +7547,7 @@ class CfnRuleGroup(
7342
7547
  check_type(argname="argument aggregate_key_type", value=aggregate_key_type, expected_type=type_hints["aggregate_key_type"])
7343
7548
  check_type(argname="argument limit", value=limit, expected_type=type_hints["limit"])
7344
7549
  check_type(argname="argument custom_keys", value=custom_keys, expected_type=type_hints["custom_keys"])
7550
+ check_type(argname="argument evaluation_window_sec", value=evaluation_window_sec, expected_type=type_hints["evaluation_window_sec"])
7345
7551
  check_type(argname="argument forwarded_ip_config", value=forwarded_ip_config, expected_type=type_hints["forwarded_ip_config"])
7346
7552
  check_type(argname="argument scope_down_statement", value=scope_down_statement, expected_type=type_hints["scope_down_statement"])
7347
7553
  self._values: typing.Dict[builtins.str, typing.Any] = {
@@ -7350,6 +7556,8 @@ class CfnRuleGroup(
7350
7556
  }
7351
7557
  if custom_keys is not None:
7352
7558
  self._values["custom_keys"] = custom_keys
7559
+ if evaluation_window_sec is not None:
7560
+ self._values["evaluation_window_sec"] = evaluation_window_sec
7353
7561
  if forwarded_ip_config is not None:
7354
7562
  self._values["forwarded_ip_config"] = forwarded_ip_config
7355
7563
  if scope_down_statement is not None:
@@ -7417,6 +7625,21 @@ class CfnRuleGroup(
7417
7625
  result = self._values.get("custom_keys")
7418
7626
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.RateBasedStatementCustomKeyProperty"]]]], result)
7419
7627
 
7628
+ @builtins.property
7629
+ def evaluation_window_sec(self) -> typing.Optional[jsii.Number]:
7630
+ '''The amount of time, in seconds, that AWS WAF should include in its request counts, looking back from the current time.
7631
+
7632
+ For example, for a setting of 120, when AWS WAF checks the rate, it counts the requests for the 2 minutes immediately preceding the current time. Valid settings are 60, 120, 300, and 600.
7633
+
7634
+ This setting doesn't determine how often AWS WAF checks the rate, but how far back it looks each time it checks. AWS WAF checks the rate about every 10 seconds.
7635
+
7636
+ Default: ``300`` (5 minutes)
7637
+
7638
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatement.html#cfn-wafv2-rulegroup-ratebasedstatement-evaluationwindowsec
7639
+ '''
7640
+ result = self._values.get("evaluation_window_sec")
7641
+ return typing.cast(typing.Optional[jsii.Number], result)
7642
+
7420
7643
  @builtins.property
7421
7644
  def forwarded_ip_config(
7422
7645
  self,
@@ -7951,6 +8174,9 @@ class CfnRuleGroup(
7951
8174
  match_scope="matchScope",
7952
8175
  oversize_handling="oversizeHandling"
7953
8176
  ),
8177
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8178
+ fallback_behavior="fallbackBehavior"
8179
+ ),
7954
8180
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
7955
8181
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
7956
8182
  all=all,
@@ -8102,6 +8328,9 @@ class CfnRuleGroup(
8102
8328
  match_scope="matchScope",
8103
8329
  oversize_handling="oversizeHandling"
8104
8330
  ),
8331
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8332
+ fallback_behavior="fallbackBehavior"
8333
+ ),
8105
8334
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8106
8335
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8107
8336
  all=all,
@@ -8422,6 +8651,9 @@ class CfnRuleGroup(
8422
8651
  match_scope="matchScope",
8423
8652
  oversize_handling="oversizeHandling"
8424
8653
  ),
8654
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8655
+ fallback_behavior="fallbackBehavior"
8656
+ ),
8425
8657
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8426
8658
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8427
8659
  all=all,
@@ -8522,6 +8754,7 @@ class CfnRuleGroup(
8522
8754
  )]
8523
8755
  )
8524
8756
  )],
8757
+ evaluation_window_sec=123,
8525
8758
  forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
8526
8759
  fallback_behavior="fallbackBehavior",
8527
8760
  header_name="headerName"
@@ -8552,6 +8785,9 @@ class CfnRuleGroup(
8552
8785
  match_scope="matchScope",
8553
8786
  oversize_handling="oversizeHandling"
8554
8787
  ),
8788
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8789
+ fallback_behavior="fallbackBehavior"
8790
+ ),
8555
8791
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8556
8792
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8557
8793
  all=all,
@@ -8600,6 +8836,9 @@ class CfnRuleGroup(
8600
8836
  match_scope="matchScope",
8601
8837
  oversize_handling="oversizeHandling"
8602
8838
  ),
8839
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8840
+ fallback_behavior="fallbackBehavior"
8841
+ ),
8603
8842
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8604
8843
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8605
8844
  all=all,
@@ -8647,6 +8886,9 @@ class CfnRuleGroup(
8647
8886
  match_scope="matchScope",
8648
8887
  oversize_handling="oversizeHandling"
8649
8888
  ),
8889
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8890
+ fallback_behavior="fallbackBehavior"
8891
+ ),
8650
8892
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8651
8893
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8652
8894
  all=all,
@@ -8694,6 +8936,9 @@ class CfnRuleGroup(
8694
8936
  match_scope="matchScope",
8695
8937
  oversize_handling="oversizeHandling"
8696
8938
  ),
8939
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8940
+ fallback_behavior="fallbackBehavior"
8941
+ ),
8697
8942
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8698
8943
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8699
8944
  all=all,
@@ -8743,6 +8988,9 @@ class CfnRuleGroup(
8743
8988
  match_scope="matchScope",
8744
8989
  oversize_handling="oversizeHandling"
8745
8990
  ),
8991
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
8992
+ fallback_behavior="fallbackBehavior"
8993
+ ),
8746
8994
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
8747
8995
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
8748
8996
  all=all,
@@ -9085,7 +9333,7 @@ class CfnRuleGroup(
9085
9333
 
9086
9334
  For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes.
9087
9335
 
9088
- If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes of the body up to the limit for the web ACL. By default, for regional web ACLs, this limit is 8 KB (8,192 bytes) and for CloudFront web ACLs, this limit is 16 KB (16,384 bytes). For CloudFront web ACLs, you can increase the limit in the web ACL ``AssociationConfig`` , for additional fees. If you know that the request body for your web requests should never exceed the inspection limit, you could use a size constraint statement to block requests that have a larger request body size.
9336
+ If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes in the body up to the limit for the web ACL and protected resource type. If you know that the request body for your web requests should never exceed the inspection limit, you can use a size constraint statement to block requests that have a larger request body size. For more information about the inspection limits, see ``Body`` and ``JsonBody`` settings for the ``FieldToMatch`` data type.
9089
9337
 
9090
9338
  If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI ``/logo.jpg`` is nine characters long.
9091
9339
 
@@ -9136,6 +9384,9 @@ class CfnRuleGroup(
9136
9384
  match_scope="matchScope",
9137
9385
  oversize_handling="oversizeHandling"
9138
9386
  ),
9387
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9388
+ fallback_behavior="fallbackBehavior"
9389
+ ),
9139
9390
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9140
9391
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9141
9392
  all=all,
@@ -9296,6 +9547,9 @@ class CfnRuleGroup(
9296
9547
  match_scope="matchScope",
9297
9548
  oversize_handling="oversizeHandling"
9298
9549
  ),
9550
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9551
+ fallback_behavior="fallbackBehavior"
9552
+ ),
9299
9553
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9300
9554
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9301
9555
  all=all,
@@ -9435,7 +9689,7 @@ class CfnRuleGroup(
9435
9689
  :param rate_based_statement: A rate-based rule counts incoming requests and rate limits requests when they are coming at too fast a rate. The rule categorizes requests according to your aggregation criteria, collects them into aggregation instances, and counts and rate limits the requests for each instance. .. epigraph:: If you change any of these settings in a rule that's currently in use, the change resets the rule's rate limiting counts. This can pause the rule's rate limiting activities for up to a minute. You can specify individual aggregation keys, like IP address or HTTP method. You can also specify aggregation key combinations, like IP address and HTTP method, or HTTP method, query argument, and cookie. Each unique set of values for the aggregation keys that you specify is a separate aggregation instance, with the value from each key contributing to the aggregation instance definition. For example, assume the rule evaluates web requests with the following IP address and HTTP method values: - IP address 10.1.1.1, HTTP method POST - IP address 10.1.1.1, HTTP method GET - IP address 127.0.0.0, HTTP method POST - IP address 10.1.1.1, HTTP method GET The rule would create different aggregation instances according to your aggregation criteria, for example: - If the aggregation criteria is just the IP address, then each individual address is an aggregation instance, and AWS WAF counts requests separately for each. The aggregation instances and request counts for our example would be the following: - IP address 10.1.1.1: count 3 - IP address 127.0.0.0: count 1 - If the aggregation criteria is HTTP method, then each individual HTTP method is an aggregation instance. The aggregation instances and request counts for our example would be the following: - HTTP method POST: count 2 - HTTP method GET: count 2 - If the aggregation criteria is IP address and HTTP method, then each IP address and each HTTP method would contribute to the combined aggregation instance. The aggregation instances and request counts for our example would be the following: - IP address 10.1.1.1, HTTP method POST: count 1 - IP address 10.1.1.1, HTTP method GET: count 2 - IP address 127.0.0.0, HTTP method POST: count 1 For any n-tuple of aggregation keys, each unique combination of values for the keys defines a separate aggregation instance, which AWS WAF counts and rate-limits individually. You can optionally nest another statement inside the rate-based statement, to narrow the scope of the rule so that it only counts and rate limits requests that match the nested statement. You can use this nested scope-down statement in conjunction with your aggregation key specifications or you can just count and rate limit all requests that match the scope-down statement, without additional aggregation. When you choose to just manage all requests that match a scope-down statement, the aggregation instance is singular for the rule. You cannot nest a ``RateBasedStatement`` inside another statement, for example inside a ``NotStatement`` or ``OrStatement`` . You can define a ``RateBasedStatement`` inside a web ACL and inside a rule group. For additional information about the options, see `Rate limiting web requests using rate-based rules <https://docs.aws.amazon.com/waf/latest/developerguide/waf-rate-based-rules.html>`_ in the *AWS WAF Developer Guide* . If you only aggregate on the individual IP address or forwarded IP address, you can retrieve the list of IP addresses that AWS WAF is currently rate limiting for a rule through the API call ``GetRateBasedStatementManagedKeys`` . This option is not available for other aggregation configurations. AWS WAF tracks and manages web requests separately for each instance of a rate-based rule that you use. For example, if you provide the same rate-based rule settings in two web ACLs, each of the two rule statements represents a separate instance of the rate-based rule and gets its own tracking and management by AWS WAF . If you define a rate-based rule inside a rule group, and then use that rule group in multiple places, each use creates a separate instance of the rate-based rule that gets its own tracking and management by AWS WAF .
9436
9690
  :param regex_match_statement: A rule statement used to search web request components for a match against a single regular expression.
9437
9691
  :param regex_pattern_set_reference_statement: A rule statement used to search web request components for matches with regular expressions. To use this, create a ``RegexPatternSet`` that specifies the expressions that you want to detect, then use the ARN of that set in this statement. A web request matches the pattern set rule statement if the request component matches any of the patterns in the set. Each regex pattern set rule statement references a regex pattern set. You create and maintain the set independent of your rules. This allows you to use the single set in multiple rules. When you update the referenced set, AWS WAF automatically updates all rules that reference it.
9438
- :param size_constraint_statement: A rule statement that compares a number of bytes against the size of a request component, using a comparison operator, such as greater than (>) or less than (<). For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes. If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes of the body up to the limit for the web ACL. By default, for regional web ACLs, this limit is 8 KB (8,192 bytes) and for CloudFront web ACLs, this limit is 16 KB (16,384 bytes). For CloudFront web ACLs, you can increase the limit in the web ACL ``AssociationConfig`` , for additional fees. If you know that the request body for your web requests should never exceed the inspection limit, you could use a size constraint statement to block requests that have a larger request body size. If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI ``/logo.jpg`` is nine characters long.
9692
+ :param size_constraint_statement: A rule statement that compares a number of bytes against the size of a request component, using a comparison operator, such as greater than (>) or less than (<). For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes. If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes in the body up to the limit for the web ACL and protected resource type. If you know that the request body for your web requests should never exceed the inspection limit, you can use a size constraint statement to block requests that have a larger request body size. For more information about the inspection limits, see ``Body`` and ``JsonBody`` settings for the ``FieldToMatch`` data type. If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI ``/logo.jpg`` is nine characters long.
9439
9693
  :param sqli_match_statement: A rule statement that inspects for malicious SQL code. Attackers insert malicious SQL code into web requests to do things like modify your database or extract data from it.
9440
9694
  :param xss_match_statement: A rule statement that inspects for cross-site scripting (XSS) attacks. In XSS attacks, the attacker uses vulnerabilities in a benign website as a vehicle to inject malicious client-site scripts into other legitimate web browsers.
9441
9695
 
@@ -9488,6 +9742,9 @@ class CfnRuleGroup(
9488
9742
  match_scope="matchScope",
9489
9743
  oversize_handling="oversizeHandling"
9490
9744
  ),
9745
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9746
+ fallback_behavior="fallbackBehavior"
9747
+ ),
9491
9748
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9492
9749
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9493
9750
  all=all,
@@ -9588,6 +9845,7 @@ class CfnRuleGroup(
9588
9845
  )]
9589
9846
  )
9590
9847
  )],
9848
+ evaluation_window_sec=123,
9591
9849
  forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
9592
9850
  fallback_behavior="fallbackBehavior",
9593
9851
  header_name="headerName"
@@ -9618,6 +9876,9 @@ class CfnRuleGroup(
9618
9876
  match_scope="matchScope",
9619
9877
  oversize_handling="oversizeHandling"
9620
9878
  ),
9879
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9880
+ fallback_behavior="fallbackBehavior"
9881
+ ),
9621
9882
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9622
9883
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9623
9884
  all=all,
@@ -9666,6 +9927,9 @@ class CfnRuleGroup(
9666
9927
  match_scope="matchScope",
9667
9928
  oversize_handling="oversizeHandling"
9668
9929
  ),
9930
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9931
+ fallback_behavior="fallbackBehavior"
9932
+ ),
9669
9933
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9670
9934
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9671
9935
  all=all,
@@ -9713,6 +9977,9 @@ class CfnRuleGroup(
9713
9977
  match_scope="matchScope",
9714
9978
  oversize_handling="oversizeHandling"
9715
9979
  ),
9980
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
9981
+ fallback_behavior="fallbackBehavior"
9982
+ ),
9716
9983
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9717
9984
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9718
9985
  all=all,
@@ -9760,6 +10027,9 @@ class CfnRuleGroup(
9760
10027
  match_scope="matchScope",
9761
10028
  oversize_handling="oversizeHandling"
9762
10029
  ),
10030
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
10031
+ fallback_behavior="fallbackBehavior"
10032
+ ),
9763
10033
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9764
10034
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9765
10035
  all=all,
@@ -9809,6 +10079,9 @@ class CfnRuleGroup(
9809
10079
  match_scope="matchScope",
9810
10080
  oversize_handling="oversizeHandling"
9811
10081
  ),
10082
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
10083
+ fallback_behavior="fallbackBehavior"
10084
+ ),
9812
10085
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
9813
10086
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
9814
10087
  all=all,
@@ -10066,7 +10339,7 @@ class CfnRuleGroup(
10066
10339
 
10067
10340
  For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes.
10068
10341
 
10069
- If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes of the body up to the limit for the web ACL. By default, for regional web ACLs, this limit is 8 KB (8,192 bytes) and for CloudFront web ACLs, this limit is 16 KB (16,384 bytes). For CloudFront web ACLs, you can increase the limit in the web ACL ``AssociationConfig`` , for additional fees. If you know that the request body for your web requests should never exceed the inspection limit, you could use a size constraint statement to block requests that have a larger request body size.
10342
+ If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes in the body up to the limit for the web ACL and protected resource type. If you know that the request body for your web requests should never exceed the inspection limit, you can use a size constraint statement to block requests that have a larger request body size. For more information about the inspection limits, see ``Body`` and ``JsonBody`` settings for the ``FieldToMatch`` data type.
10070
10343
 
10071
10344
  If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI ``/logo.jpg`` is nine characters long.
10072
10345
 
@@ -10201,7 +10474,7 @@ class CfnRuleGroup(
10201
10474
 
10202
10475
  :param cloud_watch_metrics_enabled: Indicates whether the associated resource sends metrics to Amazon CloudWatch. For the list of available metrics, see `AWS WAF Metrics <https://docs.aws.amazon.com/waf/latest/developerguide/monitoring-cloudwatch.html#waf-metrics>`_ in the *AWS WAF Developer Guide* . For web ACLs, the metrics are for web requests that have the web ACL default action applied. AWS WAF applies the default action to web requests that pass the inspection of all rules in the web ACL without being either allowed or blocked. For more information, see `The web ACL default action <https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-default-action.html>`_ in the *AWS WAF Developer Guide* .
10203
10476
  :param metric_name: A name of the Amazon CloudWatch metric dimension. The name can contain only the characters: A-Z, a-z, 0-9, - (hyphen), and _ (underscore). The name can be from one to 128 characters long. It can't contain whitespace or metric names that are reserved for AWS WAF , for example ``All`` and ``Default_Action`` .
10204
- :param sampled_requests_enabled: Indicates whether AWS WAF should store a sampling of the web requests that match the rules. You can view the sampled requests through the AWS WAF console.
10477
+ :param sampled_requests_enabled: Indicates whether AWS WAF should store a sampling of the web requests that match the rules. You can view the sampled requests through the AWS WAF console. .. epigraph:: Request sampling doesn't provide a field redaction option, and any field redaction that you specify in your logging configuration doesn't affect sampling. The only way to exclude fields from request sampling is by disabling sampling in the web ACL visibility configuration.
10205
10478
 
10206
10479
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-visibilityconfig.html
10207
10480
  :exampleMetadata: fixture=_generated
@@ -10265,6 +10538,9 @@ class CfnRuleGroup(
10265
10538
  '''Indicates whether AWS WAF should store a sampling of the web requests that match the rules.
10266
10539
 
10267
10540
  You can view the sampled requests through the AWS WAF console.
10541
+ .. epigraph::
10542
+
10543
+ Request sampling doesn't provide a field redaction option, and any field redaction that you specify in your logging configuration doesn't affect sampling. The only way to exclude fields from request sampling is by disabling sampling in the web ACL visibility configuration.
10268
10544
 
10269
10545
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-visibilityconfig.html#cfn-wafv2-rulegroup-visibilityconfig-sampledrequestsenabled
10270
10546
  '''
@@ -10346,6 +10622,9 @@ class CfnRuleGroup(
10346
10622
  match_scope="matchScope",
10347
10623
  oversize_handling="oversizeHandling"
10348
10624
  ),
10625
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
10626
+ fallback_behavior="fallbackBehavior"
10627
+ ),
10349
10628
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10350
10629
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10351
10630
  all=all,
@@ -10541,6 +10820,9 @@ class CfnRuleGroupProps:
10541
10820
  match_scope="matchScope",
10542
10821
  oversize_handling="oversizeHandling"
10543
10822
  ),
10823
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
10824
+ fallback_behavior="fallbackBehavior"
10825
+ ),
10544
10826
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10545
10827
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10546
10828
  all=all,
@@ -10641,6 +10923,7 @@ class CfnRuleGroupProps:
10641
10923
  )]
10642
10924
  )
10643
10925
  )],
10926
+ evaluation_window_sec=123,
10644
10927
  forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
10645
10928
  fallback_behavior="fallbackBehavior",
10646
10929
  header_name="headerName"
@@ -10671,6 +10954,9 @@ class CfnRuleGroupProps:
10671
10954
  match_scope="matchScope",
10672
10955
  oversize_handling="oversizeHandling"
10673
10956
  ),
10957
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
10958
+ fallback_behavior="fallbackBehavior"
10959
+ ),
10674
10960
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10675
10961
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10676
10962
  all=all,
@@ -10719,6 +11005,9 @@ class CfnRuleGroupProps:
10719
11005
  match_scope="matchScope",
10720
11006
  oversize_handling="oversizeHandling"
10721
11007
  ),
11008
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
11009
+ fallback_behavior="fallbackBehavior"
11010
+ ),
10722
11011
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10723
11012
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10724
11013
  all=all,
@@ -10766,6 +11055,9 @@ class CfnRuleGroupProps:
10766
11055
  match_scope="matchScope",
10767
11056
  oversize_handling="oversizeHandling"
10768
11057
  ),
11058
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
11059
+ fallback_behavior="fallbackBehavior"
11060
+ ),
10769
11061
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10770
11062
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10771
11063
  all=all,
@@ -10813,6 +11105,9 @@ class CfnRuleGroupProps:
10813
11105
  match_scope="matchScope",
10814
11106
  oversize_handling="oversizeHandling"
10815
11107
  ),
11108
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
11109
+ fallback_behavior="fallbackBehavior"
11110
+ ),
10816
11111
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10817
11112
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10818
11113
  all=all,
@@ -10862,6 +11157,9 @@ class CfnRuleGroupProps:
10862
11157
  match_scope="matchScope",
10863
11158
  oversize_handling="oversizeHandling"
10864
11159
  ),
11160
+ ja3_fingerprint=wafv2.CfnRuleGroup.JA3FingerprintProperty(
11161
+ fallback_behavior="fallbackBehavior"
11162
+ ),
10865
11163
  json_body=wafv2.CfnRuleGroup.JsonBodyProperty(
10866
11164
  match_pattern=wafv2.CfnRuleGroup.JsonMatchPatternProperty(
10867
11165
  all=all,
@@ -11157,7 +11455,7 @@ class CfnWebACL(
11157
11455
  :param default_action: The action to perform if none of the ``Rules`` contained in the ``WebACL`` match.
11158
11456
  :param scope: Specifies whether this is for an Amazon CloudFront distribution or for a regional application. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AWS AppSync GraphQL API, an Amazon Cognito user pool, an AWS App Runner service, or an AWS Verified Access instance. Valid Values are ``CLOUDFRONT`` and ``REGIONAL`` . .. epigraph:: For ``CLOUDFRONT`` , you must create your WAFv2 resources in the US East (N. Virginia) Region, ``us-east-1`` . For information about how to define the association of the web ACL with your resource, see ``WebACLAssociation`` .
11159
11457
  :param visibility_config: Defines and enables Amazon CloudWatch metrics and web request sample collection.
11160
- :param association_config: Specifies custom configurations for the associations between the web ACL and protected resources. Use this to customize the maximum size of the request body that your protected CloudFront distributions forward to AWS WAF for inspection. The default is 16 KB (16,384 bytes). .. epigraph:: You are charged additional fees when your protected resources forward body sizes that are larger than the default. For more information, see `AWS WAF Pricing <https://docs.aws.amazon.com/waf/pricing/>`_ .
11458
+ :param association_config: Specifies custom configurations for the associations between the web ACL and protected resources. Use this to customize the maximum size of the request body that your protected resources forward to AWS WAF for inspection. You can customize this setting for CloudFront, API Gateway, Amazon Cognito, App Runner, or Verified Access resources. The default setting is 16 KB (16,384 bytes). .. epigraph:: You are charged additional fees when your protected resources forward body sizes that are larger than the default. For more information, see `AWS WAF Pricing <https://docs.aws.amazon.com/waf/pricing/>`_ . For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
11161
11459
  :param captcha_config: Specifies how AWS WAF should handle ``CAPTCHA`` evaluations for rules that don't have their own ``CaptchaConfig`` settings. If you don't specify this, AWS WAF uses its default settings for ``CaptchaConfig`` .
11162
11460
  :param challenge_config: Specifies how AWS WAF should handle challenge evaluations for rules that don't have their own ``ChallengeConfig`` settings. If you don't specify this, AWS WAF uses its default settings for ``ChallengeConfig`` .
11163
11461
  :param custom_response_bodies: A map of custom response keys and content bodies. When you create a rule with a block action, you can send a custom response to the web request. You define these for the web ACL, and then use them in the rules and default actions that you define in the web ACL. For information about customizing web requests and responses, see `Customizing web requests and responses in AWS WAF <https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html>`_ in the *AWS WAF Developer Guide* . For information about the limits on count and size for custom request and response settings, see `AWS WAF quotas <https://docs.aws.amazon.com/waf/latest/developerguide/limits.html>`_ in the *AWS WAF Developer Guide* .
@@ -12028,12 +12326,14 @@ class CfnWebACL(
12028
12326
  ) -> None:
12029
12327
  '''Specifies custom configurations for the associations between the web ACL and protected resources.
12030
12328
 
12031
- Use this to customize the maximum size of the request body that your protected CloudFront distributions forward to AWS WAF for inspection. The default is 16 KB (16,384 bytes).
12329
+ Use this to customize the maximum size of the request body that your protected resources forward to AWS WAF for inspection. You can customize this setting for CloudFront, API Gateway, Amazon Cognito, App Runner, or Verified Access resources. The default setting is 16 KB (16,384 bytes).
12032
12330
  .. epigraph::
12033
12331
 
12034
12332
  You are charged additional fees when your protected resources forward body sizes that are larger than the default. For more information, see `AWS WAF Pricing <https://docs.aws.amazon.com/waf/pricing/>`_ .
12035
12333
 
12036
- :param request_body: Customizes the maximum size of the request body that your protected CloudFront distributions forward to AWS WAF for inspection. The default size is 16 KB (16,384 bytes). .. epigraph:: You are charged additional fees when your protected resources forward body sizes that are larger than the default. For more information, see `AWS WAF Pricing <https://docs.aws.amazon.com/waf/pricing/>`_ .
12334
+ For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
12335
+
12336
+ :param request_body: Customizes the maximum size of the request body that your protected CloudFront, API Gateway, Amazon Cognito, App Runner, and Verified Access resources forward to AWS WAF for inspection. The default size is 16 KB (16,384 bytes). You can change the setting for any of the available resource types. .. epigraph:: You are charged additional fees when your protected resources forward body sizes that are larger than the default. For more information, see `AWS WAF Pricing <https://docs.aws.amazon.com/waf/pricing/>`_ . Example JSON: ``{ "API_GATEWAY": "KB_48", "APP_RUNNER_SERVICE": "KB_32" }`` For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
12037
12337
 
12038
12338
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-associationconfig.html
12039
12339
  :exampleMetadata: fixture=_generated
@@ -12063,13 +12363,17 @@ class CfnWebACL(
12063
12363
  def request_body(
12064
12364
  self,
12065
12365
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Mapping[builtins.str, typing.Union[_IResolvable_da3f097b, "CfnWebACL.RequestBodyAssociatedResourceTypeConfigProperty"]]]]:
12066
- '''Customizes the maximum size of the request body that your protected CloudFront distributions forward to AWS WAF for inspection.
12366
+ '''Customizes the maximum size of the request body that your protected CloudFront, API Gateway, Amazon Cognito, App Runner, and Verified Access resources forward to AWS WAF for inspection.
12067
12367
 
12068
- The default size is 16 KB (16,384 bytes).
12368
+ The default size is 16 KB (16,384 bytes). You can change the setting for any of the available resource types.
12069
12369
  .. epigraph::
12070
12370
 
12071
12371
  You are charged additional fees when your protected resources forward body sizes that are larger than the default. For more information, see `AWS WAF Pricing <https://docs.aws.amazon.com/waf/pricing/>`_ .
12072
12372
 
12373
+ Example JSON: ``{ "API_GATEWAY": "KB_48", "APP_RUNNER_SERVICE": "KB_32" }``
12374
+
12375
+ For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
12376
+
12073
12377
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-associationconfig.html#cfn-wafv2-webacl-associationconfig-requestbody
12074
12378
  '''
12075
12379
  result = self._values.get("request_body")
@@ -12171,7 +12475,7 @@ class CfnWebACL(
12171
12475
 
12172
12476
  This is used to indicate the web request component to inspect, in the ``FieldToMatch`` specification.
12173
12477
 
12174
- :param oversize_handling: What AWS WAF should do if the body is larger than AWS WAF can inspect. AWS WAF does not support inspecting the entire contents of the web request body if the body exceeds the limit for the resource type. If the body is larger than the limit, the underlying host service only forwards the contents that are below the limit to AWS WAF for inspection. The default limit is 8 KB (8,192 bytes) for regional resources and 16 KB (16,384 bytes) for CloudFront distributions. For CloudFront distributions, you can increase the limit in the web ACL ``AssociationConfig`` , for additional processing fees. The options for oversize handling are the following: - ``CONTINUE`` - Inspect the available body contents normally, according to the rule inspection criteria. - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement. You can combine the ``MATCH`` or ``NO_MATCH`` settings for oversize handling with your rule and web ACL action settings, so that you block any request whose body is over the limit. Default: ``CONTINUE``
12478
+ :param oversize_handling: What AWS WAF should do if the body is larger than AWS WAF can inspect. 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. The options for oversize handling are the following: - ``CONTINUE`` - Inspect the available body contents normally, according to the rule inspection criteria. - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement. You can combine the ``MATCH`` or ``NO_MATCH`` settings for oversize handling with your rule and web ACL action settings, so that you block any request whose body is over the limit. Default: ``CONTINUE``
12175
12479
 
12176
12480
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-body.html
12177
12481
  :exampleMetadata: fixture=_generated
@@ -12197,9 +12501,10 @@ class CfnWebACL(
12197
12501
  def oversize_handling(self) -> typing.Optional[builtins.str]:
12198
12502
  '''What AWS WAF should do if the body is larger than AWS WAF can inspect.
12199
12503
 
12200
- AWS WAF does not support inspecting the entire contents of the web request body if the body exceeds the limit for the resource type. If the body is larger than the limit, the underlying host service only forwards the contents that are below the limit to AWS WAF for inspection.
12504
+ 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.
12201
12505
 
12202
- The default limit is 8 KB (8,192 bytes) for regional resources and 16 KB (16,384 bytes) for CloudFront distributions. For CloudFront distributions, you can increase the limit in the web ACL ``AssociationConfig`` , for additional processing fees.
12506
+ - For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
12507
+ - 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.
12203
12508
 
12204
12509
  The options for oversize handling are the following:
12205
12510
 
@@ -12299,6 +12604,9 @@ class CfnWebACL(
12299
12604
  match_scope="matchScope",
12300
12605
  oversize_handling="oversizeHandling"
12301
12606
  ),
12607
+ ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
12608
+ fallback_behavior="fallbackBehavior"
12609
+ ),
12302
12610
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
12303
12611
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
12304
12612
  all=all,
@@ -13549,6 +13857,7 @@ class CfnWebACL(
13549
13857
  "body": "body",
13550
13858
  "cookies": "cookies",
13551
13859
  "headers": "headers",
13860
+ "ja3_fingerprint": "ja3Fingerprint",
13552
13861
  "json_body": "jsonBody",
13553
13862
  "method": "method",
13554
13863
  "query_string": "queryString",
@@ -13565,6 +13874,7 @@ class CfnWebACL(
13565
13874
  body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.BodyProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
13566
13875
  cookies: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.CookiesProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
13567
13876
  headers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.HeadersProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
13877
+ ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.JA3FingerprintProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
13568
13878
  json_body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.JsonBodyProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
13569
13879
  method: typing.Any = None,
13570
13880
  query_string: typing.Any = None,
@@ -13587,12 +13897,14 @@ class CfnWebACL(
13587
13897
  - In a logging configuration, this is used in the ``RedactedFields`` property to specify a field to redact from the logging records. For this use case, note the following:
13588
13898
  - Even though all ``FieldToMatch`` settings are available, the only valid settings for field redaction are ``UriPath`` , ``QueryString`` , ``SingleHeader`` , and ``Method`` .
13589
13899
  - In this documentation, the descriptions of the individual fields talk about specifying the web request component to inspect, but for field redaction, you are specifying the component type to redact from the logs.
13900
+ - If you have request sampling enabled, the redacted fields configuration for logging has no impact on sampling. The only way to exclude fields from request sampling is by disabling sampling in the web ACL visibility configuration.
13590
13901
 
13591
13902
  :param all_query_arguments: Inspect all query arguments.
13592
- :param body: Inspect the request body as plain text. 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. A limited amount of the request body is forwarded to AWS WAF for inspection by the underlying host service. For regional resources, the limit is 8 KB (8,192 bytes) and for CloudFront distributions, the limit is 16 KB (16,384 bytes). For CloudFront distributions, you can increase the limit in the web ACL's ``AssociationConfig`` , for additional processing fees. For information about how to handle oversized request bodies, see the ``Body`` object configuration.
13903
+ :param body: Inspect the request body as plain text. 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 ``Body`` object configuration.
13593
13904
  :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.
13594
13905
  :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.
13595
- :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. A limited amount of the request body is forwarded to AWS WAF for inspection by the underlying host service. For regional resources, the limit is 8 KB (8,192 bytes) and for CloudFront distributions, the limit is 16 KB (16,384 bytes). For CloudFront distributions, you can increase the limit in the web ACL's ``AssociationConfig`` , for additional processing fees. For information about how to handle oversized request bodies, see the ``JsonBody`` object configuration.
13906
+ :param ja3_fingerprint: 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.
13907
+ :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.
13596
13908
  :param method: Inspect the HTTP method. The method indicates the type of operation that the request is asking the origin to perform.
13597
13909
  :param query_string: Inspect the query string. This is the part of a URL that appears after a ``?`` character, if any.
13598
13910
  :param single_header: Inspect a single header. Provide the name of the header to inspect, for example, ``User-Agent`` or ``Referer`` . This setting isn't case sensitive. Example JSON: ``"SingleHeader": { "Name": "haystack" }`` Alternately, you can filter and inspect all headers with the ``Headers`` ``FieldToMatch`` setting.
@@ -13639,6 +13951,9 @@ class CfnWebACL(
13639
13951
  match_scope="matchScope",
13640
13952
  oversize_handling="oversizeHandling"
13641
13953
  ),
13954
+ ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
13955
+ fallback_behavior="fallbackBehavior"
13956
+ ),
13642
13957
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
13643
13958
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
13644
13959
  all=all,
@@ -13663,6 +13978,7 @@ class CfnWebACL(
13663
13978
  check_type(argname="argument body", value=body, expected_type=type_hints["body"])
13664
13979
  check_type(argname="argument cookies", value=cookies, expected_type=type_hints["cookies"])
13665
13980
  check_type(argname="argument headers", value=headers, expected_type=type_hints["headers"])
13981
+ check_type(argname="argument ja3_fingerprint", value=ja3_fingerprint, expected_type=type_hints["ja3_fingerprint"])
13666
13982
  check_type(argname="argument json_body", value=json_body, expected_type=type_hints["json_body"])
13667
13983
  check_type(argname="argument method", value=method, expected_type=type_hints["method"])
13668
13984
  check_type(argname="argument query_string", value=query_string, expected_type=type_hints["query_string"])
@@ -13678,6 +13994,8 @@ class CfnWebACL(
13678
13994
  self._values["cookies"] = cookies
13679
13995
  if headers is not None:
13680
13996
  self._values["headers"] = headers
13997
+ if ja3_fingerprint is not None:
13998
+ self._values["ja3_fingerprint"] = ja3_fingerprint
13681
13999
  if json_body is not None:
13682
14000
  self._values["json_body"] = json_body
13683
14001
  if method is not None:
@@ -13708,7 +14026,10 @@ class CfnWebACL(
13708
14026
 
13709
14027
  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.
13710
14028
 
13711
- A limited amount of the request body is forwarded to AWS WAF for inspection by the underlying host service. For regional resources, the limit is 8 KB (8,192 bytes) and for CloudFront distributions, the limit is 16 KB (16,384 bytes). For CloudFront distributions, you can increase the limit in the web ACL's ``AssociationConfig`` , for additional processing fees.
14029
+ 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.
14030
+
14031
+ - For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
14032
+ - 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.
13712
14033
 
13713
14034
  For information about how to handle oversized request bodies, see the ``Body`` object configuration.
13714
14035
 
@@ -13747,6 +14068,26 @@ class CfnWebACL(
13747
14068
  result = self._values.get("headers")
13748
14069
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.HeadersProperty"]], result)
13749
14070
 
14071
+ @builtins.property
14072
+ def ja3_fingerprint(
14073
+ self,
14074
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.JA3FingerprintProperty"]]:
14075
+ '''Match against the request's JA3 fingerprint.
14076
+
14077
+ 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.
14078
+ .. epigraph::
14079
+
14080
+ You can use this choice only with a string match ``ByteMatchStatement`` with the ``PositionalConstraint`` set to ``EXACTLY`` .
14081
+
14082
+ 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* .
14083
+
14084
+ 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.
14085
+
14086
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-ja3fingerprint
14087
+ '''
14088
+ result = self._values.get("ja3_fingerprint")
14089
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.JA3FingerprintProperty"]], result)
14090
+
13750
14091
  @builtins.property
13751
14092
  def json_body(
13752
14093
  self,
@@ -13755,7 +14096,10 @@ class CfnWebACL(
13755
14096
 
13756
14097
  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.
13757
14098
 
13758
- A limited amount of the request body is forwarded to AWS WAF for inspection by the underlying host service. For regional resources, the limit is 8 KB (8,192 bytes) and for CloudFront distributions, the limit is 16 KB (16,384 bytes). For CloudFront distributions, you can increase the limit in the web ACL's ``AssociationConfig`` , for additional processing fees.
14099
+ 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.
14100
+
14101
+ - For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
14102
+ - 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.
13759
14103
 
13760
14104
  For information about how to handle oversized request bodies, see the ``JsonBody`` object configuration.
13761
14105
 
@@ -14516,6 +14860,72 @@ class CfnWebACL(
14516
14860
  k + "=" + repr(v) for k, v in self._values.items()
14517
14861
  )
14518
14862
 
14863
+ @jsii.data_type(
14864
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.JA3FingerprintProperty",
14865
+ jsii_struct_bases=[],
14866
+ name_mapping={"fallback_behavior": "fallbackBehavior"},
14867
+ )
14868
+ class JA3FingerprintProperty:
14869
+ def __init__(self, *, fallback_behavior: builtins.str) -> None:
14870
+ '''Match against the request's JA3 fingerprint.
14871
+
14872
+ 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.
14873
+ .. epigraph::
14874
+
14875
+ You can use this choice only with a string match ``ByteMatchStatement`` with the ``PositionalConstraint`` set to ``EXACTLY`` .
14876
+
14877
+ 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* .
14878
+
14879
+ 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.
14880
+
14881
+ :param fallback_behavior: The match status to assign to the web request if the request doesn't have a JA3 fingerprint. You can specify the following fallback behaviors: - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement.
14882
+
14883
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ja3fingerprint.html
14884
+ :exampleMetadata: fixture=_generated
14885
+
14886
+ Example::
14887
+
14888
+ # The code below shows an example of how to instantiate this type.
14889
+ # The values are placeholders you should change.
14890
+ from aws_cdk import aws_wafv2 as wafv2
14891
+
14892
+ j_a3_fingerprint_property = wafv2.CfnWebACL.JA3FingerprintProperty(
14893
+ fallback_behavior="fallbackBehavior"
14894
+ )
14895
+ '''
14896
+ if __debug__:
14897
+ type_hints = typing.get_type_hints(_typecheckingstub__129b51143b193ce4679091a559f9a4073c03a2bccc1ccb884fe1b4dd3856119e)
14898
+ check_type(argname="argument fallback_behavior", value=fallback_behavior, expected_type=type_hints["fallback_behavior"])
14899
+ self._values: typing.Dict[builtins.str, typing.Any] = {
14900
+ "fallback_behavior": fallback_behavior,
14901
+ }
14902
+
14903
+ @builtins.property
14904
+ def fallback_behavior(self) -> builtins.str:
14905
+ '''The match status to assign to the web request if the request doesn't have a JA3 fingerprint.
14906
+
14907
+ You can specify the following fallback behaviors:
14908
+
14909
+ - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request.
14910
+ - ``NO_MATCH`` - Treat the web request as not matching the rule statement.
14911
+
14912
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ja3fingerprint.html#cfn-wafv2-webacl-ja3fingerprint-fallbackbehavior
14913
+ '''
14914
+ result = self._values.get("fallback_behavior")
14915
+ assert result is not None, "Required property 'fallback_behavior' is missing"
14916
+ return typing.cast(builtins.str, result)
14917
+
14918
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
14919
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
14920
+
14921
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
14922
+ return not (rhs == self)
14923
+
14924
+ def __repr__(self) -> str:
14925
+ return "JA3FingerprintProperty(%s)" % ", ".join(
14926
+ k + "=" + repr(v) for k, v in self._values.items()
14927
+ )
14928
+
14519
14929
  @jsii.data_type(
14520
14930
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.JsonBodyProperty",
14521
14931
  jsii_struct_bases=[],
@@ -14546,7 +14956,7 @@ class CfnWebACL(
14546
14956
  :param match_pattern: The patterns to look for in the JSON body. AWS WAF inspects the results of these pattern matches against the rule inspection criteria.
14547
14957
  :param match_scope: The parts of the JSON to match against using the ``MatchPattern`` . If you specify ``ALL`` , AWS WAF matches against keys and values. ``All`` does not require a match to be found in the keys and a match to be found in the values. It requires a match to be found in the keys or the values or both. To require a match in the keys and in the values, use a logical ``AND`` statement to combine two match rules, one that inspects the keys and another that inspects the values.
14548
14958
  :param invalid_fallback_behavior: What AWS WAF should do if it fails to completely parse the JSON body. The options are the following:. - ``EVALUATE_AS_STRING`` - Inspect the body as plain text. AWS WAF applies the text transformations and inspection criteria that you defined for the JSON inspection to the body text string. - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement. If you don't provide this setting, AWS WAF parses and evaluates the content only up to the first parsing failure that it encounters. AWS WAF does its best to parse the entire JSON body, but might be forced to stop for reasons such as invalid characters, duplicate keys, truncation, and any content whose root node isn't an object or an array. AWS WAF parses the JSON in the following examples as two valid key, value pairs: - Missing comma: ``{"key1":"value1""key2":"value2"}`` - Missing colon: ``{"key1":"value1","key2""value2"}`` - Extra colons: ``{"key1"::"value1","key2""value2"}``
14549
- :param oversize_handling: What AWS WAF should do if the body is larger than AWS WAF can inspect. AWS WAF does not support inspecting the entire contents of the web request body if the body exceeds the limit for the resource type. If the body is larger than the limit, the underlying host service only forwards the contents that are below the limit to AWS WAF for inspection. The default limit is 8 KB (8,192 bytes) for regional resources and 16 KB (16,384 bytes) for CloudFront distributions. For CloudFront distributions, you can increase the limit in the web ACL ``AssociationConfig`` , for additional processing fees. The options for oversize handling are the following: - ``CONTINUE`` - Inspect the available body contents normally, according to the rule inspection criteria. - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement. You can combine the ``MATCH`` or ``NO_MATCH`` settings for oversize handling with your rule and web ACL action settings, so that you block any request whose body is over the limit. Default: ``CONTINUE``
14959
+ :param oversize_handling: What AWS WAF should do if the body is larger than AWS WAF can inspect. 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. The options for oversize handling are the following: - ``CONTINUE`` - Inspect the available body contents normally, according to the rule inspection criteria. - ``MATCH`` - Treat the web request as matching the rule statement. AWS WAF applies the rule action to the request. - ``NO_MATCH`` - Treat the web request as not matching the rule statement. You can combine the ``MATCH`` or ``NO_MATCH`` settings for oversize handling with your rule and web ACL action settings, so that you block any request whose body is over the limit. Default: ``CONTINUE``
14550
14960
 
14551
14961
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-jsonbody.html
14552
14962
  :exampleMetadata: fixture=_generated
@@ -14641,9 +15051,10 @@ class CfnWebACL(
14641
15051
  def oversize_handling(self) -> typing.Optional[builtins.str]:
14642
15052
  '''What AWS WAF should do if the body is larger than AWS WAF can inspect.
14643
15053
 
14644
- AWS WAF does not support inspecting the entire contents of the web request body if the body exceeds the limit for the resource type. If the body is larger than the limit, the underlying host service only forwards the contents that are below the limit to AWS WAF for inspection.
15054
+ 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.
14645
15055
 
14646
- The default limit is 8 KB (8,192 bytes) for regional resources and 16 KB (16,384 bytes) for CloudFront distributions. For CloudFront distributions, you can increase the limit in the web ACL ``AssociationConfig`` , for additional processing fees.
15056
+ - For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
15057
+ - 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.
14647
15058
 
14648
15059
  The options for oversize handling are the following:
14649
15060
 
@@ -15804,6 +16215,7 @@ class CfnWebACL(
15804
16215
  "aggregate_key_type": "aggregateKeyType",
15805
16216
  "limit": "limit",
15806
16217
  "custom_keys": "customKeys",
16218
+ "evaluation_window_sec": "evaluationWindowSec",
15807
16219
  "forwarded_ip_config": "forwardedIpConfig",
15808
16220
  "scope_down_statement": "scopeDownStatement",
15809
16221
  },
@@ -15815,6 +16227,7 @@ class CfnWebACL(
15815
16227
  aggregate_key_type: builtins.str,
15816
16228
  limit: jsii.Number,
15817
16229
  custom_keys: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RateBasedStatementCustomKeyProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
16230
+ evaluation_window_sec: typing.Optional[jsii.Number] = None,
15818
16231
  forwarded_ip_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.ForwardedIPConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
15819
16232
  scope_down_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.StatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
15820
16233
  ) -> None:
@@ -15864,6 +16277,7 @@ class CfnWebACL(
15864
16277
  :param aggregate_key_type: Setting that indicates how to aggregate the request counts. .. epigraph:: Web requests that are missing any of the components specified in the aggregation keys are omitted from the rate-based rule evaluation and handling. - ``CONSTANT`` - Count and limit the requests that match the rate-based rule's scope-down statement. With this option, the counted requests aren't further aggregated. The scope-down statement is the only specification used. When the count of all requests that satisfy the scope-down statement goes over the limit, AWS WAF applies the rule action to all requests that satisfy the scope-down statement. With this option, you must configure the ``ScopeDownStatement`` property. - ``CUSTOM_KEYS`` - Aggregate the request counts using one or more web request components as the aggregate keys. With this option, you must specify the aggregate keys in the ``CustomKeys`` property. To aggregate on only the IP address or only the forwarded IP address, don't use custom keys. Instead, set the aggregate key type to ``IP`` or ``FORWARDED_IP`` . - ``FORWARDED_IP`` - Aggregate the request counts on the first IP address in an HTTP header. With this option, you must specify the header to use in the ``ForwardedIPConfig`` property. To aggregate on a combination of the forwarded IP address with other aggregate keys, use ``CUSTOM_KEYS`` . - ``IP`` - Aggregate the request counts on the IP address from the web request origin. To aggregate on a combination of the IP address with other aggregate keys, use ``CUSTOM_KEYS`` .
15865
16278
  :param limit: The limit on requests per 5-minute period for a single aggregation instance for the rate-based rule. If the rate-based statement includes a ``ScopeDownStatement`` , this limit is applied only to the requests that match the statement. Examples: - If you aggregate on just the IP address, this is the limit on requests from any single IP address. - If you aggregate on the HTTP method and the query argument name "city", then this is the limit on requests for any single method, city pair.
15866
16279
  :param custom_keys: Specifies the aggregate keys to use in a rate-base rule.
16280
+ :param evaluation_window_sec: The amount of time, in seconds, that AWS WAF should include in its request counts, looking back from the current time. For example, for a setting of 120, when AWS WAF checks the rate, it counts the requests for the 2 minutes immediately preceding the current time. Valid settings are 60, 120, 300, and 600. This setting doesn't determine how often AWS WAF checks the rate, but how far back it looks each time it checks. AWS WAF checks the rate about every 10 seconds. Default: ``300`` (5 minutes)
15867
16281
  :param forwarded_ip_config: The configuration for inspecting IP addresses in an HTTP header that you specify, instead of using the IP address that's reported by the web request origin. Commonly, this is the X-Forwarded-For (XFF) header, but you can specify any header name. .. epigraph:: If the specified header isn't present in the request, AWS WAF doesn't apply the rule to the web request at all. This is required if you specify a forwarded IP in the rule's aggregate key settings.
15868
16282
  :param scope_down_statement: An optional nested statement that narrows the scope of the web requests that are evaluated and managed by the rate-based statement. When you use a scope-down statement, the rate-based rule only tracks and rate limits requests that match the scope-down statement. You can use any nestable ``Statement`` in the scope-down statement, and you can nest statements at any level, the same as you can for a rule statement.
15869
16283
 
@@ -15879,6 +16293,7 @@ class CfnWebACL(
15879
16293
  check_type(argname="argument aggregate_key_type", value=aggregate_key_type, expected_type=type_hints["aggregate_key_type"])
15880
16294
  check_type(argname="argument limit", value=limit, expected_type=type_hints["limit"])
15881
16295
  check_type(argname="argument custom_keys", value=custom_keys, expected_type=type_hints["custom_keys"])
16296
+ check_type(argname="argument evaluation_window_sec", value=evaluation_window_sec, expected_type=type_hints["evaluation_window_sec"])
15882
16297
  check_type(argname="argument forwarded_ip_config", value=forwarded_ip_config, expected_type=type_hints["forwarded_ip_config"])
15883
16298
  check_type(argname="argument scope_down_statement", value=scope_down_statement, expected_type=type_hints["scope_down_statement"])
15884
16299
  self._values: typing.Dict[builtins.str, typing.Any] = {
@@ -15887,6 +16302,8 @@ class CfnWebACL(
15887
16302
  }
15888
16303
  if custom_keys is not None:
15889
16304
  self._values["custom_keys"] = custom_keys
16305
+ if evaluation_window_sec is not None:
16306
+ self._values["evaluation_window_sec"] = evaluation_window_sec
15890
16307
  if forwarded_ip_config is not None:
15891
16308
  self._values["forwarded_ip_config"] = forwarded_ip_config
15892
16309
  if scope_down_statement is not None:
@@ -15954,6 +16371,21 @@ class CfnWebACL(
15954
16371
  result = self._values.get("custom_keys")
15955
16372
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnWebACL.RateBasedStatementCustomKeyProperty"]]]], result)
15956
16373
 
16374
+ @builtins.property
16375
+ def evaluation_window_sec(self) -> typing.Optional[jsii.Number]:
16376
+ '''The amount of time, in seconds, that AWS WAF should include in its request counts, looking back from the current time.
16377
+
16378
+ For example, for a setting of 120, when AWS WAF checks the rate, it counts the requests for the 2 minutes immediately preceding the current time. Valid settings are 60, 120, 300, and 600.
16379
+
16380
+ This setting doesn't determine how often AWS WAF checks the rate, but how far back it looks each time it checks. AWS WAF checks the rate about every 10 seconds.
16381
+
16382
+ Default: ``300`` (5 minutes)
16383
+
16384
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatement.html#cfn-wafv2-webacl-ratebasedstatement-evaluationwindowsec
16385
+ '''
16386
+ result = self._values.get("evaluation_window_sec")
16387
+ return typing.cast(typing.Optional[jsii.Number], result)
16388
+
15957
16389
  @builtins.property
15958
16390
  def forwarded_ip_config(
15959
16391
  self,
@@ -16488,6 +16920,9 @@ class CfnWebACL(
16488
16920
  match_scope="matchScope",
16489
16921
  oversize_handling="oversizeHandling"
16490
16922
  ),
16923
+ ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
16924
+ fallback_behavior="fallbackBehavior"
16925
+ ),
16491
16926
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
16492
16927
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
16493
16928
  all=all,
@@ -16639,6 +17074,9 @@ class CfnWebACL(
16639
17074
  match_scope="matchScope",
16640
17075
  oversize_handling="oversizeHandling"
16641
17076
  ),
17077
+ ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
17078
+ fallback_behavior="fallbackBehavior"
17079
+ ),
16642
17080
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
16643
17081
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
16644
17082
  all=all,
@@ -16727,16 +17165,20 @@ class CfnWebACL(
16727
17165
  )
16728
17166
  class RequestBodyAssociatedResourceTypeConfigProperty:
16729
17167
  def __init__(self, *, default_size_inspection_limit: builtins.str) -> None:
16730
- '''Customizes the maximum size of the request body that your protected CloudFront distributions forward to AWS WAF for inspection.
17168
+ '''Customizes the maximum size of the request body that your protected CloudFront, API Gateway, Amazon Cognito, App Runner, and Verified Access resources forward to AWS WAF for inspection.
16731
17169
 
16732
- The default size is 16 KB (16,384 bytes).
17170
+ The default size is 16 KB (16,384 bytes). You can change the setting for any of the available resource types.
16733
17171
  .. epigraph::
16734
17172
 
16735
17173
  You are charged additional fees when your protected resources forward body sizes that are larger than the default. For more information, see `AWS WAF Pricing <https://docs.aws.amazon.com/waf/pricing/>`_ .
16736
17174
 
17175
+ Example JSON: ``{ "API_GATEWAY": "KB_48", "APP_RUNNER_SERVICE": "KB_32" }``
17176
+
17177
+ For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
17178
+
16737
17179
  This is used in the ``AssociationConfig`` of the web ACL.
16738
17180
 
16739
- :param default_size_inspection_limit: Specifies the maximum size of the web request body component that an associated CloudFront distribution should send to AWS WAF for inspection. This applies to statements in the web ACL that inspect the body or JSON body. Default: ``16 KB (16,384 bytes)``
17181
+ :param default_size_inspection_limit: Specifies the maximum size of the web request body component that an associated CloudFront, API Gateway, Amazon Cognito, App Runner, or Verified Access resource should send to AWS WAF for inspection. This applies to statements in the web ACL that inspect the body or JSON body. Default: ``16 KB (16,384 bytes)``
16740
17182
 
16741
17183
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-requestbodyassociatedresourcetypeconfig.html
16742
17184
  :exampleMetadata: fixture=_generated
@@ -16760,7 +17202,7 @@ class CfnWebACL(
16760
17202
 
16761
17203
  @builtins.property
16762
17204
  def default_size_inspection_limit(self) -> builtins.str:
16763
- '''Specifies the maximum size of the web request body component that an associated CloudFront distribution should send to AWS WAF for inspection.
17205
+ '''Specifies the maximum size of the web request body component that an associated CloudFront, API Gateway, Amazon Cognito, App Runner, or Verified Access resource should send to AWS WAF for inspection.
16764
17206
 
16765
17207
  This applies to statements in the web ACL that inspect the body or JSON body.
16766
17208
 
@@ -18487,7 +18929,7 @@ class CfnWebACL(
18487
18929
 
18488
18930
  For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes.
18489
18931
 
18490
- If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes of the body up to the limit for the web ACL. By default, for regional web ACLs, this limit is 8 KB (8,192 bytes) and for CloudFront web ACLs, this limit is 16 KB (16,384 bytes). For CloudFront web ACLs, you can increase the limit in the web ACL ``AssociationConfig`` , for additional fees. If you know that the request body for your web requests should never exceed the inspection limit, you could use a size constraint statement to block requests that have a larger request body size.
18932
+ If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes in the body up to the limit for the web ACL and protected resource type. If you know that the request body for your web requests should never exceed the inspection limit, you can use a size constraint statement to block requests that have a larger request body size. For more information about the inspection limits, see ``Body`` and ``JsonBody`` settings for the ``FieldToMatch`` data type.
18491
18933
 
18492
18934
  If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI ``/logo.jpg`` is nine characters long.
18493
18935
 
@@ -18538,6 +18980,9 @@ class CfnWebACL(
18538
18980
  match_scope="matchScope",
18539
18981
  oversize_handling="oversizeHandling"
18540
18982
  ),
18983
+ ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
18984
+ fallback_behavior="fallbackBehavior"
18985
+ ),
18541
18986
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
18542
18987
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
18543
18988
  all=all,
@@ -18698,6 +19143,9 @@ class CfnWebACL(
18698
19143
  match_scope="matchScope",
18699
19144
  oversize_handling="oversizeHandling"
18700
19145
  ),
19146
+ ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
19147
+ fallback_behavior="fallbackBehavior"
19148
+ ),
18701
19149
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
18702
19150
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
18703
19151
  all=all,
@@ -18843,7 +19291,7 @@ class CfnWebACL(
18843
19291
  :param regex_match_statement: A rule statement used to search web request components for a match against a single regular expression.
18844
19292
  :param regex_pattern_set_reference_statement: A rule statement used to search web request components for matches with regular expressions. To use this, create a ``RegexPatternSet`` that specifies the expressions that you want to detect, then use the ARN of that set in this statement. A web request matches the pattern set rule statement if the request component matches any of the patterns in the set. Each regex pattern set rule statement references a regex pattern set. You create and maintain the set independent of your rules. This allows you to use the single set in multiple rules. When you update the referenced set, AWS WAF automatically updates all rules that reference it.
18845
19293
  :param rule_group_reference_statement: A rule statement used to run the rules that are defined in a ``RuleGroup`` . To use this, create a rule group with your rules, then provide the ARN of the rule group in this statement. You cannot nest a ``RuleGroupReferenceStatement`` , for example for use inside a ``NotStatement`` or ``OrStatement`` . You cannot use a rule group reference statement inside another rule group. You can only reference a rule group as a top-level statement within a rule that you define in a web ACL.
18846
- :param size_constraint_statement: A rule statement that compares a number of bytes against the size of a request component, using a comparison operator, such as greater than (>) or less than (<). For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes. If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes of the body up to the limit for the web ACL. By default, for regional web ACLs, this limit is 8 KB (8,192 bytes) and for CloudFront web ACLs, this limit is 16 KB (16,384 bytes). For CloudFront web ACLs, you can increase the limit in the web ACL ``AssociationConfig`` , for additional fees. If you know that the request body for your web requests should never exceed the inspection limit, you could use a size constraint statement to block requests that have a larger request body size. If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI ``/logo.jpg`` is nine characters long.
19294
+ :param size_constraint_statement: A rule statement that compares a number of bytes against the size of a request component, using a comparison operator, such as greater than (>) or less than (<). For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes. If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes in the body up to the limit for the web ACL and protected resource type. If you know that the request body for your web requests should never exceed the inspection limit, you can use a size constraint statement to block requests that have a larger request body size. For more information about the inspection limits, see ``Body`` and ``JsonBody`` settings for the ``FieldToMatch`` data type. If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI ``/logo.jpg`` is nine characters long.
18847
19295
  :param sqli_match_statement: A rule statement that inspects for malicious SQL code. Attackers insert malicious SQL code into web requests to do things like modify your database or extract data from it.
18848
19296
  :param xss_match_statement: A rule statement that inspects for cross-site scripting (XSS) attacks. In XSS attacks, the attacker uses vulnerabilities in a benign website as a vehicle to inject malicious client-site scripts into other legitimate web browsers.
18849
19297
 
@@ -19126,7 +19574,7 @@ class CfnWebACL(
19126
19574
 
19127
19575
  For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes.
19128
19576
 
19129
- If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes of the body up to the limit for the web ACL. By default, for regional web ACLs, this limit is 8 KB (8,192 bytes) and for CloudFront web ACLs, this limit is 16 KB (16,384 bytes). For CloudFront web ACLs, you can increase the limit in the web ACL ``AssociationConfig`` , for additional fees. If you know that the request body for your web requests should never exceed the inspection limit, you could use a size constraint statement to block requests that have a larger request body size.
19577
+ If you configure AWS WAF to inspect the request body, AWS WAF inspects only the number of bytes in the body up to the limit for the web ACL and protected resource type. If you know that the request body for your web requests should never exceed the inspection limit, you can use a size constraint statement to block requests that have a larger request body size. For more information about the inspection limits, see ``Body`` and ``JsonBody`` settings for the ``FieldToMatch`` data type.
19130
19578
 
19131
19579
  If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI ``/logo.jpg`` is nine characters long.
19132
19580
 
@@ -19261,7 +19709,7 @@ class CfnWebACL(
19261
19709
 
19262
19710
  :param cloud_watch_metrics_enabled: Indicates whether the associated resource sends metrics to Amazon CloudWatch. For the list of available metrics, see `AWS WAF Metrics <https://docs.aws.amazon.com/waf/latest/developerguide/monitoring-cloudwatch.html#waf-metrics>`_ in the *AWS WAF Developer Guide* . For web ACLs, the metrics are for web requests that have the web ACL default action applied. AWS WAF applies the default action to web requests that pass the inspection of all rules in the web ACL without being either allowed or blocked. For more information, see `The web ACL default action <https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-default-action.html>`_ in the *AWS WAF Developer Guide* .
19263
19711
  :param metric_name: A name of the Amazon CloudWatch metric dimension. The name can contain only the characters: A-Z, a-z, 0-9, - (hyphen), and _ (underscore). The name can be from one to 128 characters long. It can't contain whitespace or metric names that are reserved for AWS WAF , for example ``All`` and ``Default_Action`` .
19264
- :param sampled_requests_enabled: Indicates whether AWS WAF should store a sampling of the web requests that match the rules. You can view the sampled requests through the AWS WAF console.
19712
+ :param sampled_requests_enabled: Indicates whether AWS WAF should store a sampling of the web requests that match the rules. You can view the sampled requests through the AWS WAF console. .. epigraph:: Request sampling doesn't provide a field redaction option, and any field redaction that you specify in your logging configuration doesn't affect sampling. The only way to exclude fields from request sampling is by disabling sampling in the web ACL visibility configuration.
19265
19713
 
19266
19714
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html
19267
19715
  :exampleMetadata: fixture=_generated
@@ -19325,6 +19773,9 @@ class CfnWebACL(
19325
19773
  '''Indicates whether AWS WAF should store a sampling of the web requests that match the rules.
19326
19774
 
19327
19775
  You can view the sampled requests through the AWS WAF console.
19776
+ .. epigraph::
19777
+
19778
+ Request sampling doesn't provide a field redaction option, and any field redaction that you specify in your logging configuration doesn't affect sampling. The only way to exclude fields from request sampling is by disabling sampling in the web ACL visibility configuration.
19328
19779
 
19329
19780
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html#cfn-wafv2-webacl-visibilityconfig-sampledrequestsenabled
19330
19781
  '''
@@ -19406,6 +19857,9 @@ class CfnWebACL(
19406
19857
  match_scope="matchScope",
19407
19858
  oversize_handling="oversizeHandling"
19408
19859
  ),
19860
+ ja3_fingerprint=wafv2.CfnWebACL.JA3FingerprintProperty(
19861
+ fallback_behavior="fallbackBehavior"
19862
+ ),
19409
19863
  json_body=wafv2.CfnWebACL.JsonBodyProperty(
19410
19864
  match_pattern=wafv2.CfnWebACL.JsonMatchPatternProperty(
19411
19865
  all=all,
@@ -19730,7 +20184,7 @@ class CfnWebACLProps:
19730
20184
  :param default_action: The action to perform if none of the ``Rules`` contained in the ``WebACL`` match.
19731
20185
  :param scope: Specifies whether this is for an Amazon CloudFront distribution or for a regional application. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AWS AppSync GraphQL API, an Amazon Cognito user pool, an AWS App Runner service, or an AWS Verified Access instance. Valid Values are ``CLOUDFRONT`` and ``REGIONAL`` . .. epigraph:: For ``CLOUDFRONT`` , you must create your WAFv2 resources in the US East (N. Virginia) Region, ``us-east-1`` . For information about how to define the association of the web ACL with your resource, see ``WebACLAssociation`` .
19732
20186
  :param visibility_config: Defines and enables Amazon CloudWatch metrics and web request sample collection.
19733
- :param association_config: Specifies custom configurations for the associations between the web ACL and protected resources. Use this to customize the maximum size of the request body that your protected CloudFront distributions forward to AWS WAF for inspection. The default is 16 KB (16,384 bytes). .. epigraph:: You are charged additional fees when your protected resources forward body sizes that are larger than the default. For more information, see `AWS WAF Pricing <https://docs.aws.amazon.com/waf/pricing/>`_ .
20187
+ :param association_config: Specifies custom configurations for the associations between the web ACL and protected resources. Use this to customize the maximum size of the request body that your protected resources forward to AWS WAF for inspection. You can customize this setting for CloudFront, API Gateway, Amazon Cognito, App Runner, or Verified Access resources. The default setting is 16 KB (16,384 bytes). .. epigraph:: You are charged additional fees when your protected resources forward body sizes that are larger than the default. For more information, see `AWS WAF Pricing <https://docs.aws.amazon.com/waf/pricing/>`_ . For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
19734
20188
  :param captcha_config: Specifies how AWS WAF should handle ``CAPTCHA`` evaluations for rules that don't have their own ``CaptchaConfig`` settings. If you don't specify this, AWS WAF uses its default settings for ``CaptchaConfig`` .
19735
20189
  :param challenge_config: Specifies how AWS WAF should handle challenge evaluations for rules that don't have their own ``ChallengeConfig`` settings. If you don't specify this, AWS WAF uses its default settings for ``ChallengeConfig`` .
19736
20190
  :param custom_response_bodies: A map of custom response keys and content bodies. When you create a rule with a block action, you can send a custom response to the web request. You define these for the web ACL, and then use them in the rules and default actions that you define in the web ACL. For information about customizing web requests and responses, see `Customizing web requests and responses in AWS WAF <https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html>`_ in the *AWS WAF Developer Guide* . For information about the limits on count and size for custom request and response settings, see `AWS WAF quotas <https://docs.aws.amazon.com/waf/latest/developerguide/limits.html>`_ in the *AWS WAF Developer Guide* .
@@ -19832,11 +20286,13 @@ class CfnWebACLProps:
19832
20286
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnWebACL.AssociationConfigProperty]]:
19833
20287
  '''Specifies custom configurations for the associations between the web ACL and protected resources.
19834
20288
 
19835
- Use this to customize the maximum size of the request body that your protected CloudFront distributions forward to AWS WAF for inspection. The default is 16 KB (16,384 bytes).
20289
+ Use this to customize the maximum size of the request body that your protected resources forward to AWS WAF for inspection. You can customize this setting for CloudFront, API Gateway, Amazon Cognito, App Runner, or Verified Access resources. The default setting is 16 KB (16,384 bytes).
19836
20290
  .. epigraph::
19837
20291
 
19838
20292
  You are charged additional fees when your protected resources forward body sizes that are larger than the default. For more information, see `AWS WAF Pricing <https://docs.aws.amazon.com/waf/pricing/>`_ .
19839
20293
 
20294
+ For Application Load Balancer and AWS AppSync , the limit is fixed at 8 KB (8,192 bytes).
20295
+
19840
20296
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-associationconfig
19841
20297
  '''
19842
20298
  result = self._values.get("association_config")
@@ -20464,6 +20920,7 @@ def _typecheckingstub__dcb790c3130e52c64e6b7cf00db86b37d1b54427689c46b6c9e6a7122
20464
20920
  body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.BodyProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20465
20921
  cookies: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.CookiesProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20466
20922
  headers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.HeadersProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20923
+ ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.JA3FingerprintProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20467
20924
  json_body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.JsonBodyProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20468
20925
  method: typing.Any = None,
20469
20926
  query_string: typing.Any = None,
@@ -20532,6 +20989,13 @@ def _typecheckingstub__f31a0b3f57889411d82cd445b651ca6964104416a165d4f1341a7386e
20532
20989
  """Type checking stubs"""
20533
20990
  pass
20534
20991
 
20992
+ def _typecheckingstub__1cba50229767598d7603bfa317a8bd11cfc2b12ca28d38737119d57d5d04667d(
20993
+ *,
20994
+ fallback_behavior: builtins.str,
20995
+ ) -> None:
20996
+ """Type checking stubs"""
20997
+ pass
20998
+
20535
20999
  def _typecheckingstub__602ab3bf019e524b1f85e0a2cdb3225626316719b294dfa66fcfd8b7fc9e7a09(
20536
21000
  *,
20537
21001
  match_pattern: typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.JsonMatchPatternProperty, typing.Dict[builtins.str, typing.Any]]],
@@ -20606,6 +21070,7 @@ def _typecheckingstub__39e60064f8f4286866d2fa7f3c5494f2a2f33a4179f5370836b825ab3
20606
21070
  aggregate_key_type: builtins.str,
20607
21071
  limit: jsii.Number,
20608
21072
  custom_keys: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.RateBasedStatementCustomKeyProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
21073
+ evaluation_window_sec: typing.Optional[jsii.Number] = None,
20609
21074
  forwarded_ip_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.ForwardedIPConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20610
21075
  scope_down_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.StatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20611
21076
  ) -> None:
@@ -21085,6 +21550,7 @@ def _typecheckingstub__25d147c856e9a8fd64f4cc05856e4813e584f37ef787792ad3c4e0790
21085
21550
  body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.BodyProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21086
21551
  cookies: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.CookiesProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21087
21552
  headers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.HeadersProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21553
+ ja3_fingerprint: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.JA3FingerprintProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21088
21554
  json_body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.JsonBodyProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21089
21555
  method: typing.Any = None,
21090
21556
  query_string: typing.Any = None,
@@ -21153,6 +21619,13 @@ def _typecheckingstub__4ebec44af1e8d72b72f8c361dc8efc545a044cf914ee07c895cf4c1d1
21153
21619
  """Type checking stubs"""
21154
21620
  pass
21155
21621
 
21622
+ def _typecheckingstub__129b51143b193ce4679091a559f9a4073c03a2bccc1ccb884fe1b4dd3856119e(
21623
+ *,
21624
+ fallback_behavior: builtins.str,
21625
+ ) -> None:
21626
+ """Type checking stubs"""
21627
+ pass
21628
+
21156
21629
  def _typecheckingstub__b371d01e6e192e377c25d061f5a40b73b3aca7d15781a83f612151eddebe6fa2(
21157
21630
  *,
21158
21631
  match_pattern: typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.JsonMatchPatternProperty, typing.Dict[builtins.str, typing.Any]]],
@@ -21254,6 +21727,7 @@ def _typecheckingstub__d49b8cc0c82261f5510afab04b955c5ca035f3eea109c82126189a502
21254
21727
  aggregate_key_type: builtins.str,
21255
21728
  limit: jsii.Number,
21256
21729
  custom_keys: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RateBasedStatementCustomKeyProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
21730
+ evaluation_window_sec: typing.Optional[jsii.Number] = None,
21257
21731
  forwarded_ip_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.ForwardedIPConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21258
21732
  scope_down_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.StatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21259
21733
  ) -> None: