aws-cdk-lib 2.195.0__py3-none-any.whl → 2.224.0__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (572) hide show
  1. aws_cdk/__init__.py +1806 -417
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.195.0.jsii.tgz → aws-cdk-lib@2.224.0.jsii.tgz} +0 -0
  4. aws_cdk/alexa_ask/__init__.py +12 -2
  5. aws_cdk/aws_accessanalyzer/__init__.py +323 -6
  6. aws_cdk/aws_acmpca/__init__.py +53 -10
  7. aws_cdk/aws_aiops/__init__.py +1019 -0
  8. aws_cdk/aws_amazonmq/__init__.py +357 -313
  9. aws_cdk/aws_amplify/__init__.py +173 -17
  10. aws_cdk/aws_amplifyuibuilder/__init__.py +35 -6
  11. aws_cdk/aws_apigateway/__init__.py +1245 -215
  12. aws_cdk/aws_apigatewayv2/__init__.py +3890 -476
  13. aws_cdk/aws_apigatewayv2_integrations/__init__.py +94 -16
  14. aws_cdk/aws_appconfig/__init__.py +618 -91
  15. aws_cdk/aws_appflow/__init__.py +151 -6
  16. aws_cdk/aws_appintegrations/__init__.py +546 -6
  17. aws_cdk/aws_applicationautoscaling/__init__.py +75 -10
  18. aws_cdk/aws_applicationinsights/__init__.py +13 -2
  19. aws_cdk/aws_applicationsignals/__init__.py +374 -6
  20. aws_cdk/aws_appmesh/__init__.py +136 -26
  21. aws_cdk/aws_apprunner/__init__.py +66 -18
  22. aws_cdk/aws_appstream/__init__.py +309 -55
  23. aws_cdk/aws_appsync/__init__.py +350 -94
  24. aws_cdk/aws_apptest/__init__.py +71 -2
  25. aws_cdk/aws_aps/__init__.py +2188 -94
  26. aws_cdk/aws_arcregionswitch/__init__.py +5095 -0
  27. aws_cdk/aws_arczonalshift/__init__.py +39 -12
  28. aws_cdk/aws_athena/__init__.py +365 -29
  29. aws_cdk/aws_auditmanager/__init__.py +71 -2
  30. aws_cdk/aws_autoscaling/__init__.py +165 -60
  31. aws_cdk/aws_autoscaling_common/__init__.py +3 -0
  32. aws_cdk/aws_autoscalingplans/__init__.py +13 -2
  33. aws_cdk/aws_b2bi/__init__.py +1819 -99
  34. aws_cdk/aws_backup/__init__.py +370 -42
  35. aws_cdk/aws_backupgateway/__init__.py +13 -2
  36. aws_cdk/aws_batch/__init__.py +1462 -163
  37. aws_cdk/aws_bcmdataexports/__init__.py +21 -2
  38. aws_cdk/aws_bedrock/__init__.py +7867 -727
  39. aws_cdk/aws_bedrockagentcore/__init__.py +10425 -0
  40. aws_cdk/aws_billingconductor/__init__.py +197 -11
  41. aws_cdk/aws_budgets/__init__.py +611 -4
  42. aws_cdk/aws_cassandra/__init__.py +247 -6
  43. aws_cdk/aws_ce/__init__.py +35 -6
  44. aws_cdk/aws_certificatemanager/__init__.py +258 -32
  45. aws_cdk/aws_chatbot/__init__.py +76 -6
  46. aws_cdk/aws_cleanrooms/__init__.py +709 -206
  47. aws_cdk/aws_cleanroomsml/__init__.py +13 -2
  48. aws_cdk/aws_cloud9/__init__.py +13 -2
  49. aws_cdk/aws_cloudformation/__init__.py +362 -189
  50. aws_cdk/aws_cloudfront/__init__.py +2188 -674
  51. aws_cdk/aws_cloudfront/experimental/__init__.py +114 -16
  52. aws_cdk/aws_cloudfront_origins/__init__.py +615 -74
  53. aws_cdk/aws_cloudtrail/__init__.py +311 -21
  54. aws_cdk/aws_cloudwatch/__init__.py +3093 -1038
  55. aws_cdk/aws_cloudwatch_actions/__init__.py +75 -1
  56. aws_cdk/aws_codeartifact/__init__.py +35 -6
  57. aws_cdk/aws_codebuild/__init__.py +1303 -135
  58. aws_cdk/aws_codecommit/__init__.py +29 -9
  59. aws_cdk/aws_codeconnections/__init__.py +13 -2
  60. aws_cdk/aws_codedeploy/__init__.py +130 -6
  61. aws_cdk/aws_codeguruprofiler/__init__.py +80 -2
  62. aws_cdk/aws_codegurureviewer/__init__.py +13 -2
  63. aws_cdk/aws_codepipeline/__init__.py +177 -71
  64. aws_cdk/aws_codepipeline_actions/__init__.py +753 -4
  65. aws_cdk/aws_codestar/__init__.py +13 -2
  66. aws_cdk/aws_codestarconnections/__init__.py +35 -6
  67. aws_cdk/aws_codestarnotifications/__init__.py +22 -2
  68. aws_cdk/aws_cognito/__init__.py +905 -92
  69. aws_cdk/aws_cognito_identitypool/__init__.py +23 -12
  70. aws_cdk/aws_comprehend/__init__.py +24 -4
  71. aws_cdk/aws_config/__init__.py +227 -30
  72. aws_cdk/aws_connect/__init__.py +2736 -191
  73. aws_cdk/aws_connectcampaigns/__init__.py +13 -2
  74. aws_cdk/aws_connectcampaignsv2/__init__.py +268 -6
  75. aws_cdk/aws_controltower/__init__.py +35 -6
  76. aws_cdk/aws_cur/__init__.py +100 -4
  77. aws_cdk/aws_customerprofiles/__init__.py +617 -27
  78. aws_cdk/aws_databrew/__init__.py +68 -12
  79. aws_cdk/aws_datapipeline/__init__.py +42 -2
  80. aws_cdk/aws_datasync/__init__.py +1514 -977
  81. aws_cdk/aws_datazone/__init__.py +7426 -1763
  82. aws_cdk/aws_dax/__init__.py +83 -6
  83. aws_cdk/aws_deadline/__init__.py +511 -36
  84. aws_cdk/aws_detective/__init__.py +35 -6
  85. aws_cdk/aws_devicefarm/__init__.py +68 -12
  86. aws_cdk/aws_devopsguru/__init__.py +37 -6
  87. aws_cdk/aws_directoryservice/__init__.py +53 -4
  88. aws_cdk/aws_dlm/__init__.py +13 -2
  89. aws_cdk/aws_dms/__init__.py +184 -27
  90. aws_cdk/aws_docdb/__init__.py +350 -49
  91. aws_cdk/aws_docdbelastic/__init__.py +13 -2
  92. aws_cdk/aws_dsql/__init__.py +386 -16
  93. aws_cdk/aws_dynamodb/__init__.py +1479 -170
  94. aws_cdk/aws_ec2/__init__.py +10465 -1335
  95. aws_cdk/aws_ecr/__init__.py +637 -43
  96. aws_cdk/aws_ecr_assets/__init__.py +10 -0
  97. aws_cdk/aws_ecs/__init__.py +6629 -490
  98. aws_cdk/aws_ecs_patterns/__init__.py +124 -12
  99. aws_cdk/aws_efs/__init__.py +276 -24
  100. aws_cdk/aws_eks/__init__.py +1132 -227
  101. aws_cdk/aws_elasticache/__init__.py +378 -25
  102. aws_cdk/aws_elasticbeanstalk/__init__.py +75 -8
  103. aws_cdk/aws_elasticloadbalancing/__init__.py +22 -2
  104. aws_cdk/aws_elasticloadbalancingv2/__init__.py +1796 -123
  105. aws_cdk/aws_elasticsearch/__init__.py +291 -9
  106. aws_cdk/aws_emr/__init__.py +219 -18
  107. aws_cdk/aws_emrcontainers/__init__.py +71 -2
  108. aws_cdk/aws_emrserverless/__init__.py +188 -3
  109. aws_cdk/aws_entityresolution/__init__.py +585 -58
  110. aws_cdk/aws_events/__init__.py +1007 -126
  111. aws_cdk/aws_events_targets/__init__.py +398 -65
  112. aws_cdk/aws_eventschemas/__init__.py +46 -8
  113. aws_cdk/aws_evidently/__init__.py +57 -10
  114. aws_cdk/aws_evs/__init__.py +2244 -0
  115. aws_cdk/aws_finspace/__init__.py +71 -2
  116. aws_cdk/aws_fis/__init__.py +26 -4
  117. aws_cdk/aws_fms/__init__.py +35 -6
  118. aws_cdk/aws_forecast/__init__.py +24 -4
  119. aws_cdk/aws_frauddetector/__init__.py +79 -14
  120. aws_cdk/aws_fsx/__init__.py +1349 -127
  121. aws_cdk/aws_gamelift/__init__.py +755 -94
  122. aws_cdk/aws_gameliftstreams/__init__.py +44 -22
  123. aws_cdk/aws_globalaccelerator/__init__.py +73 -14
  124. aws_cdk/aws_glue/__init__.py +1455 -378
  125. aws_cdk/aws_grafana/__init__.py +13 -2
  126. aws_cdk/aws_greengrass/__init__.py +654 -32
  127. aws_cdk/aws_greengrassv2/__init__.py +53 -4
  128. aws_cdk/aws_groundstation/__init__.py +122 -6
  129. aws_cdk/aws_guardduty/__init__.py +1613 -123
  130. aws_cdk/aws_healthimaging/__init__.py +71 -2
  131. aws_cdk/aws_healthlake/__init__.py +42 -2
  132. aws_cdk/aws_iam/__init__.py +921 -141
  133. aws_cdk/aws_identitystore/__init__.py +24 -4
  134. aws_cdk/aws_imagebuilder/__init__.py +1454 -199
  135. aws_cdk/aws_inspector/__init__.py +44 -6
  136. aws_cdk/aws_inspectorv2/__init__.py +2285 -243
  137. aws_cdk/aws_internetmonitor/__init__.py +71 -2
  138. aws_cdk/aws_invoicing/__init__.py +13 -2
  139. aws_cdk/aws_iot/__init__.py +1760 -64
  140. aws_cdk/aws_iotanalytics/__init__.py +162 -8
  141. aws_cdk/aws_iotcoredeviceadvisor/__init__.py +106 -40
  142. aws_cdk/aws_iotevents/__init__.py +122 -6
  143. aws_cdk/aws_iotfleethub/__init__.py +71 -2
  144. aws_cdk/aws_iotfleetwise/__init__.py +195 -14
  145. aws_cdk/aws_iotsitewise/__init__.py +1837 -89
  146. aws_cdk/aws_iotthingsgraph/__init__.py +13 -2
  147. aws_cdk/aws_iottwinmaker/__init__.py +115 -10
  148. aws_cdk/aws_iotwireless/__init__.py +649 -22
  149. aws_cdk/aws_ivs/__init__.py +561 -57
  150. aws_cdk/aws_ivschat/__init__.py +24 -4
  151. aws_cdk/aws_kafkaconnect/__init__.py +35 -6
  152. aws_cdk/aws_kendra/__init__.py +120 -28
  153. aws_cdk/aws_kendraranking/__init__.py +13 -2
  154. aws_cdk/aws_kinesis/__init__.py +641 -23
  155. aws_cdk/aws_kinesisanalytics/__init__.py +467 -96
  156. aws_cdk/aws_kinesisanalyticsv2/__init__.py +207 -19
  157. aws_cdk/aws_kinesisfirehose/__init__.py +3087 -295
  158. aws_cdk/aws_kinesisvideo/__init__.py +24 -4
  159. aws_cdk/aws_kms/__init__.py +204 -45
  160. aws_cdk/aws_lakeformation/__init__.py +80 -15
  161. aws_cdk/aws_lambda/__init__.py +2236 -297
  162. aws_cdk/aws_lambda_event_sources/__init__.py +638 -1
  163. aws_cdk/aws_lambda_nodejs/__init__.py +63 -24
  164. aws_cdk/aws_launchwizard/__init__.py +13 -2
  165. aws_cdk/aws_lex/__init__.py +2162 -212
  166. aws_cdk/aws_licensemanager/__init__.py +24 -4
  167. aws_cdk/aws_lightsail/__init__.py +2958 -1322
  168. aws_cdk/aws_location/__init__.py +618 -14
  169. aws_cdk/aws_logs/__init__.py +6014 -923
  170. aws_cdk/aws_lookoutequipment/__init__.py +13 -2
  171. aws_cdk/aws_lookoutmetrics/__init__.py +38 -6
  172. aws_cdk/aws_lookoutvision/__init__.py +71 -2
  173. aws_cdk/aws_m2/__init__.py +94 -19
  174. aws_cdk/aws_macie/__init__.py +49 -11
  175. aws_cdk/aws_managedblockchain/__init__.py +180 -6
  176. aws_cdk/aws_mediaconnect/__init__.py +101 -18
  177. aws_cdk/aws_mediaconvert/__init__.py +35 -6
  178. aws_cdk/aws_medialive/__init__.py +1938 -532
  179. aws_cdk/aws_mediapackage/__init__.py +59 -12
  180. aws_cdk/aws_mediapackagev2/__init__.py +1616 -233
  181. aws_cdk/aws_mediastore/__init__.py +13 -2
  182. aws_cdk/aws_mediatailor/__init__.py +583 -12
  183. aws_cdk/aws_memorydb/__init__.py +271 -12
  184. aws_cdk/aws_mpa/__init__.py +1495 -0
  185. aws_cdk/aws_msk/__init__.py +108 -22
  186. aws_cdk/aws_mwaa/__init__.py +121 -9
  187. aws_cdk/aws_neptune/__init__.py +290 -78
  188. aws_cdk/aws_neptunegraph/__init__.py +24 -4
  189. aws_cdk/aws_networkfirewall/__init__.py +1184 -164
  190. aws_cdk/aws_networkmanager/__init__.py +349 -33
  191. aws_cdk/aws_nimblestudio/__init__.py +283 -408
  192. aws_cdk/aws_notifications/__init__.py +317 -12
  193. aws_cdk/aws_notificationscontacts/__init__.py +13 -2
  194. aws_cdk/aws_oam/__init__.py +24 -4
  195. aws_cdk/aws_observabilityadmin/__init__.py +2561 -0
  196. aws_cdk/aws_odb/__init__.py +5872 -0
  197. aws_cdk/aws_omics/__init__.py +2967 -162
  198. aws_cdk/aws_opensearchserverless/__init__.py +312 -37
  199. aws_cdk/aws_opensearchservice/__init__.py +501 -19
  200. aws_cdk/aws_opsworks/__init__.py +235 -139
  201. aws_cdk/aws_opsworkscm/__init__.py +16 -52
  202. aws_cdk/aws_organizations/__init__.py +70 -10
  203. aws_cdk/aws_osis/__init__.py +167 -2
  204. aws_cdk/aws_panorama/__init__.py +181 -9
  205. aws_cdk/aws_paymentcryptography/__init__.py +24 -4
  206. aws_cdk/aws_pcaconnectorad/__init__.py +59 -10
  207. aws_cdk/aws_pcaconnectorscep/__init__.py +24 -4
  208. aws_cdk/aws_pcs/__init__.py +516 -64
  209. aws_cdk/aws_personalize/__init__.py +46 -8
  210. aws_cdk/aws_pinpoint/__init__.py +329 -38
  211. aws_cdk/aws_pinpointemail/__init__.py +48 -8
  212. aws_cdk/aws_pipes/__init__.py +12 -2
  213. aws_cdk/aws_proton/__init__.py +37 -6
  214. aws_cdk/aws_qbusiness/__init__.py +635 -34
  215. aws_cdk/aws_qldb/__init__.py +24 -4
  216. aws_cdk/aws_quicksight/__init__.py +7900 -1160
  217. aws_cdk/aws_ram/__init__.py +24 -4
  218. aws_cdk/aws_rbin/__init__.py +12 -2
  219. aws_cdk/aws_rds/__init__.py +3721 -573
  220. aws_cdk/aws_redshift/__init__.py +143 -20
  221. aws_cdk/aws_redshiftserverless/__init__.py +699 -11
  222. aws_cdk/aws_refactorspaces/__init__.py +64 -14
  223. aws_cdk/aws_rekognition/__init__.py +93 -6
  224. aws_cdk/aws_resiliencehub/__init__.py +24 -4
  225. aws_cdk/aws_resourceexplorer2/__init__.py +35 -6
  226. aws_cdk/aws_resourcegroups/__init__.py +82 -4
  227. aws_cdk/aws_robomaker/__init__.py +72 -12
  228. aws_cdk/aws_rolesanywhere/__init__.py +194 -19
  229. aws_cdk/aws_route53/__init__.py +3965 -1436
  230. aws_cdk/aws_route53_targets/__init__.py +3 -0
  231. aws_cdk/aws_route53profiles/__init__.py +37 -6
  232. aws_cdk/aws_route53recoverycontrol/__init__.py +46 -8
  233. aws_cdk/aws_route53recoveryreadiness/__init__.py +104 -8
  234. aws_cdk/aws_route53resolver/__init__.py +189 -40
  235. aws_cdk/aws_rtbfabric/__init__.py +3498 -0
  236. aws_cdk/aws_rum/__init__.py +13 -2
  237. aws_cdk/aws_s3/__init__.py +1742 -221
  238. aws_cdk/aws_s3_assets/__init__.py +11 -11
  239. aws_cdk/aws_s3_deployment/__init__.py +153 -11
  240. aws_cdk/aws_s3_notifications/__init__.py +7 -7
  241. aws_cdk/aws_s3express/__init__.py +1053 -6
  242. aws_cdk/aws_s3objectlambda/__init__.py +68 -16
  243. aws_cdk/aws_s3outposts/__init__.py +46 -8
  244. aws_cdk/aws_s3tables/__init__.py +2000 -323
  245. aws_cdk/aws_s3vectors/__init__.py +1378 -0
  246. aws_cdk/aws_sagemaker/__init__.py +6848 -373
  247. aws_cdk/aws_sam/__init__.py +79 -14
  248. aws_cdk/aws_scheduler/__init__.py +249 -4
  249. aws_cdk/aws_sdb/__init__.py +12 -2
  250. aws_cdk/aws_secretsmanager/__init__.py +194 -14
  251. aws_cdk/aws_securityhub/__init__.py +3121 -176
  252. aws_cdk/aws_securitylake/__init__.py +46 -8
  253. aws_cdk/aws_servicecatalog/__init__.py +429 -246
  254. aws_cdk/aws_servicecatalogappregistry/__init__.py +164 -8
  255. aws_cdk/aws_servicediscovery/__init__.py +188 -47
  256. aws_cdk/aws_ses/__init__.py +2265 -369
  257. aws_cdk/aws_shield/__init__.py +46 -8
  258. aws_cdk/aws_signer/__init__.py +33 -4
  259. aws_cdk/aws_simspaceweaver/__init__.py +42 -2
  260. aws_cdk/aws_smsvoice/__init__.py +4716 -0
  261. aws_cdk/aws_sns/__init__.py +263 -29
  262. aws_cdk/aws_sns_subscriptions/__init__.py +265 -2
  263. aws_cdk/aws_sqs/__init__.py +223 -14
  264. aws_cdk/aws_ssm/__init__.py +413 -58
  265. aws_cdk/aws_ssmcontacts/__init__.py +98 -9
  266. aws_cdk/aws_ssmguiconnect/__init__.py +20 -9
  267. aws_cdk/aws_ssmincidents/__init__.py +24 -4
  268. aws_cdk/aws_ssmquicksetup/__init__.py +393 -8
  269. aws_cdk/aws_sso/__init__.py +70 -12
  270. aws_cdk/aws_stepfunctions/__init__.py +823 -94
  271. aws_cdk/aws_stepfunctions_tasks/__init__.py +2323 -150
  272. aws_cdk/aws_supportapp/__init__.py +39 -6
  273. aws_cdk/aws_synthetics/__init__.py +1088 -126
  274. aws_cdk/aws_systemsmanagersap/__init__.py +13 -2
  275. aws_cdk/aws_timestream/__init__.py +104 -8
  276. aws_cdk/aws_transfer/__init__.py +784 -87
  277. aws_cdk/aws_verifiedpermissions/__init__.py +306 -13
  278. aws_cdk/aws_voiceid/__init__.py +54 -5
  279. aws_cdk/aws_vpclattice/__init__.py +589 -231
  280. aws_cdk/aws_waf/__init__.py +79 -14
  281. aws_cdk/aws_wafregional/__init__.py +123 -22
  282. aws_cdk/aws_wafv2/__init__.py +1183 -64
  283. aws_cdk/aws_wisdom/__init__.py +1403 -90
  284. aws_cdk/aws_workspaces/__init__.py +134 -6
  285. aws_cdk/aws_workspacesinstances/__init__.py +3940 -0
  286. aws_cdk/aws_workspacesthinclient/__init__.py +79 -10
  287. aws_cdk/aws_workspacesweb/__init__.py +1057 -141
  288. aws_cdk/aws_xray/__init__.py +48 -8
  289. aws_cdk/cloud_assembly_schema/__init__.py +368 -48
  290. aws_cdk/custom_resources/__init__.py +58 -12
  291. aws_cdk/cx_api/__init__.py +125 -21
  292. aws_cdk/interfaces/__init__.py +739 -0
  293. aws_cdk/interfaces/alexa_ask/__init__.py +146 -0
  294. aws_cdk/interfaces/aws_accessanalyzer/__init__.py +146 -0
  295. aws_cdk/interfaces/aws_acmpca/__init__.py +501 -0
  296. aws_cdk/interfaces/aws_aiops/__init__.py +146 -0
  297. aws_cdk/interfaces/aws_amazonmq/__init__.py +386 -0
  298. aws_cdk/interfaces/aws_amplify/__init__.py +352 -0
  299. aws_cdk/interfaces/aws_amplifyuibuilder/__init__.py +454 -0
  300. aws_cdk/interfaces/aws_apigateway/__init__.py +2486 -0
  301. aws_cdk/interfaces/aws_apigatewayv2/__init__.py +1651 -0
  302. aws_cdk/interfaces/aws_appconfig/__init__.py +1020 -0
  303. aws_cdk/interfaces/aws_appflow/__init__.py +404 -0
  304. aws_cdk/interfaces/aws_appintegrations/__init__.py +396 -0
  305. aws_cdk/interfaces/aws_applicationautoscaling/__init__.py +307 -0
  306. aws_cdk/interfaces/aws_applicationinsights/__init__.py +148 -0
  307. aws_cdk/interfaces/aws_applicationsignals/__init__.py +358 -0
  308. aws_cdk/interfaces/aws_appmesh/__init__.py +888 -0
  309. aws_cdk/interfaces/aws_apprunner/__init__.py +564 -0
  310. aws_cdk/interfaces/aws_appstream/__init__.py +1482 -0
  311. aws_cdk/interfaces/aws_appsync/__init__.py +1326 -0
  312. aws_cdk/interfaces/aws_apptest/__init__.py +163 -0
  313. aws_cdk/interfaces/aws_aps/__init__.py +558 -0
  314. aws_cdk/interfaces/aws_arcregionswitch/__init__.py +146 -0
  315. aws_cdk/interfaces/aws_arczonalshift/__init__.py +273 -0
  316. aws_cdk/interfaces/aws_athena/__init__.py +575 -0
  317. aws_cdk/interfaces/aws_auditmanager/__init__.py +163 -0
  318. aws_cdk/interfaces/aws_autoscaling/__init__.py +705 -0
  319. aws_cdk/interfaces/aws_autoscalingplans/__init__.py +148 -0
  320. aws_cdk/interfaces/aws_b2bi/__init__.py +524 -0
  321. aws_cdk/interfaces/aws_backup/__init__.py +955 -0
  322. aws_cdk/interfaces/aws_backupgateway/__init__.py +146 -0
  323. aws_cdk/interfaces/aws_batch/__init__.py +681 -0
  324. aws_cdk/interfaces/aws_bcmdataexports/__init__.py +146 -0
  325. aws_cdk/interfaces/aws_bedrock/__init__.py +1942 -0
  326. aws_cdk/interfaces/aws_bedrockagentcore/__init__.py +934 -0
  327. aws_cdk/interfaces/aws_billing/__init__.py +146 -0
  328. aws_cdk/interfaces/aws_billingconductor/__init__.py +463 -0
  329. aws_cdk/interfaces/aws_budgets/__init__.py +261 -0
  330. aws_cdk/interfaces/aws_cassandra/__init__.py +381 -0
  331. aws_cdk/interfaces/aws_ce/__init__.py +352 -0
  332. aws_cdk/interfaces/aws_certificatemanager/__init__.py +251 -0
  333. aws_cdk/interfaces/aws_chatbot/__init__.py +366 -0
  334. aws_cdk/interfaces/aws_cleanrooms/__init__.py +1103 -0
  335. aws_cdk/interfaces/aws_cleanroomsml/__init__.py +148 -0
  336. aws_cdk/interfaces/aws_cloud9/__init__.py +166 -0
  337. aws_cdk/interfaces/aws_cloudformation/__init__.py +1919 -0
  338. aws_cdk/interfaces/aws_cloudfront/__init__.py +1998 -0
  339. aws_cdk/interfaces/aws_cloudtrail/__init__.py +570 -0
  340. aws_cdk/interfaces/aws_cloudwatch/__init__.py +733 -0
  341. aws_cdk/interfaces/aws_codeartifact/__init__.py +352 -0
  342. aws_cdk/interfaces/aws_codebuild/__init__.py +487 -0
  343. aws_cdk/interfaces/aws_codecommit/__init__.py +163 -0
  344. aws_cdk/interfaces/aws_codeconnections/__init__.py +146 -0
  345. aws_cdk/interfaces/aws_codedeploy/__init__.py +352 -0
  346. aws_cdk/interfaces/aws_codeguruprofiler/__init__.py +168 -0
  347. aws_cdk/interfaces/aws_codegurureviewer/__init__.py +148 -0
  348. aws_cdk/interfaces/aws_codepipeline/__init__.py +388 -0
  349. aws_cdk/interfaces/aws_codestar/__init__.py +146 -0
  350. aws_cdk/interfaces/aws_codestarconnections/__init__.py +370 -0
  351. aws_cdk/interfaces/aws_codestarnotifications/__init__.py +148 -0
  352. aws_cdk/interfaces/aws_cognito/__init__.py +1929 -0
  353. aws_cdk/interfaces/aws_comprehend/__init__.py +251 -0
  354. aws_cdk/interfaces/aws_config/__init__.py +1165 -0
  355. aws_cdk/interfaces/aws_connect/__init__.py +2949 -0
  356. aws_cdk/interfaces/aws_connectcampaigns/__init__.py +146 -0
  357. aws_cdk/interfaces/aws_connectcampaignsv2/__init__.py +146 -0
  358. aws_cdk/interfaces/aws_controltower/__init__.py +394 -0
  359. aws_cdk/interfaces/aws_cur/__init__.py +146 -0
  360. aws_cdk/interfaces/aws_customerprofiles/__init__.py +915 -0
  361. aws_cdk/interfaces/aws_databrew/__init__.py +661 -0
  362. aws_cdk/interfaces/aws_datapipeline/__init__.py +146 -0
  363. aws_cdk/interfaces/aws_datasync/__init__.py +1384 -0
  364. aws_cdk/interfaces/aws_datazone/__init__.py +2238 -0
  365. aws_cdk/interfaces/aws_dax/__init__.py +364 -0
  366. aws_cdk/interfaces/aws_deadline/__init__.py +1303 -0
  367. aws_cdk/interfaces/aws_detective/__init__.py +364 -0
  368. aws_cdk/interfaces/aws_devicefarm/__init__.py +663 -0
  369. aws_cdk/interfaces/aws_devopsguru/__init__.py +362 -0
  370. aws_cdk/interfaces/aws_directoryservice/__init__.py +251 -0
  371. aws_cdk/interfaces/aws_dlm/__init__.py +166 -0
  372. aws_cdk/interfaces/aws_dms/__init__.py +1176 -0
  373. aws_cdk/interfaces/aws_docdb/__init__.py +560 -0
  374. aws_cdk/interfaces/aws_docdbelastic/__init__.py +146 -0
  375. aws_cdk/interfaces/aws_dsql/__init__.py +146 -0
  376. aws_cdk/interfaces/aws_dynamodb/__init__.py +278 -0
  377. aws_cdk/interfaces/aws_ec2/__init__.py +11963 -0
  378. aws_cdk/interfaces/aws_ecr/__init__.py +814 -0
  379. aws_cdk/interfaces/aws_ecs/__init__.py +845 -0
  380. aws_cdk/interfaces/aws_efs/__init__.py +392 -0
  381. aws_cdk/interfaces/aws_eks/__init__.py +948 -0
  382. aws_cdk/interfaces/aws_elasticache/__init__.py +1108 -0
  383. aws_cdk/interfaces/aws_elasticbeanstalk/__init__.py +503 -0
  384. aws_cdk/interfaces/aws_elasticloadbalancing/__init__.py +148 -0
  385. aws_cdk/interfaces/aws_elasticloadbalancingv2/__init__.py +795 -0
  386. aws_cdk/interfaces/aws_elasticsearch/__init__.py +158 -0
  387. aws_cdk/interfaces/aws_emr/__init__.py +913 -0
  388. aws_cdk/interfaces/aws_emrcontainers/__init__.py +168 -0
  389. aws_cdk/interfaces/aws_emrserverless/__init__.py +166 -0
  390. aws_cdk/interfaces/aws_entityresolution/__init__.py +608 -0
  391. aws_cdk/interfaces/aws_events/__init__.py +872 -0
  392. aws_cdk/interfaces/aws_eventschemas/__init__.py +455 -0
  393. aws_cdk/interfaces/aws_evidently/__init__.py +558 -0
  394. aws_cdk/interfaces/aws_evs/__init__.py +166 -0
  395. aws_cdk/interfaces/aws_finspace/__init__.py +166 -0
  396. aws_cdk/interfaces/aws_fis/__init__.py +271 -0
  397. aws_cdk/interfaces/aws_fms/__init__.py +364 -0
  398. aws_cdk/interfaces/aws_forecast/__init__.py +249 -0
  399. aws_cdk/interfaces/aws_frauddetector/__init__.py +764 -0
  400. aws_cdk/interfaces/aws_fsx/__init__.py +663 -0
  401. aws_cdk/interfaces/aws_gamelift/__init__.py +1325 -0
  402. aws_cdk/interfaces/aws_gameliftstreams/__init__.py +249 -0
  403. aws_cdk/interfaces/aws_globalaccelerator/__init__.py +461 -0
  404. aws_cdk/interfaces/aws_glue/__init__.py +2377 -0
  405. aws_cdk/interfaces/aws_grafana/__init__.py +146 -0
  406. aws_cdk/interfaces/aws_greengrass/__init__.py +1871 -0
  407. aws_cdk/interfaces/aws_greengrassv2/__init__.py +251 -0
  408. aws_cdk/interfaces/aws_groundstation/__init__.py +396 -0
  409. aws_cdk/interfaces/aws_guardduty/__init__.py +1225 -0
  410. aws_cdk/interfaces/aws_healthimaging/__init__.py +163 -0
  411. aws_cdk/interfaces/aws_healthlake/__init__.py +146 -0
  412. aws_cdk/interfaces/aws_iam/__init__.py +1803 -0
  413. aws_cdk/interfaces/aws_identitystore/__init__.py +288 -0
  414. aws_cdk/interfaces/aws_imagebuilder/__init__.py +984 -0
  415. aws_cdk/interfaces/aws_inspector/__init__.py +354 -0
  416. aws_cdk/interfaces/aws_inspectorv2/__init__.py +467 -0
  417. aws_cdk/interfaces/aws_internetmonitor/__init__.py +163 -0
  418. aws_cdk/interfaces/aws_invoicing/__init__.py +146 -0
  419. aws_cdk/interfaces/aws_iot/__init__.py +3483 -0
  420. aws_cdk/interfaces/aws_iotanalytics/__init__.py +455 -0
  421. aws_cdk/interfaces/aws_iotcoredeviceadvisor/__init__.py +168 -0
  422. aws_cdk/interfaces/aws_iotevents/__init__.py +352 -0
  423. aws_cdk/interfaces/aws_iotfleethub/__init__.py +166 -0
  424. aws_cdk/interfaces/aws_iotfleetwise/__init__.py +892 -0
  425. aws_cdk/interfaces/aws_iotsitewise/__init__.py +1097 -0
  426. aws_cdk/interfaces/aws_iotthingsgraph/__init__.py +146 -0
  427. aws_cdk/interfaces/aws_iottwinmaker/__init__.py +711 -0
  428. aws_cdk/interfaces/aws_iotwireless/__init__.py +1401 -0
  429. aws_cdk/interfaces/aws_ivs/__init__.py +1075 -0
  430. aws_cdk/interfaces/aws_ivschat/__init__.py +251 -0
  431. aws_cdk/interfaces/aws_kafkaconnect/__init__.py +354 -0
  432. aws_cdk/interfaces/aws_kendra/__init__.py +428 -0
  433. aws_cdk/interfaces/aws_kendraranking/__init__.py +166 -0
  434. aws_cdk/interfaces/aws_kinesis/__init__.py +364 -0
  435. aws_cdk/interfaces/aws_kinesisanalytics/__init__.py +364 -0
  436. aws_cdk/interfaces/aws_kinesisanalyticsv2/__init__.py +479 -0
  437. aws_cdk/interfaces/aws_kinesisfirehose/__init__.py +168 -0
  438. aws_cdk/interfaces/aws_kinesisvideo/__init__.py +283 -0
  439. aws_cdk/interfaces/aws_kms/__init__.py +376 -0
  440. aws_cdk/interfaces/aws_lakeformation/__init__.py +860 -0
  441. aws_cdk/interfaces/aws_lambda/__init__.py +1141 -0
  442. aws_cdk/interfaces/aws_launchwizard/__init__.py +146 -0
  443. aws_cdk/interfaces/aws_lex/__init__.py +513 -0
  444. aws_cdk/interfaces/aws_licensemanager/__init__.py +249 -0
  445. aws_cdk/interfaces/aws_lightsail/__init__.py +1744 -0
  446. aws_cdk/interfaces/aws_location/__init__.py +879 -0
  447. aws_cdk/interfaces/aws_logs/__init__.py +1667 -0
  448. aws_cdk/interfaces/aws_lookoutequipment/__init__.py +168 -0
  449. aws_cdk/interfaces/aws_lookoutmetrics/__init__.py +251 -0
  450. aws_cdk/interfaces/aws_lookoutvision/__init__.py +163 -0
  451. aws_cdk/interfaces/aws_m2/__init__.py +352 -0
  452. aws_cdk/interfaces/aws_macie/__init__.py +512 -0
  453. aws_cdk/interfaces/aws_managedblockchain/__init__.py +381 -0
  454. aws_cdk/interfaces/aws_mediaconnect/__init__.py +1028 -0
  455. aws_cdk/interfaces/aws_mediaconvert/__init__.py +396 -0
  456. aws_cdk/interfaces/aws_medialive/__init__.py +1755 -0
  457. aws_cdk/interfaces/aws_mediapackage/__init__.py +644 -0
  458. aws_cdk/interfaces/aws_mediapackagev2/__init__.py +618 -0
  459. aws_cdk/interfaces/aws_mediastore/__init__.py +146 -0
  460. aws_cdk/interfaces/aws_mediatailor/__init__.py +788 -0
  461. aws_cdk/interfaces/aws_memorydb/__init__.py +685 -0
  462. aws_cdk/interfaces/aws_mpa/__init__.py +249 -0
  463. aws_cdk/interfaces/aws_msk/__init__.py +764 -0
  464. aws_cdk/interfaces/aws_mwaa/__init__.py +166 -0
  465. aws_cdk/interfaces/aws_neptune/__init__.py +663 -0
  466. aws_cdk/interfaces/aws_neptunegraph/__init__.py +265 -0
  467. aws_cdk/interfaces/aws_networkfirewall/__init__.py +669 -0
  468. aws_cdk/interfaces/aws_networkmanager/__init__.py +1832 -0
  469. aws_cdk/interfaces/aws_nimblestudio/__init__.py +388 -0
  470. aws_cdk/interfaces/aws_notifications/__init__.py +868 -0
  471. aws_cdk/interfaces/aws_notificationscontacts/__init__.py +148 -0
  472. aws_cdk/interfaces/aws_oam/__init__.py +249 -0
  473. aws_cdk/interfaces/aws_observabilityadmin/__init__.py +362 -0
  474. aws_cdk/interfaces/aws_odb/__init__.py +562 -0
  475. aws_cdk/interfaces/aws_omics/__init__.py +838 -0
  476. aws_cdk/interfaces/aws_opensearchserverless/__init__.py +859 -0
  477. aws_cdk/interfaces/aws_opensearchservice/__init__.py +283 -0
  478. aws_cdk/interfaces/aws_opsworks/__init__.py +772 -0
  479. aws_cdk/interfaces/aws_opsworkscm/__init__.py +146 -0
  480. aws_cdk/interfaces/aws_organizations/__init__.py +646 -0
  481. aws_cdk/interfaces/aws_osis/__init__.py +146 -0
  482. aws_cdk/interfaces/aws_panorama/__init__.py +420 -0
  483. aws_cdk/interfaces/aws_paymentcryptography/__init__.py +249 -0
  484. aws_cdk/interfaces/aws_pcaconnectorad/__init__.py +608 -0
  485. aws_cdk/interfaces/aws_pcaconnectorscep/__init__.py +249 -0
  486. aws_cdk/interfaces/aws_pcs/__init__.py +352 -0
  487. aws_cdk/interfaces/aws_personalize/__init__.py +455 -0
  488. aws_cdk/interfaces/aws_pinpoint/__init__.py +2125 -0
  489. aws_cdk/interfaces/aws_pinpointemail/__init__.py +467 -0
  490. aws_cdk/interfaces/aws_pipes/__init__.py +158 -0
  491. aws_cdk/interfaces/aws_proton/__init__.py +360 -0
  492. aws_cdk/interfaces/aws_qbusiness/__init__.py +1122 -0
  493. aws_cdk/interfaces/aws_qldb/__init__.py +283 -0
  494. aws_cdk/interfaces/aws_quicksight/__init__.py +1566 -0
  495. aws_cdk/interfaces/aws_ram/__init__.py +249 -0
  496. aws_cdk/interfaces/aws_rbin/__init__.py +146 -0
  497. aws_cdk/interfaces/aws_rds/__init__.py +1780 -0
  498. aws_cdk/interfaces/aws_redshift/__init__.py +1104 -0
  499. aws_cdk/interfaces/aws_redshiftserverless/__init__.py +356 -0
  500. aws_cdk/interfaces/aws_refactorspaces/__init__.py +605 -0
  501. aws_cdk/interfaces/aws_rekognition/__init__.py +406 -0
  502. aws_cdk/interfaces/aws_resiliencehub/__init__.py +251 -0
  503. aws_cdk/interfaces/aws_resourceexplorer2/__init__.py +354 -0
  504. aws_cdk/interfaces/aws_resourcegroups/__init__.py +261 -0
  505. aws_cdk/interfaces/aws_robomaker/__init__.py +673 -0
  506. aws_cdk/interfaces/aws_rolesanywhere/__init__.py +384 -0
  507. aws_cdk/interfaces/aws_route53/__init__.py +804 -0
  508. aws_cdk/interfaces/aws_route53profiles/__init__.py +368 -0
  509. aws_cdk/interfaces/aws_route53recoverycontrol/__init__.py +463 -0
  510. aws_cdk/interfaces/aws_route53recoveryreadiness/__init__.py +535 -0
  511. aws_cdk/interfaces/aws_route53resolver/__init__.py +1356 -0
  512. aws_cdk/interfaces/aws_rtbfabric/__init__.py +352 -0
  513. aws_cdk/interfaces/aws_rum/__init__.py +146 -0
  514. aws_cdk/interfaces/aws_s3/__init__.py +1171 -0
  515. aws_cdk/interfaces/aws_s3express/__init__.py +392 -0
  516. aws_cdk/interfaces/aws_s3objectlambda/__init__.py +271 -0
  517. aws_cdk/interfaces/aws_s3outposts/__init__.py +455 -0
  518. aws_cdk/interfaces/aws_s3tables/__init__.py +575 -0
  519. aws_cdk/interfaces/aws_s3vectors/__init__.py +354 -0
  520. aws_cdk/interfaces/aws_sagemaker/__init__.py +3797 -0
  521. aws_cdk/interfaces/aws_sam/__init__.py +603 -0
  522. aws_cdk/interfaces/aws_scheduler/__init__.py +286 -0
  523. aws_cdk/interfaces/aws_sdb/__init__.py +146 -0
  524. aws_cdk/interfaces/aws_secretsmanager/__init__.py +461 -0
  525. aws_cdk/interfaces/aws_securityhub/__init__.py +1499 -0
  526. aws_cdk/interfaces/aws_securitylake/__init__.py +474 -0
  527. aws_cdk/interfaces/aws_servicecatalog/__init__.py +1829 -0
  528. aws_cdk/interfaces/aws_servicecatalogappregistry/__init__.py +557 -0
  529. aws_cdk/interfaces/aws_servicediscovery/__init__.py +636 -0
  530. aws_cdk/interfaces/aws_ses/__init__.py +2018 -0
  531. aws_cdk/interfaces/aws_shield/__init__.py +455 -0
  532. aws_cdk/interfaces/aws_signer/__init__.py +266 -0
  533. aws_cdk/interfaces/aws_simspaceweaver/__init__.py +146 -0
  534. aws_cdk/interfaces/aws_smsvoice/__init__.py +892 -0
  535. aws_cdk/interfaces/aws_sns/__init__.py +455 -0
  536. aws_cdk/interfaces/aws_sqs/__init__.py +364 -0
  537. aws_cdk/interfaces/aws_ssm/__init__.py +982 -0
  538. aws_cdk/interfaces/aws_ssmcontacts/__init__.py +455 -0
  539. aws_cdk/interfaces/aws_ssmguiconnect/__init__.py +146 -0
  540. aws_cdk/interfaces/aws_ssmincidents/__init__.py +249 -0
  541. aws_cdk/interfaces/aws_ssmquicksetup/__init__.py +253 -0
  542. aws_cdk/interfaces/aws_sso/__init__.py +797 -0
  543. aws_cdk/interfaces/aws_stepfunctions/__init__.py +459 -0
  544. aws_cdk/interfaces/aws_supportapp/__init__.py +372 -0
  545. aws_cdk/interfaces/aws_synthetics/__init__.py +249 -0
  546. aws_cdk/interfaces/aws_systemsmanagersap/__init__.py +148 -0
  547. aws_cdk/interfaces/aws_timestream/__init__.py +526 -0
  548. aws_cdk/interfaces/aws_transfer/__init__.py +967 -0
  549. aws_cdk/interfaces/aws_verifiedpermissions/__init__.py +538 -0
  550. aws_cdk/interfaces/aws_voiceid/__init__.py +146 -0
  551. aws_cdk/interfaces/aws_vpclattice/__init__.py +1418 -0
  552. aws_cdk/interfaces/aws_waf/__init__.py +764 -0
  553. aws_cdk/interfaces/aws_wafregional/__init__.py +1182 -0
  554. aws_cdk/interfaces/aws_wafv2/__init__.py +870 -0
  555. aws_cdk/interfaces/aws_wisdom/__init__.py +1556 -0
  556. aws_cdk/interfaces/aws_workspaces/__init__.py +352 -0
  557. aws_cdk/interfaces/aws_workspacesinstances/__init__.py +390 -0
  558. aws_cdk/interfaces/aws_workspacesthinclient/__init__.py +168 -0
  559. aws_cdk/interfaces/aws_workspacesweb/__init__.py +1085 -0
  560. aws_cdk/interfaces/aws_xray/__init__.py +457 -0
  561. aws_cdk/lambda_layer_awscli/__init__.py +6 -0
  562. aws_cdk/lambda_layer_node_proxy_agent/__init__.py +6 -0
  563. aws_cdk/pipelines/__init__.py +202 -52
  564. aws_cdk/region_info/__init__.py +3 -0
  565. aws_cdk/triggers/__init__.py +66 -18
  566. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/METADATA +418 -18
  567. aws_cdk_lib-2.224.0.dist-info/RECORD +584 -0
  568. aws_cdk_lib-2.195.0.dist-info/RECORD +0 -304
  569. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/LICENSE +0 -0
  570. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/NOTICE +0 -0
  571. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/WHEEL +0 -0
  572. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/top_level.txt +0 -0
