aws-cdk-lib 2.153.0__py3-none-any.whl → 2.154.1__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 (266) hide show
  1. aws_cdk/__init__.py +157 -215
  2. aws_cdk/_jsii/__init__.py +2 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.153.0.jsii.tgz → aws-cdk-lib@2.154.1.jsii.tgz} +0 -0
  4. aws_cdk/alexa_ask/__init__.py +3 -3
  5. aws_cdk/aws_accessanalyzer/__init__.py +5 -5
  6. aws_cdk/aws_acmpca/__init__.py +79 -24
  7. aws_cdk/aws_amazonmq/__init__.py +161 -161
  8. aws_cdk/aws_amplify/__init__.py +36 -36
  9. aws_cdk/aws_amplifyuibuilder/__init__.py +32 -32
  10. aws_cdk/aws_apigateway/__init__.py +122 -122
  11. aws_cdk/aws_apigatewayv2/__init__.py +143 -130
  12. aws_cdk/aws_apigatewayv2_integrations/__init__.py +12 -12
  13. aws_cdk/aws_appconfig/__init__.py +59 -59
  14. aws_cdk/aws_appflow/__init__.py +20 -20
  15. aws_cdk/aws_appintegrations/__init__.py +19 -19
  16. aws_cdk/aws_applicationautoscaling/__init__.py +31 -16
  17. aws_cdk/aws_applicationinsights/__init__.py +11 -11
  18. aws_cdk/aws_applicationsignals/__init__.py +5 -5
  19. aws_cdk/aws_appmesh/__init__.py +35 -35
  20. aws_cdk/aws_apprunner/__init__.py +25 -25
  21. aws_cdk/aws_appstream/__init__.py +105 -105
  22. aws_cdk/aws_appsync/__init__.py +89 -89
  23. aws_cdk/aws_apptest/__init__.py +25 -25
  24. aws_cdk/aws_aps/__init__.py +14 -14
  25. aws_cdk/aws_arczonalshift/__init__.py +200 -3
  26. aws_cdk/aws_athena/__init__.py +25 -25
  27. aws_cdk/aws_auditmanager/__init__.py +15 -15
  28. aws_cdk/aws_autoscaling/__init__.py +84 -84
  29. aws_cdk/aws_autoscalingplans/__init__.py +2 -2
  30. aws_cdk/aws_b2bi/__init__.py +24 -24
  31. aws_cdk/aws_backup/__init__.py +33 -33
  32. aws_cdk/aws_backupgateway/__init__.py +7 -7
  33. aws_cdk/aws_batch/__init__.py +289 -35
  34. aws_cdk/aws_bcmdataexports/__init__.py +2 -2
  35. aws_cdk/aws_bedrock/__init__.py +15766 -3438
  36. aws_cdk/aws_billingconductor/__init__.py +28 -28
  37. aws_cdk/aws_budgets/__init__.py +12 -12
  38. aws_cdk/aws_cassandra/__init__.py +16 -16
  39. aws_cdk/aws_ce/__init__.py +17 -17
  40. aws_cdk/aws_certificatemanager/__init__.py +9 -9
  41. aws_cdk/aws_chatbot/__init__.py +22 -22
  42. aws_cdk/aws_cleanrooms/__init__.py +2470 -307
  43. aws_cdk/aws_cleanroomsml/__init__.py +5 -5
  44. aws_cdk/aws_cloud9/__init__.py +10 -10
  45. aws_cdk/aws_cloudformation/__init__.py +94 -69
  46. aws_cdk/aws_cloudfront/__init__.py +47 -33
  47. aws_cdk/aws_cloudtrail/__init__.py +46 -44
  48. aws_cdk/aws_cloudwatch/__init__.py +61 -69
  49. aws_cdk/aws_codeartifact/__init__.py +19 -19
  50. aws_cdk/aws_codebuild/__init__.py +99 -68
  51. aws_cdk/aws_codecommit/__init__.py +10 -6
  52. aws_cdk/aws_codeconnections/__init__.py +5 -5
  53. aws_cdk/aws_codedeploy/__init__.py +28 -28
  54. aws_cdk/aws_codeguruprofiler/__init__.py +5 -5
  55. aws_cdk/aws_codegurureviewer/__init__.py +6 -6
  56. aws_cdk/aws_codepipeline/__init__.py +849 -52
  57. aws_cdk/aws_codepipeline_actions/__init__.py +1 -1
  58. aws_cdk/aws_codestar/__init__.py +8 -8
  59. aws_cdk/aws_codestarconnections/__init__.py +17 -17
  60. aws_cdk/aws_codestarnotifications/__init__.py +10 -10
  61. aws_cdk/aws_cognito/__init__.py +465 -133
  62. aws_cdk/aws_comprehend/__init__.py +20 -20
  63. aws_cdk/aws_config/__init__.py +67 -67
  64. aws_cdk/aws_connect/__init__.py +139 -137
  65. aws_cdk/aws_connectcampaigns/__init__.py +5 -5
  66. aws_cdk/aws_controltower/__init__.py +12 -12
  67. aws_cdk/aws_cur/__init__.py +12 -12
  68. aws_cdk/aws_customerprofiles/__init__.py +36 -36
  69. aws_cdk/aws_databrew/__init__.py +45 -45
  70. aws_cdk/aws_datapipeline/__init__.py +12 -8
  71. aws_cdk/aws_datasync/__init__.py +119 -117
  72. aws_cdk/aws_datazone/__init__.py +63 -63
  73. aws_cdk/aws_dax/__init__.py +20 -20
  74. aws_cdk/aws_deadline/__init__.py +221 -292
  75. aws_cdk/aws_detective/__init__.py +8 -8
  76. aws_cdk/aws_devicefarm/__init__.py +37 -37
  77. aws_cdk/aws_devopsguru/__init__.py +2 -2
  78. aws_cdk/aws_directoryservice/__init__.py +15 -15
  79. aws_cdk/aws_dlm/__init__.py +12 -12
  80. aws_cdk/aws_dms/__init__.py +300 -298
  81. aws_cdk/aws_docdb/__init__.py +49 -49
  82. aws_cdk/aws_docdbelastic/__init__.py +14 -14
  83. aws_cdk/aws_dynamodb/__init__.py +371 -37
  84. aws_cdk/aws_ec2/__init__.py +914 -612
  85. aws_cdk/aws_ecr/__init__.py +117 -77
  86. aws_cdk/aws_ecr_assets/__init__.py +4 -4
  87. aws_cdk/aws_ecs/__init__.py +192 -191
  88. aws_cdk/aws_ecs_patterns/__init__.py +2 -2
  89. aws_cdk/aws_efs/__init__.py +22 -22
  90. aws_cdk/aws_eks/__init__.py +177 -61
  91. aws_cdk/aws_elasticache/__init__.py +218 -226
  92. aws_cdk/aws_elasticbeanstalk/__init__.py +25 -25
  93. aws_cdk/aws_elasticloadbalancing/__init__.py +16 -16
  94. aws_cdk/aws_elasticloadbalancingv2/__init__.py +1066 -102
  95. aws_cdk/aws_elasticloadbalancingv2_targets/__init__.py +86 -4
  96. aws_cdk/aws_elasticsearch/__init__.py +16 -16
  97. aws_cdk/aws_emr/__init__.py +74 -74
  98. aws_cdk/aws_emrcontainers/__init__.py +3 -3
  99. aws_cdk/aws_emrserverless/__init__.py +157 -14
  100. aws_cdk/aws_entityresolution/__init__.py +613 -35
  101. aws_cdk/aws_events/__init__.py +42 -42
  102. aws_cdk/aws_eventschemas/__init__.py +16 -16
  103. aws_cdk/aws_evidently/__init__.py +38 -38
  104. aws_cdk/aws_finspace/__init__.py +8 -8
  105. aws_cdk/aws_fis/__init__.py +12 -12
  106. aws_cdk/aws_fms/__init__.py +21 -21
  107. aws_cdk/aws_forecast/__init__.py +18 -11
  108. aws_cdk/aws_frauddetector/__init__.py +35 -35
  109. aws_cdk/aws_fsx/__init__.py +35 -35
  110. aws_cdk/aws_gamelift/__init__.py +155 -143
  111. aws_cdk/aws_globalaccelerator/__init__.py +46 -24
  112. aws_cdk/aws_glue/__init__.py +187 -143
  113. aws_cdk/aws_grafana/__init__.py +17 -17
  114. aws_cdk/aws_greengrass/__init__.py +48 -48
  115. aws_cdk/aws_greengrassv2/__init__.py +10 -10
  116. aws_cdk/aws_groundstation/__init__.py +16 -16
  117. aws_cdk/aws_guardduty/__init__.py +40 -38
  118. aws_cdk/aws_healthimaging/__init__.py +3 -3
  119. aws_cdk/aws_healthlake/__init__.py +6 -6
  120. aws_cdk/aws_iam/__init__.py +120 -122
  121. aws_cdk/aws_identitystore/__init__.py +6 -6
  122. aws_cdk/aws_imagebuilder/__init__.py +98 -98
  123. aws_cdk/aws_inspector/__init__.py +8 -8
  124. aws_cdk/aws_inspectorv2/__init__.py +102 -97
  125. aws_cdk/aws_internetmonitor/__init__.py +12 -12
  126. aws_cdk/aws_iot/__init__.py +141 -141
  127. aws_cdk/aws_iot1click/__init__.py +9 -9
  128. aws_cdk/aws_iotanalytics/__init__.py +21 -21
  129. aws_cdk/aws_iotcoredeviceadvisor/__init__.py +2 -2
  130. aws_cdk/aws_iotevents/__init__.py +20 -20
  131. aws_cdk/aws_iotfleethub/__init__.py +4 -4
  132. aws_cdk/aws_iotfleetwise/__init__.py +45 -45
  133. aws_cdk/aws_iotsitewise/__init__.py +40 -40
  134. aws_cdk/aws_iotthingsgraph/__init__.py +2 -2
  135. aws_cdk/aws_iottwinmaker/__init__.py +34 -34
  136. aws_cdk/aws_iotwireless/__init__.py +66 -66
  137. aws_cdk/aws_ivs/__init__.py +490 -34
  138. aws_cdk/aws_ivschat/__init__.py +9 -9
  139. aws_cdk/aws_kafkaconnect/__init__.py +22 -22
  140. aws_cdk/aws_kendra/__init__.py +28 -28
  141. aws_cdk/aws_kendraranking/__init__.py +4 -4
  142. aws_cdk/aws_kinesis/__init__.py +8 -8
  143. aws_cdk/aws_kinesisanalytics/__init__.py +23 -23
  144. aws_cdk/aws_kinesisanalyticsv2/__init__.py +15 -15
  145. aws_cdk/aws_kinesisfirehose/__init__.py +677 -18
  146. aws_cdk/aws_kinesisvideo/__init__.py +10 -10
  147. aws_cdk/aws_kms/__init__.py +20 -20
  148. aws_cdk/aws_lakeformation/__init__.py +36 -36
  149. aws_cdk/aws_lambda/__init__.py +174 -118
  150. aws_cdk/aws_launchwizard/__init__.py +508 -0
  151. aws_cdk/aws_lex/__init__.py +24 -24
  152. aws_cdk/aws_licensemanager/__init__.py +17 -17
  153. aws_cdk/aws_lightsail/__init__.py +90 -90
  154. aws_cdk/aws_location/__init__.py +41 -41
  155. aws_cdk/aws_logs/__init__.py +50 -50
  156. aws_cdk/aws_lookoutequipment/__init__.py +9 -9
  157. aws_cdk/aws_lookoutmetrics/__init__.py +10 -10
  158. aws_cdk/aws_lookoutvision/__init__.py +1 -1
  159. aws_cdk/aws_m2/__init__.py +20 -20
  160. aws_cdk/aws_macie/__init__.py +19 -19
  161. aws_cdk/aws_managedblockchain/__init__.py +10 -10
  162. aws_cdk/aws_mediaconnect/__init__.py +114 -77
  163. aws_cdk/aws_mediaconvert/__init__.py +20 -20
  164. aws_cdk/aws_medialive/__init__.py +49 -40
  165. aws_cdk/aws_mediapackage/__init__.py +38 -38
  166. aws_cdk/aws_mediapackagev2/__init__.py +178 -25
  167. aws_cdk/aws_mediastore/__init__.py +7 -7
  168. aws_cdk/aws_mediatailor/__init__.py +40 -40
  169. aws_cdk/aws_memorydb/__init__.py +41 -41
  170. aws_cdk/aws_msk/__init__.py +127 -39
  171. aws_cdk/aws_mwaa/__init__.py +25 -25
  172. aws_cdk/aws_neptune/__init__.py +55 -55
  173. aws_cdk/aws_neptunegraph/__init__.py +11 -11
  174. aws_cdk/aws_networkfirewall/__init__.py +36 -30
  175. aws_cdk/aws_networkmanager/__init__.py +1062 -91
  176. aws_cdk/aws_nimblestudio/__init__.py +31 -31
  177. aws_cdk/aws_oam/__init__.py +8 -8
  178. aws_cdk/aws_omics/__init__.py +36 -36
  179. aws_cdk/aws_opensearchserverless/__init__.py +25 -25
  180. aws_cdk/aws_opensearchservice/__init__.py +20 -20
  181. aws_cdk/aws_opsworks/__init__.py +87 -87
  182. aws_cdk/aws_opsworkscm/__init__.py +21 -21
  183. aws_cdk/aws_organizations/__init__.py +17 -17
  184. aws_cdk/aws_osis/__init__.py +122 -9
  185. aws_cdk/aws_panorama/__init__.py +27 -22
  186. aws_cdk/aws_paymentcryptography/__init__.py +7 -7
  187. aws_cdk/aws_pcaconnectorad/__init__.py +17 -17
  188. aws_cdk/aws_personalize/__init__.py +19 -19
  189. aws_cdk/aws_pinpoint/__init__.py +122 -122
  190. aws_cdk/aws_pinpointemail/__init__.py +16 -16
  191. aws_cdk/aws_pipes/__init__.py +14 -16
  192. aws_cdk/aws_proton/__init__.py +19 -19
  193. aws_cdk/aws_qbusiness/__init__.py +160 -45
  194. aws_cdk/aws_qldb/__init__.py +12 -12
  195. aws_cdk/aws_quicksight/__init__.py +91 -91
  196. aws_cdk/aws_ram/__init__.py +11 -11
  197. aws_cdk/aws_rds/__init__.py +365 -259
  198. aws_cdk/aws_redshift/__init__.py +136 -91
  199. aws_cdk/aws_redshiftserverless/__init__.py +27 -27
  200. aws_cdk/aws_refactorspaces/__init__.py +26 -26
  201. aws_cdk/aws_rekognition/__init__.py +16 -16
  202. aws_cdk/aws_resiliencehub/__init__.py +15 -15
  203. aws_cdk/aws_resourceexplorer2/__init__.py +8 -8
  204. aws_cdk/aws_resourcegroups/__init__.py +6 -6
  205. aws_cdk/aws_robomaker/__init__.py +25 -25
  206. aws_cdk/aws_rolesanywhere/__init__.py +67 -19
  207. aws_cdk/aws_route53/__init__.py +36 -36
  208. aws_cdk/aws_route53profiles/__init__.py +11 -11
  209. aws_cdk/aws_route53recoverycontrol/__init__.py +14 -14
  210. aws_cdk/aws_route53recoveryreadiness/__init__.py +13 -13
  211. aws_cdk/aws_route53resolver/__init__.py +123 -82
  212. aws_cdk/aws_rum/__init__.py +6 -6
  213. aws_cdk/aws_s3/__init__.py +136 -80
  214. aws_cdk/aws_s3_deployment/__init__.py +30 -24
  215. aws_cdk/aws_s3_notifications/__init__.py +3 -4
  216. aws_cdk/aws_s3express/__init__.py +5 -5
  217. aws_cdk/aws_s3objectlambda/__init__.py +6 -6
  218. aws_cdk/aws_s3outposts/__init__.py +16 -16
  219. aws_cdk/aws_sagemaker/__init__.py +2414 -282
  220. aws_cdk/aws_sam/__init__.py +101 -101
  221. aws_cdk/aws_scheduler/__init__.py +13 -13
  222. aws_cdk/aws_sdb/__init__.py +1 -1
  223. aws_cdk/aws_secretsmanager/__init__.py +20 -19
  224. aws_cdk/aws_securityhub/__init__.py +70 -57
  225. aws_cdk/aws_securitylake/__init__.py +341 -16
  226. aws_cdk/aws_servicecatalog/__init__.py +87 -87
  227. aws_cdk/aws_servicecatalogappregistry/__init__.py +12 -12
  228. aws_cdk/aws_servicediscovery/__init__.py +23 -23
  229. aws_cdk/aws_ses/__init__.py +12038 -5604
  230. aws_cdk/aws_shield/__init__.py +15 -15
  231. aws_cdk/aws_signer/__init__.py +9 -9
  232. aws_cdk/aws_simspaceweaver/__init__.py +5 -5
  233. aws_cdk/aws_sns/__init__.py +28 -28
  234. aws_cdk/aws_sqs/__init__.py +20 -20
  235. aws_cdk/aws_ssm/__init__.py +176 -105
  236. aws_cdk/aws_ssmcontacts/__init__.py +18 -18
  237. aws_cdk/aws_ssmincidents/__init__.py +11 -11
  238. aws_cdk/aws_sso/__init__.py +31 -31
  239. aws_cdk/aws_stepfunctions/__init__.py +370 -28
  240. aws_cdk/aws_supportapp/__init__.py +11 -11
  241. aws_cdk/aws_synthetics/__init__.py +18 -18
  242. aws_cdk/aws_systemsmanagersap/__init__.py +48 -7
  243. aws_cdk/aws_timestream/__init__.py +34 -34
  244. aws_cdk/aws_transfer/__init__.py +57 -57
  245. aws_cdk/aws_verifiedpermissions/__init__.py +11 -11
  246. aws_cdk/aws_voiceid/__init__.py +4 -4
  247. aws_cdk/aws_vpclattice/__init__.py +42 -42
  248. aws_cdk/aws_waf/__init__.py +17 -17
  249. aws_cdk/aws_wafregional/__init__.py +28 -28
  250. aws_cdk/aws_wafv2/__init__.py +39 -39
  251. aws_cdk/aws_wisdom/__init__.py +16 -16
  252. aws_cdk/aws_workspaces/__init__.py +18 -18
  253. aws_cdk/aws_workspacesthinclient/__init__.py +63 -9
  254. aws_cdk/aws_workspacesweb/__init__.py +87 -46
  255. aws_cdk/aws_xray/__init__.py +12 -12
  256. aws_cdk/cloud_assembly_schema/__init__.py +348 -239
  257. aws_cdk/custom_resources/__init__.py +289 -0
  258. aws_cdk/cx_api/__init__.py +15 -15
  259. aws_cdk/pipelines/__init__.py +172 -237
  260. {aws_cdk_lib-2.153.0.dist-info → aws_cdk_lib-2.154.1.dist-info}/METADATA +3 -2
  261. aws_cdk_lib-2.154.1.dist-info/RECORD +292 -0
  262. aws_cdk_lib-2.153.0.dist-info/RECORD +0 -291
  263. {aws_cdk_lib-2.153.0.dist-info → aws_cdk_lib-2.154.1.dist-info}/LICENSE +0 -0
  264. {aws_cdk_lib-2.153.0.dist-info → aws_cdk_lib-2.154.1.dist-info}/NOTICE +0 -0
  265. {aws_cdk_lib-2.153.0.dist-info → aws_cdk_lib-2.154.1.dist-info}/WHEEL +0 -0
  266. {aws_cdk_lib-2.153.0.dist-info → aws_cdk_lib-2.154.1.dist-info}/top_level.txt +0 -0
