aws-cdk-lib 2.200.2__py3-none-any.whl → 2.202.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 (62) hide show
  1. aws_cdk/__init__.py +129 -37
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.200.2.jsii.tgz → aws-cdk-lib@2.202.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_amazonmq/__init__.py +2 -3
  5. aws_cdk/aws_amplify/__init__.py +3 -3
  6. aws_cdk/aws_apigateway/__init__.py +21 -17
  7. aws_cdk/aws_apigatewayv2/__init__.py +87 -45
  8. aws_cdk/aws_appconfig/__init__.py +38 -1
  9. aws_cdk/aws_appsync/__init__.py +10 -10
  10. aws_cdk/aws_athena/__init__.py +227 -0
  11. aws_cdk/aws_autoscaling/__init__.py +38 -37
  12. aws_cdk/aws_bedrock/__init__.py +5108 -1571
  13. aws_cdk/aws_cloudfront/__init__.py +38 -38
  14. aws_cdk/aws_cloudfront/experimental/__init__.py +5 -0
  15. aws_cdk/aws_cloudtrail/__init__.py +178 -0
  16. aws_cdk/aws_cloudwatch/__init__.py +7 -3
  17. aws_cdk/aws_codepipeline_actions/__init__.py +746 -0
  18. aws_cdk/aws_connect/__init__.py +5 -5
  19. aws_cdk/aws_customerprofiles/__init__.py +377 -8
  20. aws_cdk/aws_datasync/__init__.py +189 -160
  21. aws_cdk/aws_datazone/__init__.py +512 -170
  22. aws_cdk/aws_deadline/__init__.py +32 -4
  23. aws_cdk/aws_dsql/__init__.py +150 -10
  24. aws_cdk/aws_ec2/__init__.py +1191 -304
  25. aws_cdk/aws_ecs/__init__.py +94 -11
  26. aws_cdk/aws_efs/__init__.py +103 -12
  27. aws_cdk/aws_eks/__init__.py +337 -168
  28. aws_cdk/aws_elasticloadbalancingv2/__init__.py +2 -2
  29. aws_cdk/aws_emr/__init__.py +10 -4
  30. aws_cdk/aws_entityresolution/__init__.py +25 -10
  31. aws_cdk/aws_evs/__init__.py +2204 -0
  32. aws_cdk/aws_fsx/__init__.py +7 -7
  33. aws_cdk/aws_glue/__init__.py +58 -24
  34. aws_cdk/aws_iam/__init__.py +3 -3
  35. aws_cdk/aws_kms/__init__.py +10 -4
  36. aws_cdk/aws_lambda/__init__.py +1167 -55
  37. aws_cdk/aws_lambda_event_sources/__init__.py +638 -1
  38. aws_cdk/aws_lightsail/__init__.py +17 -13
  39. aws_cdk/aws_logs/__init__.py +1 -0
  40. aws_cdk/aws_msk/__init__.py +21 -2
  41. aws_cdk/aws_mwaa/__init__.py +45 -2
  42. aws_cdk/aws_networkfirewall/__init__.py +562 -0
  43. aws_cdk/aws_opensearchservice/__init__.py +3 -3
  44. aws_cdk/aws_opsworkscm/__init__.py +9 -43
  45. aws_cdk/aws_rds/__init__.py +287 -87
  46. aws_cdk/aws_s3/__init__.py +39 -15
  47. aws_cdk/aws_sagemaker/__init__.py +223 -3
  48. aws_cdk/aws_securityhub/__init__.py +18 -34
  49. aws_cdk/aws_ssm/__init__.py +83 -1
  50. aws_cdk/aws_stepfunctions/__init__.py +235 -45
  51. aws_cdk/aws_synthetics/__init__.py +74 -0
  52. aws_cdk/aws_transfer/__init__.py +3 -3
  53. aws_cdk/aws_verifiedpermissions/__init__.py +17 -6
  54. aws_cdk/aws_wafv2/__init__.py +770 -7
  55. aws_cdk/cx_api/__init__.py +14 -0
  56. aws_cdk/pipelines/__init__.py +147 -38
  57. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.202.0.dist-info}/METADATA +3 -3
  58. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.202.0.dist-info}/RECORD +62 -61
  59. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.202.0.dist-info}/LICENSE +0 -0
  60. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.202.0.dist-info}/NOTICE +0 -0
  61. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.202.0.dist-info}/WHEEL +0 -0
  62. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.202.0.dist-info}/top_level.txt +0 -0