@@ -79,13 +79,13 @@ This example defines an Amazon EKS cluster with the following configuration:
79
79
  * A Kubernetes pod with a container based on the [paulbouwer/hello-kubernetes](https://github.com/paulbouwer/hello-kubernetes) image.
80
80
 
81
81
  ```python
82
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
82
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
83
83
 
84
84
 
85
85
  # provisioning a cluster
86
86
  cluster = eks.Cluster(self, "hello-eks",
87
- version=eks.KubernetesVersion.V1_32,
88
- kubectl_layer=KubectlV32Layer(self, "kubectl")
87
+ version=eks.KubernetesVersion.V1_34,
88
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
89
89
  )
90
90
 
91
91
  # apply a kubernetes manifest to the cluster
@@ -149,24 +149,46 @@ A more detailed breakdown of each is provided further down this README.
149
149
  Creating a new cluster is done using the `Cluster` or `FargateCluster` constructs. The only required properties are the kubernetes `version` and `kubectlLayer`.
150
150
 
151
151
  ```python
152
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
152
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
153
153
 
154
154
 
155
155
  eks.Cluster(self, "HelloEKS",
156
- version=eks.KubernetesVersion.V1_32,
157
- kubectl_layer=KubectlV32Layer(self, "kubectl")
156
+ version=eks.KubernetesVersion.V1_34,
157
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
158
+ )
159
+ ```
160
+
161
+ You can control what happens to the resources created by the cluster construct when they are no longer managed by CloudFormation by specifying a `removalPolicy`.
162
+
163
+ This can happen in one of three situations:
164
+
165
+ * The resource is removed from the template, so CloudFormation stops managing it;
166
+ * A change to the resource is made that requires it to be replaced, so CloudFormation stops managing it;
167
+ * The stack is deleted, so CloudFormation stops managing all resources in it.
168
+
169
+ This affects the EKS cluster itself, the custom resource that created the cluster, associated IAM roles, node groups, security groups, VPC and any other CloudFormation resources managed by this construct.
170
+
171
+ ```python
172
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
173
+ import aws_cdk as core
174
+
175
+
176
+ eks.Cluster(self, "HelloEKS",
177
+ version=eks.KubernetesVersion.V1_34,
178
+ kubectl_layer=KubectlV34Layer(self, "kubectl"),
179
+ removal_policy=core.RemovalPolicy.RETAIN
158
180
  )
159
181
  ```
160
182
 
161
183
  You can also use `FargateCluster` to provision a cluster that uses only fargate workers.
162
184
 
163
185
  ```python
164
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
186
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
165
187
 
166
188
 
167
189
  eks.FargateCluster(self, "HelloEKS",
168
- version=eks.KubernetesVersion.V1_32,
169
- kubectl_layer=KubectlV32Layer(self, "kubectl")
190
+ version=eks.KubernetesVersion.V1_34,
191
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
170
192
  )
171
193
  ```
172
194
 
@@ -189,14 +211,14 @@ By default, this library will allocate a managed node group with 2 *m5.large* in
189
211
  At cluster instantiation time, you can customize the number of instances and their type:
190
212
 
191
213
  ```python
192
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
214
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
193
215
 
194
216
 
195
217
  eks.Cluster(self, "HelloEKS",
196
- version=eks.KubernetesVersion.V1_32,
218
+ version=eks.KubernetesVersion.V1_34,
197
219
  default_capacity=5,
198
220
  default_capacity_instance=ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.SMALL),
199
- kubectl_layer=KubectlV32Layer(self, "kubectl")
221
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
200
222
  )
201
223
  ```
202
224
 
@@ -205,13 +227,13 @@ To access the node group that was created on your behalf, you can use `cluster.d
205
227
  Additional customizations are available post instantiation. To apply them, set the default capacity to 0, and use the `cluster.addNodegroupCapacity` method:
206
228
 
207
229
  ```python
208
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
230
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
209
231
 
210
232
 
211
233
  cluster = eks.Cluster(self, "HelloEKS",
212
- version=eks.KubernetesVersion.V1_32,
234
+ version=eks.KubernetesVersion.V1_34,
213
235
  default_capacity=0,
214
- kubectl_layer=KubectlV32Layer(self, "kubectl")
236
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
215
237
  )
216
238
 
217
239
  cluster.add_nodegroup_capacity("custom-node-group",
@@ -290,7 +312,7 @@ Node groups are available with IPv6 configured networks. For custom roles assig
290
312
  > For more details visit [Configuring the Amazon VPC CNI plugin for Kubernetes to use IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/cni-iam-role.html#cni-iam-role-create-role)
291
313
 
292
314
  ```python
293
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
315
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
294
316
 
295
317
 