@@ -272,6 +272,23 @@ lb = elbv2.ApplicationLoadBalancer(self, "LB", vpc=vpc)
272
272
  lb.log_access_logs(bucket)
273
273
  ```
274
274
 
275
+ ### Setting up Connection Log Bucket on Application Load Balancer
276
+
277
+ Like access log bucket, the only server-side encryption option that's supported is Amazon S3-managed keys (SSE-S3). For more information
278
+ Documentation: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/enable-connection-logging.html
279
+
280
+ ```python
281
+ # vpc: ec2.Vpc
282
+
283
+
284
+ bucket = s3.Bucket(self, "ALBConnectionLogsBucket",
285
+ encryption=s3.BucketEncryption.S3_MANAGED
286
+ )
287
+
288
+ lb = elbv2.ApplicationLoadBalancer(self, "LB", vpc=vpc)
289
+ lb.log_connection_logs(bucket)
290
+ ```
291
+
275
292
  ## Defining a Network Load Balancer
276
293
 
277
294
  Network Load Balancers are defined in a similar way to Application Load
@@ -552,7 +569,7 @@ nlb = elbv2.NetworkLoadBalancer(self, "Nlb",
552
569
  listener = nlb.add_listener("listener", port=80)
553
570
 
554
571
  listener.add_targets("Targets",
555
- targets=[targets.AlbTarget(svc.load_balancer, 80)],
572
+ targets=[targets.AlbListenerTarget(svc.listener)],
556
573
  port=80
557
574
  )
558
575
 
@@ -819,6 +836,59 @@ then you will need to enable the `removeRuleSuffixFromLogicalId: true` property
819
836
 
820
837
  `ListenerRule`s have a unique `priority` for a given `Listener`.
821
838
  Because the `priority` must be unique, CloudFormation will always fail when creating a new `ListenerRule` to replace the existing one, unless you change the `priority` as well as the logicalId.
839
+
840
+ ## Configuring Mutual authentication with TLS in Application Load Balancer
841
+
842
+ You can configure Mutual authentication with TLS (mTLS) for Application Load Balancer.
843
+
844
+ To set mTLS, you must create an instance of `TrustStore` and set it to `ApplicationListener`.
845
+
846
+ For more information, see [Mutual authentication with TLS in Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/mutual-authentication.html)
847
+
848
+ ```python
849
+ import aws_cdk.aws_certificatemanager as acm
850
+
851
+ # certificate: acm.Certificate
852
+ # lb: elbv2.ApplicationLoadBalancer
853
+ # bucket: s3.Bucket
854
+
855
+
856
+ trust_store = elbv2.TrustStore(self, "Store",
857
+ bucket=bucket,
858
+ key="rootCA_cert.pem"
859
+ )
860
+
861
+ lb.add_listener("Listener",
862
+ port=443,
863
+ protocol=elbv2.ApplicationProtocol.HTTPS,
864
+ certificates=[certificate],
865
+ # mTLS settings
866
+ mutual_authentication=elbv2.MutualAuthentication(
867
+ ignore_client_certificate_expiry=False,
868
+ mutual_authentication_mode=elbv2.MutualAuthenticationMode.VERIFY,
869
+ trust_store=trust_store
870
+ ),
871
+ default_action=elbv2.ListenerAction.fixed_response(200, content_type="text/plain", message_body="Success mTLS")
872
+ )
873
+ ```
874
+
875
+ Optionally, you can create a certificate revocation list for a trust store by creating an instance of `TrustStoreRevocation`.
876
+
877
+ ```python
878
+ # trust_store: elbv2.TrustStore
879
+ # bucket: s3.Bucket
880
+
881
+
882
+ elbv2.TrustStoreRevocation(self, "Revocation",
883
+ trust_store=trust_store,
884
+ revocation_contents=[elbv2.RevocationContent(
885
+ revocation_type=elbv2.RevocationType.CRL,
886
+ bucket=bucket,
887
+ key="crl.pem"
888
+ )
889
+ ]
890
+ )
891
+ ```
822
892
  '''
823
893
  from pkgutil import extend_path
824
894
  __path__ = extend_path(__path__, __name__)
@@ -1803,21 +1873,29 @@ class ApplicationProtocol(enum.Enum):
1803
1873
 
1804
1874
  Example::
1805
1875
 
1806
- # cluster: ecs.Cluster
1807
- # task_definition: ecs.TaskDefinition
1808
- # vpc: ec2.Vpc
1876
+ import aws_cdk.aws_certificatemanager as acm
1809
1877
 
1810
- service = ecs.FargateService(self, "Service", cluster=cluster, task_definition=task_definition)
1878
+ # certificate: acm.Certificate
1879
+ # lb: elbv2.ApplicationLoadBalancer
1880
+ # bucket: s3.Bucket
1811
1881
 
1812
- lb = elbv2.ApplicationLoadBalancer(self, "LB", vpc=vpc, internet_facing=True)
1813
- listener = lb.add_listener("Listener", port=80)
1814
- service.register_load_balancer_targets(
1815
- container_name="web",
1816
- container_port=80,
1817
- new_target_group_id="ECS",
1818
- listener=ecs.ListenerConfig.application_listener(listener,
1819
- protocol=elbv2.ApplicationProtocol.HTTPS
1820
- )
1882
+
1883
+ trust_store = elbv2.TrustStore(self, "Store",
1884
+ bucket=bucket,
1885
+ key="rootCA_cert.pem"
1886
+ )
1887
+
1888
+ lb.add_listener("Listener",
1889
+ port=443,
1890
+ protocol=elbv2.ApplicationProtocol.HTTPS,
1891
+ certificates=[certificate],
1892
+ # mTLS settings
1893
+ mutual_authentication=elbv2.MutualAuthentication(
1894
+ ignore_client_certificate_expiry=False,
1895
+ mutual_authentication_mode=elbv2.MutualAuthenticationMode.VERIFY,
1896
+ trust_store=trust_store
1897
+ ),
1898
+ default_action=elbv2.ListenerAction.fixed_response(200, content_type="text/plain", message_body="Success mTLS")
1821
1899
  )
1822
1900
  '''
1823
1901
 
@@ -2118,6 +2196,7 @@ class AuthenticateOidcOptions:
2118
2196
  "certificates": "certificates",
2119
2197
  "default_action": "defaultAction",
2120
2198
  "default_target_groups": "defaultTargetGroups",
2199
+ "mutual_authentication": "mutualAuthentication",
2121
2200
  "open": "open",
2122
2201
  "port": "port",
2123
2202
  "protocol": "protocol",
@@ -2131,6 +2210,7 @@ class BaseApplicationListenerProps:
2131
2210
  certificates: typing.Optional[typing.Sequence["IListenerCertificate"]] = None,
2132
2211
  default_action: typing.Optional["ListenerAction"] = None,
2133
2212
  default_target_groups: typing.Optional[typing.Sequence["IApplicationTargetGroup"]] = None,
2213
+ mutual_authentication: typing.Optional[typing.Union["MutualAuthentication", typing.Dict[builtins.str, typing.Any]]] = None,
2134
2214
  open: typing.Optional[builtins.bool] = None,
2135
2215
  port: typing.Optional[jsii.Number] = None,
2136
2216
  protocol: typing.Optional[ApplicationProtocol] = None,
@@ -2141,6 +2221,7 @@ class BaseApplicationListenerProps:
2141
2221
  :param certificates: Certificate list of ACM cert ARNs. You must provide exactly one certificate if the listener protocol is HTTPS or TLS. Default: - No certificates.
2142
2222
  :param default_action: Default action to take for requests to this listener. This allows full control of the default action of the load balancer, including Action chaining, fixed responses and redirect responses. See the ``ListenerAction`` class for all options. Cannot be specified together with ``defaultTargetGroups``. Default: - None.
2143
2223
  :param default_target_groups: Default target groups to load balance to. All target groups will be load balanced to with equal weight and without stickiness. For a more complex configuration than that, use either ``defaultAction`` or ``addAction()``. Cannot be specified together with ``defaultAction``. Default: - None.
2224
+ :param mutual_authentication: The mutual authentication configuration information. Default: - No mutual authentication configuration
2144
2225
  :param open: Allow anyone to connect to the load balancer on the listener port. If this is specified, the load balancer will be opened up to anyone who can reach it. For internal load balancers this is anyone in the same VPC. For public load balancers, this is anyone on the internet. If you want to be more selective about who can access this load balancer, set this to ``false`` and use the listener's ``connections`` object to selectively grant access to the load balancer on the listener port. Default: true
2145
2226
  :param port: The port on which the listener listens for requests. Default: - Determined from protocol if known.
2146
2227
  :param protocol: The protocol to use. Default: - Determined from port if known.
@@ -2167,11 +2248,14 @@ class BaseApplicationListenerProps:
2167
2248
  )
2168
2249
  )
2169
2250
  '''
2251
+ if isinstance(mutual_authentication, dict):
2252
+ mutual_authentication = MutualAuthentication(**mutual_authentication)
2170
2253
  if __debug__:
2171
2254
  type_hints = typing.get_type_hints(_typecheckingstub__ff235432aa66ab4c299975824b88660e11bc6ea3280f57c10bdfed8573e462c9)
2172
2255
  check_type(argname="argument certificates", value=certificates, expected_type=type_hints["certificates"])
2173
2256
  check_type(argname="argument default_action", value=default_action, expected_type=type_hints["default_action"])
2174
2257
  check_type(argname="argument default_target_groups", value=default_target_groups, expected_type=type_hints["default_target_groups"])
2258
+ check_type(argname="argument mutual_authentication", value=mutual_authentication, expected_type=type_hints["mutual_authentication"])
2175
2259
  check_type(argname="argument open", value=open, expected_type=type_hints["open"])
2176
2260
  check_type(argname="argument port", value=port, expected_type=type_hints["port"])
2177
2261
  check_type(argname="argument protocol", value=protocol, expected_type=type_hints["protocol"])
@@ -2183,6 +2267,8 @@ class BaseApplicationListenerProps:
2183
2267
  self._values["default_action"] = default_action
2184
2268
  if default_target_groups is not None:
2185
2269
  self._values["default_target_groups"] = default_target_groups
2270
+ if mutual_authentication is not None:
2271
+ self._values["mutual_authentication"] = mutual_authentication
2186
2272
  if open is not None:
2187
2273
  self._values["open"] = open
2188
2274
  if port is not None:
@@ -2236,6 +2322,17 @@ class BaseApplicationListenerProps:
2236
2322
  result = self._values.get("default_target_groups")
2237
2323
  return typing.cast(typing.Optional[typing.List["IApplicationTargetGroup"]], result)
2238
2324
 
2325
+ @builtins.property
2326
+ def mutual_authentication(self) -> typing.Optional["MutualAuthentication"]:
2327
+ '''The mutual authentication configuration information.
2328
+
2329
+ :default: - No mutual authentication configuration
2330
+
2331
+ :see: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/mutual-authentication.html
2332
+ '''
2333
+ result = self._values.get("mutual_authentication")
2334
+ return typing.cast(typing.Optional["MutualAuthentication"], result)
2335
+
2239
2336
  @builtins.property
2240
2337
  def open(self) -> typing.Optional[builtins.bool]:
2241
2338
  '''Allow anyone to connect to the load balancer on the listener port.
@@ -3465,7 +3562,7 @@ class CfnListener(
3465
3562
  if __debug__:
3466
3563
  type_hints = typing.get_type_hints(_typecheckingstub__76cdfbb7a1d2a5bd763f1708cf99f85437574dfd6404ec3f127712a8f8ab5f19)
3467
3564
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
3468
- jsii.set(self, "defaultActions", value)
3565
+ jsii.set(self, "defaultActions", value) # pyright: ignore[reportArgumentType]
3469
3566
 
3470
3567
  @builtins.property
3471
3568
  @jsii.member(jsii_name="loadBalancerArn")
@@ -3478,7 +3575,7 @@ class CfnListener(
3478
3575
  if __debug__:
3479
3576
  type_hints = typing.get_type_hints(_typecheckingstub__9e1553fcbcd81ece9aef607535935c2ac70117072c75a29e987b9bdd6e2f27ef)
3480
3577
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
3481
- jsii.set(self, "loadBalancerArn", value)
3578
+ jsii.set(self, "loadBalancerArn", value) # pyright: ignore[reportArgumentType]
3482
3579
 
3483
3580
  @builtins.property
3484
3581
  @jsii.member(jsii_name="alpnPolicy")
@@ -3491,7 +3588,7 @@ class CfnListener(
3491
3588
  if __debug__:
3492
3589
  type_hints = typing.get_type_hints(_typecheckingstub__315e0ad319a9a28c97b07c034825d82caf02b6ce33e2fac8892088cd3225ed37)
3493
3590
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
3494
- jsii.set(self, "alpnPolicy", value)
3591
+ jsii.set(self, "alpnPolicy", value) # pyright: ignore[reportArgumentType]
3495
3592
 
3496
3593
  @builtins.property
3497
3594
  @jsii.member(jsii_name="certificates")
@@ -3509,7 +3606,7 @@ class CfnListener(
3509
3606
  if __debug__:
3510
3607
  type_hints = typing.get_type_hints(_typecheckingstub__61f97e9ea7f88d4009c002606c3949415591bdcf9c6178a79e7393f3b502d73e)
3511
3608
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
3512
- jsii.set(self, "certificates", value)
3609
+ jsii.set(self, "certificates", value) # pyright: ignore[reportArgumentType]
3513
3610
 
3514
3611
  @builtins.property
3515
3612
  @jsii.member(jsii_name="mutualAuthentication")
@@ -3527,7 +3624,7 @@ class CfnListener(
3527
3624
  if __debug__:
3528
3625
  type_hints = typing.get_type_hints(_typecheckingstub__e2037bfa810705678f0e924d5416268a866686cb43dd3194eaf57585e0b95ac3)
3529
3626
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
3530
- jsii.set(self, "mutualAuthentication", value)
3627
+ jsii.set(self, "mutualAuthentication", value) # pyright: ignore[reportArgumentType]
3531
3628
 
3532
3629
  @builtins.property
3533
3630
  @jsii.member(jsii_name="port")
@@ -3540,7 +3637,7 @@ class CfnListener(
3540
3637
  if __debug__:
3541
3638
  type_hints = typing.get_type_hints(_typecheckingstub__6b820ec6e8e50b3636af3334a1bded1331b53eaccdc106b52a191013c8d254f4)
3542
3639
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
3543
- jsii.set(self, "port", value)
3640
+ jsii.set(self, "port", value) # pyright: ignore[reportArgumentType]
3544
3641
 
3545
3642
  @builtins.property
3546
3643
  @jsii.member(jsii_name="protocol")
@@ -3553,7 +3650,7 @@ class CfnListener(
3553
3650
  if __debug__:
3554
3651
  type_hints = typing.get_type_hints(_typecheckingstub__e94f2f9141dca7e98cc3bbfd7f9228e6fe04fa5e5461ab23babd49ab98a02887)
3555
3652
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
3556
- jsii.set(self, "protocol", value)
3653
+ jsii.set(self, "protocol", value) # pyright: ignore[reportArgumentType]
3557
3654
 
3558
3655
  @builtins.property
3559
3656
  @jsii.member(jsii_name="sslPolicy")
@@ -3566,7 +3663,7 @@ class CfnListener(
3566
3663
  if __debug__:
3567
3664
  type_hints = typing.get_type_hints(_typecheckingstub__6a4d4e17d27d6eb1fbeff688c8a6d8662f00a037f04bbda99b92a25346810d87)
3568
3665
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
3569
- jsii.set(self, "sslPolicy", value)
3666
+ jsii.set(self, "sslPolicy", value) # pyright: ignore[reportArgumentType]
3570
3667
 
3571
3668
  @jsii.data_type(
3572
3669
  jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.CfnListener.ActionProperty",
@@ -5013,7 +5110,7 @@ class CfnListenerCertificate(
5013
5110
  if __debug__:
5014
5111
  type_hints = typing.get_type_hints(_typecheckingstub__ec5ca8f01c291a65cf755d29637c3c74db5a8f3a06639daf262b04cccf5b5093)
5015
5112
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5016
- jsii.set(self, "certificates", value)
5113
+ jsii.set(self, "certificates", value) # pyright: ignore[reportArgumentType]
5017
5114
 
5018
5115
  @builtins.property
5019
5116
  @jsii.member(jsii_name="listenerArn")
@@ -5026,7 +5123,7 @@ class CfnListenerCertificate(
5026
5123
  if __debug__:
5027
5124
  type_hints = typing.get_type_hints(_typecheckingstub__f8331362067b1be023583132da34a9d680977b1fae07cc46d2d608ff2cf4bf85)
5028
5125
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5029
- jsii.set(self, "listenerArn", value)
5126
+ jsii.set(self, "listenerArn", value) # pyright: ignore[reportArgumentType]
5030
5127
 
5031
5128
  @jsii.data_type(
5032
5129
  jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.CfnListenerCertificate.CertificateProperty",
@@ -5648,7 +5745,7 @@ class CfnListenerRule(
5648
5745
  if __debug__:
5649
5746
  type_hints = typing.get_type_hints(_typecheckingstub__df2aeb643d7c2201cae7e74943f83c1a2592f7d4a6899f3c1d92b46883ce278f)
5650
5747
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5651
- jsii.set(self, "actions", value)
5748
+ jsii.set(self, "actions", value) # pyright: ignore[reportArgumentType]
5652
5749
 
5653
5750
  @builtins.property
5654
5751
  @jsii.member(jsii_name="conditions")
@@ -5666,7 +5763,7 @@ class CfnListenerRule(
5666
5763
  if __debug__:
5667
5764
  type_hints = typing.get_type_hints(_typecheckingstub__b964f9ab4a6998a9e14a30bc2ab293ac60d748a814503bebf4ee3bd3c2a21ec6)
5668
5765
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5669
- jsii.set(self, "conditions", value)
5766
+ jsii.set(self, "conditions", value) # pyright: ignore[reportArgumentType]
5670
5767
 
5671
5768
  @builtins.property
5672
5769
  @jsii.member(jsii_name="priority")
@@ -5682,7 +5779,7 @@ class CfnListenerRule(
5682
5779
  if __debug__:
5683
5780
  type_hints = typing.get_type_hints(_typecheckingstub__ad2ec0aba371a9fd9fe7b43961d981938e552ae6cf69b73a21d00ec69a77c765)
5684
5781
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5685
- jsii.set(self, "priority", value)
5782
+ jsii.set(self, "priority", value) # pyright: ignore[reportArgumentType]
5686
5783
 
5687
5784
  @builtins.property
5688
5785
  @jsii.member(jsii_name="listenerArn")
@@ -5695,7 +5792,7 @@ class CfnListenerRule(
5695
5792
  if __debug__:
5696
5793
  type_hints = typing.get_type_hints(_typecheckingstub__5adb80db0269c5891b4a71aef172af30d3d5bd9e5d96d9809336d9aa10169c73)
5697
5794
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5698
- jsii.set(self, "listenerArn", value)
5795
+ jsii.set(self, "listenerArn", value) # pyright: ignore[reportArgumentType]
5699
5796
 
5700
5797
  @jsii.data_type(
5701
5798
  jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.CfnListenerRule.ActionProperty",
@@ -8002,7 +8099,7 @@ class CfnLoadBalancer(
8002
8099
  if __debug__:
8003
8100
  type_hints = typing.get_type_hints(_typecheckingstub__9e2f8dd6221319a07a0c76c857d5cc7ce8ca39adbe164a2ff756135108b1ca21)
8004
8101
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8005
- jsii.set(self, "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic", value)
8102
+ jsii.set(self, "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic", value) # pyright: ignore[reportArgumentType]
8006
8103
 
8007
8104
  @builtins.property
8008
8105
  @jsii.member(jsii_name="ipAddressType")
@@ -8015,7 +8112,7 @@ class CfnLoadBalancer(
8015
8112
  if __debug__:
8016
8113
  type_hints = typing.get_type_hints(_typecheckingstub__aa89d4763e09b4dd77b6896bc1e3ca0aec2c737fc1c1fe61ce151075629bca01)
8017
8114
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8018
- jsii.set(self, "ipAddressType", value)
8115
+ jsii.set(self, "ipAddressType", value) # pyright: ignore[reportArgumentType]
8019
8116
 
8020
8117
  @builtins.property
8021
8118
  @jsii.member(jsii_name="loadBalancerAttributes")
@@ -8033,7 +8130,7 @@ class CfnLoadBalancer(
8033
8130
  if __debug__:
8034
8131
  type_hints = typing.get_type_hints(_typecheckingstub__8b18943454864026c64dd9c2bc7fdaf60ac5114bf771f7304a82e9bdfd652972)
8035
8132
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8036
- jsii.set(self, "loadBalancerAttributes", value)
8133
+ jsii.set(self, "loadBalancerAttributes", value) # pyright: ignore[reportArgumentType]
8037
8134
 
8038
8135
  @builtins.property
8039
8136
  @jsii.member(jsii_name="name")
@@ -8046,7 +8143,7 @@ class CfnLoadBalancer(
8046
8143
  if __debug__:
8047
8144
  type_hints = typing.get_type_hints(_typecheckingstub__153ca4a32dcbf43c1076bdc45b59a5463ab49120f83591bcbf13f84ce3fffa0e)
8048
8145
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8049
- jsii.set(self, "name", value)
8146
+ jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]
8050
8147
 
8051
8148
  @builtins.property
8052
8149
  @jsii.member(jsii_name="scheme")
@@ -8059,7 +8156,7 @@ class CfnLoadBalancer(
8059
8156
  if __debug__:
8060
8157
  type_hints = typing.get_type_hints(_typecheckingstub__1687b8b0256f0152680ccdd7765d09ba446fa2f418107fa654acecc9353e3004)
8061
8158
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8062
- jsii.set(self, "scheme", value)
8159
+ jsii.set(self, "scheme", value) # pyright: ignore[reportArgumentType]
8063
8160
 
8064
8161
  @builtins.property
8065
8162
  @jsii.member(jsii_name="securityGroups")
@@ -8075,7 +8172,7 @@ class CfnLoadBalancer(
8075
8172
  if __debug__:
8076
8173
  type_hints = typing.get_type_hints(_typecheckingstub__5d8791289ff10ea19d01f954382cd0a3d17107bbf2096beacab26be77e51e9eb)
8077
8174
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8078
- jsii.set(self, "securityGroups", value)
8175
+ jsii.set(self, "securityGroups", value) # pyright: ignore[reportArgumentType]
8079
8176
 
8080
8177
  @builtins.property
8081
8178
  @jsii.member(jsii_name="subnetMappings")
@@ -8093,7 +8190,7 @@ class CfnLoadBalancer(
8093
8190
  if __debug__:
8094
8191
  type_hints = typing.get_type_hints(_typecheckingstub__cff330c51e1623c95db837e724e8e3b68ebc69e7bc468d3c1a76a57fce5c8d2b)
8095
8192
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8096
- jsii.set(self, "subnetMappings", value)
8193
+ jsii.set(self, "subnetMappings", value) # pyright: ignore[reportArgumentType]
8097
8194
 
8098
8195
  @builtins.property
8099
8196
  @jsii.member(jsii_name="subnets")
@@ -8106,7 +8203,7 @@ class CfnLoadBalancer(
8106
8203
  if __debug__:
8107
8204
  type_hints = typing.get_type_hints(_typecheckingstub__fcdf355ef9be0f1ccfbb8e05078c4cfd134f99a8790e8d66078c5b4f6bc85803)
8108
8205
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8109
- jsii.set(self, "subnets", value)
8206
+ jsii.set(self, "subnets", value) # pyright: ignore[reportArgumentType]
8110
8207
 
8111
8208
  @builtins.property
8112
8209
  @jsii.member(jsii_name="tagsRaw")
@@ -8119,7 +8216,7 @@ class CfnLoadBalancer(
8119
8216
  if __debug__:
8120
8217
  type_hints = typing.get_type_hints(_typecheckingstub__47ca7bdbcee5e90bfb350393a41f7a94fc04dae49bd2406a71f6d865bb6f0068)
8121
8218
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8122
- jsii.set(self, "tagsRaw", value)
8219
+ jsii.set(self, "tagsRaw", value) # pyright: ignore[reportArgumentType]
8123
8220
 
8124
8221
  @builtins.property
8125
8222
  @jsii.member(jsii_name="type")
@@ -8132,7 +8229,7 @@ class CfnLoadBalancer(
8132
8229
  if __debug__:
8133
8230
  type_hints = typing.get_type_hints(_typecheckingstub__3f97aab40477aaed39ee8981b79b8e7b41a285eae19cb1d0e34b6f44846e303f)
8134
8231
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8135
- jsii.set(self, "type", value)
8232
+ jsii.set(self, "type", value) # pyright: ignore[reportArgumentType]
8136
8233
 
8137
8234
  @jsii.data_type(
8138
8235
  jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.CfnLoadBalancer.LoadBalancerAttributeProperty",
@@ -8846,7 +8943,7 @@ class CfnTargetGroup(
8846
8943
  if __debug__:
8847
8944
  type_hints = typing.get_type_hints(_typecheckingstub__2ff5cc58de04963cc11c975fd400a3b3cedca5c47c26d8c2b0bbde2e86765175)
8848
8945
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8849
- jsii.set(self, "healthCheckEnabled", value)
8946
+ jsii.set(self, "healthCheckEnabled", value) # pyright: ignore[reportArgumentType]
8850
8947
 
8851
8948
  @builtins.property
8852
8949
  @jsii.member(jsii_name="healthCheckIntervalSeconds")
@@ -8862,7 +8959,7 @@ class CfnTargetGroup(
8862
8959
  if __debug__:
8863
8960
  type_hints = typing.get_type_hints(_typecheckingstub__47d3dc2d677f261b7ed36f7500d60c18c7e8ce2a9668d1280d9d59677ea299c0)
8864
8961
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8865
- jsii.set(self, "healthCheckIntervalSeconds", value)
8962
+ jsii.set(self, "healthCheckIntervalSeconds", value) # pyright: ignore[reportArgumentType]
8866
8963
 
8867
8964
  @builtins.property
8868
8965
  @jsii.member(jsii_name="healthCheckPath")
@@ -8875,7 +8972,7 @@ class CfnTargetGroup(
8875
8972
  if __debug__:
8876
8973
  type_hints = typing.get_type_hints(_typecheckingstub__2b48a23a63bdffc48348adf6d6bf680e8da5e666d41536a660b9682dc1e68c36)
8877
8974
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8878
- jsii.set(self, "healthCheckPath", value)
8975
+ jsii.set(self, "healthCheckPath", value) # pyright: ignore[reportArgumentType]
8879
8976
 
8880
8977
  @builtins.property
8881
8978
  @jsii.member(jsii_name="healthCheckPort")
@@ -8888,7 +8985,7 @@ class CfnTargetGroup(
8888
8985
  if __debug__:
8889
8986
  type_hints = typing.get_type_hints(_typecheckingstub__5eb382055802f26c476159879cacfff918b5d21c1202d9d8911cbb376c1fa41c)
8890
8987
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8891
- jsii.set(self, "healthCheckPort", value)
8988
+ jsii.set(self, "healthCheckPort", value) # pyright: ignore[reportArgumentType]
8892
8989
 
8893
8990
  @builtins.property
8894
8991
  @jsii.member(jsii_name="healthCheckProtocol")
@@ -8901,7 +8998,7 @@ class CfnTargetGroup(
8901
8998
  if __debug__:
8902
8999
  type_hints = typing.get_type_hints(_typecheckingstub__ff99cc0f6ea6287d15d1544a7cdbac13da6350673bcac6fd5c3435d7da206d3d)
8903
9000
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8904
- jsii.set(self, "healthCheckProtocol", value)
9001
+ jsii.set(self, "healthCheckProtocol", value) # pyright: ignore[reportArgumentType]
8905
9002
 
8906
9003
  @builtins.property
8907
9004
  @jsii.member(jsii_name="healthCheckTimeoutSeconds")
@@ -8914,7 +9011,7 @@ class CfnTargetGroup(
8914
9011
  if __debug__:
8915
9012
  type_hints = typing.get_type_hints(_typecheckingstub__697051a0b94edeacb2cec657341540ab1559c96c3fa3124a4f0e95b706324a5c)
8916
9013
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8917
- jsii.set(self, "healthCheckTimeoutSeconds", value)
9014
+ jsii.set(self, "healthCheckTimeoutSeconds", value) # pyright: ignore[reportArgumentType]
8918
9015
 
8919
9016
  @builtins.property
8920
9017
  @jsii.member(jsii_name="healthyThresholdCount")
@@ -8927,7 +9024,7 @@ class CfnTargetGroup(
8927
9024
  if __debug__:
8928
9025
  type_hints = typing.get_type_hints(_typecheckingstub__ca78c45b7aff96c23d0e1eb057ca982346db552c0a702378506eaaa9fd9be3ae)
8929
9026
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8930
- jsii.set(self, "healthyThresholdCount", value)
9027
+ jsii.set(self, "healthyThresholdCount", value) # pyright: ignore[reportArgumentType]
8931
9028
 
8932
9029
  @builtins.property
8933
9030
  @jsii.member(jsii_name="ipAddressType")
@@ -8940,7 +9037,7 @@ class CfnTargetGroup(
8940
9037
  if __debug__:
8941
9038
  type_hints = typing.get_type_hints(_typecheckingstub__55a9ce7d2e172f64fd44f29162f139583855588c7a3f7b3cd51c4cbdf5d217e3)
8942
9039
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8943
- jsii.set(self, "ipAddressType", value)
9040
+ jsii.set(self, "ipAddressType", value) # pyright: ignore[reportArgumentType]
8944
9041
 
8945
9042
  @builtins.property
8946
9043
  @jsii.member(jsii_name="matcher")
@@ -8958,7 +9055,7 @@ class CfnTargetGroup(
8958
9055
  if __debug__:
8959
9056
  type_hints = typing.get_type_hints(_typecheckingstub__c3f3cfa6dd3413f652c8ceb38e89ededefed98bfd145dbd49b7aabc2a9cdb958)
8960
9057
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8961
- jsii.set(self, "matcher", value)
9058
+ jsii.set(self, "matcher", value) # pyright: ignore[reportArgumentType]
8962
9059
 
8963
9060
  @builtins.property
8964
9061
  @jsii.member(jsii_name="name")
@@ -8971,7 +9068,7 @@ class CfnTargetGroup(
8971
9068
  if __debug__:
8972
9069
  type_hints = typing.get_type_hints(_typecheckingstub__2c8aa8e76935d05afebffd22774a518671daeecc5747521064a6c9d37098440c)
8973
9070
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8974
- jsii.set(self, "name", value)
9071
+ jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]
8975
9072
 
8976
9073
  @builtins.property
8977
9074
  @jsii.member(jsii_name="port")
@@ -8984,7 +9081,7 @@ class CfnTargetGroup(
8984
9081
  if __debug__:
8985
9082
  type_hints = typing.get_type_hints(_typecheckingstub__0cf86b5c013efabb295c3964fa8bd6419f845793bfea736ddfa9c4375f026ea5)
8986
9083
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8987
- jsii.set(self, "port", value)
9084
+ jsii.set(self, "port", value) # pyright: ignore[reportArgumentType]
8988
9085
 
8989
9086
  @builtins.property
8990
9087
  @jsii.member(jsii_name="protocol")
@@ -8997,7 +9094,7 @@ class CfnTargetGroup(
8997
9094
  if __debug__:
8998
9095
  type_hints = typing.get_type_hints(_typecheckingstub__ecaaff446324c10b91997abf2370a4348e4318bd647a716835f3a20dc984264b)
8999
9096
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9000
- jsii.set(self, "protocol", value)
9097
+ jsii.set(self, "protocol", value) # pyright: ignore[reportArgumentType]
9001
9098
 
9002
9099
  @builtins.property
9003
9100
  @jsii.member(jsii_name="protocolVersion")
@@ -9010,7 +9107,7 @@ class CfnTargetGroup(
9010
9107
  if __debug__:
9011
9108
  type_hints = typing.get_type_hints(_typecheckingstub__4550b3fd15081898b70fc7a1f06ad0693dbf7f759f6adf0a0dede0489143735f)
9012
9109
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9013
- jsii.set(self, "protocolVersion", value)
9110
+ jsii.set(self, "protocolVersion", value) # pyright: ignore[reportArgumentType]
9014
9111
 
9015
9112
  @builtins.property
9016
9113
  @jsii.member(jsii_name="tagsRaw")
@@ -9023,7 +9120,7 @@ class CfnTargetGroup(
9023
9120
  if __debug__:
9024
9121
  type_hints = typing.get_type_hints(_typecheckingstub__65c80be0d3b8ea2ed041d794a354ab02a7e59679072f139341d1a790950529cf)
9025
9122
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9026
- jsii.set(self, "tagsRaw", value)
9123
+ jsii.set(self, "tagsRaw", value) # pyright: ignore[reportArgumentType]
9027
9124
 
9028
9125
  @builtins.property
9029
9126
  @jsii.member(jsii_name="targetGroupAttributes")
@@ -9041,7 +9138,7 @@ class CfnTargetGroup(
9041
9138
  if __debug__:
9042
9139
  type_hints = typing.get_type_hints(_typecheckingstub__cb73ac6a2765613179f01b40aa0acd1485f4da7aad297231218b43761d098b56)
9043
9140
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9044
- jsii.set(self, "targetGroupAttributes", value)
9141
+ jsii.set(self, "targetGroupAttributes", value) # pyright: ignore[reportArgumentType]
9045
9142
 
9046
9143
  @builtins.property
9047
9144
  @jsii.member(jsii_name="targets")
@@ -9059,7 +9156,7 @@ class CfnTargetGroup(
9059
9156
  if __debug__:
9060
9157
  type_hints = typing.get_type_hints(_typecheckingstub__f7b91c4bf9dd65200f5a8a19eae6f122c8ba2013d270324ca2d1b69c05b5961b)
9061
9158
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9062
- jsii.set(self, "targets", value)
9159
+ jsii.set(self, "targets", value) # pyright: ignore[reportArgumentType]
9063
9160
 
9064
9161
  @builtins.property
9065
9162
  @jsii.member(jsii_name="targetType")
@@ -9072,7 +9169,7 @@ class CfnTargetGroup(
9072
9169
  if __debug__:
9073
9170
  type_hints = typing.get_type_hints(_typecheckingstub__3c923ba4a3debe61e9ae74fb69913086bc0edac7a7ed4b91beb3fec8906a0b50)
9074
9171
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9075
- jsii.set(self, "targetType", value)
9172
+ jsii.set(self, "targetType", value) # pyright: ignore[reportArgumentType]
9076
9173
 
9077
9174
  @builtins.property
9078
9175
  @jsii.member(jsii_name="unhealthyThresholdCount")
@@ -9085,7 +9182,7 @@ class CfnTargetGroup(
9085
9182
  if __debug__:
9086
9183
  type_hints = typing.get_type_hints(_typecheckingstub__36cee0ff74e391bbf22da13d4085b7b4bb8d7faac3518e1501b34cbdd75845b4)
9087
9184
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9088
- jsii.set(self, "unhealthyThresholdCount", value)
9185
+ jsii.set(self, "unhealthyThresholdCount", value) # pyright: ignore[reportArgumentType]
9089
9186
 
9090
9187
  @builtins.property
9091
9188
  @jsii.member(jsii_name="vpcId")
@@ -9098,7 +9195,7 @@ class CfnTargetGroup(
9098
9195
  if __debug__:
9099
9196
  type_hints = typing.get_type_hints(_typecheckingstub__9c46268f2c625ac14256af2878dd97453fb18ee5391161d4b62e2c22a39267ad)
9100
9197
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9101
- jsii.set(self, "vpcId", value)
9198
+ jsii.set(self, "vpcId", value) # pyright: ignore[reportArgumentType]
9102
9199
 
9103
9200
  @jsii.data_type(
9104
9201
  jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.CfnTargetGroup.MatcherProperty",
@@ -9302,7 +9399,7 @@ class CfnTargetGroup(
9302
9399
  ) -> None:
9303
9400
  '''Specifies a target group attribute.
9304
9401
 
9305
- :param key: The name of the attribute. The following attributes are supported by all load balancers: - ``deregistration_delay.timeout_seconds`` - The amount of time, in seconds, for Elastic Load Balancing to wait before changing the state of a deregistering target from ``draining`` to ``unused`` . The range is 0-3600 seconds. The default value is 300 seconds. If the target is a Lambda function, this attribute is not supported. - ``stickiness.enabled`` - Indicates whether target stickiness is enabled. The value is ``true`` or ``false`` . The default is ``false`` . - ``stickiness.type`` - Indicates the type of stickiness. The possible values are: - ``lb_cookie`` and ``app_cookie`` for Application Load Balancers. - ``source_ip`` for Network Load Balancers. - ``source_ip_dest_ip`` and ``source_ip_dest_ip_proto`` for Gateway Load Balancers. The following attributes are supported by Application Load Balancers and Network Load Balancers: - ``load_balancing.cross_zone.enabled`` - Indicates whether cross zone load balancing is enabled. The value is ``true`` , ``false`` or ``use_load_balancer_configuration`` . The default is ``use_load_balancer_configuration`` . - ``target_group_health.dns_failover.minimum_healthy_targets.count`` - The minimum number of targets that must be healthy. If the number of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are ``off`` or an integer from 1 to the maximum number of targets. The default is ``1`` . - ``target_group_health.dns_failover.minimum_healthy_targets.percentage`` - The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are ``off`` or an integer from 1 to 100. The default is ``off`` . - ``target_group_health.unhealthy_state_routing.minimum_healthy_targets.count`` - The minimum number of targets that must be healthy. If the number of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are 1 to the maximum number of targets. The default is 1. - ``target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage`` - The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are ``off`` or an integer from 1 to 100. The default is ``off`` . The following attributes are supported only if the load balancer is an Application Load Balancer and the target is an instance or an IP address: - ``load_balancing.algorithm.type`` - The load balancing algorithm determines how the load balancer selects targets when routing requests. The value is ``round_robin`` , ``least_outstanding_requests`` , or ``weighted_random`` . The default is ``round_robin`` . - ``load_balancing.algorithm.anomaly_mitigation`` - Only available when ``load_balancing.algorithm.type`` is ``weighted_random`` . Indicates whether anomaly mitigation is enabled. The value is ``on`` or ``off`` . The default is ``off`` . - ``slow_start.duration_seconds`` - The time period, in seconds, during which a newly registered target receives an increasing share of the traffic to the target group. After this time period ends, the target receives its full share of traffic. The range is 30-900 seconds (15 minutes). The default is 0 seconds (disabled). - ``stickiness.app_cookie.cookie_name`` - Indicates the name of the application-based cookie. Names that start with the following prefixes are not allowed: ``AWSALB`` , ``AWSALBAPP`` , and ``AWSALBTG`` ; they're reserved for use by the load balancer. - ``stickiness.app_cookie.duration_seconds`` - The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the application-based cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds). - ``stickiness.lb_cookie.duration_seconds`` - The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds). The following attribute is supported only if the load balancer is an Application Load Balancer and the target is a Lambda function: - ``lambda.multi_value_headers.enabled`` - Indicates whether the request and response headers that are exchanged between the load balancer and the Lambda function include arrays of values or strings. The value is ``true`` or ``false`` . The default is ``false`` . If the value is ``false`` and the request contains a duplicate header field name or query parameter key, the load balancer uses the last value sent by the client. The following attributes are supported only by Network Load Balancers: - ``deregistration_delay.connection_termination.enabled`` - Indicates whether the load balancer terminates connections at the end of the deregistration timeout. The value is ``true`` or ``false`` . For new UDP/TCP_UDP target groups the default is ``true`` . Otherwise, the default is ``false`` . - ``preserve_client_ip.enabled`` - Indicates whether client IP preservation is enabled. The value is ``true`` or ``false`` . The default is disabled if the target group type is IP address and the target group protocol is TCP or TLS. Otherwise, the default is enabled. Client IP preservation cannot be disabled for UDP and TCP_UDP target groups. - ``proxy_protocol_v2.enabled`` - Indicates whether Proxy Protocol version 2 is enabled. The value is ``true`` or ``false`` . The default is ``false`` . - ``target_health_state.unhealthy.connection_termination.enabled`` - Indicates whether the load balancer terminates connections to unhealthy targets. The value is ``true`` or ``false`` . The default is ``true`` . - ``target_health_state.unhealthy.draining_interval_seconds`` - The amount of time for Elastic Load Balancing to wait before changing the state of an unhealthy target from ``unhealthy.draining`` to ``unhealthy`` . The range is 0-360000 seconds. The default value is 0 seconds. Note: This attribute can only be configured when ``target_health_state.unhealthy.connection_termination.enabled`` is ``false`` . The following attributes are supported only by Gateway Load Balancers: - ``target_failover.on_deregistration`` - Indicates how the Gateway Load Balancer handles existing flows when a target is deregistered. The possible values are ``rebalance`` and ``no_rebalance`` . The default is ``no_rebalance`` . The two attributes ( ``target_failover.on_deregistration`` and ``target_failover.on_unhealthy`` ) can't be set independently. The value you set for both attributes must be the same. - ``target_failover.on_unhealthy`` - Indicates how the Gateway Load Balancer handles existing flows when a target is unhealthy. The possible values are ``rebalance`` and ``no_rebalance`` . The default is ``no_rebalance`` . The two attributes ( ``target_failover.on_deregistration`` and ``target_failover.on_unhealthy`` ) cannot be set independently. The value you set for both attributes must be the same.
9402
+ :param key: The name of the attribute. The following attributes are supported by all load balancers: - ``deregistration_delay.timeout_seconds`` - The amount of time, in seconds, for Elastic Load Balancing to wait before changing the state of a deregistering target from ``draining`` to ``unused`` . The range is 0-3600 seconds. The default value is 300 seconds. If the target is a Lambda function, this attribute is not supported. - ``stickiness.enabled`` - Indicates whether target stickiness is enabled. The value is ``true`` or ``false`` . The default is ``false`` . - ``stickiness.type`` - Indicates the type of stickiness. The possible values are: - ``lb_cookie`` and ``app_cookie`` for Application Load Balancers. - ``source_ip`` for Network Load Balancers. - ``source_ip_dest_ip`` and ``source_ip_dest_ip_proto`` for Gateway Load Balancers. The following attributes are supported by Application Load Balancers and Network Load Balancers: - ``load_balancing.cross_zone.enabled`` - Indicates whether cross zone load balancing is enabled. The value is ``true`` , ``false`` or ``use_load_balancer_configuration`` . The default is ``use_load_balancer_configuration`` . - ``target_group_health.dns_failover.minimum_healthy_targets.count`` - The minimum number of targets that must be healthy. If the number of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are ``off`` or an integer from 1 to the maximum number of targets. The default is ``off`` . - ``target_group_health.dns_failover.minimum_healthy_targets.percentage`` - The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are ``off`` or an integer from 1 to 100. The default is ``off`` . - ``target_group_health.unhealthy_state_routing.minimum_healthy_targets.count`` - The minimum number of targets that must be healthy. If the number of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are 1 to the maximum number of targets. The default is 1. - ``target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage`` - The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are ``off`` or an integer from 1 to 100. The default is ``off`` . The following attributes are supported only if the load balancer is an Application Load Balancer and the target is an instance or an IP address: - ``load_balancing.algorithm.type`` - The load balancing algorithm determines how the load balancer selects targets when routing requests. The value is ``round_robin`` , ``least_outstanding_requests`` , or ``weighted_random`` . The default is ``round_robin`` . - ``load_balancing.algorithm.anomaly_mitigation`` - Only available when ``load_balancing.algorithm.type`` is ``weighted_random`` . Indicates whether anomaly mitigation is enabled. The value is ``on`` or ``off`` . The default is ``off`` . - ``slow_start.duration_seconds`` - The time period, in seconds, during which a newly registered target receives an increasing share of the traffic to the target group. After this time period ends, the target receives its full share of traffic. The range is 30-900 seconds (15 minutes). The default is 0 seconds (disabled). - ``stickiness.app_cookie.cookie_name`` - Indicates the name of the application-based cookie. Names that start with the following prefixes are not allowed: ``AWSALB`` , ``AWSALBAPP`` , and ``AWSALBTG`` ; they're reserved for use by the load balancer. - ``stickiness.app_cookie.duration_seconds`` - The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the application-based cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds). - ``stickiness.lb_cookie.duration_seconds`` - The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds). The following attribute is supported only if the load balancer is an Application Load Balancer and the target is a Lambda function: - ``lambda.multi_value_headers.enabled`` - Indicates whether the request and response headers that are exchanged between the load balancer and the Lambda function include arrays of values or strings. The value is ``true`` or ``false`` . The default is ``false`` . If the value is ``false`` and the request contains a duplicate header field name or query parameter key, the load balancer uses the last value sent by the client. The following attributes are supported only by Network Load Balancers: - ``deregistration_delay.connection_termination.enabled`` - Indicates whether the load balancer terminates connections at the end of the deregistration timeout. The value is ``true`` or ``false`` . For new UDP/TCP_UDP target groups the default is ``true`` . Otherwise, the default is ``false`` . - ``preserve_client_ip.enabled`` - Indicates whether client IP preservation is enabled. The value is ``true`` or ``false`` . The default is disabled if the target group type is IP address and the target group protocol is TCP or TLS. Otherwise, the default is enabled. Client IP preservation cannot be disabled for UDP and TCP_UDP target groups. - ``proxy_protocol_v2.enabled`` - Indicates whether Proxy Protocol version 2 is enabled. The value is ``true`` or ``false`` . The default is ``false`` . - ``target_health_state.unhealthy.connection_termination.enabled`` - Indicates whether the load balancer terminates connections to unhealthy targets. The value is ``true`` or ``false`` . The default is ``true`` . - ``target_health_state.unhealthy.draining_interval_seconds`` - The amount of time for Elastic Load Balancing to wait before changing the state of an unhealthy target from ``unhealthy.draining`` to ``unhealthy`` . The range is 0-360000 seconds. The default value is 0 seconds. Note: This attribute can only be configured when ``target_health_state.unhealthy.connection_termination.enabled`` is ``false`` . The following attributes are supported only by Gateway Load Balancers: - ``target_failover.on_deregistration`` - Indicates how the Gateway Load Balancer handles existing flows when a target is deregistered. The possible values are ``rebalance`` and ``no_rebalance`` . The default is ``no_rebalance`` . The two attributes ( ``target_failover.on_deregistration`` and ``target_failover.on_unhealthy`` ) can't be set independently. The value you set for both attributes must be the same. - ``target_failover.on_unhealthy`` - Indicates how the Gateway Load Balancer handles existing flows when a target is unhealthy. The possible values are ``rebalance`` and ``no_rebalance`` . The default is ``no_rebalance`` . The two attributes ( ``target_failover.on_deregistration`` and ``target_failover.on_unhealthy`` ) cannot be set independently. The value you set for both attributes must be the same.
9306
9403
  :param value: The value of the attribute.
9307
9404
 
9308
9405
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetgroupattribute.html
@@ -9345,7 +9442,7 @@ class CfnTargetGroup(
9345
9442
  The following attributes are supported by Application Load Balancers and Network Load Balancers:
9346
9443
 
9347
9444
  - ``load_balancing.cross_zone.enabled`` - Indicates whether cross zone load balancing is enabled. The value is ``true`` , ``false`` or ``use_load_balancer_configuration`` . The default is ``use_load_balancer_configuration`` .
9348
- - ``target_group_health.dns_failover.minimum_healthy_targets.count`` - The minimum number of targets that must be healthy. If the number of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are ``off`` or an integer from 1 to the maximum number of targets. The default is ``1`` .
9445
+ - ``target_group_health.dns_failover.minimum_healthy_targets.count`` - The minimum number of targets that must be healthy. If the number of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are ``off`` or an integer from 1 to the maximum number of targets. The default is ``off`` .
9349
9446
  - ``target_group_health.dns_failover.minimum_healthy_targets.percentage`` - The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, mark the zone as unhealthy in DNS, so that traffic is routed only to healthy zones. The possible values are ``off`` or an integer from 1 to 100. The default is ``off`` .
9350
9447
  - ``target_group_health.unhealthy_state_routing.minimum_healthy_targets.count`` - The minimum number of targets that must be healthy. If the number of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are 1 to the maximum number of targets. The default is 1.
9351
9448
  - ``target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage`` - The minimum percentage of targets that must be healthy. If the percentage of healthy targets is below this value, send traffic to all targets, including unhealthy targets. The possible values are ``off`` or an integer from 1 to 100. The default is ``off`` .
@@ -9960,7 +10057,7 @@ class CfnTrustStore(
9960
10057
  if __debug__:
9961
10058
  type_hints = typing.get_type_hints(_typecheckingstub__8d14d81a883ca6c66da1c8241977661c623e7d87f0fbc032d2a18c47e6d04c02)
9962
10059
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9963
- jsii.set(self, "caCertificatesBundleS3Bucket", value)
10060
+ jsii.set(self, "caCertificatesBundleS3Bucket", value) # pyright: ignore[reportArgumentType]
9964
10061
 
9965
10062
  @builtins.property
9966
10063
  @jsii.member(jsii_name="caCertificatesBundleS3Key")
@@ -9976,7 +10073,7 @@ class CfnTrustStore(
9976
10073
  if __debug__:
9977
10074
  type_hints = typing.get_type_hints(_typecheckingstub__1be3624ad22bc8e080375a39f74f348e8948697acb97bf9d0dc2a45a0da1ecbb)
9978
10075
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9979
- jsii.set(self, "caCertificatesBundleS3Key", value)
10076
+ jsii.set(self, "caCertificatesBundleS3Key", value) # pyright: ignore[reportArgumentType]
9980
10077
 
9981
10078
  @builtins.property
9982
10079
  @jsii.member(jsii_name="caCertificatesBundleS3ObjectVersion")
@@ -9992,7 +10089,7 @@ class CfnTrustStore(
9992
10089
  if __debug__:
9993
10090
  type_hints = typing.get_type_hints(_typecheckingstub__1b1cc6b55e607d3f7b50af18e6f407b241b490a03a37d191dc10695613197055)
9994
10091
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9995
- jsii.set(self, "caCertificatesBundleS3ObjectVersion", value)
10092
+ jsii.set(self, "caCertificatesBundleS3ObjectVersion", value) # pyright: ignore[reportArgumentType]
9996
10093
 
9997
10094
  @builtins.property
9998
10095
  @jsii.member(jsii_name="name")
@@ -10005,7 +10102,7 @@ class CfnTrustStore(
10005
10102
  if __debug__:
10006
10103
  type_hints = typing.get_type_hints(_typecheckingstub__3337d71099649abc3c47242a84244ef95b8c731df62e245e24794386c2acec29)
10007
10104
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
10008
- jsii.set(self, "name", value)
10105
+ jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]
10009
10106
 
10010
10107
  @builtins.property
10011
10108
  @jsii.member(jsii_name="tags")
@@ -10018,7 +10115,7 @@ class CfnTrustStore(
10018
10115
  if __debug__:
10019
10116
  type_hints = typing.get_type_hints(_typecheckingstub__ecadc34176804597e7f528cec41ade7e67216a7f15056ab07af2331954c2734e)
10020
10117
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
10021
- jsii.set(self, "tags", value)
10118
+ jsii.set(self, "tags", value) # pyright: ignore[reportArgumentType]
10022
10119
 
10023
10120
 
10024
10121
  @jsii.data_type(
@@ -10272,7 +10369,7 @@ class CfnTrustStoreRevocation(
10272
10369
  if __debug__:
10273
10370
  type_hints = typing.get_type_hints(_typecheckingstub__6d9908bd788133bb9849b01d630a4c7dcf50bc2ed03f6b29b780dcd9f4e0c3a7)
10274
10371
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
10275
- jsii.set(self, "revocationContents", value)
10372
+ jsii.set(self, "revocationContents", value) # pyright: ignore[reportArgumentType]
10276
10373
 
10277
10374
  @builtins.property
10278
10375
  @jsii.member(jsii_name="trustStoreArn")
@@ -10285,7 +10382,7 @@ class CfnTrustStoreRevocation(
10285
10382
  if __debug__:
10286
10383
  type_hints = typing.get_type_hints(_typecheckingstub__ae30a764e06e87f1e2e0b59ce60d1d1cea467ed30d54af4009f73f33936dd448)
10287
10384
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
10288
- jsii.set(self, "trustStoreArn", value)
10385
+ jsii.set(self, "trustStoreArn", value) # pyright: ignore[reportArgumentType]
10289
10386
 
10290
10387
  @jsii.data_type(
10291
10388
  jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.CfnTrustStoreRevocation.RevocationContentProperty",
@@ -10705,18 +10802,29 @@ class FixedResponseOptions:
10705
10802
 
10706
10803
  Example::
10707
10804
 
10708
- # listener: elbv2.ApplicationListener
10805
+ import aws_cdk.aws_certificatemanager as acm
10709
10806
 
10807
+ # certificate: acm.Certificate
10808
+ # lb: elbv2.ApplicationLoadBalancer
10809
+ # bucket: s3.Bucket
10710
10810
 
10711
- listener.add_action("Fixed",
10712
- priority=10,
10713
- conditions=[
10714
- elbv2.ListenerCondition.path_patterns(["/ok"])
10715
- ],
10716
- action=elbv2.ListenerAction.fixed_response(200,
10717
- content_type="text/plain",
10718
- message_body="OK"
10719
- )
10811
+
10812
+ trust_store = elbv2.TrustStore(self, "Store",
10813
+ bucket=bucket,
10814
+ key="rootCA_cert.pem"
10815
+ )
10816
+
10817
+ lb.add_listener("Listener",
10818
+ port=443,
10819
+ protocol=elbv2.ApplicationProtocol.HTTPS,
10820
+ certificates=[certificate],
10821
+ # mTLS settings
10822
+ mutual_authentication=elbv2.MutualAuthentication(
10823
+ ignore_client_certificate_expiry=False,
10824
+ mutual_authentication_mode=elbv2.MutualAuthenticationMode.VERIFY,
10825
+ trust_store=trust_store
10826
+ ),
10827
+ default_action=elbv2.ListenerAction.fixed_response(200, content_type="text/plain", message_body="Success mTLS")
10720
10828
  )
10721
10829
  '''
10722
10830
  if __debug__:
@@ -14774,6 +14882,58 @@ class _ITargetGroupProxy(
14774
14882
  typing.cast(typing.Any, ITargetGroup).__jsii_proxy_class__ = lambda : _ITargetGroupProxy
14775
14883
 
14776
14884
 
14885
+ @jsii.interface(jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.ITrustStore")
14886
+ class ITrustStore(_IResource_c80c4260, typing_extensions.Protocol):
14887
+ '''Represents a Trust Store.'''
14888
+
14889
+ @builtins.property
14890
+ @jsii.member(jsii_name="trustStoreArn")
14891
+ def trust_store_arn(self) -> builtins.str:
14892
+ '''The ARN of the trust store.
14893
+
14894
+ :attribute: true
14895
+ '''
14896
+ ...
14897
+
14898
+ @builtins.property
14899
+ @jsii.member(jsii_name="trustStoreName")
14900
+ def trust_store_name(self) -> builtins.str:
14901
+ '''The name of the trust store.
14902
+
14903
+ :attribute: true
14904
+ '''
14905
+ ...
14906
+
14907
+
14908
+ class _ITrustStoreProxy(
14909
+ jsii.proxy_for(_IResource_c80c4260), # type: ignore[misc]
14910
+ ):
14911
+ '''Represents a Trust Store.'''
14912
+
14913
+ __jsii_type__: typing.ClassVar[str] = "aws-cdk-lib.aws_elasticloadbalancingv2.ITrustStore"
14914
+
14915
+ @builtins.property
14916
+ @jsii.member(jsii_name="trustStoreArn")
14917
+ def trust_store_arn(self) -> builtins.str:
14918
+ '''The ARN of the trust store.
14919
+
14920
+ :attribute: true
14921
+ '''
14922
+ return typing.cast(builtins.str, jsii.get(self, "trustStoreArn"))
14923
+
14924
+ @builtins.property
14925
+ @jsii.member(jsii_name="trustStoreName")
14926
+ def trust_store_name(self) -> builtins.str:
14927
+ '''The name of the trust store.
14928
+
14929
+ :attribute: true
14930
+ '''
14931
+ return typing.cast(builtins.str, jsii.get(self, "trustStoreName"))
14932
+
14933
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
14934
+ typing.cast(typing.Any, ITrustStore).__jsii_proxy_class__ = lambda : _ITrustStoreProxy
14935
+
14936
+
14777
14937
  @jsii.enum(jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.IpAddressType")
14778
14938
  class IpAddressType(enum.Enum):
14779
14939
  '''What kind of addresses to allocate to the load balancer.
@@ -14862,23 +15022,29 @@ class ListenerAction(
14862
15022
 
14863
15023
  Example::
14864
15024
 
14865
- # listener: elbv2.ApplicationListener
14866
- # my_target_group: elbv2.ApplicationTargetGroup
15025
+ import aws_cdk.aws_certificatemanager as acm
14867
15026
 
15027
+ # certificate: acm.Certificate
15028
+ # lb: elbv2.ApplicationLoadBalancer
15029
+ # bucket: s3.Bucket
14868
15030
 
14869
- listener.add_action("DefaultAction",
14870
- action=elbv2.ListenerAction.authenticate_oidc(
14871
- authorization_endpoint="https://example.com/openid",
14872
- # Other OIDC properties here
14873
- client_id="...",
14874
- client_secret=SecretValue.secrets_manager("..."),
14875
- issuer="...",
14876
- token_endpoint="...",
14877
- user_info_endpoint="...",
14878
15031
 
14879
- # Next
14880
- next=elbv2.ListenerAction.forward([my_target_group])
14881
- )
15032
+ trust_store = elbv2.TrustStore(self, "Store",
15033
+ bucket=bucket,
15034
+ key="rootCA_cert.pem"
15035
+ )
15036
+
15037
+ lb.add_listener("Listener",
15038
+ port=443,
15039
+ protocol=elbv2.ApplicationProtocol.HTTPS,
15040
+ certificates=[certificate],
15041
+ # mTLS settings
15042
+ mutual_authentication=elbv2.MutualAuthentication(
15043
+ ignore_client_certificate_expiry=False,
15044
+ mutual_authentication_mode=elbv2.MutualAuthenticationMode.VERIFY,
15045
+ trust_store=trust_store
15046
+ ),
15047
+ default_action=elbv2.ListenerAction.fixed_response(200, content_type="text/plain", message_body="Success mTLS")
14882
15048
  )
14883
15049
  '''
14884
15050
 
@@ -15439,6 +15605,156 @@ class LoadBalancerTargetProps:
15439
15605
  )
15440
15606
 
15441
15607
 
15608
+ @jsii.data_type(
15609
+ jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.MutualAuthentication",
15610
+ jsii_struct_bases=[],
15611
+ name_mapping={
15612
+ "ignore_client_certificate_expiry": "ignoreClientCertificateExpiry",
15613
+ "mutual_authentication_mode": "mutualAuthenticationMode",
15614
+ "trust_store": "trustStore",
15615
+ },
15616
+ )
15617
+ class MutualAuthentication:
15618
+ def __init__(
15619
+ self,
15620
+ *,
15621
+ ignore_client_certificate_expiry: typing.Optional[builtins.bool] = None,
15622
+ mutual_authentication_mode: typing.Optional["MutualAuthenticationMode"] = None,
15623
+ trust_store: typing.Optional[ITrustStore] = None,
15624
+ ) -> None:
15625
+ '''The mutual authentication configuration information.
15626
+
15627
+ :param ignore_client_certificate_expiry: Indicates whether expired client certificates are ignored. Cannot be used with MutualAuthenticationMode.OFF or MutualAuthenticationMode.PASS_THROUGH Default: false
15628
+ :param mutual_authentication_mode: The client certificate handling method. Default: MutualAuthenticationMode.OFF
15629
+ :param trust_store: The trust store. Cannot be used with MutualAuthenticationMode.OFF or MutualAuthenticationMode.PASS_THROUGH Default: - no trust store
15630
+
15631
+ :exampleMetadata: infused
15632
+
15633
+ Example::
15634
+
15635
+ import aws_cdk.aws_certificatemanager as acm
15636
+
15637
+ # certificate: acm.Certificate
15638
+ # lb: elbv2.ApplicationLoadBalancer
15639
+ # bucket: s3.Bucket
15640
+
15641
+
15642
+ trust_store = elbv2.TrustStore(self, "Store",
15643
+ bucket=bucket,
15644
+ key="rootCA_cert.pem"
15645
+ )
15646
+
15647
+ lb.add_listener("Listener",
15648
+ port=443,
15649
+ protocol=elbv2.ApplicationProtocol.HTTPS,
15650
+ certificates=[certificate],
15651
+ # mTLS settings
15652
+ mutual_authentication=elbv2.MutualAuthentication(
15653
+ ignore_client_certificate_expiry=False,
15654
+ mutual_authentication_mode=elbv2.MutualAuthenticationMode.VERIFY,
15655
+ trust_store=trust_store
15656
+ ),
15657
+ default_action=elbv2.ListenerAction.fixed_response(200, content_type="text/plain", message_body="Success mTLS")
15658
+ )
15659
+ '''
15660
+ if __debug__:
15661
+ type_hints = typing.get_type_hints(_typecheckingstub__89e8c0615ab98434e16d3e39e80ba0dcf6db041697e65279c8dffc68d7380e62)
15662
+ check_type(argname="argument ignore_client_certificate_expiry", value=ignore_client_certificate_expiry, expected_type=type_hints["ignore_client_certificate_expiry"])
15663
+ check_type(argname="argument mutual_authentication_mode", value=mutual_authentication_mode, expected_type=type_hints["mutual_authentication_mode"])
15664
+ check_type(argname="argument trust_store", value=trust_store, expected_type=type_hints["trust_store"])
15665
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
15666
+ if ignore_client_certificate_expiry is not None:
15667
+ self._values["ignore_client_certificate_expiry"] = ignore_client_certificate_expiry
15668
+ if mutual_authentication_mode is not None:
15669
+ self._values["mutual_authentication_mode"] = mutual_authentication_mode
15670
+ if trust_store is not None:
15671
+ self._values["trust_store"] = trust_store
15672
+
15673
+ @builtins.property
15674
+ def ignore_client_certificate_expiry(self) -> typing.Optional[builtins.bool]:
15675
+ '''Indicates whether expired client certificates are ignored.
15676
+
15677
+ Cannot be used with MutualAuthenticationMode.OFF or MutualAuthenticationMode.PASS_THROUGH
15678
+
15679
+ :default: false
15680
+ '''
15681
+ result = self._values.get("ignore_client_certificate_expiry")
15682
+ return typing.cast(typing.Optional[builtins.bool], result)
15683
+
15684
+ @builtins.property
15685
+ def mutual_authentication_mode(self) -> typing.Optional["MutualAuthenticationMode"]:
15686
+ '''The client certificate handling method.
15687
+
15688
+ :default: MutualAuthenticationMode.OFF
15689
+ '''
15690
+ result = self._values.get("mutual_authentication_mode")
15691
+ return typing.cast(typing.Optional["MutualAuthenticationMode"], result)
15692
+
15693
+ @builtins.property
15694
+ def trust_store(self) -> typing.Optional[ITrustStore]:
15695
+ '''The trust store.
15696
+
15697
+ Cannot be used with MutualAuthenticationMode.OFF or MutualAuthenticationMode.PASS_THROUGH
15698
+
15699
+ :default: - no trust store
15700
+ '''
15701
+ result = self._values.get("trust_store")
15702
+ return typing.cast(typing.Optional[ITrustStore], result)
15703
+
15704
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
15705
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
15706
+
15707
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
15708
+ return not (rhs == self)
15709
+
15710
+ def __repr__(self) -> str:
15711
+ return "MutualAuthentication(%s)" % ", ".join(
15712
+ k + "=" + repr(v) for k, v in self._values.items()
15713
+ )
15714
+
15715
+
15716
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.MutualAuthenticationMode")
15717
+ class MutualAuthenticationMode(enum.Enum):
15718
+ '''The client certificate handling method.
15719
+
15720
+ :exampleMetadata: infused
15721
+
15722
+ Example::
15723
+
15724
+ import aws_cdk.aws_certificatemanager as acm
15725
+
15726
+ # certificate: acm.Certificate
15727
+ # lb: elbv2.ApplicationLoadBalancer
15728
+ # bucket: s3.Bucket
15729
+
15730
+
15731
+ trust_store = elbv2.TrustStore(self, "Store",
15732
+ bucket=bucket,
15733
+ key="rootCA_cert.pem"
15734
+ )
15735
+
15736
+ lb.add_listener("Listener",
15737
+ port=443,
15738
+ protocol=elbv2.ApplicationProtocol.HTTPS,
15739
+ certificates=[certificate],
15740
+ # mTLS settings
15741
+ mutual_authentication=elbv2.MutualAuthentication(
15742
+ ignore_client_certificate_expiry=False,
15743
+ mutual_authentication_mode=elbv2.MutualAuthenticationMode.VERIFY,
15744
+ trust_store=trust_store
15745
+ ),
15746
+ default_action=elbv2.ListenerAction.fixed_response(200, content_type="text/plain", message_body="Success mTLS")
15747
+ )
15748
+ '''
15749
+
15750
+ OFF = "OFF"
15751
+ '''Off.'''
15752
+ PASS_THROUGH = "PASS_THROUGH"
15753
+ '''Application Load Balancer sends the whole client certificate chain to the target using HTTP headers.'''
15754
+ VERIFY = "VERIFY"
15755
+ '''Application Load Balancer performs X.509 client certificate authentication for clients when a load balancer negotiates TLS connections.'''
15756
+
15757
+
15442
15758
  @jsii.data_type(
15443
15759
  jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.NetworkForwardOptions",
15444
15760
  jsii_struct_bases=[],
@@ -17633,19 +17949,151 @@ class RedirectOptions:
17633
17949
  )
17634
17950
 
17635
17951
 
17636
- @jsii.enum(jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.SslPolicy")
17637
- class SslPolicy(enum.Enum):
17638
- '''Elastic Load Balancing provides the following security policies for Application Load Balancers.
17952
+ @jsii.data_type(
17953
+ jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.RevocationContent",
17954
+ jsii_struct_bases=[],
17955
+ name_mapping={
17956
+ "bucket": "bucket",
17957
+ "key": "key",
17958
+ "revocation_type": "revocationType",
17959
+ "version": "version",
17960
+ },
17961
+ )
17962
+ class RevocationContent:
17963
+ def __init__(
17964
+ self,
17965
+ *,
17966
+ bucket: _IBucket_42e086fd,
17967
+ key: builtins.str,
17968
+ revocation_type: typing.Optional["RevocationType"] = None,
17969
+ version: typing.Optional[builtins.str] = None,
17970
+ ) -> None:
17971
+ '''Information about a revocation file.
17639
17972
 
17640
- We recommend the Recommended policy for general use. You can
17641
- use the ForwardSecrecy policy if you require Forward Secrecy
17642
- (FS).
17973
+ :param bucket: The Amazon S3 bucket for the revocation file.
17974
+ :param key: The Amazon S3 path for the revocation file.
17975
+ :param revocation_type: The type of revocation file. Default: RevocationType.CRL
17976
+ :param version: The Amazon S3 object version of the revocation file. Default: - latest version
17643
17977
 
17644
- You can use one of the TLS policies to meet compliance and security
17645
- standards that require disabling certain TLS protocol versions, or to
17646
- support legacy clients that require deprecated ciphers.
17978
+ :exampleMetadata: fixture=_generated
17979
+
17980
+ Example::
17981
+
17982
+ # The code below shows an example of how to instantiate this type.
17983
+ # The values are placeholders you should change.
17984
+ from aws_cdk import aws_elasticloadbalancingv2 as elbv2
17985
+ from aws_cdk import aws_s3 as s3
17986
+
17987
+ # bucket: s3.Bucket
17988
+
17989
+ revocation_content = elbv2.RevocationContent(
17990
+ bucket=bucket,
17991
+ key="key",
17992
+
17993
+ # the properties below are optional
17994
+ revocation_type=elbv2.RevocationType.CRL,
17995
+ version="version"
17996
+ )
17997
+ '''
17998
+ if __debug__:
17999
+ type_hints = typing.get_type_hints(_typecheckingstub__a2d98c0c87c9335126a85af9c46b02ccfdb480d04d96fb422b8f62f17d09b801)
18000
+ check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
18001
+ check_type(argname="argument key", value=key, expected_type=type_hints["key"])
18002
+ check_type(argname="argument revocation_type", value=revocation_type, expected_type=type_hints["revocation_type"])
18003
+ check_type(argname="argument version", value=version, expected_type=type_hints["version"])
18004
+ self._values: typing.Dict[builtins.str, typing.Any] = {
18005
+ "bucket": bucket,
18006
+ "key": key,
18007
+ }
18008
+ if revocation_type is not None:
18009
+ self._values["revocation_type"] = revocation_type
18010
+ if version is not None:
18011
+ self._values["version"] = version
18012
+
18013
+ @builtins.property
18014
+ def bucket(self) -> _IBucket_42e086fd:
18015
+ '''The Amazon S3 bucket for the revocation file.'''
18016
+ result = self._values.get("bucket")
18017
+ assert result is not None, "Required property 'bucket' is missing"
18018
+ return typing.cast(_IBucket_42e086fd, result)
18019
+
18020
+ @builtins.property
18021
+ def key(self) -> builtins.str:
18022
+ '''The Amazon S3 path for the revocation file.'''
18023
+ result = self._values.get("key")
18024
+ assert result is not None, "Required property 'key' is missing"
18025
+ return typing.cast(builtins.str, result)
18026
+
18027
+ @builtins.property
18028
+ def revocation_type(self) -> typing.Optional["RevocationType"]:
18029
+ '''The type of revocation file.
18030
+
18031
+ :default: RevocationType.CRL
18032
+ '''
18033
+ result = self._values.get("revocation_type")
18034
+ return typing.cast(typing.Optional["RevocationType"], result)
18035
+
18036
+ @builtins.property
18037
+ def version(self) -> typing.Optional[builtins.str]:
18038
+ '''The Amazon S3 object version of the revocation file.
18039
+
18040
+ :default: - latest version
18041
+ '''
18042
+ result = self._values.get("version")
18043
+ return typing.cast(typing.Optional[builtins.str], result)
18044
+
18045
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
18046
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
18047
+
18048
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
18049
+ return not (rhs == self)
18050
+
18051
+ def __repr__(self) -> str:
18052
+ return "RevocationContent(%s)" % ", ".join(
18053
+ k + "=" + repr(v) for k, v in self._values.items()
18054
+ )
18055
+
18056
+
18057
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.RevocationType")
18058
+ class RevocationType(enum.Enum):
18059
+ '''The type of revocation file.
17647
18060
 
17648
- :see: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html
18061
+ :exampleMetadata: infused
18062
+
18063
+ Example::
18064
+
18065
+ # trust_store: elbv2.TrustStore
18066
+ # bucket: s3.Bucket
18067
+
18068
+
18069
+ elbv2.TrustStoreRevocation(self, "Revocation",
18070
+ trust_store=trust_store,
18071
+ revocation_contents=[elbv2.RevocationContent(
18072
+ revocation_type=elbv2.RevocationType.CRL,
18073
+ bucket=bucket,
18074
+ key="crl.pem"
18075
+ )
18076
+ ]
18077
+ )
18078
+ '''
18079
+
18080
+ CRL = "CRL"
18081
+ '''A signed list of revoked certificates.'''
18082
+
18083
+
18084
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.SslPolicy")
18085
+ class SslPolicy(enum.Enum):
18086
+ '''Elastic Load Balancing provides the following security policies for Application Load Balancers.
18087
+
18088
+ We recommend the Recommended policy for general use. You can
18089
+ use the ForwardSecrecy policy if you require Forward Secrecy
18090
+ (FS).
18091
+
18092
+ You can use one of the TLS policies to meet compliance and security
18093
+ standards that require disabling certain TLS protocol versions, or to
18094
+ support legacy clients that require deprecated ciphers.
18095
+
18096
+ :see: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html
17649
18097
  :exampleMetadata: infused
17650
18098
 
17651
18099
  Example::
@@ -18033,7 +18481,7 @@ class TargetGroupBase(
18033
18481
  if __debug__:
18034
18482
  type_hints = typing.get_type_hints(_typecheckingstub__abb5a8931437f8e7217ee9fc1b5e8775ee2fa63e0ad5310f5c3ee5a7ee0a34fe)
18035
18483
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
18036
- jsii.set(self, "healthCheck", value)
18484
+ jsii.set(self, "healthCheck", value) # pyright: ignore[reportArgumentType]
18037
18485
 
18038
18486
  @builtins.property
18039
18487
  @jsii.member(jsii_name="targetType")
@@ -18046,7 +18494,7 @@ class TargetGroupBase(
18046
18494
  if __debug__:
18047
18495
  type_hints = typing.get_type_hints(_typecheckingstub__7c19dd8de36c1c86ebd89e7c24379bf1b20a6e5f343db95042864bf022f23513)
18048
18496
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
18049
- jsii.set(self, "targetType", value)
18497
+ jsii.set(self, "targetType", value) # pyright: ignore[reportArgumentType]
18050
18498
 
18051
18499
 
18052
18500
  class _TargetGroupBaseProxy(TargetGroupBase):
@@ -18128,6 +18576,370 @@ class TargetType(enum.Enum):
18128
18576
  '''Target is a single Application Load Balancer.'''
18129
18577
 
18130
18578
 
18579
+ @jsii.implements(ITrustStore)
18580
+ class TrustStore(
18581
+ _Resource_45bc6135,
18582
+ metaclass=jsii.JSIIMeta,
18583
+ jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.TrustStore",
18584
+ ):
18585
+ '''A new Trust Store.
18586
+
18587
+ :exampleMetadata: infused
18588
+
18589
+ Example::
18590
+
18591
+ import aws_cdk.aws_certificatemanager as acm
18592
+
18593
+ # certificate: acm.Certificate
18594
+ # lb: elbv2.ApplicationLoadBalancer
18595
+ # bucket: s3.Bucket
18596
+
18597
+
18598
+ trust_store = elbv2.TrustStore(self, "Store",
18599
+ bucket=bucket,
18600
+ key="rootCA_cert.pem"
18601
+ )
18602
+
18603
+ lb.add_listener("Listener",
18604
+ port=443,
18605
+ protocol=elbv2.ApplicationProtocol.HTTPS,
18606
+ certificates=[certificate],
18607
+ # mTLS settings
18608
+ mutual_authentication=elbv2.MutualAuthentication(
18609
+ ignore_client_certificate_expiry=False,
18610
+ mutual_authentication_mode=elbv2.MutualAuthenticationMode.VERIFY,
18611
+ trust_store=trust_store
18612
+ ),
18613
+ default_action=elbv2.ListenerAction.fixed_response(200, content_type="text/plain", message_body="Success mTLS")
18614
+ )
18615
+ '''
18616
+
18617
+ def __init__(
18618
+ self,
18619
+ scope: _constructs_77d1e7e8.Construct,
18620
+ id: builtins.str,
18621
+ *,
18622
+ bucket: _IBucket_42e086fd,
18623
+ key: builtins.str,
18624
+ trust_store_name: typing.Optional[builtins.str] = None,
18625
+ version: typing.Optional[builtins.str] = None,
18626
+ ) -> None:
18627
+ '''
18628
+ :param scope: -
18629
+ :param id: -
18630
+ :param bucket: The bucket that the trust store is hosted in.
18631
+ :param key: The key in S3 to look at for the trust store.
18632
+ :param trust_store_name: The name of the trust store. Default: - Auto generated
18633
+ :param version: The version of the S3 object that contains your truststore. To specify a version, you must have versioning enabled for the S3 bucket. Default: - latest version
18634
+ '''
18635
+ if __debug__:
18636
+ type_hints = typing.get_type_hints(_typecheckingstub__fbafbf35d05de3ceecc0965698aa7d45dd0a58477f5c8555d0efa8b8cfedbd7d)
18637
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
18638
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
18639
+ props = TrustStoreProps(
18640
+ bucket=bucket, key=key, trust_store_name=trust_store_name, version=version
18641
+ )
18642
+
18643
+ jsii.create(self.__class__, self, [scope, id, props])
18644
+
18645
+ @jsii.member(jsii_name="fromTrustStoreArn")
18646
+ @builtins.classmethod
18647
+ def from_trust_store_arn(
18648
+ cls,
18649
+ scope: _constructs_77d1e7e8.Construct,
18650
+ id: builtins.str,
18651
+ trust_store_arn: builtins.str,
18652
+ ) -> ITrustStore:
18653
+ '''Import from ARN.
18654
+
18655
+ :param scope: -
18656
+ :param id: -
18657
+ :param trust_store_arn: -
18658
+ '''
18659
+ if __debug__:
18660
+ type_hints = typing.get_type_hints(_typecheckingstub__1e078d73452d520ce829e14315128763e3ef291dcb7c3e40df660393d5135f4b)
18661
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
18662
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
18663
+ check_type(argname="argument trust_store_arn", value=trust_store_arn, expected_type=type_hints["trust_store_arn"])
18664
+ return typing.cast(ITrustStore, jsii.sinvoke(cls, "fromTrustStoreArn", [scope, id, trust_store_arn]))
18665
+
18666
+ @builtins.property
18667
+ @jsii.member(jsii_name="numberOfCaCertificates")
18668
+ def number_of_ca_certificates(self) -> jsii.Number:
18669
+ '''The number of CA certificates in the trust store.
18670
+
18671
+ :attribute: true
18672
+ '''
18673
+ return typing.cast(jsii.Number, jsii.get(self, "numberOfCaCertificates"))
18674
+
18675
+ @builtins.property
18676
+ @jsii.member(jsii_name="status")
18677
+ def status(self) -> builtins.str:
18678
+ '''The status of the trust store.
18679
+
18680
+ :attribute: true
18681
+ '''
18682
+ return typing.cast(builtins.str, jsii.get(self, "status"))
18683
+
18684
+ @builtins.property
18685
+ @jsii.member(jsii_name="trustStoreArn")
18686
+ def trust_store_arn(self) -> builtins.str:
18687
+ '''The ARN of the trust store.
18688
+
18689
+ :attribute: true
18690
+ '''
18691
+ return typing.cast(builtins.str, jsii.get(self, "trustStoreArn"))
18692
+
18693
+ @builtins.property
18694
+ @jsii.member(jsii_name="trustStoreName")
18695
+ def trust_store_name(self) -> builtins.str:
18696
+ '''The name of the trust store.
18697
+
18698
+ :attribute: true
18699
+ '''
18700
+ return typing.cast(builtins.str, jsii.get(self, "trustStoreName"))
18701
+
18702
+
18703
+ @jsii.data_type(
18704
+ jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.TrustStoreProps",
18705
+ jsii_struct_bases=[],
18706
+ name_mapping={
18707
+ "bucket": "bucket",
18708
+ "key": "key",
18709
+ "trust_store_name": "trustStoreName",
18710
+ "version": "version",
18711
+ },
18712
+ )
18713
+ class TrustStoreProps:
18714
+ def __init__(
18715
+ self,
18716
+ *,
18717
+ bucket: _IBucket_42e086fd,
18718
+ key: builtins.str,
18719
+ trust_store_name: typing.Optional[builtins.str] = None,
18720
+ version: typing.Optional[builtins.str] = None,
18721
+ ) -> None:
18722
+ '''Properties used for the Trust Store.
18723
+
18724
+ :param bucket: The bucket that the trust store is hosted in.
18725
+ :param key: The key in S3 to look at for the trust store.
18726
+ :param trust_store_name: The name of the trust store. Default: - Auto generated
18727
+ :param version: The version of the S3 object that contains your truststore. To specify a version, you must have versioning enabled for the S3 bucket. Default: - latest version
18728
+
18729
+ :exampleMetadata: infused
18730
+
18731
+ Example::
18732
+
18733
+ import aws_cdk.aws_certificatemanager as acm
18734
+
18735
+ # certificate: acm.Certificate
18736
+ # lb: elbv2.ApplicationLoadBalancer
18737
+ # bucket: s3.Bucket
18738
+
18739
+
18740
+ trust_store = elbv2.TrustStore(self, "Store",
18741
+ bucket=bucket,
18742
+ key="rootCA_cert.pem"
18743
+ )
18744
+
18745
+ lb.add_listener("Listener",
18746
+ port=443,
18747
+ protocol=elbv2.ApplicationProtocol.HTTPS,
18748
+ certificates=[certificate],
18749
+ # mTLS settings
18750
+ mutual_authentication=elbv2.MutualAuthentication(
18751
+ ignore_client_certificate_expiry=False,
18752
+ mutual_authentication_mode=elbv2.MutualAuthenticationMode.VERIFY,
18753
+ trust_store=trust_store
18754
+ ),
18755
+ default_action=elbv2.ListenerAction.fixed_response(200, content_type="text/plain", message_body="Success mTLS")
18756
+ )
18757
+ '''
18758
+ if __debug__:
18759
+ type_hints = typing.get_type_hints(_typecheckingstub__41f3f138d5b55c026366c540abffc84d65da6413c7cfa2972612fb796b1d3206)
18760
+ check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
18761
+ check_type(argname="argument key", value=key, expected_type=type_hints["key"])
18762
+ check_type(argname="argument trust_store_name", value=trust_store_name, expected_type=type_hints["trust_store_name"])
18763
+ check_type(argname="argument version", value=version, expected_type=type_hints["version"])
18764
+ self._values: typing.Dict[builtins.str, typing.Any] = {
18765
+ "bucket": bucket,
18766
+ "key": key,
18767
+ }
18768
+ if trust_store_name is not None:
18769
+ self._values["trust_store_name"] = trust_store_name
18770
+ if version is not None:
18771
+ self._values["version"] = version
18772
+
18773
+ @builtins.property
18774
+ def bucket(self) -> _IBucket_42e086fd:
18775
+ '''The bucket that the trust store is hosted in.'''
18776
+ result = self._values.get("bucket")
18777
+ assert result is not None, "Required property 'bucket' is missing"
18778
+ return typing.cast(_IBucket_42e086fd, result)
18779
+
18780
+ @builtins.property
18781
+ def key(self) -> builtins.str:
18782
+ '''The key in S3 to look at for the trust store.'''
18783
+ result = self._values.get("key")
18784
+ assert result is not None, "Required property 'key' is missing"
18785
+ return typing.cast(builtins.str, result)
18786
+
18787
+ @builtins.property
18788
+ def trust_store_name(self) -> typing.Optional[builtins.str]:
18789
+ '''The name of the trust store.
18790
+
18791
+ :default: - Auto generated
18792
+ '''
18793
+ result = self._values.get("trust_store_name")
18794
+ return typing.cast(typing.Optional[builtins.str], result)
18795
+
18796
+ @builtins.property
18797
+ def version(self) -> typing.Optional[builtins.str]:
18798
+ '''The version of the S3 object that contains your truststore.
18799
+
18800
+ To specify a version, you must have versioning enabled for the S3 bucket.
18801
+
18802
+ :default: - latest version
18803
+ '''
18804
+ result = self._values.get("version")
18805
+ return typing.cast(typing.Optional[builtins.str], result)
18806
+
18807
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
18808
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
18809
+
18810
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
18811
+ return not (rhs == self)
18812
+
18813
+ def __repr__(self) -> str:
18814
+ return "TrustStoreProps(%s)" % ", ".join(
18815
+ k + "=" + repr(v) for k, v in self._values.items()
18816
+ )
18817
+
18818
+
18819
+ class TrustStoreRevocation(
18820
+ _Resource_45bc6135,
18821
+ metaclass=jsii.JSIIMeta,
18822
+ jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.TrustStoreRevocation",
18823
+ ):
18824
+ '''A new Trust Store Revocation.
18825
+
18826
+ :exampleMetadata: infused
18827
+
18828
+ Example::
18829
+
18830
+ # trust_store: elbv2.TrustStore
18831
+ # bucket: s3.Bucket
18832
+
18833
+
18834
+ elbv2.TrustStoreRevocation(self, "Revocation",
18835
+ trust_store=trust_store,
18836
+ revocation_contents=[elbv2.RevocationContent(
18837
+ revocation_type=elbv2.RevocationType.CRL,
18838
+ bucket=bucket,
18839
+ key="crl.pem"
18840
+ )
18841
+ ]
18842
+ )
18843
+ '''
18844
+
18845
+ def __init__(
18846
+ self,
18847
+ scope: _constructs_77d1e7e8.Construct,
18848
+ id: builtins.str,
18849
+ *,
18850
+ revocation_contents: typing.Sequence[typing.Union[RevocationContent, typing.Dict[builtins.str, typing.Any]]],
18851
+ trust_store: ITrustStore,
18852
+ ) -> None:
18853
+ '''
18854
+ :param scope: -
18855
+ :param id: -
18856
+ :param revocation_contents: The revocation file to add.
18857
+ :param trust_store: The trust store.
18858
+ '''
18859
+ if __debug__:
18860
+ type_hints = typing.get_type_hints(_typecheckingstub__688628f84e2cff85506975764e889f60121aab1ab9420e53b24769400ab3c7d7)
18861
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
18862
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
18863
+ props = TrustStoreRevocationProps(
18864
+ revocation_contents=revocation_contents, trust_store=trust_store
18865
+ )
18866
+
18867
+ jsii.create(self.__class__, self, [scope, id, props])
18868
+
18869
+
18870
+ @jsii.data_type(
18871
+ jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.TrustStoreRevocationProps",
18872
+ jsii_struct_bases=[],
18873
+ name_mapping={
18874
+ "revocation_contents": "revocationContents",
18875
+ "trust_store": "trustStore",
18876
+ },
18877
+ )
18878
+ class TrustStoreRevocationProps:
18879
+ def __init__(
18880
+ self,
18881
+ *,
18882
+ revocation_contents: typing.Sequence[typing.Union[RevocationContent, typing.Dict[builtins.str, typing.Any]]],
18883
+ trust_store: ITrustStore,
18884
+ ) -> None:
18885
+ '''Properties for the trust store revocation.
18886
+
18887
+ :param revocation_contents: The revocation file to add.
18888
+ :param trust_store: The trust store.
18889
+
18890
+ :exampleMetadata: infused
18891
+
18892
+ Example::
18893
+
18894
+ # trust_store: elbv2.TrustStore
18895
+ # bucket: s3.Bucket
18896
+
18897
+
18898
+ elbv2.TrustStoreRevocation(self, "Revocation",
18899
+ trust_store=trust_store,
18900
+ revocation_contents=[elbv2.RevocationContent(
18901
+ revocation_type=elbv2.RevocationType.CRL,
18902
+ bucket=bucket,
18903
+ key="crl.pem"
18904
+ )
18905
+ ]
18906
+ )
18907
+ '''
18908
+ if __debug__:
18909
+ type_hints = typing.get_type_hints(_typecheckingstub__de0bf3e884d9bbf4a0d3582e17910f3a46c89450790ad669a820be588c4bb749)
18910
+ check_type(argname="argument revocation_contents", value=revocation_contents, expected_type=type_hints["revocation_contents"])
18911
+ check_type(argname="argument trust_store", value=trust_store, expected_type=type_hints["trust_store"])
18912
+ self._values: typing.Dict[builtins.str, typing.Any] = {
18913
+ "revocation_contents": revocation_contents,
18914
+ "trust_store": trust_store,
18915
+ }
18916
+
18917
+ @builtins.property
18918
+ def revocation_contents(self) -> typing.List[RevocationContent]:
18919
+ '''The revocation file to add.'''
18920
+ result = self._values.get("revocation_contents")
18921
+ assert result is not None, "Required property 'revocation_contents' is missing"
18922
+ return typing.cast(typing.List[RevocationContent], result)
18923
+
18924
+ @builtins.property
18925
+ def trust_store(self) -> ITrustStore:
18926
+ '''The trust store.'''
18927
+ result = self._values.get("trust_store")
18928
+ assert result is not None, "Required property 'trust_store' is missing"
18929
+ return typing.cast(ITrustStore, result)
18930
+
18931
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
18932
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
18933
+
18934
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
18935
+ return not (rhs == self)
18936
+
18937
+ def __repr__(self) -> str:
18938
+ return "TrustStoreRevocationProps(%s)" % ", ".join(
18939
+ k + "=" + repr(v) for k, v in self._values.items()
18940
+ )
18941
+
18942
+
18131
18943
  @jsii.enum(jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.UnauthenticatedAction")
18132
18944
  class UnauthenticatedAction(enum.Enum):
18133
18945
  '''What to do with unauthenticated requests.'''
@@ -18939,6 +19751,7 @@ class ApplicationListenerLookupOptions(BaseListenerLookupOptions):
18939
19751
  "certificates": "certificates",
18940
19752
  "default_action": "defaultAction",
18941
19753
  "default_target_groups": "defaultTargetGroups",
19754
+ "mutual_authentication": "mutualAuthentication",
18942
19755
  "open": "open",
18943
19756
  "port": "port",
18944
19757
  "protocol": "protocol",
@@ -18953,6 +19766,7 @@ class ApplicationListenerProps(BaseApplicationListenerProps):
18953
19766
  certificates: typing.Optional[typing.Sequence[IListenerCertificate]] = None,
18954
19767
  default_action: typing.Optional[ListenerAction] = None,
18955
19768
  default_target_groups: typing.Optional[typing.Sequence["IApplicationTargetGroup"]] = None,
19769
+ mutual_authentication: typing.Optional[typing.Union[MutualAuthentication, typing.Dict[builtins.str, typing.Any]]] = None,
18956
19770
  open: typing.Optional[builtins.bool] = None,
18957
19771
  port: typing.Optional[jsii.Number] = None,
18958
19772
  protocol: typing.Optional[ApplicationProtocol] = None,
@@ -18964,6 +19778,7 @@ class ApplicationListenerProps(BaseApplicationListenerProps):
18964
19778
  :param certificates: Certificate list of ACM cert ARNs. You must provide exactly one certificate if the listener protocol is HTTPS or TLS. Default: - No certificates.
18965
19779
  :param default_action: Default action to take for requests to this listener. This allows full control of the default action of the load balancer, including Action chaining, fixed responses and redirect responses. See the ``ListenerAction`` class for all options. Cannot be specified together with ``defaultTargetGroups``. Default: - None.
18966
19780
  :param default_target_groups: Default target groups to load balance to. All target groups will be load balanced to with equal weight and without stickiness. For a more complex configuration than that, use either ``defaultAction`` or ``addAction()``. Cannot be specified together with ``defaultAction``. Default: - None.
19781
+ :param mutual_authentication: The mutual authentication configuration information. Default: - No mutual authentication configuration
18967
19782
  :param open: Allow anyone to connect to the load balancer on the listener port. If this is specified, the load balancer will be opened up to anyone who can reach it. For internal load balancers this is anyone in the same VPC. For public load balancers, this is anyone on the internet. If you want to be more selective about who can access this load balancer, set this to ``false`` and use the listener's ``connections`` object to selectively grant access to the load balancer on the listener port. Default: true
18968
19783
  :param port: The port on which the listener listens for requests. Default: - Determined from protocol if known.
18969
19784
  :param protocol: The protocol to use. Default: - Determined from port if known.
@@ -18982,6 +19797,7 @@ class ApplicationListenerProps(BaseApplicationListenerProps):
18982
19797
  # application_target_group: elbv2.ApplicationTargetGroup
18983
19798
  # listener_action: elbv2.ListenerAction
18984
19799
  # listener_certificate: elbv2.ListenerCertificate
19800
+ # trust_store: elbv2.TrustStore
18985
19801
 
18986
19802
  application_listener_props = elbv2.ApplicationListenerProps(
18987
19803
  load_balancer=application_load_balancer,
@@ -18990,17 +19806,25 @@ class ApplicationListenerProps(BaseApplicationListenerProps):
18990
19806
  certificates=[listener_certificate],
18991
19807
  default_action=listener_action,
18992
19808
  default_target_groups=[application_target_group],
19809
+ mutual_authentication=elbv2.MutualAuthentication(
19810
+ ignore_client_certificate_expiry=False,
19811
+ mutual_authentication_mode=elbv2.MutualAuthenticationMode.OFF,
19812
+ trust_store=trust_store
19813
+ ),
18993
19814
  open=False,
18994
19815
  port=123,
18995
19816
  protocol=elbv2.ApplicationProtocol.HTTP,
18996
19817
  ssl_policy=elbv2.SslPolicy.RECOMMENDED_TLS
18997
19818
  )
18998
19819
  '''
19820
+ if isinstance(mutual_authentication, dict):
19821
+ mutual_authentication = MutualAuthentication(**mutual_authentication)
18999
19822
  if __debug__:
19000
19823
  type_hints = typing.get_type_hints(_typecheckingstub__e75c9b01f3107ce8d6eaba24046fe2615baadcbc80764f82433f160f3cde00e9)
19001
19824
  check_type(argname="argument certificates", value=certificates, expected_type=type_hints["certificates"])
19002
19825
  check_type(argname="argument default_action", value=default_action, expected_type=type_hints["default_action"])
19003
19826
  check_type(argname="argument default_target_groups", value=default_target_groups, expected_type=type_hints["default_target_groups"])
19827
+ check_type(argname="argument mutual_authentication", value=mutual_authentication, expected_type=type_hints["mutual_authentication"])
19004
19828
  check_type(argname="argument open", value=open, expected_type=type_hints["open"])
19005
19829
  check_type(argname="argument port", value=port, expected_type=type_hints["port"])
19006
19830
  check_type(argname="argument protocol", value=protocol, expected_type=type_hints["protocol"])
@@ -19015,6 +19839,8 @@ class ApplicationListenerProps(BaseApplicationListenerProps):
19015
19839
  self._values["default_action"] = default_action
19016
19840
  if default_target_groups is not None:
19017
19841
  self._values["default_target_groups"] = default_target_groups
19842
+ if mutual_authentication is not None:
19843
+ self._values["mutual_authentication"] = mutual_authentication
19018
19844
  if open is not None:
19019
19845
  self._values["open"] = open
19020
19846
  if port is not None:
@@ -19068,6 +19894,17 @@ class ApplicationListenerProps(BaseApplicationListenerProps):
19068
19894
  result = self._values.get("default_target_groups")
19069
19895
  return typing.cast(typing.Optional[typing.List["IApplicationTargetGroup"]], result)
19070
19896
 
19897
+ @builtins.property
19898
+ def mutual_authentication(self) -> typing.Optional[MutualAuthentication]:
19899
+ '''The mutual authentication configuration information.
19900
+
19901
+ :default: - No mutual authentication configuration
19902
+
19903
+ :see: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/mutual-authentication.html
19904
+ '''
19905
+ result = self._values.get("mutual_authentication")
19906
+ return typing.cast(typing.Optional[MutualAuthentication], result)
19907
+
19071
19908
  @builtins.property
19072
19909
  def open(self) -> typing.Optional[builtins.bool]:
19073
19910
  '''Allow anyone to connect to the load balancer on the listener port.
@@ -20432,6 +21269,7 @@ class IApplicationLoadBalancer(
20432
21269
  certificates: typing.Optional[typing.Sequence[IListenerCertificate]] = None,
20433
21270
  default_action: typing.Optional[ListenerAction] = None,
20434
21271
  default_target_groups: typing.Optional[typing.Sequence["IApplicationTargetGroup"]] = None,
21272
+ mutual_authentication: typing.Optional[typing.Union[MutualAuthentication, typing.Dict[builtins.str, typing.Any]]] = None,
20435
21273
  open: typing.Optional[builtins.bool] = None,
20436
21274
  port: typing.Optional[jsii.Number] = None,
20437
21275
  protocol: typing.Optional[ApplicationProtocol] = None,
@@ -20443,6 +21281,7 @@ class IApplicationLoadBalancer(
20443
21281
  :param certificates: Certificate list of ACM cert ARNs. You must provide exactly one certificate if the listener protocol is HTTPS or TLS. Default: - No certificates.
20444
21282
  :param default_action: Default action to take for requests to this listener. This allows full control of the default action of the load balancer, including Action chaining, fixed responses and redirect responses. See the ``ListenerAction`` class for all options. Cannot be specified together with ``defaultTargetGroups``. Default: - None.
20445
21283
  :param default_target_groups: Default target groups to load balance to. All target groups will be load balanced to with equal weight and without stickiness. For a more complex configuration than that, use either ``defaultAction`` or ``addAction()``. Cannot be specified together with ``defaultAction``. Default: - None.
21284
+ :param mutual_authentication: The mutual authentication configuration information. Default: - No mutual authentication configuration
20446
21285
  :param open: Allow anyone to connect to the load balancer on the listener port. If this is specified, the load balancer will be opened up to anyone who can reach it. For internal load balancers this is anyone in the same VPC. For public load balancers, this is anyone on the internet. If you want to be more selective about who can access this load balancer, set this to ``false`` and use the listener's ``connections`` object to selectively grant access to the load balancer on the listener port. Default: true
20447
21286
  :param port: The port on which the listener listens for requests. Default: - Determined from protocol if known.
20448
21287
  :param protocol: The protocol to use. Default: - Determined from port if known.
@@ -20507,6 +21346,7 @@ class _IApplicationLoadBalancerProxy(
20507
21346
  certificates: typing.Optional[typing.Sequence[IListenerCertificate]] = None,
20508
21347
  default_action: typing.Optional[ListenerAction] = None,
20509
21348
  default_target_groups: typing.Optional[typing.Sequence["IApplicationTargetGroup"]] = None,
21349
+ mutual_authentication: typing.Optional[typing.Union[MutualAuthentication, typing.Dict[builtins.str, typing.Any]]] = None,
20510
21350
  open: typing.Optional[builtins.bool] = None,
20511
21351
  port: typing.Optional[jsii.Number] = None,
20512
21352
  protocol: typing.Optional[ApplicationProtocol] = None,
@@ -20518,6 +21358,7 @@ class _IApplicationLoadBalancerProxy(
20518
21358
  :param certificates: Certificate list of ACM cert ARNs. You must provide exactly one certificate if the listener protocol is HTTPS or TLS. Default: - No certificates.
20519
21359
  :param default_action: Default action to take for requests to this listener. This allows full control of the default action of the load balancer, including Action chaining, fixed responses and redirect responses. See the ``ListenerAction`` class for all options. Cannot be specified together with ``defaultTargetGroups``. Default: - None.
20520
21360
  :param default_target_groups: Default target groups to load balance to. All target groups will be load balanced to with equal weight and without stickiness. For a more complex configuration than that, use either ``defaultAction`` or ``addAction()``. Cannot be specified together with ``defaultAction``. Default: - None.
21361
+ :param mutual_authentication: The mutual authentication configuration information. Default: - No mutual authentication configuration
20521
21362
  :param open: Allow anyone to connect to the load balancer on the listener port. If this is specified, the load balancer will be opened up to anyone who can reach it. For internal load balancers this is anyone in the same VPC. For public load balancers, this is anyone on the internet. If you want to be more selective about who can access this load balancer, set this to ``false`` and use the listener's ``connections`` object to selectively grant access to the load balancer on the listener port. Default: true
20522
21363
  :param port: The port on which the listener listens for requests. Default: - Determined from protocol if known.
20523
21364
  :param protocol: The protocol to use. Default: - Determined from port if known.
@@ -20530,6 +21371,7 @@ class _IApplicationLoadBalancerProxy(
20530
21371
  certificates=certificates,
20531
21372
  default_action=default_action,
20532
21373
  default_target_groups=default_target_groups,
21374
+ mutual_authentication=mutual_authentication,
20533
21375
  open=open,
20534
21376
  port=port,
20535
21377
  protocol=protocol,
@@ -21280,6 +22122,7 @@ class ApplicationListener(
21280
22122
  certificates: typing.Optional[typing.Sequence[IListenerCertificate]] = None,
21281
22123
  default_action: typing.Optional[ListenerAction] = None,
21282
22124
  default_target_groups: typing.Optional[typing.Sequence[IApplicationTargetGroup]] = None,
22125
+ mutual_authentication: typing.Optional[typing.Union[MutualAuthentication, typing.Dict[builtins.str, typing.Any]]] = None,
21283
22126
  open: typing.Optional[builtins.bool] = None,
21284
22127
  port: typing.Optional[jsii.Number] = None,
21285
22128
  protocol: typing.Optional[ApplicationProtocol] = None,
@@ -21292,6 +22135,7 @@ class ApplicationListener(
21292
22135
  :param certificates: Certificate list of ACM cert ARNs. You must provide exactly one certificate if the listener protocol is HTTPS or TLS. Default: - No certificates.
21293
22136
  :param default_action: Default action to take for requests to this listener. This allows full control of the default action of the load balancer, including Action chaining, fixed responses and redirect responses. See the ``ListenerAction`` class for all options. Cannot be specified together with ``defaultTargetGroups``. Default: - None.
21294
22137
  :param default_target_groups: Default target groups to load balance to. All target groups will be load balanced to with equal weight and without stickiness. For a more complex configuration than that, use either ``defaultAction`` or ``addAction()``. Cannot be specified together with ``defaultAction``. Default: - None.
22138
+ :param mutual_authentication: The mutual authentication configuration information. Default: - No mutual authentication configuration
21295
22139
  :param open: Allow anyone to connect to the load balancer on the listener port. If this is specified, the load balancer will be opened up to anyone who can reach it. For internal load balancers this is anyone in the same VPC. For public load balancers, this is anyone on the internet. If you want to be more selective about who can access this load balancer, set this to ``false`` and use the listener's ``connections`` object to selectively grant access to the load balancer on the listener port. Default: true
21296
22140
  :param port: The port on which the listener listens for requests. Default: - Determined from protocol if known.
21297
22141
  :param protocol: The protocol to use. Default: - Determined from port if known.
@@ -21306,6 +22150,7 @@ class ApplicationListener(
21306
22150
  certificates=certificates,
21307
22151
  default_action=default_action,
21308
22152
  default_target_groups=default_target_groups,
22153
+ mutual_authentication=mutual_authentication,
21309
22154
  open=open,
21310
22155
  port=port,
21311
22156
  protocol=protocol,
@@ -21580,6 +22425,12 @@ class ApplicationListener(
21580
22425
  '''Load balancer this listener is associated with.'''
21581
22426
  return typing.cast(IApplicationLoadBalancer, jsii.get(self, "loadBalancer"))
21582
22427
 
22428
+ @builtins.property
22429
+ @jsii.member(jsii_name="port")
22430
+ def port(self) -> jsii.Number:
22431
+ '''The port of the listener.'''
22432
+ return typing.cast(jsii.Number, jsii.get(self, "port"))
22433
+
21583
22434
 
21584
22435
  @jsii.implements(IApplicationLoadBalancer)
21585
22436
  class ApplicationLoadBalancer(
@@ -21776,6 +22627,7 @@ class ApplicationLoadBalancer(
21776
22627
  certificates: typing.Optional[typing.Sequence[IListenerCertificate]] = None,
21777
22628
  default_action: typing.Optional[ListenerAction] = None,
21778
22629
  default_target_groups: typing.Optional[typing.Sequence[IApplicationTargetGroup]] = None,
22630
+ mutual_authentication: typing.Optional[typing.Union[MutualAuthentication, typing.Dict[builtins.str, typing.Any]]] = None,
21779
22631
  open: typing.Optional[builtins.bool] = None,
21780
22632
  port: typing.Optional[jsii.Number] = None,
21781
22633
  protocol: typing.Optional[ApplicationProtocol] = None,
@@ -21787,6 +22639,7 @@ class ApplicationLoadBalancer(
21787
22639
  :param certificates: Certificate list of ACM cert ARNs. You must provide exactly one certificate if the listener protocol is HTTPS or TLS. Default: - No certificates.
21788
22640
  :param default_action: Default action to take for requests to this listener. This allows full control of the default action of the load balancer, including Action chaining, fixed responses and redirect responses. See the ``ListenerAction`` class for all options. Cannot be specified together with ``defaultTargetGroups``. Default: - None.
21789
22641
  :param default_target_groups: Default target groups to load balance to. All target groups will be load balanced to with equal weight and without stickiness. For a more complex configuration than that, use either ``defaultAction`` or ``addAction()``. Cannot be specified together with ``defaultAction``. Default: - None.
22642
+ :param mutual_authentication: The mutual authentication configuration information. Default: - No mutual authentication configuration
21790
22643
  :param open: Allow anyone to connect to the load balancer on the listener port. If this is specified, the load balancer will be opened up to anyone who can reach it. For internal load balancers this is anyone in the same VPC. For public load balancers, this is anyone on the internet. If you want to be more selective about who can access this load balancer, set this to ``false`` and use the listener's ``connections`` object to selectively grant access to the load balancer on the listener port. Default: true
21791
22644
  :param port: The port on which the listener listens for requests. Default: - Determined from protocol if known.
21792
22645
  :param protocol: The protocol to use. Default: - Determined from port if known.
@@ -21799,6 +22652,7 @@ class ApplicationLoadBalancer(
21799
22652
  certificates=certificates,
21800
22653
  default_action=default_action,
21801
22654
  default_target_groups=default_target_groups,
22655
+ mutual_authentication=mutual_authentication,
21802
22656
  open=open,
21803
22657
  port=port,
21804
22658
  protocol=protocol,
@@ -21866,6 +22720,28 @@ class ApplicationLoadBalancer(
21866
22720
  check_type(argname="argument prefix", value=prefix, expected_type=type_hints["prefix"])
21867
22721
  return typing.cast(None, jsii.invoke(self, "logAccessLogs", [bucket, prefix]))
21868
22722
 
22723
+ @jsii.member(jsii_name="logConnectionLogs")
22724
+ def log_connection_logs(
22725
+ self,
22726
+ bucket: _IBucket_42e086fd,
22727
+ prefix: typing.Optional[builtins.str] = None,
22728
+ ) -> None:
22729
+ '''Enable connection logging for this load balancer.
22730
+
22731
+ A region must be specified on the stack containing the load balancer; you cannot enable logging on
22732
+ environment-agnostic stacks.
22733
+
22734
+ :param bucket: -
22735
+ :param prefix: -
22736
+
22737
+ :see: https://docs.aws.amazon.com/cdk/latest/guide/environments.html
22738
+ '''
22739
+ if __debug__:
22740
+ type_hints = typing.get_type_hints(_typecheckingstub__83af77b39f54e0ddb4dfef1f0572e098aa10c9c98e90f7b63b99c010ab474953)
22741
+ check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
22742
+ check_type(argname="argument prefix", value=prefix, expected_type=type_hints["prefix"])
22743
+ return typing.cast(None, jsii.invoke(self, "logConnectionLogs", [bucket, prefix]))
22744
+
21869
22745
  @jsii.member(jsii_name="metric")
21870
22746
  def metric(
21871
22747
  self,
@@ -23638,11 +24514,14 @@ __all__ = [
23638
24514
  "INetworkTargetGroup",
23639
24515
  "INetworkTargetGroupMetrics",
23640
24516
  "ITargetGroup",
24517
+ "ITrustStore",
23641
24518
  "IpAddressType",
23642
24519
  "ListenerAction",
23643
24520
  "ListenerCertificate",
23644
24521
  "ListenerCondition",
23645
24522
  "LoadBalancerTargetProps",
24523
+ "MutualAuthentication",
24524
+ "MutualAuthenticationMode",
23646
24525
  "NetworkForwardOptions",
23647
24526
  "NetworkListener",
23648
24527
  "NetworkListenerAction",
@@ -23658,11 +24537,17 @@ __all__ = [
23658
24537
  "Protocol",
23659
24538
  "QueryStringCondition",
23660
24539
  "RedirectOptions",
24540
+ "RevocationContent",
24541
+ "RevocationType",
23661
24542
  "SslPolicy",
23662
24543
  "TargetGroupAttributes",
23663
24544
  "TargetGroupBase",
23664
24545
  "TargetGroupLoadBalancingAlgorithmType",
23665
24546
  "TargetType",
24547
+ "TrustStore",
24548
+ "TrustStoreProps",
24549
+ "TrustStoreRevocation",
24550
+ "TrustStoreRevocationProps",
23666
24551
  "UnauthenticatedAction",
23667
24552
  "WeightedTargetGroup",
23668
24553
  "XffHeaderProcessingMode",
@@ -23798,6 +24683,7 @@ def _typecheckingstub__ff235432aa66ab4c299975824b88660e11bc6ea3280f57c10bdfed857
23798
24683
  certificates: typing.Optional[typing.Sequence[IListenerCertificate]] = None,
23799
24684
  default_action: typing.Optional[ListenerAction] = None,
23800
24685
  default_target_groups: typing.Optional[typing.Sequence[IApplicationTargetGroup]] = None,
24686
+ mutual_authentication: typing.Optional[typing.Union[MutualAuthentication, typing.Dict[builtins.str, typing.Any]]] = None,
23801
24687
  open: typing.Optional[builtins.bool] = None,
23802
24688
  port: typing.Optional[jsii.Number] = None,
23803
24689
  protocol: typing.Optional[ApplicationProtocol] = None,
@@ -25085,6 +25971,15 @@ def _typecheckingstub__8c6465f32cb6dbca33916708dcb5db1b787fcbdd00c3ff0265d561109
25085
25971
  """Type checking stubs"""
25086
25972
  pass
25087
25973
 
25974
+ def _typecheckingstub__89e8c0615ab98434e16d3e39e80ba0dcf6db041697e65279c8dffc68d7380e62(
25975
+ *,
25976
+ ignore_client_certificate_expiry: typing.Optional[builtins.bool] = None,
25977
+ mutual_authentication_mode: typing.Optional[MutualAuthenticationMode] = None,
25978
+ trust_store: typing.Optional[ITrustStore] = None,
25979
+ ) -> None:
25980
+ """Type checking stubs"""
25981
+ pass
25982
+
25088
25983
  def _typecheckingstub__297ec1640077e25cc26000f0d1a615a93ea1f21d3208449475389d378b91e335(
25089
25984
  *,
25090
25985
  stickiness_duration: typing.Optional[_Duration_4839e8c3] = None,
@@ -25310,6 +26205,16 @@ def _typecheckingstub__51d56527f4dc28756e02b9a793d897a5ba076221ea88231c8ab457284
25310
26205
  """Type checking stubs"""
25311
26206
  pass
25312
26207
 
26208
+ def _typecheckingstub__a2d98c0c87c9335126a85af9c46b02ccfdb480d04d96fb422b8f62f17d09b801(
26209
+ *,
26210
+ bucket: _IBucket_42e086fd,
26211
+ key: builtins.str,
26212
+ revocation_type: typing.Optional[RevocationType] = None,
26213
+ version: typing.Optional[builtins.str] = None,
26214
+ ) -> None:
26215
+ """Type checking stubs"""
26216
+ pass
26217
+
25313
26218
  def _typecheckingstub__37df8dc72952ae228e1a00919ab4c7fcae58e15f47e4e6bc9c1dfdb923d23dcd(
25314
26219
  *,
25315
26220
  target_group_arn: builtins.str,
@@ -25346,6 +26251,54 @@ def _typecheckingstub__7c19dd8de36c1c86ebd89e7c24379bf1b20a6e5f343db95042864bf02
25346
26251
  """Type checking stubs"""
25347
26252
  pass
25348
26253
 
26254
+ def _typecheckingstub__fbafbf35d05de3ceecc0965698aa7d45dd0a58477f5c8555d0efa8b8cfedbd7d(
26255
+ scope: _constructs_77d1e7e8.Construct,
26256
+ id: builtins.str,
26257
+ *,
26258
+ bucket: _IBucket_42e086fd,
26259
+ key: builtins.str,
26260
+ trust_store_name: typing.Optional[builtins.str] = None,
26261
+ version: typing.Optional[builtins.str] = None,
26262
+ ) -> None:
26263
+ """Type checking stubs"""
26264
+ pass
26265
+
26266
+ def _typecheckingstub__1e078d73452d520ce829e14315128763e3ef291dcb7c3e40df660393d5135f4b(
26267
+ scope: _constructs_77d1e7e8.Construct,
26268
+ id: builtins.str,
26269
+ trust_store_arn: builtins.str,
26270
+ ) -> None:
26271
+ """Type checking stubs"""
26272
+ pass
26273
+
26274
+ def _typecheckingstub__41f3f138d5b55c026366c540abffc84d65da6413c7cfa2972612fb796b1d3206(
26275
+ *,
26276
+ bucket: _IBucket_42e086fd,
26277
+ key: builtins.str,
26278
+ trust_store_name: typing.Optional[builtins.str] = None,
26279
+ version: typing.Optional[builtins.str] = None,
26280
+ ) -> None:
26281
+ """Type checking stubs"""
26282
+ pass
26283
+
26284
+ def _typecheckingstub__688628f84e2cff85506975764e889f60121aab1ab9420e53b24769400ab3c7d7(
26285
+ scope: _constructs_77d1e7e8.Construct,
26286
+ id: builtins.str,
26287
+ *,
26288
+ revocation_contents: typing.Sequence[typing.Union[RevocationContent, typing.Dict[builtins.str, typing.Any]]],
26289
+ trust_store: ITrustStore,
26290
+ ) -> None:
26291
+ """Type checking stubs"""
26292
+ pass
26293
+
26294
+ def _typecheckingstub__de0bf3e884d9bbf4a0d3582e17910f3a46c89450790ad669a820be588c4bb749(
26295
+ *,
26296
+ revocation_contents: typing.Sequence[typing.Union[RevocationContent, typing.Dict[builtins.str, typing.Any]]],
26297
+ trust_store: ITrustStore,
26298
+ ) -> None:
26299
+ """Type checking stubs"""
26300
+ pass
26301
+
25349
26302
  def _typecheckingstub__ab2badf5ff29dbd830b4a4cd8498b7662a6a7143720d1c6fe2cabe26ccd49179(
25350
26303
  *,
25351
26304
  target_group: IApplicationTargetGroup,
@@ -25409,6 +26362,7 @@ def _typecheckingstub__e75c9b01f3107ce8d6eaba24046fe2615baadcbc80764f82433f160f3
25409
26362
  certificates: typing.Optional[typing.Sequence[IListenerCertificate]] = None,
25410
26363
  default_action: typing.Optional[ListenerAction] = None,
25411
26364
  default_target_groups: typing.Optional[typing.Sequence[IApplicationTargetGroup]] = None,
26365
+ mutual_authentication: typing.Optional[typing.Union[MutualAuthentication, typing.Dict[builtins.str, typing.Any]]] = None,
25412
26366
  open: typing.Optional[builtins.bool] = None,
25413
26367
  port: typing.Optional[jsii.Number] = None,
25414
26368
  protocol: typing.Optional[ApplicationProtocol] = None,
@@ -25552,6 +26506,7 @@ def _typecheckingstub__ec66b1151d33baa64d152f0d9139b5eb90ae2a933206ec714d9231577
25552
26506
  certificates: typing.Optional[typing.Sequence[IListenerCertificate]] = None,
25553
26507
  default_action: typing.Optional[ListenerAction] = None,
25554
26508
  default_target_groups: typing.Optional[typing.Sequence[IApplicationTargetGroup]] = None,
26509
+ mutual_authentication: typing.Optional[typing.Union[MutualAuthentication, typing.Dict[builtins.str, typing.Any]]] = None,
25555
26510
  open: typing.Optional[builtins.bool] = None,
25556
26511
  port: typing.Optional[jsii.Number] = None,
25557
26512
  protocol: typing.Optional[ApplicationProtocol] = None,
@@ -25714,6 +26669,7 @@ def _typecheckingstub__456b854cc2e0f11115cdc6d97d27e54e4d0b70c3bbcac268b8302e61b
25714
26669
  certificates: typing.Optional[typing.Sequence[IListenerCertificate]] = None,
25715
26670
  default_action: typing.Optional[ListenerAction] = None,
25716
26671
  default_target_groups: typing.Optional[typing.Sequence[IApplicationTargetGroup]] = None,
26672
+ mutual_authentication: typing.Optional[typing.Union[MutualAuthentication, typing.Dict[builtins.str, typing.Any]]] = None,
25717
26673
  open: typing.Optional[builtins.bool] = None,
25718
26674
  port: typing.Optional[jsii.Number] = None,
25719
26675
  protocol: typing.Optional[ApplicationProtocol] = None,
@@ -25859,6 +26815,7 @@ def _typecheckingstub__4f4b497be05dc5ab6f5a49395304fa7ec41bb629f32d3da388c2e70e1
25859
26815
  certificates: typing.Optional[typing.Sequence[IListenerCertificate]] = None,
25860
26816
  default_action: typing.Optional[ListenerAction] = None,
25861
26817
  default_target_groups: typing.Optional[typing.Sequence[IApplicationTargetGroup]] = None,
26818
+ mutual_authentication: typing.Optional[typing.Union[MutualAuthentication, typing.Dict[builtins.str, typing.Any]]] = None,
25862
26819
  open: typing.Optional[builtins.bool] = None,
25863
26820
  port: typing.Optional[jsii.Number] = None,
25864
26821
  protocol: typing.Optional[ApplicationProtocol] = None,
@@ -25880,6 +26837,13 @@ def _typecheckingstub__14e58136aa424614ad3deed70de619716d36a85a2336e0d16a5d5e3ed
25880
26837
  """Type checking stubs"""
25881
26838
  pass
25882
26839
 
26840
+ def _typecheckingstub__83af77b39f54e0ddb4dfef1f0572e098aa10c9c98e90f7b63b99c010ab474953(
26841
+ bucket: _IBucket_42e086fd,
26842
+ prefix: typing.Optional[builtins.str] = None,
26843
+ ) -> None:
26844
+ """Type checking stubs"""
26845
+ pass
26846
+
25883
26847
  def _typecheckingstub__062c936e075fbff0552978e79ddc8d8cb01378ba1804b2546d14bd0383a824a0(
25884
26848
  metric_name: builtins.str,
25885
26849
  *,