aws-cdk-lib 2.201.0__py3-none-any.whl → 2.203.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (69) hide show
  1. aws_cdk/__init__.py +70 -71
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.201.0.jsii.tgz → aws-cdk-lib@2.203.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_accessanalyzer/__init__.py +310 -4
  5. aws_cdk/aws_aiops/__init__.py +964 -0
  6. aws_cdk/aws_amplify/__init__.py +127 -0
  7. aws_cdk/aws_arczonalshift/__init__.py +8 -8
  8. aws_cdk/aws_athena/__init__.py +12 -11
  9. aws_cdk/aws_b2bi/__init__.py +782 -3
  10. aws_cdk/aws_backup/__init__.py +22 -0
  11. aws_cdk/aws_batch/__init__.py +53 -1
  12. aws_cdk/aws_bedrock/__init__.py +123 -9
  13. aws_cdk/aws_cleanrooms/__init__.py +157 -154
  14. aws_cdk/aws_cloudformation/__init__.py +28 -28
  15. aws_cdk/aws_cloudfront/__init__.py +92 -57
  16. aws_cdk/aws_cloudfront/experimental/__init__.py +42 -3
  17. aws_cdk/aws_cloudwatch/__init__.py +228 -2
  18. aws_cdk/aws_connect/__init__.py +120 -8
  19. aws_cdk/aws_connectcampaignsv2/__init__.py +25 -4
  20. aws_cdk/aws_customerprofiles/__init__.py +150 -30
  21. aws_cdk/aws_datazone/__init__.py +23 -4
  22. aws_cdk/aws_deadline/__init__.py +4 -4
  23. aws_cdk/aws_dsql/__init__.py +148 -0
  24. aws_cdk/aws_ec2/__init__.py +321 -19
  25. aws_cdk/aws_ecr/__init__.py +3 -3
  26. aws_cdk/aws_ecs/__init__.py +48 -13
  27. aws_cdk/aws_efs/__init__.py +17 -6
  28. aws_cdk/aws_eks/__init__.py +180 -158
  29. aws_cdk/aws_elasticloadbalancingv2/__init__.py +4 -2
  30. aws_cdk/aws_emrserverless/__init__.py +118 -0
  31. aws_cdk/aws_fsx/__init__.py +891 -0
  32. aws_cdk/aws_glue/__init__.py +58 -24
  33. aws_cdk/aws_iam/__init__.py +11 -11
  34. aws_cdk/aws_inspectorv2/__init__.py +442 -3
  35. aws_cdk/aws_kendra/__init__.py +10 -5
  36. aws_cdk/aws_kms/__init__.py +24 -12
  37. aws_cdk/aws_lambda/__init__.py +938 -36
  38. aws_cdk/aws_lambda_event_sources/__init__.py +638 -1
  39. aws_cdk/aws_lambda_nodejs/__init__.py +37 -3
  40. aws_cdk/aws_lex/__init__.py +703 -0
  41. aws_cdk/aws_logs/__init__.py +144 -0
  42. aws_cdk/aws_mediatailor/__init__.py +399 -0
  43. aws_cdk/aws_mpa/__init__.py +1475 -0
  44. aws_cdk/aws_msk/__init__.py +21 -2
  45. aws_cdk/aws_mwaa/__init__.py +45 -2
  46. aws_cdk/aws_networkfirewall/__init__.py +4 -2
  47. aws_cdk/aws_networkmanager/__init__.py +51 -3
  48. aws_cdk/aws_opsworkscm/__init__.py +44 -2
  49. aws_cdk/aws_rds/__init__.py +175 -42
  50. aws_cdk/aws_redshiftserverless/__init__.py +632 -0
  51. aws_cdk/aws_route53resolver/__init__.py +58 -10
  52. aws_cdk/aws_s3/__init__.py +19 -1
  53. aws_cdk/aws_s3tables/__init__.py +230 -0
  54. aws_cdk/aws_sagemaker/__init__.py +14 -10
  55. aws_cdk/aws_securityhub/__init__.py +2887 -56
  56. aws_cdk/aws_synthetics/__init__.py +21 -0
  57. aws_cdk/aws_vpclattice/__init__.py +6 -4
  58. aws_cdk/aws_wafv2/__init__.py +849 -18
  59. aws_cdk/aws_workspacesinstances/__init__.py +3243 -0
  60. aws_cdk/cloud_assembly_schema/__init__.py +200 -4
  61. aws_cdk/cx_api/__init__.py +29 -14
  62. aws_cdk/pipelines/__init__.py +178 -41
  63. aws_cdk/triggers/__init__.py +41 -4
  64. {aws_cdk_lib-2.201.0.dist-info → aws_cdk_lib-2.203.0.dist-info}/METADATA +3 -3
  65. {aws_cdk_lib-2.201.0.dist-info → aws_cdk_lib-2.203.0.dist-info}/RECORD +69 -66
  66. {aws_cdk_lib-2.201.0.dist-info → aws_cdk_lib-2.203.0.dist-info}/LICENSE +0 -0
  67. {aws_cdk_lib-2.201.0.dist-info → aws_cdk_lib-2.203.0.dist-info}/NOTICE +0 -0
  68. {aws_cdk_lib-2.201.0.dist-info → aws_cdk_lib-2.203.0.dist-info}/WHEEL +0 -0
  69. {aws_cdk_lib-2.201.0.dist-info → aws_cdk_lib-2.203.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,92 @@ 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
+ '''A rule statement that inspects web traffic based on the Autonomous System Number (ASN) associated with the request's IP address.
2784
+
2785
+ For additional details, see `ASN match rule statement <https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-asn-match.html>`_ in the `AWS WAF Developer Guide <https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html>`_ .
2786
+
2787
+ :param asn_list: Contains one or more Autonomous System Numbers (ASNs). ASNs are unique identifiers assigned to large internet networks managed by organizations such as internet service providers, enterprises, universities, or government agencies.
2788
+ :param forwarded_ip_config: The configuration for inspecting IP addresses to match against an ASN in an HTTP header that you specify, instead of using the IP address that's reported by the web request origin. Commonly, this is the X-Forwarded-For (XFF) header, but you can specify any header name.
2789
+
2790
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-asnmatchstatement.html
2791
+ :exampleMetadata: fixture=_generated
2792
+
2793
+ Example::
2794
+
2795
+ # The code below shows an example of how to instantiate this type.
2796
+ # The values are placeholders you should change.
2797
+ from aws_cdk import aws_wafv2 as wafv2
2798
+
2799
+ asn_match_statement_property = wafv2.CfnRuleGroup.AsnMatchStatementProperty(
2800
+ asn_list=[123],
2801
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
2802
+ fallback_behavior="fallbackBehavior",
2803
+ header_name="headerName"
2804
+ )
2805
+ )
2806
+ '''
2807
+ if __debug__:
2808
+ type_hints = typing.get_type_hints(_typecheckingstub__1b7bfd70c769fabe423acc42aa4ce7a934b8907c56a69421327294c209c8da78)
2809
+ check_type(argname="argument asn_list", value=asn_list, expected_type=type_hints["asn_list"])
2810
+ check_type(argname="argument forwarded_ip_config", value=forwarded_ip_config, expected_type=type_hints["forwarded_ip_config"])
2811
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
2812
+ if asn_list is not None:
2813
+ self._values["asn_list"] = asn_list
2814
+ if forwarded_ip_config is not None:
2815
+ self._values["forwarded_ip_config"] = forwarded_ip_config
2816
+
2817
+ @builtins.property
2818
+ def asn_list(
2819
+ self,
2820
+ ) -> typing.Optional[typing.Union[typing.List[jsii.Number], _IResolvable_da3f097b]]:
2821
+ '''Contains one or more Autonomous System Numbers (ASNs).
2822
+
2823
+ ASNs are unique identifiers assigned to large internet networks managed by organizations such as internet service providers, enterprises, universities, or government agencies.
2824
+
2825
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-asnmatchstatement.html#cfn-wafv2-rulegroup-asnmatchstatement-asnlist
2826
+ '''
2827
+ result = self._values.get("asn_list")
2828
+ return typing.cast(typing.Optional[typing.Union[typing.List[jsii.Number], _IResolvable_da3f097b]], result)
2829
+
2830
+ @builtins.property
2831
+ def forwarded_ip_config(
2832
+ self,
2833
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.ForwardedIPConfigurationProperty"]]:
2834
+ '''The configuration for inspecting IP addresses to match against an ASN in an HTTP header that you specify, instead of using the IP address that's reported by the web request origin.
2835
+
2836
+ Commonly, this is the X-Forwarded-For (XFF) header, but you can specify any header name.
2837
+
2838
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-asnmatchstatement.html#cfn-wafv2-rulegroup-asnmatchstatement-forwardedipconfig
2839
+ '''
2840
+ result = self._values.get("forwarded_ip_config")
2841
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.ForwardedIPConfigurationProperty"]], result)
2842
+
2843
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2844
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2845
+
2846
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2847
+ return not (rhs == self)
2848
+
2849
+ def __repr__(self) -> str:
2850
+ return "AsnMatchStatementProperty(%s)" % ", ".join(
2851
+ k + "=" + repr(v) for k, v in self._values.items()
2852
+ )
2853
+
2759
2854
  @jsii.data_type(
2760
2855
  jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.BlockProperty",
2761
2856
  jsii_struct_bases=[],
@@ -5615,6 +5710,7 @@ class CfnRuleGroup(
5615
5710
 
5616
5711
  # all: Any
5617
5712
  # all_query_arguments: Any
5713
+ # asn: Any
5618
5714
  # forwarded_ip: Any
5619
5715
  # http_method: Any
5620
5716
  # ip: Any
@@ -5631,6 +5727,13 @@ class CfnRuleGroup(
5631
5727
  and_statement=wafv2.CfnRuleGroup.AndStatementProperty(
5632
5728
  statements=[statement_property_]
5633
5729
  ),
5730
+ asn_match_statement=wafv2.CfnRuleGroup.AsnMatchStatementProperty(
5731
+ asn_list=[123],
5732
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
5733
+ fallback_behavior="fallbackBehavior",
5734
+ header_name="headerName"
5735
+ )
5736
+ ),
5634
5737
  byte_match_statement=wafv2.CfnRuleGroup.ByteMatchStatementProperty(
5635
5738
  field_to_match=wafv2.CfnRuleGroup.FieldToMatchProperty(
5636
5739
  all_query_arguments=all_query_arguments,
@@ -5722,6 +5825,7 @@ class CfnRuleGroup(
5722
5825
 
5723
5826
  # the properties below are optional
5724
5827
  custom_keys=[wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
5828
+ asn=asn,
5725
5829
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
5726
5830
  name="name",
5727
5831
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -6120,6 +6224,7 @@ class CfnRuleGroup(
6120
6224
 
6121
6225
  # all: Any
6122
6226
  # all_query_arguments: Any
6227
+ # asn: Any
6123
6228
  # forwarded_ip: Any
6124
6229
  # http_method: Any
6125
6230
  # ip: Any
@@ -6136,6 +6241,13 @@ class CfnRuleGroup(
6136
6241
  and_statement=wafv2.CfnRuleGroup.AndStatementProperty(
6137
6242
  statements=[statement_property_]
6138
6243
  ),
6244
+ asn_match_statement=wafv2.CfnRuleGroup.AsnMatchStatementProperty(
6245
+ asn_list=[123],
6246
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
6247
+ fallback_behavior="fallbackBehavior",
6248
+ header_name="headerName"
6249
+ )
6250
+ ),
6139
6251
  byte_match_statement=wafv2.CfnRuleGroup.ByteMatchStatementProperty(
6140
6252
  field_to_match=wafv2.CfnRuleGroup.FieldToMatchProperty(
6141
6253
  all_query_arguments=all_query_arguments,
@@ -6227,6 +6339,7 @@ class CfnRuleGroup(
6227
6339
 
6228
6340
  # the properties below are optional
6229
6341
  custom_keys=[wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
6342
+ asn=asn,
6230
6343
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
6231
6344
  name="name",
6232
6345
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -6601,6 +6714,7 @@ class CfnRuleGroup(
6601
6714
  jsii_type="aws-cdk-lib.aws_wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty",
6602
6715
  jsii_struct_bases=[],
6603
6716
  name_mapping={
6717
+ "asn": "asn",
6604
6718
  "cookie": "cookie",
6605
6719
  "forwarded_ip": "forwardedIp",
6606
6720
  "header": "header",
@@ -6618,6 +6732,7 @@ class CfnRuleGroup(
6618
6732
  def __init__(
6619
6733
  self,
6620
6734
  *,
6735
+ asn: typing.Any = None,
6621
6736
  cookie: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.RateLimitCookieProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6622
6737
  forwarded_ip: typing.Any = None,
6623
6738
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.RateLimitHeaderProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -6636,6 +6751,7 @@ class CfnRuleGroup(
6636
6751
 
6637
6752
  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
6753
 
6754
+ :param asn: Use an Autonomous System Number (ASN) derived from the request's originating or forwarded IP address as an aggregate key. Each distinct ASN contributes to the aggregation instance.
6639
6755
  :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
6756
  :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
6757
  :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 +6773,13 @@ class CfnRuleGroup(
6657
6773
  # The values are placeholders you should change.
6658
6774
  from aws_cdk import aws_wafv2 as wafv2
6659
6775
 
6776
+ # asn: Any
6660
6777
  # forwarded_ip: Any
6661
6778
  # http_method: Any
6662
6779
  # ip: Any
6663
6780
 
6664
6781
  rate_based_statement_custom_key_property = wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
6782
+ asn=asn,
6665
6783
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
6666
6784
  name="name",
6667
6785
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -6711,6 +6829,7 @@ class CfnRuleGroup(
6711
6829
  '''
6712
6830
  if __debug__:
6713
6831
  type_hints = typing.get_type_hints(_typecheckingstub__6bc232408309212f7b145d76c0106073269f111e106ab6d74a4d2168f41f248b)
6832
+ check_type(argname="argument asn", value=asn, expected_type=type_hints["asn"])
6714
6833
  check_type(argname="argument cookie", value=cookie, expected_type=type_hints["cookie"])
6715
6834
  check_type(argname="argument forwarded_ip", value=forwarded_ip, expected_type=type_hints["forwarded_ip"])
6716
6835
  check_type(argname="argument header", value=header, expected_type=type_hints["header"])
@@ -6723,6 +6842,8 @@ class CfnRuleGroup(
6723
6842
  check_type(argname="argument query_string", value=query_string, expected_type=type_hints["query_string"])
6724
6843
  check_type(argname="argument uri_path", value=uri_path, expected_type=type_hints["uri_path"])
6725
6844
  self._values: typing.Dict[builtins.str, typing.Any] = {}
6845
+ if asn is not None:
6846
+ self._values["asn"] = asn
6726
6847
  if cookie is not None:
6727
6848
  self._values["cookie"] = cookie
6728
6849
  if forwarded_ip is not None:
@@ -6746,6 +6867,17 @@ class CfnRuleGroup(
6746
6867
  if uri_path is not None:
6747
6868
  self._values["uri_path"] = uri_path
6748
6869
 
6870
+ @builtins.property
6871
+ def asn(self) -> typing.Any:
6872
+ '''Use an Autonomous System Number (ASN) derived from the request's originating or forwarded IP address as an aggregate key.
6873
+
6874
+ Each distinct ASN contributes to the aggregation instance.
6875
+
6876
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementcustomkey.html#cfn-wafv2-rulegroup-ratebasedstatementcustomkey-asn
6877
+ '''
6878
+ result = self._values.get("asn")
6879
+ return typing.cast(typing.Any, result)
6880
+
6749
6881
  @builtins.property
6750
6882
  def cookie(
6751
6883
  self,
@@ -6986,6 +7118,7 @@ class CfnRuleGroup(
6986
7118
 
6987
7119
  # all: Any
6988
7120
  # all_query_arguments: Any
7121
+ # asn: Any
6989
7122
  # forwarded_ip: Any
6990
7123
  # http_method: Any
6991
7124
  # ip: Any
@@ -7003,6 +7136,7 @@ class CfnRuleGroup(
7003
7136
 
7004
7137
  # the properties below are optional
7005
7138
  custom_keys=[wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
7139
+ asn=asn,
7006
7140
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
7007
7141
  name="name",
7008
7142
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -7058,6 +7192,13 @@ class CfnRuleGroup(
7058
7192
  and_statement=wafv2.CfnRuleGroup.AndStatementProperty(
7059
7193
  statements=[statement_property_]
7060
7194
  ),
7195
+ asn_match_statement=wafv2.CfnRuleGroup.AsnMatchStatementProperty(
7196
+ asn_list=[123],
7197
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
7198
+ fallback_behavior="fallbackBehavior",
7199
+ header_name="headerName"
7200
+ )
7201
+ ),
7061
7202
  byte_match_statement=wafv2.CfnRuleGroup.ByteMatchStatementProperty(
7062
7203
  field_to_match=wafv2.CfnRuleGroup.FieldToMatchProperty(
7063
7204
  all_query_arguments=all_query_arguments,
@@ -8625,6 +8766,7 @@ class CfnRuleGroup(
8625
8766
  # all: Any
8626
8767
  # allow: Any
8627
8768
  # all_query_arguments: Any
8769
+ # asn: Any
8628
8770
  # block: Any
8629
8771
  # captcha: Any
8630
8772
  # challenge: Any
@@ -8646,6 +8788,13 @@ class CfnRuleGroup(
8646
8788
  and_statement=wafv2.CfnRuleGroup.AndStatementProperty(
8647
8789
  statements=[statement_property_]
8648
8790
  ),
8791
+ asn_match_statement=wafv2.CfnRuleGroup.AsnMatchStatementProperty(
8792
+ asn_list=[123],
8793
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
8794
+ fallback_behavior="fallbackBehavior",
8795
+ header_name="headerName"
8796
+ )
8797
+ ),
8649
8798
  byte_match_statement=wafv2.CfnRuleGroup.ByteMatchStatementProperty(
8650
8799
  field_to_match=wafv2.CfnRuleGroup.FieldToMatchProperty(
8651
8800
  all_query_arguments=all_query_arguments,
@@ -8739,6 +8888,7 @@ class CfnRuleGroup(
8739
8888
 
8740
8889
  # the properties below are optional
8741
8890
  custom_keys=[wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
8891
+ asn=asn,
8742
8892
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
8743
8893
  name="name",
8744
8894
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -9721,6 +9871,7 @@ class CfnRuleGroup(
9721
9871
  jsii_struct_bases=[],
9722
9872
  name_mapping={
9723
9873
  "and_statement": "andStatement",
9874
+ "asn_match_statement": "asnMatchStatement",
9724
9875
  "byte_match_statement": "byteMatchStatement",
9725
9876
  "geo_match_statement": "geoMatchStatement",
9726
9877
  "ip_set_reference_statement": "ipSetReferenceStatement",
@@ -9740,6 +9891,7 @@ class CfnRuleGroup(
9740
9891
  self,
9741
9892
  *,
9742
9893
  and_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.AndStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
9894
+ asn_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.AsnMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
9743
9895
  byte_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.ByteMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
9744
9896
  geo_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.GeoMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
9745
9897
  ip_set_reference_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnRuleGroup.IPSetReferenceStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -9756,6 +9908,7 @@ class CfnRuleGroup(
9756
9908
  '''The processing guidance for a rule, used by AWS WAF to determine whether a web request matches the rule.
9757
9909
 
9758
9910
  :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`` .
9911
+ :param asn_match_statement: A rule statement that inspects web traffic based on the Autonomous System Number (ASN) associated with the request's IP address. For additional details, see `ASN match rule statement <https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-asn-match.html>`_ in the `AWS WAF Developer Guide <https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html>`_ .
9759
9912
  :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
9913
  :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
9914
  :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 +9933,7 @@ class CfnRuleGroup(
9780
9933
 
9781
9934
  # all: Any
9782
9935
  # all_query_arguments: Any
9936
+ # asn: Any
9783
9937
  # forwarded_ip: Any
9784
9938
  # http_method: Any
9785
9939
  # ip: Any
@@ -9794,6 +9948,13 @@ class CfnRuleGroup(
9794
9948
  and_statement=wafv2.CfnRuleGroup.AndStatementProperty(
9795
9949
  statements=[statement_property_]
9796
9950
  ),
9951
+ asn_match_statement=wafv2.CfnRuleGroup.AsnMatchStatementProperty(
9952
+ asn_list=[123],
9953
+ forwarded_ip_config=wafv2.CfnRuleGroup.ForwardedIPConfigurationProperty(
9954
+ fallback_behavior="fallbackBehavior",
9955
+ header_name="headerName"
9956
+ )
9957
+ ),
9797
9958
  byte_match_statement=wafv2.CfnRuleGroup.ByteMatchStatementProperty(
9798
9959
  field_to_match=wafv2.CfnRuleGroup.FieldToMatchProperty(
9799
9960
  all_query_arguments=all_query_arguments,
@@ -9887,6 +10048,7 @@ class CfnRuleGroup(
9887
10048
 
9888
10049
  # the properties below are optional
9889
10050
  custom_keys=[wafv2.CfnRuleGroup.RateBasedStatementCustomKeyProperty(
10051
+ asn=asn,
9890
10052
  cookie=wafv2.CfnRuleGroup.RateLimitCookieProperty(
9891
10053
  name="name",
9892
10054
  text_transformations=[wafv2.CfnRuleGroup.TextTransformationProperty(
@@ -10227,6 +10389,7 @@ class CfnRuleGroup(
10227
10389
  if __debug__:
10228
10390
  type_hints = typing.get_type_hints(_typecheckingstub__c10bc3e3f69d89ad06f25a44daee62e7de586ae4280e39230f29c24092fe4a4f)
10229
10391
  check_type(argname="argument and_statement", value=and_statement, expected_type=type_hints["and_statement"])
10392
+ check_type(argname="argument asn_match_statement", value=asn_match_statement, expected_type=type_hints["asn_match_statement"])
10230
10393
  check_type(argname="argument byte_match_statement", value=byte_match_statement, expected_type=type_hints["byte_match_statement"])
10231
10394
  check_type(argname="argument geo_match_statement", value=geo_match_statement, expected_type=type_hints["geo_match_statement"])
10232
10395
  check_type(argname="argument ip_set_reference_statement", value=ip_set_reference_statement, expected_type=type_hints["ip_set_reference_statement"])
@@ -10242,6 +10405,8 @@ class CfnRuleGroup(
10242
10405
  self._values: typing.Dict[builtins.str, typing.Any] = {}
10243
10406
  if and_statement is not None:
10244
10407
  self._values["and_statement"] = and_statement
10408
+ if asn_match_statement is not None:
10409
+ self._values["asn_match_statement"] = asn_match_statement
10245
10410
  if byte_match_statement is not None:
10246
10411
  self._values["byte_match_statement"] = byte_match_statement
10247
10412
  if geo_match_statement is not None:
@@ -10280,6 +10445,19 @@ class CfnRuleGroup(
10280
10445
  result = self._values.get("and_statement")
10281
10446
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.AndStatementProperty"]], result)
10282
10447
 
10448
+ @builtins.property
10449
+ def asn_match_statement(
10450
+ self,
10451
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.AsnMatchStatementProperty"]]:
10452
+ '''A rule statement that inspects web traffic based on the Autonomous System Number (ASN) associated with the request's IP address.
10453
+
10454
+ For additional details, see `ASN match rule statement <https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-asn-match.html>`_ in the `AWS WAF Developer Guide <https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html>`_ .
10455
+
10456
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-asnmatchstatement
10457
+ '''
10458
+ result = self._values.get("asn_match_statement")
10459
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnRuleGroup.AsnMatchStatementProperty"]], result)
10460
+
10283
10461
  @builtins.property
10284
10462
  def byte_match_statement(
10285
10463
  self,
@@ -11173,7 +11351,7 @@ class CfnWebACL(
11173
11351
  data_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.DataProtectionConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
11174
11352
  description: typing.Optional[builtins.str] = None,
11175
11353
  name: typing.Optional[builtins.str] = None,
11176
- on_source_d_do_s_protection_config: typing.Any = None,
11354
+ on_source_d_do_s_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.OnSourceDDoSProtectionConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
11177
11355
  rules: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RuleProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
11178
11356
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
11179
11357
  token_domains: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -11191,7 +11369,7 @@ class CfnWebACL(
11191
11369
  :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.
11192
11370
  :param description: A description of the web ACL that helps with identification.
11193
11371
  :param name: The name of the web ACL. You cannot change the name of a web ACL after you create it.
11194
- :param on_source_d_do_s_protection_config:
11372
+ :param on_source_d_do_s_protection_config: Configures the level of DDoS protection that applies to web ACLs associated with Application Load Balancers.
11195
11373
  :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.
11196
11374
  :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.
11197
11375
  :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.
@@ -11471,11 +11649,17 @@ class CfnWebACL(
11471
11649
 
11472
11650
  @builtins.property
11473
11651
  @jsii.member(jsii_name="onSourceDDoSProtectionConfig")
11474
- def on_source_d_do_s_protection_config(self) -> typing.Any:
11475
- return typing.cast(typing.Any, jsii.get(self, "onSourceDDoSProtectionConfig"))
11652
+ def on_source_d_do_s_protection_config(
11653
+ self,
11654
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.OnSourceDDoSProtectionConfigProperty"]]:
11655
+ '''Configures the level of DDoS protection that applies to web ACLs associated with Application Load Balancers.'''
11656
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.OnSourceDDoSProtectionConfigProperty"]], jsii.get(self, "onSourceDDoSProtectionConfig"))
11476
11657
 
11477
11658
  @on_source_d_do_s_protection_config.setter
11478
- def on_source_d_do_s_protection_config(self, value: typing.Any) -> None:
11659
+ def on_source_d_do_s_protection_config(
11660
+ self,
11661
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.OnSourceDDoSProtectionConfigProperty"]],
11662
+ ) -> None:
11479
11663
  if __debug__:
11480
11664
  type_hints = typing.get_type_hints(_typecheckingstub__1180464a1661a74085b880efee37841284ce892adac9d3cda8cb5c117c625ba2)
11481
11665
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
@@ -11550,6 +11734,8 @@ class CfnWebACL(
11550
11734
 
11551
11735
  This configuration is used in ``ManagedRuleGroupConfig`` .
11552
11736
 
11737
+ 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* .
11738
+
11553
11739
  :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`` .
11554
11740
  :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`` .
11555
11741
  :param request_inspection: The criteria for inspecting account creation requests, used by the ACFP rule group to validate and track account creation attempts.
@@ -11735,6 +11921,8 @@ class CfnWebACL(
11735
11921
 
11736
11922
  This configuration is used in ``ManagedRuleGroupConfig`` .
11737
11923
 
11924
+ 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* .
11925
+
11738
11926
  :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.
11739
11927
  :param enable_regex_in_path: Allow the use of regular expressions in the login page path.
11740
11928
  :param request_inspection: The criteria for inspecting login requests, used by the ATP rule group to validate credentials usage.
@@ -11865,6 +12053,108 @@ class CfnWebACL(
11865
12053
  k + "=" + repr(v) for k, v in self._values.items()
11866
12054
  )
11867
12055
 
12056
+ @jsii.data_type(
12057
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty",
12058
+ jsii_struct_bases=[],
12059
+ name_mapping={
12060
+ "client_side_action_config": "clientSideActionConfig",
12061
+ "sensitivity_to_block": "sensitivityToBlock",
12062
+ },
12063
+ )
12064
+ class AWSManagedRulesAntiDDoSRuleSetProperty:
12065
+ def __init__(
12066
+ self,
12067
+ *,
12068
+ client_side_action_config: typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.ClientSideActionConfigProperty", typing.Dict[builtins.str, typing.Any]]],
12069
+ sensitivity_to_block: typing.Optional[builtins.str] = None,
12070
+ ) -> None:
12071
+ '''Configures the use of the anti-DDoS managed rule group, ``AWSManagedRulesAntiDDoSRuleSet`` . This configuration is used in ``ManagedRuleGroupConfig`` .
12072
+
12073
+ The configuration that you provide here determines whether and how the rules in the rule group are used.
12074
+
12075
+ 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* .
12076
+
12077
+ :param client_side_action_config: Configures the request handling that's applied by the managed rule group rules ``ChallengeAllDuringEvent`` and ``ChallengeDDoSRequests`` during a distributed denial of service (DDoS) attack.
12078
+ :param sensitivity_to_block: The sensitivity that the rule group rule ``DDoSRequests`` uses when matching against the DDoS suspicion labeling on a request. The managed rule group adds the labeling during DDoS events, before the ``DDoSRequests`` rule runs. The higher the sensitivity, the more levels of labeling that the rule matches: - Low sensitivity is less sensitive, causing the rule to match only on the most likely participants in an attack, which are the requests with the high suspicion label ``awswaf:managed:aws:anti-ddos:high-suspicion-ddos-request`` . - Medium sensitivity causes the rule to match on the medium and high suspicion labels. - High sensitivity causes the rule to match on all of the suspicion labels: low, medium, and high. Default: ``LOW``
12079
+
12080
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-awsmanagedrulesantiddosruleset.html
12081
+ :exampleMetadata: fixture=_generated
12082
+
12083
+ Example::
12084
+
12085
+ # The code below shows an example of how to instantiate this type.
12086
+ # The values are placeholders you should change.
12087
+ from aws_cdk import aws_wafv2 as wafv2
12088
+
12089
+ a_wSManaged_rules_anti_dDo_sRule_set_property = wafv2.CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty(
12090
+ client_side_action_config=wafv2.CfnWebACL.ClientSideActionConfigProperty(
12091
+ challenge=wafv2.CfnWebACL.ClientSideActionProperty(
12092
+ usage_of_action="usageOfAction",
12093
+
12094
+ # the properties below are optional
12095
+ exempt_uri_regular_expressions=[wafv2.CfnWebACL.RegexProperty(
12096
+ regex_string="regexString"
12097
+ )],
12098
+ sensitivity="sensitivity"
12099
+ )
12100
+ ),
12101
+
12102
+ # the properties below are optional
12103
+ sensitivity_to_block="sensitivityToBlock"
12104
+ )
12105
+ '''
12106
+ if __debug__:
12107
+ type_hints = typing.get_type_hints(_typecheckingstub__9315d92e3528c134a601f6cf9b27df2b90e082b1e29a17eadf8fbf68ac10e8c4)
12108
+ check_type(argname="argument client_side_action_config", value=client_side_action_config, expected_type=type_hints["client_side_action_config"])
12109
+ check_type(argname="argument sensitivity_to_block", value=sensitivity_to_block, expected_type=type_hints["sensitivity_to_block"])
12110
+ self._values: typing.Dict[builtins.str, typing.Any] = {
12111
+ "client_side_action_config": client_side_action_config,
12112
+ }
12113
+ if sensitivity_to_block is not None:
12114
+ self._values["sensitivity_to_block"] = sensitivity_to_block
12115
+
12116
+ @builtins.property
12117
+ def client_side_action_config(
12118
+ self,
12119
+ ) -> typing.Union[_IResolvable_da3f097b, "CfnWebACL.ClientSideActionConfigProperty"]:
12120
+ '''Configures the request handling that's applied by the managed rule group rules ``ChallengeAllDuringEvent`` and ``ChallengeDDoSRequests`` during a distributed denial of service (DDoS) attack.
12121
+
12122
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-awsmanagedrulesantiddosruleset.html#cfn-wafv2-webacl-awsmanagedrulesantiddosruleset-clientsideactionconfig
12123
+ '''
12124
+ result = self._values.get("client_side_action_config")
12125
+ assert result is not None, "Required property 'client_side_action_config' is missing"
12126
+ return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnWebACL.ClientSideActionConfigProperty"], result)
12127
+
12128
+ @builtins.property
12129
+ def sensitivity_to_block(self) -> typing.Optional[builtins.str]:
12130
+ '''The sensitivity that the rule group rule ``DDoSRequests`` uses when matching against the DDoS suspicion labeling on a request.
12131
+
12132
+ The managed rule group adds the labeling during DDoS events, before the ``DDoSRequests`` rule runs.
12133
+
12134
+ The higher the sensitivity, the more levels of labeling that the rule matches:
12135
+
12136
+ - Low sensitivity is less sensitive, causing the rule to match only on the most likely participants in an attack, which are the requests with the high suspicion label ``awswaf:managed:aws:anti-ddos:high-suspicion-ddos-request`` .
12137
+ - Medium sensitivity causes the rule to match on the medium and high suspicion labels.
12138
+ - High sensitivity causes the rule to match on all of the suspicion labels: low, medium, and high.
12139
+
12140
+ Default: ``LOW``
12141
+
12142
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-awsmanagedrulesantiddosruleset.html#cfn-wafv2-webacl-awsmanagedrulesantiddosruleset-sensitivitytoblock
12143
+ '''
12144
+ result = self._values.get("sensitivity_to_block")
12145
+ return typing.cast(typing.Optional[builtins.str], result)
12146
+
12147
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
12148
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
12149
+
12150
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
12151
+ return not (rhs == self)
12152
+
12153
+ def __repr__(self) -> str:
12154
+ return "AWSManagedRulesAntiDDoSRuleSetProperty(%s)" % ", ".join(
12155
+ k + "=" + repr(v) for k, v in self._values.items()
12156
+ )
12157
+
11868
12158
  @jsii.data_type(
11869
12159
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.AWSManagedRulesBotControlRuleSetProperty",
11870
12160
  jsii_struct_bases=[],
@@ -11884,6 +12174,8 @@ class CfnWebACL(
11884
12174
 
11885
12175
  This configuration is used in ``ManagedRuleGroupConfig`` .
11886
12176
 
12177
+ 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* .
12178
+
11887
12179
  :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* .
11888
12180
  :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``
11889
12181
 
@@ -12076,6 +12368,92 @@ class CfnWebACL(
12076
12368
  k + "=" + repr(v) for k, v in self._values.items()
12077
12369
  )
12078
12370
 
12371
+ @jsii.data_type(
12372
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.AsnMatchStatementProperty",
12373
+ jsii_struct_bases=[],
12374
+ name_mapping={
12375
+ "asn_list": "asnList",
12376
+ "forwarded_ip_config": "forwardedIpConfig",
12377
+ },
12378
+ )
12379
+ class AsnMatchStatementProperty:
12380
+ def __init__(
12381
+ self,
12382
+ *,
12383
+ asn_list: typing.Optional[typing.Union[typing.Sequence[jsii.Number], _IResolvable_da3f097b]] = None,
12384
+ forwarded_ip_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.ForwardedIPConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
12385
+ ) -> None:
12386
+ '''A rule statement that inspects web traffic based on the Autonomous System Number (ASN) associated with the request's IP address.
12387
+
12388
+ For additional details, see `ASN match rule statement <https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-asn-match.html>`_ in the `AWS WAF Developer Guide <https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html>`_ .
12389
+
12390
+ :param asn_list: Contains one or more Autonomous System Numbers (ASNs). ASNs are unique identifiers assigned to large internet networks managed by organizations such as internet service providers, enterprises, universities, or government agencies.
12391
+ :param forwarded_ip_config: The configuration for inspecting IP addresses to match against an ASN in an HTTP header that you specify, instead of using the IP address that's reported by the web request origin. Commonly, this is the X-Forwarded-For (XFF) header, but you can specify any header name.
12392
+
12393
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-asnmatchstatement.html
12394
+ :exampleMetadata: fixture=_generated
12395
+
12396
+ Example::
12397
+
12398
+ # The code below shows an example of how to instantiate this type.
12399
+ # The values are placeholders you should change.
12400
+ from aws_cdk import aws_wafv2 as wafv2
12401
+
12402
+ asn_match_statement_property = wafv2.CfnWebACL.AsnMatchStatementProperty(
12403
+ asn_list=[123],
12404
+ forwarded_ip_config=wafv2.CfnWebACL.ForwardedIPConfigurationProperty(
12405
+ fallback_behavior="fallbackBehavior",
12406
+ header_name="headerName"
12407
+ )
12408
+ )
12409
+ '''
12410
+ if __debug__:
12411
+ type_hints = typing.get_type_hints(_typecheckingstub__8995ed18208bf9dcca46075f2ba4072467a8327472896fee5efcf1415648dfe8)
12412
+ check_type(argname="argument asn_list", value=asn_list, expected_type=type_hints["asn_list"])
12413
+ check_type(argname="argument forwarded_ip_config", value=forwarded_ip_config, expected_type=type_hints["forwarded_ip_config"])
12414
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
12415
+ if asn_list is not None:
12416
+ self._values["asn_list"] = asn_list
12417
+ if forwarded_ip_config is not None:
12418
+ self._values["forwarded_ip_config"] = forwarded_ip_config
12419
+
12420
+ @builtins.property
12421
+ def asn_list(
12422
+ self,
12423
+ ) -> typing.Optional[typing.Union[typing.List[jsii.Number], _IResolvable_da3f097b]]:
12424
+ '''Contains one or more Autonomous System Numbers (ASNs).
12425
+
12426
+ ASNs are unique identifiers assigned to large internet networks managed by organizations such as internet service providers, enterprises, universities, or government agencies.
12427
+
12428
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-asnmatchstatement.html#cfn-wafv2-webacl-asnmatchstatement-asnlist
12429
+ '''
12430
+ result = self._values.get("asn_list")
12431
+ return typing.cast(typing.Optional[typing.Union[typing.List[jsii.Number], _IResolvable_da3f097b]], result)
12432
+
12433
+ @builtins.property
12434
+ def forwarded_ip_config(
12435
+ self,
12436
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.ForwardedIPConfigurationProperty"]]:
12437
+ '''The configuration for inspecting IP addresses to match against an ASN in an HTTP header that you specify, instead of using the IP address that's reported by the web request origin.
12438
+
12439
+ Commonly, this is the X-Forwarded-For (XFF) header, but you can specify any header name.
12440
+
12441
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-asnmatchstatement.html#cfn-wafv2-webacl-asnmatchstatement-forwardedipconfig
12442
+ '''
12443
+ result = self._values.get("forwarded_ip_config")
12444
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.ForwardedIPConfigurationProperty"]], result)
12445
+
12446
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
12447
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
12448
+
12449
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
12450
+ return not (rhs == self)
12451
+
12452
+ def __repr__(self) -> str:
12453
+ return "AsnMatchStatementProperty(%s)" % ", ".join(
12454
+ k + "=" + repr(v) for k, v in self._values.items()
12455
+ )
12456
+
12079
12457
  @jsii.data_type(
12080
12458
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.AssociationConfigProperty",
12081
12459
  jsii_struct_bases=[],
@@ -12805,6 +13183,210 @@ class CfnWebACL(
12805
13183
  k + "=" + repr(v) for k, v in self._values.items()
12806
13184
  )
12807
13185
 
13186
+ @jsii.data_type(
13187
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.ClientSideActionConfigProperty",
13188
+ jsii_struct_bases=[],
13189
+ name_mapping={"challenge": "challenge"},
13190
+ )
13191
+ class ClientSideActionConfigProperty:
13192
+ def __init__(
13193
+ self,
13194
+ *,
13195
+ challenge: typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.ClientSideActionProperty", typing.Dict[builtins.str, typing.Any]]],
13196
+ ) -> None:
13197
+ '''This is part of the configuration for the managed rules ``AWSManagedRulesAntiDDoSRuleSet`` in ``ManagedRuleGroupConfig`` .
13198
+
13199
+ :param challenge: Configuration for the use of the ``AWSManagedRulesAntiDDoSRuleSet`` rules ``ChallengeAllDuringEvent`` and ``ChallengeDDoSRequests`` . .. epigraph:: This setting isn't related to the configuration of the ``Challenge`` action itself. It only configures the use of the two anti-DDoS rules named here. You can enable or disable the use of these rules, and you can configure how to use them when they are enabled.
13200
+
13201
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideactionconfig.html
13202
+ :exampleMetadata: fixture=_generated
13203
+
13204
+ Example::
13205
+
13206
+ # The code below shows an example of how to instantiate this type.
13207
+ # The values are placeholders you should change.
13208
+ from aws_cdk import aws_wafv2 as wafv2
13209
+
13210
+ client_side_action_config_property = wafv2.CfnWebACL.ClientSideActionConfigProperty(
13211
+ challenge=wafv2.CfnWebACL.ClientSideActionProperty(
13212
+ usage_of_action="usageOfAction",
13213
+
13214
+ # the properties below are optional
13215
+ exempt_uri_regular_expressions=[wafv2.CfnWebACL.RegexProperty(
13216
+ regex_string="regexString"
13217
+ )],
13218
+ sensitivity="sensitivity"
13219
+ )
13220
+ )
13221
+ '''
13222
+ if __debug__:
13223
+ type_hints = typing.get_type_hints(_typecheckingstub__776e223dfae595baf3dc144792b2d7158c77847ddf24785048d19516ebcb955b)
13224
+ check_type(argname="argument challenge", value=challenge, expected_type=type_hints["challenge"])
13225
+ self._values: typing.Dict[builtins.str, typing.Any] = {
13226
+ "challenge": challenge,
13227
+ }
13228
+
13229
+ @builtins.property
13230
+ def challenge(
13231
+ self,
13232
+ ) -> typing.Union[_IResolvable_da3f097b, "CfnWebACL.ClientSideActionProperty"]:
13233
+ '''Configuration for the use of the ``AWSManagedRulesAntiDDoSRuleSet`` rules ``ChallengeAllDuringEvent`` and ``ChallengeDDoSRequests`` .
13234
+
13235
+ .. epigraph::
13236
+
13237
+ This setting isn't related to the configuration of the ``Challenge`` action itself. It only configures the use of the two anti-DDoS rules named here.
13238
+
13239
+ You can enable or disable the use of these rules, and you can configure how to use them when they are enabled.
13240
+
13241
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideactionconfig.html#cfn-wafv2-webacl-clientsideactionconfig-challenge
13242
+ '''
13243
+ result = self._values.get("challenge")
13244
+ assert result is not None, "Required property 'challenge' is missing"
13245
+ return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnWebACL.ClientSideActionProperty"], result)
13246
+
13247
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
13248
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
13249
+
13250
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
13251
+ return not (rhs == self)
13252
+
13253
+ def __repr__(self) -> str:
13254
+ return "ClientSideActionConfigProperty(%s)" % ", ".join(
13255
+ k + "=" + repr(v) for k, v in self._values.items()
13256
+ )
13257
+
13258
+ @jsii.data_type(
13259
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.ClientSideActionProperty",
13260
+ jsii_struct_bases=[],
13261
+ name_mapping={
13262
+ "usage_of_action": "usageOfAction",
13263
+ "exempt_uri_regular_expressions": "exemptUriRegularExpressions",
13264
+ "sensitivity": "sensitivity",
13265
+ },
13266
+ )
13267
+ class ClientSideActionProperty:
13268
+ def __init__(
13269
+ self,
13270
+ *,
13271
+ usage_of_action: builtins.str,
13272
+ 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,
13273
+ sensitivity: typing.Optional[builtins.str] = None,
13274
+ ) -> None:
13275
+ '''This is part of the ``AWSManagedRulesAntiDDoSRuleSet`` ``ClientSideActionConfig`` configuration in ``ManagedRuleGroupConfig`` .
13276
+
13277
+ :param usage_of_action: Determines whether to use the ``AWSManagedRulesAntiDDoSRuleSet`` rules ``ChallengeAllDuringEvent`` and ``ChallengeDDoSRequests`` in the rule group evaluation and the related label ``awswaf:managed:aws:anti-ddos:challengeable-request`` . - If usage is enabled: - The managed rule group adds the label ``awswaf:managed:aws:anti-ddos:challengeable-request`` to any web request whose URL does *NOT* match the regular expressions provided in the ``ClientSideAction`` setting ``ExemptUriRegularExpressions`` . - The two rules are evaluated against web requests for protected resources that are experiencing a DDoS attack. The two rules only apply their action to matching requests that have the label ``awswaf:managed:aws:anti-ddos:challengeable-request`` . - If usage is disabled: - The managed rule group doesn't add the label ``awswaf:managed:aws:anti-ddos:challengeable-request`` to any web requests. - The two rules are not evaluated. - None of the other ``ClientSideAction`` settings have any effect. .. epigraph:: This setting only enables or disables the use of the two anti-DDOS rules ``ChallengeAllDuringEvent`` and ``ChallengeDDoSRequests`` in the anti-DDoS managed rule group. This setting doesn't alter the action setting in the two rules. To override the actions used by the rules ``ChallengeAllDuringEvent`` and ``ChallengeDDoSRequests`` , enable this setting, and then override the rule actions in the usual way, in your managed rule group configuration.
13278
+ :param exempt_uri_regular_expressions: The regular expression to match against the web request URI, used to identify requests that can't handle a silent browser challenge. When the ``ClientSideAction`` setting ``UsageOfAction`` is enabled, the managed rule group uses this setting to determine which requests to label with ``awswaf:managed:aws:anti-ddos:challengeable-request`` . If ``UsageOfAction`` is disabled, this setting has no effect and the managed rule group doesn't add the label to any requests. The anti-DDoS managed rule group doesn't evaluate the rules ``ChallengeDDoSRequests`` or ``ChallengeAllDuringEvent`` for web requests whose URIs match this regex. This is true regardless of whether you override the rule action for either of the rules in your web ACL configuration. AWS recommends using a regular expression. This setting is required if ``UsageOfAction`` is set to ``ENABLED`` . If required, you can provide between 1 and 5 regex objects in the array of settings. AWS recommends starting with the following setting. Review and update it for your application's needs: ``\\/api\\/|\\.(acc|avi|css|gif|jpe?g|js|mp[34]|ogg|otf|pdf|png|tiff?|ttf|webm|webp|woff2?)$``
13279
+ :param sensitivity: The sensitivity that the rule group rule ``ChallengeDDoSRequests`` uses when matching against the DDoS suspicion labeling on a request. The managed rule group adds the labeling during DDoS events, before the ``ChallengeDDoSRequests`` rule runs. The higher the sensitivity, the more levels of labeling that the rule matches: - Low sensitivity is less sensitive, causing the rule to match only on the most likely participants in an attack, which are the requests with the high suspicion label ``awswaf:managed:aws:anti-ddos:high-suspicion-ddos-request`` . - Medium sensitivity causes the rule to match on the medium and high suspicion labels. - High sensitivity causes the rule to match on all of the suspicion labels: low, medium, and high. Default: ``HIGH``
13280
+
13281
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideaction.html
13282
+ :exampleMetadata: fixture=_generated
13283
+
13284
+ Example::
13285
+
13286
+ # The code below shows an example of how to instantiate this type.
13287
+ # The values are placeholders you should change.
13288
+ from aws_cdk import aws_wafv2 as wafv2
13289
+
13290
+ client_side_action_property = wafv2.CfnWebACL.ClientSideActionProperty(
13291
+ usage_of_action="usageOfAction",
13292
+
13293
+ # the properties below are optional
13294
+ exempt_uri_regular_expressions=[wafv2.CfnWebACL.RegexProperty(
13295
+ regex_string="regexString"
13296
+ )],
13297
+ sensitivity="sensitivity"
13298
+ )
13299
+ '''
13300
+ if __debug__:
13301
+ type_hints = typing.get_type_hints(_typecheckingstub__de331114f33ba80cf8bd042358ad9467ab930574012abea7782f175fd2a7b649)
13302
+ check_type(argname="argument usage_of_action", value=usage_of_action, expected_type=type_hints["usage_of_action"])
13303
+ check_type(argname="argument exempt_uri_regular_expressions", value=exempt_uri_regular_expressions, expected_type=type_hints["exempt_uri_regular_expressions"])
13304
+ check_type(argname="argument sensitivity", value=sensitivity, expected_type=type_hints["sensitivity"])
13305
+ self._values: typing.Dict[builtins.str, typing.Any] = {
13306
+ "usage_of_action": usage_of_action,
13307
+ }
13308
+ if exempt_uri_regular_expressions is not None:
13309
+ self._values["exempt_uri_regular_expressions"] = exempt_uri_regular_expressions
13310
+ if sensitivity is not None:
13311
+ self._values["sensitivity"] = sensitivity
13312
+
13313
+ @builtins.property
13314
+ def usage_of_action(self) -> builtins.str:
13315
+ '''Determines whether to use the ``AWSManagedRulesAntiDDoSRuleSet`` rules ``ChallengeAllDuringEvent`` and ``ChallengeDDoSRequests`` in the rule group evaluation and the related label ``awswaf:managed:aws:anti-ddos:challengeable-request`` .
13316
+
13317
+ - If usage is enabled:
13318
+ - The managed rule group adds the label ``awswaf:managed:aws:anti-ddos:challengeable-request`` to any web request whose URL does *NOT* match the regular expressions provided in the ``ClientSideAction`` setting ``ExemptUriRegularExpressions`` .
13319
+ - The two rules are evaluated against web requests for protected resources that are experiencing a DDoS attack. The two rules only apply their action to matching requests that have the label ``awswaf:managed:aws:anti-ddos:challengeable-request`` .
13320
+ - If usage is disabled:
13321
+ - The managed rule group doesn't add the label ``awswaf:managed:aws:anti-ddos:challengeable-request`` to any web requests.
13322
+ - The two rules are not evaluated.
13323
+ - None of the other ``ClientSideAction`` settings have any effect.
13324
+
13325
+ .. epigraph::
13326
+
13327
+ This setting only enables or disables the use of the two anti-DDOS rules ``ChallengeAllDuringEvent`` and ``ChallengeDDoSRequests`` in the anti-DDoS managed rule group.
13328
+
13329
+ This setting doesn't alter the action setting in the two rules. To override the actions used by the rules ``ChallengeAllDuringEvent`` and ``ChallengeDDoSRequests`` , enable this setting, and then override the rule actions in the usual way, in your managed rule group configuration.
13330
+
13331
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideaction.html#cfn-wafv2-webacl-clientsideaction-usageofaction
13332
+ '''
13333
+ result = self._values.get("usage_of_action")
13334
+ assert result is not None, "Required property 'usage_of_action' is missing"
13335
+ return typing.cast(builtins.str, result)
13336
+
13337
+ @builtins.property
13338
+ def exempt_uri_regular_expressions(
13339
+ self,
13340
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnWebACL.RegexProperty"]]]]:
13341
+ '''The regular expression to match against the web request URI, used to identify requests that can't handle a silent browser challenge.
13342
+
13343
+ When the ``ClientSideAction`` setting ``UsageOfAction`` is enabled, the managed rule group uses this setting to determine which requests to label with ``awswaf:managed:aws:anti-ddos:challengeable-request`` . If ``UsageOfAction`` is disabled, this setting has no effect and the managed rule group doesn't add the label to any requests.
13344
+
13345
+ The anti-DDoS managed rule group doesn't evaluate the rules ``ChallengeDDoSRequests`` or ``ChallengeAllDuringEvent`` for web requests whose URIs match this regex. This is true regardless of whether you override the rule action for either of the rules in your web ACL configuration.
13346
+
13347
+ AWS recommends using a regular expression.
13348
+
13349
+ This setting is required if ``UsageOfAction`` is set to ``ENABLED`` . If required, you can provide between 1 and 5 regex objects in the array of settings.
13350
+
13351
+ AWS recommends starting with the following setting. Review and update it for your application's needs:
13352
+
13353
+ ``\\/api\\/|\\.(acc|avi|css|gif|jpe?g|js|mp[34]|ogg|otf|pdf|png|tiff?|ttf|webm|webp|woff2?)$``
13354
+
13355
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideaction.html#cfn-wafv2-webacl-clientsideaction-exempturiregularexpressions
13356
+ '''
13357
+ result = self._values.get("exempt_uri_regular_expressions")
13358
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnWebACL.RegexProperty"]]]], result)
13359
+
13360
+ @builtins.property
13361
+ def sensitivity(self) -> typing.Optional[builtins.str]:
13362
+ '''The sensitivity that the rule group rule ``ChallengeDDoSRequests`` uses when matching against the DDoS suspicion labeling on a request.
13363
+
13364
+ The managed rule group adds the labeling during DDoS events, before the ``ChallengeDDoSRequests`` rule runs.
13365
+
13366
+ The higher the sensitivity, the more levels of labeling that the rule matches:
13367
+
13368
+ - Low sensitivity is less sensitive, causing the rule to match only on the most likely participants in an attack, which are the requests with the high suspicion label ``awswaf:managed:aws:anti-ddos:high-suspicion-ddos-request`` .
13369
+ - Medium sensitivity causes the rule to match on the medium and high suspicion labels.
13370
+ - High sensitivity causes the rule to match on all of the suspicion labels: low, medium, and high.
13371
+
13372
+ Default: ``HIGH``
13373
+
13374
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-clientsideaction.html#cfn-wafv2-webacl-clientsideaction-sensitivity
13375
+ '''
13376
+ result = self._values.get("sensitivity")
13377
+ return typing.cast(typing.Optional[builtins.str], result)
13378
+
13379
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
13380
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
13381
+
13382
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
13383
+ return not (rhs == self)
13384
+
13385
+ def __repr__(self) -> str:
13386
+ return "ClientSideActionProperty(%s)" % ", ".join(
13387
+ k + "=" + repr(v) for k, v in self._values.items()
13388
+ )
13389
+
12808
13390
  @jsii.data_type(
12809
13391
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.CookieMatchPatternProperty",
12810
13392
  jsii_struct_bases=[],
@@ -15456,6 +16038,7 @@ class CfnWebACL(
15456
16038
  jsii_struct_bases=[],
15457
16039
  name_mapping={
15458
16040
  "aws_managed_rules_acfp_rule_set": "awsManagedRulesAcfpRuleSet",
16041
+ "aws_managed_rules_anti_d_do_s_rule_set": "awsManagedRulesAntiDDoSRuleSet",
15459
16042
  "aws_managed_rules_atp_rule_set": "awsManagedRulesAtpRuleSet",
15460
16043
  "aws_managed_rules_bot_control_rule_set": "awsManagedRulesBotControlRuleSet",
15461
16044
  "login_path": "loginPath",
@@ -15469,6 +16052,7 @@ class CfnWebACL(
15469
16052
  self,
15470
16053
  *,
15471
16054
  aws_managed_rules_acfp_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.AWSManagedRulesACFPRuleSetProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
16055
+ 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,
15472
16056
  aws_managed_rules_atp_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.AWSManagedRulesATPRuleSetProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
15473
16057
  aws_managed_rules_bot_control_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.AWSManagedRulesBotControlRuleSetProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
15474
16058
  login_path: typing.Optional[builtins.str] = None,
@@ -15485,6 +16069,7 @@ class CfnWebACL(
15485
16069
  - Use the ``AWSManagedRulesBotControlRuleSet`` configuration object to configure the protection level that you want the Bot Control rule group to use.
15486
16070
 
15487
16071
  :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* .
16072
+ :param aws_managed_rules_anti_d_do_s_rule_set: Additional configuration for using the anti-DDoS managed rule group, ``AWSManagedRulesAntiDDoSRuleSet`` . Use this to configure anti-DDoS behavior for the rule group. For information about using the anti-DDoS managed rule group, see `AWS WAF Anti-DDoS rule group <https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-anti-ddos.html>`_ and `Distributed Denial of Service (DDoS) prevention <https://docs.aws.amazon.com/waf/latest/developerguide/waf-anti-ddos.html>`_ in the *AWS WAF Developer Guide* .
15488
16073
  :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* .
15489
16074
  :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* .
15490
16075
  :param login_path: .. epigraph:: Instead of this setting, provide your configuration under ``AWSManagedRulesATPRuleSet`` .
@@ -15549,6 +16134,22 @@ class CfnWebACL(
15549
16134
  )
15550
16135
  )
15551
16136
  ),
16137
+ aws_managed_rules_anti_dDo_sRule_set=wafv2.CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty(
16138
+ client_side_action_config=wafv2.CfnWebACL.ClientSideActionConfigProperty(
16139
+ challenge=wafv2.CfnWebACL.ClientSideActionProperty(
16140
+ usage_of_action="usageOfAction",
16141
+
16142
+ # the properties below are optional
16143
+ exempt_uri_regular_expressions=[wafv2.CfnWebACL.RegexProperty(
16144
+ regex_string="regexString"
16145
+ )],
16146
+ sensitivity="sensitivity"
16147
+ )
16148
+ ),
16149
+
16150
+ # the properties below are optional
16151
+ sensitivity_to_block="sensitivityToBlock"
16152
+ ),
15552
16153
  aws_managed_rules_atp_rule_set=wafv2.CfnWebACL.AWSManagedRulesATPRuleSetProperty(
15553
16154
  login_path="loginPath",
15554
16155
 
@@ -15603,6 +16204,7 @@ class CfnWebACL(
15603
16204
  if __debug__:
15604
16205
  type_hints = typing.get_type_hints(_typecheckingstub__517661cb97cc58c609587fc6ca9907b2e23d8f3cd6e1e4034f3f6d82b85d2d77)
15605
16206
  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"])
16207
+ 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"])
15606
16208
  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"])
15607
16209
  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"])
15608
16210
  check_type(argname="argument login_path", value=login_path, expected_type=type_hints["login_path"])
@@ -15612,6 +16214,8 @@ class CfnWebACL(
15612
16214
  self._values: typing.Dict[builtins.str, typing.Any] = {}
15613
16215
  if aws_managed_rules_acfp_rule_set is not None:
15614
16216
  self._values["aws_managed_rules_acfp_rule_set"] = aws_managed_rules_acfp_rule_set
16217
+ if aws_managed_rules_anti_d_do_s_rule_set is not None:
16218
+ self._values["aws_managed_rules_anti_d_do_s_rule_set"] = aws_managed_rules_anti_d_do_s_rule_set
15615
16219
  if aws_managed_rules_atp_rule_set is not None:
15616
16220
  self._values["aws_managed_rules_atp_rule_set"] = aws_managed_rules_atp_rule_set
15617
16221
  if aws_managed_rules_bot_control_rule_set is not None:
@@ -15640,6 +16244,21 @@ class CfnWebACL(
15640
16244
  result = self._values.get("aws_managed_rules_acfp_rule_set")
15641
16245
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AWSManagedRulesACFPRuleSetProperty"]], result)
15642
16246
 
16247
+ @builtins.property
16248
+ def aws_managed_rules_anti_d_do_s_rule_set(
16249
+ self,
16250
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty"]]:
16251
+ '''Additional configuration for using the anti-DDoS managed rule group, ``AWSManagedRulesAntiDDoSRuleSet`` .
16252
+
16253
+ Use this to configure anti-DDoS behavior for the rule group.
16254
+
16255
+ For information about using the anti-DDoS managed rule group, see `AWS WAF Anti-DDoS rule group <https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-anti-ddos.html>`_ and `Distributed Denial of Service (DDoS) prevention <https://docs.aws.amazon.com/waf/latest/developerguide/waf-anti-ddos.html>`_ in the *AWS WAF Developer Guide* .
16256
+
16257
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupconfig.html#cfn-wafv2-webacl-managedrulegroupconfig-awsmanagedrulesantiddosruleset
16258
+ '''
16259
+ result = self._values.get("aws_managed_rules_anti_d_do_s_rule_set")
16260
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AWSManagedRulesAntiDDoSRuleSetProperty"]], result)
16261
+
15643
16262
  @builtins.property
15644
16263
  def aws_managed_rules_atp_rule_set(
15645
16264
  self,
@@ -15766,8 +16385,8 @@ class CfnWebACL(
15766
16385
  :param name: The name of the managed rule group. You use this, along with the vendor name, to identify the rule group.
15767
16386
  :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.
15768
16387
  :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`` .
15769
- :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.
15770
- :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.
16388
+ :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.
16389
+ :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.
15771
16390
  :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.
15772
16391
  :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.
15773
16392
 
@@ -15850,6 +16469,7 @@ class CfnWebACL(
15850
16469
  The rule groups used for intelligent threat mitigation require additional configuration:
15851
16470
 
15852
16471
  - 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.
16472
+ - 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.
15853
16473
  - 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.
15854
16474
  - Use the ``AWSManagedRulesBotControlRuleSet`` configuration object to configure the protection level that you want the Bot Control rule group to use.
15855
16475
 
@@ -15867,7 +16487,7 @@ class CfnWebACL(
15867
16487
  You specify one override for each rule whose action you want to change.
15868
16488
  .. epigraph::
15869
16489
 
15870
- 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.
16490
+ 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.
15871
16491
 
15872
16492
  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.
15873
16493
 
@@ -15967,6 +16587,60 @@ class CfnWebACL(
15967
16587
  k + "=" + repr(v) for k, v in self._values.items()
15968
16588
  )
15969
16589
 
16590
+ @jsii.data_type(
16591
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.OnSourceDDoSProtectionConfigProperty",
16592
+ jsii_struct_bases=[],
16593
+ name_mapping={"alb_low_reputation_mode": "albLowReputationMode"},
16594
+ )
16595
+ class OnSourceDDoSProtectionConfigProperty:
16596
+ def __init__(self, *, alb_low_reputation_mode: builtins.str) -> None:
16597
+ '''Configures the level of DDoS protection that applies to web ACLs associated with Application Load Balancers.
16598
+
16599
+ :param alb_low_reputation_mode: The level of DDoS protection that applies to web ACLs associated with Application Load Balancers. ``ACTIVE_UNDER_DDOS`` protection is enabled by default whenever a web ACL is associated with an Application Load Balancer. In the event that an Application Load Balancer experiences high-load conditions or suspected DDoS attacks, the ``ACTIVE_UNDER_DDOS`` protection automatically rate limits traffic from known low reputation sources without disrupting Application Load Balancer availability. ``ALWAYS_ON`` protection provides constant, always-on monitoring of known low reputation sources for suspected DDoS attacks. While this provides a higher level of protection, there may be potential impacts on legitimate traffic.
16600
+
16601
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-onsourceddosprotectionconfig.html
16602
+ :exampleMetadata: fixture=_generated
16603
+
16604
+ Example::
16605
+
16606
+ # The code below shows an example of how to instantiate this type.
16607
+ # The values are placeholders you should change.
16608
+ from aws_cdk import aws_wafv2 as wafv2
16609
+
16610
+ on_source_dDo_sProtection_config_property = wafv2.CfnWebACL.OnSourceDDoSProtectionConfigProperty(
16611
+ alb_low_reputation_mode="albLowReputationMode"
16612
+ )
16613
+ '''
16614
+ if __debug__:
16615
+ type_hints = typing.get_type_hints(_typecheckingstub__b1d55e97c88ee1084655df55da4bb940ea39dc6807c3b4f425073a3a747e0dbc)
16616
+ check_type(argname="argument alb_low_reputation_mode", value=alb_low_reputation_mode, expected_type=type_hints["alb_low_reputation_mode"])
16617
+ self._values: typing.Dict[builtins.str, typing.Any] = {
16618
+ "alb_low_reputation_mode": alb_low_reputation_mode,
16619
+ }
16620
+
16621
+ @builtins.property
16622
+ def alb_low_reputation_mode(self) -> builtins.str:
16623
+ '''The level of DDoS protection that applies to web ACLs associated with Application Load Balancers.
16624
+
16625
+ ``ACTIVE_UNDER_DDOS`` protection is enabled by default whenever a web ACL is associated with an Application Load Balancer. In the event that an Application Load Balancer experiences high-load conditions or suspected DDoS attacks, the ``ACTIVE_UNDER_DDOS`` protection automatically rate limits traffic from known low reputation sources without disrupting Application Load Balancer availability. ``ALWAYS_ON`` protection provides constant, always-on monitoring of known low reputation sources for suspected DDoS attacks. While this provides a higher level of protection, there may be potential impacts on legitimate traffic.
16626
+
16627
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-onsourceddosprotectionconfig.html#cfn-wafv2-webacl-onsourceddosprotectionconfig-alblowreputationmode
16628
+ '''
16629
+ result = self._values.get("alb_low_reputation_mode")
16630
+ assert result is not None, "Required property 'alb_low_reputation_mode' is missing"
16631
+ return typing.cast(builtins.str, result)
16632
+
16633
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
16634
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
16635
+
16636
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
16637
+ return not (rhs == self)
16638
+
16639
+ def __repr__(self) -> str:
16640
+ return "OnSourceDDoSProtectionConfigProperty(%s)" % ", ".join(
16641
+ k + "=" + repr(v) for k, v in self._values.items()
16642
+ )
16643
+
15970
16644
  @jsii.data_type(
15971
16645
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.OrStatementProperty",
15972
16646
  jsii_struct_bases=[],
@@ -16113,6 +16787,7 @@ class CfnWebACL(
16113
16787
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.RateBasedStatementCustomKeyProperty",
16114
16788
  jsii_struct_bases=[],
16115
16789
  name_mapping={
16790
+ "asn": "asn",
16116
16791
  "cookie": "cookie",
16117
16792
  "forwarded_ip": "forwardedIp",
16118
16793
  "header": "header",
@@ -16130,6 +16805,7 @@ class CfnWebACL(
16130
16805
  def __init__(
16131
16806
  self,
16132
16807
  *,
16808
+ asn: typing.Any = None,
16133
16809
  cookie: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RateLimitCookieProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
16134
16810
  forwarded_ip: typing.Any = None,
16135
16811
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.RateLimitHeaderProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -16148,6 +16824,7 @@ class CfnWebACL(
16148
16824
 
16149
16825
  Web requests that are missing any of the components specified in the aggregation keys are omitted from the rate-based rule evaluation and handling.
16150
16826
 
16827
+ :param asn: Use an Autonomous System Number (ASN) derived from the request's originating or forwarded IP address as an aggregate key. Each distinct ASN contributes to the aggregation instance.
16151
16828
  :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.
16152
16829
  :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.
16153
16830
  :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.
@@ -16169,11 +16846,13 @@ class CfnWebACL(
16169
16846
  # The values are placeholders you should change.
16170
16847
  from aws_cdk import aws_wafv2 as wafv2
16171
16848
 
16849
+ # asn: Any
16172
16850
  # forwarded_ip: Any
16173
16851
  # http_method: Any
16174
16852
  # ip: Any
16175
16853
 
16176
16854
  rate_based_statement_custom_key_property = wafv2.CfnWebACL.RateBasedStatementCustomKeyProperty(
16855
+ asn=asn,
16177
16856
  cookie=wafv2.CfnWebACL.RateLimitCookieProperty(
16178
16857
  name="name",
16179
16858
  text_transformations=[wafv2.CfnWebACL.TextTransformationProperty(
@@ -16223,6 +16902,7 @@ class CfnWebACL(
16223
16902
  '''
16224
16903
  if __debug__:
16225
16904
  type_hints = typing.get_type_hints(_typecheckingstub__2edac52bcb13f69d4349ba55a4d083851908f1dd71831794e88ac043e1ade5a3)
16905
+ check_type(argname="argument asn", value=asn, expected_type=type_hints["asn"])
16226
16906
  check_type(argname="argument cookie", value=cookie, expected_type=type_hints["cookie"])
16227
16907
  check_type(argname="argument forwarded_ip", value=forwarded_ip, expected_type=type_hints["forwarded_ip"])
16228
16908
  check_type(argname="argument header", value=header, expected_type=type_hints["header"])
@@ -16235,6 +16915,8 @@ class CfnWebACL(
16235
16915
  check_type(argname="argument query_string", value=query_string, expected_type=type_hints["query_string"])
16236
16916
  check_type(argname="argument uri_path", value=uri_path, expected_type=type_hints["uri_path"])
16237
16917
  self._values: typing.Dict[builtins.str, typing.Any] = {}
16918
+ if asn is not None:
16919
+ self._values["asn"] = asn
16238
16920
  if cookie is not None:
16239
16921
  self._values["cookie"] = cookie
16240
16922
  if forwarded_ip is not None:
@@ -16258,6 +16940,17 @@ class CfnWebACL(
16258
16940
  if uri_path is not None:
16259
16941
  self._values["uri_path"] = uri_path
16260
16942
 
16943
+ @builtins.property
16944
+ def asn(self) -> typing.Any:
16945
+ '''Use an Autonomous System Number (ASN) derived from the request's originating or forwarded IP address as an aggregate key.
16946
+
16947
+ Each distinct ASN contributes to the aggregation instance.
16948
+
16949
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementcustomkey.html#cfn-wafv2-webacl-ratebasedstatementcustomkey-asn
16950
+ '''
16951
+ result = self._values.get("asn")
16952
+ return typing.cast(typing.Any, result)
16953
+
16261
16954
  @builtins.property
16262
16955
  def cookie(
16263
16956
  self,
@@ -17494,6 +18187,63 @@ class CfnWebACL(
17494
18187
  k + "=" + repr(v) for k, v in self._values.items()
17495
18188
  )
17496
18189
 
18190
+ @jsii.data_type(
18191
+ jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.RegexProperty",
18192
+ jsii_struct_bases=[],
18193
+ name_mapping={"regex_string": "regexString"},
18194
+ )
18195
+ class RegexProperty:
18196
+ def __init__(
18197
+ self,
18198
+ *,
18199
+ regex_string: typing.Optional[builtins.str] = None,
18200
+ ) -> None:
18201
+ '''A single regular expression.
18202
+
18203
+ This is used in a ``RegexPatternSet`` and also in the configuration for the AWS Managed Rules rule group ``AWSManagedRulesAntiDDoSRuleSet`` .
18204
+
18205
+ :param regex_string: The string representing the regular expression.
18206
+
18207
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regex.html
18208
+ :exampleMetadata: fixture=_generated
18209
+
18210
+ Example::
18211
+
18212
+ # The code below shows an example of how to instantiate this type.
18213
+ # The values are placeholders you should change.
18214
+ from aws_cdk import aws_wafv2 as wafv2
18215
+
18216
+ regex_property = wafv2.CfnWebACL.RegexProperty(
18217
+ regex_string="regexString"
18218
+ )
18219
+ '''
18220
+ if __debug__:
18221
+ type_hints = typing.get_type_hints(_typecheckingstub__91e754c074f286d30a035b0cb9d25503568a265d4426fe4f4bfc0766c9c71d90)
18222
+ check_type(argname="argument regex_string", value=regex_string, expected_type=type_hints["regex_string"])
18223
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
18224
+ if regex_string is not None:
18225
+ self._values["regex_string"] = regex_string
18226
+
18227
+ @builtins.property
18228
+ def regex_string(self) -> typing.Optional[builtins.str]:
18229
+ '''The string representing the regular expression.
18230
+
18231
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regex.html#cfn-wafv2-webacl-regex-regexstring
18232
+ '''
18233
+ result = self._values.get("regex_string")
18234
+ return typing.cast(typing.Optional[builtins.str], result)
18235
+
18236
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
18237
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
18238
+
18239
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
18240
+ return not (rhs == self)
18241
+
18242
+ def __repr__(self) -> str:
18243
+ return "RegexProperty(%s)" % ", ".join(
18244
+ k + "=" + repr(v) for k, v in self._values.items()
18245
+ )
18246
+
17497
18247
  @jsii.data_type(
17498
18248
  jsii_type="aws-cdk-lib.aws_wafv2.CfnWebACL.RequestBodyAssociatedResourceTypeConfigProperty",
17499
18249
  jsii_struct_bases=[],
@@ -18762,7 +19512,7 @@ class CfnWebACL(
18762
19512
 
18763
19513
  :param arn: The Amazon Resource Name (ARN) of the entity.
18764
19514
  :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`` .
18765
- :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.
19515
+ :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.
18766
19516
 
18767
19517
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rulegroupreferencestatement.html
18768
19518
  :exampleMetadata: fixture=_generated
@@ -18878,7 +19628,7 @@ class CfnWebACL(
18878
19628
  You specify one override for each rule whose action you want to change.
18879
19629
  .. epigraph::
18880
19630
 
18881
- 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.
19631
+ 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.
18882
19632
 
18883
19633
  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.
18884
19634
 
@@ -19595,6 +20345,7 @@ class CfnWebACL(
19595
20345
  jsii_struct_bases=[],
19596
20346
  name_mapping={
19597
20347
  "and_statement": "andStatement",
20348
+ "asn_match_statement": "asnMatchStatement",
19598
20349
  "byte_match_statement": "byteMatchStatement",
19599
20350
  "geo_match_statement": "geoMatchStatement",
19600
20351
  "ip_set_reference_statement": "ipSetReferenceStatement",
@@ -19616,6 +20367,7 @@ class CfnWebACL(
19616
20367
  self,
19617
20368
  *,
19618
20369
  and_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.AndStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
20370
+ asn_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.AsnMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
19619
20371
  byte_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.ByteMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
19620
20372
  geo_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.GeoMatchStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
19621
20373
  ip_set_reference_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnWebACL.IPSetReferenceStatementProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -19634,6 +20386,7 @@ class CfnWebACL(
19634
20386
  '''The processing guidance for a rule, used by AWS WAF to determine whether a web request matches the rule.
19635
20387
 
19636
20388
  :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`` .
20389
+ :param asn_match_statement: A rule statement that inspects web traffic based on the Autonomous System Number (ASN) associated with the request's IP address. For additional details, see `ASN match rule statement <https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-asn-match.html>`_ in the `AWS WAF Developer Guide <https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html>`_ .
19637
20390
  :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.
19638
20391
  :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>`_ .
19639
20392
  :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.
@@ -19659,6 +20412,7 @@ class CfnWebACL(
19659
20412
  if __debug__:
19660
20413
  type_hints = typing.get_type_hints(_typecheckingstub__0382dea984940e1444b28282683162580df37103e33ab59384736c3a85a2ec11)
19661
20414
  check_type(argname="argument and_statement", value=and_statement, expected_type=type_hints["and_statement"])
20415
+ check_type(argname="argument asn_match_statement", value=asn_match_statement, expected_type=type_hints["asn_match_statement"])
19662
20416
  check_type(argname="argument byte_match_statement", value=byte_match_statement, expected_type=type_hints["byte_match_statement"])
19663
20417
  check_type(argname="argument geo_match_statement", value=geo_match_statement, expected_type=type_hints["geo_match_statement"])
19664
20418
  check_type(argname="argument ip_set_reference_statement", value=ip_set_reference_statement, expected_type=type_hints["ip_set_reference_statement"])
@@ -19676,6 +20430,8 @@ class CfnWebACL(
19676
20430
  self._values: typing.Dict[builtins.str, typing.Any] = {}
19677
20431
  if and_statement is not None:
19678
20432
  self._values["and_statement"] = and_statement
20433
+ if asn_match_statement is not None:
20434
+ self._values["asn_match_statement"] = asn_match_statement
19679
20435
  if byte_match_statement is not None:
19680
20436
  self._values["byte_match_statement"] = byte_match_statement
19681
20437
  if geo_match_statement is not None:
@@ -19718,6 +20474,19 @@ class CfnWebACL(
19718
20474
  result = self._values.get("and_statement")
19719
20475
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AndStatementProperty"]], result)
19720
20476
 
20477
+ @builtins.property
20478
+ def asn_match_statement(
20479
+ self,
20480
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AsnMatchStatementProperty"]]:
20481
+ '''A rule statement that inspects web traffic based on the Autonomous System Number (ASN) associated with the request's IP address.
20482
+
20483
+ For additional details, see `ASN match rule statement <https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-asn-match.html>`_ in the `AWS WAF Developer Guide <https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html>`_ .
20484
+
20485
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statement.html#cfn-wafv2-webacl-statement-asnmatchstatement
20486
+ '''
20487
+ result = self._values.get("asn_match_statement")
20488
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnWebACL.AsnMatchStatementProperty"]], result)
20489
+
19721
20490
  @builtins.property
19722
20491
  def byte_match_statement(
19723
20492
  self,
@@ -20615,7 +21384,7 @@ class CfnWebACLProps:
20615
21384
  data_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.DataProtectionConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20616
21385
  description: typing.Optional[builtins.str] = None,
20617
21386
  name: typing.Optional[builtins.str] = None,
20618
- on_source_d_do_s_protection_config: typing.Any = None,
21387
+ on_source_d_do_s_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.OnSourceDDoSProtectionConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20619
21388
  rules: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RuleProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
20620
21389
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
20621
21390
  token_domains: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -20632,7 +21401,7 @@ class CfnWebACLProps:
20632
21401
  :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.
20633
21402
  :param description: A description of the web ACL that helps with identification.
20634
21403
  :param name: The name of the web ACL. You cannot change the name of a web ACL after you create it.
20635
- :param on_source_d_do_s_protection_config:
21404
+ :param on_source_d_do_s_protection_config: Configures the level of DDoS protection that applies to web ACLs associated with Application Load Balancers.
20636
21405
  :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.
20637
21406
  :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.
20638
21407
  :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.
@@ -20826,12 +21595,15 @@ class CfnWebACLProps:
20826
21595
  return typing.cast(typing.Optional[builtins.str], result)
20827
21596
 
20828
21597
  @builtins.property
20829
- def on_source_d_do_s_protection_config(self) -> typing.Any:
20830
- '''
21598
+ def on_source_d_do_s_protection_config(
21599
+ self,
21600
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnWebACL.OnSourceDDoSProtectionConfigProperty]]:
21601
+ '''Configures the level of DDoS protection that applies to web ACLs associated with Application Load Balancers.
21602
+
20831
21603
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-onsourceddosprotectionconfig
20832
21604
  '''
20833
21605
  result = self._values.get("on_source_d_do_s_protection_config")
20834
- return typing.cast(typing.Any, result)
21606
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnWebACL.OnSourceDDoSProtectionConfigProperty]], result)
20835
21607
 
20836
21608
  @builtins.property
20837
21609
  def rules(
@@ -21276,6 +22048,14 @@ def _typecheckingstub__563d7c7c3c7b0cea107ea61895bf83f08deacaa77dd306915bce97452
21276
22048
  """Type checking stubs"""
21277
22049
  pass
21278
22050
 
22051
+ def _typecheckingstub__1b7bfd70c769fabe423acc42aa4ce7a934b8907c56a69421327294c209c8da78(
22052
+ *,
22053
+ asn_list: typing.Optional[typing.Union[typing.Sequence[jsii.Number], _IResolvable_da3f097b]] = None,
22054
+ forwarded_ip_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.ForwardedIPConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22055
+ ) -> None:
22056
+ """Type checking stubs"""
22057
+ pass
22058
+
21279
22059
  def _typecheckingstub__48d37744c2bde6e8969fbbe9f60128093f4d69360ff6c086fcb635ca42f3ae63(
21280
22060
  *,
21281
22061
  custom_response: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.CustomResponseProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -21533,6 +22313,7 @@ def _typecheckingstub__ac0f7a31c2c062eaaca70b7d43c11c1e6b78ce7502ec2206e832cabc7
21533
22313
 
21534
22314
  def _typecheckingstub__6bc232408309212f7b145d76c0106073269f111e106ab6d74a4d2168f41f248b(
21535
22315
  *,
22316
+ asn: typing.Any = None,
21536
22317
  cookie: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.RateLimitCookieProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21537
22318
  forwarded_ip: typing.Any = None,
21538
22319
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.RateLimitHeaderProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -21698,6 +22479,7 @@ def _typecheckingstub__b9ae549bd77f9cf10d97954d1e78a797db181843dcc5510b91fc32672
21698
22479
  def _typecheckingstub__c10bc3e3f69d89ad06f25a44daee62e7de586ae4280e39230f29c24092fe4a4f(
21699
22480
  *,
21700
22481
  and_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.AndStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22482
+ asn_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.AsnMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21701
22483
  byte_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.ByteMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21702
22484
  geo_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.GeoMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21703
22485
  ip_set_reference_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnRuleGroup.IPSetReferenceStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -21776,7 +22558,7 @@ def _typecheckingstub__03030a65c492e95a1d1ae5ddafd6acbb9efdfa7e18b6367ac7e03eb8f
21776
22558
  data_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.DataProtectionConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21777
22559
  description: typing.Optional[builtins.str] = None,
21778
22560
  name: typing.Optional[builtins.str] = None,
21779
- on_source_d_do_s_protection_config: typing.Any = None,
22561
+ on_source_d_do_s_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.OnSourceDDoSProtectionConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
21780
22562
  rules: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RuleProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
21781
22563
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
21782
22564
  token_domains: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -21857,7 +22639,7 @@ def _typecheckingstub__191460374393c7b9829682ab4faa571596cd3c2090e46352a427930a2
21857
22639
  pass
21858
22640
 
21859
22641
  def _typecheckingstub__1180464a1661a74085b880efee37841284ce892adac9d3cda8cb5c117c625ba2(
21860
- value: typing.Any,
22642
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnWebACL.OnSourceDDoSProtectionConfigProperty]],
21861
22643
  ) -> None:
21862
22644
  """Type checking stubs"""
21863
22645
  pass
@@ -21901,6 +22683,14 @@ def _typecheckingstub__f9aee7f94c21473b0495313f92d8a99724499d3f5a99e7229679efb1e
21901
22683
  """Type checking stubs"""
21902
22684
  pass
21903
22685
 
22686
+ def _typecheckingstub__9315d92e3528c134a601f6cf9b27df2b90e082b1e29a17eadf8fbf68ac10e8c4(
22687
+ *,
22688
+ client_side_action_config: typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.ClientSideActionConfigProperty, typing.Dict[builtins.str, typing.Any]]],
22689
+ sensitivity_to_block: typing.Optional[builtins.str] = None,
22690
+ ) -> None:
22691
+ """Type checking stubs"""
22692
+ pass
22693
+
21904
22694
  def _typecheckingstub__23917b7bd12237aafb58493973b8f61366778e01800aad21ea2f95a01294dc76(
21905
22695
  *,
21906
22696
  inspection_level: builtins.str,
@@ -21923,6 +22713,14 @@ def _typecheckingstub__e3977b616ebe935b8882258fb7fe1261468bceabf99977afc1c05b1df
21923
22713
  """Type checking stubs"""
21924
22714
  pass
21925
22715
 
22716
+ def _typecheckingstub__8995ed18208bf9dcca46075f2ba4072467a8327472896fee5efcf1415648dfe8(
22717
+ *,
22718
+ asn_list: typing.Optional[typing.Union[typing.Sequence[jsii.Number], _IResolvable_da3f097b]] = None,
22719
+ forwarded_ip_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.ForwardedIPConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22720
+ ) -> None:
22721
+ """Type checking stubs"""
22722
+ pass
22723
+
21926
22724
  def _typecheckingstub__889bff55ba91160187275a11669025b829161457b27db183745c6a70c6fb0947(
21927
22725
  *,
21928
22726
  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,
@@ -21983,6 +22781,22 @@ def _typecheckingstub__e59d4e09b55c6fb1e18f3dbf3d0659f147db2659c300a744e836928d4
21983
22781
  """Type checking stubs"""
21984
22782
  pass
21985
22783
 
22784
+ def _typecheckingstub__776e223dfae595baf3dc144792b2d7158c77847ddf24785048d19516ebcb955b(
22785
+ *,
22786
+ challenge: typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.ClientSideActionProperty, typing.Dict[builtins.str, typing.Any]]],
22787
+ ) -> None:
22788
+ """Type checking stubs"""
22789
+ pass
22790
+
22791
+ def _typecheckingstub__de331114f33ba80cf8bd042358ad9467ab930574012abea7782f175fd2a7b649(
22792
+ *,
22793
+ usage_of_action: builtins.str,
22794
+ 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,
22795
+ sensitivity: typing.Optional[builtins.str] = None,
22796
+ ) -> None:
22797
+ """Type checking stubs"""
22798
+ pass
22799
+
21986
22800
  def _typecheckingstub__11e565e9aad1b474694cbb7c884715be324a3c5b38238a45e13e0d2ed78d816d(
21987
22801
  *,
21988
22802
  all: typing.Any = None,
@@ -22214,6 +23028,7 @@ def _typecheckingstub__bf81be90baf4410ecf4fe3290d007b8b6c18da545bbac600a4ec86a29
22214
23028
  def _typecheckingstub__517661cb97cc58c609587fc6ca9907b2e23d8f3cd6e1e4034f3f6d82b85d2d77(
22215
23029
  *,
22216
23030
  aws_managed_rules_acfp_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.AWSManagedRulesACFPRuleSetProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23031
+ 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,
22217
23032
  aws_managed_rules_atp_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.AWSManagedRulesATPRuleSetProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22218
23033
  aws_managed_rules_bot_control_rule_set: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.AWSManagedRulesBotControlRuleSetProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22219
23034
  login_path: typing.Optional[builtins.str] = None,
@@ -22244,6 +23059,13 @@ def _typecheckingstub__6323d964e28230f9d2649acc0c25b70ee57b1f6721b37df85848f3c96
22244
23059
  """Type checking stubs"""
22245
23060
  pass
22246
23061
 
23062
+ def _typecheckingstub__b1d55e97c88ee1084655df55da4bb940ea39dc6807c3b4f425073a3a747e0dbc(
23063
+ *,
23064
+ alb_low_reputation_mode: builtins.str,
23065
+ ) -> None:
23066
+ """Type checking stubs"""
23067
+ pass
23068
+
22247
23069
  def _typecheckingstub__857a9b37018dee0d151e0a05984b557cea8bf5f8e57f6957cacb75335b7f4985(
22248
23070
  *,
22249
23071
  statements: typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.StatementProperty, typing.Dict[builtins.str, typing.Any]]]]],
@@ -22261,6 +23083,7 @@ def _typecheckingstub__799e1b838f491914647df091fcbac72eb8119756fda0c013be732c461
22261
23083
 
22262
23084
  def _typecheckingstub__2edac52bcb13f69d4349ba55a4d083851908f1dd71831794e88ac043e1ade5a3(
22263
23085
  *,
23086
+ asn: typing.Any = None,
22264
23087
  cookie: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RateLimitCookieProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22265
23088
  forwarded_ip: typing.Any = None,
22266
23089
  header: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RateLimitHeaderProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -22365,6 +23188,13 @@ def _typecheckingstub__02b7d36560bfd4ed2bd6508818cf89b216972c719200032cdc4b3a04e
22365
23188
  """Type checking stubs"""
22366
23189
  pass
22367
23190
 
23191
+ def _typecheckingstub__91e754c074f286d30a035b0cb9d25503568a265d4426fe4f4bfc0766c9c71d90(
23192
+ *,
23193
+ regex_string: typing.Optional[builtins.str] = None,
23194
+ ) -> None:
23195
+ """Type checking stubs"""
23196
+ pass
23197
+
22368
23198
  def _typecheckingstub__22d5e10d054b4857a7983cdc47094a04c46a1c4d98b791e6c9aa5b16fe172d31(
22369
23199
  *,
22370
23200
  default_size_inspection_limit: builtins.str,
@@ -22516,6 +23346,7 @@ def _typecheckingstub__58178c25f953747f989ea51846855e784a44825b0202fe8e0a5c3920a
22516
23346
  def _typecheckingstub__0382dea984940e1444b28282683162580df37103e33ab59384736c3a85a2ec11(
22517
23347
  *,
22518
23348
  and_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.AndStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23349
+ asn_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.AsnMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22519
23350
  byte_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.ByteMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22520
23351
  geo_match_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.GeoMatchStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22521
23352
  ip_set_reference_statement: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.IPSetReferenceStatementProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -22620,7 +23451,7 @@ def _typecheckingstub__6e738df983d65d43590c0a02c03e6e0daa3a2097ae335371d22711838
22620
23451
  data_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.DataProtectionConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22621
23452
  description: typing.Optional[builtins.str] = None,
22622
23453
  name: typing.Optional[builtins.str] = None,
22623
- on_source_d_do_s_protection_config: typing.Any = None,
23454
+ on_source_d_do_s_protection_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.OnSourceDDoSProtectionConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22624
23455
  rules: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnWebACL.RuleProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
22625
23456
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
22626
23457
  token_domains: typing.Optional[typing.Sequence[builtins.str]] = None,