aws-cdk-lib 2.133.0__py3-none-any.whl → 2.135.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. aws_cdk/__init__.py +14 -1
  2. aws_cdk/_jsii/__init__.py +4 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.133.0.jsii.tgz → aws-cdk-lib@2.135.0.jsii.tgz} +0 -0
  4. aws_cdk/alexa_ask/__init__.py +3 -0
  5. aws_cdk/assertions/__init__.py +3 -0
  6. aws_cdk/aws_accessanalyzer/__init__.py +3 -0
  7. aws_cdk/aws_acmpca/__init__.py +3 -0
  8. aws_cdk/aws_amazonmq/__init__.py +3 -0
  9. aws_cdk/aws_amplify/__init__.py +3 -0
  10. aws_cdk/aws_amplifyuibuilder/__init__.py +3 -0
  11. aws_cdk/aws_apigateway/__init__.py +3 -0
  12. aws_cdk/aws_apigatewayv2/__init__.py +108 -3
  13. aws_cdk/aws_apigatewayv2_authorizers/__init__.py +3 -0
  14. aws_cdk/aws_apigatewayv2_integrations/__init__.py +158 -3
  15. aws_cdk/aws_appconfig/__init__.py +189 -8
  16. aws_cdk/aws_appflow/__init__.py +3 -0
  17. aws_cdk/aws_appintegrations/__init__.py +560 -0
  18. aws_cdk/aws_applicationautoscaling/__init__.py +4 -1
  19. aws_cdk/aws_applicationinsights/__init__.py +3 -0
  20. aws_cdk/aws_appmesh/__init__.py +4 -1
  21. aws_cdk/aws_apprunner/__init__.py +3 -0
  22. aws_cdk/aws_appstream/__init__.py +3 -0
  23. aws_cdk/aws_appsync/__init__.py +74 -0
  24. aws_cdk/aws_aps/__init__.py +805 -1
  25. aws_cdk/aws_arczonalshift/__init__.py +3 -0
  26. aws_cdk/aws_athena/__init__.py +3 -0
  27. aws_cdk/aws_auditmanager/__init__.py +3 -0
  28. aws_cdk/aws_autoscaling/__init__.py +9 -4
  29. aws_cdk/aws_autoscaling_common/__init__.py +3 -0
  30. aws_cdk/aws_autoscaling_hooktargets/__init__.py +3 -0
  31. aws_cdk/aws_autoscalingplans/__init__.py +3 -0
  32. aws_cdk/aws_b2bi/__init__.py +3 -0
  33. aws_cdk/aws_backup/__init__.py +26 -12
  34. aws_cdk/aws_backupgateway/__init__.py +3 -0
  35. aws_cdk/aws_batch/__init__.py +426 -73
  36. aws_cdk/aws_bedrock/__init__.py +200 -2
  37. aws_cdk/aws_billingconductor/__init__.py +3 -0
  38. aws_cdk/aws_budgets/__init__.py +3 -0
  39. aws_cdk/aws_cassandra/__init__.py +3 -0
  40. aws_cdk/aws_ce/__init__.py +3 -0
  41. aws_cdk/aws_certificatemanager/__init__.py +3 -0
  42. aws_cdk/aws_chatbot/__init__.py +3 -0
  43. aws_cdk/aws_cleanrooms/__init__.py +183 -6
  44. aws_cdk/aws_cloud9/__init__.py +3 -0
  45. aws_cdk/aws_cloudformation/__init__.py +4 -1
  46. aws_cdk/aws_cloudfront/__init__.py +5 -2
  47. aws_cdk/aws_cloudfront/experimental/__init__.py +3 -0
  48. aws_cdk/aws_cloudfront_origins/__init__.py +3 -0
  49. aws_cdk/aws_cloudtrail/__init__.py +47 -14
  50. aws_cdk/aws_cloudwatch/__init__.py +21 -0
  51. aws_cdk/aws_cloudwatch_actions/__init__.py +3 -0
  52. aws_cdk/aws_codeartifact/__init__.py +815 -2
  53. aws_cdk/aws_codebuild/__init__.py +38 -16
  54. aws_cdk/aws_codecommit/__init__.py +3 -0
  55. aws_cdk/aws_codedeploy/__init__.py +3 -0
  56. aws_cdk/aws_codeguruprofiler/__init__.py +3 -0
  57. aws_cdk/aws_codegurureviewer/__init__.py +3 -0
  58. aws_cdk/aws_codepipeline/__init__.py +27 -8
  59. aws_cdk/aws_codepipeline_actions/__init__.py +3 -0
  60. aws_cdk/aws_codestar/__init__.py +3 -0
  61. aws_cdk/aws_codestarconnections/__init__.py +91 -2
  62. aws_cdk/aws_codestarnotifications/__init__.py +3 -0
  63. aws_cdk/aws_cognito/__init__.py +44 -40
  64. aws_cdk/aws_comprehend/__init__.py +3 -0
  65. aws_cdk/aws_config/__init__.py +3 -0
  66. aws_cdk/aws_connect/__init__.py +277 -0
  67. aws_cdk/aws_connectcampaigns/__init__.py +3 -0
  68. aws_cdk/aws_controltower/__init__.py +3 -0
  69. aws_cdk/aws_cur/__init__.py +3 -0
  70. aws_cdk/aws_customerprofiles/__init__.py +3 -0
  71. aws_cdk/aws_databrew/__init__.py +3 -0
  72. aws_cdk/aws_datapipeline/__init__.py +3 -0
  73. aws_cdk/aws_datasync/__init__.py +396 -13
  74. aws_cdk/aws_datazone/__init__.py +3 -0
  75. aws_cdk/aws_dax/__init__.py +3 -0
  76. aws_cdk/aws_detective/__init__.py +3 -0
  77. aws_cdk/aws_devicefarm/__init__.py +3 -0
  78. aws_cdk/aws_devopsguru/__init__.py +3 -0
  79. aws_cdk/aws_directoryservice/__init__.py +3 -0
  80. aws_cdk/aws_dlm/__init__.py +5 -2
  81. aws_cdk/aws_dms/__init__.py +30 -9
  82. aws_cdk/aws_docdb/__init__.py +3 -0
  83. aws_cdk/aws_docdbelastic/__init__.py +128 -0
  84. aws_cdk/aws_dynamodb/__init__.py +419 -5
  85. aws_cdk/aws_ec2/__init__.py +3530 -504
  86. aws_cdk/aws_ecr/__init__.py +3 -0
  87. aws_cdk/aws_ecr_assets/__init__.py +3 -0
  88. aws_cdk/aws_ecs/__init__.py +12 -4
  89. aws_cdk/aws_ecs_patterns/__init__.py +3 -0
  90. aws_cdk/aws_efs/__init__.py +3 -0
  91. aws_cdk/aws_eks/__init__.py +69 -47
  92. aws_cdk/aws_elasticache/__init__.py +3 -0
  93. aws_cdk/aws_elasticbeanstalk/__init__.py +3 -0
  94. aws_cdk/aws_elasticloadbalancing/__init__.py +3 -0
  95. aws_cdk/aws_elasticloadbalancingv2/__init__.py +431 -72
  96. aws_cdk/aws_elasticloadbalancingv2_actions/__init__.py +3 -0
  97. aws_cdk/aws_elasticloadbalancingv2_targets/__init__.py +3 -0
  98. aws_cdk/aws_elasticsearch/__init__.py +3 -0
  99. aws_cdk/aws_emr/__init__.py +3 -0
  100. aws_cdk/aws_emrcontainers/__init__.py +3 -0
  101. aws_cdk/aws_emrserverless/__init__.py +3 -0
  102. aws_cdk/aws_entityresolution/__init__.py +96 -66
  103. aws_cdk/aws_events/__init__.py +3 -0
  104. aws_cdk/aws_events_targets/__init__.py +3 -0
  105. aws_cdk/aws_eventschemas/__init__.py +3 -0
  106. aws_cdk/aws_evidently/__init__.py +3 -0
  107. aws_cdk/aws_finspace/__init__.py +3 -0
  108. aws_cdk/aws_fis/__init__.py +3 -0
  109. aws_cdk/aws_fms/__init__.py +3 -0
  110. aws_cdk/aws_forecast/__init__.py +3 -0
  111. aws_cdk/aws_frauddetector/__init__.py +3 -0
  112. aws_cdk/aws_fsx/__init__.py +3 -0
  113. aws_cdk/aws_gamelift/__init__.py +3 -0
  114. aws_cdk/aws_globalaccelerator/__init__.py +5 -2
  115. aws_cdk/aws_globalaccelerator_endpoints/__init__.py +3 -0
  116. aws_cdk/aws_glue/__init__.py +147 -3
  117. aws_cdk/aws_grafana/__init__.py +3 -0
  118. aws_cdk/aws_greengrass/__init__.py +3 -0
  119. aws_cdk/aws_greengrassv2/__init__.py +3 -0
  120. aws_cdk/aws_groundstation/__init__.py +3 -0
  121. aws_cdk/aws_guardduty/__init__.py +3 -0
  122. aws_cdk/aws_healthimaging/__init__.py +3 -0
  123. aws_cdk/aws_healthlake/__init__.py +3 -0
  124. aws_cdk/aws_iam/__init__.py +12 -10
  125. aws_cdk/aws_identitystore/__init__.py +3 -0
  126. aws_cdk/aws_imagebuilder/__init__.py +3 -0
  127. aws_cdk/aws_inspector/__init__.py +3 -0
  128. aws_cdk/aws_inspectorv2/__init__.py +3 -0
  129. aws_cdk/aws_internetmonitor/__init__.py +88 -0
  130. aws_cdk/aws_iot/__init__.py +3 -0
  131. aws_cdk/aws_iot1click/__init__.py +3 -0
  132. aws_cdk/aws_iotanalytics/__init__.py +3 -0
  133. aws_cdk/aws_iotcoredeviceadvisor/__init__.py +3 -0
  134. aws_cdk/aws_iotevents/__init__.py +3 -0
  135. aws_cdk/aws_iotfleethub/__init__.py +3 -0
  136. aws_cdk/aws_iotfleetwise/__init__.py +3 -0
  137. aws_cdk/aws_iotsitewise/__init__.py +138 -55
  138. aws_cdk/aws_iotthingsgraph/__init__.py +3 -0
  139. aws_cdk/aws_iottwinmaker/__init__.py +3 -0
  140. aws_cdk/aws_iotwireless/__init__.py +3 -0
  141. aws_cdk/aws_ivs/__init__.py +3 -0
  142. aws_cdk/aws_ivschat/__init__.py +3 -0
  143. aws_cdk/aws_kafkaconnect/__init__.py +1239 -161
  144. aws_cdk/aws_kendra/__init__.py +56 -39
  145. aws_cdk/aws_kendraranking/__init__.py +3 -0
  146. aws_cdk/aws_kinesis/__init__.py +3 -0
  147. aws_cdk/aws_kinesisanalytics/__init__.py +40 -37
  148. aws_cdk/aws_kinesisanalyticsv2/__init__.py +40 -37
  149. aws_cdk/aws_kinesisfirehose/__init__.py +14 -3
  150. aws_cdk/aws_kinesisvideo/__init__.py +3 -0
  151. aws_cdk/aws_kms/__init__.py +3 -0
  152. aws_cdk/aws_lakeformation/__init__.py +3 -0
  153. aws_cdk/aws_lambda/__init__.py +9 -0
  154. aws_cdk/aws_lambda_destinations/__init__.py +3 -0
  155. aws_cdk/aws_lambda_event_sources/__init__.py +45 -18
  156. aws_cdk/aws_lambda_nodejs/__init__.py +3 -0
  157. aws_cdk/aws_lex/__init__.py +3 -0
  158. aws_cdk/aws_licensemanager/__init__.py +3 -0
  159. aws_cdk/aws_lightsail/__init__.py +3 -0
  160. aws_cdk/aws_location/__init__.py +3 -0
  161. aws_cdk/aws_logs/__init__.py +3 -0
  162. aws_cdk/aws_logs_destinations/__init__.py +3 -0
  163. aws_cdk/aws_lookoutequipment/__init__.py +3 -0
  164. aws_cdk/aws_lookoutmetrics/__init__.py +3 -0
  165. aws_cdk/aws_lookoutvision/__init__.py +3 -0
  166. aws_cdk/aws_m2/__init__.py +3 -0
  167. aws_cdk/aws_macie/__init__.py +3 -0
  168. aws_cdk/aws_managedblockchain/__init__.py +5 -3
  169. aws_cdk/aws_mediaconnect/__init__.py +3 -0
  170. aws_cdk/aws_mediaconvert/__init__.py +3 -0
  171. aws_cdk/aws_medialive/__init__.py +3 -0
  172. aws_cdk/aws_mediapackage/__init__.py +3 -0
  173. aws_cdk/aws_mediapackagev2/__init__.py +3 -0
  174. aws_cdk/aws_mediastore/__init__.py +3 -0
  175. aws_cdk/aws_mediatailor/__init__.py +3 -0
  176. aws_cdk/aws_memorydb/__init__.py +3 -0
  177. aws_cdk/aws_msk/__init__.py +91 -0
  178. aws_cdk/aws_mwaa/__init__.py +3 -0
  179. aws_cdk/aws_neptune/__init__.py +3 -0
  180. aws_cdk/aws_neptunegraph/__init__.py +3 -0
  181. aws_cdk/aws_networkfirewall/__init__.py +3 -0
  182. aws_cdk/aws_networkmanager/__init__.py +3 -0
  183. aws_cdk/aws_nimblestudio/__init__.py +3 -0
  184. aws_cdk/aws_oam/__init__.py +6 -3
  185. aws_cdk/aws_omics/__init__.py +3 -0
  186. aws_cdk/aws_opensearchserverless/__init__.py +3 -0
  187. aws_cdk/aws_opensearchservice/__init__.py +26 -18
  188. aws_cdk/aws_opsworks/__init__.py +3 -0
  189. aws_cdk/aws_opsworkscm/__init__.py +3 -0
  190. aws_cdk/aws_organizations/__init__.py +3 -0
  191. aws_cdk/aws_osis/__init__.py +3 -0
  192. aws_cdk/aws_panorama/__init__.py +3 -0
  193. aws_cdk/aws_pcaconnectorad/__init__.py +3 -0
  194. aws_cdk/aws_personalize/__init__.py +3 -0
  195. aws_cdk/aws_pinpoint/__init__.py +45 -0
  196. aws_cdk/aws_pinpointemail/__init__.py +3 -0
  197. aws_cdk/aws_pipes/__init__.py +3 -0
  198. aws_cdk/aws_proton/__init__.py +3 -0
  199. aws_cdk/aws_qldb/__init__.py +3 -0
  200. aws_cdk/aws_quicksight/__init__.py +3 -0
  201. aws_cdk/aws_ram/__init__.py +3 -0
  202. aws_cdk/aws_rds/__init__.py +150 -27
  203. aws_cdk/aws_redshift/__init__.py +3 -0
  204. aws_cdk/aws_redshiftserverless/__init__.py +3 -0
  205. aws_cdk/aws_refactorspaces/__init__.py +3 -0
  206. aws_cdk/aws_rekognition/__init__.py +3 -0
  207. aws_cdk/aws_resiliencehub/__init__.py +3 -0
  208. aws_cdk/aws_resourceexplorer2/__init__.py +3 -0
  209. aws_cdk/aws_resourcegroups/__init__.py +3 -0
  210. aws_cdk/aws_robomaker/__init__.py +3 -0
  211. aws_cdk/aws_rolesanywhere/__init__.py +3 -0
  212. aws_cdk/aws_route53/__init__.py +52 -0
  213. aws_cdk/aws_route53_patterns/__init__.py +3 -0
  214. aws_cdk/aws_route53_targets/__init__.py +3 -0
  215. aws_cdk/aws_route53recoverycontrol/__init__.py +3 -0
  216. aws_cdk/aws_route53recoveryreadiness/__init__.py +3 -0
  217. aws_cdk/aws_route53resolver/__init__.py +3 -0
  218. aws_cdk/aws_rum/__init__.py +3 -0
  219. aws_cdk/aws_s3/__init__.py +3 -0
  220. aws_cdk/aws_s3_assets/__init__.py +3 -0
  221. aws_cdk/aws_s3_deployment/__init__.py +3 -0
  222. aws_cdk/aws_s3_notifications/__init__.py +3 -0
  223. aws_cdk/aws_s3express/__init__.py +3 -0
  224. aws_cdk/aws_s3objectlambda/__init__.py +3 -0
  225. aws_cdk/aws_s3outposts/__init__.py +3 -0
  226. aws_cdk/aws_sagemaker/__init__.py +5 -2
  227. aws_cdk/aws_sam/__init__.py +3 -0
  228. aws_cdk/aws_scheduler/__init__.py +3 -0
  229. aws_cdk/aws_sdb/__init__.py +3 -0
  230. aws_cdk/aws_secretsmanager/__init__.py +3 -0
  231. aws_cdk/aws_securityhub/__init__.py +59 -14
  232. aws_cdk/aws_securitylake/__init__.py +859 -0
  233. aws_cdk/aws_servicecatalog/__init__.py +3 -0
  234. aws_cdk/aws_servicecatalogappregistry/__init__.py +3 -0
  235. aws_cdk/aws_servicediscovery/__init__.py +3 -0
  236. aws_cdk/aws_ses/__init__.py +3 -0
  237. aws_cdk/aws_ses_actions/__init__.py +3 -0
  238. aws_cdk/aws_shield/__init__.py +3 -0
  239. aws_cdk/aws_signer/__init__.py +3 -0
  240. aws_cdk/aws_simspaceweaver/__init__.py +3 -0
  241. aws_cdk/aws_sns/__init__.py +48 -13
  242. aws_cdk/aws_sns_subscriptions/__init__.py +3 -0
  243. aws_cdk/aws_sqs/__init__.py +3 -0
  244. aws_cdk/aws_ssm/__init__.py +6 -3
  245. aws_cdk/aws_ssmcontacts/__init__.py +3 -0
  246. aws_cdk/aws_ssmincidents/__init__.py +3 -0
  247. aws_cdk/aws_sso/__init__.py +3 -0
  248. aws_cdk/aws_stepfunctions/__init__.py +3 -0
  249. aws_cdk/aws_stepfunctions_tasks/__init__.py +26 -0
  250. aws_cdk/aws_supportapp/__init__.py +3 -0
  251. aws_cdk/aws_synthetics/__init__.py +77 -14
  252. aws_cdk/aws_systemsmanagersap/__init__.py +3 -0
  253. aws_cdk/aws_timestream/__init__.py +3 -0
  254. aws_cdk/aws_transfer/__init__.py +7 -3
  255. aws_cdk/aws_verifiedpermissions/__init__.py +3 -0
  256. aws_cdk/aws_voiceid/__init__.py +3 -0
  257. aws_cdk/aws_vpclattice/__init__.py +3 -0
  258. aws_cdk/aws_waf/__init__.py +3 -0
  259. aws_cdk/aws_wafregional/__init__.py +3 -0
  260. aws_cdk/aws_wafv2/__init__.py +99 -46
  261. aws_cdk/aws_wisdom/__init__.py +3 -0
  262. aws_cdk/aws_workspaces/__init__.py +3 -0
  263. aws_cdk/aws_workspacesthinclient/__init__.py +3 -0
  264. aws_cdk/aws_workspacesweb/__init__.py +3 -0
  265. aws_cdk/aws_xray/__init__.py +3 -0
  266. aws_cdk/cloud_assembly_schema/__init__.py +3 -0
  267. aws_cdk/cloudformation_include/__init__.py +3 -0
  268. aws_cdk/custom_resources/__init__.py +7 -4
  269. aws_cdk/cx_api/__init__.py +20 -0
  270. aws_cdk/lambda_layer_awscli/__init__.py +3 -0
  271. aws_cdk/lambda_layer_kubectl/__init__.py +3 -0
  272. aws_cdk/lambda_layer_node_proxy_agent/__init__.py +3 -0
  273. aws_cdk/pipelines/__init__.py +3 -0
  274. aws_cdk/region_info/__init__.py +3 -0
  275. aws_cdk/triggers/__init__.py +3 -0
  276. {aws_cdk_lib-2.133.0.dist-info → aws_cdk_lib-2.135.0.dist-info}/METADATA +2 -2
  277. aws_cdk_lib-2.135.0.dist-info/RECORD +282 -0
  278. aws_cdk_lib-2.133.0.dist-info/RECORD +0 -281
  279. {aws_cdk_lib-2.133.0.dist-info → aws_cdk_lib-2.135.0.dist-info}/LICENSE +0 -0
  280. {aws_cdk_lib-2.133.0.dist-info → aws_cdk_lib-2.135.0.dist-info}/NOTICE +0 -0
  281. {aws_cdk_lib-2.133.0.dist-info → aws_cdk_lib-2.135.0.dist-info}/WHEEL +0 -0
  282. {aws_cdk_lib-2.133.0.dist-info → aws_cdk_lib-2.135.0.dist-info}/top_level.txt +0 -0