296
318
  ipv6_management = iam.PolicyDocument(
@@ -315,9 +337,9 @@ eks_cluster_node_group_role = iam.Role(self, "eksClusterNodeGroupRole",
315
337
  )
316
338
 
317
339
  cluster = eks.Cluster(self, "HelloEKS",
318
- version=eks.KubernetesVersion.V1_32,
340
+ version=eks.KubernetesVersion.V1_34,
319
341
  default_capacity=0,
320
- kubectl_layer=KubectlV32Layer(self, "kubectl")
342
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
321
343
  )
322
344
 
323
345
  cluster.add_nodegroup_capacity("custom-node-group",
@@ -426,13 +448,13 @@ has been changed. As a workaround, you need to add a temporary policy to the clu
426
448
  successful replacement. Consider this example if you are renaming the cluster from `foo` to `bar`:
427
449
 
428
450
  ```python
429
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
451
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
430
452
 
431
453
 
432
454
  cluster = eks.Cluster(self, "cluster-to-rename",
433
455
  cluster_name="foo", # rename this to 'bar'
434
- kubectl_layer=KubectlV32Layer(self, "kubectl"),
435
- version=eks.KubernetesVersion.V1_32
456
+ kubectl_layer=KubectlV34Layer(self, "kubectl"),
457
+ version=eks.KubernetesVersion.V1_34
436
458
  )
437
459
 
438
460
  # allow the cluster admin role to delete the cluster 'foo'
@@ -485,12 +507,12 @@ To create an EKS cluster that **only** uses Fargate capacity, you can use `Farga
485
507
  The following code defines an Amazon EKS cluster with a default Fargate Profile that matches all pods from the "kube-system" and "default" namespaces. It is also configured to [run CoreDNS on Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate-getting-started.html#fargate-gs-coredns).
486
508
 
487
509
  ```python
488
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
510
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
489
511
 
490
512
 
491
513
  cluster = eks.FargateCluster(self, "MyCluster",
492
- version=eks.KubernetesVersion.V1_32,
493
- kubectl_layer=KubectlV32Layer(self, "kubectl")
514
+ version=eks.KubernetesVersion.V1_34,
515
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
494
516
  )
495
517
  ```
496
518
 
@@ -570,13 +592,13 @@ To disable bootstrapping altogether (i.e. to fully customize user-data), set `bo
570
592
  You can also configure the cluster to use an auto-scaling group as the default capacity:
571
593
 
572
594
  ```python
573
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
595
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
574
596
 
575
597
 
576
598
  cluster = eks.Cluster(self, "HelloEKS",
577
- version=eks.KubernetesVersion.V1_32,
599
+ version=eks.KubernetesVersion.V1_34,
578
600
  default_capacity_type=eks.DefaultCapacityType.EC2,
579
- kubectl_layer=KubectlV32Layer(self, "kubectl")
601
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
580
602
  )
581
603
  ```
582
604
 
@@ -683,13 +705,13 @@ AWS Identity and Access Management (IAM) and native Kubernetes [Role Based Acces
683
705
  You can configure the [cluster endpoint access](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) by using the `endpointAccess` property:
684
706
 
685
707
  ```python
686
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
708
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
687
709
 
688
710
 
689
711
  cluster = eks.Cluster(self, "hello-eks",
690
- version=eks.KubernetesVersion.V1_32,
712
+ version=eks.KubernetesVersion.V1_34,
691
713
  endpoint_access=eks.EndpointAccess.PRIVATE, # No access outside of your VPC.
692
- kubectl_layer=KubectlV32Layer(self, "kubectl")
714
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
693
715
  )
694
716
  ```
695
717
 
@@ -709,33 +731,33 @@ From the docs:
709
731
  To deploy the controller on your EKS cluster, configure the `albController` property:
710
732
 
711
733
  ```python
712
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
734
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
713
735
 
714
736
 
715
737
  eks.Cluster(self, "HelloEKS",
716
- version=eks.KubernetesVersion.V1_32,
738
+ version=eks.KubernetesVersion.V1_34,
717
739
  alb_controller=eks.AlbControllerOptions(
718
740
  version=eks.AlbControllerVersion.V2_8_2
719
741
  ),
720
- kubectl_layer=KubectlV32Layer(self, "kubectl")
742
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
721
743
  )
722
744
  ```
723
745
 
724
746
  To provide additional Helm chart values supported by `albController` in CDK, use the `additionalHelmChartValues` property. For example, the following code snippet shows how to set the `enableWafV2` flag:
725
747
 
726
748
  ```python
727
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
749
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
728
750
 
729
751
 
730
752
  eks.Cluster(self, "HelloEKS",
731
- version=eks.KubernetesVersion.V1_32,
753
+ version=eks.KubernetesVersion.V1_34,
732
754
  alb_controller=eks.AlbControllerOptions(
733
755
  version=eks.AlbControllerVersion.V2_8_2,
734
756
  additional_helm_chart_values=eks.AlbControllerHelmChartOptions(
735
757
  enable_wafv2=False
736
758
  )
737
759
  ),
738
- kubectl_layer=KubectlV32Layer(self, "kubectl")
760
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
739
761
  )
740
762
  ```
741
763
 
@@ -772,16 +794,16 @@ if cluster.alb_controller:
772
794
  You can specify the VPC of the cluster using the `vpc` and `vpcSubnets` properties:
773
795
 
774
796
  ```python
775
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
797
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
776
798
 
777
799
  # vpc: ec2.Vpc
778
800
 
779
801
 
780
802
  eks.Cluster(self, "HelloEKS",
781
- version=eks.KubernetesVersion.V1_32,
803
+ version=eks.KubernetesVersion.V1_34,
782
804
  vpc=vpc,
783
805
  vpc_subnets=[ec2.SubnetSelection(subnet_type=ec2.SubnetType.PRIVATE_WITH_EGRESS)],
784
- kubectl_layer=KubectlV32Layer(self, "kubectl")
806
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
785
807
  )
786
808
  ```
787
809
 
@@ -825,12 +847,12 @@ The `ClusterHandler` is a set of Lambda functions (`onEventHandler`, `isComplete
825
847
  You can configure the environment of the Cluster Handler functions by specifying it at cluster instantiation. For example, this can be useful in order to configure an http proxy:
826
848
 
827
849
  ```python
828
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
850
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
829
851
 
830
852
  # proxy_instance_security_group: ec2.SecurityGroup
831
853
 
832
854
  cluster = eks.Cluster(self, "hello-eks",
833
- version=eks.KubernetesVersion.V1_32,
855
+ version=eks.KubernetesVersion.V1_34,
834
856
  cluster_handler_environment={
835
857
  "https_proxy": "http://proxy.myproxy.com"
836
858
  },
@@ -839,7 +861,7 @@ cluster = eks.Cluster(self, "hello-eks",
839
861
  # Cluster Handler Lambdas so that it can reach the proxy.
840
862
  #
841
863
  cluster_handler_security_group=proxy_instance_security_group,
842
- kubectl_layer=KubectlV32Layer(self, "kubectl")
864
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
843
865
  )
844
866
  ```
845
867
 
@@ -848,7 +870,7 @@ cluster = eks.Cluster(self, "hello-eks",
848
870
  You can optionally choose to configure your cluster to use IPv6 using the [`ipFamily`](https://docs.aws.amazon.com/eks/latest/APIReference/API_KubernetesNetworkConfigRequest.html#AmazonEKS-Type-KubernetesNetworkConfigRequest-ipFamily) definition for your cluster. Note that this will require the underlying subnets to have an associated IPv6 CIDR.
849
871
 
850
872
  ```python
851
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
873
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
852
874
  # vpc: ec2.Vpc
853
875
 
854
876
 
@@ -873,11 +895,11 @@ for subnet in subnets:
873
895
  subnetcount = subnetcount + 1
874
896
 
875
897
  cluster = eks.Cluster(self, "hello-eks",
876
- version=eks.KubernetesVersion.V1_32,
898
+ version=eks.KubernetesVersion.V1_34,
877
899
  vpc=vpc,
878
900
  ip_family=eks.IpFamily.IP_V6,
879
901
  vpc_subnets=[ec2.SubnetSelection(subnets=vpc.public_subnets)],
880
- kubectl_layer=KubectlV32Layer(self, "kubectl")
902
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
881
903
  )
882
904
  ```
883
905
 
@@ -908,15 +930,15 @@ cluster = eks.Cluster.from_cluster_attributes(self, "Cluster",
908
930
  You can configure the environment of this function by specifying it at cluster instantiation. For example, this can be useful in order to configure an http proxy:
909
931
 
910
932
  ```python
911
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
933
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
912
934
 
913
935
 
914
936
  cluster = eks.Cluster(self, "hello-eks",
915
- version=eks.KubernetesVersion.V1_32,
937
+ version=eks.KubernetesVersion.V1_34,
916
938
  kubectl_environment={
917
939
  "http_proxy": "http://proxy.myproxy.com"
918
940
  },
919
- kubectl_layer=KubectlV32Layer(self, "kubectl")
941
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
920
942
  )
921
943
  ```
922
944
 
@@ -933,12 +955,12 @@ Depending on which version of kubernetes you're targeting, you will need to use
933
955
  the `@aws-cdk/lambda-layer-kubectl-vXY` packages.
934
956
 
935
957
  ```python
936
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
958
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
937
959
 
938
960
 
939
961
  cluster = eks.Cluster(self, "hello-eks",
940
- version=eks.KubernetesVersion.V1_32,
941
- kubectl_layer=KubectlV32Layer(self, "kubectl")
962
+ version=eks.KubernetesVersion.V1_34,
963
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
942
964
  )
943
965
  ```
944
966
 
@@ -974,7 +996,7 @@ cluster1 = eks.Cluster(self, "MyCluster",
974
996
  kubectl_layer=layer,
975
997
  vpc=vpc,
976
998
  cluster_name="cluster-name",
977
- version=eks.KubernetesVersion.V1_32
999
+ version=eks.KubernetesVersion.V1_34
978
1000
  )
979
1001
 
980
1002
  # or
@@ -990,7 +1012,7 @@ cluster2 = eks.Cluster.from_cluster_attributes(self, "MyCluster",
990
1012
  By default, the kubectl provider is configured with 1024MiB of memory. You can use the `kubectlMemory` option to specify the memory size for the AWS Lambda function:
991
1013
 
992
1014
  ```python
993
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1015
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
994
1016
 
995
1017
  # or
996
1018
  # vpc: ec2.Vpc
@@ -998,8 +1020,8 @@ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
998
1020
 
999
1021
  eks.Cluster(self, "MyCluster",
1000
1022
  kubectl_memory=Size.gibibytes(4),
1001
- version=eks.KubernetesVersion.V1_32,
1002
- kubectl_layer=KubectlV32Layer(self, "kubectl")
1023
+ version=eks.KubernetesVersion.V1_34,
1024
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
1003
1025
  )
1004
1026
  eks.Cluster.from_cluster_attributes(self, "MyCluster",
1005
1027
  kubectl_memory=Size.gibibytes(4),
@@ -1034,14 +1056,14 @@ cluster.add_auto_scaling_group_capacity("self-ng-arm",
1034
1056
  When you create a cluster, you can specify a `mastersRole`. The `Cluster` construct will associate this role with the `system:masters` [RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) group, giving it super-user access to the cluster.
1035
1057
 
1036
1058
  ```python
1037
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1059
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
1038
1060
 
1039
1061
  # role: iam.Role
1040
1062
 
1041
1063
  eks.Cluster(self, "HelloEKS",
1042
- version=eks.KubernetesVersion.V1_32,
1064
+ version=eks.KubernetesVersion.V1_34,
1043
1065
  masters_role=role,
1044
- kubectl_layer=KubectlV32Layer(self, "kubectl")
1066
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
1045
1067
  )
1046
1068
  ```
1047
1069
 
@@ -1087,28 +1109,28 @@ You can use the `secretsEncryptionKey` to configure which key the cluster will u
1087
1109
  > This setting can only be specified when the cluster is created and cannot be updated.
1088
1110
 
1089
1111
  ```python
1090
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1112
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
1091
1113
 
1092
1114
 
1093
1115
  secrets_key = kms.Key(self, "SecretsKey")
1094
1116
  cluster = eks.Cluster(self, "MyCluster",
1095
1117
  secrets_encryption_key=secrets_key,
1096
- version=eks.KubernetesVersion.V1_32,
1097
- kubectl_layer=KubectlV32Layer(self, "kubectl")
1118
+ version=eks.KubernetesVersion.V1_34,
1119
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
1098
1120
  )
1099
1121
  ```
1100
1122
 
1101
1123
  You can also use a similar configuration for running a cluster built using the FargateCluster construct.
1102
1124
 
1103
1125
  ```python
1104
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1126
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
1105
1127
 
1106
1128
 
1107
1129
  secrets_key = kms.Key(self, "SecretsKey")
1108
1130
  cluster = eks.FargateCluster(self, "MyFargateCluster",
1109
1131
  secrets_encryption_key=secrets_key,
1110
- version=eks.KubernetesVersion.V1_32,
1111
- kubectl_layer=KubectlV32Layer(self, "kubectl")
1132
+ version=eks.KubernetesVersion.V1_34,
1133
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
1112
1134
  )
1113
1135
  ```
1114
1136
 
@@ -1127,12 +1149,12 @@ When you create an Amazon EKS cluster, you can configure it to leverage the [EKS
1127
1149
  Once you have identified the on-premises node and pod (optional) CIDRs you will use for your hybrid nodes and the workloads running on them, you can specify them during cluster creation using the `remoteNodeNetworks` and `remotePodNetworks` (optional) properties:
1128
1150
 
1129
1151
  ```python
1130
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1152
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
1131
1153
 
1132
1154
 
1133
1155
  eks.Cluster(self, "Cluster",
1134
- version=eks.KubernetesVersion.V1_32,
1135
- kubectl_layer=KubectlV32Layer(self, "KubectlLayer"),
1156
+ version=eks.KubernetesVersion.V1_34,
1157
+ kubectl_layer=KubectlV34Layer(self, "KubectlLayer"),
1136
1158
  remote_node_networks=[eks.RemoteNodeNetwork(
1137
1159
  cidrs=["10.0.0.0/16"]
1138
1160
  )
@@ -1144,6 +1166,12 @@ eks.Cluster(self, "Cluster",
1144
1166
  )
1145
1167
  ```
1146
1168
 
1169
+ ### Self-Managed Add-ons
1170
+
1171
+ Amazon EKS automatically installs self-managed add-ons such as the Amazon VPC CNI plugin for Kubernetes, kube-proxy, and CoreDNS for every cluster. You can change the default configuration of the add-ons and update them when desired. If you wish to create a cluster without the default add-ons, set `bootstrapSelfManagedAddons` as `false`. When this is set to false, make sure to install the necessary alternatives which provide functionality that enables pod and service operations for your EKS cluster.
1172
+
1173
+ > Changing the value of `bootstrapSelfManagedAddons` after the EKS cluster creation will result in a replacement of the cluster.
1174
+
1147
1175
  ## Permissions and Security
1148
1176
 
1149
1177
  Amazon EKS provides several mechanism of securing the cluster and granting permissions to specific IAM users and roles.
@@ -1179,7 +1207,7 @@ To access the Kubernetes resources from the console, make sure your viewing prin
1179
1207
  in the `aws-auth` ConfigMap. Some options to consider:
1180
1208
 
1181
1209
  ```python
1182
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1210
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
1183
1211
  # cluster: eks.Cluster
1184
1212
  # your_current_role: iam.Role
1185
1213
  # vpc: ec2.Vpc
@@ -1197,7 +1225,7 @@ your_current_role.add_to_policy(iam.PolicyStatement(
1197
1225
 
1198
1226
  ```python
1199
1227
  # Option 2: create your custom mastersRole with scoped assumeBy arn as the Cluster prop. Switch to this role from the AWS console.
1200
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1228
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
1201
1229
  # vpc: ec2.Vpc
1202
1230
 
1203
1231
 
@@ -1207,8 +1235,8 @@ masters_role = iam.Role(self, "MastersRole",
1207
1235
 
1208
1236
  cluster = eks.Cluster(self, "EksCluster",
1209
1237
  vpc=vpc,
1210
- version=eks.KubernetesVersion.V1_32,
1211
- kubectl_layer=KubectlV32Layer(self, "KubectlLayer"),
1238
+ version=eks.KubernetesVersion.V1_34,
1239
+ kubectl_layer=KubectlV34Layer(self, "KubectlLayer"),
1212
1240
  masters_role=masters_role
1213
1241
  )
1214
1242
 
@@ -1247,14 +1275,14 @@ AWS IAM principals from both Amazon EKS access entry APIs and the aws-auth confi
1247
1275
  To specify the `authenticationMode`:
1248
1276
 
1249
1277
  ```python
1250
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1278
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
1251
1279
  # vpc: ec2.Vpc
1252
1280
 
1253
1281
 
1254
1282
  eks.Cluster(self, "Cluster",
1255
1283
  vpc=vpc,
1256
- version=eks.KubernetesVersion.V1_32,
1257
- kubectl_layer=KubectlV32Layer(self, "KubectlLayer"),
1284
+ version=eks.KubernetesVersion.V1_34,
1285
+ kubectl_layer=KubectlV34Layer(self, "KubectlLayer"),
1258
1286
  authentication_mode=eks.AuthenticationMode.API_AND_CONFIG_MAP
1259
1287
  )
1260
1288
  ```
@@ -1299,7 +1327,7 @@ eks.AccessPolicy.from_access_policy_name("AmazonEKSAdminPolicy",
1299
1327
  Use `grantAccess()` to grant the AccessPolicy to an IAM principal:
1300
1328
 
1301
1329
  ```python
1302
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1330
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
1303
1331
  # vpc: ec2.Vpc
1304
1332
 
1305
1333
 
@@ -1318,8 +1346,8 @@ eks_admin_view_role = iam.Role(self, "EKSAdminViewRole",
1318
1346
  cluster = eks.Cluster(self, "Cluster",
1319
1347
  vpc=vpc,
1320
1348
  masters_role=cluster_admin_role,
1321
- version=eks.KubernetesVersion.V1_32,
1322
- kubectl_layer=KubectlV32Layer(self, "KubectlLayer"),
1349
+ version=eks.KubernetesVersion.V1_34,
1350
+ kubectl_layer=KubectlV34Layer(self, "KubectlLayer"),
1323
1351
  authentication_mode=eks.AuthenticationMode.API_AND_CONFIG_MAP
1324
1352
  )
1325
1353
 
@@ -1650,13 +1678,13 @@ Pruning is enabled by default but can be disabled through the `prune` option
1650
1678
  when a cluster is defined:
1651
1679
 
1652
1680
  ```python
1653
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1681
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
1654
1682
 
1655
1683
 
1656
1684
  eks.Cluster(self, "MyCluster",
1657
- version=eks.KubernetesVersion.V1_32,
1685
+ version=eks.KubernetesVersion.V1_34,
1658
1686
  prune=False,
1659
- kubectl_layer=KubectlV32Layer(self, "kubectl")
1687
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
1660
1688
  )
1661
1689
  ```
1662
1690
 
@@ -1976,10 +2004,13 @@ load_balancer_address = cluster.get_service_load_balancer_address("my-service")
1976
2004
 
1977
2005
  eks.Addon(self, "Addon",
1978
2006
  cluster=cluster,
1979
- addon_name="aws-guardduty-agent",
1980
- addon_version="v1.6.1",
2007
+ addon_name="coredns",
2008
+ addon_version="v1.11.4-eksbuild.2",
1981
2009
  # whether to preserve the add-on software on your cluster but Amazon EKS stops managing any settings for the add-on.
1982
- preserve_on_delete=False
2010
+ preserve_on_delete=False,
2011
+ configuration_values={
2012
+ "replica_count": 2
2013
+ }
1983
2014
  )
1984
2015
  ```
1985
2016
 
@@ -2052,15 +2083,15 @@ You can enable logging for each one separately using the `clusterLogging`
2052
2083
  property. For example:
2053
2084
 
2054
2085
  ```python
2055
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
2086
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
2056
2087
 
2057
2088
 
2058
2089
  cluster = eks.Cluster(self, "Cluster",
2059
2090
  # ...
2060
- version=eks.KubernetesVersion.V1_32,
2091
+ version=eks.KubernetesVersion.V1_34,
2061
2092
  cluster_logging=[eks.ClusterLoggingTypes.API, eks.ClusterLoggingTypes.AUTHENTICATOR, eks.ClusterLoggingTypes.SCHEDULER
2062
2093
  ],
2063
- kubectl_layer=KubectlV32Layer(self, "kubectl")
2094
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
2064
2095
  )
2065
2096
  ```
2066
2097
 
@@ -2127,6 +2158,7 @@ from .. import (
2127
2158
  ITaggable as _ITaggable_36806126,
2128
2159
  ITaggableV2 as _ITaggableV2_4e6798f8,
2129
2160
  NestedStack as _NestedStack_dd393a45,
2161
+ RemovalPolicy as _RemovalPolicy_9f93c814,
2130
2162
  Resource as _Resource_45bc6135,
2131
2163
  Size as _Size_7b441c34,
2132
2164
  TagManager as _TagManager_0a598cb3,
@@ -2169,9 +2201,25 @@ from ..aws_iam import (
2169
2201
  PrincipalPolicyFragment as _PrincipalPolicyFragment_6a855d11,
2170
2202
  Role as _Role_e8c6e11f,
2171
2203
  )
2172
- from ..aws_kms import IKey as _IKey_5f11635f
2173
2204
  from ..aws_lambda import ILayerVersion as _ILayerVersion_5ac127c8
2174
2205
  from ..aws_s3_assets import Asset as _Asset_ac2a7e61
2206
+ from ..interfaces.aws_eks import (
2207
+ AccessEntryReference as _AccessEntryReference_447195cd,
2208
+ AddonReference as _AddonReference_afb1bd13,
2209
+ ClusterReference as _ClusterReference_d6e6b9ff,
2210
+ FargateProfileReference as _FargateProfileReference_5fd534f8,
2211
+ IAccessEntryRef as _IAccessEntryRef_14bb9c0a,
2212
+ IAddonRef as _IAddonRef_fb5de88c,
2213
+ IClusterRef as _IClusterRef_5527f448,
2214
+ IFargateProfileRef as _IFargateProfileRef_ebba9623,
2215
+ IIdentityProviderConfigRef as _IIdentityProviderConfigRef_0106e882,
2216
+ INodegroupRef as _INodegroupRef_cac0d8aa,
2217
+ IPodIdentityAssociationRef as _IPodIdentityAssociationRef_21f8b2b1,
2218
+ IdentityProviderConfigReference as _IdentityProviderConfigReference_7c0f381e,
2219
+ NodegroupReference as _NodegroupReference_eab944f6,
2220
+ PodIdentityAssociationReference as _PodIdentityAssociationReference_14e19bbb,
2221
+ )
2222
+ from ..interfaces.aws_kms import IKeyRef as _IKeyRef_d4fc6ef3
2175
2223
 
2176
2224
 
2177
2225
  @jsii.data_type(
@@ -2808,6 +2856,7 @@ class AddonAttributes:
2808
2856
  "addon_name": "addonName",
2809
2857
  "cluster": "cluster",
2810
2858
  "addon_version": "addonVersion",
2859
+ "configuration_values": "configurationValues",
2811
2860
  "preserve_on_delete": "preserveOnDelete",
2812
2861
  },
2813
2862
  )
@@ -2818,6 +2867,7 @@ class AddonProps:
2818
2867
  addon_name: builtins.str,
2819
2868
  cluster: "ICluster",
2820
2869
  addon_version: typing.Optional[builtins.str] = None,
2870
+ configuration_values: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
2821
2871
  preserve_on_delete: typing.Optional[builtins.bool] = None,
2822
2872
  ) -> None:
2823
2873
  '''Properties for creating an Amazon EKS Add-On.
@@ -2825,6 +2875,7 @@ class AddonProps:
2825
2875
  :param addon_name: Name of the Add-On.
2826
2876
  :param cluster: The EKS cluster the Add-On is associated with.
2827
2877
  :param addon_version: Version of the Add-On. You can check all available versions with describe-addon-versions. For example, this lists all available versions for the ``eks-pod-identity-agent`` addon: $ aws eks describe-addon-versions --addon-name eks-pod-identity-agent --query 'addons[*].addonVersions[*].addonVersion' Default: the latest version.
2878
+ :param configuration_values: The configuration values for the Add-on. Default: - Use default configuration.
2828
2879
  :param preserve_on_delete: Specifying this option preserves the add-on software on your cluster but Amazon EKS stops managing any settings for the add-on. If an IAM account is associated with the add-on, it isn't removed. Default: true
2829
2880
 
2830
2881
  :exampleMetadata: infused
@@ -2836,10 +2887,13 @@ class AddonProps:
2836
2887
 
2837
2888
  eks.Addon(self, "Addon",
2838
2889
  cluster=cluster,
2839
- addon_name="aws-guardduty-agent",
2840
- addon_version="v1.6.1",
2890
+ addon_name="coredns",
2891
+ addon_version="v1.11.4-eksbuild.2",
2841
2892
  # whether to preserve the add-on software on your cluster but Amazon EKS stops managing any settings for the add-on.
2842
- preserve_on_delete=False
2893
+ preserve_on_delete=False,
2894
+ configuration_values={
2895
+ "replica_count": 2
2896
+ }
2843
2897
  )
2844
2898
  '''
2845
2899
  if __debug__:
@@ -2847,6 +2901,7 @@ class AddonProps:
2847
2901
  check_type(argname="argument addon_name", value=addon_name, expected_type=type_hints["addon_name"])
2848
2902
  check_type(argname="argument cluster", value=cluster, expected_type=type_hints["cluster"])
2849
2903
  check_type(argname="argument addon_version", value=addon_version, expected_type=type_hints["addon_version"])
2904
+ check_type(argname="argument configuration_values", value=configuration_values, expected_type=type_hints["configuration_values"])
2850
2905
  check_type(argname="argument preserve_on_delete", value=preserve_on_delete, expected_type=type_hints["preserve_on_delete"])
2851
2906
  self._values: typing.Dict[builtins.str, typing.Any] = {
2852
2907
  "addon_name": addon_name,
@@ -2854,6 +2909,8 @@ class AddonProps:
2854
2909
  }
2855
2910
  if addon_version is not None:
2856
2911
  self._values["addon_version"] = addon_version
2912
+ if configuration_values is not None:
2913
+ self._values["configuration_values"] = configuration_values
2857
2914
  if preserve_on_delete is not None:
2858
2915
  self._values["preserve_on_delete"] = preserve_on_delete
2859
2916
 
@@ -2885,6 +2942,17 @@ class AddonProps:
2885
2942
  result = self._values.get("addon_version")
2886
2943
  return typing.cast(typing.Optional[builtins.str], result)
2887
2944
 
2945
+ @builtins.property
2946
+ def configuration_values(
2947
+ self,
2948
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.Any]]:
2949
+ '''The configuration values for the Add-on.
2950
+
2951
+ :default: - Use default configuration.
2952
+ '''
2953
+ result = self._values.get("configuration_values")
2954
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Any]], result)
2955
+
2888
2956
  @builtins.property
2889
2957
  def preserve_on_delete(self) -> typing.Optional[builtins.bool]:
2890
2958
  '''Specifying this option preserves the add-on software on your cluster but Amazon EKS stops managing any settings for the add-on.
@@ -3036,18 +3104,18 @@ class AlbControllerHelmChartOptions:
3036
3104
 
3037
3105
  Example::
3038
3106
 
3039
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
3107
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
3040
3108
 
3041
3109
 
3042
3110
  eks.Cluster(self, "HelloEKS",
3043
- version=eks.KubernetesVersion.V1_32,
3111
+ version=eks.KubernetesVersion.V1_34,
3044
3112
  alb_controller=eks.AlbControllerOptions(
3045
3113
  version=eks.AlbControllerVersion.V2_8_2,
3046
3114
  additional_helm_chart_values=eks.AlbControllerHelmChartOptions(
3047
3115
  enable_wafv2=False
3048
3116
  )
3049
3117
  ),
3050
- kubectl_layer=KubectlV32Layer(self, "kubectl")
3118
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
3051
3119
  )
3052
3120
  '''
3053
3121
  if __debug__:
@@ -3120,15 +3188,15 @@ class AlbControllerOptions:
3120
3188
 
3121
3189
  Example::
3122
3190
 
3123
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
3191
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
3124
3192
 
3125
3193
 
3126
3194
  eks.Cluster(self, "HelloEKS",
3127
- version=eks.KubernetesVersion.V1_32,
3195
+ version=eks.KubernetesVersion.V1_34,
3128
3196
  alb_controller=eks.AlbControllerOptions(
3129
3197
  version=eks.AlbControllerVersion.V2_8_2
3130
3198
  ),
3131
- kubectl_layer=KubectlV32Layer(self, "kubectl")
3199
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
3132
3200
  )
3133
3201
  '''
3134
3202
  if isinstance(additional_helm_chart_values, dict):
@@ -3356,15 +3424,15 @@ class AlbControllerVersion(
3356
3424
 
3357
3425
  Example::
3358
3426
 
3359
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
3427
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
3360
3428
 
3361
3429
 
3362
3430
  eks.Cluster(self, "HelloEKS",
3363
- version=eks.KubernetesVersion.V1_32,
3431
+ version=eks.KubernetesVersion.V1_34,
3364
3432
  alb_controller=eks.AlbControllerOptions(
3365
3433
  version=eks.AlbControllerVersion.V2_8_2
3366
3434
  ),
3367
- kubectl_layer=KubectlV32Layer(self, "kubectl")
3435
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
3368
3436
  )
3369
3437
  '''
3370
3438
 
@@ -3640,14 +3708,14 @@ class AuthenticationMode(enum.Enum):
3640
3708
 
3641
3709
  Example::
3642
3710
 
3643
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
3711
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
3644
3712
  # vpc: ec2.Vpc
3645
3713
 
3646
3714
 
3647
3715
  eks.Cluster(self, "Cluster",
3648
3716
  vpc=vpc,
3649
- version=eks.KubernetesVersion.V1_32,
3650
- kubectl_layer=KubectlV32Layer(self, "KubectlLayer"),
3717
+ version=eks.KubernetesVersion.V1_34,
3718
+ kubectl_layer=KubectlV34Layer(self, "KubectlLayer"),
3651
3719
  authentication_mode=eks.AuthenticationMode.API_AND_CONFIG_MAP
3652
3720
  )
3653
3721
  '''
@@ -3758,7 +3826,7 @@ class AutoScalingGroupCapacityOptions(_CommonAutoScalingGroupProps_808bbf2d):
3758
3826
  :param key_name: (deprecated) Name of SSH keypair to grant access to instances. ``launchTemplate`` and ``mixedInstancesPolicy`` must not be specified when this property is specified You can either specify ``keyPair`` or ``keyName``, not both. Default: - No SSH access will be possible.
3759
3827
  :param key_pair: The SSH keypair to grant access to the instance. Feature flag ``AUTOSCALING_GENERATE_LAUNCH_TEMPLATE`` must be enabled to use this property. ``launchTemplate`` and ``mixedInstancesPolicy`` must not be specified when this property is specified. You can either specify ``keyPair`` or ``keyName``, not both. Default: - No SSH access will be possible.
3760
3828
  :param max_capacity: Maximum number of instances in the fleet. Default: desiredCapacity
3761
- :param max_instance_lifetime: The maximum amount of time that an instance can be in service. The maximum duration applies to all current and future instances in the group. As an instance approaches its maximum duration, it is terminated and replaced, and cannot be used again. You must specify a value of at least 604,800 seconds (7 days). To clear a previously set value, leave this property undefined. Default: none
3829
+ :param max_instance_lifetime: The maximum amount of time that an instance can be in service. The maximum duration applies to all current and future instances in the group. As an instance approaches its maximum duration, it is terminated and replaced, and cannot be used again. You must specify a value of at least 86,400 seconds (one day). To clear a previously set value, leave this property undefined. Default: none
3762
3830
  :param min_capacity: Minimum number of instances in the fleet. Default: 1
3763
3831
  :param new_instances_protected_from_scale_in: Whether newly-launched instances are protected from termination by Amazon EC2 Auto Scaling when scaling in. By default, Auto Scaling can terminate an instance at any time after launch when scaling in an Auto Scaling Group, subject to the group's termination policy. However, you may wish to protect newly-launched instances from being scaled in if they are going to run critical applications that should not be prematurely terminated. This flag must be enabled if the Auto Scaling Group will be associated with an ECS Capacity Provider with managed termination protection. Default: false
3764
3832
  :param notifications: Configure autoscaling group to send notifications about fleet changes to an SNS topic(s). Default: - No fleet change notifications will be sent.
@@ -4134,7 +4202,7 @@ class AutoScalingGroupCapacityOptions(_CommonAutoScalingGroupProps_808bbf2d):
4134
4202
  to all current and future instances in the group. As an instance approaches its maximum duration,
4135
4203
  it is terminated and replaced, and cannot be used again.
4136
4204
 
4137
- You must specify a value of at least 604,800 seconds (7 days). To clear a previously set value,
4205
+ You must specify a value of at least 86,400 seconds (one day). To clear a previously set value,
4138
4206
  leave this property undefined.
4139
4207
 
4140
4208
  :default: none
@@ -4912,7 +4980,7 @@ class CapacityType(enum.Enum):
4912
4980
  '''capacity block instances.'''
4913
4981
 
4914
4982
 
4915
- @jsii.implements(_IInspectable_c2943556, _ITaggableV2_4e6798f8)
4983
+ @jsii.implements(_IInspectable_c2943556, _IAccessEntryRef_14bb9c0a, _ITaggableV2_4e6798f8)
4916
4984
  class CfnAccessEntry(
4917
4985
  _CfnResource_9df397a6,
4918
4986
  metaclass=jsii.JSIIMeta,
@@ -4971,7 +5039,8 @@ class CfnAccessEntry(
4971
5039
  type: typing.Optional[builtins.str] = None,
4972
5040
  username: typing.Optional[builtins.str] = None,
4973
5041
  ) -> None:
4974
- '''
5042
+ '''Create a new ``AWS::EKS::AccessEntry``.
5043
+
4975
5044
  :param scope: Scope in which this resource is defined.
4976
5045
  :param id: Construct identifier for this resource (unique in its scope).
4977
5046
  :param cluster_name: The name of your cluster.
@@ -5028,6 +5097,12 @@ class CfnAccessEntry(
5028
5097
  '''The CloudFormation resource type name for this resource class.'''
5029
5098
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
5030
5099
 
5100
+ @builtins.property
5101
+ @jsii.member(jsii_name="accessEntryRef")
5102
+ def access_entry_ref(self) -> _AccessEntryReference_447195cd:
5103
+ '''A reference to a AccessEntry resource.'''
5104
+ return typing.cast(_AccessEntryReference_447195cd, jsii.get(self, "accessEntryRef"))
5105
+
5031
5106
  @builtins.property
5032
5107
  @jsii.member(jsii_name="attrAccessEntryArn")
5033
5108
  def attr_access_entry_arn(self) -> builtins.str:
@@ -5495,7 +5570,7 @@ class CfnAccessEntryProps:
5495
5570
  )
5496
5571
 
5497
5572
 
5498
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
5573
+ @jsii.implements(_IInspectable_c2943556, _IAddonRef_fb5de88c, _ITaggable_36806126)
5499
5574
  class CfnAddon(
5500
5575
  _CfnResource_9df397a6,
5501
5576
  metaclass=jsii.JSIIMeta,
@@ -5522,6 +5597,9 @@ class CfnAddon(
5522
5597
  # the properties below are optional
5523
5598
  addon_version="addonVersion",
5524
5599
  configuration_values="configurationValues",
5600
+ namespace_config=eks.CfnAddon.NamespaceConfigProperty(
5601
+ namespace="namespace"
5602
+ ),
5525
5603
  pod_identity_associations=[eks.CfnAddon.PodIdentityAssociationProperty(
5526
5604
  role_arn="roleArn",
5527
5605
  service_account="serviceAccount"
@@ -5545,20 +5623,23 @@ class CfnAddon(
5545
5623
  cluster_name: builtins.str,
5546
5624
  addon_version: typing.Optional[builtins.str] = None,
5547
5625
  configuration_values: typing.Optional[builtins.str] = None,
5626
+ namespace_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnAddon.NamespaceConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
5548
5627
  pod_identity_associations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnAddon.PodIdentityAssociationProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
5549
5628
  preserve_on_delete: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
5550
5629
  resolve_conflicts: typing.Optional[builtins.str] = None,
5551
5630
  service_account_role_arn: typing.Optional[builtins.str] = None,
5552
5631
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
5553
5632
  ) -> None:
5554
- '''
5633
+ '''Create a new ``AWS::EKS::Addon``.
5634
+
5555
5635
  :param scope: Scope in which this resource is defined.
5556
5636
  :param id: Construct identifier for this resource (unique in its scope).
5557
5637
  :param addon_name: The name of the add-on.
5558
5638
  :param cluster_name: The name of your cluster.
5559
5639
  :param addon_version: The version of the add-on.
5560
5640
  :param configuration_values: The configuration values that you provided.
5561
- :param pod_identity_associations: An array of Pod Identity Assocations owned by the Addon. Each EKS Pod Identity association maps a role to a service account in a namespace in the cluster. For more information, see `Attach an IAM Role to an Amazon EKS add-on using Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html>`_ in the *Amazon EKS User Guide* .
5641
+ :param namespace_config: The namespace configuration for the addon. This specifies the Kubernetes namespace where the addon is installed.
5642
+ :param pod_identity_associations: An array of EKS Pod Identity associations owned by the add-on. Each association maps a role to a service account in a namespace in the cluster. For more information, see `Attach an IAM Role to an Amazon EKS add-on using EKS Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html>`_ in the *Amazon EKS User Guide* .
5562
5643
  :param preserve_on_delete: Specifying this option preserves the add-on software on your cluster but Amazon EKS stops managing any settings for the add-on. If an IAM account is associated with the add-on, it isn't removed.
5563
5644
  :param resolve_conflicts: How to resolve field value conflicts for an Amazon EKS add-on. Conflicts are handled based on the value you choose: - *None* – If the self-managed version of the add-on is installed on your cluster, Amazon EKS doesn't change the value. Creation of the add-on might fail. - *Overwrite* – If the self-managed version of the add-on is installed on your cluster and the Amazon EKS default value is different than the existing value, Amazon EKS changes the value to the Amazon EKS default value. - *Preserve* – This is similar to the NONE option. If the self-managed version of the add-on is installed on your cluster Amazon EKS doesn't change the add-on resource properties. Creation of the add-on might fail if conflicts are detected. This option works differently during the update operation. For more information, see ```UpdateAddon`` <https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html>`_ . If you don't currently have the self-managed version of the add-on installed on your cluster, the Amazon EKS add-on is installed. Amazon EKS sets all values to default values, regardless of the option that you specify.
5564
5645
  :param service_account_role_arn: The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see `Amazon EKS node IAM role <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html>`_ in the *Amazon EKS User Guide* . .. epigraph:: To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see `Enabling IAM roles for service accounts on your cluster <https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html>`_ in the *Amazon EKS User Guide* .
@@ -5573,6 +5654,7 @@ class CfnAddon(
5573
5654
  cluster_name=cluster_name,
5574
5655
  addon_version=addon_version,
5575
5656
  configuration_values=configuration_values,
5657
+ namespace_config=namespace_config,
5576
5658
  pod_identity_associations=pod_identity_associations,
5577
5659
  preserve_on_delete=preserve_on_delete,
5578
5660
  resolve_conflicts=resolve_conflicts,
@@ -5612,6 +5694,12 @@ class CfnAddon(
5612
5694
  '''The CloudFormation resource type name for this resource class.'''
5613
5695
  return typing.cast(builtins.str, jsii.sget(cls, "CFN_RESOURCE_TYPE_NAME"))
5614
5696
 
5697
+ @builtins.property
5698
+ @jsii.member(jsii_name="addonRef")
5699
+ def addon_ref(self) -> _AddonReference_afb1bd13:
5700
+ '''A reference to a Addon resource.'''
5701
+ return typing.cast(_AddonReference_afb1bd13, jsii.get(self, "addonRef"))
5702
+
5615
5703
  @builtins.property
5616
5704
  @jsii.member(jsii_name="attrArn")
5617
5705
  def attr_arn(self) -> builtins.str:
@@ -5684,12 +5772,30 @@ class CfnAddon(
5684
5772
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5685
5773
  jsii.set(self, "configurationValues", value) # pyright: ignore[reportArgumentType]
5686
5774
 
5775
+ @builtins.property
5776
+ @jsii.member(jsii_name="namespaceConfig")
5777
+ def namespace_config(
5778
+ self,
5779
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnAddon.NamespaceConfigProperty"]]:
5780
+ '''The namespace configuration for the addon.'''
5781
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnAddon.NamespaceConfigProperty"]], jsii.get(self, "namespaceConfig"))
5782
+
5783
+ @namespace_config.setter
5784
+ def namespace_config(
5785
+ self,
5786
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnAddon.NamespaceConfigProperty"]],
5787
+ ) -> None:
5788
+ if __debug__:
5789
+ type_hints = typing.get_type_hints(_typecheckingstub__039b518895f39f54dce3ea31a35bed66445fb7b5e7f4c52a89adafc86911f331)
5790
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5791
+ jsii.set(self, "namespaceConfig", value) # pyright: ignore[reportArgumentType]
5792
+
5687
5793
  @builtins.property
5688
5794
  @jsii.member(jsii_name="podIdentityAssociations")
5689
5795
  def pod_identity_associations(
5690
5796
  self,
5691
5797
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAddon.PodIdentityAssociationProperty"]]]]:
5692
- '''An array of Pod Identity Assocations owned by the Addon.'''
5798
+ '''An array of EKS Pod Identity associations owned by the add-on.'''
5693
5799
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAddon.PodIdentityAssociationProperty"]]]], jsii.get(self, "podIdentityAssociations"))
5694
5800
 
5695
5801
  @pod_identity_associations.setter
@@ -5759,6 +5865,58 @@ class CfnAddon(
5759
5865
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5760
5866
  jsii.set(self, "tagsRaw", value) # pyright: ignore[reportArgumentType]
5761
5867
 
5868
+ @jsii.data_type(
5869
+ jsii_type="aws-cdk-lib.aws_eks.CfnAddon.NamespaceConfigProperty",
5870
+ jsii_struct_bases=[],
5871
+ name_mapping={"namespace": "namespace"},
5872
+ )
5873
+ class NamespaceConfigProperty:
5874
+ def __init__(self, *, namespace: builtins.str) -> None:
5875
+ '''The custom namespace configuration to use with the add-on.
5876
+
5877
+ :param namespace: The custom namespace for creating the add-on.
5878
+
5879
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-addon-namespaceconfig.html
5880
+ :exampleMetadata: fixture=_generated
5881
+
5882
+ Example::
5883
+
5884
+ # The code below shows an example of how to instantiate this type.
5885
+ # The values are placeholders you should change.
5886
+ from aws_cdk import aws_eks as eks
5887
+
5888
+ namespace_config_property = eks.CfnAddon.NamespaceConfigProperty(
5889
+ namespace="namespace"
5890
+ )
5891
+ '''
5892
+ if __debug__:
5893
+ type_hints = typing.get_type_hints(_typecheckingstub__c336eaf5f7476c60c3b0b8dc688fc9ea53319525b39f820a30e2510a38e67cbc)
5894
+ check_type(argname="argument namespace", value=namespace, expected_type=type_hints["namespace"])
5895
+ self._values: typing.Dict[builtins.str, typing.Any] = {
5896
+ "namespace": namespace,
5897
+ }
5898
+
5899
+ @builtins.property
5900
+ def namespace(self) -> builtins.str:
5901
+ '''The custom namespace for creating the add-on.
5902
+
5903
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-addon-namespaceconfig.html#cfn-eks-addon-namespaceconfig-namespace
5904
+ '''
5905
+ result = self._values.get("namespace")
5906
+ assert result is not None, "Required property 'namespace' is missing"
5907
+ return typing.cast(builtins.str, result)
5908
+
5909
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
5910
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
5911
+
5912
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
5913
+ return not (rhs == self)
5914
+
5915
+ def __repr__(self) -> str:
5916
+ return "NamespaceConfigProperty(%s)" % ", ".join(
5917
+ k + "=" + repr(v) for k, v in self._values.items()
5918
+ )
5919
+
5762
5920
  @jsii.data_type(
5763
5921
  jsii_type="aws-cdk-lib.aws_eks.CfnAddon.PodIdentityAssociationProperty",
5764
5922
  jsii_struct_bases=[],
@@ -5773,7 +5931,7 @@ class CfnAddon(
5773
5931
  ) -> None:
5774
5932
  '''Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that Amazon EC2 instance profiles provide credentials to Amazon EC2 instances.
5775
5933
 
5776
- :param role_arn: The Amazon Resource Name (ARN) of the IAM role to associate with the service account. The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the pods that use this service account.
5934
+ :param role_arn: The Amazon Resource Name (ARN) of the IAM role to associate with the service account. The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the Pods that use this service account.
5777
5935
  :param service_account: The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.
5778
5936
 
5779
5937
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-addon-podidentityassociation.html
@@ -5803,7 +5961,7 @@ class CfnAddon(
5803
5961
  def role_arn(self) -> builtins.str:
5804
5962
  '''The Amazon Resource Name (ARN) of the IAM role to associate with the service account.
5805
5963
 
5806
- The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the pods that use this service account.
5964
+ The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the Pods that use this service account.
5807
5965
 
5808
5966
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-addon-podidentityassociation.html#cfn-eks-addon-podidentityassociation-rolearn
5809
5967
  '''
@@ -5841,6 +5999,7 @@ class CfnAddon(
5841
5999
  "cluster_name": "clusterName",
5842
6000
  "addon_version": "addonVersion",
5843
6001
  "configuration_values": "configurationValues",
6002
+ "namespace_config": "namespaceConfig",
5844
6003
  "pod_identity_associations": "podIdentityAssociations",
5845
6004
  "preserve_on_delete": "preserveOnDelete",
5846
6005
  "resolve_conflicts": "resolveConflicts",
@@ -5856,6 +6015,7 @@ class CfnAddonProps:
5856
6015
  cluster_name: builtins.str,
5857
6016
  addon_version: typing.Optional[builtins.str] = None,
5858
6017
  configuration_values: typing.Optional[builtins.str] = None,
6018
+ namespace_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAddon.NamespaceConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
5859
6019
  pod_identity_associations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAddon.PodIdentityAssociationProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
5860
6020
  preserve_on_delete: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
5861
6021
  resolve_conflicts: typing.Optional[builtins.str] = None,
@@ -5868,7 +6028,8 @@ class CfnAddonProps:
5868
6028
  :param cluster_name: The name of your cluster.
5869
6029
  :param addon_version: The version of the add-on.
5870
6030
  :param configuration_values: The configuration values that you provided.
5871
- :param pod_identity_associations: An array of Pod Identity Assocations owned by the Addon. Each EKS Pod Identity association maps a role to a service account in a namespace in the cluster. For more information, see `Attach an IAM Role to an Amazon EKS add-on using Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html>`_ in the *Amazon EKS User Guide* .
6031
+ :param namespace_config: The namespace configuration for the addon. This specifies the Kubernetes namespace where the addon is installed.
6032
+ :param pod_identity_associations: An array of EKS Pod Identity associations owned by the add-on. Each association maps a role to a service account in a namespace in the cluster. For more information, see `Attach an IAM Role to an Amazon EKS add-on using EKS Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html>`_ in the *Amazon EKS User Guide* .
5872
6033
  :param preserve_on_delete: Specifying this option preserves the add-on software on your cluster but Amazon EKS stops managing any settings for the add-on. If an IAM account is associated with the add-on, it isn't removed.
5873
6034
  :param resolve_conflicts: How to resolve field value conflicts for an Amazon EKS add-on. Conflicts are handled based on the value you choose: - *None* – If the self-managed version of the add-on is installed on your cluster, Amazon EKS doesn't change the value. Creation of the add-on might fail. - *Overwrite* – If the self-managed version of the add-on is installed on your cluster and the Amazon EKS default value is different than the existing value, Amazon EKS changes the value to the Amazon EKS default value. - *Preserve* – This is similar to the NONE option. If the self-managed version of the add-on is installed on your cluster Amazon EKS doesn't change the add-on resource properties. Creation of the add-on might fail if conflicts are detected. This option works differently during the update operation. For more information, see ```UpdateAddon`` <https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html>`_ . If you don't currently have the self-managed version of the add-on installed on your cluster, the Amazon EKS add-on is installed. Amazon EKS sets all values to default values, regardless of the option that you specify.
5874
6035
  :param service_account_role_arn: The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see `Amazon EKS node IAM role <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html>`_ in the *Amazon EKS User Guide* . .. epigraph:: To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see `Enabling IAM roles for service accounts on your cluster <https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html>`_ in the *Amazon EKS User Guide* .
@@ -5890,6 +6051,9 @@ class CfnAddonProps:
5890
6051
  # the properties below are optional
5891
6052
  addon_version="addonVersion",
5892
6053
  configuration_values="configurationValues",
6054
+ namespace_config=eks.CfnAddon.NamespaceConfigProperty(
6055
+ namespace="namespace"
6056
+ ),
5893
6057
  pod_identity_associations=[eks.CfnAddon.PodIdentityAssociationProperty(
5894
6058
  role_arn="roleArn",
5895
6059
  service_account="serviceAccount"
@@ -5909,6 +6073,7 @@ class CfnAddonProps:
5909
6073
  check_type(argname="argument cluster_name", value=cluster_name, expected_type=type_hints["cluster_name"])
5910
6074
  check_type(argname="argument addon_version", value=addon_version, expected_type=type_hints["addon_version"])
5911
6075
  check_type(argname="argument configuration_values", value=configuration_values, expected_type=type_hints["configuration_values"])
6076
+ check_type(argname="argument namespace_config", value=namespace_config, expected_type=type_hints["namespace_config"])
5912
6077
  check_type(argname="argument pod_identity_associations", value=pod_identity_associations, expected_type=type_hints["pod_identity_associations"])
5913
6078
  check_type(argname="argument preserve_on_delete", value=preserve_on_delete, expected_type=type_hints["preserve_on_delete"])
5914
6079
  check_type(argname="argument resolve_conflicts", value=resolve_conflicts, expected_type=type_hints["resolve_conflicts"])
@@ -5922,6 +6087,8 @@ class CfnAddonProps:
5922
6087
  self._values["addon_version"] = addon_version
5923
6088
  if configuration_values is not None:
5924
6089
  self._values["configuration_values"] = configuration_values
6090
+ if namespace_config is not None:
6091
+ self._values["namespace_config"] = namespace_config
5925
6092
  if pod_identity_associations is not None:
5926
6093
  self._values["pod_identity_associations"] = pod_identity_associations
5927
6094
  if preserve_on_delete is not None:
@@ -5971,15 +6138,28 @@ class CfnAddonProps:
5971
6138
  result = self._values.get("configuration_values")
5972
6139
  return typing.cast(typing.Optional[builtins.str], result)
5973
6140
 
6141
+ @builtins.property
6142
+ def namespace_config(
6143
+ self,
6144
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnAddon.NamespaceConfigProperty]]:
6145
+ '''The namespace configuration for the addon.
6146
+
6147
+ This specifies the Kubernetes namespace where the addon is installed.
6148
+
6149
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-addon.html#cfn-eks-addon-namespaceconfig
6150
+ '''
6151
+ result = self._values.get("namespace_config")
6152
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnAddon.NamespaceConfigProperty]], result)
6153
+
5974
6154
  @builtins.property
5975
6155
  def pod_identity_associations(
5976
6156
  self,
5977
6157
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAddon.PodIdentityAssociationProperty]]]]:
5978
- '''An array of Pod Identity Assocations owned by the Addon.
6158
+ '''An array of EKS Pod Identity associations owned by the add-on.
5979
6159
 
5980
- Each EKS Pod Identity association maps a role to a service account in a namespace in the cluster.
6160
+ Each association maps a role to a service account in a namespace in the cluster.
5981
6161
 
5982
- For more information, see `Attach an IAM Role to an Amazon EKS add-on using Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html>`_ in the *Amazon EKS User Guide* .
6162
+ For more information, see `Attach an IAM Role to an Amazon EKS add-on using EKS Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html>`_ in the *Amazon EKS User Guide* .
5983
6163
 
5984
6164
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-addon.html#cfn-eks-addon-podidentityassociations
5985
6165
  '''
@@ -6053,7 +6233,7 @@ class CfnAddonProps:
6053
6233
  )
6054
6234
 
6055
6235
 
6056
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
6236
+ @jsii.implements(_IInspectable_c2943556, _IClusterRef_5527f448, _ITaggable_36806126)
6057
6237
  class CfnCluster(
6058
6238
  _CfnResource_9df397a6,
6059
6239
  metaclass=jsii.JSIIMeta,
@@ -6067,7 +6247,7 @@ class CfnCluster(
6067
6247
 
6068
6248
  Amazon EKS nodes run in your AWS account and connect to your cluster's control plane over the Kubernetes API server endpoint and a certificate file that is created for your cluster.
6069
6249
 
6070
- You can use the ``endpointPublicAccess`` and ``endpointPrivateAccess`` parameters to enable or disable public and private access to your cluster's Kubernetes API server endpoint. By default, public access is enabled, and private access is disabled. For more information, see `Amazon EKS Cluster Endpoint Access Control <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
6250
+ You can use the ``endpointPublicAccess`` and ``endpointPrivateAccess`` parameters to enable or disable public and private access to your cluster's Kubernetes API server endpoint. By default, public access is enabled, and private access is disabled. The endpoint domain name and IP address family depends on the value of the ``ipFamily`` for the cluster. For more information, see `Amazon EKS Cluster Endpoint Access Control <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
6071
6251
 
6072
6252
  You can use the ``logging`` parameter to enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see `Amazon EKS Cluster Control Plane Logs <https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html>`_ in the **Amazon EKS User Guide** .
6073
6253
  .. epigraph::
@@ -6109,6 +6289,7 @@ class CfnCluster(
6109
6289
  node_pools=["nodePools"],
6110
6290
  node_role_arn="nodeRoleArn"
6111
6291
  ),
6292
+ deletion_protection=False,
6112
6293
  encryption_config=[eks.CfnCluster.EncryptionConfigProperty(
6113
6294
  provider=eks.CfnCluster.ProviderProperty(
6114
6295
  key_arn="keyArn"
@@ -6180,6 +6361,7 @@ class CfnCluster(
6180
6361
  access_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCluster.AccessConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6181
6362
  bootstrap_self_managed_addons: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
6182
6363
  compute_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCluster.ComputeConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6364
+ deletion_protection: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
6183
6365
  encryption_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCluster.EncryptionConfigProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
6184
6366
  force: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
6185
6367
  kubernetes_network_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCluster.KubernetesNetworkConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -6193,14 +6375,16 @@ class CfnCluster(
6193
6375
  version: typing.Optional[builtins.str] = None,
6194
6376
  zonal_shift_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCluster.ZonalShiftConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6195
6377
  ) -> None:
6196
- '''
6378
+ '''Create a new ``AWS::EKS::Cluster``.
6379
+
6197
6380
  :param scope: Scope in which this resource is defined.
6198
6381
  :param id: Construct identifier for this resource (unique in its scope).
6199
6382
  :param resources_vpc_config: The VPC configuration that's used by the cluster control plane. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see `Cluster VPC Considerations <https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html>`_ and `Cluster Security Group Considerations <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html>`_ in the *Amazon EKS User Guide* . You must specify at least two subnets. You can specify up to five security groups, but we recommend that you use a dedicated security group for your cluster control plane.
6200
6383
  :param role_arn: The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. For more information, see `Amazon EKS Service IAM Role <https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html>`_ in the **Amazon EKS User Guide** .
6201
6384
  :param access_config: The access configuration for the cluster.
6202
- :param bootstrap_self_managed_addons: If you set this value to ``False`` when creating a cluster, the default networking add-ons will not be installed. The default networking addons include vpc-cni, coredns, and kube-proxy. Use this option when you plan to install third-party alternative add-ons or self-manage the default networking add-ons.
6385
+ :param bootstrap_self_managed_addons: If you set this value to ``False`` when creating a cluster, the default networking add-ons will not be installed. The default networking add-ons include ``vpc-cni`` , ``coredns`` , and ``kube-proxy`` . Use this option when you plan to install third-party alternative add-ons or self-manage the default networking add-ons.
6203
6386
  :param compute_config: Indicates the current configuration of the compute capability on your EKS Auto Mode cluster. For example, if the capability is enabled or disabled. If the compute capability is enabled, EKS Auto Mode will create and delete EC2 Managed Instances in your AWS account. For more information, see EKS Auto Mode compute capability in the *Amazon EKS User Guide* .
6387
+ :param deletion_protection: The current deletion protection setting for the cluster. When ``true`` , deletion protection is enabled and the cluster cannot be deleted until protection is disabled. When ``false`` , the cluster can be deleted normally. This setting only applies to clusters in an active state.
6204
6388
  :param encryption_config: The encryption configuration for the cluster.
6205
6389
  :param force: Set this value to ``true`` to override upgrade-blocking readiness checks when updating a cluster. Default: - false
6206
6390
  :param kubernetes_network_config: The Kubernetes network configuration for the cluster.
@@ -6224,6 +6408,7 @@ class CfnCluster(
6224
6408
  access_config=access_config,
6225
6409
  bootstrap_self_managed_addons=bootstrap_self_managed_addons,
6226
6410
  compute_config=compute_config,
6411
+ deletion_protection=deletion_protection,
6227
6412
  encryption_config=encryption_config,
6228
6413
  force=force,
6229
6414
  kubernetes_network_config=kubernetes_network_config,
@@ -6240,6 +6425,48 @@ class CfnCluster(
6240
6425
 
6241
6426
  jsii.create(self.__class__, self, [scope, id, props])
6242
6427
 
6428
+ @jsii.member(jsii_name="fromClusterArn")
6429
+ @builtins.classmethod
6430
+ def from_cluster_arn(
6431
+ cls,
6432
+ scope: _constructs_77d1e7e8.Construct,
6433
+ id: builtins.str,
6434
+ arn: builtins.str,
6435
+ ) -> _IClusterRef_5527f448:
6436
+ '''Creates a new IClusterRef from an ARN.
6437
+
6438
+ :param scope: -
6439
+ :param id: -
6440
+ :param arn: -
6441
+ '''
6442
+ if __debug__:
6443
+ type_hints = typing.get_type_hints(_typecheckingstub__b7520097767a23a7f7b750879adb8df71436766d2ad7c356ce08243330524e31)
6444
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
6445
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
6446
+ check_type(argname="argument arn", value=arn, expected_type=type_hints["arn"])
6447
+ return typing.cast(_IClusterRef_5527f448, jsii.sinvoke(cls, "fromClusterArn", [scope, id, arn]))
6448
+
6449
+ @jsii.member(jsii_name="fromClusterName")
6450
+ @builtins.classmethod
6451
+ def from_cluster_name(
6452
+ cls,
6453
+ scope: _constructs_77d1e7e8.Construct,
6454
+ id: builtins.str,
6455
+ cluster_name: builtins.str,
6456
+ ) -> _IClusterRef_5527f448:
6457
+ '''Creates a new IClusterRef from a clusterName.
6458
+
6459
+ :param scope: -
6460
+ :param id: -
6461
+ :param cluster_name: -
6462
+ '''
6463
+ if __debug__:
6464
+ type_hints = typing.get_type_hints(_typecheckingstub__06b7df746bf67240facb00749c1c399634c9167d5acb1747f034220efaf30f49)
6465
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
6466
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
6467
+ check_type(argname="argument cluster_name", value=cluster_name, expected_type=type_hints["cluster_name"])
6468
+ return typing.cast(_IClusterRef_5527f448, jsii.sinvoke(cls, "fromClusterName", [scope, id, cluster_name]))
6469
+
6243
6470
  @jsii.member(jsii_name="inspect")
6244
6471
  def inspect(self, inspector: _TreeInspector_488e0dd5) -> None:
6245
6472
  '''Examines the CloudFormation resource and discloses attributes.
@@ -6355,6 +6582,12 @@ class CfnCluster(
6355
6582
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
6356
6583
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
6357
6584
 
6585
+ @builtins.property
6586
+ @jsii.member(jsii_name="clusterRef")
6587
+ def cluster_ref(self) -> _ClusterReference_d6e6b9ff:
6588
+ '''A reference to a Cluster resource.'''
6589
+ return typing.cast(_ClusterReference_d6e6b9ff, jsii.get(self, "clusterRef"))
6590
+
6358
6591
  @builtins.property
6359
6592
  @jsii.member(jsii_name="tags")
6360
6593
  def tags(self) -> _TagManager_0a598cb3:
@@ -6446,6 +6679,24 @@ class CfnCluster(
6446
6679
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
6447
6680
  jsii.set(self, "computeConfig", value) # pyright: ignore[reportArgumentType]
6448
6681
 
6682
+ @builtins.property
6683
+ @jsii.member(jsii_name="deletionProtection")
6684
+ def deletion_protection(
6685
+ self,
6686
+ ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
6687
+ '''The current deletion protection setting for the cluster.'''
6688
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], jsii.get(self, "deletionProtection"))
6689
+
6690
+ @deletion_protection.setter
6691
+ def deletion_protection(
6692
+ self,
6693
+ value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
6694
+ ) -> None:
6695
+ if __debug__:
6696
+ type_hints = typing.get_type_hints(_typecheckingstub__19e2a4eccf6e2e232dc5d0a9572dba914015320e88042ef8f90020cd0d14b037)
6697
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
6698
+ jsii.set(self, "deletionProtection", value) # pyright: ignore[reportArgumentType]
6699
+
6449
6700
  @builtins.property
6450
6701
  @jsii.member(jsii_name="encryptionConfig")
6451
6702
  def encryption_config(
@@ -7567,8 +7818,8 @@ class CfnCluster(
7567
7818
 
7568
7819
  You can add, change, or remove this configuration after the cluster is created.
7569
7820
 
7570
- :param remote_node_networks: The list of network CIDRs that can contain hybrid nodes. These CIDR blocks define the expected IP address range of the hybrid nodes that join the cluster. These blocks are typically determined by your network administrator. Enter one or more IPv4 CIDR blocks in decimal dotted-quad notation (for example, ``10.2.0.0/16`` ). It must satisfy the following requirements: - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /24, maximum allowed size is /8. Publicly-routable addresses aren't supported. - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range. - Each block must have a route to the VPC that uses the VPC CIDR blocks, not public IPs or Elastic IPs. There are many options including AWS Transit Gateway , AWS Site-to-Site VPN , or AWS Direct Connect . - Each host must allow outbound connection to the EKS cluster control plane on TCP ports ``443`` and ``10250`` . - Each host must allow inbound connection from the EKS cluster control plane on TCP port 10250 for logs, exec and port-forward operations. - Each host must allow TCP and UDP network connectivity to and from other hosts that are running ``CoreDNS`` on UDP port ``53`` for service and pod DNS names.
7571
- :param remote_pod_networks: The list of network CIDRs that can contain pods that run Kubernetes webhooks on hybrid nodes. These CIDR blocks are determined by configuring your Container Network Interface (CNI) plugin. We recommend the Calico CNI or Cilium CNI. Note that the Amazon VPC CNI plugin for Kubernetes isn't available for on-premises and edge locations. Enter one or more IPv4 CIDR blocks in decimal dotted-quad notation (for example, ``10.2.0.0/16`` ). It must satisfy the following requirements: - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /24, maximum allowed size is /8. Publicly-routable addresses aren't supported. - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range.
7821
+ :param remote_node_networks: The list of network CIDRs that can contain hybrid nodes. These CIDR blocks define the expected IP address range of the hybrid nodes that join the cluster. These blocks are typically determined by your network administrator. Enter one or more IPv4 CIDR blocks in decimal dotted-quad notation (for example, ``10.2.0.0/16`` ). It must satisfy the following requirements: - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /32, maximum allowed size is /8. Publicly-routable addresses aren't supported. - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range. - Each block must have a route to the VPC that uses the VPC CIDR blocks, not public IPs or Elastic IPs. There are many options including AWS Transit Gateway , AWS Site-to-Site VPN , or AWS Direct Connect . - Each host must allow outbound connection to the EKS cluster control plane on TCP ports ``443`` and ``10250`` . - Each host must allow inbound connection from the EKS cluster control plane on TCP port 10250 for logs, exec and port-forward operations. - Each host must allow TCP and UDP network connectivity to and from other hosts that are running ``CoreDNS`` on UDP port ``53`` for service and pod DNS names.
7822
+ :param remote_pod_networks: The list of network CIDRs that can contain pods that run Kubernetes webhooks on hybrid nodes. These CIDR blocks are determined by configuring your Container Network Interface (CNI) plugin. We recommend the Calico CNI or Cilium CNI. Note that the Amazon VPC CNI plugin for Kubernetes isn't available for on-premises and edge locations. Enter one or more IPv4 CIDR blocks in decimal dotted-quad notation (for example, ``10.2.0.0/16`` ). It must satisfy the following requirements: - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /32, maximum allowed size is /8. Publicly-routable addresses aren't supported. - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range.
7572
7823
 
7573
7824
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-remotenetworkconfig.html
7574
7825
  :exampleMetadata: fixture=_generated
@@ -7612,7 +7863,7 @@ class CfnCluster(
7612
7863
 
7613
7864
  It must satisfy the following requirements:
7614
7865
 
7615
- - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /24, maximum allowed size is /8. Publicly-routable addresses aren't supported.
7866
+ - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /32, maximum allowed size is /8. Publicly-routable addresses aren't supported.
7616
7867
  - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range.
7617
7868
  - Each block must have a route to the VPC that uses the VPC CIDR blocks, not public IPs or Elastic IPs. There are many options including AWS Transit Gateway , AWS Site-to-Site VPN , or AWS Direct Connect .
7618
7869
  - Each host must allow outbound connection to the EKS cluster control plane on TCP ports ``443`` and ``10250`` .
@@ -7637,7 +7888,7 @@ class CfnCluster(
7637
7888
 
7638
7889
  It must satisfy the following requirements:
7639
7890
 
7640
- - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /24, maximum allowed size is /8. Publicly-routable addresses aren't supported.
7891
+ - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /32, maximum allowed size is /8. Publicly-routable addresses aren't supported.
7641
7892
  - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range.
7642
7893
 
7643
7894
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-remotenetworkconfig.html#cfn-eks-cluster-remotenetworkconfig-remotepodnetworks
@@ -7671,14 +7922,14 @@ class CfnCluster(
7671
7922
 
7672
7923
  It must satisfy the following requirements:
7673
7924
 
7674
- - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /24, maximum allowed size is /8. Publicly-routable addresses aren't supported.
7925
+ - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /32, maximum allowed size is /8. Publicly-routable addresses aren't supported.
7675
7926
  - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range.
7676
7927
  - Each block must have a route to the VPC that uses the VPC CIDR blocks, not public IPs or Elastic IPs. There are many options including AWS Transit Gateway , AWS Site-to-Site VPN , or AWS Direct Connect .
7677
7928
  - Each host must allow outbound connection to the EKS cluster control plane on TCP ports ``443`` and ``10250`` .
7678
7929
  - Each host must allow inbound connection from the EKS cluster control plane on TCP port 10250 for logs, exec and port-forward operations.
7679
7930
  - Each host must allow TCP and UDP network connectivity to and from other hosts that are running ``CoreDNS`` on UDP port ``53`` for service and pod DNS names.
7680
7931
 
7681
- :param cidrs: A network CIDR that can contain hybrid nodes. These CIDR blocks define the expected IP address range of the hybrid nodes that join the cluster. These blocks are typically determined by your network administrator. Enter one or more IPv4 CIDR blocks in decimal dotted-quad notation (for example, ``10.2.0.0/16`` ). It must satisfy the following requirements: - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /24, maximum allowed size is /8. Publicly-routable addresses aren't supported. - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range. - Each block must have a route to the VPC that uses the VPC CIDR blocks, not public IPs or Elastic IPs. There are many options including AWS Transit Gateway , AWS Site-to-Site VPN , or AWS Direct Connect . - Each host must allow outbound connection to the EKS cluster control plane on TCP ports ``443`` and ``10250`` . - Each host must allow inbound connection from the EKS cluster control plane on TCP port 10250 for logs, exec and port-forward operations. - Each host must allow TCP and UDP network connectivity to and from other hosts that are running ``CoreDNS`` on UDP port ``53`` for service and pod DNS names.
7932
+ :param cidrs: A network CIDR that can contain hybrid nodes. These CIDR blocks define the expected IP address range of the hybrid nodes that join the cluster. These blocks are typically determined by your network administrator. Enter one or more IPv4 CIDR blocks in decimal dotted-quad notation (for example, ``10.2.0.0/16`` ). It must satisfy the following requirements: - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /32, maximum allowed size is /8. Publicly-routable addresses aren't supported. - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range. - Each block must have a route to the VPC that uses the VPC CIDR blocks, not public IPs or Elastic IPs. There are many options including AWS Transit Gateway , AWS Site-to-Site VPN , or AWS Direct Connect . - Each host must allow outbound connection to the EKS cluster control plane on TCP ports ``443`` and ``10250`` . - Each host must allow inbound connection from the EKS cluster control plane on TCP port 10250 for logs, exec and port-forward operations. - Each host must allow TCP and UDP network connectivity to and from other hosts that are running ``CoreDNS`` on UDP port ``53`` for service and pod DNS names.
7682
7933
 
7683
7934
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-remotenodenetwork.html
7684
7935
  :exampleMetadata: fixture=_generated
@@ -7710,7 +7961,7 @@ class CfnCluster(
7710
7961
 
7711
7962
  It must satisfy the following requirements:
7712
7963
 
7713
- - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /24, maximum allowed size is /8. Publicly-routable addresses aren't supported.
7964
+ - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /32, maximum allowed size is /8. Publicly-routable addresses aren't supported.
7714
7965
  - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range.
7715
7966
  - Each block must have a route to the VPC that uses the VPC CIDR blocks, not public IPs or Elastic IPs. There are many options including AWS Transit Gateway , AWS Site-to-Site VPN , or AWS Direct Connect .
7716
7967
  - Each host must allow outbound connection to the EKS cluster control plane on TCP ports ``443`` and ``10250`` .
@@ -7749,10 +8000,10 @@ class CfnCluster(
7749
8000
 
7750
8001
  It must satisfy the following requirements:
7751
8002
 
7752
- - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /24, maximum allowed size is /8. Publicly-routable addresses aren't supported.
8003
+ - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /32, maximum allowed size is /8. Publicly-routable addresses aren't supported.
7753
8004
  - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range.
7754
8005
 
7755
- :param cidrs: A network CIDR that can contain pods that run Kubernetes webhooks on hybrid nodes. These CIDR blocks are determined by configuring your Container Network Interface (CNI) plugin. We recommend the Calico CNI or Cilium CNI. Note that the Amazon VPC CNI plugin for Kubernetes isn't available for on-premises and edge locations. Enter one or more IPv4 CIDR blocks in decimal dotted-quad notation (for example, ``10.2.0.0/16`` ). It must satisfy the following requirements: - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /24, maximum allowed size is /8. Publicly-routable addresses aren't supported. - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range.
8006
+ :param cidrs: A network CIDR that can contain pods that run Kubernetes webhooks on hybrid nodes. These CIDR blocks are determined by configuring your Container Network Interface (CNI) plugin. We recommend the Calico CNI or Cilium CNI. Note that the Amazon VPC CNI plugin for Kubernetes isn't available for on-premises and edge locations. Enter one or more IPv4 CIDR blocks in decimal dotted-quad notation (for example, ``10.2.0.0/16`` ). It must satisfy the following requirements: - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /32, maximum allowed size is /8. Publicly-routable addresses aren't supported. - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range.
7756
8007
 
7757
8008
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-remotepodnetwork.html
7758
8009
  :exampleMetadata: fixture=_generated
@@ -7784,7 +8035,7 @@ class CfnCluster(
7784
8035
 
7785
8036
  It must satisfy the following requirements:
7786
8037
 
7787
- - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /24, maximum allowed size is /8. Publicly-routable addresses aren't supported.
8038
+ - Each block must be within an ``IPv4`` RFC-1918 network range. Minimum allowed size is /32, maximum allowed size is /8. Publicly-routable addresses aren't supported.
7788
8039
  - Each block cannot overlap with the range of the VPC CIDR blocks for your EKS resources, or the block of the Kubernetes service IP range.
7789
8040
 
7790
8041
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-remotepodnetwork.html#cfn-eks-cluster-remotepodnetwork-cidrs
@@ -7836,9 +8087,9 @@ class CfnCluster(
7836
8087
  - ``PublicAccessCidrs``
7837
8088
 
7838
8089
  :param subnet_ids: Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your nodes and the Kubernetes control plane.
7839
- :param endpoint_private_access: Set this value to ``true`` to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is ``false`` , which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that ``publicAccessCidrs`` includes the necessary CIDR blocks for communication with the nodes or Fargate pods. For more information, see `Amazon EKS cluster endpoint access control <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
7840
- :param endpoint_public_access: Set this value to ``false`` to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is ``true`` , which enables public access for your Kubernetes API server. For more information, see `Amazon EKS cluster endpoint access control <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
7841
- :param public_access_cidrs: The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is ``0.0.0.0/0`` . If you've disabled private endpoint access, make sure that you specify the necessary CIDR blocks for every node and AWS Fargate ``Pod`` in the cluster. For more information, see `Amazon EKS cluster endpoint access control <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
8090
+ :param endpoint_private_access: Set this value to ``true`` to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is ``false`` , which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that ``publicAccessCidrs`` includes the necessary CIDR blocks for communication with the nodes or Fargate pods. For more information, see `Cluster API server endpoint <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
8091
+ :param endpoint_public_access: Set this value to ``false`` to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is ``true`` , which enables public access for your Kubernetes API server. The endpoint domain name and IP address family depends on the value of the ``ipFamily`` for the cluster. For more information, see `Cluster API server endpoint <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
8092
+ :param public_access_cidrs: The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is ``0.0.0.0/0`` and additionally ``::/0`` for dual-stack ``IPv6`` clusters. If you've disabled private endpoint access, make sure that you specify the necessary CIDR blocks for every node and AWS Fargate ``Pod`` in the cluster. For more information, see `Cluster API server endpoint <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** . Note that the public endpoints are dual-stack for only ``IPv6`` clusters that are made after October 2024. You can't add ``IPv6`` CIDR blocks to ``IPv4`` clusters or ``IPv6`` clusters that were made before October 2024.
7842
8093
  :param security_group_ids: Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use that allow communication between your nodes and the Kubernetes control plane. If you don't specify any security groups, then familiarize yourself with the difference between Amazon EKS defaults for clusters deployed with Kubernetes. For more information, see `Amazon EKS security group considerations <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html>`_ in the **Amazon EKS User Guide** .
7843
8094
 
7844
8095
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-resourcesvpcconfig.html
@@ -7897,7 +8148,7 @@ class CfnCluster(
7897
8148
  ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
7898
8149
  '''Set this value to ``true`` to enable private access for your cluster's Kubernetes API server endpoint.
7899
8150
 
7900
- If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is ``false`` , which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that ``publicAccessCidrs`` includes the necessary CIDR blocks for communication with the nodes or Fargate pods. For more information, see `Amazon EKS cluster endpoint access control <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
8151
+ If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is ``false`` , which disables private access for your Kubernetes API server. If you disable private access and you have nodes or AWS Fargate pods in the cluster, then ensure that ``publicAccessCidrs`` includes the necessary CIDR blocks for communication with the nodes or Fargate pods. For more information, see `Cluster API server endpoint <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
7901
8152
 
7902
8153
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-resourcesvpcconfig.html#cfn-eks-cluster-resourcesvpcconfig-endpointprivateaccess
7903
8154
  '''
@@ -7910,7 +8161,7 @@ class CfnCluster(
7910
8161
  ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
7911
8162
  '''Set this value to ``false`` to disable public access to your cluster's Kubernetes API server endpoint.
7912
8163
 
7913
- If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is ``true`` , which enables public access for your Kubernetes API server. For more information, see `Amazon EKS cluster endpoint access control <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
8164
+ If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is ``true`` , which enables public access for your Kubernetes API server. The endpoint domain name and IP address family depends on the value of the ``ipFamily`` for the cluster. For more information, see `Cluster API server endpoint <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
7914
8165
 
7915
8166
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-resourcesvpcconfig.html#cfn-eks-cluster-resourcesvpcconfig-endpointpublicaccess
7916
8167
  '''
@@ -7921,7 +8172,9 @@ class CfnCluster(
7921
8172
  def public_access_cidrs(self) -> typing.Optional[typing.List[builtins.str]]:
7922
8173
  '''The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint.
7923
8174
 
7924
- Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is ``0.0.0.0/0`` . If you've disabled private endpoint access, make sure that you specify the necessary CIDR blocks for every node and AWS Fargate ``Pod`` in the cluster. For more information, see `Amazon EKS cluster endpoint access control <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
8175
+ Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is ``0.0.0.0/0`` and additionally ``::/0`` for dual-stack ``IPv6`` clusters. If you've disabled private endpoint access, make sure that you specify the necessary CIDR blocks for every node and AWS Fargate ``Pod`` in the cluster. For more information, see `Cluster API server endpoint <https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html>`_ in the **Amazon EKS User Guide** .
8176
+
8177
+ Note that the public endpoints are dual-stack for only ``IPv6`` clusters that are made after October 2024. You can't add ``IPv6`` CIDR blocks to ``IPv4`` clusters or ``IPv6`` clusters that were made before October 2024.
7925
8178
 
7926
8179
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-resourcesvpcconfig.html#cfn-eks-cluster-resourcesvpcconfig-publicaccesscidrs
7927
8180
  '''
@@ -8141,6 +8394,7 @@ class CfnCluster(
8141
8394
  "access_config": "accessConfig",
8142
8395
  "bootstrap_self_managed_addons": "bootstrapSelfManagedAddons",
8143
8396
  "compute_config": "computeConfig",
8397
+ "deletion_protection": "deletionProtection",
8144
8398
  "encryption_config": "encryptionConfig",
8145
8399
  "force": "force",
8146
8400
  "kubernetes_network_config": "kubernetesNetworkConfig",
@@ -8164,6 +8418,7 @@ class CfnClusterProps:
8164
8418
  access_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.AccessConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
8165
8419
  bootstrap_self_managed_addons: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
8166
8420
  compute_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.ComputeConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
8421
+ deletion_protection: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
8167
8422
  encryption_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.EncryptionConfigProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
8168
8423
  force: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
8169
8424
  kubernetes_network_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.KubernetesNetworkConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -8182,8 +8437,9 @@ class CfnClusterProps:
8182
8437
  :param resources_vpc_config: The VPC configuration that's used by the cluster control plane. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see `Cluster VPC Considerations <https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html>`_ and `Cluster Security Group Considerations <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html>`_ in the *Amazon EKS User Guide* . You must specify at least two subnets. You can specify up to five security groups, but we recommend that you use a dedicated security group for your cluster control plane.
8183
8438
  :param role_arn: The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. For more information, see `Amazon EKS Service IAM Role <https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html>`_ in the **Amazon EKS User Guide** .
8184
8439
  :param access_config: The access configuration for the cluster.
8185
- :param bootstrap_self_managed_addons: If you set this value to ``False`` when creating a cluster, the default networking add-ons will not be installed. The default networking addons include vpc-cni, coredns, and kube-proxy. Use this option when you plan to install third-party alternative add-ons or self-manage the default networking add-ons.
8440
+ :param bootstrap_self_managed_addons: If you set this value to ``False`` when creating a cluster, the default networking add-ons will not be installed. The default networking add-ons include ``vpc-cni`` , ``coredns`` , and ``kube-proxy`` . Use this option when you plan to install third-party alternative add-ons or self-manage the default networking add-ons.
8186
8441
  :param compute_config: Indicates the current configuration of the compute capability on your EKS Auto Mode cluster. For example, if the capability is enabled or disabled. If the compute capability is enabled, EKS Auto Mode will create and delete EC2 Managed Instances in your AWS account. For more information, see EKS Auto Mode compute capability in the *Amazon EKS User Guide* .
8442
+ :param deletion_protection: The current deletion protection setting for the cluster. When ``true`` , deletion protection is enabled and the cluster cannot be deleted until protection is disabled. When ``false`` , the cluster can be deleted normally. This setting only applies to clusters in an active state.
8187
8443
  :param encryption_config: The encryption configuration for the cluster.
8188
8444
  :param force: Set this value to ``true`` to override upgrade-blocking readiness checks when updating a cluster. Default: - false
8189
8445
  :param kubernetes_network_config: The Kubernetes network configuration for the cluster.
@@ -8229,6 +8485,7 @@ class CfnClusterProps:
8229
8485
  node_pools=["nodePools"],
8230
8486
  node_role_arn="nodeRoleArn"
8231
8487
  ),
8488
+ deletion_protection=False,
8232
8489
  encryption_config=[eks.CfnCluster.EncryptionConfigProperty(
8233
8490
  provider=eks.CfnCluster.ProviderProperty(
8234
8491
  key_arn="keyArn"
@@ -8296,6 +8553,7 @@ class CfnClusterProps:
8296
8553
  check_type(argname="argument access_config", value=access_config, expected_type=type_hints["access_config"])
8297
8554
  check_type(argname="argument bootstrap_self_managed_addons", value=bootstrap_self_managed_addons, expected_type=type_hints["bootstrap_self_managed_addons"])
8298
8555
  check_type(argname="argument compute_config", value=compute_config, expected_type=type_hints["compute_config"])
8556
+ check_type(argname="argument deletion_protection", value=deletion_protection, expected_type=type_hints["deletion_protection"])
8299
8557
  check_type(argname="argument encryption_config", value=encryption_config, expected_type=type_hints["encryption_config"])
8300
8558
  check_type(argname="argument force", value=force, expected_type=type_hints["force"])
8301
8559
  check_type(argname="argument kubernetes_network_config", value=kubernetes_network_config, expected_type=type_hints["kubernetes_network_config"])
@@ -8318,6 +8576,8 @@ class CfnClusterProps:
8318
8576
  self._values["bootstrap_self_managed_addons"] = bootstrap_self_managed_addons
8319
8577
  if compute_config is not None:
8320
8578
  self._values["compute_config"] = compute_config
8579
+ if deletion_protection is not None:
8580
+ self._values["deletion_protection"] = deletion_protection
8321
8581
  if encryption_config is not None:
8322
8582
  self._values["encryption_config"] = encryption_config
8323
8583
  if force is not None:
@@ -8386,7 +8646,7 @@ class CfnClusterProps:
8386
8646
  ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
8387
8647
  '''If you set this value to ``False`` when creating a cluster, the default networking add-ons will not be installed.
8388
8648
 
8389
- The default networking addons include vpc-cni, coredns, and kube-proxy.
8649
+ The default networking add-ons include ``vpc-cni`` , ``coredns`` , and ``kube-proxy`` .
8390
8650
 
8391
8651
  Use this option when you plan to install third-party alternative add-ons or self-manage the default networking add-ons.
8392
8652
 
@@ -8408,6 +8668,19 @@ class CfnClusterProps:
8408
8668
  result = self._values.get("compute_config")
8409
8669
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnCluster.ComputeConfigProperty]], result)
8410
8670
 
8671
+ @builtins.property
8672
+ def deletion_protection(
8673
+ self,
8674
+ ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
8675
+ '''The current deletion protection setting for the cluster.
8676
+
8677
+ When ``true`` , deletion protection is enabled and the cluster cannot be deleted until protection is disabled. When ``false`` , the cluster can be deleted normally. This setting only applies to clusters in an active state.
8678
+
8679
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-cluster.html#cfn-eks-cluster-deletionprotection
8680
+ '''
8681
+ result = self._values.get("deletion_protection")
8682
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], result)
8683
+
8411
8684
  @builtins.property
8412
8685
  def encryption_config(
8413
8686
  self,
@@ -8568,7 +8841,7 @@ class CfnClusterProps:
8568
8841
  )
8569
8842
 
8570
8843
 
8571
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
8844
+ @jsii.implements(_IInspectable_c2943556, _IFargateProfileRef_ebba9623, _ITaggable_36806126)
8572
8845
  class CfnFargateProfile(
8573
8846
  _CfnResource_9df397a6,
8574
8847
  metaclass=jsii.JSIIMeta,
@@ -8633,7 +8906,8 @@ class CfnFargateProfile(
8633
8906
  subnets: typing.Optional[typing.Sequence[builtins.str]] = None,
8634
8907
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
8635
8908
  ) -> None:
8636
- '''
8909
+ '''Create a new ``AWS::EKS::FargateProfile``.
8910
+
8637
8911
  :param scope: Scope in which this resource is defined.
8638
8912
  :param id: Construct identifier for this resource (unique in its scope).
8639
8913
  :param cluster_name: The name of your cluster.
@@ -8702,6 +8976,12 @@ class CfnFargateProfile(
8702
8976
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
8703
8977
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
8704
8978
 
8979
+ @builtins.property
8980
+ @jsii.member(jsii_name="fargateProfileRef")
8981
+ def fargate_profile_ref(self) -> _FargateProfileReference_5fd534f8:
8982
+ '''A reference to a FargateProfile resource.'''
8983
+ return typing.cast(_FargateProfileReference_5fd534f8, jsii.get(self, "fargateProfileRef"))
8984
+
8705
8985
  @builtins.property
8706
8986
  @jsii.member(jsii_name="tags")
8707
8987
  def tags(self) -> _TagManager_0a598cb3:
@@ -9100,7 +9380,7 @@ class CfnFargateProfileProps:
9100
9380
  )
9101
9381
 
9102
9382
 
9103
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
9383
+ @jsii.implements(_IInspectable_c2943556, _IIdentityProviderConfigRef_0106e882, _ITaggable_36806126)
9104
9384
  class CfnIdentityProviderConfig(
9105
9385
  _CfnResource_9df397a6,
9106
9386
  metaclass=jsii.JSIIMeta,
@@ -9158,7 +9438,8 @@ class CfnIdentityProviderConfig(
9158
9438
  oidc: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnIdentityProviderConfig.OidcIdentityProviderConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
9159
9439
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
9160
9440
  ) -> None:
9161
- '''
9441
+ '''Create a new ``AWS::EKS::IdentityProviderConfig``.
9442
+
9162
9443
  :param scope: Scope in which this resource is defined.
9163
9444
  :param id: Construct identifier for this resource (unique in its scope).
9164
9445
  :param cluster_name: The name of your cluster.
@@ -9225,6 +9506,12 @@ class CfnIdentityProviderConfig(
9225
9506
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
9226
9507
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
9227
9508
 
9509
+ @builtins.property
9510
+ @jsii.member(jsii_name="identityProviderConfigRef")
9511
+ def identity_provider_config_ref(self) -> _IdentityProviderConfigReference_7c0f381e:
9512
+ '''A reference to a IdentityProviderConfig resource.'''
9513
+ return typing.cast(_IdentityProviderConfigReference_7c0f381e, jsii.get(self, "identityProviderConfigRef"))
9514
+
9228
9515
  @builtins.property
9229
9516
  @jsii.member(jsii_name="tags")
9230
9517
  def tags(self) -> _TagManager_0a598cb3:
@@ -9689,7 +9976,7 @@ class CfnIdentityProviderConfigProps:
9689
9976
  )
9690
9977
 
9691
9978
 
9692
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
9979
+ @jsii.implements(_IInspectable_c2943556, _INodegroupRef_cac0d8aa, _ITaggable_36806126)
9693
9980
  class CfnNodegroup(
9694
9981
  _CfnResource_9df397a6,
9695
9982
  metaclass=jsii.JSIIMeta,
@@ -9737,7 +10024,17 @@ class CfnNodegroup(
9737
10024
  ),
9738
10025
  nodegroup_name="nodegroupName",
9739
10026
  node_repair_config=eks.CfnNodegroup.NodeRepairConfigProperty(
9740
- enabled=False
10027
+ enabled=False,
10028
+ max_parallel_nodes_repaired_count=123,
10029
+ max_parallel_nodes_repaired_percentage=123,
10030
+ max_unhealthy_node_threshold_count=123,
10031
+ max_unhealthy_node_threshold_percentage=123,
10032
+ node_repair_config_overrides=[eks.CfnNodegroup.NodeRepairConfigOverridesProperty(
10033
+ min_repair_wait_time_mins=123,
10034
+ node_monitoring_condition="nodeMonitoringCondition",
10035
+ node_unhealthy_reason="nodeUnhealthyReason",
10036
+ repair_action="repairAction"
10037
+ )]
9741
10038
  ),
9742
10039
  release_version="releaseVersion",
9743
10040
  remote_access=eks.CfnNodegroup.RemoteAccessProperty(
@@ -9793,7 +10090,8 @@ class CfnNodegroup(
9793
10090
  update_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnNodegroup.UpdateConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
9794
10091
  version: typing.Optional[builtins.str] = None,
9795
10092
  ) -> None:
9796
- '''
10093
+ '''Create a new ``AWS::EKS::Nodegroup``.
10094
+
9797
10095
  :param scope: Scope in which this resource is defined.
9798
10096
  :param id: Construct identifier for this resource (unique in its scope).
9799
10097
  :param cluster_name: The name of your cluster.
@@ -9914,6 +10212,12 @@ class CfnNodegroup(
9914
10212
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
9915
10213
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
9916
10214
 
10215
+ @builtins.property
10216
+ @jsii.member(jsii_name="nodegroupRef")
10217
+ def nodegroup_ref(self) -> _NodegroupReference_eab944f6:
10218
+ '''A reference to a Nodegroup resource.'''
10219
+ return typing.cast(_NodegroupReference_eab944f6, jsii.get(self, "nodegroupRef"))
10220
+
9917
10221
  @builtins.property
9918
10222
  @jsii.member(jsii_name="tags")
9919
10223
  def tags(self) -> _TagManager_0a598cb3:
@@ -10305,20 +10609,144 @@ class CfnNodegroup(
10305
10609
  k + "=" + repr(v) for k, v in self._values.items()
10306
10610
  )
10307
10611
 
10612
+ @jsii.data_type(
10613
+ jsii_type="aws-cdk-lib.aws_eks.CfnNodegroup.NodeRepairConfigOverridesProperty",
10614
+ jsii_struct_bases=[],
10615
+ name_mapping={
10616
+ "min_repair_wait_time_mins": "minRepairWaitTimeMins",
10617
+ "node_monitoring_condition": "nodeMonitoringCondition",
10618
+ "node_unhealthy_reason": "nodeUnhealthyReason",
10619
+ "repair_action": "repairAction",
10620
+ },
10621
+ )
10622
+ class NodeRepairConfigOverridesProperty:
10623
+ def __init__(
10624
+ self,
10625
+ *,
10626
+ min_repair_wait_time_mins: typing.Optional[jsii.Number] = None,
10627
+ node_monitoring_condition: typing.Optional[builtins.str] = None,
10628
+ node_unhealthy_reason: typing.Optional[builtins.str] = None,
10629
+ repair_action: typing.Optional[builtins.str] = None,
10630
+ ) -> None:
10631
+ '''Specify granular overrides for specific repair actions.
10632
+
10633
+ These overrides control the repair action and the repair delay time before a node is considered eligible for repair. If you use this, you must specify all the values.
10634
+
10635
+ :param min_repair_wait_time_mins: Specify the minimum time in minutes to wait before attempting to repair a node with this specific NodeMonitoringCondition and NodeUnhealthyReason.
10636
+ :param node_monitoring_condition: Specify an unhealthy condition reported by the node monitoring agent that this override would apply to.
10637
+ :param node_unhealthy_reason: Specify a reason reported by the node monitoring agent that this override would apply to.
10638
+ :param repair_action: Specify the repair action to take for nodes when all of the specified conditions are met.
10639
+
10640
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-noderepairconfigoverrides.html
10641
+ :exampleMetadata: fixture=_generated
10642
+
10643
+ Example::
10644
+
10645
+ # The code below shows an example of how to instantiate this type.
10646
+ # The values are placeholders you should change.
10647
+ from aws_cdk import aws_eks as eks
10648
+
10649
+ node_repair_config_overrides_property = eks.CfnNodegroup.NodeRepairConfigOverridesProperty(
10650
+ min_repair_wait_time_mins=123,
10651
+ node_monitoring_condition="nodeMonitoringCondition",
10652
+ node_unhealthy_reason="nodeUnhealthyReason",
10653
+ repair_action="repairAction"
10654
+ )
10655
+ '''
10656
+ if __debug__:
10657
+ type_hints = typing.get_type_hints(_typecheckingstub__1c8182284f4e249d40ce1280381d42d4de802714ccdb98dd8928f394e7a79a18)
10658
+ check_type(argname="argument min_repair_wait_time_mins", value=min_repair_wait_time_mins, expected_type=type_hints["min_repair_wait_time_mins"])
10659
+ check_type(argname="argument node_monitoring_condition", value=node_monitoring_condition, expected_type=type_hints["node_monitoring_condition"])
10660
+ check_type(argname="argument node_unhealthy_reason", value=node_unhealthy_reason, expected_type=type_hints["node_unhealthy_reason"])
10661
+ check_type(argname="argument repair_action", value=repair_action, expected_type=type_hints["repair_action"])
10662
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
10663
+ if min_repair_wait_time_mins is not None:
10664
+ self._values["min_repair_wait_time_mins"] = min_repair_wait_time_mins
10665
+ if node_monitoring_condition is not None:
10666
+ self._values["node_monitoring_condition"] = node_monitoring_condition
10667
+ if node_unhealthy_reason is not None:
10668
+ self._values["node_unhealthy_reason"] = node_unhealthy_reason
10669
+ if repair_action is not None:
10670
+ self._values["repair_action"] = repair_action
10671
+
10672
+ @builtins.property
10673
+ def min_repair_wait_time_mins(self) -> typing.Optional[jsii.Number]:
10674
+ '''Specify the minimum time in minutes to wait before attempting to repair a node with this specific NodeMonitoringCondition and NodeUnhealthyReason.
10675
+
10676
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-noderepairconfigoverrides.html#cfn-eks-nodegroup-noderepairconfigoverrides-minrepairwaittimemins
10677
+ '''
10678
+ result = self._values.get("min_repair_wait_time_mins")
10679
+ return typing.cast(typing.Optional[jsii.Number], result)
10680
+
10681
+ @builtins.property
10682
+ def node_monitoring_condition(self) -> typing.Optional[builtins.str]:
10683
+ '''Specify an unhealthy condition reported by the node monitoring agent that this override would apply to.
10684
+
10685
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-noderepairconfigoverrides.html#cfn-eks-nodegroup-noderepairconfigoverrides-nodemonitoringcondition
10686
+ '''
10687
+ result = self._values.get("node_monitoring_condition")
10688
+ return typing.cast(typing.Optional[builtins.str], result)
10689
+
10690
+ @builtins.property
10691
+ def node_unhealthy_reason(self) -> typing.Optional[builtins.str]:
10692
+ '''Specify a reason reported by the node monitoring agent that this override would apply to.
10693
+
10694
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-noderepairconfigoverrides.html#cfn-eks-nodegroup-noderepairconfigoverrides-nodeunhealthyreason
10695
+ '''
10696
+ result = self._values.get("node_unhealthy_reason")
10697
+ return typing.cast(typing.Optional[builtins.str], result)
10698
+
10699
+ @builtins.property
10700
+ def repair_action(self) -> typing.Optional[builtins.str]:
10701
+ '''Specify the repair action to take for nodes when all of the specified conditions are met.
10702
+
10703
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-noderepairconfigoverrides.html#cfn-eks-nodegroup-noderepairconfigoverrides-repairaction
10704
+ '''
10705
+ result = self._values.get("repair_action")
10706
+ return typing.cast(typing.Optional[builtins.str], result)
10707
+
10708
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
10709
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
10710
+
10711
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
10712
+ return not (rhs == self)
10713
+
10714
+ def __repr__(self) -> str:
10715
+ return "NodeRepairConfigOverridesProperty(%s)" % ", ".join(
10716
+ k + "=" + repr(v) for k, v in self._values.items()
10717
+ )
10718
+
10308
10719
  @jsii.data_type(
10309
10720
  jsii_type="aws-cdk-lib.aws_eks.CfnNodegroup.NodeRepairConfigProperty",
10310
10721
  jsii_struct_bases=[],
10311
- name_mapping={"enabled": "enabled"},
10722
+ name_mapping={
10723
+ "enabled": "enabled",
10724
+ "max_parallel_nodes_repaired_count": "maxParallelNodesRepairedCount",
10725
+ "max_parallel_nodes_repaired_percentage": "maxParallelNodesRepairedPercentage",
10726
+ "max_unhealthy_node_threshold_count": "maxUnhealthyNodeThresholdCount",
10727
+ "max_unhealthy_node_threshold_percentage": "maxUnhealthyNodeThresholdPercentage",
10728
+ "node_repair_config_overrides": "nodeRepairConfigOverrides",
10729
+ },
10312
10730
  )
10313
10731
  class NodeRepairConfigProperty:
10314
10732
  def __init__(
10315
10733
  self,
10316
10734
  *,
10317
10735
  enabled: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
10736
+ max_parallel_nodes_repaired_count: typing.Optional[jsii.Number] = None,
10737
+ max_parallel_nodes_repaired_percentage: typing.Optional[jsii.Number] = None,
10738
+ max_unhealthy_node_threshold_count: typing.Optional[jsii.Number] = None,
10739
+ max_unhealthy_node_threshold_percentage: typing.Optional[jsii.Number] = None,
10740
+ node_repair_config_overrides: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnNodegroup.NodeRepairConfigOverridesProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
10318
10741
  ) -> None:
10319
10742
  '''The node auto repair configuration for the node group.
10320
10743
 
10321
10744
  :param enabled: Specifies whether to enable node auto repair for the node group. Node auto repair is disabled by default.
10745
+ :param max_parallel_nodes_repaired_count: Specify the maximum number of nodes that can be repaired concurrently or in parallel, expressed as a count of unhealthy nodes. This gives you finer-grained control over the pace of node replacements. When using this, you cannot also set MaxParallelNodesRepairedPercentage at the same time.
10746
+ :param max_parallel_nodes_repaired_percentage: Specify the maximum number of nodes that can be repaired concurrently or in parallel, expressed as a percentage of unhealthy nodes. This gives you finer-grained control over the pace of node replacements. When using this, you cannot also set MaxParallelNodesRepairedCount at the same time.
10747
+ :param max_unhealthy_node_threshold_count: Specify a count threshold of unhealthy nodes, above which node auto repair actions will stop. When using this, you cannot also set MaxUnhealthyNodeThresholdPercentage at the same time.
10748
+ :param max_unhealthy_node_threshold_percentage: Specify a percentage threshold of unhealthy nodes, above which node auto repair actions will stop. When using this, you cannot also set MaxUnhealthyNodeThresholdCount at the same time.
10749
+ :param node_repair_config_overrides: Specify granular overrides for specific repair actions. These overrides control the repair action and the repair delay time before a node is considered eligible for repair. If you use this, you must specify all the values.
10322
10750
 
10323
10751
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-noderepairconfig.html
10324
10752
  :exampleMetadata: fixture=_generated
@@ -10330,15 +10758,40 @@ class CfnNodegroup(
10330
10758
  from aws_cdk import aws_eks as eks
10331
10759
 
10332
10760
  node_repair_config_property = eks.CfnNodegroup.NodeRepairConfigProperty(
10333
- enabled=False
10761
+ enabled=False,
10762
+ max_parallel_nodes_repaired_count=123,
10763
+ max_parallel_nodes_repaired_percentage=123,
10764
+ max_unhealthy_node_threshold_count=123,
10765
+ max_unhealthy_node_threshold_percentage=123,
10766
+ node_repair_config_overrides=[eks.CfnNodegroup.NodeRepairConfigOverridesProperty(
10767
+ min_repair_wait_time_mins=123,
10768
+ node_monitoring_condition="nodeMonitoringCondition",
10769
+ node_unhealthy_reason="nodeUnhealthyReason",
10770
+ repair_action="repairAction"
10771
+ )]
10334
10772
  )
10335
10773
  '''
10336
10774
  if __debug__:
10337
10775
  type_hints = typing.get_type_hints(_typecheckingstub__29dbda55ee07f00e62bcfcbc392973b5c2850e347abc3e6692b5d82704d445f0)
10338
10776
  check_type(argname="argument enabled", value=enabled, expected_type=type_hints["enabled"])
10777
+ check_type(argname="argument max_parallel_nodes_repaired_count", value=max_parallel_nodes_repaired_count, expected_type=type_hints["max_parallel_nodes_repaired_count"])
10778
+ check_type(argname="argument max_parallel_nodes_repaired_percentage", value=max_parallel_nodes_repaired_percentage, expected_type=type_hints["max_parallel_nodes_repaired_percentage"])
10779
+ check_type(argname="argument max_unhealthy_node_threshold_count", value=max_unhealthy_node_threshold_count, expected_type=type_hints["max_unhealthy_node_threshold_count"])
10780
+ check_type(argname="argument max_unhealthy_node_threshold_percentage", value=max_unhealthy_node_threshold_percentage, expected_type=type_hints["max_unhealthy_node_threshold_percentage"])
10781
+ check_type(argname="argument node_repair_config_overrides", value=node_repair_config_overrides, expected_type=type_hints["node_repair_config_overrides"])
10339
10782
  self._values: typing.Dict[builtins.str, typing.Any] = {}
10340
10783
  if enabled is not None:
10341
10784
  self._values["enabled"] = enabled
10785
+ if max_parallel_nodes_repaired_count is not None:
10786
+ self._values["max_parallel_nodes_repaired_count"] = max_parallel_nodes_repaired_count
10787
+ if max_parallel_nodes_repaired_percentage is not None:
10788
+ self._values["max_parallel_nodes_repaired_percentage"] = max_parallel_nodes_repaired_percentage
10789
+ if max_unhealthy_node_threshold_count is not None:
10790
+ self._values["max_unhealthy_node_threshold_count"] = max_unhealthy_node_threshold_count
10791
+ if max_unhealthy_node_threshold_percentage is not None:
10792
+ self._values["max_unhealthy_node_threshold_percentage"] = max_unhealthy_node_threshold_percentage
10793
+ if node_repair_config_overrides is not None:
10794
+ self._values["node_repair_config_overrides"] = node_repair_config_overrides
10342
10795
 
10343
10796
  @builtins.property
10344
10797
  def enabled(
@@ -10353,6 +10806,67 @@ class CfnNodegroup(
10353
10806
  result = self._values.get("enabled")
10354
10807
  return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], result)
10355
10808
 
10809
+ @builtins.property
10810
+ def max_parallel_nodes_repaired_count(self) -> typing.Optional[jsii.Number]:
10811
+ '''Specify the maximum number of nodes that can be repaired concurrently or in parallel, expressed as a count of unhealthy nodes.
10812
+
10813
+ This gives you finer-grained control over the pace of node replacements. When using this, you cannot also set MaxParallelNodesRepairedPercentage at the same time.
10814
+
10815
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-noderepairconfig.html#cfn-eks-nodegroup-noderepairconfig-maxparallelnodesrepairedcount
10816
+ '''
10817
+ result = self._values.get("max_parallel_nodes_repaired_count")
10818
+ return typing.cast(typing.Optional[jsii.Number], result)
10819
+
10820
+ @builtins.property
10821
+ def max_parallel_nodes_repaired_percentage(
10822
+ self,
10823
+ ) -> typing.Optional[jsii.Number]:
10824
+ '''Specify the maximum number of nodes that can be repaired concurrently or in parallel, expressed as a percentage of unhealthy nodes.
10825
+
10826
+ This gives you finer-grained control over the pace of node replacements. When using this, you cannot also set MaxParallelNodesRepairedCount at the same time.
10827
+
10828
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-noderepairconfig.html#cfn-eks-nodegroup-noderepairconfig-maxparallelnodesrepairedpercentage
10829
+ '''
10830
+ result = self._values.get("max_parallel_nodes_repaired_percentage")
10831
+ return typing.cast(typing.Optional[jsii.Number], result)
10832
+
10833
+ @builtins.property
10834
+ def max_unhealthy_node_threshold_count(self) -> typing.Optional[jsii.Number]:
10835
+ '''Specify a count threshold of unhealthy nodes, above which node auto repair actions will stop.
10836
+
10837
+ When using this, you cannot also set MaxUnhealthyNodeThresholdPercentage at the same time.
10838
+
10839
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-noderepairconfig.html#cfn-eks-nodegroup-noderepairconfig-maxunhealthynodethresholdcount
10840
+ '''
10841
+ result = self._values.get("max_unhealthy_node_threshold_count")
10842
+ return typing.cast(typing.Optional[jsii.Number], result)
10843
+
10844
+ @builtins.property
10845
+ def max_unhealthy_node_threshold_percentage(
10846
+ self,
10847
+ ) -> typing.Optional[jsii.Number]:
10848
+ '''Specify a percentage threshold of unhealthy nodes, above which node auto repair actions will stop.
10849
+
10850
+ When using this, you cannot also set MaxUnhealthyNodeThresholdCount at the same time.
10851
+
10852
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-noderepairconfig.html#cfn-eks-nodegroup-noderepairconfig-maxunhealthynodethresholdpercentage
10853
+ '''
10854
+ result = self._values.get("max_unhealthy_node_threshold_percentage")
10855
+ return typing.cast(typing.Optional[jsii.Number], result)
10856
+
10857
+ @builtins.property
10858
+ def node_repair_config_overrides(
10859
+ self,
10860
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnNodegroup.NodeRepairConfigOverridesProperty"]]]]:
10861
+ '''Specify granular overrides for specific repair actions.
10862
+
10863
+ These overrides control the repair action and the repair delay time before a node is considered eligible for repair. If you use this, you must specify all the values.
10864
+
10865
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-noderepairconfig.html#cfn-eks-nodegroup-noderepairconfig-noderepairconfigoverrides
10866
+ '''
10867
+ result = self._values.get("node_repair_config_overrides")
10868
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnNodegroup.NodeRepairConfigOverridesProperty"]]]], result)
10869
+
10356
10870
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
10357
10871
  return isinstance(rhs, self.__class__) and rhs._values == self._values
10358
10872
 
@@ -10831,7 +11345,17 @@ class CfnNodegroupProps:
10831
11345
  ),
10832
11346
  nodegroup_name="nodegroupName",
10833
11347
  node_repair_config=eks.CfnNodegroup.NodeRepairConfigProperty(
10834
- enabled=False
11348
+ enabled=False,
11349
+ max_parallel_nodes_repaired_count=123,
11350
+ max_parallel_nodes_repaired_percentage=123,
11351
+ max_unhealthy_node_threshold_count=123,
11352
+ max_unhealthy_node_threshold_percentage=123,
11353
+ node_repair_config_overrides=[eks.CfnNodegroup.NodeRepairConfigOverridesProperty(
11354
+ min_repair_wait_time_mins=123,
11355
+ node_monitoring_condition="nodeMonitoringCondition",
11356
+ node_unhealthy_reason="nodeUnhealthyReason",
11357
+ repair_action="repairAction"
11358
+ )]
10835
11359
  ),
10836
11360
  release_version="releaseVersion",
10837
11361
  remote_access=eks.CfnNodegroup.RemoteAccessProperty(
@@ -11159,7 +11683,7 @@ class CfnNodegroupProps:
11159
11683
  )
11160
11684
 
11161
11685
 
11162
- @jsii.implements(_IInspectable_c2943556, _ITaggableV2_4e6798f8)
11686
+ @jsii.implements(_IInspectable_c2943556, _IPodIdentityAssociationRef_21f8b2b1, _ITaggableV2_4e6798f8)
11163
11687
  class CfnPodIdentityAssociation(
11164
11688
  _CfnResource_9df397a6,
11165
11689
  metaclass=jsii.JSIIMeta,
@@ -11184,10 +11708,12 @@ class CfnPodIdentityAssociation(
11184
11708
  service_account="serviceAccount",
11185
11709
 
11186
11710
  # the properties below are optional
11711
+ disable_session_tags=False,
11187
11712
  tags=[CfnTag(
11188
11713
  key="key",
11189
11714
  value="value"
11190
- )]
11715
+ )],
11716
+ target_role_arn="targetRoleArn"
11191
11717
  )
11192
11718
  '''
11193
11719
 
@@ -11200,16 +11726,21 @@ class CfnPodIdentityAssociation(
11200
11726
  namespace: builtins.str,
11201
11727
  role_arn: builtins.str,
11202
11728
  service_account: builtins.str,
11729
+ disable_session_tags: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
11203
11730
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
11731
+ target_role_arn: typing.Optional[builtins.str] = None,
11204
11732
  ) -> None:
11205
- '''
11733
+ '''Create a new ``AWS::EKS::PodIdentityAssociation``.
11734
+
11206
11735
  :param scope: Scope in which this resource is defined.
11207
11736
  :param id: Construct identifier for this resource (unique in its scope).
11208
11737
  :param cluster_name: The name of the cluster that the association is in.
11209
- :param namespace: The name of the Kubernetes namespace inside the cluster to create the association in. The service account and the pods that use the service account must be in this namespace.
11210
- :param role_arn: The Amazon Resource Name (ARN) of the IAM role to associate with the service account. The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the pods that use this service account.
11738
+ :param namespace: The name of the Kubernetes namespace inside the cluster to create the association in. The service account and the Pods that use the service account must be in this namespace.
11739
+ :param role_arn: The Amazon Resource Name (ARN) of the IAM role to associate with the service account. The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the Pods that use this service account.
11211
11740
  :param service_account: The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.
11741
+ :param disable_session_tags: The state of the automatic sessions tags. The value of *true* disables these tags. EKS Pod Identity adds a pre-defined set of session tags when it assumes the role. You can use these tags to author a single role that can work across resources by allowing access to AWS resources based on matching tags. By default, EKS Pod Identity attaches six tags, including tags for cluster name, namespace, and service account name. For the list of tags added by EKS Pod Identity, see `List of session tags added by EKS Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/pod-id-abac.html#pod-id-abac-tags>`_ in the *Amazon EKS User Guide* .
11212
11742
  :param tags: Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or AWS resources. The following basic restrictions apply to tags: - Maximum number of tags per resource – 50 - For each resource, each tag key must be unique, and each tag key can have only one value. - Maximum key length – 128 Unicode characters in UTF-8 - Maximum value length – 256 Unicode characters in UTF-8 - If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : /
11743
+ :param target_role_arn: The Amazon Resource Name (ARN) of the target IAM role to associate with the service account. This role is assumed by using the EKS Pod Identity association role, then the credentials for this role are injected into the Pod.
11213
11744
  '''
11214
11745
  if __debug__:
11215
11746
  type_hints = typing.get_type_hints(_typecheckingstub__be8311b6089cea26f85c63a586f0c5b063230a1b4a96ffcd4c6c983a331d8652)
@@ -11220,7 +11751,9 @@ class CfnPodIdentityAssociation(
11220
11751
  namespace=namespace,
11221
11752
  role_arn=role_arn,
11222
11753
  service_account=service_account,
11754
+ disable_session_tags=disable_session_tags,
11223
11755
  tags=tags,
11756
+ target_role_arn=target_role_arn,
11224
11757
  )
11225
11758
 
11226
11759
  jsii.create(self.__class__, self, [scope, id, props])
@@ -11273,6 +11806,19 @@ class CfnPodIdentityAssociation(
11273
11806
  '''
11274
11807
  return typing.cast(builtins.str, jsii.get(self, "attrAssociationId"))
11275
11808
 
11809
+ @builtins.property
11810
+ @jsii.member(jsii_name="attrExternalId")
11811
+ def attr_external_id(self) -> builtins.str:
11812
+ '''The unique identifier for this EKS Pod Identity association for a target IAM role.
11813
+
11814
+ You put this value in the trust policy of the target role, in a ``Condition`` to match the ``sts.ExternalId`` . This ensures that the target role can only be assumed by this association. This prevents the *confused deputy problem* . For more information about the confused deputy problem, see `The confused deputy problem <https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html>`_ in the *IAM User Guide* .
11815
+
11816
+ If you want to use the same target role with multiple associations or other roles, use independent statements in the trust policy to allow ``sts:AssumeRole`` access from each role.
11817
+
11818
+ :cloudformationAttribute: ExternalId
11819
+ '''
11820
+ return typing.cast(builtins.str, jsii.get(self, "attrExternalId"))
11821
+
11276
11822
  @builtins.property
11277
11823
  @jsii.member(jsii_name="cdkTagManager")
11278
11824
  def cdk_tag_manager(self) -> _TagManager_0a598cb3:
@@ -11284,6 +11830,12 @@ class CfnPodIdentityAssociation(
11284
11830
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
11285
11831
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
11286
11832
 
11833
+ @builtins.property
11834
+ @jsii.member(jsii_name="podIdentityAssociationRef")
11835
+ def pod_identity_association_ref(self) -> _PodIdentityAssociationReference_14e19bbb:
11836
+ '''A reference to a PodIdentityAssociation resource.'''
11837
+ return typing.cast(_PodIdentityAssociationReference_14e19bbb, jsii.get(self, "podIdentityAssociationRef"))
11838
+
11287
11839
  @builtins.property
11288
11840
  @jsii.member(jsii_name="clusterName")
11289
11841
  def cluster_name(self) -> builtins.str:
@@ -11336,6 +11888,27 @@ class CfnPodIdentityAssociation(
11336
11888
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
11337
11889
  jsii.set(self, "serviceAccount", value) # pyright: ignore[reportArgumentType]
11338
11890
 
11891
+ @builtins.property
11892
+ @jsii.member(jsii_name="disableSessionTags")
11893
+ def disable_session_tags(
11894
+ self,
11895
+ ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
11896
+ '''The state of the automatic sessions tags.
11897
+
11898
+ The value of *true* disables these tags.
11899
+ '''
11900
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], jsii.get(self, "disableSessionTags"))
11901
+
11902
+ @disable_session_tags.setter
11903
+ def disable_session_tags(
11904
+ self,
11905
+ value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
11906
+ ) -> None:
11907
+ if __debug__:
11908
+ type_hints = typing.get_type_hints(_typecheckingstub__cb3dbe4cc3b44e9265bbfe13e41235db909b0c1dc0e052b3bdda07fd4b228e8b)
11909
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
11910
+ jsii.set(self, "disableSessionTags", value) # pyright: ignore[reportArgumentType]
11911
+
11339
11912
  @builtins.property
11340
11913
  @jsii.member(jsii_name="tags")
11341
11914
  def tags(self) -> typing.Optional[typing.List[_CfnTag_f6864754]]:
@@ -11349,6 +11922,19 @@ class CfnPodIdentityAssociation(
11349
11922
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
11350
11923
  jsii.set(self, "tags", value) # pyright: ignore[reportArgumentType]
11351
11924
 
11925
+ @builtins.property
11926
+ @jsii.member(jsii_name="targetRoleArn")
11927
+ def target_role_arn(self) -> typing.Optional[builtins.str]:
11928
+ '''The Amazon Resource Name (ARN) of the target IAM role to associate with the service account.'''
11929
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "targetRoleArn"))
11930
+
11931
+ @target_role_arn.setter
11932
+ def target_role_arn(self, value: typing.Optional[builtins.str]) -> None:
11933
+ if __debug__:
11934
+ type_hints = typing.get_type_hints(_typecheckingstub__cb6220c6db8cf93a8a307b1ba0630d6bc64b4a09325e7cfe5854228aa75ff833)
11935
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
11936
+ jsii.set(self, "targetRoleArn", value) # pyright: ignore[reportArgumentType]
11937
+
11352
11938
 
11353
11939
  @jsii.data_type(
11354
11940
  jsii_type="aws-cdk-lib.aws_eks.CfnPodIdentityAssociationProps",
@@ -11358,7 +11944,9 @@ class CfnPodIdentityAssociation(
11358
11944
  "namespace": "namespace",
11359
11945
  "role_arn": "roleArn",
11360
11946
  "service_account": "serviceAccount",
11947
+ "disable_session_tags": "disableSessionTags",
11361
11948
  "tags": "tags",
11949
+ "target_role_arn": "targetRoleArn",
11362
11950
  },
11363
11951
  )
11364
11952
  class CfnPodIdentityAssociationProps:
@@ -11369,15 +11957,19 @@ class CfnPodIdentityAssociationProps:
11369
11957
  namespace: builtins.str,
11370
11958
  role_arn: builtins.str,
11371
11959
  service_account: builtins.str,
11960
+ disable_session_tags: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
11372
11961
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
11962
+ target_role_arn: typing.Optional[builtins.str] = None,
11373
11963
  ) -> None:
11374
11964
  '''Properties for defining a ``CfnPodIdentityAssociation``.
11375
11965
 
11376
11966
  :param cluster_name: The name of the cluster that the association is in.
11377
- :param namespace: The name of the Kubernetes namespace inside the cluster to create the association in. The service account and the pods that use the service account must be in this namespace.
11378
- :param role_arn: The Amazon Resource Name (ARN) of the IAM role to associate with the service account. The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the pods that use this service account.
11967
+ :param namespace: The name of the Kubernetes namespace inside the cluster to create the association in. The service account and the Pods that use the service account must be in this namespace.
11968
+ :param role_arn: The Amazon Resource Name (ARN) of the IAM role to associate with the service account. The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the Pods that use this service account.
11379
11969
  :param service_account: The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.
11970
+ :param disable_session_tags: The state of the automatic sessions tags. The value of *true* disables these tags. EKS Pod Identity adds a pre-defined set of session tags when it assumes the role. You can use these tags to author a single role that can work across resources by allowing access to AWS resources based on matching tags. By default, EKS Pod Identity attaches six tags, including tags for cluster name, namespace, and service account name. For the list of tags added by EKS Pod Identity, see `List of session tags added by EKS Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/pod-id-abac.html#pod-id-abac-tags>`_ in the *Amazon EKS User Guide* .
11380
11971
  :param tags: Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or AWS resources. The following basic restrictions apply to tags: - Maximum number of tags per resource – 50 - For each resource, each tag key must be unique, and each tag key can have only one value. - Maximum key length – 128 Unicode characters in UTF-8 - Maximum value length – 256 Unicode characters in UTF-8 - If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : /
11972
+ :param target_role_arn: The Amazon Resource Name (ARN) of the target IAM role to associate with the service account. This role is assumed by using the EKS Pod Identity association role, then the credentials for this role are injected into the Pod.
11381
11973
 
11382
11974
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-podidentityassociation.html
11383
11975
  :exampleMetadata: fixture=_generated
@@ -11395,10 +11987,12 @@ class CfnPodIdentityAssociationProps:
11395
11987
  service_account="serviceAccount",
11396
11988
 
11397
11989
  # the properties below are optional
11990
+ disable_session_tags=False,
11398
11991
  tags=[CfnTag(
11399
11992
  key="key",
11400
11993
  value="value"
11401
- )]
11994
+ )],
11995
+ target_role_arn="targetRoleArn"
11402
11996
  )
11403
11997
  '''
11404
11998
  if __debug__:
@@ -11407,15 +12001,21 @@ class CfnPodIdentityAssociationProps:
11407
12001
  check_type(argname="argument namespace", value=namespace, expected_type=type_hints["namespace"])
11408
12002
  check_type(argname="argument role_arn", value=role_arn, expected_type=type_hints["role_arn"])
11409
12003
  check_type(argname="argument service_account", value=service_account, expected_type=type_hints["service_account"])
12004
+ check_type(argname="argument disable_session_tags", value=disable_session_tags, expected_type=type_hints["disable_session_tags"])
11410
12005
  check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
12006
+ check_type(argname="argument target_role_arn", value=target_role_arn, expected_type=type_hints["target_role_arn"])
11411
12007
  self._values: typing.Dict[builtins.str, typing.Any] = {
11412
12008
  "cluster_name": cluster_name,
11413
12009
  "namespace": namespace,
11414
12010
  "role_arn": role_arn,
11415
12011
  "service_account": service_account,
11416
12012
  }
12013
+ if disable_session_tags is not None:
12014
+ self._values["disable_session_tags"] = disable_session_tags
11417
12015
  if tags is not None:
11418
12016
  self._values["tags"] = tags
12017
+ if target_role_arn is not None:
12018
+ self._values["target_role_arn"] = target_role_arn
11419
12019
 
11420
12020
  @builtins.property
11421
12021
  def cluster_name(self) -> builtins.str:
@@ -11431,7 +12031,7 @@ class CfnPodIdentityAssociationProps:
11431
12031
  def namespace(self) -> builtins.str:
11432
12032
  '''The name of the Kubernetes namespace inside the cluster to create the association in.
11433
12033
 
11434
- The service account and the pods that use the service account must be in this namespace.
12034
+ The service account and the Pods that use the service account must be in this namespace.
11435
12035
 
11436
12036
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-podidentityassociation.html#cfn-eks-podidentityassociation-namespace
11437
12037
  '''
@@ -11443,7 +12043,7 @@ class CfnPodIdentityAssociationProps:
11443
12043
  def role_arn(self) -> builtins.str:
11444
12044
  '''The Amazon Resource Name (ARN) of the IAM role to associate with the service account.
11445
12045
 
11446
- The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the pods that use this service account.
12046
+ The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the Pods that use this service account.
11447
12047
 
11448
12048
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-podidentityassociation.html#cfn-eks-podidentityassociation-rolearn
11449
12049
  '''
@@ -11461,6 +12061,19 @@ class CfnPodIdentityAssociationProps:
11461
12061
  assert result is not None, "Required property 'service_account' is missing"
11462
12062
  return typing.cast(builtins.str, result)
11463
12063
 
12064
+ @builtins.property
12065
+ def disable_session_tags(
12066
+ self,
12067
+ ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
12068
+ '''The state of the automatic sessions tags. The value of *true* disables these tags.
12069
+
12070
+ EKS Pod Identity adds a pre-defined set of session tags when it assumes the role. You can use these tags to author a single role that can work across resources by allowing access to AWS resources based on matching tags. By default, EKS Pod Identity attaches six tags, including tags for cluster name, namespace, and service account name. For the list of tags added by EKS Pod Identity, see `List of session tags added by EKS Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/pod-id-abac.html#pod-id-abac-tags>`_ in the *Amazon EKS User Guide* .
12071
+
12072
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-podidentityassociation.html#cfn-eks-podidentityassociation-disablesessiontags
12073
+ '''
12074
+ result = self._values.get("disable_session_tags")
12075
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], result)
12076
+
11464
12077
  @builtins.property
11465
12078
  def tags(self) -> typing.Optional[typing.List[_CfnTag_f6864754]]:
11466
12079
  '''Metadata that assists with categorization and organization.
@@ -11486,6 +12099,17 @@ class CfnPodIdentityAssociationProps:
11486
12099
  result = self._values.get("tags")
11487
12100
  return typing.cast(typing.Optional[typing.List[_CfnTag_f6864754]], result)
11488
12101
 
12102
+ @builtins.property
12103
+ def target_role_arn(self) -> typing.Optional[builtins.str]:
12104
+ '''The Amazon Resource Name (ARN) of the target IAM role to associate with the service account.
12105
+
12106
+ This role is assumed by using the EKS Pod Identity association role, then the credentials for this role are injected into the Pod.
12107
+
12108
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-podidentityassociation.html#cfn-eks-podidentityassociation-targetrolearn
12109
+ '''
12110
+ result = self._values.get("target_role_arn")
12111
+ return typing.cast(typing.Optional[builtins.str], result)
12112
+
11489
12113
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
11490
12114
  return isinstance(rhs, self.__class__) and rhs._values == self._values
11491
12115
 
@@ -11928,15 +12552,15 @@ class ClusterLoggingTypes(enum.Enum):
11928
12552
 
11929
12553
  Example::
11930
12554
 
11931
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
12555
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
11932
12556
 
11933
12557
 
11934
12558
  cluster = eks.Cluster(self, "Cluster",
11935
12559
  # ...
11936
- version=eks.KubernetesVersion.V1_32,
12560
+ version=eks.KubernetesVersion.V1_34,
11937
12561
  cluster_logging=[eks.ClusterLoggingTypes.API, eks.ClusterLoggingTypes.AUTHENTICATOR, eks.ClusterLoggingTypes.SCHEDULER
11938
12562
  ],
11939
- kubectl_layer=KubectlV32Layer(self, "kubectl")
12563
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
11940
12564
  )
11941
12565
  '''
11942
12566
 
@@ -11984,7 +12608,7 @@ class CommonClusterOptions:
11984
12608
  :param version: The Kubernetes version to run in the cluster.
11985
12609
  :param cluster_name: Name for the cluster. Default: - Automatically generated name
11986
12610
  :param output_cluster_name: Determines whether a CloudFormation output with the name of the cluster will be synthesized. Default: false
11987
- :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and, if applicable, the ARN of the masters IAM role. Default: true
12611
+ :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and the ARN of the masters IAM role. Note: If mastersRole is not specified, this property will be ignored and no config command will be emitted. Default: true
11988
12612
  :param role: Role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Default: - A role is automatically created for you
11989
12613
  :param security_group: Security Group to use for Control Plane ENIs. Default: - A security group is automatically created
11990
12614
  :param vpc: The VPC in which to create the Cluster. Default: - a VPC with default configuration will be created and can be accessed through ``cluster.vpc``.
@@ -12085,9 +12709,13 @@ class CommonClusterOptions:
12085
12709
  '''Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized.
12086
12710
 
12087
12711
  This command will include
12088
- the cluster name and, if applicable, the ARN of the masters IAM role.
12712
+ the cluster name and the ARN of the masters IAM role.
12713
+
12714
+ Note: If mastersRole is not specified, this property will be ignored and no config command will be emitted.
12089
12715
 
12090
12716
  :default: true
12717
+
12718
+ :see: https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_eks-readme.html#masters-role
12091
12719
  '''
12092
12720
  result = self._values.get("output_config_command")
12093
12721
  return typing.cast(typing.Optional[builtins.bool], result)
@@ -12172,13 +12800,13 @@ class DefaultCapacityType(enum.Enum):
12172
12800
 
12173
12801
  Example::
12174
12802
 
12175
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
12803
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
12176
12804
 
12177
12805
 
12178
12806
  cluster = eks.Cluster(self, "HelloEKS",
12179
- version=eks.KubernetesVersion.V1_32,
12807
+ version=eks.KubernetesVersion.V1_34,
12180
12808
  default_capacity_type=eks.DefaultCapacityType.EC2,
12181
- kubectl_layer=KubectlV32Layer(self, "kubectl")
12809
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
12182
12810
  )
12183
12811
  '''
12184
12812
 
@@ -12345,13 +12973,13 @@ class EndpointAccess(
12345
12973
 
12346
12974
  Example::
12347
12975
 
12348
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
12976
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
12349
12977
 
12350
12978
 
12351
12979
  cluster = eks.Cluster(self, "hello-eks",
12352
- version=eks.KubernetesVersion.V1_32,
12980
+ version=eks.KubernetesVersion.V1_34,
12353
12981
  endpoint_access=eks.EndpointAccess.PRIVATE, # No access outside of your VPC.
12354
- kubectl_layer=KubectlV32Layer(self, "kubectl")
12982
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
12355
12983
  )
12356
12984
  '''
12357
12985
 
@@ -14525,7 +15153,7 @@ class IpFamily(enum.Enum):
14525
15153
 
14526
15154
  Example::
14527
15155
 
14528
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
15156
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
14529
15157
  # vpc: ec2.Vpc
14530
15158
 
14531
15159
 
@@ -14550,11 +15178,11 @@ class IpFamily(enum.Enum):
14550
15178
  subnetcount = subnetcount + 1
14551
15179
 
14552
15180
  cluster = eks.Cluster(self, "hello-eks",
14553
- version=eks.KubernetesVersion.V1_32,
15181
+ version=eks.KubernetesVersion.V1_34,
14554
15182
  vpc=vpc,
14555
15183
  ip_family=eks.IpFamily.IP_V6,
14556
15184
  vpc_subnets=[ec2.SubnetSelection(subnets=vpc.public_subnets)],
14557
- kubectl_layer=KubectlV32Layer(self, "kubectl")
15185
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
14558
15186
  )
14559
15187
  '''
14560
15188
 
@@ -14893,6 +15521,12 @@ class KubernetesManifest(
14893
15521
 
14894
15522
  jsii.create(self.__class__, self, [scope, id, props])
14895
15523
 
15524
+ @jsii.python.classproperty
15525
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
15526
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
15527
+ '''Uniquely identifies this class.'''
15528
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
15529
+
14896
15530
  @jsii.python.classproperty
14897
15531
  @jsii.member(jsii_name="RESOURCE_TYPE")
14898
15532
  def RESOURCE_TYPE(cls) -> builtins.str:
@@ -15675,21 +16309,19 @@ class KubernetesVersion(
15675
16309
 
15676
16310
  Example::
15677
16311
 
15678
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
15679
-
15680
- # or
15681
- # vpc: ec2.Vpc
16312
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
15682
16313
 
15683
16314
 
15684
- eks.Cluster(self, "MyCluster",
15685
- kubectl_memory=Size.gibibytes(4),
15686
- version=eks.KubernetesVersion.V1_32,
15687
- kubectl_layer=KubectlV32Layer(self, "kubectl")
16315
+ cluster = eks.Cluster(self, "HelloEKS",
16316
+ version=eks.KubernetesVersion.V1_34,
16317
+ default_capacity=0,
16318
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
15688
16319
  )
15689
- eks.Cluster.from_cluster_attributes(self, "MyCluster",
15690
- kubectl_memory=Size.gibibytes(4),
15691
- vpc=vpc,
15692
- cluster_name="cluster-name"
16320
+
16321
+ cluster.add_nodegroup_capacity("custom-node-group",
16322
+ instance_types=[ec2.InstanceType("m5.large")],
16323
+ min_size=4,
16324
+ disk_size=100
15693
16325
  )
15694
16326
  '''
15695
16327
 
@@ -15914,6 +16546,28 @@ class KubernetesVersion(
15914
16546
  '''
15915
16547
  return typing.cast("KubernetesVersion", jsii.sget(cls, "V1_32"))
15916
16548
 
16549
+ @jsii.python.classproperty
16550
+ @jsii.member(jsii_name="V1_33")
16551
+ def V1_33(cls) -> "KubernetesVersion":
16552
+ '''Kubernetes version 1.33.
16553
+
16554
+ When creating a ``Cluster`` with this version, you need to also specify the
16555
+ ``kubectlLayer`` property with a ``KubectlV33Layer`` from
16556
+ ``@aws-cdk/lambda-layer-kubectl-v33``.
16557
+ '''
16558
+ return typing.cast("KubernetesVersion", jsii.sget(cls, "V1_33"))
16559
+
16560
+ @jsii.python.classproperty
16561
+ @jsii.member(jsii_name="V1_34")
16562
+ def V1_34(cls) -> "KubernetesVersion":
16563
+ '''Kubernetes version 1.34.
16564
+
16565
+ When creating a ``Cluster`` with this version, you need to also specify the
16566
+ ``kubectlLayer`` property with a ``KubectlV34Layer`` from
16567
+ ``@aws-cdk/lambda-layer-kubectl-v34``.
16568
+ '''
16569
+ return typing.cast("KubernetesVersion", jsii.sget(cls, "V1_34"))
16570
+
15917
16571
  @builtins.property
15918
16572
  @jsii.member(jsii_name="version")
15919
16573
  def version(self) -> builtins.str:
@@ -16225,6 +16879,12 @@ class Nodegroup(
16225
16879
  check_type(argname="argument nodegroup_name", value=nodegroup_name, expected_type=type_hints["nodegroup_name"])
16226
16880
  return typing.cast(INodegroup, jsii.sinvoke(cls, "fromNodegroupName", [scope, id, nodegroup_name]))
16227
16881
 
16882
+ @jsii.python.classproperty
16883
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
16884
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
16885
+ '''Uniquely identifies this class.'''
16886
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
16887
+
16228
16888
  @builtins.property
16229
16889
  @jsii.member(jsii_name="cluster")
16230
16890
  def cluster(self) -> ICluster:
@@ -16313,6 +16973,8 @@ class NodegroupAmiType(enum.Enum):
16313
16973
  '''Amazon Linux 2023 with AWS Neuron drivers (x86-64).'''
16314
16974
  AL2023_X86_64_NVIDIA = "AL2023_X86_64_NVIDIA"
16315
16975
  '''Amazon Linux 2023 with NVIDIA drivers (x86-64).'''
16976
+ AL2023_ARM_64_NVIDIA = "AL2023_ARM_64_NVIDIA"
16977
+ '''Amazon Linux 2023 with NVIDIA drivers (ARM-64).'''
16316
16978
  AL2023_ARM_64_STANDARD = "AL2023_ARM_64_STANDARD"
16317
16979
  '''Amazon Linux 2023 (ARM-64).'''
16318
16980
 
@@ -17334,6 +17996,12 @@ class OpenIdConnectProvider(
17334
17996
 
17335
17997
  jsii.create(self.__class__, self, [scope, id, props])
17336
17998
 
17999
+ @jsii.python.classproperty
18000
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
18001
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
18002
+ '''Uniquely identifies this class.'''
18003
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
18004
+
17337
18005
 
17338
18006
  @jsii.data_type(
17339
18007
  jsii_type="aws-cdk-lib.aws_eks.OpenIdConnectProviderProps",
@@ -18066,6 +18734,17 @@ class ServiceLoadBalancerAddressOptions:
18066
18734
  class TaintEffect(enum.Enum):
18067
18735
  '''Effect types of kubernetes node taint.
18068
18736
 
18737
+ Note: These values are specifically for AWS EKS NodeGroups and use the AWS API format.
18738
+ When using AWS CLI or API, taint effects must be NO_SCHEDULE, PREFER_NO_SCHEDULE, or NO_EXECUTE.
18739
+ When using Kubernetes directly or kubectl, taint effects must be NoSchedule, PreferNoSchedule, or NoExecute.
18740
+
18741
+ For Kubernetes manifests (like Karpenter NodePools), use string literals with PascalCase format:
18742
+
18743
+ - 'NoSchedule' instead of TaintEffect.NO_SCHEDULE
18744
+ - 'PreferNoSchedule' instead of TaintEffect.PREFER_NO_SCHEDULE
18745
+ - 'NoExecute' instead of TaintEffect.NO_EXECUTE
18746
+
18747
+ :see: https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html
18069
18748
  :exampleMetadata: infused
18070
18749
 
18071
18750
  Example::
@@ -18286,6 +18965,12 @@ class AccessEntry(
18286
18965
  check_type(argname="argument new_access_policies", value=new_access_policies, expected_type=type_hints["new_access_policies"])
18287
18966
  return typing.cast(None, jsii.invoke(self, "addAccessPolicies", [new_access_policies]))
18288
18967
 
18968
+ @jsii.python.classproperty
18969
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
18970
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
18971
+ '''Uniquely identifies this class.'''
18972
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
18973
+
18289
18974
  @builtins.property
18290
18975
  @jsii.member(jsii_name="accessEntryArn")
18291
18976
  def access_entry_arn(self) -> builtins.str:
@@ -18391,10 +19076,13 @@ class Addon(
18391
19076
 
18392
19077
  eks.Addon(self, "Addon",
18393
19078
  cluster=cluster,
18394
- addon_name="aws-guardduty-agent",
18395
- addon_version="v1.6.1",
19079
+ addon_name="coredns",
19080
+ addon_version="v1.11.4-eksbuild.2",
18396
19081
  # whether to preserve the add-on software on your cluster but Amazon EKS stops managing any settings for the add-on.
18397
- preserve_on_delete=False
19082
+ preserve_on_delete=False,
19083
+ configuration_values={
19084
+ "replica_count": 2
19085
+ }
18398
19086
  )
18399
19087
  '''
18400
19088
 
@@ -18406,6 +19094,7 @@ class Addon(
18406
19094
  addon_name: builtins.str,
18407
19095
  cluster: ICluster,
18408
19096
  addon_version: typing.Optional[builtins.str] = None,
19097
+ configuration_values: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
18409
19098
  preserve_on_delete: typing.Optional[builtins.bool] = None,
18410
19099
  ) -> None:
18411
19100
  '''Creates a new Amazon EKS Add-On.
@@ -18415,6 +19104,7 @@ class Addon(
18415
19104
  :param addon_name: Name of the Add-On.
18416
19105
  :param cluster: The EKS cluster the Add-On is associated with.
18417
19106
  :param addon_version: Version of the Add-On. You can check all available versions with describe-addon-versions. For example, this lists all available versions for the ``eks-pod-identity-agent`` addon: $ aws eks describe-addon-versions --addon-name eks-pod-identity-agent --query 'addons[*].addonVersions[*].addonVersion' Default: the latest version.
19107
+ :param configuration_values: The configuration values for the Add-on. Default: - Use default configuration.
18418
19108
  :param preserve_on_delete: Specifying this option preserves the add-on software on your cluster but Amazon EKS stops managing any settings for the add-on. If an IAM account is associated with the add-on, it isn't removed. Default: true
18419
19109
  '''
18420
19110
  if __debug__:
@@ -18425,6 +19115,7 @@ class Addon(
18425
19115
  addon_name=addon_name,
18426
19116
  cluster=cluster,
18427
19117
  addon_version=addon_version,
19118
+ configuration_values=configuration_values,
18428
19119
  preserve_on_delete=preserve_on_delete,
18429
19120
  )
18430
19121
 
@@ -18480,6 +19171,12 @@ class Addon(
18480
19171
 
18481
19172
  return typing.cast(IAddon, jsii.sinvoke(cls, "fromAddonAttributes", [scope, id, attrs]))
18482
19173
 
19174
+ @jsii.python.classproperty
19175
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
19176
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
19177
+ '''Uniquely identifies this class.'''
19178
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
19179
+
18483
19180
  @builtins.property
18484
19181
  @jsii.member(jsii_name="addonArn")
18485
19182
  def addon_arn(self) -> builtins.str:
@@ -18508,7 +19205,7 @@ class Cluster(
18508
19205
 
18509
19206
  Example::
18510
19207
 
18511
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
19208
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
18512
19209
 
18513
19210
  # or
18514
19211
  # vpc: ec2.Vpc
@@ -18516,8 +19213,8 @@ class Cluster(
18516
19213
 
18517
19214
  eks.Cluster(self, "MyCluster",
18518
19215
  kubectl_memory=Size.gibibytes(4),
18519
- version=eks.KubernetesVersion.V1_32,
18520
- kubectl_layer=KubectlV32Layer(self, "kubectl")
19216
+ version=eks.KubernetesVersion.V1_34,
19217
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
18521
19218
  )
18522
19219
  eks.Cluster.from_cluster_attributes(self, "MyCluster",
18523
19220
  kubectl_memory=Size.gibibytes(4),
@@ -18532,6 +19229,7 @@ class Cluster(
18532
19229
  id: builtins.str,
18533
19230
  *,
18534
19231
  bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
19232
+ bootstrap_self_managed_addons: typing.Optional[builtins.bool] = None,
18535
19233
  default_capacity: typing.Optional[jsii.Number] = None,
18536
19234
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
18537
19235
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
@@ -18556,7 +19254,8 @@ class Cluster(
18556
19254
  prune: typing.Optional[builtins.bool] = None,
18557
19255
  remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
18558
19256
  remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
18559
- secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
19257
+ removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
19258
+ secrets_encryption_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
18560
19259
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
18561
19260
  version: KubernetesVersion,
18562
19261
  cluster_name: typing.Optional[builtins.str] = None,
@@ -18572,6 +19271,7 @@ class Cluster(
18572
19271
  :param scope: a Construct, most likely a cdk.Stack created.
18573
19272
  :param id: the id of the Construct to create.
18574
19273
  :param bootstrap_cluster_creator_admin_permissions: Whether or not IAM principal of the cluster creator was set as a cluster admin access entry during cluster creation time. Changing this value after the cluster has been created will result in the cluster being replaced. Default: true
19274
+ :param bootstrap_self_managed_addons: If you set this value to False when creating a cluster, the default networking add-ons will not be installed. The default networking addons include vpc-cni, coredns, and kube-proxy. Use this option when you plan to install third-party alternative add-ons or self-manage the default networking add-ons. Changing this value after the cluster has been created will result in the cluster being replaced. Default: true
18575
19275
  :param default_capacity: Number of instances to allocate as an initial capacity for this cluster. Instance type can be configured through ``defaultCapacityInstanceType``, which defaults to ``m5.large``. Use ``cluster.addAutoScalingGroupCapacity`` to add additional customized capacity. Set this to ``0`` is you wish to avoid the initial capacity allocation. Default: 2
18576
19276
  :param default_capacity_instance: The instance type to use for the default capacity. This will only be taken into account if ``defaultCapacity`` is > 0. Default: m5.large
18577
19277
  :param default_capacity_type: The default capacity type for the cluster. Default: NODEGROUP
@@ -18596,12 +19296,13 @@ class Cluster(
18596
19296
  :param prune: Indicates whether Kubernetes resources added through ``addManifest()`` can be automatically pruned. When this is enabled (default), prune labels will be allocated and injected to each resource. These labels will then be used when issuing the ``kubectl apply`` operation with the ``--prune`` switch. Default: true
18597
19297
  :param remote_node_networks: IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster. Default: - none
18598
19298
  :param remote_pod_networks: IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes. Default: - none
19299
+ :param removal_policy: The removal policy applied to all CloudFormation resources created by this construct when they are no longer managed by CloudFormation. This can happen in one of three situations: - The resource is removed from the template, so CloudFormation stops managing it; - A change to the resource is made that requires it to be replaced, so CloudFormation stops managing it; - The stack is deleted, so CloudFormation stops managing all resources in it. This affects the EKS cluster itself, associated IAM roles, node groups, security groups, VPC and any other CloudFormation resources managed by this construct. Default: - Resources will be deleted.
18599
19300
  :param secrets_encryption_key: KMS secret for envelope encryption for Kubernetes secrets. Default: - By default, Kubernetes stores all secret object data within etcd and all etcd volumes used by Amazon EKS are encrypted at the disk-level using AWS-Managed encryption keys.
18600
19301
  :param service_ipv4_cidr: The CIDR block to assign Kubernetes service IP addresses from. Default: - Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks
18601
19302
  :param version: The Kubernetes version to run in the cluster.
18602
19303
  :param cluster_name: Name for the cluster. Default: - Automatically generated name
18603
19304
  :param output_cluster_name: Determines whether a CloudFormation output with the name of the cluster will be synthesized. Default: false
18604
- :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and, if applicable, the ARN of the masters IAM role. Default: true
19305
+ :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and the ARN of the masters IAM role. Note: If mastersRole is not specified, this property will be ignored and no config command will be emitted. Default: true
18605
19306
  :param role: Role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Default: - A role is automatically created for you
18606
19307
  :param security_group: Security Group to use for Control Plane ENIs. Default: - A security group is automatically created
18607
19308
  :param vpc: The VPC in which to create the Cluster. Default: - a VPC with default configuration will be created and can be accessed through ``cluster.vpc``.
@@ -18613,6 +19314,7 @@ class Cluster(
18613
19314
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
18614
19315
  props = ClusterProps(
18615
19316
  bootstrap_cluster_creator_admin_permissions=bootstrap_cluster_creator_admin_permissions,
19317
+ bootstrap_self_managed_addons=bootstrap_self_managed_addons,
18616
19318
  default_capacity=default_capacity,
18617
19319
  default_capacity_instance=default_capacity_instance,
18618
19320
  default_capacity_type=default_capacity_type,
@@ -18637,6 +19339,7 @@ class Cluster(
18637
19339
  prune=prune,
18638
19340
  remote_node_networks=remote_node_networks,
18639
19341
  remote_pod_networks=remote_pod_networks,
19342
+ removal_policy=removal_policy,
18640
19343
  secrets_encryption_key=secrets_encryption_key,
18641
19344
  service_ipv4_cidr=service_ipv4_cidr,
18642
19345
  version=version,
@@ -18814,7 +19517,7 @@ class Cluster(
18814
19517
  :param key_name: (deprecated) Name of SSH keypair to grant access to instances. ``launchTemplate`` and ``mixedInstancesPolicy`` must not be specified when this property is specified You can either specify ``keyPair`` or ``keyName``, not both. Default: - No SSH access will be possible.
18815
19518
  :param key_pair: The SSH keypair to grant access to the instance. Feature flag ``AUTOSCALING_GENERATE_LAUNCH_TEMPLATE`` must be enabled to use this property. ``launchTemplate`` and ``mixedInstancesPolicy`` must not be specified when this property is specified. You can either specify ``keyPair`` or ``keyName``, not both. Default: - No SSH access will be possible.
18816
19519
  :param max_capacity: Maximum number of instances in the fleet. Default: desiredCapacity
18817
- :param max_instance_lifetime: The maximum amount of time that an instance can be in service. The maximum duration applies to all current and future instances in the group. As an instance approaches its maximum duration, it is terminated and replaced, and cannot be used again. You must specify a value of at least 604,800 seconds (7 days). To clear a previously set value, leave this property undefined. Default: none
19520
+ :param max_instance_lifetime: The maximum amount of time that an instance can be in service. The maximum duration applies to all current and future instances in the group. As an instance approaches its maximum duration, it is terminated and replaced, and cannot be used again. You must specify a value of at least 86,400 seconds (one day). To clear a previously set value, leave this property undefined. Default: none
18818
19521
  :param min_capacity: Minimum number of instances in the fleet. Default: 1
18819
19522
  :param new_instances_protected_from_scale_in: Whether newly-launched instances are protected from termination by Amazon EC2 Auto Scaling when scaling in. By default, Auto Scaling can terminate an instance at any time after launch when scaling in an Auto Scaling Group, subject to the group's termination policy. However, you may wish to protect newly-launched instances from being scaled in if they are going to run critical applications that should not be prematurely terminated. This flag must be enabled if the Auto Scaling Group will be associated with an ECS Capacity Provider with managed termination protection. Default: false
18820
19523
  :param notifications: Configure autoscaling group to send notifications about fleet changes to an SNS topic(s). Default: - No fleet change notifications will be sent.
@@ -19248,6 +19951,12 @@ class Cluster(
19248
19951
  check_type(argname="argument access_policies", value=access_policies, expected_type=type_hints["access_policies"])
19249
19952
  return typing.cast(None, jsii.invoke(self, "grantAccess", [id, principal, access_policies]))
19250
19953
 
19954
+ @jsii.python.classproperty
19955
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
19956
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
19957
+ '''Uniquely identifies this class.'''
19958
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
19959
+
19251
19960
  @builtins.property
19252
19961
  @jsii.member(jsii_name="adminRole")
19253
19962
  def admin_role(self) -> _Role_e8c6e11f:
@@ -19578,6 +20287,7 @@ class Cluster(
19578
20287
  "prune": "prune",
19579
20288
  "remote_node_networks": "remoteNodeNetworks",
19580
20289
  "remote_pod_networks": "remotePodNetworks",
20290
+ "removal_policy": "removalPolicy",
19581
20291
  "secrets_encryption_key": "secretsEncryptionKey",
19582
20292
  "service_ipv4_cidr": "serviceIpv4Cidr",
19583
20293
  },
@@ -19613,7 +20323,8 @@ class ClusterOptions(CommonClusterOptions):
19613
20323
  prune: typing.Optional[builtins.bool] = None,
19614
20324
  remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
19615
20325
  remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
19616
- secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
20326
+ removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
20327
+ secrets_encryption_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
19617
20328
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
19618
20329
  ) -> None:
19619
20330
  '''Options for EKS clusters.
@@ -19621,7 +20332,7 @@ class ClusterOptions(CommonClusterOptions):
19621
20332
  :param version: The Kubernetes version to run in the cluster.
19622
20333
  :param cluster_name: Name for the cluster. Default: - Automatically generated name
19623
20334
  :param output_cluster_name: Determines whether a CloudFormation output with the name of the cluster will be synthesized. Default: false
19624
- :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and, if applicable, the ARN of the masters IAM role. Default: true
20335
+ :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and the ARN of the masters IAM role. Note: If mastersRole is not specified, this property will be ignored and no config command will be emitted. Default: true
19625
20336
  :param role: Role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Default: - A role is automatically created for you
19626
20337
  :param security_group: Security Group to use for Control Plane ENIs. Default: - A security group is automatically created
19627
20338
  :param vpc: The VPC in which to create the Cluster. Default: - a VPC with default configuration will be created and can be accessed through ``cluster.vpc``.
@@ -19645,6 +20356,7 @@ class ClusterOptions(CommonClusterOptions):
19645
20356
  :param prune: Indicates whether Kubernetes resources added through ``addManifest()`` can be automatically pruned. When this is enabled (default), prune labels will be allocated and injected to each resource. These labels will then be used when issuing the ``kubectl apply`` operation with the ``--prune`` switch. Default: true
19646
20357
  :param remote_node_networks: IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster. Default: - none
19647
20358
  :param remote_pod_networks: IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes. Default: - none
20359
+ :param removal_policy: The removal policy applied to all CloudFormation resources created by this construct when they are no longer managed by CloudFormation. This can happen in one of three situations: - The resource is removed from the template, so CloudFormation stops managing it; - A change to the resource is made that requires it to be replaced, so CloudFormation stops managing it; - The stack is deleted, so CloudFormation stops managing all resources in it. This affects the EKS cluster itself, associated IAM roles, node groups, security groups, VPC and any other CloudFormation resources managed by this construct. Default: - Resources will be deleted.
19648
20360
  :param secrets_encryption_key: KMS secret for envelope encryption for Kubernetes secrets. Default: - By default, Kubernetes stores all secret object data within etcd and all etcd volumes used by Amazon EKS are encrypted at the disk-level using AWS-Managed encryption keys.
19649
20361
  :param service_ipv4_cidr: The CIDR block to assign Kubernetes service IP addresses from. Default: - Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks
19650
20362
 
@@ -19658,12 +20370,12 @@ class ClusterOptions(CommonClusterOptions):
19658
20370
  from aws_cdk import aws_ec2 as ec2
19659
20371
  from aws_cdk import aws_eks as eks
19660
20372
  from aws_cdk import aws_iam as iam
19661
- from aws_cdk import aws_kms as kms
19662
20373
  from aws_cdk import aws_lambda as lambda_
20374
+ from aws_cdk.interfaces import aws_kms as interfaces_aws_kms
19663
20375
 
19664
20376
  # alb_controller_version: eks.AlbControllerVersion
19665
20377
  # endpoint_access: eks.EndpointAccess
19666
- # key: kms.Key
20378
+ # key_ref: interfaces_aws_kms.IKeyRef
19667
20379
  # kubernetes_version: eks.KubernetesVersion
19668
20380
  # layer_version: lambda.LayerVersion
19669
20381
  # policy: Any
@@ -19718,8 +20430,9 @@ class ClusterOptions(CommonClusterOptions):
19718
20430
  remote_pod_networks=[eks.RemotePodNetwork(
19719
20431
  cidrs=["cidrs"]
19720
20432
  )],
20433
+ removal_policy=cdk.RemovalPolicy.DESTROY,
19721
20434
  role=role,
19722
- secrets_encryption_key=key,
20435
+ secrets_encryption_key=key_ref,
19723
20436
  security_group=security_group,
19724
20437
  service_ipv4_cidr="serviceIpv4Cidr",
19725
20438
  vpc=vpc,
@@ -19764,6 +20477,7 @@ class ClusterOptions(CommonClusterOptions):
19764
20477
  check_type(argname="argument prune", value=prune, expected_type=type_hints["prune"])
19765
20478
  check_type(argname="argument remote_node_networks", value=remote_node_networks, expected_type=type_hints["remote_node_networks"])
19766
20479
  check_type(argname="argument remote_pod_networks", value=remote_pod_networks, expected_type=type_hints["remote_pod_networks"])
20480
+ check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
19767
20481
  check_type(argname="argument secrets_encryption_key", value=secrets_encryption_key, expected_type=type_hints["secrets_encryption_key"])
19768
20482
  check_type(argname="argument service_ipv4_cidr", value=service_ipv4_cidr, expected_type=type_hints["service_ipv4_cidr"])
19769
20483
  self._values: typing.Dict[builtins.str, typing.Any] = {
@@ -19820,6 +20534,8 @@ class ClusterOptions(CommonClusterOptions):
19820
20534
  self._values["remote_node_networks"] = remote_node_networks
19821
20535
  if remote_pod_networks is not None:
19822
20536
  self._values["remote_pod_networks"] = remote_pod_networks
20537
+ if removal_policy is not None:
20538
+ self._values["removal_policy"] = removal_policy
19823
20539
  if secrets_encryption_key is not None:
19824
20540
  self._values["secrets_encryption_key"] = secrets_encryption_key
19825
20541
  if service_ipv4_cidr is not None:
@@ -19855,9 +20571,13 @@ class ClusterOptions(CommonClusterOptions):
19855
20571
  '''Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized.
19856
20572
 
19857
20573
  This command will include
19858
- the cluster name and, if applicable, the ARN of the masters IAM role.
20574
+ the cluster name and the ARN of the masters IAM role.
20575
+
20576
+ Note: If mastersRole is not specified, this property will be ignored and no config command will be emitted.
19859
20577
 
19860
20578
  :default: true
20579
+
20580
+ :see: https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_eks-readme.html#masters-role
19861
20581
  '''
19862
20582
  result = self._values.get("output_config_command")
19863
20583
  return typing.cast(typing.Optional[builtins.bool], result)
@@ -20125,7 +20845,25 @@ class ClusterOptions(CommonClusterOptions):
20125
20845
  return typing.cast(typing.Optional[typing.List[RemotePodNetwork]], result)
20126
20846
 
20127
20847
  @builtins.property
20128
- def secrets_encryption_key(self) -> typing.Optional[_IKey_5f11635f]:
20848
+ def removal_policy(self) -> typing.Optional[_RemovalPolicy_9f93c814]:
20849
+ '''The removal policy applied to all CloudFormation resources created by this construct when they are no longer managed by CloudFormation.
20850
+
20851
+ This can happen in one of three situations:
20852
+
20853
+ - The resource is removed from the template, so CloudFormation stops managing it;
20854
+ - A change to the resource is made that requires it to be replaced, so CloudFormation stops managing it;
20855
+ - The stack is deleted, so CloudFormation stops managing all resources in it.
20856
+
20857
+ This affects the EKS cluster itself, associated IAM roles, node groups, security groups, VPC
20858
+ and any other CloudFormation resources managed by this construct.
20859
+
20860
+ :default: - Resources will be deleted.
20861
+ '''
20862
+ result = self._values.get("removal_policy")
20863
+ return typing.cast(typing.Optional[_RemovalPolicy_9f93c814], result)
20864
+
20865
+ @builtins.property
20866
+ def secrets_encryption_key(self) -> typing.Optional[_IKeyRef_d4fc6ef3]:
20129
20867
  '''KMS secret for envelope encryption for Kubernetes secrets.
20130
20868
 
20131
20869
  :default:
@@ -20135,7 +20873,7 @@ class ClusterOptions(CommonClusterOptions):
20135
20873
  using AWS-Managed encryption keys.
20136
20874
  '''
20137
20875
  result = self._values.get("secrets_encryption_key")
20138
- return typing.cast(typing.Optional[_IKey_5f11635f], result)
20876
+ return typing.cast(typing.Optional[_IKeyRef_d4fc6ef3], result)
20139
20877
 
20140
20878
  @builtins.property
20141
20879
  def service_ipv4_cidr(self) -> typing.Optional[builtins.str]:
@@ -20194,9 +20932,11 @@ class ClusterOptions(CommonClusterOptions):
20194
20932
  "prune": "prune",
20195
20933
  "remote_node_networks": "remoteNodeNetworks",
20196
20934
  "remote_pod_networks": "remotePodNetworks",
20935
+ "removal_policy": "removalPolicy",
20197
20936
  "secrets_encryption_key": "secretsEncryptionKey",
20198
20937
  "service_ipv4_cidr": "serviceIpv4Cidr",
20199
20938
  "bootstrap_cluster_creator_admin_permissions": "bootstrapClusterCreatorAdminPermissions",
20939
+ "bootstrap_self_managed_addons": "bootstrapSelfManagedAddons",
20200
20940
  "default_capacity": "defaultCapacity",
20201
20941
  "default_capacity_instance": "defaultCapacityInstance",
20202
20942
  "default_capacity_type": "defaultCapacityType",
@@ -20235,9 +20975,11 @@ class ClusterProps(ClusterOptions):
20235
20975
  prune: typing.Optional[builtins.bool] = None,
20236
20976
  remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
20237
20977
  remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
20238
- secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
20978
+ removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
20979
+ secrets_encryption_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
20239
20980
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
20240
20981
  bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
20982
+ bootstrap_self_managed_addons: typing.Optional[builtins.bool] = None,
20241
20983
  default_capacity: typing.Optional[jsii.Number] = None,
20242
20984
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
20243
20985
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
@@ -20249,7 +20991,7 @@ class ClusterProps(ClusterOptions):
20249
20991
  :param version: The Kubernetes version to run in the cluster.
20250
20992
  :param cluster_name: Name for the cluster. Default: - Automatically generated name
20251
20993
  :param output_cluster_name: Determines whether a CloudFormation output with the name of the cluster will be synthesized. Default: false
20252
- :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and, if applicable, the ARN of the masters IAM role. Default: true
20994
+ :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and the ARN of the masters IAM role. Note: If mastersRole is not specified, this property will be ignored and no config command will be emitted. Default: true
20253
20995
  :param role: Role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Default: - A role is automatically created for you
20254
20996
  :param security_group: Security Group to use for Control Plane ENIs. Default: - A security group is automatically created
20255
20997
  :param vpc: The VPC in which to create the Cluster. Default: - a VPC with default configuration will be created and can be accessed through ``cluster.vpc``.
@@ -20273,9 +21015,11 @@ class ClusterProps(ClusterOptions):
20273
21015
  :param prune: Indicates whether Kubernetes resources added through ``addManifest()`` can be automatically pruned. When this is enabled (default), prune labels will be allocated and injected to each resource. These labels will then be used when issuing the ``kubectl apply`` operation with the ``--prune`` switch. Default: true
20274
21016
  :param remote_node_networks: IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster. Default: - none
20275
21017
  :param remote_pod_networks: IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes. Default: - none
21018
+ :param removal_policy: The removal policy applied to all CloudFormation resources created by this construct when they are no longer managed by CloudFormation. This can happen in one of three situations: - The resource is removed from the template, so CloudFormation stops managing it; - A change to the resource is made that requires it to be replaced, so CloudFormation stops managing it; - The stack is deleted, so CloudFormation stops managing all resources in it. This affects the EKS cluster itself, associated IAM roles, node groups, security groups, VPC and any other CloudFormation resources managed by this construct. Default: - Resources will be deleted.
20276
21019
  :param secrets_encryption_key: KMS secret for envelope encryption for Kubernetes secrets. Default: - By default, Kubernetes stores all secret object data within etcd and all etcd volumes used by Amazon EKS are encrypted at the disk-level using AWS-Managed encryption keys.
20277
21020
  :param service_ipv4_cidr: The CIDR block to assign Kubernetes service IP addresses from. Default: - Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks
20278
21021
  :param bootstrap_cluster_creator_admin_permissions: Whether or not IAM principal of the cluster creator was set as a cluster admin access entry during cluster creation time. Changing this value after the cluster has been created will result in the cluster being replaced. Default: true
21022
+ :param bootstrap_self_managed_addons: If you set this value to False when creating a cluster, the default networking add-ons will not be installed. The default networking addons include vpc-cni, coredns, and kube-proxy. Use this option when you plan to install third-party alternative add-ons or self-manage the default networking add-ons. Changing this value after the cluster has been created will result in the cluster being replaced. Default: true
20279
21023
  :param default_capacity: Number of instances to allocate as an initial capacity for this cluster. Instance type can be configured through ``defaultCapacityInstanceType``, which defaults to ``m5.large``. Use ``cluster.addAutoScalingGroupCapacity`` to add additional customized capacity. Set this to ``0`` is you wish to avoid the initial capacity allocation. Default: 2
20280
21024
  :param default_capacity_instance: The instance type to use for the default capacity. This will only be taken into account if ``defaultCapacity`` is > 0. Default: m5.large
20281
21025
  :param default_capacity_type: The default capacity type for the cluster. Default: NODEGROUP
@@ -20286,7 +21030,7 @@ class ClusterProps(ClusterOptions):
20286
21030
 
20287
21031
  Example::
20288
21032
 
20289
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
21033
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
20290
21034
 
20291
21035
  # or
20292
21036
  # vpc: ec2.Vpc
@@ -20294,8 +21038,8 @@ class ClusterProps(ClusterOptions):
20294
21038
 
20295
21039
  eks.Cluster(self, "MyCluster",
20296
21040
  kubectl_memory=Size.gibibytes(4),
20297
- version=eks.KubernetesVersion.V1_32,
20298
- kubectl_layer=KubectlV32Layer(self, "kubectl")
21041
+ version=eks.KubernetesVersion.V1_34,
21042
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
20299
21043
  )
20300
21044
  eks.Cluster.from_cluster_attributes(self, "MyCluster",
20301
21045
  kubectl_memory=Size.gibibytes(4),
@@ -20334,9 +21078,11 @@ class ClusterProps(ClusterOptions):
20334
21078
  check_type(argname="argument prune", value=prune, expected_type=type_hints["prune"])
20335
21079
  check_type(argname="argument remote_node_networks", value=remote_node_networks, expected_type=type_hints["remote_node_networks"])
20336
21080
  check_type(argname="argument remote_pod_networks", value=remote_pod_networks, expected_type=type_hints["remote_pod_networks"])
21081
+ check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
20337
21082
  check_type(argname="argument secrets_encryption_key", value=secrets_encryption_key, expected_type=type_hints["secrets_encryption_key"])
20338
21083
  check_type(argname="argument service_ipv4_cidr", value=service_ipv4_cidr, expected_type=type_hints["service_ipv4_cidr"])
20339
21084
  check_type(argname="argument bootstrap_cluster_creator_admin_permissions", value=bootstrap_cluster_creator_admin_permissions, expected_type=type_hints["bootstrap_cluster_creator_admin_permissions"])
21085
+ check_type(argname="argument bootstrap_self_managed_addons", value=bootstrap_self_managed_addons, expected_type=type_hints["bootstrap_self_managed_addons"])
20340
21086
  check_type(argname="argument default_capacity", value=default_capacity, expected_type=type_hints["default_capacity"])
20341
21087
  check_type(argname="argument default_capacity_instance", value=default_capacity_instance, expected_type=type_hints["default_capacity_instance"])
20342
21088
  check_type(argname="argument default_capacity_type", value=default_capacity_type, expected_type=type_hints["default_capacity_type"])
@@ -20396,12 +21142,16 @@ class ClusterProps(ClusterOptions):
20396
21142
  self._values["remote_node_networks"] = remote_node_networks
20397
21143
  if remote_pod_networks is not None:
20398
21144
  self._values["remote_pod_networks"] = remote_pod_networks
21145
+ if removal_policy is not None:
21146
+ self._values["removal_policy"] = removal_policy
20399
21147
  if secrets_encryption_key is not None:
20400
21148
  self._values["secrets_encryption_key"] = secrets_encryption_key
20401
21149
  if service_ipv4_cidr is not None:
20402
21150
  self._values["service_ipv4_cidr"] = service_ipv4_cidr
20403
21151
  if bootstrap_cluster_creator_admin_permissions is not None:
20404
21152
  self._values["bootstrap_cluster_creator_admin_permissions"] = bootstrap_cluster_creator_admin_permissions
21153
+ if bootstrap_self_managed_addons is not None:
21154
+ self._values["bootstrap_self_managed_addons"] = bootstrap_self_managed_addons
20405
21155
  if default_capacity is not None:
20406
21156
  self._values["default_capacity"] = default_capacity
20407
21157
  if default_capacity_instance is not None:
@@ -20443,9 +21193,13 @@ class ClusterProps(ClusterOptions):
20443
21193
  '''Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized.
20444
21194
 
20445
21195
  This command will include
20446
- the cluster name and, if applicable, the ARN of the masters IAM role.
21196
+ the cluster name and the ARN of the masters IAM role.
21197
+
21198
+ Note: If mastersRole is not specified, this property will be ignored and no config command will be emitted.
20447
21199
 
20448
21200
  :default: true
21201
+
21202
+ :see: https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_eks-readme.html#masters-role
20449
21203
  '''
20450
21204
  result = self._values.get("output_config_command")
20451
21205
  return typing.cast(typing.Optional[builtins.bool], result)
@@ -20713,7 +21467,25 @@ class ClusterProps(ClusterOptions):
20713
21467
  return typing.cast(typing.Optional[typing.List[RemotePodNetwork]], result)
20714
21468
 
20715
21469
  @builtins.property
20716
- def secrets_encryption_key(self) -> typing.Optional[_IKey_5f11635f]:
21470
+ def removal_policy(self) -> typing.Optional[_RemovalPolicy_9f93c814]:
21471
+ '''The removal policy applied to all CloudFormation resources created by this construct when they are no longer managed by CloudFormation.
21472
+
21473
+ This can happen in one of three situations:
21474
+
21475
+ - The resource is removed from the template, so CloudFormation stops managing it;
21476
+ - A change to the resource is made that requires it to be replaced, so CloudFormation stops managing it;
21477
+ - The stack is deleted, so CloudFormation stops managing all resources in it.
21478
+
21479
+ This affects the EKS cluster itself, associated IAM roles, node groups, security groups, VPC
21480
+ and any other CloudFormation resources managed by this construct.
21481
+
21482
+ :default: - Resources will be deleted.
21483
+ '''
21484
+ result = self._values.get("removal_policy")
21485
+ return typing.cast(typing.Optional[_RemovalPolicy_9f93c814], result)
21486
+
21487
+ @builtins.property
21488
+ def secrets_encryption_key(self) -> typing.Optional[_IKeyRef_d4fc6ef3]:
20717
21489
  '''KMS secret for envelope encryption for Kubernetes secrets.
20718
21490
 
20719
21491
  :default:
@@ -20723,7 +21495,7 @@ class ClusterProps(ClusterOptions):
20723
21495
  using AWS-Managed encryption keys.
20724
21496
  '''
20725
21497
  result = self._values.get("secrets_encryption_key")
20726
- return typing.cast(typing.Optional[_IKey_5f11635f], result)
21498
+ return typing.cast(typing.Optional[_IKeyRef_d4fc6ef3], result)
20727
21499
 
20728
21500
  @builtins.property
20729
21501
  def service_ipv4_cidr(self) -> typing.Optional[builtins.str]:
@@ -20752,6 +21524,20 @@ class ClusterProps(ClusterOptions):
20752
21524
  result = self._values.get("bootstrap_cluster_creator_admin_permissions")
20753
21525
  return typing.cast(typing.Optional[builtins.bool], result)
20754
21526
 
21527
+ @builtins.property
21528
+ def bootstrap_self_managed_addons(self) -> typing.Optional[builtins.bool]:
21529
+ '''If you set this value to False when creating a cluster, the default networking add-ons will not be installed.
21530
+
21531
+ The default networking addons include vpc-cni, coredns, and kube-proxy.
21532
+ Use this option when you plan to install third-party alternative add-ons or self-manage the default networking add-ons.
21533
+
21534
+ Changing this value after the cluster has been created will result in the cluster being replaced.
21535
+
21536
+ :default: true
21537
+ '''
21538
+ result = self._values.get("bootstrap_self_managed_addons")
21539
+ return typing.cast(typing.Optional[builtins.bool], result)
21540
+
20755
21541
  @builtins.property
20756
21542
  def default_capacity(self) -> typing.Optional[jsii.Number]:
20757
21543
  '''Number of instances to allocate as an initial capacity for this cluster.
@@ -20833,12 +21619,12 @@ class FargateCluster(
20833
21619
 
20834
21620
  Example::
20835
21621
 
20836
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
21622
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
20837
21623
 
20838
21624
 
20839
21625
  cluster = eks.FargateCluster(self, "MyCluster",
20840
- version=eks.KubernetesVersion.V1_32,
20841
- kubectl_layer=KubectlV32Layer(self, "kubectl")
21626
+ version=eks.KubernetesVersion.V1_34,
21627
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
20842
21628
  )
20843
21629
  '''
20844
21630
 
@@ -20867,7 +21653,8 @@ class FargateCluster(
20867
21653
  prune: typing.Optional[builtins.bool] = None,
20868
21654
  remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
20869
21655
  remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
20870
- secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
21656
+ removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
21657
+ secrets_encryption_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
20871
21658
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
20872
21659
  version: KubernetesVersion,
20873
21660
  cluster_name: typing.Optional[builtins.str] = None,
@@ -20901,12 +21688,13 @@ class FargateCluster(
20901
21688
  :param prune: Indicates whether Kubernetes resources added through ``addManifest()`` can be automatically pruned. When this is enabled (default), prune labels will be allocated and injected to each resource. These labels will then be used when issuing the ``kubectl apply`` operation with the ``--prune`` switch. Default: true
20902
21689
  :param remote_node_networks: IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster. Default: - none
20903
21690
  :param remote_pod_networks: IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes. Default: - none
21691
+ :param removal_policy: The removal policy applied to all CloudFormation resources created by this construct when they are no longer managed by CloudFormation. This can happen in one of three situations: - The resource is removed from the template, so CloudFormation stops managing it; - A change to the resource is made that requires it to be replaced, so CloudFormation stops managing it; - The stack is deleted, so CloudFormation stops managing all resources in it. This affects the EKS cluster itself, associated IAM roles, node groups, security groups, VPC and any other CloudFormation resources managed by this construct. Default: - Resources will be deleted.
20904
21692
  :param secrets_encryption_key: KMS secret for envelope encryption for Kubernetes secrets. Default: - By default, Kubernetes stores all secret object data within etcd and all etcd volumes used by Amazon EKS are encrypted at the disk-level using AWS-Managed encryption keys.
20905
21693
  :param service_ipv4_cidr: The CIDR block to assign Kubernetes service IP addresses from. Default: - Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks
20906
21694
  :param version: The Kubernetes version to run in the cluster.
20907
21695
  :param cluster_name: Name for the cluster. Default: - Automatically generated name
20908
21696
  :param output_cluster_name: Determines whether a CloudFormation output with the name of the cluster will be synthesized. Default: false
20909
- :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and, if applicable, the ARN of the masters IAM role. Default: true
21697
+ :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and the ARN of the masters IAM role. Note: If mastersRole is not specified, this property will be ignored and no config command will be emitted. Default: true
20910
21698
  :param role: Role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Default: - A role is automatically created for you
20911
21699
  :param security_group: Security Group to use for Control Plane ENIs. Default: - A security group is automatically created
20912
21700
  :param vpc: The VPC in which to create the Cluster. Default: - a VPC with default configuration will be created and can be accessed through ``cluster.vpc``.
@@ -20937,6 +21725,7 @@ class FargateCluster(
20937
21725
  prune=prune,
20938
21726
  remote_node_networks=remote_node_networks,
20939
21727
  remote_pod_networks=remote_pod_networks,
21728
+ removal_policy=removal_policy,
20940
21729
  secrets_encryption_key=secrets_encryption_key,
20941
21730
  service_ipv4_cidr=service_ipv4_cidr,
20942
21731
  version=version,
@@ -20951,6 +21740,12 @@ class FargateCluster(
20951
21740
 
20952
21741
  jsii.create(self.__class__, self, [scope, id, props])
20953
21742
 
21743
+ @jsii.python.classproperty
21744
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
21745
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
21746
+ '''Uniquely identifies this class.'''
21747
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
21748
+
20954
21749
  @builtins.property
20955
21750
  @jsii.member(jsii_name="defaultProfile")
20956
21751
  def default_profile(self) -> FargateProfile:
@@ -20989,6 +21784,7 @@ class FargateCluster(
20989
21784
  "prune": "prune",
20990
21785
  "remote_node_networks": "remoteNodeNetworks",
20991
21786
  "remote_pod_networks": "remotePodNetworks",
21787
+ "removal_policy": "removalPolicy",
20992
21788
  "secrets_encryption_key": "secretsEncryptionKey",
20993
21789
  "service_ipv4_cidr": "serviceIpv4Cidr",
20994
21790
  "default_profile": "defaultProfile",
@@ -21025,7 +21821,8 @@ class FargateClusterProps(ClusterOptions):
21025
21821
  prune: typing.Optional[builtins.bool] = None,
21026
21822
  remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
21027
21823
  remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
21028
- secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
21824
+ removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
21825
+ secrets_encryption_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
21029
21826
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
21030
21827
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21031
21828
  ) -> None:
@@ -21034,7 +21831,7 @@ class FargateClusterProps(ClusterOptions):
21034
21831
  :param version: The Kubernetes version to run in the cluster.
21035
21832
  :param cluster_name: Name for the cluster. Default: - Automatically generated name
21036
21833
  :param output_cluster_name: Determines whether a CloudFormation output with the name of the cluster will be synthesized. Default: false
21037
- :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and, if applicable, the ARN of the masters IAM role. Default: true
21834
+ :param output_config_command: Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and the ARN of the masters IAM role. Note: If mastersRole is not specified, this property will be ignored and no config command will be emitted. Default: true
21038
21835
  :param role: Role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Default: - A role is automatically created for you
21039
21836
  :param security_group: Security Group to use for Control Plane ENIs. Default: - A security group is automatically created
21040
21837
  :param vpc: The VPC in which to create the Cluster. Default: - a VPC with default configuration will be created and can be accessed through ``cluster.vpc``.
@@ -21058,6 +21855,7 @@ class FargateClusterProps(ClusterOptions):
21058
21855
  :param prune: Indicates whether Kubernetes resources added through ``addManifest()`` can be automatically pruned. When this is enabled (default), prune labels will be allocated and injected to each resource. These labels will then be used when issuing the ``kubectl apply`` operation with the ``--prune`` switch. Default: true
21059
21856
  :param remote_node_networks: IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster. Default: - none
21060
21857
  :param remote_pod_networks: IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes. Default: - none
21858
+ :param removal_policy: The removal policy applied to all CloudFormation resources created by this construct when they are no longer managed by CloudFormation. This can happen in one of three situations: - The resource is removed from the template, so CloudFormation stops managing it; - A change to the resource is made that requires it to be replaced, so CloudFormation stops managing it; - The stack is deleted, so CloudFormation stops managing all resources in it. This affects the EKS cluster itself, associated IAM roles, node groups, security groups, VPC and any other CloudFormation resources managed by this construct. Default: - Resources will be deleted.
21061
21859
  :param secrets_encryption_key: KMS secret for envelope encryption for Kubernetes secrets. Default: - By default, Kubernetes stores all secret object data within etcd and all etcd volumes used by Amazon EKS are encrypted at the disk-level using AWS-Managed encryption keys.
21062
21860
  :param service_ipv4_cidr: The CIDR block to assign Kubernetes service IP addresses from. Default: - Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks
21063
21861
  :param default_profile: Fargate Profile to create along with the cluster. Default: - A profile called "default" with 'default' and 'kube-system' selectors will be created if this is left undefined.
@@ -21066,12 +21864,12 @@ class FargateClusterProps(ClusterOptions):
21066
21864
 
21067
21865
  Example::
21068
21866
 
21069
- from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
21867
+ from aws_cdk.lambda_layer_kubectl_v34 import KubectlV34Layer
21070
21868
 
21071
21869
 
21072
21870
  cluster = eks.FargateCluster(self, "MyCluster",
21073
- version=eks.KubernetesVersion.V1_32,
21074
- kubectl_layer=KubectlV32Layer(self, "kubectl")
21871
+ version=eks.KubernetesVersion.V1_34,
21872
+ kubectl_layer=KubectlV34Layer(self, "kubectl")
21075
21873
  )
21076
21874
  '''
21077
21875
  if isinstance(alb_controller, dict):
@@ -21107,6 +21905,7 @@ class FargateClusterProps(ClusterOptions):
21107
21905
  check_type(argname="argument prune", value=prune, expected_type=type_hints["prune"])
21108
21906
  check_type(argname="argument remote_node_networks", value=remote_node_networks, expected_type=type_hints["remote_node_networks"])
21109
21907
  check_type(argname="argument remote_pod_networks", value=remote_pod_networks, expected_type=type_hints["remote_pod_networks"])
21908
+ check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
21110
21909
  check_type(argname="argument secrets_encryption_key", value=secrets_encryption_key, expected_type=type_hints["secrets_encryption_key"])
21111
21910
  check_type(argname="argument service_ipv4_cidr", value=service_ipv4_cidr, expected_type=type_hints["service_ipv4_cidr"])
21112
21911
  check_type(argname="argument default_profile", value=default_profile, expected_type=type_hints["default_profile"])
@@ -21164,6 +21963,8 @@ class FargateClusterProps(ClusterOptions):
21164
21963
  self._values["remote_node_networks"] = remote_node_networks
21165
21964
  if remote_pod_networks is not None:
21166
21965
  self._values["remote_pod_networks"] = remote_pod_networks
21966
+ if removal_policy is not None:
21967
+ self._values["removal_policy"] = removal_policy
21167
21968
  if secrets_encryption_key is not None:
21168
21969
  self._values["secrets_encryption_key"] = secrets_encryption_key
21169
21970
  if service_ipv4_cidr is not None:
@@ -21201,9 +22002,13 @@ class FargateClusterProps(ClusterOptions):
21201
22002
  '''Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized.
21202
22003
 
21203
22004
  This command will include
21204
- the cluster name and, if applicable, the ARN of the masters IAM role.
22005
+ the cluster name and the ARN of the masters IAM role.
22006
+
22007
+ Note: If mastersRole is not specified, this property will be ignored and no config command will be emitted.
21205
22008
 
21206
22009
  :default: true
22010
+
22011
+ :see: https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_eks-readme.html#masters-role
21207
22012
  '''
21208
22013
  result = self._values.get("output_config_command")
21209
22014
  return typing.cast(typing.Optional[builtins.bool], result)
@@ -21471,7 +22276,25 @@ class FargateClusterProps(ClusterOptions):
21471
22276
  return typing.cast(typing.Optional[typing.List[RemotePodNetwork]], result)
21472
22277
 
21473
22278
  @builtins.property
21474
- def secrets_encryption_key(self) -> typing.Optional[_IKey_5f11635f]:
22279
+ def removal_policy(self) -> typing.Optional[_RemovalPolicy_9f93c814]:
22280
+ '''The removal policy applied to all CloudFormation resources created by this construct when they are no longer managed by CloudFormation.
22281
+
22282
+ This can happen in one of three situations:
22283
+
22284
+ - The resource is removed from the template, so CloudFormation stops managing it;
22285
+ - A change to the resource is made that requires it to be replaced, so CloudFormation stops managing it;
22286
+ - The stack is deleted, so CloudFormation stops managing all resources in it.
22287
+
22288
+ This affects the EKS cluster itself, associated IAM roles, node groups, security groups, VPC
22289
+ and any other CloudFormation resources managed by this construct.
22290
+
22291
+ :default: - Resources will be deleted.
22292
+ '''
22293
+ result = self._values.get("removal_policy")
22294
+ return typing.cast(typing.Optional[_RemovalPolicy_9f93c814], result)
22295
+
22296
+ @builtins.property
22297
+ def secrets_encryption_key(self) -> typing.Optional[_IKeyRef_d4fc6ef3]:
21475
22298
  '''KMS secret for envelope encryption for Kubernetes secrets.
21476
22299
 
21477
22300
  :default:
@@ -21481,7 +22304,7 @@ class FargateClusterProps(ClusterOptions):
21481
22304
  using AWS-Managed encryption keys.
21482
22305
  '''
21483
22306
  result = self._values.get("secrets_encryption_key")
21484
- return typing.cast(typing.Optional[_IKey_5f11635f], result)
22307
+ return typing.cast(typing.Optional[_IKeyRef_d4fc6ef3], result)
21485
22308
 
21486
22309
  @builtins.property
21487
22310
  def service_ipv4_cidr(self) -> typing.Optional[builtins.str]:
@@ -21766,6 +22589,7 @@ def _typecheckingstub__febc9f6cb4243d885b1b1838be38d633e7c5fc6534eaaf731f00a2465
21766
22589
  addon_name: builtins.str,
21767
22590
  cluster: ICluster,
21768
22591
  addon_version: typing.Optional[builtins.str] = None,
22592
+ configuration_values: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
21769
22593
  preserve_on_delete: typing.Optional[builtins.bool] = None,
21770
22594
  ) -> None:
21771
22595
  """Type checking stubs"""
@@ -22057,6 +22881,7 @@ def _typecheckingstub__45ff0728c7d6fc5f47c97aa791c327f70a32e19bdf463d94d9351053f
22057
22881
  cluster_name: builtins.str,
22058
22882
  addon_version: typing.Optional[builtins.str] = None,
22059
22883
  configuration_values: typing.Optional[builtins.str] = None,
22884
+ namespace_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAddon.NamespaceConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22060
22885
  pod_identity_associations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAddon.PodIdentityAssociationProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
22061
22886
  preserve_on_delete: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
22062
22887
  resolve_conflicts: typing.Optional[builtins.str] = None,
@@ -22102,6 +22927,12 @@ def _typecheckingstub__f2b158aed78a78d2962c2650df64f6c3880ccb508ebd6b281bda6c1a1
22102
22927
  """Type checking stubs"""
22103
22928
  pass
22104
22929
 
22930
+ def _typecheckingstub__039b518895f39f54dce3ea31a35bed66445fb7b5e7f4c52a89adafc86911f331(
22931
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnAddon.NamespaceConfigProperty]],
22932
+ ) -> None:
22933
+ """Type checking stubs"""
22934
+ pass
22935
+
22105
22936
  def _typecheckingstub__04a430658e28600fba10a8c3e5edab2978904829dda6f2c70e9cca8560f7e400(
22106
22937
  value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAddon.PodIdentityAssociationProperty]]]],
22107
22938
  ) -> None:
@@ -22132,6 +22963,13 @@ def _typecheckingstub__61cfcc2cd9aba81e02df7f2a5c976044dc5e5cbf6c05b880c4944cb35
22132
22963
  """Type checking stubs"""
22133
22964
  pass
22134
22965
 
22966
+ def _typecheckingstub__c336eaf5f7476c60c3b0b8dc688fc9ea53319525b39f820a30e2510a38e67cbc(
22967
+ *,
22968
+ namespace: builtins.str,
22969
+ ) -> None:
22970
+ """Type checking stubs"""
22971
+ pass
22972
+
22135
22973
  def _typecheckingstub__3925c850dd0d0ad3b9faeea87aafbe69220a7bf33d95af5527715674625c9891(
22136
22974
  *,
22137
22975
  role_arn: builtins.str,
@@ -22146,6 +22984,7 @@ def _typecheckingstub__484b2779e40e4780cb0940ac7bc9daaf91fa04347613d732138d3be3d
22146
22984
  cluster_name: builtins.str,
22147
22985
  addon_version: typing.Optional[builtins.str] = None,
22148
22986
  configuration_values: typing.Optional[builtins.str] = None,
22987
+ namespace_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAddon.NamespaceConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22149
22988
  pod_identity_associations: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnAddon.PodIdentityAssociationProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
22150
22989
  preserve_on_delete: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
22151
22990
  resolve_conflicts: typing.Optional[builtins.str] = None,
@@ -22164,6 +23003,7 @@ def _typecheckingstub__d3e62a858014f3867f3039d1328d57223fb0d16e3fb6d1e2d79279938
22164
23003
  access_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.AccessConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22165
23004
  bootstrap_self_managed_addons: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
22166
23005
  compute_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.ComputeConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23006
+ deletion_protection: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
22167
23007
  encryption_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.EncryptionConfigProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
22168
23008
  force: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
22169
23009
  kubernetes_network_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.KubernetesNetworkConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -22180,6 +23020,22 @@ def _typecheckingstub__d3e62a858014f3867f3039d1328d57223fb0d16e3fb6d1e2d79279938
22180
23020
  """Type checking stubs"""
22181
23021
  pass
22182
23022
 
23023
+ def _typecheckingstub__b7520097767a23a7f7b750879adb8df71436766d2ad7c356ce08243330524e31(
23024
+ scope: _constructs_77d1e7e8.Construct,
23025
+ id: builtins.str,
23026
+ arn: builtins.str,
23027
+ ) -> None:
23028
+ """Type checking stubs"""
23029
+ pass
23030
+
23031
+ def _typecheckingstub__06b7df746bf67240facb00749c1c399634c9167d5acb1747f034220efaf30f49(
23032
+ scope: _constructs_77d1e7e8.Construct,
23033
+ id: builtins.str,
23034
+ cluster_name: builtins.str,
23035
+ ) -> None:
23036
+ """Type checking stubs"""
23037
+ pass
23038
+
22183
23039
  def _typecheckingstub__4ce8181eaff5e47deffee284e9005fc3985d7f0cc2ae10f69530ae44c00c9022(
22184
23040
  inspector: _TreeInspector_488e0dd5,
22185
23041
  ) -> None:
@@ -22222,6 +23078,12 @@ def _typecheckingstub__5d35f88b28db161e1414d604c41ffc1d10fcf76351a0503d110f81158
22222
23078
  """Type checking stubs"""
22223
23079
  pass
22224
23080
 
23081
+ def _typecheckingstub__19e2a4eccf6e2e232dc5d0a9572dba914015320e88042ef8f90020cd0d14b037(
23082
+ value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
23083
+ ) -> None:
23084
+ """Type checking stubs"""
23085
+ pass
23086
+
22225
23087
  def _typecheckingstub__b161fda542258d1cd8a20fecd3943cacecb658f19ab16b918baf49908459644c(
22226
23088
  value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnCluster.EncryptionConfigProperty]]]],
22227
23089
  ) -> None:
@@ -22448,6 +23310,7 @@ def _typecheckingstub__270f142a59c249328ab174c5b0484cfdae6e3110ab52578dbe783d6f8
22448
23310
  access_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.AccessConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
22449
23311
  bootstrap_self_managed_addons: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
22450
23312
  compute_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.ComputeConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
23313
+ deletion_protection: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
22451
23314
  encryption_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.EncryptionConfigProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
22452
23315
  force: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
22453
23316
  kubernetes_network_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.KubernetesNetworkConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -22803,9 +23666,24 @@ def _typecheckingstub__e659212680af90c8732b5ec096030b6902f35121f1ca1a82a513ebaa5
22803
23666
  """Type checking stubs"""
22804
23667
  pass
22805
23668
 
23669
+ def _typecheckingstub__1c8182284f4e249d40ce1280381d42d4de802714ccdb98dd8928f394e7a79a18(
23670
+ *,
23671
+ min_repair_wait_time_mins: typing.Optional[jsii.Number] = None,
23672
+ node_monitoring_condition: typing.Optional[builtins.str] = None,
23673
+ node_unhealthy_reason: typing.Optional[builtins.str] = None,
23674
+ repair_action: typing.Optional[builtins.str] = None,
23675
+ ) -> None:
23676
+ """Type checking stubs"""
23677
+ pass
23678
+
22806
23679
  def _typecheckingstub__29dbda55ee07f00e62bcfcbc392973b5c2850e347abc3e6692b5d82704d445f0(
22807
23680
  *,
22808
23681
  enabled: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
23682
+ max_parallel_nodes_repaired_count: typing.Optional[jsii.Number] = None,
23683
+ max_parallel_nodes_repaired_percentage: typing.Optional[jsii.Number] = None,
23684
+ max_unhealthy_node_threshold_count: typing.Optional[jsii.Number] = None,
23685
+ max_unhealthy_node_threshold_percentage: typing.Optional[jsii.Number] = None,
23686
+ node_repair_config_overrides: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnNodegroup.NodeRepairConfigOverridesProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
22809
23687
  ) -> None:
22810
23688
  """Type checking stubs"""
22811
23689
  pass
@@ -22878,7 +23756,9 @@ def _typecheckingstub__be8311b6089cea26f85c63a586f0c5b063230a1b4a96ffcd4c6c983a3
22878
23756
  namespace: builtins.str,
22879
23757
  role_arn: builtins.str,
22880
23758
  service_account: builtins.str,
23759
+ disable_session_tags: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
22881
23760
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
23761
+ target_role_arn: typing.Optional[builtins.str] = None,
22882
23762
  ) -> None:
22883
23763
  """Type checking stubs"""
22884
23764
  pass
@@ -22919,19 +23799,33 @@ def _typecheckingstub__ea3bb34348aff57e29a5352e7460510bda8dd51720dbf7d275297137f
22919
23799
  """Type checking stubs"""
22920
23800
  pass
22921
23801
 
23802
+ def _typecheckingstub__cb3dbe4cc3b44e9265bbfe13e41235db909b0c1dc0e052b3bdda07fd4b228e8b(
23803
+ value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
23804
+ ) -> None:
23805
+ """Type checking stubs"""
23806
+ pass
23807
+
22922
23808
  def _typecheckingstub__b0e0a0551adefc10761733af04b8c51e7dad6b483be9252882ecff10539c7dcc(
22923
23809
  value: typing.Optional[typing.List[_CfnTag_f6864754]],
22924
23810
  ) -> None:
22925
23811
  """Type checking stubs"""
22926
23812
  pass
22927
23813
 
23814
+ def _typecheckingstub__cb6220c6db8cf93a8a307b1ba0630d6bc64b4a09325e7cfe5854228aa75ff833(
23815
+ value: typing.Optional[builtins.str],
23816
+ ) -> None:
23817
+ """Type checking stubs"""
23818
+ pass
23819
+
22928
23820
  def _typecheckingstub__40e8da56b529234cdbb596fa46af952a935adf744e907347861dfc232b89038b(
22929
23821
  *,
22930
23822
  cluster_name: builtins.str,
22931
23823
  namespace: builtins.str,
22932
23824
  role_arn: builtins.str,
22933
23825
  service_account: builtins.str,
23826
+ disable_session_tags: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
22934
23827
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
23828
+ target_role_arn: typing.Optional[builtins.str] = None,
22935
23829
  ) -> None:
22936
23830
  """Type checking stubs"""
22937
23831
  pass
@@ -23543,6 +24437,7 @@ def _typecheckingstub__a8342124e215d4789acf852df764143c4809251dbcaa86f6b4a11860e
23543
24437
  addon_name: builtins.str,
23544
24438
  cluster: ICluster,
23545
24439
  addon_version: typing.Optional[builtins.str] = None,
24440
+ configuration_values: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
23546
24441
  preserve_on_delete: typing.Optional[builtins.bool] = None,
23547
24442
  ) -> None:
23548
24443
  """Type checking stubs"""
@@ -23571,6 +24466,7 @@ def _typecheckingstub__786576ad54eacdb9ab8e92277c0fd07f813bc56d4243937f3b5a85c0c
23571
24466
  id: builtins.str,
23572
24467
  *,
23573
24468
  bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
24469
+ bootstrap_self_managed_addons: typing.Optional[builtins.bool] = None,
23574
24470
  default_capacity: typing.Optional[jsii.Number] = None,
23575
24471
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
23576
24472
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
@@ -23595,7 +24491,8 @@ def _typecheckingstub__786576ad54eacdb9ab8e92277c0fd07f813bc56d4243937f3b5a85c0c
23595
24491
  prune: typing.Optional[builtins.bool] = None,
23596
24492
  remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23597
24493
  remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23598
- secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
24494
+ removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
24495
+ secrets_encryption_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
23599
24496
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
23600
24497
  version: KubernetesVersion,
23601
24498
  cluster_name: typing.Optional[builtins.str] = None,
@@ -23835,7 +24732,8 @@ def _typecheckingstub__0b45b97fda36b43e872f90f9fe4cde65de855b50b3acfd236c1f400ef
23835
24732
  prune: typing.Optional[builtins.bool] = None,
23836
24733
  remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23837
24734
  remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23838
- secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
24735
+ removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
24736
+ secrets_encryption_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
23839
24737
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
23840
24738
  ) -> None:
23841
24739
  """Type checking stubs"""
@@ -23870,9 +24768,11 @@ def _typecheckingstub__ce7a73a63de29ba5e5b5cd5cabde7aca1c4bc7d119de52fc4c0f11d99
23870
24768
  prune: typing.Optional[builtins.bool] = None,
23871
24769
  remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23872
24770
  remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23873
- secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
24771
+ removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
24772
+ secrets_encryption_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
23874
24773
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
23875
24774
  bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
24775
+ bootstrap_self_managed_addons: typing.Optional[builtins.bool] = None,
23876
24776
  default_capacity: typing.Optional[jsii.Number] = None,
23877
24777
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
23878
24778
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
@@ -23906,7 +24806,8 @@ def _typecheckingstub__ae166d791f5d5176f3386726c22bc44afedf5d336437a3513e3740387
23906
24806
  prune: typing.Optional[builtins.bool] = None,
23907
24807
  remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23908
24808
  remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23909
- secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
24809
+ removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
24810
+ secrets_encryption_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
23910
24811
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
23911
24812
  version: KubernetesVersion,
23912
24813
  cluster_name: typing.Optional[builtins.str] = None,
@@ -23949,7 +24850,8 @@ def _typecheckingstub__f11c7f989209f6213cb855d2846bb0b2b79a6a2b85eb0d65939e981df
23949
24850
  prune: typing.Optional[builtins.bool] = None,
23950
24851
  remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23951
24852
  remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23952
- secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
24853
+ removal_policy: typing.Optional[_RemovalPolicy_9f93c814] = None,
24854
+ secrets_encryption_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
23953
24855
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
23954
24856
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,
23955
24857
  ) -> None:
@@ -23963,3 +24865,6 @@ def _typecheckingstub__b393c3f294ed9f8582743840eca786b8cd915c5b4df9d362597e69dbe
23963
24865
  ) -> None:
23964
24866
  """Type checking stubs"""
23965
24867
  pass
24868
+
24869
+ for cls in [IAccessEntry, IAccessPolicy, IAddon, ICluster, IKubectlProvider, INodegroup]:
24870
+ typing.cast(typing.Any, cls).__protocol_attrs__ = typing.cast(typing.Any, cls).__protocol_attrs__ - set(['__jsii_proxy_class__', '__jsii_type__'])