@@ -2280,6 +2280,7 @@ class CfnRuleGroup(
2280
2280
  # all: Any
2281
2281
  # all_query_arguments: Any
2282
2282
  # and_statement_property_: wafv2.CfnRuleGroup.AndStatementProperty
2283
+ # asn: Any
2283
2284
  # forwarded_ip: Any
2284
2285
  # http_method: Any
2285
2286
  # ip: Any
@@ -2293,6 +2294,13 @@ class CfnRuleGroup(
2293
2294
  and_statement_property = wafv2.CfnRuleGroup.AndStatementProperty(
2294
2295
  statements=[wafv2.CfnRuleGroup.StatementProperty(
2295
2296
  and_statement=and_statement_property_,
2297
+ asn_match_statement=wafv2.CfnRuleGroup.AsnMatchStatementProperty(
2298
+ asn_list=[123],
2299
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
2300
+ fallback_behavior="fallbackBehavior",
2301
+ header_name="headerName"
2302
+ )
2303
+ ),
2296
2304
  byte_match_statement=wafv2.CfnRuleGroup.ByteMatchStatementProperty(
2297
2305
  field_to_match=wafv2.CfnRuleGroup.FieldToMatchProperty(
2298
2306
  all_query_arguments=all_query_arguments,
@@ -2386,6 +2394,7 @@ class CfnRuleGroup(
2386
2394
 
2387
2395
  # the properties below are optional
2388
2396
  custom_keys=[wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
2397
+ asn=asn,
2389
2398
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
2390
2399
  name="name",
2391
2400
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -2756,6 +2765,83 @@ class CfnRuleGroup(
2756
2765
  k + "=" + repr(v) for k, v in self._values.items()
2757
2766
  )
2758
2767
 
2768
+ @jsii.data_type(
2769
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.AsnMatchStatementProperty",
2770
+ jsii_struct_bases=[],
2771
+ name_mapping={
2772
+ "asn_list": "asnList",
2773
+ "forwarded_ip_config": "forwardedIpConfig",
2774
+ },
2775
+ )
2776
+ class AsnMatchStatementProperty:
2777
+ def __init__(
2778
+ self,
2779
+ *,
2780
+ asn_list: typing.Optional[typing.Union[typing.Sequence[jsii.Number], _IResolvable_da3f097b]] = None,
2781
+ forwarded_ip_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.ForwardedIPConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
2782
+ ) -> None:
2783
+ '''
2784
+ :param asn_list:
2785
+ :param forwarded_ip_config:
2786
+
2787
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-asnmatchstatement.html
2788
+ :exampleMetadata: fixture=_generated
2789
+
2790
+ Example::
2791
+
2792
+ # The code below shows an example of how to instantiate this type.
2793
+ # The values are placeholders you should change.
2794
+ from aws_cdk import aws_wafv2 as wafv2
2795
+
2796
+ asn_match_statement_property = wafv2.CfnRuleGroup.AsnMatchStatementProperty(
2797
+ asn_list=[123],
2798
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
2799
+ fallback_behavior="fallbackBehavior",
2800
+ header_name="headerName"
2801
+ )
2802
+ )
2803
+ '''
2804
+ if __debug__:
2805
+ type_hints = typing.get_type_hints(_typecheckingstub__1b7bfd70c769fabe423acc42aa4ce7a934b8907c56a69421327294c209c8da78)
2806
+ check_type(argname="argument asn_list", value=asn_list, expected_type=type_hints["asn_list"])
2807
+ check_type(argname="argument forwarded_ip_config", value=forwarded_ip_config, expected_type=type_hints["forwarded_ip_config"])
2808
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
2809
+ if asn_list is not None:
2810
+ self._values["asn_list"] = asn_list
2811
+ if forwarded_ip_config is not None:
2812
+ self._values["forwarded_ip_config"] = forwarded_ip_config
2813
+
2814
+ @builtins.property
2815
+ def asn_list(
2816
+ self,
2817
+ ) -> typing.Optional[typing.Union[typing.List[jsii.Number], _IResolvable_da3f097b]]:
2818
+ '''
2819
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-asnmatchstatement.html#cfn-wafv2-rulegroup-asnmatchstatement-asnlist
2820
+ '''
2821
+ result = self._values.get("asn_list")
2822
+ return typing.cast(typing.Optional[typing.Union[typing.List[jsii.Number], _IResolvable_da3f097b]], result)
2823
+
2824
+ @builtins.property
2825
+ def forwarded_ip_config(
2826
+ self,
2827
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.ForwardedIPConfigurationProperty"]]:
2828
+ '''
2829
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-asnmatchstatement.html#cfn-wafv2-rulegroup-asnmatchstatement-forwardedipconfig
2830
+ '''
2831
+ result = self._values.get("forwarded_ip_config")
2832
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.ForwardedIPConfigurationProperty"]], result)
2833
+
2834
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2835
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2836
+
2837
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2838
+ return not (rhs == self)
2839
+
2840
+ def __repr__(self) -> str:
2841
+ return "AsnMatchStatementProperty(%s)" % ", ".join(
2842
+ k + "=" + repr(v) for k, v in self._values.items()
2843
+ )
2844
+
2759
2845
  @jsii.data_type(
2760
2846
  jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.BlockProperty",
2761
2847
  jsii_struct_bases=[],
@@ -4377,7 +4463,7 @@ class CfnRuleGroup(
4377
4463
 
4378
4464
  If the specified header isn't present in the request, AWS WAF doesn't apply the rule to the web request at all.
4379
4465
 
4380
- This configuration is used for ``GeoMatchStatement`` and ``RateBasedStatement`` . For ``IPSetReferenceStatement`` , use ``IPSetForwardedIPConfig`` instead.
4466
+ This configuration is used for ``GeoMatchStatement`` , ``AsnMatchStatement`` , and ``RateBasedStatement`` . For ``IPSetReferenceStatement`` , use ``IPSetForwardedIPConfig`` instead.
4381
4467
 
4382
4468
  AWS WAF only evaluates the first IP address found in the specified HTTP header.
4383
4469
 
@@ -5615,6 +5701,7 @@ class CfnRuleGroup(
5615
5701
 
5616
5702
  # all: Any
5617
5703
  # all_query_arguments: Any
5704
+ # asn: Any
5618
5705
  # forwarded_ip: Any
5619
5706
  # http_method: Any
5620
5707
  # ip: Any
@@ -5631,6 +5718,13 @@ class CfnRuleGroup(
5631
5718
  and_statement=wafv2.CfnRuleGroup.AndStatementProperty(
5632
5719
  statements=[statement_property_]
5633
5720
  ),
5721
+ asn_match_statement=wafv2.CfnRuleGroup.AsnMatchStatementProperty(
5722
+ asn_list=[123],
5723
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
5724
+ fallback_behavior="fallbackBehavior",
5725
+ header_name="headerName"
5726
+ )
5727
+ ),
5634
5728
  byte_match_statement=wafv2.CfnRuleGroup.ByteMatchStatementProperty(
5635
5729
  field_to_match=wafv2.CfnRuleGroup.FieldToMatchProperty(
5636
5730
  all_query_arguments=all_query_arguments,
@@ -5722,6 +5816,7 @@ class CfnRuleGroup(
5722
5816
 
5723
5817
  # the properties below are optional
5724
5818
  custom_keys=[wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
5819
+ asn=asn,
5725
5820
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
5726
5821
  name="name",
5727
5822
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -6120,6 +6215,7 @@ class CfnRuleGroup(
6120
6215
 
6121
6216
  # all: Any
6122
6217
  # all_query_arguments: Any
6218
+ # asn: Any
6123
6219
  # forwarded_ip: Any
6124
6220
  # http_method: Any
6125
6221
  # ip: Any
@@ -6136,6 +6232,13 @@ class CfnRuleGroup(
6136
6232
  and_statement=wafv2.CfnRuleGroup.AndStatementProperty(
6137
6233
  statements=[statement_property_]
6138
6234
  ),
6235
+ asn_match_statement=wafv2.CfnRuleGroup.AsnMatchStatementProperty(
6236
+ asn_list=[123],
6237
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
6238
+ fallback_behavior="fallbackBehavior",
6239
+ header_name="headerName"
6240
+ )
6241
+ ),
6139
6242
  byte_match_statement=wafv2.CfnRuleGroup.ByteMatchStatementProperty(
6140
6243
  field_to_match=wafv2.CfnRuleGroup.FieldToMatchProperty(
6141
6244
  all_query_arguments=all_query_arguments,
@@ -6227,6 +6330,7 @@ class CfnRuleGroup(
6227
6330
 
6228
6331
  # the properties below are optional
6229
6332
  custom_keys=[wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
6333
+ asn=asn,
6230
6334
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
6231
6335
  name="name",
6232
6336
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -6601,6 +6705,7 @@ class CfnRuleGroup(
6601
6705
  jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty",
6602
6706
  jsii_struct_bases=[],
6603
6707
  name_mapping={
6708
+ "asn": "asn",
6604
6709
  "cookie": "cookie",
6605
6710
  "forwarded_ip": "forwardedIp",
6606
6711
  "header": "header",
@@ -6618,6 +6723,7 @@ class CfnRuleGroup(
6618
6723
  def __init__(
6619
6724
  self,
6620
6725
  *,
6726
+ asn: typing.Any = None,
6621
6727
  cookie: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.RateLimitCookieProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6622
6728
  forwarded_ip: typing.Any = None,
6623
6729
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.RateLimitHeaderProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -6636,6 +6742,7 @@ class CfnRuleGroup(
6636
6742
 
6637
6743
  Web requests that are missing any of the components specified in the aggregation keys are omitted from the rate-based rule evaluation and handling.
6638
6744
 
6745
+ :param asn: Specifies the request's ASN as an aggregate key for a rate-based rule.
6639
6746
  :param cookie: Use the value of a cookie in the request as an aggregate key. Each distinct value in the cookie contributes to the aggregation instance. If you use a single cookie as your custom key, then each value fully defines an aggregation instance.
6640
6747
  :param forwarded_ip: Use the first IP address in an HTTP header as an aggregate key. Each distinct forwarded IP address contributes to the aggregation instance. When you specify an IP or forwarded IP in the custom key settings, you must also specify at least one other key to use. You can aggregate on only the forwarded IP address by specifying ``FORWARDED_IP`` in your rate-based statement's ``AggregateKeyType`` . With this option, you must specify the header to use in the rate-based rule's ``ForwardedIPConfig`` property.
6641
6748
  :param header: Use the value of a header in the request as an aggregate key. Each distinct value in the header contributes to the aggregation instance. If you use a single header as your custom key, then each value fully defines an aggregation instance.
@@ -6657,11 +6764,13 @@ class CfnRuleGroup(
6657
6764
  # The values are placeholders you should change.
6658
6765
  from aws_cdk import aws_wafv2 as wafv2
6659
6766
 
6767
+ # asn: Any
6660
6768
  # forwarded_ip: Any
6661
6769
  # http_method: Any
6662
6770
  # ip: Any
6663
6771
 
6664
6772
  rate_based_statement_custom_key_property = wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
6773
+ asn=asn,
6665
6774
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
6666
6775
  name="name",
6667
6776
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -6711,6 +6820,7 @@ class CfnRuleGroup(
6711
6820
  '''
6712
6821
  if __debug__:
6713
6822
  type_hints = typing.get_type_hints(_typecheckingstub__6bc232408309212f7b145d76c0106073269f111e106ab6d74a4d2168f41f248b)
6823
+ check_type(argname="argument asn", value=asn, expected_type=type_hints["asn"])
6714
6824
  check_type(argname="argument cookie", value=cookie, expected_type=type_hints["cookie"])
6715
6825
  check_type(argname="argument forwarded_ip", value=forwarded_ip, expected_type=type_hints["forwarded_ip"])
6716
6826
  check_type(argname="argument header", value=header, expected_type=type_hints["header"])
@@ -6723,6 +6833,8 @@ class CfnRuleGroup(
6723
6833
  check_type(argname="argument query_string", value=query_string, expected_type=type_hints["query_string"])
6724
6834
  check_type(argname="argument uri_path", value=uri_path, expected_type=type_hints["uri_path"])
6725
6835
  self._values: typing.Dict[builtins.str, typing.Any] = {}
6836
+ if asn is not None:
6837
+ self._values["asn"] = asn
6726
6838
  if cookie is not None:
6727
6839
  self._values["cookie"] = cookie
6728
6840
  if forwarded_ip is not None:
@@ -6746,6 +6858,15 @@ class CfnRuleGroup(
6746
6858
  if uri_path is not None:
6747
6859
  self._values["uri_path"] = uri_path
6748
6860
 
6861
+ @builtins.property
6862
+ def asn(self) -> typing.Any:
6863
+ '''Specifies the request's ASN as an aggregate key for a rate-based rule.
6864
+
6865
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementcustomkey.html#cfn-wafv2-rulegroup-ratebasedstatementcustomkey-asn
6866
+ '''
6867
+ result = self._values.get("asn")
6868
+ return typing.cast(typing.Any, result)
6869
+
6749
6870
  @builtins.property
6750
6871
  def cookie(
6751
6872
  self,
@@ -6986,6 +7107,7 @@ class CfnRuleGroup(
6986
7107
 
6987
7108
  # all: Any
6988
7109
  # all_query_arguments: Any
7110
+ # asn: Any
6989
7111
  # forwarded_ip: Any
6990
7112
  # http_method: Any
6991
7113
  # ip: Any
@@ -7003,6 +7125,7 @@ class CfnRuleGroup(
7003
7125
 
7004
7126
  # the properties below are optional
7005
7127
  custom_keys=[wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
7128
+ asn=asn,
7006
7129
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
7007
7130
  name="name",
7008
7131
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -7058,6 +7181,13 @@ class CfnRuleGroup(
7058
7181
  and_statement=wafv2.CfnRuleGroup.AndStatementProperty(
7059
7182
  statements=[statement_property_]
7060
7183
  ),
7184
+ asn_match_statement=wafv2.CfnRuleGroup.AsnMatchStatementProperty(
7185
+ asn_list=[123],
7186
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
7187
+ fallback_behavior="fallbackBehavior",
7188
+ header_name="headerName"
7189
+ )
7190
+ ),
7061
7191
  byte_match_statement=wafv2.CfnRuleGroup.ByteMatchStatementProperty(
7062
7192
  field_to_match=wafv2.CfnRuleGroup.FieldToMatchProperty(
7063
7193
  all_query_arguments=all_query_arguments,
@@ -8625,6 +8755,7 @@ class CfnRuleGroup(
8625
8755
  # all: Any
8626
8756
  # allow: Any
8627
8757
  # all_query_arguments: Any
8758
+ # asn: Any
8628
8759
  # block: Any
8629
8760
  # captcha: Any
8630
8761
  # challenge: Any
@@ -8646,6 +8777,13 @@ class CfnRuleGroup(
8646
8777
  and_statement=wafv2.CfnRuleGroup.AndStatementProperty(
8647
8778
  statements=[statement_property_]
8648
8779
  ),
8780
+ asn_match_statement=wafv2.CfnRuleGroup.AsnMatchStatementProperty(
8781
+ asn_list=[123],
8782
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
8783
+ fallback_behavior="fallbackBehavior",
8784
+ header_name="headerName"
8785
+ )
8786
+ ),
8649
8787
  byte_match_statement=wafv2.CfnRuleGroup.ByteMatchStatementProperty(
8650
8788
  field_to_match=wafv2.CfnRuleGroup.FieldToMatchProperty(
8651
8789
  all_query_arguments=all_query_arguments,
@@ -8739,6 +8877,7 @@ class CfnRuleGroup(
8739
8877
 
8740
8878
  # the properties below are optional
8741
8879
  custom_keys=[wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
8880
+ asn=asn,
8742
8881
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
8743
8882
  name="name",
8744
8883
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -9721,6 +9860,7 @@ class CfnRuleGroup(
9721
9860
  jsii_struct_bases=[],
9722
9861
  name_mapping={
9723
9862
  "and_statement": "andStatement",
9863
+ "asn_match_statement": "asnMatchStatement",
9724
9864
  "byte_match_statement": "byteMatchStatement",
9725
9865
  "geo_match_statement": "geoMatchStatement",
9726
9866
  "ip_set_reference_statement": "ipSetReferenceStatement",
@@ -9740,6 +9880,7 @@ class CfnRuleGroup(
9740
9880
  self,
9741
9881
  *,
9742
9882
  and_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.AndStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
9883
+ asn_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.AsnMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
9743
9884
  byte_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.ByteMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
9744
9885
  geo_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.GeoMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
9745
9886
  ip_set_reference_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.IPSetReferenceStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -9756,6 +9897,7 @@ class CfnRuleGroup(
9756
9897
  '''The processing guidance for a rule, used by AWS WAF to determine whether a web request matches the rule.
9757
9898
 
9758
9899
  :param and_statement: A logical rule statement used to combine other rule statements with AND logic. You provide more than one ``Statement`` within the ``AndStatement`` .
9900
+ :param asn_match_statement:
9759
9901
  :param byte_match_statement: A rule statement that defines a string match search for AWS WAF to apply to web requests. The byte match statement provides the bytes to search for, the location in requests that you want AWS WAF to search, and other settings. The bytes to search for are typically a string that corresponds with ASCII characters. In the AWS WAF console and the developer guide, this is called a string match statement.
9760
9902
  :param geo_match_statement: A rule statement that labels web requests by country and region and that matches against web requests based on country code. A geo match rule labels every request that it inspects regardless of whether it finds a match. - To manage requests only by country, you can use this statement by itself and specify the countries that you want to match against in the ``CountryCodes`` array. - Otherwise, configure your geo match rule with Count action so that it only labels requests. Then, add one or more label match rules to run after the geo match rule and configure them to match against the geographic labels and handle the requests as needed. AWS WAF labels requests using the alpha-2 country and region codes from the International Organization for Standardization (ISO) 3166 standard. AWS WAF determines the codes using either the IP address in the web request origin or, if you specify it, the address in the geo match ``ForwardedIPConfig`` . If you use the web request origin, the label formats are ``awswaf:clientip:geo:region:<ISO country code>-<ISO region code>`` and ``awswaf:clientip:geo:country:<ISO country code>`` . If you use a forwarded IP address, the label formats are ``awswaf:forwardedip:geo:region:<ISO country code>-<ISO region code>`` and ``awswaf:forwardedip:geo:country:<ISO country code>`` . For additional details, see `Geographic match rule statement <https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-geo-match.html>`_ in the `AWS WAF Developer Guide <https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html>`_ .
9761
9903
  :param ip_set_reference_statement: A rule statement used to detect web requests coming from particular IP addresses or address ranges. To use this, create an ``IPSet`` that specifies the addresses you want to detect, then use the ARN of that set in this statement. Each IP set rule statement references an IP 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.
@@ -9780,6 +9922,7 @@ class CfnRuleGroup(
9780
9922
 
9781
9923
  # all: Any
9782
9924
  # all_query_arguments: Any
9925
+ # asn: Any
9783
9926
  # forwarded_ip: Any
9784
9927
  # http_method: Any
9785
9928
  # ip: Any
@@ -9794,6 +9937,13 @@ class CfnRuleGroup(
9794
9937
  and_statement=wafv2.CfnRuleGroup.AndStatementProperty(
9795
9938
  statements=[statement_property_]
9796
9939
  ),
9940
+ asn_match_statement=wafv2.CfnRuleGroup.AsnMatchStatementProperty(
9941
+ asn_list=[123],
9942
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
9943
+ fallback_behavior="fallbackBehavior",
9944
+ header_name="headerName"
9945
+ )
9946
+ ),
9797
9947
  byte_match_statement=wafv2.CfnRuleGroup.ByteMatchStatementProperty(
9798
9948
  field_to_match=wafv2.CfnRuleGroup.FieldToMatchProperty(
9799
9949
  all_query_arguments=all_query_arguments,
@@ -9887,6 +10037,7 @@ class CfnRuleGroup(
9887
10037
 
9888
10038
  # the properties below are optional
9889
10039
  custom_keys=[wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
10040
+ asn=asn,
9890
10041
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
9891
10042
  name="name",
9892
10043
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -10227,6 +10378,7 @@ class CfnRuleGroup(
10227
10378
  if __debug__:
10228
10379
  type_hints = typing.get_type_hints(_typecheckingstub__c10bc3e3f69d89ad06f25a44daee62e7de586ae4280e39230f29c24092fe4a4f)
10229
10380
  check_type(argname="argument and_statement", value=and_statement, expected_type=type_hints["and_statement"])
10381
+ check_type(argname="argument asn_match_statement", value=asn_match_statement, expected_type=type_hints["asn_match_statement"])
10230
10382
  check_type(argname="argument byte_match_statement", value=byte_match_statement, expected_type=type_hints["byte_match_statement"])
10231
10383
  check_type(argname="argument geo_match_statement", value=geo_match_statement, expected_type=type_hints["geo_match_statement"])
10232
10384
  check_type(argname="argument ip_set_reference_statement", value=ip_set_reference_statement, expected_type=type_hints["ip_set_reference_statement"])
@@ -10242,6 +10394,8 @@ class CfnRuleGroup(
10242
10394
  self._values: typing.Dict[builtins.str, typing.Any] = {}
10243
10395
  if and_statement is not None:
10244
10396
  self._values["and_statement"] = and_statement
10397
+ if asn_match_statement is not None:
10398
+ self._values["asn_match_statement"] = asn_match_statement
10245
10399
  if byte_match_statement is not None:
10246
10400
  self._values["byte_match_statement"] = byte_match_statement
10247
10401
  if geo_match_statement is not None:
@@ -10280,6 +10434,16 @@ class CfnRuleGroup(
10280
10434
  result = self._values.get("and_statement")
10281
10435
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.AndStatementProperty"]], result)
10282
10436
 
10437
+ @builtins.property
10438
+ def asn_match_statement(
10439
+ self,
10440
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.AsnMatchStatementProperty"]]:
10441
+ '''
10442
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-asnmatchstatement
10443
+ '''
10444
+ result = self._values.get("asn_match_statement")
10445
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.AsnMatchStatementProperty"]], result)
10446
+
10283
10447
  @builtins.property
10284
10448
  def byte_match_statement(
10285
10449
  self,
@@ -11173,6 +11337,7 @@ class CfnWebACL(
11173
11337
  data_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.DataProtectionConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
11174
11338
  description: typing.Optional[builtins.str] = None,
11175
11339
  name: typing.Optional[builtins.str] = None,
11340
+ on_source_d_do_s_protection_config: typing.Any = None,
11176
11341
  rules: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RuleProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
11177
11342
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
11178
11343
  token_domains: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11190,6 +11355,7 @@ class CfnWebACL(
11190
11355
  :param data_protection_config: Specifies data protection to apply to the web request data for the web ACL. This is a web ACL level data protection option. The data protection that you configure for the web ACL alters the data that's available for any other data collection activity, including your AWS WAF logging destinations, web ACL request sampling, and Amazon Security Lake data collection and management. Your other option for data protection is in the logging configuration, which only affects logging.
11191
11356
  :param description: A description of the web ACL that helps with identification.
11192
11357
  :param name: The name of the web ACL. You cannot change the name of a web ACL after you create it.
11358
+ :param on_source_d_do_s_protection_config: Configures the level of DDoS protection that applies to web ACLs associated with Application Load Balancers.
11193
11359
  :param rules: The rule statements used to identify the web requests that you want to manage. Each rule includes one top-level statement that AWS WAF uses to identify matching web requests, and parameters that govern how AWS WAF handles them.
11194
11360
  :param tags: Key:value pairs associated with an AWS resource. The key:value pair can be anything you define. Typically, the tag key represents a category (such as "environment") and the tag value represents a specific value within that category (such as "test," "development," or "production"). You can add up to 50 tags to each AWS resource. .. epigraph:: To modify tags on existing resources, use the AWS WAF APIs or command line interface. With AWS CloudFormation , you can only add tags to AWS WAF resources during resource creation.
11195
11361
  :param token_domains: Specifies the domains that AWS WAF should accept in a web request token. This enables the use of tokens across multiple protected websites. When AWS WAF provides a token, it uses the domain of the AWS resource that the web ACL is protecting. If you don't specify a list of token domains, AWS WAF accepts tokens only for the domain of the protected resource. With a token domain list, AWS WAF accepts the resource's host domain plus all domains in the token domain list, including their prefixed subdomains.
@@ -11209,6 +11375,7 @@ class CfnWebACL(
11209
11375
  data_protection_config=data_protection_config,
11210
11376
  description=description,
11211
11377
  name=name,
11378
+ on_source_d_do_s_protection_config=on_source_d_do_s_protection_config,
11212
11379
  rules=rules,
11213
11380
  tags=tags,
11214
11381
  token_domains=token_domains,
@@ -11466,6 +11633,19 @@ class CfnWebACL(
11466
11633
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
11467
11634
  jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]
11468
11635
 
11636
+ @builtins.property
11637
+ @jsii.member(jsii_name="onSourceDDoSProtectionConfig")
11638
+ def on_source_d_do_s_protection_config(self) -> typing.Any:
11639
+ '''Configures the level of DDoS protection that applies to web ACLs associated with Application Load Balancers.'''
11640
+ return typing.cast(typing.Any, jsii.get(self, "onSourceDDoSProtectionConfig"))
11641
+
11642
+ @on_source_d_do_s_protection_config.setter
11643
+ def on_source_d_do_s_protection_config(self, value: typing.Any) -> None:
11644
+ if __debug__:
11645
+ type_hints = typing.get_type_hints(_typecheckingstub__1180464a1661a74085b880efee37841284ce892adac9d3cda8cb5c117c625ba2)
11646
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
11647
+ jsii.set(self, "onSourceDDoSProtectionConfig", value) # pyright: ignore[reportArgumentType]
11648
+
11469
11649
  @builtins.property
11470
11650
  @jsii.member(jsii_name="rules")
11471
11651
  def rules(
@@ -11535,6 +11715,8 @@ class CfnWebACL(
11535
11715
 
11536
11716
  This configuration is used in ``ManagedRuleGroupConfig`` .
11537
11717
 
11718
+ For additional information about this and the other intelligent threat mitigation rule groups, see `Intelligent threat mitigation in AWS WAF <https://docs.aws.amazon.com/waf/latest/developerguide/waf-managed-protections>`_ and `AWS Managed Rules rule groups list <https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-list>`_ in the *AWS WAF Developer Guide* .
11719
+
11538
11720
  :param creation_path: The path of the account creation endpoint for your application. This is the page on your website that accepts the completed registration form for a new user. This page must accept ``POST`` requests. For example, for the URL ``https://example.com/web/newaccount`` , you would provide the path ``/web/newaccount`` . Account creation page paths that start with the path that you provide are considered a match. For example ``/web/newaccount`` matches the account creation paths ``/web/newaccount`` , ``/web/newaccount/`` , ``/web/newaccountPage`` , and ``/web/newaccount/thisPage`` , but doesn't match the path ``/home/web/newaccount`` or ``/website/newaccount`` .
11539
11721
  :param registration_page_path: The path of the account registration endpoint for your application. This is the page on your website that presents the registration form to new users. .. epigraph:: This page must accept ``GET`` text/html requests. For example, for the URL ``https://example.com/web/registration`` , you would provide the path ``/web/registration`` . Registration page paths that start with the path that you provide are considered a match. For example ``/web/registration`` matches the registration paths ``/web/registration`` , ``/web/registration/`` , ``/web/registrationPage`` , and ``/web/registration/thisPage`` , but doesn't match the path ``/home/web/registration`` or ``/website/registration`` .
11540
11722
  :param request_inspection: The criteria for inspecting account creation requests, used by the ACFP rule group to validate and track account creation attempts.
@@ -11720,6 +11902,8 @@ class CfnWebACL(
11720
11902
 
11721
11903
  This configuration is used in ``ManagedRuleGroupConfig`` .
11722
11904
 
11905
+ For additional information about this and the other intelligent threat mitigation rule groups, see `Intelligent threat mitigation in AWS WAF <https://docs.aws.amazon.com/waf/latest/developerguide/waf-managed-protections>`_ and `AWS Managed Rules rule groups list <https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-list>`_ in the *AWS WAF Developer Guide* .
11906
+
11723
11907
  :param login_path: The path of the login endpoint for your application. For example, for the URL ``https://example.com/web/login`` , you would provide the path ``/web/login`` . Login paths that start with the path that you provide are considered a match. For example ``/web/login`` matches the login paths ``/web/login`` , ``/web/login/`` , ``/web/loginPage`` , and ``/web/login/thisPage`` , but doesn't match the login path ``/home/web/login`` or ``/website/login`` . The rule group inspects only HTTP ``POST`` requests to your specified login endpoint.
11724
11908
  :param enable_regex_in_path: Allow the use of regular expressions in the login page path.
11725
11909
  :param request_inspection: The criteria for inspecting login requests, used by the ATP rule group to validate credentials usage.
@@ -11850,6 +12034,93 @@ class CfnWebACL(
11850
12034
  k + "=" + repr(v) for k, v in self._values.items()
11851
12035
  )
11852
12036
 
12037
+ @jsii.data_type(
12038
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty",
12039
+ jsii_struct_bases=[],
12040
+ name_mapping={
12041
+ "client_side_action_config": "clientSideActionConfig",
12042
+ "sensitivity_to_block": "sensitivityToBlock",
12043
+ },
12044
+ )
12045
+ class AWSManagedRulesAntiDDoSRuleSetProperty:
12046
+ def __init__(
12047
+ self,
12048
+ *,
12049
+ client_side_action_config: typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.ClientSideActionConfigProperty", typing.Dict[builtins.str, typing.Any]]],
12050
+ sensitivity_to_block: typing.Optional[builtins.str] = None,
12051
+ ) -> None:
12052
+ '''Configures how to use the AntiDDOS AWS managed rule group in the web ACL.
12053
+
12054
+ :param client_side_action_config: Client side action config for AntiDDOS AMR.
12055
+ :param sensitivity_to_block:
12056
+
12057
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-awsmanagedrulesantiddosruleset.html
12058
+ :exampleMetadata: fixture=_generated
12059
+
12060
+ Example::
12061
+
12062
+ # The code below shows an example of how to instantiate this type.
12063
+ # The values are placeholders you should change.
12064
+ from aws_cdk import aws_wafv2 as wafv2
12065
+
12066
+ a_wSManaged_rules_anti_dDo_sRule_set_property = wafv2.CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty(
12067
+ client_side_action_config=wafv2.CfnWebACL.ClientSideActionConfigProperty(
12068
+ challenge=wafv2.CfnWebACL.ClientSideActionProperty(
12069
+ usage_of_action="usageOfAction",
12070
+
12071
+ # the properties below are optional
12072
+ exempt_uri_regular_expressions=[wafv2.CfnWebACL.RegexProperty(
12073
+ regex_string="regexString"
12074
+ )],
12075
+ sensitivity="sensitivity"
12076
+ )
12077
+ ),
12078
+
12079
+ # the properties below are optional
12080
+ sensitivity_to_block="sensitivityToBlock"
12081
+ )
12082
+ '''
12083
+ if __debug__:
12084
+ type_hints = typing.get_type_hints(_typecheckingstub__9315d92e3528c134a601f6cf9b27df2b90e082b1e29a17eadf8fbf68ac10e8c4)
12085
+ check_type(argname="argument client_side_action_config", value=client_side_action_config, expected_type=type_hints["client_side_action_config"])
12086
+ check_type(argname="argument sensitivity_to_block", value=sensitivity_to_block, expected_type=type_hints["sensitivity_to_block"])
12087
+ self._values: typing.Dict[builtins.str, typing.Any] = {
12088
+ "client_side_action_config": client_side_action_config,
12089
+ }
12090
+ if sensitivity_to_block is not None:
12091
+ self._values["sensitivity_to_block"] = sensitivity_to_block
12092
+
12093
+ @builtins.property
12094
+ def client_side_action_config(
12095
+ self,
12096
+ ) -> typing.Union[_IResolvable_da3f097b, "CfnWebACL.ClientSideActionConfigProperty"]:
12097
+ '''Client side action config for AntiDDOS AMR.
12098
+
12099
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-awsmanagedrulesantiddosruleset.html#cfn-wafv2-webacl-awsmanagedrulesantiddosruleset-clientsideactionconfig
12100
+ '''
12101
+ result = self._values.get("client_side_action_config")
12102
+ assert result is not None, "Required property 'client_side_action_config' is missing"
12103
+ return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnWebACL.ClientSideActionConfigProperty"], result)
12104
+
12105
+ @builtins.property
12106
+ def sensitivity_to_block(self) -> typing.Optional[builtins.str]:
12107
+ '''
12108
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-awsmanagedrulesantiddosruleset.html#cfn-wafv2-webacl-awsmanagedrulesantiddosruleset-sensitivitytoblock
12109
+ '''
12110
+ result = self._values.get("sensitivity_to_block")
12111
+ return typing.cast(typing.Optional[builtins.str], result)
12112
+
12113
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
12114
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
12115
+
12116
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
12117
+ return not (rhs == self)
12118
+
12119
+ def __repr__(self) -> str:
12120
+ return "AWSManagedRulesAntiDDoSRuleSetProperty(%s)" % ", ".join(
12121
+ k + "=" + repr(v) for k, v in self._values.items()
12122
+ )
12123
+
11853
12124
  @jsii.data_type(
11854
12125
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.AWSManagedRulesBotControlRuleSetProperty",
11855
12126
  jsii_struct_bases=[],
@@ -11869,6 +12140,8 @@ class CfnWebACL(
11869
12140
 
11870
12141
  This configuration is used in ``ManagedRuleGroupConfig`` .
11871
12142
 
12143
+ For additional information about this and the other intelligent threat mitigation rule groups, see `Intelligent threat mitigation in AWS WAF <https://docs.aws.amazon.com/waf/latest/developerguide/waf-managed-protections>`_ and `AWS Managed Rules rule groups list <https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-list>`_ in the *AWS WAF Developer Guide* .
12144
+
11872
12145
  :param inspection_level: The inspection level to use for the Bot Control rule group. The common level is the least expensive. The targeted level includes all common level rules and adds rules with more advanced inspection criteria. For details, see `AWS WAF Bot Control rule group <https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-bot.html>`_ in the *AWS WAF Developer Guide* .
11873
12146
  :param enable_machine_learning: Applies only to the targeted inspection level. Determines whether to use machine learning (ML) to analyze your web traffic for bot-related activity. Machine learning is required for the Bot Control rules ``TGT_ML_CoordinatedActivityLow`` and ``TGT_ML_CoordinatedActivityMedium`` , which inspect for anomalous behavior that might indicate distributed, coordinated bot activity. For more information about this choice, see the listing for these rules in the table at `Bot Control rules listing <https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-bot.html#aws-managed-rule-groups-bot-rules>`_ in the *AWS WAF Developer Guide* . Default: ``TRUE``
11874
12147
 
@@ -12061,6 +12334,83 @@ class CfnWebACL(
12061
12334
  k + "=" + repr(v) for k, v in self._values.items()
12062
12335
  )
12063
12336
 
12337
+ @jsii.data_type(
12338
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.AsnMatchStatementProperty",
12339
+ jsii_struct_bases=[],
12340
+ name_mapping={
12341
+ "asn_list": "asnList",
12342
+ "forwarded_ip_config": "forwardedIpConfig",
12343
+ },
12344
+ )
12345
+ class AsnMatchStatementProperty:
12346
+ def __init__(
12347
+ self,
12348
+ *,
12349
+ asn_list: typing.Optional[typing.Union[typing.Sequence[jsii.Number], _IResolvable_da3f097b]] = None,
12350
+ forwarded_ip_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.ForwardedIPConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
12351
+ ) -> None:
12352
+ '''
12353
+ :param asn_list:
12354
+ :param forwarded_ip_config:
12355
+
12356
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-asnmatchstatement.html
12357
+ :exampleMetadata: fixture=_generated
12358
+
12359
+ Example::
12360
+
12361
+ # The code below shows an example of how to instantiate this type.
12362
+ # The values are placeholders you should change.
12363
+ from aws_cdk import aws_wafv2 as wafv2
12364
+
12365
+ asn_match_statement_property = wafv2.CfnWebACL.AsnMatchStatementProperty(
12366
+ asn_list=[123],
12367
+ forwarded_ip_config=wafv2.CfnWebACL.ForwardedIPConfigurationProperty(
12368
+ fallback_behavior="fallbackBehavior",
12369
+ header_name="headerName"
12370
+ )
12371
+ )
12372
+ '''
12373
+ if __debug__:
12374
+ type_hints = typing.get_type_hints(_typecheckingstub__8995ed18208bf9dcca46075f2ba4072467a8327472896fee5efcf1415648dfe8)
12375
+ check_type(argname="argument asn_list", value=asn_list, expected_type=type_hints["asn_list"])
12376
+ check_type(argname="argument forwarded_ip_config", value=forwarded_ip_config, expected_type=type_hints["forwarded_ip_config"])
12377
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
12378
+ if asn_list is not None:
12379
+ self._values["asn_list"] = asn_list
12380
+ if forwarded_ip_config is not None:
12381
+ self._values["forwarded_ip_config"] = forwarded_ip_config
12382
+
12383
+ @builtins.property
12384
+ def asn_list(
12385
+ self,
12386
+ ) -> typing.Optional[typing.Union[typing.List[jsii.Number], _IResolvable_da3f097b]]:
12387
+ '''
12388
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-asnmatchstatement.html#cfn-wafv2-webacl-asnmatchstatement-asnlist
12389
+ '''
12390
+ result = self._values.get("asn_list")
12391
+ return typing.cast(typing.Optional[typing.Union[typing.List[jsii.Number], _IResolvable_da3f097b]], result)
12392
+
12393
+ @builtins.property
12394
+ def forwarded_ip_config(
12395
+ self,
12396
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.ForwardedIPConfigurationProperty"]]:
12397
+ '''
12398
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-asnmatchstatement.html#cfn-wafv2-webacl-asnmatchstatement-forwardedipconfig
12399
+ '''
12400
+ result = self._values.get("forwarded_ip_config")
12401
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.ForwardedIPConfigurationProperty"]], result)
12402
+
12403
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
12404
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
12405
+
12406
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
12407
+ return not (rhs == self)
12408
+
12409
+ def __repr__(self) -> str:
12410
+ return "AsnMatchStatementProperty(%s)" % ", ".join(
12411
+ k + "=" + repr(v) for k, v in self._values.items()
12412
+ )
12413
+
12064
12414
  @jsii.data_type(
12065
12415
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.AssociationConfigProperty",
12066
12416
  jsii_struct_bases=[],
@@ -12790,6 +13140,165 @@ class CfnWebACL(
12790
13140
  k + "=" + repr(v) for k, v in self._values.items()
12791
13141
  )
12792
13142
 
13143
+ @jsii.data_type(
13144
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.ClientSideActionConfigProperty",
13145
+ jsii_struct_bases=[],
13146
+ name_mapping={"challenge": "challenge"},
13147
+ )
13148
+ class ClientSideActionConfigProperty:
13149
+ def __init__(
13150
+ self,
13151
+ *,
13152
+ challenge: typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.ClientSideActionProperty", typing.Dict[builtins.str, typing.Any]]],
13153
+ ) -> None:
13154
+ '''Client side action config for AntiDDOS AMR.
13155
+
13156
+ :param challenge: Client side action config for AntiDDOS AMR.
13157
+
13158
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideactionconfig.html
13159
+ :exampleMetadata: fixture=_generated
13160
+
13161
+ Example::
13162
+
13163
+ # The code below shows an example of how to instantiate this type.
13164
+ # The values are placeholders you should change.
13165
+ from aws_cdk import aws_wafv2 as wafv2
13166
+
13167
+ client_side_action_config_property = wafv2.CfnWebACL.ClientSideActionConfigProperty(
13168
+ challenge=wafv2.CfnWebACL.ClientSideActionProperty(
13169
+ usage_of_action="usageOfAction",
13170
+
13171
+ # the properties below are optional
13172
+ exempt_uri_regular_expressions=[wafv2.CfnWebACL.RegexProperty(
13173
+ regex_string="regexString"
13174
+ )],
13175
+ sensitivity="sensitivity"
13176
+ )
13177
+ )
13178
+ '''
13179
+ if __debug__:
13180
+ type_hints = typing.get_type_hints(_typecheckingstub__776e223dfae595baf3dc144792b2d7158c77847ddf24785048d19516ebcb955b)
13181
+ check_type(argname="argument challenge", value=challenge, expected_type=type_hints["challenge"])
13182
+ self._values: typing.Dict[builtins.str, typing.Any] = {
13183
+ "challenge": challenge,
13184
+ }
13185
+
13186
+ @builtins.property
13187
+ def challenge(
13188
+ self,
13189
+ ) -> typing.Union[_IResolvable_da3f097b, "CfnWebACL.ClientSideActionProperty"]:
13190
+ '''Client side action config for AntiDDOS AMR.
13191
+
13192
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideactionconfig.html#cfn-wafv2-webacl-clientsideactionconfig-challenge
13193
+ '''
13194
+ result = self._values.get("challenge")
13195
+ assert result is not None, "Required property 'challenge' is missing"
13196
+ return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnWebACL.ClientSideActionProperty"], result)
13197
+
13198
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
13199
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
13200
+
13201
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
13202
+ return not (rhs == self)
13203
+
13204
+ def __repr__(self) -> str:
13205
+ return "ClientSideActionConfigProperty(%s)" % ", ".join(
13206
+ k + "=" + repr(v) for k, v in self._values.items()
13207
+ )
13208
+
13209
+ @jsii.data_type(
13210
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.ClientSideActionProperty",
13211
+ jsii_struct_bases=[],
13212
+ name_mapping={
13213
+ "usage_of_action": "usageOfAction",
13214
+ "exempt_uri_regular_expressions": "exemptUriRegularExpressions",
13215
+ "sensitivity": "sensitivity",
13216
+ },
13217
+ )
13218
+ class ClientSideActionProperty:
13219
+ def __init__(
13220
+ self,
13221
+ *,
13222
+ usage_of_action: builtins.str,
13223
+ exempt_uri_regular_expressions: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RegexProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
13224
+ sensitivity: typing.Optional[builtins.str] = None,
13225
+ ) -> None:
13226
+ '''Client side action config for AntiDDOS AMR.
13227
+
13228
+ :param usage_of_action:
13229
+ :param exempt_uri_regular_expressions:
13230
+ :param sensitivity:
13231
+
13232
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideaction.html
13233
+ :exampleMetadata: fixture=_generated
13234
+
13235
+ Example::
13236
+
13237
+ # The code below shows an example of how to instantiate this type.
13238
+ # The values are placeholders you should change.
13239
+ from aws_cdk import aws_wafv2 as wafv2
13240
+
13241
+ client_side_action_property = wafv2.CfnWebACL.ClientSideActionProperty(
13242
+ usage_of_action="usageOfAction",
13243
+
13244
+ # the properties below are optional
13245
+ exempt_uri_regular_expressions=[wafv2.CfnWebACL.RegexProperty(
13246
+ regex_string="regexString"
13247
+ )],
13248
+ sensitivity="sensitivity"
13249
+ )
13250
+ '''
13251
+ if __debug__:
13252
+ type_hints = typing.get_type_hints(_typecheckingstub__de331114f33ba80cf8bd042358ad9467ab930574012abea7782f175fd2a7b649)
13253
+ check_type(argname="argument usage_of_action", value=usage_of_action, expected_type=type_hints["usage_of_action"])
13254
+ check_type(argname="argument exempt_uri_regular_expressions", value=exempt_uri_regular_expressions, expected_type=type_hints["exempt_uri_regular_expressions"])
13255
+ check_type(argname="argument sensitivity", value=sensitivity, expected_type=type_hints["sensitivity"])
13256
+ self._values: typing.Dict[builtins.str, typing.Any] = {
13257
+ "usage_of_action": usage_of_action,
13258
+ }
13259
+ if exempt_uri_regular_expressions is not None:
13260
+ self._values["exempt_uri_regular_expressions"] = exempt_uri_regular_expressions
13261
+ if sensitivity is not None:
13262
+ self._values["sensitivity"] = sensitivity
13263
+
13264
+ @builtins.property
13265
+ def usage_of_action(self) -> builtins.str:
13266
+ '''
13267
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideaction.html#cfn-wafv2-webacl-clientsideaction-usageofaction
13268
+ '''
13269
+ result = self._values.get("usage_of_action")
13270
+ assert result is not None, "Required property 'usage_of_action' is missing"
13271
+ return typing.cast(builtins.str, result)
13272
+
13273
+ @builtins.property
13274
+ def exempt_uri_regular_expressions(
13275
+ self,
13276
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnWebACL.RegexProperty"]]]]:
13277
+ '''
13278
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideaction.html#cfn-wafv2-webacl-clientsideaction-exempturiregularexpressions
13279
+ '''
13280
+ result = self._values.get("exempt_uri_regular_expressions")
13281
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnWebACL.RegexProperty"]]]], result)
13282
+
13283
+ @builtins.property
13284
+ def sensitivity(self) -> typing.Optional[builtins.str]:
13285
+ '''
13286
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideaction.html#cfn-wafv2-webacl-clientsideaction-sensitivity
13287
+ '''
13288
+ result = self._values.get("sensitivity")
13289
+ return typing.cast(typing.Optional[builtins.str], result)
13290
+
13291
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
13292
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
13293
+
13294
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
13295
+ return not (rhs == self)
13296
+
13297
+ def __repr__(self) -> str:
13298
+ return "ClientSideActionProperty(%s)" % ", ".join(
13299
+ k + "=" + repr(v) for k, v in self._values.items()
13300
+ )
13301
+
12793
13302
  @jsii.data_type(
12794
13303
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.CookieMatchPatternProperty",
12795
13304
  jsii_struct_bases=[],
@@ -14282,7 +14791,7 @@ class CfnWebACL(
14282
14791
 
14283
14792
  If the specified header isn't present in the request, AWS WAF doesn't apply the rule to the web request at all.
14284
14793
 
14285
- This configuration is used for ``GeoMatchStatement`` and ``RateBasedStatement`` . For ``IPSetReferenceStatement`` , use ``IPSetForwardedIPConfig`` instead.
14794
+ This configuration is used for ``GeoMatchStatement`` , ``AsnMatchStatement`` , and ``RateBasedStatement`` . For ``IPSetReferenceStatement`` , use ``IPSetForwardedIPConfig`` instead.
14286
14795
 
14287
14796
  AWS WAF only evaluates the first IP address found in the specified HTTP header.
14288
14797
 
@@ -15441,6 +15950,7 @@ class CfnWebACL(
15441
15950
  jsii_struct_bases=[],
15442
15951
  name_mapping={
15443
15952
  "aws_managed_rules_acfp_rule_set": "awsManagedRulesAcfpRuleSet",
15953
+ "aws_managed_rules_anti_d_do_s_rule_set": "awsManagedRulesAntiDDoSRuleSet",
15444
15954
  "aws_managed_rules_atp_rule_set": "awsManagedRulesAtpRuleSet",
15445
15955
  "aws_managed_rules_bot_control_rule_set": "awsManagedRulesBotControlRuleSet",
15446
15956
  "login_path": "loginPath",
@@ -15454,6 +15964,7 @@ class CfnWebACL(
15454
15964
  self,
15455
15965
  *,
15456
15966
  aws_managed_rules_acfp_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.AWSManagedRulesACFPRuleSetProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
15967
+ aws_managed_rules_anti_d_do_s_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
15457
15968
  aws_managed_rules_atp_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.AWSManagedRulesATPRuleSetProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
15458
15969
  aws_managed_rules_bot_control_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.AWSManagedRulesBotControlRuleSetProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
15459
15970
  login_path: typing.Optional[builtins.str] = None,
@@ -15470,6 +15981,7 @@ class CfnWebACL(
15470
15981
  - Use the ``AWSManagedRulesBotControlRuleSet`` configuration object to configure the protection level that you want the Bot Control rule group to use.
15471
15982
 
15472
15983
  :param aws_managed_rules_acfp_rule_set: Additional configuration for using the account creation fraud prevention (ACFP) managed rule group, ``AWSManagedRulesACFPRuleSet`` . Use this to provide account creation request information to the rule group. For web ACLs that protect CloudFront distributions, use this to also provide the information about how your distribution responds to account creation requests. For information about using the ACFP managed rule group, see `AWS WAF Fraud Control account creation fraud prevention (ACFP) rule group <https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-acfp.html>`_ and `AWS WAF Fraud Control account creation fraud prevention (ACFP) <https://docs.aws.amazon.com/waf/latest/developerguide/waf-acfp.html>`_ in the *AWS WAF Developer Guide* .
15984
+ :param aws_managed_rules_anti_d_do_s_rule_set: Configures how to use the AntiDDOS AWS managed rule group in the web ACL.
15473
15985
  :param aws_managed_rules_atp_rule_set: Additional configuration for using the account takeover prevention (ATP) managed rule group, ``AWSManagedRulesATPRuleSet`` . Use this to provide login request information to the rule group. For web ACLs that protect CloudFront distributions, use this to also provide the information about how your distribution responds to login requests. This configuration replaces the individual configuration fields in ``ManagedRuleGroupConfig`` and provides additional feature configuration. For information about using the ATP managed rule group, see `AWS WAF Fraud Control account takeover prevention (ATP) rule group <https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-atp.html>`_ and `AWS WAF Fraud Control account takeover prevention (ATP) <https://docs.aws.amazon.com/waf/latest/developerguide/waf-atp.html>`_ in the *AWS WAF Developer Guide* .
15474
15986
  :param aws_managed_rules_bot_control_rule_set: Additional configuration for using the Bot Control managed rule group. Use this to specify the inspection level that you want to use. For information about using the Bot Control managed rule group, see `AWS WAF Bot Control rule group <https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-bot.html>`_ and `AWS WAF Bot Control <https://docs.aws.amazon.com/waf/latest/developerguide/waf-bot-control.html>`_ in the *AWS WAF Developer Guide* .
15475
15987
  :param login_path: .. epigraph:: Instead of this setting, provide your configuration under ``AWSManagedRulesATPRuleSet`` .
@@ -15534,6 +16046,22 @@ class CfnWebACL(
15534
16046
  )
15535
16047
  )
15536
16048
  ),
16049
+ aws_managed_rules_anti_dDo_sRule_set=wafv2.CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty(
16050
+ client_side_action_config=wafv2.CfnWebACL.ClientSideActionConfigProperty(
16051
+ challenge=wafv2.CfnWebACL.ClientSideActionProperty(
16052
+ usage_of_action="usageOfAction",
16053
+
16054
+ # the properties below are optional
16055
+ exempt_uri_regular_expressions=[wafv2.CfnWebACL.RegexProperty(
16056
+ regex_string="regexString"
16057
+ )],
16058
+ sensitivity="sensitivity"
16059
+ )
16060
+ ),
16061
+
16062
+ # the properties below are optional
16063
+ sensitivity_to_block="sensitivityToBlock"
16064
+ ),
15537
16065
  aws_managed_rules_atp_rule_set=wafv2.CfnWebACL.AWSManagedRulesATPRuleSetProperty(
15538
16066
  login_path="loginPath",
15539
16067
 
@@ -15588,6 +16116,7 @@ class CfnWebACL(
15588
16116
  if __debug__:
15589
16117
  type_hints = typing.get_type_hints(_typecheckingstub__517661cb97cc58c609587fc6ca9907b2e23d8f3cd6e1e4034f3f6d82b85d2d77)
15590
16118
  check_type(argname="argument aws_managed_rules_acfp_rule_set", value=aws_managed_rules_acfp_rule_set, expected_type=type_hints["aws_managed_rules_acfp_rule_set"])
16119
+ check_type(argname="argument aws_managed_rules_anti_d_do_s_rule_set", value=aws_managed_rules_anti_d_do_s_rule_set, expected_type=type_hints["aws_managed_rules_anti_d_do_s_rule_set"])
15591
16120
  check_type(argname="argument aws_managed_rules_atp_rule_set", value=aws_managed_rules_atp_rule_set, expected_type=type_hints["aws_managed_rules_atp_rule_set"])
15592
16121
  check_type(argname="argument aws_managed_rules_bot_control_rule_set", value=aws_managed_rules_bot_control_rule_set, expected_type=type_hints["aws_managed_rules_bot_control_rule_set"])
15593
16122
  check_type(argname="argument login_path", value=login_path, expected_type=type_hints["login_path"])
@@ -15597,6 +16126,8 @@ class CfnWebACL(
15597
16126
  self._values: typing.Dict[builtins.str, typing.Any] = {}
15598
16127
  if aws_managed_rules_acfp_rule_set is not None:
15599
16128
  self._values["aws_managed_rules_acfp_rule_set"] = aws_managed_rules_acfp_rule_set
16129
+ if aws_managed_rules_anti_d_do_s_rule_set is not None:
16130
+ self._values["aws_managed_rules_anti_d_do_s_rule_set"] = aws_managed_rules_anti_d_do_s_rule_set
15600
16131
  if aws_managed_rules_atp_rule_set is not None:
15601
16132
  self._values["aws_managed_rules_atp_rule_set"] = aws_managed_rules_atp_rule_set
15602
16133
  if aws_managed_rules_bot_control_rule_set is not None:
@@ -15625,6 +16156,17 @@ class CfnWebACL(
15625
16156
  result = self._values.get("aws_managed_rules_acfp_rule_set")
15626
16157
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AWSManagedRulesACFPRuleSetProperty"]], result)
15627
16158
 
16159
+ @builtins.property
16160
+ def aws_managed_rules_anti_d_do_s_rule_set(
16161
+ self,
16162
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty"]]:
16163
+ '''Configures how to use the AntiDDOS AWS managed rule group in the web ACL.
16164
+
16165
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupconfig.html#cfn-wafv2-webacl-managedrulegroupconfig-awsmanagedrulesantiddosruleset
16166
+ '''
16167
+ result = self._values.get("aws_managed_rules_anti_d_do_s_rule_set")
16168
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty"]], result)
16169
+
15628
16170
  @builtins.property
15629
16171
  def aws_managed_rules_atp_rule_set(
15630
16172
  self,
@@ -15751,8 +16293,8 @@ class CfnWebACL(
15751
16293
  :param name: The name of the managed rule group. You use this, along with the vendor name, to identify the rule group.
15752
16294
  :param vendor_name: The name of the managed rule group vendor. You use this, along with the rule group name, to identify a rule group.
15753
16295
  :param excluded_rules: Rules in the referenced rule group whose actions are set to ``Count`` . .. epigraph:: Instead of this option, use ``RuleActionOverrides`` . It accepts any valid action setting, including ``Count`` .
15754
- :param managed_rule_group_configs: Additional information that's used by a managed rule group. Many managed rule groups don't require this. The rule groups used for intelligent threat mitigation require additional configuration: - Use the ``AWSManagedRulesACFPRuleSet`` configuration object to configure the account creation fraud prevention managed rule group. The configuration includes the registration and sign-up pages of your application and the locations in the account creation request payload of data, such as the user email and phone number fields. - Use the ``AWSManagedRulesATPRuleSet`` configuration object to configure the account takeover prevention managed rule group. The configuration includes the sign-in page of your application and the locations in the login request payload of data such as the username and password. - Use the ``AWSManagedRulesBotControlRuleSet`` configuration object to configure the protection level that you want the Bot Control rule group to use.
15755
- :param rule_action_overrides: Action settings to use in the place of the rule actions that are configured inside the rule group. You specify one override for each rule whose action you want to change. .. epigraph:: Take care to verify the rule names in your overrides. If you provide a rule name that doesn't match the name of any rule in the rule group, AWS WAF doesn't return an error and doesn't apply the override setting. You can use overrides for testing, for example you can override all of rule actions to ``Count`` and then monitor the resulting count metrics to understand how the rule group would handle your web traffic. You can also permanently override some or all actions, to modify how the rule group manages your web traffic.
16296
+ :param managed_rule_group_configs: Additional information that's used by a managed rule group. Many managed rule groups don't require this. The rule groups used for intelligent threat mitigation require additional configuration: - Use the ``AWSManagedRulesACFPRuleSet`` configuration object to configure the account creation fraud prevention managed rule group. The configuration includes the registration and sign-up pages of your application and the locations in the account creation request payload of data, such as the user email and phone number fields. - Use the ``AWSManagedRulesAntiDDoSRuleSet`` configuration object to configure the anti-DDoS managed rule group. The configuration includes the sensitivity levels to use in the rules that typically block and challenge requests that might be participating in DDoS attacks and the specification to use to indicate whether a request can handle a silent browser challenge. - Use the ``AWSManagedRulesATPRuleSet`` configuration object to configure the account takeover prevention managed rule group. The configuration includes the sign-in page of your application and the locations in the login request payload of data such as the username and password. - Use the ``AWSManagedRulesBotControlRuleSet`` configuration object to configure the protection level that you want the Bot Control rule group to use.
16297
+ :param rule_action_overrides: Action settings to use in the place of the rule actions that are configured inside the rule group. You specify one override for each rule whose action you want to change. .. epigraph:: Verify the rule names in your overrides carefully. With managed rule groups, AWS WAF silently ignores any override that uses an invalid rule name. With customer-owned rule groups, invalid rule names in your overrides will cause web ACL updates to fail. An invalid rule name is any name that doesn't exactly match the case-sensitive name of an existing rule in the rule group. You can use overrides for testing, for example you can override all of rule actions to ``Count`` and then monitor the resulting count metrics to understand how the rule group would handle your web traffic. You can also permanently override some or all actions, to modify how the rule group manages your web traffic.
15756
16298
  :param scope_down_statement: An optional nested statement that narrows the scope of the web requests that are evaluated by the managed rule group. Requests are only evaluated by the rule group if they 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.
15757
16299
  :param version: The version of the managed rule group to use. If you specify this, the version setting is fixed until you change it. If you don't specify this, AWS WAF uses the vendor's default version, and then keeps the version at the vendor's default when the vendor updates the managed rule group settings.
15758
16300
 
@@ -15835,6 +16377,7 @@ class CfnWebACL(
15835
16377
  The rule groups used for intelligent threat mitigation require additional configuration:
15836
16378
 
15837
16379
  - Use the ``AWSManagedRulesACFPRuleSet`` configuration object to configure the account creation fraud prevention managed rule group. The configuration includes the registration and sign-up pages of your application and the locations in the account creation request payload of data, such as the user email and phone number fields.
16380
+ - Use the ``AWSManagedRulesAntiDDoSRuleSet`` configuration object to configure the anti-DDoS managed rule group. The configuration includes the sensitivity levels to use in the rules that typically block and challenge requests that might be participating in DDoS attacks and the specification to use to indicate whether a request can handle a silent browser challenge.
15838
16381
  - Use the ``AWSManagedRulesATPRuleSet`` configuration object to configure the account takeover prevention managed rule group. The configuration includes the sign-in page of your application and the locations in the login request payload of data such as the username and password.
15839
16382
  - Use the ``AWSManagedRulesBotControlRuleSet`` configuration object to configure the protection level that you want the Bot Control rule group to use.
15840
16383
 
@@ -15852,7 +16395,7 @@ class CfnWebACL(
15852
16395
  You specify one override for each rule whose action you want to change.
15853
16396
  .. epigraph::
15854
16397
 
15855
- Take care to verify the rule names in your overrides. If you provide a rule name that doesn't match the name of any rule in the rule group, AWS WAF doesn't return an error and doesn't apply the override setting.
16398
+ Verify the rule names in your overrides carefully. With managed rule groups, AWS WAF silently ignores any override that uses an invalid rule name. With customer-owned rule groups, invalid rule names in your overrides will cause web ACL updates to fail. An invalid rule name is any name that doesn't exactly match the case-sensitive name of an existing rule in the rule group.
15856
16399
 
15857
16400
  You can use overrides for testing, for example you can override all of rule actions to ``Count`` and then monitor the resulting count metrics to understand how the rule group would handle your web traffic. You can also permanently override some or all actions, to modify how the rule group manages your web traffic.
15858
16401
 
@@ -15952,6 +16495,57 @@ class CfnWebACL(
15952
16495
  k + "=" + repr(v) for k, v in self._values.items()
15953
16496
  )
15954
16497
 
16498
+ @jsii.data_type(
16499
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.OnSourceDDoSProtectionConfigProperty",
16500
+ jsii_struct_bases=[],
16501
+ name_mapping={"alb_low_reputation_mode": "albLowReputationMode"},
16502
+ )
16503
+ class OnSourceDDoSProtectionConfigProperty:
16504
+ def __init__(self, *, alb_low_reputation_mode: builtins.str) -> None:
16505
+ '''Configures the options for on-source DDoS protection provided by supported resource type.
16506
+
16507
+ :param alb_low_reputation_mode:
16508
+
16509
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-onsourceddosprotectionconfig.html
16510
+ :exampleMetadata: fixture=_generated
16511
+
16512
+ Example::
16513
+
16514
+ # The code below shows an example of how to instantiate this type.
16515
+ # The values are placeholders you should change.
16516
+ from aws_cdk import aws_wafv2 as wafv2
16517
+
16518
+ on_source_dDo_sProtection_config_property = wafv2.CfnWebACL.OnSourceDDoSProtectionConfigProperty(
16519
+ alb_low_reputation_mode="albLowReputationMode"
16520
+ )
16521
+ '''
16522
+ if __debug__:
16523
+ type_hints = typing.get_type_hints(_typecheckingstub__b1d55e97c88ee1084655df55da4bb940ea39dc6807c3b4f425073a3a747e0dbc)
16524
+ check_type(argname="argument alb_low_reputation_mode", value=alb_low_reputation_mode, expected_type=type_hints["alb_low_reputation_mode"])
16525
+ self._values: typing.Dict[builtins.str, typing.Any] = {
16526
+ "alb_low_reputation_mode": alb_low_reputation_mode,
16527
+ }
16528
+
16529
+ @builtins.property
16530
+ def alb_low_reputation_mode(self) -> builtins.str:
16531
+ '''
16532
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-onsourceddosprotectionconfig.html#cfn-wafv2-webacl-onsourceddosprotectionconfig-alblowreputationmode
16533
+ '''
16534
+ result = self._values.get("alb_low_reputation_mode")
16535
+ assert result is not None, "Required property 'alb_low_reputation_mode' is missing"
16536
+ return typing.cast(builtins.str, result)
16537
+
16538
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
16539
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
16540
+
16541
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
16542
+ return not (rhs == self)
16543
+
16544
+ def __repr__(self) -> str:
16545
+ return "OnSourceDDoSProtectionConfigProperty(%s)" % ", ".join(
16546
+ k + "=" + repr(v) for k, v in self._values.items()
16547
+ )
16548
+
15955
16549
  @jsii.data_type(
15956
16550
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.OrStatementProperty",
15957
16551
  jsii_struct_bases=[],
@@ -16098,6 +16692,7 @@ class CfnWebACL(
16098
16692
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.RateBasedStatementCustomKeyProperty",
16099
16693
  jsii_struct_bases=[],
16100
16694
  name_mapping={
16695
+ "asn": "asn",
16101
16696
  "cookie": "cookie",
16102
16697
  "forwarded_ip": "forwardedIp",
16103
16698
  "header": "header",
@@ -16115,6 +16710,7 @@ class CfnWebACL(
16115
16710
  def __init__(
16116
16711
  self,
16117
16712
  *,
16713
+ asn: typing.Any = None,
16118
16714
  cookie: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RateLimitCookieProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
16119
16715
  forwarded_ip: typing.Any = None,
16120
16716
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RateLimitHeaderProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -16133,6 +16729,7 @@ class CfnWebACL(
16133
16729
 
16134
16730
  Web requests that are missing any of the components specified in the aggregation keys are omitted from the rate-based rule evaluation and handling.
16135
16731
 
16732
+ :param asn: Specifies the request's ASN as an aggregate key for a rate-based rule.
16136
16733
  :param cookie: Use the value of a cookie in the request as an aggregate key. Each distinct value in the cookie contributes to the aggregation instance. If you use a single cookie as your custom key, then each value fully defines an aggregation instance.
16137
16734
  :param forwarded_ip: Use the first IP address in an HTTP header as an aggregate key. Each distinct forwarded IP address contributes to the aggregation instance. When you specify an IP or forwarded IP in the custom key settings, you must also specify at least one other key to use. You can aggregate on only the forwarded IP address by specifying ``FORWARDED_IP`` in your rate-based statement's ``AggregateKeyType`` . With this option, you must specify the header to use in the rate-based rule's ``ForwardedIPConfig`` property.
16138
16735
  :param header: Use the value of a header in the request as an aggregate key. Each distinct value in the header contributes to the aggregation instance. If you use a single header as your custom key, then each value fully defines an aggregation instance.
@@ -16154,11 +16751,13 @@ class CfnWebACL(
16154
16751
  # The values are placeholders you should change.
16155
16752
  from aws_cdk import aws_wafv2 as wafv2
16156
16753
 
16754
+ # asn: Any
16157
16755
  # forwarded_ip: Any
16158
16756
  # http_method: Any
16159
16757
  # ip: Any
16160
16758
 
16161
16759
  rate_based_statement_custom_key_property = wafv2.CfnWebACL.RateBasedStatementCustomKeyProperty(
16760
+ asn=asn,
16162
16761
  cookie=wafv2.CfnWebACL.RateLimitCookieProperty(
16163
16762
  name="name",
16164
16763
  text_transformations=[wafv2.CfnWebACL.TextTransformationProperty(
@@ -16208,6 +16807,7 @@ class CfnWebACL(
16208
16807
  '''
16209
16808
  if __debug__:
16210
16809
  type_hints = typing.get_type_hints(_typecheckingstub__2edac52bcb13f69d4349ba55a4d083851908f1dd71831794e88ac043e1ade5a3)
16810
+ check_type(argname="argument asn", value=asn, expected_type=type_hints["asn"])
16211
16811
  check_type(argname="argument cookie", value=cookie, expected_type=type_hints["cookie"])
16212
16812
  check_type(argname="argument forwarded_ip", value=forwarded_ip, expected_type=type_hints["forwarded_ip"])
16213
16813
  check_type(argname="argument header", value=header, expected_type=type_hints["header"])
@@ -16220,6 +16820,8 @@ class CfnWebACL(
16220
16820
  check_type(argname="argument query_string", value=query_string, expected_type=type_hints["query_string"])
16221
16821
  check_type(argname="argument uri_path", value=uri_path, expected_type=type_hints["uri_path"])
16222
16822
  self._values: typing.Dict[builtins.str, typing.Any] = {}
16823
+ if asn is not None:
16824
+ self._values["asn"] = asn
16223
16825
  if cookie is not None:
16224
16826
  self._values["cookie"] = cookie
16225
16827
  if forwarded_ip is not None:
@@ -16243,6 +16845,15 @@ class CfnWebACL(
16243
16845
  if uri_path is not None:
16244
16846
  self._values["uri_path"] = uri_path
16245
16847
 
16848
+ @builtins.property
16849
+ def asn(self) -> typing.Any:
16850
+ '''Specifies the request's ASN as an aggregate key for a rate-based rule.
16851
+
16852
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementcustomkey.html#cfn-wafv2-webacl-ratebasedstatementcustomkey-asn
16853
+ '''
16854
+ result = self._values.get("asn")
16855
+ return typing.cast(typing.Any, result)
16856
+
16246
16857
  @builtins.property
16247
16858
  def cookie(
16248
16859
  self,
@@ -17479,6 +18090,60 @@ class CfnWebACL(
17479
18090
  k + "=" + repr(v) for k, v in self._values.items()
17480
18091
  )
17481
18092
 
18093
+ @jsii.data_type(
18094
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.RegexProperty",
18095
+ jsii_struct_bases=[],
18096
+ name_mapping={"regex_string": "regexString"},
18097
+ )
18098
+ class RegexProperty:
18099
+ def __init__(
18100
+ self,
18101
+ *,
18102
+ regex_string: typing.Optional[builtins.str] = None,
18103
+ ) -> None:
18104
+ '''Regex.
18105
+
18106
+ :param regex_string:
18107
+
18108
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regex.html
18109
+ :exampleMetadata: fixture=_generated
18110
+
18111
+ Example::
18112
+
18113
+ # The code below shows an example of how to instantiate this type.
18114
+ # The values are placeholders you should change.
18115
+ from aws_cdk import aws_wafv2 as wafv2
18116
+
18117
+ regex_property = wafv2.CfnWebACL.RegexProperty(
18118
+ regex_string="regexString"
18119
+ )
18120
+ '''
18121
+ if __debug__:
18122
+ type_hints = typing.get_type_hints(_typecheckingstub__91e754c074f286d30a035b0cb9d25503568a265d4426fe4f4bfc0766c9c71d90)
18123
+ check_type(argname="argument regex_string", value=regex_string, expected_type=type_hints["regex_string"])
18124
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
18125
+ if regex_string is not None:
18126
+ self._values["regex_string"] = regex_string
18127
+
18128
+ @builtins.property
18129
+ def regex_string(self) -> typing.Optional[builtins.str]:
18130
+ '''
18131
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regex.html#cfn-wafv2-webacl-regex-regexstring
18132
+ '''
18133
+ result = self._values.get("regex_string")
18134
+ return typing.cast(typing.Optional[builtins.str], result)
18135
+
18136
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
18137
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
18138
+
18139
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
18140
+ return not (rhs == self)
18141
+
18142
+ def __repr__(self) -> str:
18143
+ return "RegexProperty(%s)" % ", ".join(
18144
+ k + "=" + repr(v) for k, v in self._values.items()
18145
+ )
18146
+
17482
18147
  @jsii.data_type(
17483
18148
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.RequestBodyAssociatedResourceTypeConfigProperty",
17484
18149
  jsii_struct_bases=[],
@@ -18747,7 +19412,7 @@ class CfnWebACL(
18747
19412
 
18748
19413
  :param arn: The Amazon Resource Name (ARN) of the entity.
18749
19414
  :param excluded_rules: Rules in the referenced rule group whose actions are set to ``Count`` . .. epigraph:: Instead of this option, use ``RuleActionOverrides`` . It accepts any valid action setting, including ``Count`` .
18750
- :param rule_action_overrides: Action settings to use in the place of the rule actions that are configured inside the rule group. You specify one override for each rule whose action you want to change. .. epigraph:: Take care to verify the rule names in your overrides. If you provide a rule name that doesn't match the name of any rule in the rule group, AWS WAF doesn't return an error and doesn't apply the override setting. You can use overrides for testing, for example you can override all of rule actions to ``Count`` and then monitor the resulting count metrics to understand how the rule group would handle your web traffic. You can also permanently override some or all actions, to modify how the rule group manages your web traffic.
19415
+ :param rule_action_overrides: Action settings to use in the place of the rule actions that are configured inside the rule group. You specify one override for each rule whose action you want to change. .. epigraph:: Verify the rule names in your overrides carefully. With managed rule groups, AWS WAF silently ignores any override that uses an invalid rule name. With customer-owned rule groups, invalid rule names in your overrides will cause web ACL updates to fail. An invalid rule name is any name that doesn't exactly match the case-sensitive name of an existing rule in the rule group. You can use overrides for testing, for example you can override all of rule actions to ``Count`` and then monitor the resulting count metrics to understand how the rule group would handle your web traffic. You can also permanently override some or all actions, to modify how the rule group manages your web traffic.
18751
19416
 
18752
19417
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rulegroupreferencestatement.html
18753
19418
  :exampleMetadata: fixture=_generated
@@ -18863,7 +19528,7 @@ class CfnWebACL(
18863
19528
  You specify one override for each rule whose action you want to change.
18864
19529
  .. epigraph::
18865
19530
 
18866
- Take care to verify the rule names in your overrides. If you provide a rule name that doesn't match the name of any rule in the rule group, AWS WAF doesn't return an error and doesn't apply the override setting.
19531
+ Verify the rule names in your overrides carefully. With managed rule groups, AWS WAF silently ignores any override that uses an invalid rule name. With customer-owned rule groups, invalid rule names in your overrides will cause web ACL updates to fail. An invalid rule name is any name that doesn't exactly match the case-sensitive name of an existing rule in the rule group.
18867
19532
 
18868
19533
  You can use overrides for testing, for example you can override all of rule actions to ``Count`` and then monitor the resulting count metrics to understand how the rule group would handle your web traffic. You can also permanently override some or all actions, to modify how the rule group manages your web traffic.
18869
19534
 
@@ -19580,6 +20245,7 @@ class CfnWebACL(
19580
20245
  jsii_struct_bases=[],
19581
20246
  name_mapping={
19582
20247
  "and_statement": "andStatement",
20248
+ "asn_match_statement": "asnMatchStatement",
19583
20249
  "byte_match_statement": "byteMatchStatement",
19584
20250
  "geo_match_statement": "geoMatchStatement",
19585
20251
  "ip_set_reference_statement": "ipSetReferenceStatement",
@@ -19601,6 +20267,7 @@ class CfnWebACL(
19601
20267
  self,
19602
20268
  *,
19603
20269
  and_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.AndStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
20270
+ asn_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.AsnMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
19604
20271
  byte_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.ByteMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
19605
20272
  geo_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.GeoMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
19606
20273
  ip_set_reference_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.IPSetReferenceStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -19619,6 +20286,7 @@ class CfnWebACL(
19619
20286
  '''The processing guidance for a rule, used by AWS WAF to determine whether a web request matches the rule.
19620
20287
 
19621
20288
  :param and_statement: A logical rule statement used to combine other rule statements with AND logic. You provide more than one ``Statement`` within the ``AndStatement`` .
20289
+ :param asn_match_statement:
19622
20290
  :param byte_match_statement: A rule statement that defines a string match search for AWS WAF to apply to web requests. The byte match statement provides the bytes to search for, the location in requests that you want AWS WAF to search, and other settings. The bytes to search for are typically a string that corresponds with ASCII characters. In the AWS WAF console and the developer guide, this is called a string match statement.
19623
20291
  :param geo_match_statement: A rule statement that labels web requests by country and region and that matches against web requests based on country code. A geo match rule labels every request that it inspects regardless of whether it finds a match. - To manage requests only by country, you can use this statement by itself and specify the countries that you want to match against in the ``CountryCodes`` array. - Otherwise, configure your geo match rule with Count action so that it only labels requests. Then, add one or more label match rules to run after the geo match rule and configure them to match against the geographic labels and handle the requests as needed. AWS WAF labels requests using the alpha-2 country and region codes from the International Organization for Standardization (ISO) 3166 standard. AWS WAF determines the codes using either the IP address in the web request origin or, if you specify it, the address in the geo match ``ForwardedIPConfig`` . If you use the web request origin, the label formats are ``awswaf:clientip:geo:region:<ISO country code>-<ISO region code>`` and ``awswaf:clientip:geo:country:<ISO country code>`` . If you use a forwarded IP address, the label formats are ``awswaf:forwardedip:geo:region:<ISO country code>-<ISO region code>`` and ``awswaf:forwardedip:geo:country:<ISO country code>`` . For additional details, see `Geographic match rule statement <https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-geo-match.html>`_ in the `AWS WAF Developer Guide <https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html>`_ .
19624
20292
  :param ip_set_reference_statement: A rule statement used to detect web requests coming from particular IP addresses or address ranges. To use this, create an ``IPSet`` that specifies the addresses you want to detect, then use the ARN of that set in this statement. Each IP set rule statement references an IP 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.
@@ -19644,6 +20312,7 @@ class CfnWebACL(
19644
20312
  if __debug__:
19645
20313
  type_hints = typing.get_type_hints(_typecheckingstub__0382dea984940e1444b28282683162580df37103e33ab59384736c3a85a2ec11)
19646
20314
  check_type(argname="argument and_statement", value=and_statement, expected_type=type_hints["and_statement"])
20315
+ check_type(argname="argument asn_match_statement", value=asn_match_statement, expected_type=type_hints["asn_match_statement"])
19647
20316
  check_type(argname="argument byte_match_statement", value=byte_match_statement, expected_type=type_hints["byte_match_statement"])
19648
20317
  check_type(argname="argument geo_match_statement", value=geo_match_statement, expected_type=type_hints["geo_match_statement"])
19649
20318
  check_type(argname="argument ip_set_reference_statement", value=ip_set_reference_statement, expected_type=type_hints["ip_set_reference_statement"])
@@ -19661,6 +20330,8 @@ class CfnWebACL(
19661
20330
  self._values: typing.Dict[builtins.str, typing.Any] = {}
19662
20331
  if and_statement is not None:
19663
20332
  self._values["and_statement"] = and_statement
20333
+ if asn_match_statement is not None:
20334
+ self._values["asn_match_statement"] = asn_match_statement
19664
20335
  if byte_match_statement is not None:
19665
20336
  self._values["byte_match_statement"] = byte_match_statement
19666
20337
  if geo_match_statement is not None:
@@ -19703,6 +20374,16 @@ class CfnWebACL(
19703
20374
  result = self._values.get("and_statement")
19704
20375
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AndStatementProperty"]], result)
19705
20376
 
20377
+ @builtins.property
20378
+ def asn_match_statement(
20379
+ self,
20380
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AsnMatchStatementProperty"]]:
20381
+ '''
20382
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-asnmatchstatement
20383
+ '''
20384
+ result = self._values.get("asn_match_statement")
20385
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AsnMatchStatementProperty"]], result)
20386
+
19706
20387
  @builtins.property
19707
20388
  def byte_match_statement(
19708
20389
  self,
@@ -20580,6 +21261,7 @@ class CfnWebACLAssociationProps:
20580
21261
  "data_protection_config": "dataProtectionConfig",
20581
21262
  "description": "description",
20582
21263
  "name": "name",
21264
+ "on_source_d_do_s_protection_config": "onSourceDDoSProtectionConfig",
20583
21265
  "rules": "rules",
20584
21266
  "tags": "tags",
20585
21267
  "token_domains": "tokenDomains",
@@ -20599,6 +21281,7 @@ class CfnWebACLProps:
20599
21281
  data_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.DataProtectionConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20600
21282
  description: typing.Optional[builtins.str] = None,
20601
21283
  name: typing.Optional[builtins.str] = None,
21284
+ on_source_d_do_s_protection_config: typing.Any = None,
20602
21285
  rules: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RuleProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
20603
21286
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
20604
21287
  token_domains: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -20615,6 +21298,7 @@ class CfnWebACLProps:
20615
21298
  :param data_protection_config: Specifies data protection to apply to the web request data for the web ACL. This is a web ACL level data protection option. The data protection that you configure for the web ACL alters the data that's available for any other data collection activity, including your AWS WAF logging destinations, web ACL request sampling, and Amazon Security Lake data collection and management. Your other option for data protection is in the logging configuration, which only affects logging.
20616
21299
  :param description: A description of the web ACL that helps with identification.
20617
21300
  :param name: The name of the web ACL. You cannot change the name of a web ACL after you create it.
21301
+ :param on_source_d_do_s_protection_config: Configures the level of DDoS protection that applies to web ACLs associated with Application Load Balancers.
20618
21302
  :param rules: The rule statements used to identify the web requests that you want to manage. Each rule includes one top-level statement that AWS WAF uses to identify matching web requests, and parameters that govern how AWS WAF handles them.
20619
21303
  :param tags: Key:value pairs associated with an AWS resource. The key:value pair can be anything you define. Typically, the tag key represents a category (such as "environment") and the tag value represents a specific value within that category (such as "test," "development," or "production"). You can add up to 50 tags to each AWS resource. .. epigraph:: To modify tags on existing resources, use the AWS WAF APIs or command line interface. With AWS CloudFormation , you can only add tags to AWS WAF resources during resource creation.
20620
21304
  :param token_domains: Specifies the domains that AWS WAF should accept in a web request token. This enables the use of tokens across multiple protected websites. When AWS WAF provides a token, it uses the domain of the AWS resource that the web ACL is protecting. If you don't specify a list of token domains, AWS WAF accepts tokens only for the domain of the protected resource. With a token domain list, AWS WAF accepts the resource's host domain plus all domains in the token domain list, including their prefixed subdomains.
@@ -20638,6 +21322,7 @@ class CfnWebACLProps:
20638
21322
  check_type(argname="argument data_protection_config", value=data_protection_config, expected_type=type_hints["data_protection_config"])
20639
21323
  check_type(argname="argument description", value=description, expected_type=type_hints["description"])
20640
21324
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
21325
+ check_type(argname="argument on_source_d_do_s_protection_config", value=on_source_d_do_s_protection_config, expected_type=type_hints["on_source_d_do_s_protection_config"])
20641
21326
  check_type(argname="argument rules", value=rules, expected_type=type_hints["rules"])
20642
21327
  check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
20643
21328
  check_type(argname="argument token_domains", value=token_domains, expected_type=type_hints["token_domains"])
@@ -20660,6 +21345,8 @@ class CfnWebACLProps:
20660
21345
  self._values["description"] = description
20661
21346
  if name is not None:
20662
21347
  self._values["name"] = name
21348
+ if on_source_d_do_s_protection_config is not None:
21349
+ self._values["on_source_d_do_s_protection_config"] = on_source_d_do_s_protection_config
20663
21350
  if rules is not None:
20664
21351
  self._values["rules"] = rules
20665
21352
  if tags is not None:
@@ -20804,6 +21491,15 @@ class CfnWebACLProps:
20804
21491
  result = self._values.get("name")
20805
21492
  return typing.cast(typing.Optional[builtins.str], result)
20806
21493
 
21494
+ @builtins.property
21495
+ def on_source_d_do_s_protection_config(self) -> typing.Any:
21496
+ '''Configures the level of DDoS protection that applies to web ACLs associated with Application Load Balancers.
21497
+
21498
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-onsourceddosprotectionconfig
21499
+ '''
21500
+ result = self._values.get("on_source_d_do_s_protection_config")
21501
+ return typing.cast(typing.Any, result)
21502
+
20807
21503
  @builtins.property
20808
21504
  def rules(
20809
21505
  self,
@@ -21247,6 +21943,14 @@ def _typecheckingstub__563d7c7c3c7b0cea107ea61895bf83f08deacaa77dd306915bce97452
21247
21943
  """Type checking stubs"""
21248
21944
  pass
21249
21945
 
21946
+ def _typecheckingstub__1b7bfd70c769fabe423acc42aa4ce7a934b8907c56a69421327294c209c8da78(
21947
+ *,
21948
+ asn_list: typing.Optional[typing.Union[typing.Sequence[jsii.Number], _IResolvable_da3f097b]] = None,
21949
+ forwarded_ip_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.ForwardedIPConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21950
+ ) -> None:
21951
+ """Type checking stubs"""
21952
+ pass
21953
+
21250
21954
  def _typecheckingstub__48d37744c2bde6e8969fbbe9f60128093f4d69360ff6c086fcb635ca42f3ae63(
21251
21955
  *,
21252
21956
  custom_response: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.CustomResponseProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -21504,6 +22208,7 @@ def _typecheckingstub__ac0f7a31c2c062eaaca70b7d43c11c1e6b78ce7502ec2206e832cabc7
21504
22208
 
21505
22209
  def _typecheckingstub__6bc232408309212f7b145d76c0106073269f111e106ab6d74a4d2168f41f248b(
21506
22210
  *,
22211
+ asn: typing.Any = None,
21507
22212
  cookie: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.RateLimitCookieProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21508
22213
  forwarded_ip: typing.Any = None,
21509
22214
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.RateLimitHeaderProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -21669,6 +22374,7 @@ def _typecheckingstub__b9ae549bd77f9cf10d97954d1e78a797db181843dcc5510b91fc32672
21669
22374
  def _typecheckingstub__c10bc3e3f69d89ad06f25a44daee62e7de586ae4280e39230f29c24092fe4a4f(
21670
22375
  *,
21671
22376
  and_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.AndStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22377
+ asn_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.AsnMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21672
22378
  byte_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.ByteMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21673
22379
  geo_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.GeoMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21674
22380
  ip_set_reference_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.IPSetReferenceStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -21747,6 +22453,7 @@ def _typecheckingstub__03030a65c492e95a1d1ae5ddafd6acbb9efdfa7e18b6367ac7e03eb8f
21747
22453
  data_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.DataProtectionConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21748
22454
  description: typing.Optional[builtins.str] = None,
21749
22455
  name: typing.Optional[builtins.str] = None,
22456
+ on_source_d_do_s_protection_config: typing.Any = None,
21750
22457
  rules: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RuleProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
21751
22458
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
21752
22459
  token_domains: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -21826,6 +22533,12 @@ def _typecheckingstub__191460374393c7b9829682ab4faa571596cd3c2090e46352a427930a2
21826
22533
  """Type checking stubs"""
21827
22534
  pass
21828
22535
 
22536
+ def _typecheckingstub__1180464a1661a74085b880efee37841284ce892adac9d3cda8cb5c117c625ba2(
22537
+ value: typing.Any,
22538
+ ) -> None:
22539
+ """Type checking stubs"""
22540
+ pass
22541
+
21829
22542
  def _typecheckingstub__7e3abb4095a53abe30bca846b48411ffb15b0267398c52a824a8ffba45db4f4c(
21830
22543
  value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnWebACL.RuleProperty]]]],
21831
22544
  ) -> None:
@@ -21865,6 +22578,14 @@ def _typecheckingstub__f9aee7f94c21473b0495313f92d8a99724499d3f5a99e7229679efb1e
21865
22578
  """Type checking stubs"""
21866
22579
  pass
21867
22580
 
22581
+ def _typecheckingstub__9315d92e3528c134a601f6cf9b27df2b90e082b1e29a17eadf8fbf68ac10e8c4(
22582
+ *,
22583
+ client_side_action_config: typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.ClientSideActionConfigProperty, typing.Dict[builtins.str, typing.Any]]],
22584
+ sensitivity_to_block: typing.Optional[builtins.str] = None,
22585
+ ) -> None:
22586
+ """Type checking stubs"""
22587
+ pass
22588
+
21868
22589
  def _typecheckingstub__23917b7bd12237aafb58493973b8f61366778e01800aad21ea2f95a01294dc76(
21869
22590
  *,
21870
22591
  inspection_level: builtins.str,
@@ -21887,6 +22608,14 @@ def _typecheckingstub__e3977b616ebe935b8882258fb7fe1261468bceabf99977afc1c05b1df
21887
22608
  """Type checking stubs"""
21888
22609
  pass
21889
22610
 
22611
+ def _typecheckingstub__8995ed18208bf9dcca46075f2ba4072467a8327472896fee5efcf1415648dfe8(
22612
+ *,
22613
+ asn_list: typing.Optional[typing.Union[typing.Sequence[jsii.Number], _IResolvable_da3f097b]] = None,
22614
+ forwarded_ip_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.ForwardedIPConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22615
+ ) -> None:
22616
+ """Type checking stubs"""
22617
+ pass
22618
+
21890
22619
  def _typecheckingstub__889bff55ba91160187275a11669025b829161457b27db183745c6a70c6fb0947(
21891
22620
  *,
21892
22621
  request_body: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Mapping[builtins.str, typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RequestBodyAssociatedResourceTypeConfigProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
@@ -21947,6 +22676,22 @@ def _typecheckingstub__e59d4e09b55c6fb1e18f3dbf3d0659f147db2659c300a744e836928d4
21947
22676
  """Type checking stubs"""
21948
22677
  pass
21949
22678
 
22679
+ def _typecheckingstub__776e223dfae595baf3dc144792b2d7158c77847ddf24785048d19516ebcb955b(
22680
+ *,
22681
+ challenge: typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.ClientSideActionProperty, typing.Dict[builtins.str, typing.Any]]],
22682
+ ) -> None:
22683
+ """Type checking stubs"""
22684
+ pass
22685
+
22686
+ def _typecheckingstub__de331114f33ba80cf8bd042358ad9467ab930574012abea7782f175fd2a7b649(
22687
+ *,
22688
+ usage_of_action: builtins.str,
22689
+ exempt_uri_regular_expressions: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RegexProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
22690
+ sensitivity: typing.Optional[builtins.str] = None,
22691
+ ) -> None:
22692
+ """Type checking stubs"""
22693
+ pass
22694
+
21950
22695
  def _typecheckingstub__11e565e9aad1b474694cbb7c884715be324a3c5b38238a45e13e0d2ed78d816d(
21951
22696
  *,
21952
22697
  all: typing.Any = None,
@@ -22178,6 +22923,7 @@ def _typecheckingstub__bf81be90baf4410ecf4fe3290d007b8b6c18da545bbac600a4ec86a29
22178
22923
  def _typecheckingstub__517661cb97cc58c609587fc6ca9907b2e23d8f3cd6e1e4034f3f6d82b85d2d77(
22179
22924
  *,
22180
22925
  aws_managed_rules_acfp_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.AWSManagedRulesACFPRuleSetProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22926
+ aws_managed_rules_anti_d_do_s_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22181
22927
  aws_managed_rules_atp_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.AWSManagedRulesATPRuleSetProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22182
22928
  aws_managed_rules_bot_control_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.AWSManagedRulesBotControlRuleSetProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22183
22929
  login_path: typing.Optional[builtins.str] = None,
@@ -22208,6 +22954,13 @@ def _typecheckingstub__6323d964e28230f9d2649acc0c25b70ee57b1f6721b37df85848f3c96
22208
22954
  """Type checking stubs"""
22209
22955
  pass
22210
22956
 
22957
+ def _typecheckingstub__b1d55e97c88ee1084655df55da4bb940ea39dc6807c3b4f425073a3a747e0dbc(
22958
+ *,
22959
+ alb_low_reputation_mode: builtins.str,
22960
+ ) -> None:
22961
+ """Type checking stubs"""
22962
+ pass
22963
+
22211
22964
  def _typecheckingstub__857a9b37018dee0d151e0a05984b557cea8bf5f8e57f6957cacb75335b7f4985(
22212
22965
  *,
22213
22966
  statements: typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.StatementProperty, typing.Dict[builtins.str, typing.Any]]]]],
@@ -22225,6 +22978,7 @@ def _typecheckingstub__799e1b838f491914647df091fcbac72eb8119756fda0c013be732c461
22225
22978
 
22226
22979
  def _typecheckingstub__2edac52bcb13f69d4349ba55a4d083851908f1dd71831794e88ac043e1ade5a3(
22227
22980
  *,
22981
+ asn: typing.Any = None,
22228
22982
  cookie: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RateLimitCookieProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22229
22983
  forwarded_ip: typing.Any = None,
22230
22984
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RateLimitHeaderProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -22329,6 +23083,13 @@ def _typecheckingstub__02b7d36560bfd4ed2bd6508818cf89b216972c719200032cdc4b3a04e
22329
23083
  """Type checking stubs"""
22330
23084
  pass
22331
23085
 
23086
+ def _typecheckingstub__91e754c074f286d30a035b0cb9d25503568a265d4426fe4f4bfc0766c9c71d90(
23087
+ *,
23088
+ regex_string: typing.Optional[builtins.str] = None,
23089
+ ) -> None:
23090
+ """Type checking stubs"""
23091
+ pass
23092
+
22332
23093
  def _typecheckingstub__22d5e10d054b4857a7983cdc47094a04c46a1c4d98b791e6c9aa5b16fe172d31(
22333
23094
  *,
22334
23095
  default_size_inspection_limit: builtins.str,
@@ -22480,6 +23241,7 @@ def _typecheckingstub__58178c25f953747f989ea51846855e784a44825b0202fe8e0a5c3920a
22480
23241
  def _typecheckingstub__0382dea984940e1444b28282683162580df37103e33ab59384736c3a85a2ec11(
22481
23242
  *,
22482
23243
  and_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.AndStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23244
+ asn_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.AsnMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22483
23245
  byte_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.ByteMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22484
23246
  geo_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.GeoMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22485
23247
  ip_set_reference_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.IPSetReferenceStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -22584,6 +23346,7 @@ def _typecheckingstub__6e738df983d65d43590c0a02c03e6e0daa3a2097ae335371d22711838
22584
23346
  data_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.DataProtectionConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22585
23347
  description: typing.Optional[builtins.str] = None,
22586
23348
  name: typing.Optional[builtins.str] = None,
23349
+ on_source_d_do_s_protection_config: typing.Any = None,
22587
23350
  rules: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RuleProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
22588
23351
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
22589
23352
  token_domains: typing.Optional[typing.Sequence[builtins.str]] = None,