@@ -198,7 +198,7 @@ If you do not provide any options for this method, it redirects HTTP port 80 to
198
198
  By default all ingress traffic will be allowed on the source port. If you want to be more selective with your
199
199
  ingress rules then set `open: false` and use the listener's `connections` object to selectively grant access to the listener.
200
200
 
201
- ### Load Balancer attributes
201
+ ### Application Load Balancer attributes
202
202
 
203
203
  You can modify attributes of Application Load Balancers:
204
204
 
@@ -225,12 +225,38 @@ lb = elbv2.ApplicationLoadBalancer(self, "LB",
225
225
  desync_mitigation_mode=elbv2.DesyncMitigationMode.DEFENSIVE,
226
226
 
227
227
  # The type of IP addresses to use.
228
- ip_address_type=elbv2.IpAddressType.IPV4
228
+ ip_address_type=elbv2.IpAddressType.IPV4,
229
+
230
+ # The duration of client keep-alive connections
231
+ client_keep_alive=Duration.seconds(500),
232
+
233
+ # Whether cross-zone load balancing is enabled.
234
+ cross_zone_enabled=True,
235
+
236
+ # Whether the load balancer blocks traffic through the Internet Gateway (IGW).
237
+ deny_all_igw_traffic=False
229
238
  )
230
239
  ```
231
240
 
232
241
  For more information, see [Load balancer attributes](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#load-balancer-attributes)
233
242
 
243
+ ### Setting up Access Log Bucket on Application Load Balancer
244
+
245
+ The only server-side encryption option that's supported is Amazon S3-managed keys (SSE-S3). For more information
246
+ Documentation: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/enable-access-logging.html
247
+
248
+ ```python
249
+ # vpc: ec2.Vpc
250
+
251
+
252
+ bucket = s3.Bucket(self, "ALBAccessLogsBucket",
253
+ encryption=s3.BucketEncryption.S3_MANAGED
254
+ )
255
+
256
+ lb = elbv2.ApplicationLoadBalancer(self, "LB", vpc=vpc)
257
+ lb.log_access_logs(bucket)
258
+ ```
259
+
234
260
  ## Defining a Network Load Balancer
235
261
 
236
262
  Network Load Balancers are defined in a similar way to Application Load
@@ -264,6 +290,22 @@ listener.add_targets("AppFleet",
264
290
  )
265
291
  ```
266
292
 
293
+ ### Enforce security group inbound rules on PrivateLink traffic for a Network Load Balancer
294
+
295
+ You can indicate whether to evaluate inbound security group rules for traffic
296
+ sent to a Network Load Balancer through AWS PrivateLink.
297
+ The evaluation is enabled by default.
298
+
299
+ ```python
300
+ # vpc: ec2.Vpc
301
+
302
+
303
+ nlb = elbv2.NetworkLoadBalancer(self, "LB",
304
+ vpc=vpc,
305
+ enforce_security_group_inbound_rules_on_private_link_traffic=True
306
+ )
307
+ ```
308
+
267
309
  One thing to keep in mind is that network load balancers do not have security
268
310
  groups, and no automatic security group configuration is done for you. You will
269
311
  have to configure the security groups of the target yourself to allow traffic by
@@ -290,6 +332,30 @@ lb = elbv2.NetworkLoadBalancer(self, "LB",
290
332
 
291
333
  You cannot add UDP or TCP_UDP listeners to a dualstack Network Load Balancer.
292
334
 
335
+ ### Network Load Balancer attributes
336
+
337
+ You can modify attributes of Network Load Balancers:
338
+
339
+ ```python
340
+ # vpc: ec2.Vpc
341
+
342
+
343
+ lb = elbv2.NetworkLoadBalancer(self, "LB",
344
+ vpc=vpc,
345
+ # Whether deletion protection is enabled.
346
+ deletion_protection=True,
347
+
348
+ # Whether cross-zone load balancing is enabled.
349
+ cross_zone_enabled=True,
350
+
351
+ # Whether the load balancer blocks traffic through the Internet Gateway (IGW).
352
+ deny_all_igw_traffic=False,
353
+
354
+ # Indicates how traffic is distributed among the load balancer Availability Zones.
355
+ client_routing_policy=elbv2.ClientRoutingPolicy.AVAILABILITY_ZONE_AFFINITY
356
+ )
357
+ ```
358
+
293
359
  ## Targets and Target Groups
294
360
 
295
361
  Application and Network Load Balancers organize load balancing targets in Target
@@ -345,6 +411,27 @@ tg2 = elbv2.ApplicationTargetGroup(self, "TG2",
345
411
  )
346
412
  ```
347
413
 
414
+ ### Slow start mode for your Application Load Balancer
415
+
416
+ By default, a target starts to receive its full share of requests as soon as it is registered with a target group and passes an initial health check. Using slow start mode gives targets time to warm up before the load balancer sends them a full share of requests.
417
+
418
+ After you enable slow start for a target group, its targets enter slow start mode when they are considered healthy by the target group. A target in slow start mode exits slow start mode when the configured slow start duration period elapses or the target becomes unhealthy. The load balancer linearly increases the number of requests that it can send to a target in slow start mode. After a healthy target exits slow start mode, the load balancer can send it a full share of requests.
419
+
420
+ The allowed range is 30-900 seconds (15 minutes). The default is 0 seconds (disabled).
421
+
422
+ ```python
423
+ # vpc: ec2.Vpc
424
+
425
+
426
+ # Target group with slow start mode enabled
427
+ tg = elbv2.ApplicationTargetGroup(self, "TG",
428
+ target_type=elbv2.TargetType.INSTANCE,
429
+ slow_start=Duration.seconds(60),
430
+ port=80,
431
+ vpc=vpc
432
+ )
433
+ ```
434
+
348
435
  For more information see: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/sticky-sessions.html#application-based-stickiness
349
436
 
350
437
  ### Setting the target group protocol version
@@ -684,6 +771,9 @@ target_group = elbv2.ApplicationTargetGroup.from_target_group_attributes(self, "
684
771
  target_group_metrics = target_group.metrics
685
772
  ```
686
773
  '''
774
+ from pkgutil import extend_path
775
+ __path__ = extend_path(__path__, __name__)
776
+
687
777
  import abc
688
778
  import builtins
689
779
  import datetime
@@ -2619,7 +2709,9 @@ class BaseLoadBalancerLookupOptions:
2619
2709
  jsii_struct_bases=[],
2620
2710
  name_mapping={
2621
2711
  "vpc": "vpc",
2712
+ "cross_zone_enabled": "crossZoneEnabled",
2622
2713
  "deletion_protection": "deletionProtection",
2714
+ "deny_all_igw_traffic": "denyAllIgwTraffic",
2623
2715
  "internet_facing": "internetFacing",
2624
2716
  "load_balancer_name": "loadBalancerName",
2625
2717
  "vpc_subnets": "vpcSubnets",
@@ -2630,7 +2722,9 @@ class BaseLoadBalancerProps:
2630
2722
  self,
2631
2723
  *,
2632
2724
  vpc: _IVpc_f30d5663,
2725
+ cross_zone_enabled: typing.Optional[builtins.bool] = None,
2633
2726
  deletion_protection: typing.Optional[builtins.bool] = None,
2727
+ deny_all_igw_traffic: typing.Optional[builtins.bool] = None,
2634
2728
  internet_facing: typing.Optional[builtins.bool] = None,
2635
2729
  load_balancer_name: typing.Optional[builtins.str] = None,
2636
2730
  vpc_subnets: typing.Optional[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -2638,7 +2732,9 @@ class BaseLoadBalancerProps:
2638
2732
  '''Shared properties of both Application and Network Load Balancers.
2639
2733
 
2640
2734
  :param vpc: The VPC network to place the load balancer in.
2735
+ :param cross_zone_enabled: Indicates whether cross-zone load balancing is enabled. Default: - false for Network Load Balancers and true for Application Load Balancers.
2641
2736
  :param deletion_protection: Indicates whether deletion protection is enabled. Default: false
2737
+ :param deny_all_igw_traffic: Indicates whether the load balancer blocks traffic through the Internet Gateway (IGW). Default: - false for internet-facing load balancers and true for internal load balancers
2642
2738
  :param internet_facing: Whether the load balancer has an internet-routable address. Default: false
2643
2739
  :param load_balancer_name: Name of the load balancer. Default: - Automatically generated name.
2644
2740
  :param vpc_subnets: Which subnets place the load balancer in. Default: - the Vpc default strategy.
@@ -2660,7 +2756,9 @@ class BaseLoadBalancerProps:
2660
2756
  vpc=vpc,
2661
2757
 
2662
2758
  # the properties below are optional
2759
+ cross_zone_enabled=False,
2663
2760
  deletion_protection=False,
2761
+ deny_all_igw_traffic=False,
2664
2762
  internet_facing=False,
2665
2763
  load_balancer_name="loadBalancerName",
2666
2764
  vpc_subnets=ec2.SubnetSelection(
@@ -2678,15 +2776,21 @@ class BaseLoadBalancerProps:
2678
2776
  if __debug__:
2679
2777
  type_hints = typing.get_type_hints(_typecheckingstub__36614588a5e075aa6e7ea0a4d41053b09874f2590b227cd5d62f3429901282f2)
2680
2778
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
2779
+ check_type(argname="argument cross_zone_enabled", value=cross_zone_enabled, expected_type=type_hints["cross_zone_enabled"])
2681
2780
  check_type(argname="argument deletion_protection", value=deletion_protection, expected_type=type_hints["deletion_protection"])
2781
+ check_type(argname="argument deny_all_igw_traffic", value=deny_all_igw_traffic, expected_type=type_hints["deny_all_igw_traffic"])
2682
2782
  check_type(argname="argument internet_facing", value=internet_facing, expected_type=type_hints["internet_facing"])
2683
2783
  check_type(argname="argument load_balancer_name", value=load_balancer_name, expected_type=type_hints["load_balancer_name"])
2684
2784
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
2685
2785
  self._values: typing.Dict[builtins.str, typing.Any] = {
2686
2786
  "vpc": vpc,
2687
2787
  }
2788
+ if cross_zone_enabled is not None:
2789
+ self._values["cross_zone_enabled"] = cross_zone_enabled
2688
2790
  if deletion_protection is not None:
2689
2791
  self._values["deletion_protection"] = deletion_protection
2792
+ if deny_all_igw_traffic is not None:
2793
+ self._values["deny_all_igw_traffic"] = deny_all_igw_traffic
2690
2794
  if internet_facing is not None:
2691
2795
  self._values["internet_facing"] = internet_facing
2692
2796
  if load_balancer_name is not None:
@@ -2701,6 +2805,15 @@ class BaseLoadBalancerProps:
2701
2805
  assert result is not None, "Required property 'vpc' is missing"
2702
2806
  return typing.cast(_IVpc_f30d5663, result)
2703
2807
 
2808
+ @builtins.property
2809
+ def cross_zone_enabled(self) -> typing.Optional[builtins.bool]:
2810
+ '''Indicates whether cross-zone load balancing is enabled.
2811
+
2812
+ :default: - false for Network Load Balancers and true for Application Load Balancers.
2813
+ '''
2814
+ result = self._values.get("cross_zone_enabled")
2815
+ return typing.cast(typing.Optional[builtins.bool], result)
2816
+
2704
2817
  @builtins.property
2705
2818
  def deletion_protection(self) -> typing.Optional[builtins.bool]:
2706
2819
  '''Indicates whether deletion protection is enabled.
@@ -2710,6 +2823,15 @@ class BaseLoadBalancerProps:
2710
2823
  result = self._values.get("deletion_protection")
2711
2824
  return typing.cast(typing.Optional[builtins.bool], result)
2712
2825
 
2826
+ @builtins.property
2827
+ def deny_all_igw_traffic(self) -> typing.Optional[builtins.bool]:
2828
+ '''Indicates whether the load balancer blocks traffic through the Internet Gateway (IGW).
2829
+
2830
+ :default: - false for internet-facing load balancers and true for internal load balancers
2831
+ '''
2832
+ result = self._values.get("deny_all_igw_traffic")
2833
+ return typing.cast(typing.Optional[builtins.bool], result)
2834
+
2713
2835
  @builtins.property
2714
2836
  def internet_facing(self) -> typing.Optional[builtins.bool]:
2715
2837
  '''Whether the load balancer has an internet-routable address.
@@ -7972,7 +8094,7 @@ class CfnLoadBalancer(
7972
8094
  ) -> None:
7973
8095
  '''Specifies an attribute for an Application Load Balancer, a Network Load Balancer, or a Gateway Load Balancer.
7974
8096
 
7975
- :param key: The name of the attribute. The following attributes are supported by all load balancers: - ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false`` . The default is ``false`` . - ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false`` . The default for Network Load Balancers and Gateway Load Balancers is ``false`` . The default for Application Load Balancers is ``true`` , and cannot be changed. The following attributes are supported by both Application Load Balancers and Network Load Balancers: - ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false`` . The default is ``false`` . - ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket. - ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs. - ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway. The following attributes are supported by only Application Load Balancers: - ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds. - ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false`` . The default is ``false`` . - ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket. - ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs. - ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor`` , ``defensive`` , and ``strictest`` . The default is ``defensive`` . - ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer ( ``true`` ) or routed to targets ( ``false`` ). The default is ``false`` . - ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false`` . The default is ``false`` . - ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers ( ``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite`` ), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false`` . The default is ``false`` . - ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false`` . The default is ``false`` . - ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append`` , ``preserve`` , and ``remove`` . The default is ``append`` . - If the value is ``append`` , the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets. - If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change. - If the value is ``remove`` , the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets. - ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false`` . The default is ``true`` . Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens. - ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false`` . The default is ``false`` . The following attributes are supported by only Network Load Balancers: - ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.
8097
+ :param key: The name of the attribute. The following attributes are supported by all load balancers: - ``deletion_protection.enabled`` - Indicates whether deletion protection is enabled. The value is ``true`` or ``false`` . The default is ``false`` . - ``load_balancing.cross_zone.enabled`` - Indicates whether cross-zone load balancing is enabled. The possible values are ``true`` and ``false`` . The default for Network Load Balancers and Gateway Load Balancers is ``false`` . The default for Application Load Balancers is ``true`` , and cannot be changed. The following attributes are supported by both Application Load Balancers and Network Load Balancers: - ``access_logs.s3.enabled`` - Indicates whether access logs are enabled. The value is ``true`` or ``false`` . The default is ``false`` . - ``access_logs.s3.bucket`` - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket. - ``access_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the access logs. - ``ipv6.deny_all_igw_traffic`` - Blocks internet gateway (IGW) access to the load balancer. It is set to ``false`` for internet-facing load balancers and ``true`` for internal load balancers, preventing unintended access to your internal load balancer through an internet gateway. The following attributes are supported by only Application Load Balancers: - ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds. - ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. - ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false`` . The default is ``false`` . - ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket. - ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs. - ``routing.http.desync_mitigation_mode`` - Determines how the load balancer handles requests that might pose a security risk to your application. The possible values are ``monitor`` , ``defensive`` , and ``strictest`` . The default is ``defensive`` . - ``routing.http.drop_invalid_header_fields.enabled`` - Indicates whether HTTP headers with invalid header fields are removed by the load balancer ( ``true`` ) or routed to targets ( ``false`` ). The default is ``false`` . - ``routing.http.preserve_host_header.enabled`` - Indicates whether the Application Load Balancer should preserve the ``Host`` header in the HTTP request and send it to the target without any change. The possible values are ``true`` and ``false`` . The default is ``false`` . - ``routing.http.x_amzn_tls_version_and_cipher_suite.enabled`` - Indicates whether the two headers ( ``x-amzn-tls-version`` and ``x-amzn-tls-cipher-suite`` ), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. The ``x-amzn-tls-version`` header has information about the TLS protocol version negotiated with the client, and the ``x-amzn-tls-cipher-suite`` header has information about the cipher suite negotiated with the client. Both headers are in OpenSSL format. The possible values for the attribute are ``true`` and ``false`` . The default is ``false`` . - ``routing.http.xff_client_port.enabled`` - Indicates whether the ``X-Forwarded-For`` header should preserve the source port that the client used to connect to the load balancer. The possible values are ``true`` and ``false`` . The default is ``false`` . - ``routing.http.xff_header_processing.mode`` - Enables you to modify, preserve, or remove the ``X-Forwarded-For`` header in the HTTP request before the Application Load Balancer sends the request to the target. The possible values are ``append`` , ``preserve`` , and ``remove`` . The default is ``append`` . - If the value is ``append`` , the Application Load Balancer adds the client IP address (of the last hop) to the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets. - If the value is ``preserve`` the Application Load Balancer preserves the ``X-Forwarded-For`` header in the HTTP request, and sends it to targets without any change. - If the value is ``remove`` , the Application Load Balancer removes the ``X-Forwarded-For`` header in the HTTP request before it sends it to targets. - ``routing.http2.enabled`` - Indicates whether HTTP/2 is enabled. The possible values are ``true`` and ``false`` . The default is ``true`` . Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens. - ``waf.fail_open.enabled`` - Indicates whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. The possible values are ``true`` and ``false`` . The default is ``false`` . The following attributes are supported by only Network Load Balancers: - ``dns_record.client_routing_policy`` - Indicates how traffic is distributed among the load balancer Availability Zones. The possible values are ``availability_zone_affinity`` with 100 percent zonal affinity, ``partial_availability_zone_affinity`` with 85 percent zonal affinity, and ``any_availability_zone`` with 0 percent zonal affinity.
7976
8098
  :param value: The value of the attribute.
7977
8099
 
7978
8100
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-loadbalancerattribute.html
@@ -8018,6 +8140,7 @@ class CfnLoadBalancer(
8018
8140
  The following attributes are supported by only Application Load Balancers:
8019
8141
 
8020
8142
  - ``idle_timeout.timeout_seconds`` - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds.
8143
+ - ``client_keep_alive.seconds`` - The client keep alive value, in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.
8021
8144
  - ``connection_logs.s3.enabled`` - Indicates whether connection logs are enabled. The value is ``true`` or ``false`` . The default is ``false`` .
8022
8145
  - ``connection_logs.s3.bucket`` - The name of the S3 bucket for the connection logs. This attribute is required if connection logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket.
8023
8146
  - ``connection_logs.s3.prefix`` - The prefix for the location in the S3 bucket for the connection logs.
@@ -10398,6 +10521,42 @@ class CfnTrustStoreRevocationProps:
10398
10521
  )
10399
10522
 
10400
10523
 
10524
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.ClientRoutingPolicy")
10525
+ class ClientRoutingPolicy(enum.Enum):
10526
+ '''Indicates how traffic is distributed among the load balancer Availability Zones.
10527
+
10528
+ :see: https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#zonal-dns-affinity
10529
+ :exampleMetadata: infused
10530
+
10531
+ Example::
10532
+
10533
+ # vpc: ec2.Vpc
10534
+
10535
+
10536
+ lb = elbv2.NetworkLoadBalancer(self, "LB",
10537
+ vpc=vpc,
10538
+ # Whether deletion protection is enabled.
10539
+ deletion_protection=True,
10540
+
10541
+ # Whether cross-zone load balancing is enabled.
10542
+ cross_zone_enabled=True,
10543
+
10544
+ # Whether the load balancer blocks traffic through the Internet Gateway (IGW).
10545
+ deny_all_igw_traffic=False,
10546
+
10547
+ # Indicates how traffic is distributed among the load balancer Availability Zones.
10548
+ client_routing_policy=elbv2.ClientRoutingPolicy.AVAILABILITY_ZONE_AFFINITY
10549
+ )
10550
+ '''
10551
+
10552
+ AVAILABILITY_ZONE_AFFINITY = "AVAILABILITY_ZONE_AFFINITY"
10553
+ '''100 percent zonal affinity.'''
10554
+ PARTIAL_AVAILABILITY_ZONE_AFFINITY = "PARTIAL_AVAILABILITY_ZONE_AFFINITY"
10555
+ '''85 percent zonal affinity.'''
10556
+ ANY_AVAILABILITY_ZONE = "ANY_AVAILABILITY_ZONE"
10557
+ '''No zonal affinity.'''
10558
+
10559
+
10401
10560
  @jsii.enum(jsii_type="aws-cdk-lib.aws_elasticloadbalancingv2.DesyncMitigationMode")
10402
10561
  class DesyncMitigationMode(enum.Enum):
10403
10562
  '''How the load balancer handles requests that might pose a security risk to your application.
@@ -10429,7 +10588,16 @@ class DesyncMitigationMode(enum.Enum):
10429
10588
  desync_mitigation_mode=elbv2.DesyncMitigationMode.DEFENSIVE,
10430
10589
 
10431
10590
  # The type of IP addresses to use.
10432
- ip_address_type=elbv2.IpAddressType.IPV4
10591
+ ip_address_type=elbv2.IpAddressType.IPV4,
10592
+
10593
+ # The duration of client keep-alive connections
10594
+ client_keep_alive=Duration.seconds(500),
10595
+
10596
+ # Whether cross-zone load balancing is enabled.
10597
+ cross_zone_enabled=True,
10598
+
10599
+ # Whether the load balancer blocks traffic through the Internet Gateway (IGW).
10600
+ deny_all_igw_traffic=False
10433
10601
  )
10434
10602
  '''
10435
10603
 
@@ -13460,6 +13628,17 @@ class INetworkLoadBalancer(
13460
13628
  '''All metrics available for this load balancer.'''
13461
13629
  ...
13462
13630
 
13631
+ @builtins.property
13632
+ @jsii.member(jsii_name="enforceSecurityGroupInboundRulesOnPrivateLinkTraffic")
13633
+ def enforce_security_group_inbound_rules_on_private_link_traffic(
13634
+ self,
13635
+ ) -> typing.Optional[builtins.str]:
13636
+ '''Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through AWS PrivateLink.
13637
+
13638
+ :default: on
13639
+ '''
13640
+ ...
13641
+
13463
13642
  @builtins.property
13464
13643
  @jsii.member(jsii_name="ipAddressType")
13465
13644
  def ip_address_type(self) -> typing.Optional["IpAddressType"]:
@@ -13525,6 +13704,17 @@ class _INetworkLoadBalancerProxy(
13525
13704
  '''All metrics available for this load balancer.'''
13526
13705
  return typing.cast("INetworkLoadBalancerMetrics", jsii.get(self, "metrics"))
13527
13706
 
13707
+ @builtins.property
13708
+ @jsii.member(jsii_name="enforceSecurityGroupInboundRulesOnPrivateLinkTraffic")
13709
+ def enforce_security_group_inbound_rules_on_private_link_traffic(
13710
+ self,
13711
+ ) -> typing.Optional[builtins.str]:
13712
+ '''Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through AWS PrivateLink.
13713
+
13714
+ :default: on
13715
+ '''
13716
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic"))
13717
+
13528
13718
  @builtins.property
13529
13719
  @jsii.member(jsii_name="ipAddressType")
13530
13720
  def ip_address_type(self) -> typing.Optional["IpAddressType"]:
@@ -14531,7 +14721,16 @@ class IpAddressType(enum.Enum):
14531
14721
  desync_mitigation_mode=elbv2.DesyncMitigationMode.DEFENSIVE,
14532
14722
 
14533
14723
  # The type of IP addresses to use.
14534
- ip_address_type=elbv2.IpAddressType.IPV4
14724
+ ip_address_type=elbv2.IpAddressType.IPV4,
14725
+
14726
+ # The duration of client keep-alive connections
14727
+ client_keep_alive=Duration.seconds(500),
14728
+
14729
+ # Whether cross-zone load balancing is enabled.
14730
+ cross_zone_enabled=True,
14731
+
14732
+ # Whether the load balancer blocks traffic through the Internet Gateway (IGW).
14733
+ deny_all_igw_traffic=False
14535
14734
  )
14536
14735
  '''
14537
14736
 
@@ -15653,24 +15852,18 @@ class NetworkLoadBalancer(
15653
15852
 
15654
15853
  Example::
15655
15854
 
15656
- import aws_cdk.aws_elasticloadbalancingv2 as elbv2
15855
+ from aws_cdk.aws_apigatewayv2_integrations import HttpNlbIntegration
15657
15856
 
15658
15857
 
15659
15858
  vpc = ec2.Vpc(self, "VPC")
15660
- nlb = elbv2.NetworkLoadBalancer(self, "NLB",
15661
- vpc=vpc
15662
- )
15663
- link = apigateway.VpcLink(self, "link",
15664
- targets=[nlb]
15859
+ lb = elbv2.NetworkLoadBalancer(self, "lb", vpc=vpc)
15860
+ listener = lb.add_listener("listener", port=80)
15861
+ listener.add_targets("target",
15862
+ port=80
15665
15863
  )
15666
15864
 
15667
- integration = apigateway.Integration(
15668
- type=apigateway.IntegrationType.HTTP_PROXY,
15669
- integration_http_method="ANY",
15670
- options=apigateway.IntegrationOptions(
15671
- connection_type=apigateway.ConnectionType.VPC_LINK,
15672
- vpc_link=link
15673
- )
15865
+ http_endpoint = apigwv2.HttpApi(self, "HttpProxyPrivateApi",
15866
+ default_integration=HttpNlbIntegration("DefaultIntegration", listener)
15674
15867
  )
15675
15868
  '''
15676
15869
 
@@ -15679,11 +15872,14 @@ class NetworkLoadBalancer(
15679
15872
  scope: _constructs_77d1e7e8.Construct,
15680
15873
  id: builtins.str,
15681
15874
  *,
15682
- cross_zone_enabled: typing.Optional[builtins.bool] = None,
15875
+ client_routing_policy: typing.Optional[ClientRoutingPolicy] = None,
15876
+ enforce_security_group_inbound_rules_on_private_link_traffic: typing.Optional[builtins.bool] = None,
15683
15877
  ip_address_type: typing.Optional[IpAddressType] = None,
15684
15878
  security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
15685
15879
  vpc: _IVpc_f30d5663,
15880
+ cross_zone_enabled: typing.Optional[builtins.bool] = None,
15686
15881
  deletion_protection: typing.Optional[builtins.bool] = None,
15882
+ deny_all_igw_traffic: typing.Optional[builtins.bool] = None,
15687
15883
  internet_facing: typing.Optional[builtins.bool] = None,
15688
15884
  load_balancer_name: typing.Optional[builtins.str] = None,
15689
15885
  vpc_subnets: typing.Optional[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -15691,11 +15887,14 @@ class NetworkLoadBalancer(
15691
15887
  '''
15692
15888
  :param scope: -
15693
15889
  :param id: -
15694
- :param cross_zone_enabled: Indicates whether cross-zone load balancing is enabled. Default: false
15890
+ :param client_routing_policy: The AZ affinity routing policy. Default: - AZ affinity is disabled.
15891
+ :param enforce_security_group_inbound_rules_on_private_link_traffic: Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through AWS PrivateLink. Default: true
15695
15892
  :param ip_address_type: The type of IP addresses to use. If you want to add a UDP or TCP_UDP listener to the load balancer, you must choose IPv4. Default: IpAddressType.IPV4
15696
15893
  :param security_groups: Security groups to associate with this load balancer. Default: - No security groups associated with the load balancer.
15697
15894
  :param vpc: The VPC network to place the load balancer in.
15895
+ :param cross_zone_enabled: Indicates whether cross-zone load balancing is enabled. Default: - false for Network Load Balancers and true for Application Load Balancers.
15698
15896
  :param deletion_protection: Indicates whether deletion protection is enabled. Default: false
15897
+ :param deny_all_igw_traffic: Indicates whether the load balancer blocks traffic through the Internet Gateway (IGW). Default: - false for internet-facing load balancers and true for internal load balancers
15699
15898
  :param internet_facing: Whether the load balancer has an internet-routable address. Default: false
15700
15899
  :param load_balancer_name: Name of the load balancer. Default: - Automatically generated name.
15701
15900
  :param vpc_subnets: Which subnets place the load balancer in. Default: - the Vpc default strategy.
@@ -15705,11 +15904,14 @@ class NetworkLoadBalancer(
15705
15904
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
15706
15905
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
15707
15906
  props = NetworkLoadBalancerProps(
15708
- cross_zone_enabled=cross_zone_enabled,
15907
+ client_routing_policy=client_routing_policy,
15908
+ enforce_security_group_inbound_rules_on_private_link_traffic=enforce_security_group_inbound_rules_on_private_link_traffic,
15709
15909
  ip_address_type=ip_address_type,
15710
15910
  security_groups=security_groups,
15711
15911
  vpc=vpc,
15912
+ cross_zone_enabled=cross_zone_enabled,
15712
15913
  deletion_protection=deletion_protection,
15914
+ deny_all_igw_traffic=deny_all_igw_traffic,
15713
15915
  internet_facing=internet_facing,
15714
15916
  load_balancer_name=load_balancer_name,
15715
15917
  vpc_subnets=vpc_subnets,
@@ -16201,6 +16403,14 @@ class NetworkLoadBalancer(
16201
16403
  '''All metrics available for this load balancer.'''
16202
16404
  return typing.cast(INetworkLoadBalancerMetrics, jsii.get(self, "metrics"))
16203
16405
 
16406
+ @builtins.property
16407
+ @jsii.member(jsii_name="enforceSecurityGroupInboundRulesOnPrivateLinkTraffic")
16408
+ def enforce_security_group_inbound_rules_on_private_link_traffic(
16409
+ self,
16410
+ ) -> typing.Optional[builtins.str]:
16411
+ '''Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through AWS PrivateLink.'''
16412
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic"))
16413
+
16204
16414
  @builtins.property
16205
16415
  @jsii.member(jsii_name="ipAddressType")
16206
16416
  def ip_address_type(self) -> typing.Optional[IpAddressType]:
@@ -16436,11 +16646,14 @@ class NetworkLoadBalancerLookupOptions(BaseLoadBalancerLookupOptions):
16436
16646
  jsii_struct_bases=[BaseLoadBalancerProps],
16437
16647
  name_mapping={
16438
16648
  "vpc": "vpc",
16649
+ "cross_zone_enabled": "crossZoneEnabled",
16439
16650
  "deletion_protection": "deletionProtection",
16651
+ "deny_all_igw_traffic": "denyAllIgwTraffic",
16440
16652
  "internet_facing": "internetFacing",
16441
16653
  "load_balancer_name": "loadBalancerName",
16442
16654
  "vpc_subnets": "vpcSubnets",
16443
- "cross_zone_enabled": "crossZoneEnabled",
16655
+ "client_routing_policy": "clientRoutingPolicy",
16656
+ "enforce_security_group_inbound_rules_on_private_link_traffic": "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic",
16444
16657
  "ip_address_type": "ipAddressType",
16445
16658
  "security_groups": "securityGroups",
16446
16659
  },
@@ -16450,22 +16663,28 @@ class NetworkLoadBalancerProps(BaseLoadBalancerProps):
16450
16663
  self,
16451
16664
  *,
16452
16665
  vpc: _IVpc_f30d5663,
16666
+ cross_zone_enabled: typing.Optional[builtins.bool] = None,
16453
16667
  deletion_protection: typing.Optional[builtins.bool] = None,
16668
+ deny_all_igw_traffic: typing.Optional[builtins.bool] = None,
16454
16669
  internet_facing: typing.Optional[builtins.bool] = None,
16455
16670
  load_balancer_name: typing.Optional[builtins.str] = None,
16456
16671
  vpc_subnets: typing.Optional[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]] = None,
16457
- cross_zone_enabled: typing.Optional[builtins.bool] = None,
16672
+ client_routing_policy: typing.Optional[ClientRoutingPolicy] = None,
16673
+ enforce_security_group_inbound_rules_on_private_link_traffic: typing.Optional[builtins.bool] = None,
16458
16674
  ip_address_type: typing.Optional[IpAddressType] = None,
16459
16675
  security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
16460
16676
  ) -> None:
16461
16677
  '''Properties for a network load balancer.
16462
16678
 
16463
16679
  :param vpc: The VPC network to place the load balancer in.
16680
+ :param cross_zone_enabled: Indicates whether cross-zone load balancing is enabled. Default: - false for Network Load Balancers and true for Application Load Balancers.
16464
16681
  :param deletion_protection: Indicates whether deletion protection is enabled. Default: false
16682
+ :param deny_all_igw_traffic: Indicates whether the load balancer blocks traffic through the Internet Gateway (IGW). Default: - false for internet-facing load balancers and true for internal load balancers
16465
16683
  :param internet_facing: Whether the load balancer has an internet-routable address. Default: false
16466
16684
  :param load_balancer_name: Name of the load balancer. Default: - Automatically generated name.
16467
16685
  :param vpc_subnets: Which subnets place the load balancer in. Default: - the Vpc default strategy.
16468
- :param cross_zone_enabled: Indicates whether cross-zone load balancing is enabled. Default: false
16686
+ :param client_routing_policy: The AZ affinity routing policy. Default: - AZ affinity is disabled.
16687
+ :param enforce_security_group_inbound_rules_on_private_link_traffic: Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through AWS PrivateLink. Default: true
16469
16688
  :param ip_address_type: The type of IP addresses to use. If you want to add a UDP or TCP_UDP listener to the load balancer, you must choose IPv4. Default: IpAddressType.IPV4
16470
16689
  :param security_groups: Security groups to associate with this load balancer. Default: - No security groups associated with the load balancer.
16471
16690
 
@@ -16473,24 +16692,18 @@ class NetworkLoadBalancerProps(BaseLoadBalancerProps):
16473
16692
 
16474
16693
  Example::
16475
16694
 
16476
- import aws_cdk.aws_elasticloadbalancingv2 as elbv2
16695
+ from aws_cdk.aws_apigatewayv2_integrations import HttpNlbIntegration
16477
16696
 
16478
16697
 
16479
16698
  vpc = ec2.Vpc(self, "VPC")
16480
- nlb = elbv2.NetworkLoadBalancer(self, "NLB",
16481
- vpc=vpc
16482
- )
16483
- link = apigateway.VpcLink(self, "link",
16484
- targets=[nlb]
16699
+ lb = elbv2.NetworkLoadBalancer(self, "lb", vpc=vpc)
16700
+ listener = lb.add_listener("listener", port=80)
16701
+ listener.add_targets("target",
16702
+ port=80
16485
16703
  )
16486
16704
 
16487
- integration = apigateway.Integration(
16488
- type=apigateway.IntegrationType.HTTP_PROXY,
16489
- integration_http_method="ANY",
16490
- options=apigateway.IntegrationOptions(
16491
- connection_type=apigateway.ConnectionType.VPC_LINK,
16492
- vpc_link=link
16493
- )
16705
+ http_endpoint = apigwv2.HttpApi(self, "HttpProxyPrivateApi",
16706
+ default_integration=HttpNlbIntegration("DefaultIntegration", listener)
16494
16707
  )
16495
16708
  '''
16496
16709
  if isinstance(vpc_subnets, dict):
@@ -16498,26 +16711,35 @@ class NetworkLoadBalancerProps(BaseLoadBalancerProps):
16498
16711
  if __debug__:
16499
16712
  type_hints = typing.get_type_hints(_typecheckingstub__195ab659ca9cd1c401d6d2d1a1f5cb0aaf7dd80f06dbc724020ac0cc391d75da)
16500
16713
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
16714
+ check_type(argname="argument cross_zone_enabled", value=cross_zone_enabled, expected_type=type_hints["cross_zone_enabled"])
16501
16715
  check_type(argname="argument deletion_protection", value=deletion_protection, expected_type=type_hints["deletion_protection"])
16716
+ check_type(argname="argument deny_all_igw_traffic", value=deny_all_igw_traffic, expected_type=type_hints["deny_all_igw_traffic"])
16502
16717
  check_type(argname="argument internet_facing", value=internet_facing, expected_type=type_hints["internet_facing"])
16503
16718
  check_type(argname="argument load_balancer_name", value=load_balancer_name, expected_type=type_hints["load_balancer_name"])
16504
16719
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
16505
- check_type(argname="argument cross_zone_enabled", value=cross_zone_enabled, expected_type=type_hints["cross_zone_enabled"])
16720
+ check_type(argname="argument client_routing_policy", value=client_routing_policy, expected_type=type_hints["client_routing_policy"])
16721
+ check_type(argname="argument enforce_security_group_inbound_rules_on_private_link_traffic", value=enforce_security_group_inbound_rules_on_private_link_traffic, expected_type=type_hints["enforce_security_group_inbound_rules_on_private_link_traffic"])
16506
16722
  check_type(argname="argument ip_address_type", value=ip_address_type, expected_type=type_hints["ip_address_type"])
16507
16723
  check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
16508
16724
  self._values: typing.Dict[builtins.str, typing.Any] = {
16509
16725
  "vpc": vpc,
16510
16726
  }
16727
+ if cross_zone_enabled is not None:
16728
+ self._values["cross_zone_enabled"] = cross_zone_enabled
16511
16729
  if deletion_protection is not None:
16512
16730
  self._values["deletion_protection"] = deletion_protection
16731
+ if deny_all_igw_traffic is not None:
16732
+ self._values["deny_all_igw_traffic"] = deny_all_igw_traffic
16513
16733
  if internet_facing is not None:
16514
16734
  self._values["internet_facing"] = internet_facing
16515
16735
  if load_balancer_name is not None:
16516
16736
  self._values["load_balancer_name"] = load_balancer_name
16517
16737
  if vpc_subnets is not None:
16518
16738
  self._values["vpc_subnets"] = vpc_subnets
16519
- if cross_zone_enabled is not None:
16520
- self._values["cross_zone_enabled"] = cross_zone_enabled
16739
+ if client_routing_policy is not None:
16740
+ self._values["client_routing_policy"] = client_routing_policy
16741
+ if enforce_security_group_inbound_rules_on_private_link_traffic is not None:
16742
+ self._values["enforce_security_group_inbound_rules_on_private_link_traffic"] = enforce_security_group_inbound_rules_on_private_link_traffic
16521
16743
  if ip_address_type is not None:
16522
16744
  self._values["ip_address_type"] = ip_address_type
16523
16745
  if security_groups is not None:
@@ -16530,6 +16752,15 @@ class NetworkLoadBalancerProps(BaseLoadBalancerProps):
16530
16752
  assert result is not None, "Required property 'vpc' is missing"
16531
16753
  return typing.cast(_IVpc_f30d5663, result)
16532
16754
 
16755
+ @builtins.property
16756
+ def cross_zone_enabled(self) -> typing.Optional[builtins.bool]:
16757
+ '''Indicates whether cross-zone load balancing is enabled.
16758
+
16759
+ :default: - false for Network Load Balancers and true for Application Load Balancers.
16760
+ '''
16761
+ result = self._values.get("cross_zone_enabled")
16762
+ return typing.cast(typing.Optional[builtins.bool], result)
16763
+
16533
16764
  @builtins.property
16534
16765
  def deletion_protection(self) -> typing.Optional[builtins.bool]:
16535
16766
  '''Indicates whether deletion protection is enabled.
@@ -16539,6 +16770,15 @@ class NetworkLoadBalancerProps(BaseLoadBalancerProps):
16539
16770
  result = self._values.get("deletion_protection")
16540
16771
  return typing.cast(typing.Optional[builtins.bool], result)
16541
16772
 
16773
+ @builtins.property
16774
+ def deny_all_igw_traffic(self) -> typing.Optional[builtins.bool]:
16775
+ '''Indicates whether the load balancer blocks traffic through the Internet Gateway (IGW).
16776
+
16777
+ :default: - false for internet-facing load balancers and true for internal load balancers
16778
+ '''
16779
+ result = self._values.get("deny_all_igw_traffic")
16780
+ return typing.cast(typing.Optional[builtins.bool], result)
16781
+
16542
16782
  @builtins.property
16543
16783
  def internet_facing(self) -> typing.Optional[builtins.bool]:
16544
16784
  '''Whether the load balancer has an internet-routable address.
@@ -16567,12 +16807,25 @@ class NetworkLoadBalancerProps(BaseLoadBalancerProps):
16567
16807
  return typing.cast(typing.Optional[_SubnetSelection_e57d76df], result)
16568
16808
 
16569
16809
  @builtins.property
16570
- def cross_zone_enabled(self) -> typing.Optional[builtins.bool]:
16571
- '''Indicates whether cross-zone load balancing is enabled.
16810
+ def client_routing_policy(self) -> typing.Optional[ClientRoutingPolicy]:
16811
+ '''The AZ affinity routing policy.
16572
16812
 
16573
- :default: false
16813
+ :default: - AZ affinity is disabled.
16814
+
16815
+ :see: https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#zonal-dns-affinity
16574
16816
  '''
16575
- result = self._values.get("cross_zone_enabled")
16817
+ result = self._values.get("client_routing_policy")
16818
+ return typing.cast(typing.Optional[ClientRoutingPolicy], result)
16819
+
16820
+ @builtins.property
16821
+ def enforce_security_group_inbound_rules_on_private_link_traffic(
16822
+ self,
16823
+ ) -> typing.Optional[builtins.bool]:
16824
+ '''Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through AWS PrivateLink.
16825
+
16826
+ :default: true
16827
+ '''
16828
+ result = self._values.get("enforce_security_group_inbound_rules_on_private_link_traffic")
16576
16829
  return typing.cast(typing.Optional[builtins.bool], result)
16577
16830
 
16578
16831
  @builtins.property
@@ -18863,10 +19116,13 @@ class ApplicationLoadBalancerLookupOptions(BaseLoadBalancerLookupOptions):
18863
19116
  jsii_struct_bases=[BaseLoadBalancerProps],
18864
19117
  name_mapping={
18865
19118
  "vpc": "vpc",
19119
+ "cross_zone_enabled": "crossZoneEnabled",
18866
19120
  "deletion_protection": "deletionProtection",
19121
+ "deny_all_igw_traffic": "denyAllIgwTraffic",
18867
19122
  "internet_facing": "internetFacing",
18868
19123
  "load_balancer_name": "loadBalancerName",
18869
19124
  "vpc_subnets": "vpcSubnets",
19125
+ "client_keep_alive": "clientKeepAlive",
18870
19126
  "desync_mitigation_mode": "desyncMitigationMode",
18871
19127
  "drop_invalid_header_fields": "dropInvalidHeaderFields",
18872
19128
  "http2_enabled": "http2Enabled",
@@ -18880,10 +19136,13 @@ class ApplicationLoadBalancerProps(BaseLoadBalancerProps):
18880
19136
  self,
18881
19137
  *,
18882
19138
  vpc: _IVpc_f30d5663,
19139
+ cross_zone_enabled: typing.Optional[builtins.bool] = None,
18883
19140
  deletion_protection: typing.Optional[builtins.bool] = None,
19141
+ deny_all_igw_traffic: typing.Optional[builtins.bool] = None,
18884
19142
  internet_facing: typing.Optional[builtins.bool] = None,
18885
19143
  load_balancer_name: typing.Optional[builtins.str] = None,
18886
19144
  vpc_subnets: typing.Optional[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]] = None,
19145
+ client_keep_alive: typing.Optional[_Duration_4839e8c3] = None,
18887
19146
  desync_mitigation_mode: typing.Optional[DesyncMitigationMode] = None,
18888
19147
  drop_invalid_header_fields: typing.Optional[builtins.bool] = None,
18889
19148
  http2_enabled: typing.Optional[builtins.bool] = None,
@@ -18894,10 +19153,13 @@ class ApplicationLoadBalancerProps(BaseLoadBalancerProps):
18894
19153
  '''Properties for defining an Application Load Balancer.
18895
19154
 
18896
19155
  :param vpc: The VPC network to place the load balancer in.
19156
+ :param cross_zone_enabled: Indicates whether cross-zone load balancing is enabled. Default: - false for Network Load Balancers and true for Application Load Balancers.
18897
19157
  :param deletion_protection: Indicates whether deletion protection is enabled. Default: false
19158
+ :param deny_all_igw_traffic: Indicates whether the load balancer blocks traffic through the Internet Gateway (IGW). Default: - false for internet-facing load balancers and true for internal load balancers
18898
19159
  :param internet_facing: Whether the load balancer has an internet-routable address. Default: false
18899
19160
  :param load_balancer_name: Name of the load balancer. Default: - Automatically generated name.
18900
19161
  :param vpc_subnets: Which subnets place the load balancer in. Default: - the Vpc default strategy.
19162
+ :param client_keep_alive: The client keep alive duration. The valid range is 60 to 604800 seconds (1 minute to 7 days). Default: - Duration.seconds(3600)
18901
19163
  :param desync_mitigation_mode: Determines how the load balancer handles requests that might pose a security risk to your application. Default: DesyncMitigationMode.DEFENSIVE
18902
19164
  :param drop_invalid_header_fields: Indicates whether HTTP headers with invalid header fields are removed by the load balancer (true) or routed to targets (false). Default: false
18903
19165
  :param http2_enabled: Indicates whether HTTP/2 is enabled. Default: true
@@ -18909,21 +19171,34 @@ class ApplicationLoadBalancerProps(BaseLoadBalancerProps):
18909
19171
 
18910
19172
  Example::
18911
19173
 
18912
- # cluster: ecs.Cluster
18913
- # task_definition: ecs.TaskDefinition
19174
+ from aws_cdk.aws_autoscaling import AutoScalingGroup
19175
+ # asg: AutoScalingGroup
18914
19176
  # vpc: ec2.Vpc
18915
19177
 
18916
- service = ecs.FargateService(self, "Service", cluster=cluster, task_definition=task_definition)
18917
19178
 
18918
- lb = elbv2.ApplicationLoadBalancer(self, "LB", vpc=vpc, internet_facing=True)
18919
- listener = lb.add_listener("Listener", port=80)
18920
- service.register_load_balancer_targets(
18921
- container_name="web",
18922
- container_port=80,
18923
- new_target_group_id="ECS",
18924
- listener=ecs.ListenerConfig.application_listener(listener,
18925
- protocol=elbv2.ApplicationProtocol.HTTPS
18926
- )
19179
+ # Create the load balancer in a VPC. 'internetFacing' is 'false'
19180
+ # by default, which creates an internal load balancer.
19181
+ lb = elbv2.ApplicationLoadBalancer(self, "LB",
19182
+ vpc=vpc,
19183
+ internet_facing=True
19184
+ )
19185
+
19186
+ # Add a listener and open up the load balancer's security group
19187
+ # to the world.
19188
+ listener = lb.add_listener("Listener",
19189
+ port=80,
19190
+
19191
+ # 'open: true' is the default, you can leave it out if you want. Set it
19192
+ # to 'false' and use `listener.connections` if you want to be selective
19193
+ # about who can access the load balancer.
19194
+ open=True
19195
+ )
19196
+
19197
+ # Create an AutoScaling group and add it as a load balancing
19198
+ # target to the listener.
19199
+ listener.add_targets("ApplicationFleet",
19200
+ port=8080,
19201
+ targets=[asg]
18927
19202
  )
18928
19203
  '''
18929
19204
  if isinstance(vpc_subnets, dict):
@@ -18931,10 +19206,13 @@ class ApplicationLoadBalancerProps(BaseLoadBalancerProps):
18931
19206
  if __debug__:
18932
19207
  type_hints = typing.get_type_hints(_typecheckingstub__e43cf75024913d9be0d5d621a5f2c2c7be60a57898a54967cd54179b2b3d1584)
18933
19208
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
19209
+ check_type(argname="argument cross_zone_enabled", value=cross_zone_enabled, expected_type=type_hints["cross_zone_enabled"])
18934
19210
  check_type(argname="argument deletion_protection", value=deletion_protection, expected_type=type_hints["deletion_protection"])
19211
+ check_type(argname="argument deny_all_igw_traffic", value=deny_all_igw_traffic, expected_type=type_hints["deny_all_igw_traffic"])
18935
19212
  check_type(argname="argument internet_facing", value=internet_facing, expected_type=type_hints["internet_facing"])
18936
19213
  check_type(argname="argument load_balancer_name", value=load_balancer_name, expected_type=type_hints["load_balancer_name"])
18937
19214
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
19215
+ check_type(argname="argument client_keep_alive", value=client_keep_alive, expected_type=type_hints["client_keep_alive"])
18938
19216
  check_type(argname="argument desync_mitigation_mode", value=desync_mitigation_mode, expected_type=type_hints["desync_mitigation_mode"])
18939
19217
  check_type(argname="argument drop_invalid_header_fields", value=drop_invalid_header_fields, expected_type=type_hints["drop_invalid_header_fields"])
18940
19218
  check_type(argname="argument http2_enabled", value=http2_enabled, expected_type=type_hints["http2_enabled"])
@@ -18944,14 +19222,20 @@ class ApplicationLoadBalancerProps(BaseLoadBalancerProps):
18944
19222
  self._values: typing.Dict[builtins.str, typing.Any] = {
18945
19223
  "vpc": vpc,
18946
19224
  }
19225
+ if cross_zone_enabled is not None:
19226
+ self._values["cross_zone_enabled"] = cross_zone_enabled
18947
19227
  if deletion_protection is not None:
18948
19228
  self._values["deletion_protection"] = deletion_protection
19229
+ if deny_all_igw_traffic is not None:
19230
+ self._values["deny_all_igw_traffic"] = deny_all_igw_traffic
18949
19231
  if internet_facing is not None:
18950
19232
  self._values["internet_facing"] = internet_facing
18951
19233
  if load_balancer_name is not None:
18952
19234
  self._values["load_balancer_name"] = load_balancer_name
18953
19235
  if vpc_subnets is not None:
18954
19236
  self._values["vpc_subnets"] = vpc_subnets
19237
+ if client_keep_alive is not None:
19238
+ self._values["client_keep_alive"] = client_keep_alive
18955
19239
  if desync_mitigation_mode is not None:
18956
19240
  self._values["desync_mitigation_mode"] = desync_mitigation_mode
18957
19241
  if drop_invalid_header_fields is not None:
@@ -18972,6 +19256,15 @@ class ApplicationLoadBalancerProps(BaseLoadBalancerProps):
18972
19256
  assert result is not None, "Required property 'vpc' is missing"
18973
19257
  return typing.cast(_IVpc_f30d5663, result)
18974
19258
 
19259
+ @builtins.property
19260
+ def cross_zone_enabled(self) -> typing.Optional[builtins.bool]:
19261
+ '''Indicates whether cross-zone load balancing is enabled.
19262
+
19263
+ :default: - false for Network Load Balancers and true for Application Load Balancers.
19264
+ '''
19265
+ result = self._values.get("cross_zone_enabled")
19266
+ return typing.cast(typing.Optional[builtins.bool], result)
19267
+
18975
19268
  @builtins.property
18976
19269
  def deletion_protection(self) -> typing.Optional[builtins.bool]:
18977
19270
  '''Indicates whether deletion protection is enabled.
@@ -18981,6 +19274,15 @@ class ApplicationLoadBalancerProps(BaseLoadBalancerProps):
18981
19274
  result = self._values.get("deletion_protection")
18982
19275
  return typing.cast(typing.Optional[builtins.bool], result)
18983
19276
 
19277
+ @builtins.property
19278
+ def deny_all_igw_traffic(self) -> typing.Optional[builtins.bool]:
19279
+ '''Indicates whether the load balancer blocks traffic through the Internet Gateway (IGW).
19280
+
19281
+ :default: - false for internet-facing load balancers and true for internal load balancers
19282
+ '''
19283
+ result = self._values.get("deny_all_igw_traffic")
19284
+ return typing.cast(typing.Optional[builtins.bool], result)
19285
+
18984
19286
  @builtins.property
18985
19287
  def internet_facing(self) -> typing.Optional[builtins.bool]:
18986
19288
  '''Whether the load balancer has an internet-routable address.
@@ -19008,6 +19310,17 @@ class ApplicationLoadBalancerProps(BaseLoadBalancerProps):
19008
19310
  result = self._values.get("vpc_subnets")
19009
19311
  return typing.cast(typing.Optional[_SubnetSelection_e57d76df], result)
19010
19312
 
19313
+ @builtins.property
19314
+ def client_keep_alive(self) -> typing.Optional[_Duration_4839e8c3]:
19315
+ '''The client keep alive duration.
19316
+
19317
+ The valid range is 60 to 604800 seconds (1 minute to 7 days).
19318
+
19319
+ :default: - Duration.seconds(3600)
19320
+ '''
19321
+ result = self._values.get("client_keep_alive")
19322
+ return typing.cast(typing.Optional[_Duration_4839e8c3], result)
19323
+
19011
19324
  @builtins.property
19012
19325
  def desync_mitigation_mode(self) -> typing.Optional[DesyncMitigationMode]:
19013
19326
  '''Determines how the load balancer handles requests that might pose a security risk to your application.
@@ -19134,20 +19447,15 @@ class ApplicationTargetGroupProps(BaseTargetGroupProps):
19134
19447
  # vpc: ec2.Vpc
19135
19448
 
19136
19449
 
19137
- # Target group with duration-based stickiness with load-balancer generated cookie
19138
- tg1 = elbv2.ApplicationTargetGroup(self, "TG1",
19139
- target_type=elbv2.TargetType.INSTANCE,
19140
- port=80,
19141
- stickiness_cookie_duration=Duration.minutes(5),
19142
- vpc=vpc
19143
- )
19144
-
19145
- # Target group with application-based stickiness
19146
- tg2 = elbv2.ApplicationTargetGroup(self, "TG2",
19147
- target_type=elbv2.TargetType.INSTANCE,
19148
- port=80,
19149
- stickiness_cookie_duration=Duration.minutes(5),
19150
- stickiness_cookie_name="MyDeliciousCookie",
19450
+ tg = elbv2.ApplicationTargetGroup(self, "TG",
19451
+ target_type=elbv2.TargetType.IP,
19452
+ port=50051,
19453
+ protocol=elbv2.ApplicationProtocol.HTTP,
19454
+ protocol_version=elbv2.ApplicationProtocolVersion.GRPC,
19455
+ health_check=elbv2.HealthCheck(
19456
+ enabled=True,
19457
+ healthy_grpc_codes="0-99"
19458
+ ),
19151
19459
  vpc=vpc
19152
19460
  )
19153
19461
  '''
@@ -20973,6 +21281,7 @@ class ApplicationLoadBalancer(
20973
21281
  scope: _constructs_77d1e7e8.Construct,
20974
21282
  id: builtins.str,
20975
21283
  *,
21284
+ client_keep_alive: typing.Optional[_Duration_4839e8c3] = None,
20976
21285
  desync_mitigation_mode: typing.Optional[DesyncMitigationMode] = None,
20977
21286
  drop_invalid_header_fields: typing.Optional[builtins.bool] = None,
20978
21287
  http2_enabled: typing.Optional[builtins.bool] = None,
@@ -20980,7 +21289,9 @@ class ApplicationLoadBalancer(
20980
21289
  ip_address_type: typing.Optional[IpAddressType] = None,
20981
21290
  security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
20982
21291
  vpc: _IVpc_f30d5663,
21292
+ cross_zone_enabled: typing.Optional[builtins.bool] = None,
20983
21293
  deletion_protection: typing.Optional[builtins.bool] = None,
21294
+ deny_all_igw_traffic: typing.Optional[builtins.bool] = None,
20984
21295
  internet_facing: typing.Optional[builtins.bool] = None,
20985
21296
  load_balancer_name: typing.Optional[builtins.str] = None,
20986
21297
  vpc_subnets: typing.Optional[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -20988,6 +21299,7 @@ class ApplicationLoadBalancer(
20988
21299
  '''
20989
21300
  :param scope: -
20990
21301
  :param id: -
21302
+ :param client_keep_alive: The client keep alive duration. The valid range is 60 to 604800 seconds (1 minute to 7 days). Default: - Duration.seconds(3600)
20991
21303
  :param desync_mitigation_mode: Determines how the load balancer handles requests that might pose a security risk to your application. Default: DesyncMitigationMode.DEFENSIVE
20992
21304
  :param drop_invalid_header_fields: Indicates whether HTTP headers with invalid header fields are removed by the load balancer (true) or routed to targets (false). Default: false
20993
21305
  :param http2_enabled: Indicates whether HTTP/2 is enabled. Default: true
@@ -20995,7 +21307,9 @@ class ApplicationLoadBalancer(
20995
21307
  :param ip_address_type: The type of IP addresses to use. Default: IpAddressType.IPV4
20996
21308
  :param security_group: Security group to associate with this load balancer. Default: A security group is created
20997
21309
  :param vpc: The VPC network to place the load balancer in.
21310
+ :param cross_zone_enabled: Indicates whether cross-zone load balancing is enabled. Default: - false for Network Load Balancers and true for Application Load Balancers.
20998
21311
  :param deletion_protection: Indicates whether deletion protection is enabled. Default: false
21312
+ :param deny_all_igw_traffic: Indicates whether the load balancer blocks traffic through the Internet Gateway (IGW). Default: - false for internet-facing load balancers and true for internal load balancers
20999
21313
  :param internet_facing: Whether the load balancer has an internet-routable address. Default: false
21000
21314
  :param load_balancer_name: Name of the load balancer. Default: - Automatically generated name.
21001
21315
  :param vpc_subnets: Which subnets place the load balancer in. Default: - the Vpc default strategy.
@@ -21005,6 +21319,7 @@ class ApplicationLoadBalancer(
21005
21319
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
21006
21320
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
21007
21321
  props = ApplicationLoadBalancerProps(
21322
+ client_keep_alive=client_keep_alive,
21008
21323
  desync_mitigation_mode=desync_mitigation_mode,
21009
21324
  drop_invalid_header_fields=drop_invalid_header_fields,
21010
21325
  http2_enabled=http2_enabled,
@@ -21012,7 +21327,9 @@ class ApplicationLoadBalancer(
21012
21327
  ip_address_type=ip_address_type,
21013
21328
  security_group=security_group,
21014
21329
  vpc=vpc,
21330
+ cross_zone_enabled=cross_zone_enabled,
21015
21331
  deletion_protection=deletion_protection,
21332
+ deny_all_igw_traffic=deny_all_igw_traffic,
21016
21333
  internet_facing=internet_facing,
21017
21334
  load_balancer_name=load_balancer_name,
21018
21335
  vpc_subnets=vpc_subnets,
@@ -21165,6 +21482,26 @@ class ApplicationLoadBalancer(
21165
21482
  check_type(argname="argument security_group", value=security_group, expected_type=type_hints["security_group"])
21166
21483
  return typing.cast(None, jsii.invoke(self, "addSecurityGroup", [security_group]))
21167
21484
 
21485
+ @jsii.member(jsii_name="logAccessLogs")
21486
+ def log_access_logs(
21487
+ self,
21488
+ bucket: _IBucket_42e086fd,
21489
+ prefix: typing.Optional[builtins.str] = None,
21490
+ ) -> None:
21491
+ '''Enable access logging for this load balancer.
21492
+
21493
+ A region must be specified on the stack containing the load balancer; you cannot enable logging on
21494
+ environment-agnostic stacks. See https://docs.aws.amazon.com/cdk/latest/guide/environments.html
21495
+
21496
+ :param bucket: -
21497
+ :param prefix: -
21498
+ '''
21499
+ if __debug__:
21500
+ type_hints = typing.get_type_hints(_typecheckingstub__14e58136aa424614ad3deed70de619716d36a85a2336e0d16a5d5e3edc8431cd)
21501
+ check_type(argname="argument bucket", value=bucket, expected_type=type_hints["bucket"])
21502
+ check_type(argname="argument prefix", value=prefix, expected_type=type_hints["prefix"])
21503
+ return typing.cast(None, jsii.invoke(self, "logAccessLogs", [bucket, prefix]))
21504
+
21168
21505
  @jsii.member(jsii_name="metric")
21169
21506
  def metric(
21170
21507
  self,
@@ -22910,6 +23247,7 @@ __all__ = [
22910
23247
  "CfnTrustStoreProps",
22911
23248
  "CfnTrustStoreRevocation",
22912
23249
  "CfnTrustStoreRevocationProps",
23250
+ "ClientRoutingPolicy",
22913
23251
  "DesyncMitigationMode",
22914
23252
  "FixedResponseOptions",
22915
23253
  "ForwardOptions",
@@ -23159,7 +23497,9 @@ def _typecheckingstub__c636cf30c7688e65af48df2d228f5c138bd07b3c256c82b3692388fb2
23159
23497
  def _typecheckingstub__36614588a5e075aa6e7ea0a4d41053b09874f2590b227cd5d62f3429901282f2(
23160
23498
  *,
23161
23499
  vpc: _IVpc_f30d5663,
23500
+ cross_zone_enabled: typing.Optional[builtins.bool] = None,
23162
23501
  deletion_protection: typing.Optional[builtins.bool] = None,
23502
+ deny_all_igw_traffic: typing.Optional[builtins.bool] = None,
23163
23503
  internet_facing: typing.Optional[builtins.bool] = None,
23164
23504
  load_balancer_name: typing.Optional[builtins.str] = None,
23165
23505
  vpc_subnets: typing.Optional[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -24448,11 +24788,14 @@ def _typecheckingstub__e1c7a4c1332bdc807d1e25aa5d69eea6e1f3bf6a88ddd30dac9a64c93
24448
24788
  scope: _constructs_77d1e7e8.Construct,
24449
24789
  id: builtins.str,
24450
24790
  *,
24451
- cross_zone_enabled: typing.Optional[builtins.bool] = None,
24791
+ client_routing_policy: typing.Optional[ClientRoutingPolicy] = None,
24792
+ enforce_security_group_inbound_rules_on_private_link_traffic: typing.Optional[builtins.bool] = None,
24452
24793
  ip_address_type: typing.Optional[IpAddressType] = None,
24453
24794
  security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
24454
24795
  vpc: _IVpc_f30d5663,
24796
+ cross_zone_enabled: typing.Optional[builtins.bool] = None,
24455
24797
  deletion_protection: typing.Optional[builtins.bool] = None,
24798
+ deny_all_igw_traffic: typing.Optional[builtins.bool] = None,
24456
24799
  internet_facing: typing.Optional[builtins.bool] = None,
24457
24800
  load_balancer_name: typing.Optional[builtins.str] = None,
24458
24801
  vpc_subnets: typing.Optional[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -24540,11 +24883,14 @@ def _typecheckingstub__d4dc8b446f6caacf313a46c99f00148ea8982b0018d14d0f1d5004245
24540
24883
  def _typecheckingstub__195ab659ca9cd1c401d6d2d1a1f5cb0aaf7dd80f06dbc724020ac0cc391d75da(
24541
24884
  *,
24542
24885
  vpc: _IVpc_f30d5663,
24886
+ cross_zone_enabled: typing.Optional[builtins.bool] = None,
24543
24887
  deletion_protection: typing.Optional[builtins.bool] = None,
24888
+ deny_all_igw_traffic: typing.Optional[builtins.bool] = None,
24544
24889
  internet_facing: typing.Optional[builtins.bool] = None,
24545
24890
  load_balancer_name: typing.Optional[builtins.str] = None,
24546
24891
  vpc_subnets: typing.Optional[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]] = None,
24547
- cross_zone_enabled: typing.Optional[builtins.bool] = None,
24892
+ client_routing_policy: typing.Optional[ClientRoutingPolicy] = None,
24893
+ enforce_security_group_inbound_rules_on_private_link_traffic: typing.Optional[builtins.bool] = None,
24548
24894
  ip_address_type: typing.Optional[IpAddressType] = None,
24549
24895
  security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
24550
24896
  ) -> None:
@@ -24724,10 +25070,13 @@ def _typecheckingstub__5e4d185ab2bd554850b96481b3fbdc7ee1a86c97629f1b0fd835c6f72
24724
25070
  def _typecheckingstub__e43cf75024913d9be0d5d621a5f2c2c7be60a57898a54967cd54179b2b3d1584(
24725
25071
  *,
24726
25072
  vpc: _IVpc_f30d5663,
25073
+ cross_zone_enabled: typing.Optional[builtins.bool] = None,
24727
25074
  deletion_protection: typing.Optional[builtins.bool] = None,
25075
+ deny_all_igw_traffic: typing.Optional[builtins.bool] = None,
24728
25076
  internet_facing: typing.Optional[builtins.bool] = None,
24729
25077
  load_balancer_name: typing.Optional[builtins.str] = None,
24730
25078
  vpc_subnets: typing.Optional[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]] = None,
25079
+ client_keep_alive: typing.Optional[_Duration_4839e8c3] = None,
24731
25080
  desync_mitigation_mode: typing.Optional[DesyncMitigationMode] = None,
24732
25081
  drop_invalid_header_fields: typing.Optional[builtins.bool] = None,
24733
25082
  http2_enabled: typing.Optional[builtins.bool] = None,
@@ -25077,6 +25426,7 @@ def _typecheckingstub__22d249b6cdbe3ce0dfc1a873ef276c65fe89ce6a5dba0603fae0a5755
25077
25426
  scope: _constructs_77d1e7e8.Construct,
25078
25427
  id: builtins.str,
25079
25428
  *,
25429
+ client_keep_alive: typing.Optional[_Duration_4839e8c3] = None,
25080
25430
  desync_mitigation_mode: typing.Optional[DesyncMitigationMode] = None,
25081
25431
  drop_invalid_header_fields: typing.Optional[builtins.bool] = None,
25082
25432
  http2_enabled: typing.Optional[builtins.bool] = None,
@@ -25084,7 +25434,9 @@ def _typecheckingstub__22d249b6cdbe3ce0dfc1a873ef276c65fe89ce6a5dba0603fae0a5755
25084
25434
  ip_address_type: typing.Optional[IpAddressType] = None,
25085
25435
  security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
25086
25436
  vpc: _IVpc_f30d5663,
25437
+ cross_zone_enabled: typing.Optional[builtins.bool] = None,
25087
25438
  deletion_protection: typing.Optional[builtins.bool] = None,
25439
+ deny_all_igw_traffic: typing.Optional[builtins.bool] = None,
25088
25440
  internet_facing: typing.Optional[builtins.bool] = None,
25089
25441
  load_balancer_name: typing.Optional[builtins.str] = None,
25090
25442
  vpc_subnets: typing.Optional[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -25136,6 +25488,13 @@ def _typecheckingstub__57e7fd3d637561416b99cc18ce93e12b3ff0fd16aa199643bcfdcb4f3
25136
25488
  """Type checking stubs"""
25137
25489
  pass
25138
25490
 
25491
+ def _typecheckingstub__14e58136aa424614ad3deed70de619716d36a85a2336e0d16a5d5e3edc8431cd(
25492
+ bucket: _IBucket_42e086fd,
25493
+ prefix: typing.Optional[builtins.str] = None,
25494
+ ) -> None:
25495
+ """Type checking stubs"""
25496
+ pass
25497
+
25139
25498
  def _typecheckingstub__062c936e075fbff0552978e79ddc8d8cb01378ba1804b2546d14bd0383a824a0(
25140
25499
  metric_name: builtins.str,
25141
25500
  *,