aws-cdk-lib 2.147.3__py3-none-any.whl → 2.148.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. aws_cdk/__init__.py +7 -5
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.147.3.jsii.tgz → aws-cdk-lib@2.148.0.jsii.tgz} +0 -0
  4. aws_cdk/alexa_ask/__init__.py +1 -1
  5. aws_cdk/assertions/__init__.py +1 -1
  6. aws_cdk/aws_accessanalyzer/__init__.py +1 -1
  7. aws_cdk/aws_acmpca/__init__.py +1 -1
  8. aws_cdk/aws_amazonmq/__init__.py +1 -1
  9. aws_cdk/aws_amplify/__init__.py +1 -1
  10. aws_cdk/aws_amplifyuibuilder/__init__.py +1 -1
  11. aws_cdk/aws_apigateway/__init__.py +1 -1
  12. aws_cdk/aws_apigatewayv2/__init__.py +1 -1
  13. aws_cdk/aws_apigatewayv2_authorizers/__init__.py +1 -1
  14. aws_cdk/aws_apigatewayv2_integrations/__init__.py +1 -1
  15. aws_cdk/aws_appconfig/__init__.py +1 -1
  16. aws_cdk/aws_appflow/__init__.py +1 -1
  17. aws_cdk/aws_appintegrations/__init__.py +1 -1
  18. aws_cdk/aws_applicationautoscaling/__init__.py +1 -1
  19. aws_cdk/aws_applicationinsights/__init__.py +1 -1
  20. aws_cdk/aws_applicationsignals/__init__.py +143 -87
  21. aws_cdk/aws_appmesh/__init__.py +1 -1
  22. aws_cdk/aws_apprunner/__init__.py +1 -1
  23. aws_cdk/aws_appstream/__init__.py +1 -1
  24. aws_cdk/aws_appsync/__init__.py +1 -1
  25. aws_cdk/aws_apptest/__init__.py +3042 -0
  26. aws_cdk/aws_aps/__init__.py +1 -1
  27. aws_cdk/aws_arczonalshift/__init__.py +1 -1
  28. aws_cdk/aws_athena/__init__.py +1 -1
  29. aws_cdk/aws_auditmanager/__init__.py +1 -1
  30. aws_cdk/aws_autoscaling/__init__.py +1 -1
  31. aws_cdk/aws_autoscaling_common/__init__.py +1 -1
  32. aws_cdk/aws_autoscaling_hooktargets/__init__.py +1 -1
  33. aws_cdk/aws_autoscalingplans/__init__.py +1 -1
  34. aws_cdk/aws_b2bi/__init__.py +1 -1
  35. aws_cdk/aws_backup/__init__.py +4 -6
  36. aws_cdk/aws_backupgateway/__init__.py +1 -1
  37. aws_cdk/aws_batch/__init__.py +1 -216
  38. aws_cdk/aws_bcmdataexports/__init__.py +1 -1
  39. aws_cdk/aws_bedrock/__init__.py +178 -1
  40. aws_cdk/aws_billingconductor/__init__.py +1 -1
  41. aws_cdk/aws_budgets/__init__.py +1 -1
  42. aws_cdk/aws_cassandra/__init__.py +1 -1
  43. aws_cdk/aws_ce/__init__.py +1 -1
  44. aws_cdk/aws_certificatemanager/__init__.py +1 -1
  45. aws_cdk/aws_chatbot/__init__.py +1 -1
  46. aws_cdk/aws_cleanrooms/__init__.py +1 -1
  47. aws_cdk/aws_cleanroomsml/__init__.py +1 -1
  48. aws_cdk/aws_cloud9/__init__.py +1 -1
  49. aws_cdk/aws_cloudformation/__init__.py +1 -1
  50. aws_cdk/aws_cloudfront/__init__.py +1 -1
  51. aws_cdk/aws_cloudfront/experimental/__init__.py +44 -0
  52. aws_cdk/aws_cloudfront_origins/__init__.py +1 -1
  53. aws_cdk/aws_cloudtrail/__init__.py +20 -12
  54. aws_cdk/aws_cloudwatch/__init__.py +1 -1
  55. aws_cdk/aws_cloudwatch_actions/__init__.py +1 -1
  56. aws_cdk/aws_codeartifact/__init__.py +11 -9
  57. aws_cdk/aws_codebuild/__init__.py +193 -6
  58. aws_cdk/aws_codecommit/__init__.py +1 -1
  59. aws_cdk/aws_codeconnections/__init__.py +1 -1
  60. aws_cdk/aws_codedeploy/__init__.py +35 -4
  61. aws_cdk/aws_codeguruprofiler/__init__.py +1 -1
  62. aws_cdk/aws_codegurureviewer/__init__.py +1 -1
  63. aws_cdk/aws_codepipeline/__init__.py +1 -1
  64. aws_cdk/aws_codepipeline_actions/__init__.py +1 -1
  65. aws_cdk/aws_codestar/__init__.py +1 -1
  66. aws_cdk/aws_codestarconnections/__init__.py +1 -1
  67. aws_cdk/aws_codestarnotifications/__init__.py +1 -1
  68. aws_cdk/aws_cognito/__init__.py +56 -18
  69. aws_cdk/aws_comprehend/__init__.py +1 -1
  70. aws_cdk/aws_config/__init__.py +1 -1
  71. aws_cdk/aws_connect/__init__.py +1 -1
  72. aws_cdk/aws_connectcampaigns/__init__.py +1 -1
  73. aws_cdk/aws_controltower/__init__.py +1 -1
  74. aws_cdk/aws_cur/__init__.py +1 -1
  75. aws_cdk/aws_customerprofiles/__init__.py +1 -1
  76. aws_cdk/aws_databrew/__init__.py +1 -1
  77. aws_cdk/aws_datapipeline/__init__.py +1 -1
  78. aws_cdk/aws_datasync/__init__.py +12 -12
  79. aws_cdk/aws_datazone/__init__.py +1 -1
  80. aws_cdk/aws_dax/__init__.py +1 -1
  81. aws_cdk/aws_deadline/__init__.py +3 -2
  82. aws_cdk/aws_detective/__init__.py +1 -1
  83. aws_cdk/aws_devicefarm/__init__.py +1 -1
  84. aws_cdk/aws_devopsguru/__init__.py +1 -1
  85. aws_cdk/aws_directoryservice/__init__.py +1 -1
  86. aws_cdk/aws_dlm/__init__.py +1 -1
  87. aws_cdk/aws_dms/__init__.py +2 -2
  88. aws_cdk/aws_docdb/__init__.py +1 -1
  89. aws_cdk/aws_docdbelastic/__init__.py +1 -1
  90. aws_cdk/aws_dynamodb/__init__.py +1 -1
  91. aws_cdk/aws_ec2/__init__.py +24 -26
  92. aws_cdk/aws_ecr/__init__.py +1 -1
  93. aws_cdk/aws_ecr_assets/__init__.py +1 -1
  94. aws_cdk/aws_ecs/__init__.py +29 -25
  95. aws_cdk/aws_ecs_patterns/__init__.py +1 -1
  96. aws_cdk/aws_efs/__init__.py +1 -1
  97. aws_cdk/aws_eks/__init__.py +619 -31
  98. aws_cdk/aws_elasticache/__init__.py +29 -18
  99. aws_cdk/aws_elasticbeanstalk/__init__.py +1 -1
  100. aws_cdk/aws_elasticloadbalancing/__init__.py +1 -1
  101. aws_cdk/aws_elasticloadbalancingv2/__init__.py +4 -4
  102. aws_cdk/aws_elasticloadbalancingv2_actions/__init__.py +1 -1
  103. aws_cdk/aws_elasticloadbalancingv2_targets/__init__.py +1 -1
  104. aws_cdk/aws_elasticsearch/__init__.py +1 -1
  105. aws_cdk/aws_emr/__init__.py +1 -1
  106. aws_cdk/aws_emrcontainers/__init__.py +1 -1
  107. aws_cdk/aws_emrserverless/__init__.py +34 -7
  108. aws_cdk/aws_entityresolution/__init__.py +1 -1
  109. aws_cdk/aws_events/__init__.py +1 -1
  110. aws_cdk/aws_events_targets/__init__.py +1 -1
  111. aws_cdk/aws_eventschemas/__init__.py +1 -1
  112. aws_cdk/aws_evidently/__init__.py +1 -1
  113. aws_cdk/aws_finspace/__init__.py +1 -1
  114. aws_cdk/aws_fis/__init__.py +1 -1
  115. aws_cdk/aws_fms/__init__.py +1 -1
  116. aws_cdk/aws_forecast/__init__.py +1 -1
  117. aws_cdk/aws_frauddetector/__init__.py +1 -1
  118. aws_cdk/aws_fsx/__init__.py +186 -2
  119. aws_cdk/aws_gamelift/__init__.py +10 -6
  120. aws_cdk/aws_globalaccelerator/__init__.py +1 -1
  121. aws_cdk/aws_globalaccelerator_endpoints/__init__.py +1 -1
  122. aws_cdk/aws_glue/__init__.py +18 -14
  123. aws_cdk/aws_grafana/__init__.py +9 -5
  124. aws_cdk/aws_greengrass/__init__.py +1 -1
  125. aws_cdk/aws_greengrassv2/__init__.py +1 -1
  126. aws_cdk/aws_groundstation/__init__.py +1 -1
  127. aws_cdk/aws_guardduty/__init__.py +171 -132
  128. aws_cdk/aws_healthimaging/__init__.py +1 -1
  129. aws_cdk/aws_healthlake/__init__.py +1 -1
  130. aws_cdk/aws_iam/__init__.py +1 -1
  131. aws_cdk/aws_identitystore/__init__.py +1 -1
  132. aws_cdk/aws_imagebuilder/__init__.py +1 -1
  133. aws_cdk/aws_inspector/__init__.py +1 -1
  134. aws_cdk/aws_inspectorv2/__init__.py +1 -1
  135. aws_cdk/aws_internetmonitor/__init__.py +1 -1
  136. aws_cdk/aws_iot/__init__.py +1 -1
  137. aws_cdk/aws_iot1click/__init__.py +1 -1
  138. aws_cdk/aws_iotanalytics/__init__.py +1 -1
  139. aws_cdk/aws_iotcoredeviceadvisor/__init__.py +1 -1
  140. aws_cdk/aws_iotevents/__init__.py +1 -1
  141. aws_cdk/aws_iotfleethub/__init__.py +1 -1
  142. aws_cdk/aws_iotfleetwise/__init__.py +1 -1
  143. aws_cdk/aws_iotsitewise/__init__.py +1 -1
  144. aws_cdk/aws_iotthingsgraph/__init__.py +1 -1
  145. aws_cdk/aws_iottwinmaker/__init__.py +1 -1
  146. aws_cdk/aws_iotwireless/__init__.py +1 -1
  147. aws_cdk/aws_ivs/__init__.py +1 -1
  148. aws_cdk/aws_ivschat/__init__.py +1 -1
  149. aws_cdk/aws_kafkaconnect/__init__.py +1 -1
  150. aws_cdk/aws_kendra/__init__.py +1 -1
  151. aws_cdk/aws_kendraranking/__init__.py +1 -1
  152. aws_cdk/aws_kinesis/__init__.py +1 -1
  153. aws_cdk/aws_kinesisanalytics/__init__.py +93 -1
  154. aws_cdk/aws_kinesisanalyticsv2/__init__.py +93 -1
  155. aws_cdk/aws_kinesisfirehose/__init__.py +301 -94
  156. aws_cdk/aws_kinesisvideo/__init__.py +1 -1
  157. aws_cdk/aws_kms/__init__.py +16 -15
  158. aws_cdk/aws_lakeformation/__init__.py +1 -1
  159. aws_cdk/aws_lambda/__init__.py +160 -1
  160. aws_cdk/aws_lambda_destinations/__init__.py +1 -1
  161. aws_cdk/aws_lambda_event_sources/__init__.py +1 -1
  162. aws_cdk/aws_lambda_nodejs/__init__.py +1 -1
  163. aws_cdk/aws_lex/__init__.py +1 -1
  164. aws_cdk/aws_licensemanager/__init__.py +1 -1
  165. aws_cdk/aws_lightsail/__init__.py +1 -1
  166. aws_cdk/aws_location/__init__.py +1 -1
  167. aws_cdk/aws_logs/__init__.py +1 -1
  168. aws_cdk/aws_logs_destinations/__init__.py +1 -1
  169. aws_cdk/aws_lookoutequipment/__init__.py +1 -1
  170. aws_cdk/aws_lookoutmetrics/__init__.py +1 -1
  171. aws_cdk/aws_lookoutvision/__init__.py +1 -1
  172. aws_cdk/aws_m2/__init__.py +1 -1
  173. aws_cdk/aws_macie/__init__.py +1 -1
  174. aws_cdk/aws_managedblockchain/__init__.py +1 -1
  175. aws_cdk/aws_mediaconnect/__init__.py +1 -1
  176. aws_cdk/aws_mediaconvert/__init__.py +1 -1
  177. aws_cdk/aws_medialive/__init__.py +1 -1
  178. aws_cdk/aws_mediapackage/__init__.py +1 -1
  179. aws_cdk/aws_mediapackagev2/__init__.py +33 -1
  180. aws_cdk/aws_mediastore/__init__.py +1 -1
  181. aws_cdk/aws_mediatailor/__init__.py +1 -1
  182. aws_cdk/aws_memorydb/__init__.py +1 -1
  183. aws_cdk/aws_msk/__init__.py +1 -1
  184. aws_cdk/aws_mwaa/__init__.py +1 -1
  185. aws_cdk/aws_neptune/__init__.py +1 -1
  186. aws_cdk/aws_neptunegraph/__init__.py +1 -1
  187. aws_cdk/aws_networkfirewall/__init__.py +1 -1
  188. aws_cdk/aws_networkmanager/__init__.py +10 -10
  189. aws_cdk/aws_nimblestudio/__init__.py +1 -1
  190. aws_cdk/aws_oam/__init__.py +1 -1
  191. aws_cdk/aws_omics/__init__.py +2 -2
  192. aws_cdk/aws_opensearchserverless/__init__.py +1 -1
  193. aws_cdk/aws_opensearchservice/__init__.py +1 -1
  194. aws_cdk/aws_opsworks/__init__.py +1 -1
  195. aws_cdk/aws_opsworkscm/__init__.py +8 -4
  196. aws_cdk/aws_organizations/__init__.py +1 -1
  197. aws_cdk/aws_osis/__init__.py +1 -1
  198. aws_cdk/aws_panorama/__init__.py +1 -1
  199. aws_cdk/aws_paymentcryptography/__init__.py +1 -1
  200. aws_cdk/aws_pcaconnectorad/__init__.py +1 -1
  201. aws_cdk/aws_personalize/__init__.py +1 -1
  202. aws_cdk/aws_pinpoint/__init__.py +1 -1
  203. aws_cdk/aws_pinpointemail/__init__.py +1 -1
  204. aws_cdk/aws_pipes/__init__.py +1 -1
  205. aws_cdk/aws_proton/__init__.py +1 -1
  206. aws_cdk/aws_qbusiness/__init__.py +1 -1
  207. aws_cdk/aws_qldb/__init__.py +1 -1
  208. aws_cdk/aws_quicksight/__init__.py +1 -1
  209. aws_cdk/aws_ram/__init__.py +1 -1
  210. aws_cdk/aws_rds/__init__.py +515 -34
  211. aws_cdk/aws_redshift/__init__.py +10 -10
  212. aws_cdk/aws_redshiftserverless/__init__.py +1 -1
  213. aws_cdk/aws_refactorspaces/__init__.py +1 -1
  214. aws_cdk/aws_rekognition/__init__.py +1 -1
  215. aws_cdk/aws_resiliencehub/__init__.py +1 -1
  216. aws_cdk/aws_resourceexplorer2/__init__.py +1 -1
  217. aws_cdk/aws_resourcegroups/__init__.py +1 -1
  218. aws_cdk/aws_robomaker/__init__.py +1 -1
  219. aws_cdk/aws_rolesanywhere/__init__.py +1 -1
  220. aws_cdk/aws_route53/__init__.py +1 -1
  221. aws_cdk/aws_route53_patterns/__init__.py +1 -1
  222. aws_cdk/aws_route53_targets/__init__.py +1 -1
  223. aws_cdk/aws_route53profiles/__init__.py +1 -1
  224. aws_cdk/aws_route53recoverycontrol/__init__.py +1 -1
  225. aws_cdk/aws_route53recoveryreadiness/__init__.py +1 -1
  226. aws_cdk/aws_route53resolver/__init__.py +1 -1
  227. aws_cdk/aws_rum/__init__.py +1 -1
  228. aws_cdk/aws_s3/__init__.py +30 -6
  229. aws_cdk/aws_s3_assets/__init__.py +1 -1
  230. aws_cdk/aws_s3_deployment/__init__.py +1 -1
  231. aws_cdk/aws_s3_notifications/__init__.py +1 -1
  232. aws_cdk/aws_s3express/__init__.py +1 -1
  233. aws_cdk/aws_s3objectlambda/__init__.py +1 -1
  234. aws_cdk/aws_s3outposts/__init__.py +1 -1
  235. aws_cdk/aws_sagemaker/__init__.py +1 -1
  236. aws_cdk/aws_sam/__init__.py +1 -1
  237. aws_cdk/aws_scheduler/__init__.py +1 -1
  238. aws_cdk/aws_sdb/__init__.py +1 -1
  239. aws_cdk/aws_secretsmanager/__init__.py +1 -1
  240. aws_cdk/aws_securityhub/__init__.py +1 -1
  241. aws_cdk/aws_securitylake/__init__.py +1 -1
  242. aws_cdk/aws_servicecatalog/__init__.py +1 -1
  243. aws_cdk/aws_servicecatalogappregistry/__init__.py +1 -1
  244. aws_cdk/aws_servicediscovery/__init__.py +21 -4
  245. aws_cdk/aws_ses/__init__.py +86 -1
  246. aws_cdk/aws_ses_actions/__init__.py +1 -1
  247. aws_cdk/aws_shield/__init__.py +1 -1
  248. aws_cdk/aws_signer/__init__.py +42 -1
  249. aws_cdk/aws_simspaceweaver/__init__.py +1 -1
  250. aws_cdk/aws_sns/__init__.py +1 -1
  251. aws_cdk/aws_sns_subscriptions/__init__.py +1 -1
  252. aws_cdk/aws_sqs/__init__.py +7 -9
  253. aws_cdk/aws_ssm/__init__.py +106 -37
  254. aws_cdk/aws_ssmcontacts/__init__.py +1 -1
  255. aws_cdk/aws_ssmincidents/__init__.py +1 -1
  256. aws_cdk/aws_sso/__init__.py +1 -1
  257. aws_cdk/aws_stepfunctions/__init__.py +1 -1
  258. aws_cdk/aws_stepfunctions_tasks/__init__.py +793 -152
  259. aws_cdk/aws_supportapp/__init__.py +1 -1
  260. aws_cdk/aws_synthetics/__init__.py +1 -1
  261. aws_cdk/aws_systemsmanagersap/__init__.py +1 -1
  262. aws_cdk/aws_timestream/__init__.py +1 -1
  263. aws_cdk/aws_transfer/__init__.py +1 -1
  264. aws_cdk/aws_verifiedpermissions/__init__.py +602 -9
  265. aws_cdk/aws_voiceid/__init__.py +1 -1
  266. aws_cdk/aws_vpclattice/__init__.py +1 -1
  267. aws_cdk/aws_waf/__init__.py +1 -1
  268. aws_cdk/aws_wafregional/__init__.py +1 -1
  269. aws_cdk/aws_wafv2/__init__.py +1 -1
  270. aws_cdk/aws_wisdom/__init__.py +1 -1
  271. aws_cdk/aws_workspaces/__init__.py +774 -1
  272. aws_cdk/aws_workspacesthinclient/__init__.py +1 -1
  273. aws_cdk/aws_workspacesweb/__init__.py +5 -5
  274. aws_cdk/aws_xray/__init__.py +1 -1
  275. aws_cdk/cloud_assembly_schema/__init__.py +1 -1
  276. aws_cdk/cloudformation_include/__init__.py +1 -1
  277. aws_cdk/custom_resources/__init__.py +1 -1
  278. aws_cdk/cx_api/__init__.py +19 -1
  279. aws_cdk/lambda_layer_awscli/__init__.py +1 -1
  280. aws_cdk/lambda_layer_kubectl/__init__.py +1 -1
  281. aws_cdk/lambda_layer_node_proxy_agent/__init__.py +1 -1
  282. aws_cdk/pipelines/__init__.py +2 -2
  283. aws_cdk/region_info/__init__.py +1 -1
  284. aws_cdk/triggers/__init__.py +1 -1
  285. {aws_cdk_lib-2.147.3.dist-info → aws_cdk_lib-2.148.0.dist-info}/METADATA +2 -2
  286. aws_cdk_lib-2.148.0.dist-info/RECORD +291 -0
  287. aws_cdk_lib-2.147.3.dist-info/RECORD +0 -290
  288. {aws_cdk_lib-2.147.3.dist-info → aws_cdk_lib-2.148.0.dist-info}/LICENSE +0 -0
  289. {aws_cdk_lib-2.147.3.dist-info → aws_cdk_lib-2.148.0.dist-info}/NOTICE +0 -0
  290. {aws_cdk_lib-2.147.3.dist-info → aws_cdk_lib-2.148.0.dist-info}/WHEEL +0 -0
  291. {aws_cdk_lib-2.147.3.dist-info → aws_cdk_lib-2.148.0.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- '''
1
+ r'''
2
2
  # Amazon EKS Construct Library
3
3
 
4
4
  This construct library allows you to define [Amazon Elastic Container Service for Kubernetes (EKS)](https://aws.amazon.com/eks/) clusters.
@@ -47,6 +47,7 @@ In addition, the library also supports defining Kubernetes resource manifests wi
47
47
  * [Cluster Security Group](#cluster-security-group)
48
48
  * [Node SSH Access](#node-ssh-access)
49
49
  * [Service Accounts](#service-accounts)
50
+ * [Pod Identities](#pod-identities)
50
51
  * [Applying Kubernetes Resources](#applying-kubernetes-resources)
51
52
 
52
53
  * [Kubernetes Manifests](#kubernetes-manifests)
@@ -1356,6 +1357,45 @@ Note that adding service accounts requires running `kubectl` commands against th
1356
1357
  This means you must also pass the `kubectlRoleArn` when importing the cluster.
1357
1358
  See [Using existing Clusters](https://github.com/aws/aws-cdk/tree/main/packages/aws-cdk-lib/aws-eks#using-existing-clusters).
1358
1359
 
1360
+ ### Pod Identities
1361
+
1362
+ [Amazon EKS Pod Identities](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html) is a feature that simplifies how
1363
+ Kubernetes applications running on Amazon EKS can obtain AWS IAM credentials. It provides a way to associate an IAM role with a
1364
+ Kubernetes service account, allowing pods to retrieve temporary AWS credentials without the need
1365
+ to manage IAM roles and policies directly.
1366
+
1367
+ By default, `ServiceAccount` creates an `OpenIdConnectProvider` for
1368
+ [IRSA(IAM roles for service accounts)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) if
1369
+ `identityType` is `undefined` or `IdentityType.IRSA`.
1370
+
1371
+ You may opt in Amaozn EKS Pod Identities as below:
1372
+
1373
+ ```python
1374
+ # cluster: eks.Cluster
1375
+
1376
+
1377
+ eks.ServiceAccount(self, "ServiceAccount",
1378
+ cluster=cluster,
1379
+ name="test-sa",
1380
+ namespace="default",
1381
+ identity_type=eks.IdentityType.POD_IDENTITY
1382
+ )
1383
+ ```
1384
+
1385
+ When you create the ServiceAccount with the `identityType` set to `POD_IDENTITY`,
1386
+ `ServiceAccount` contruct will perform the following actions behind the scenes:
1387
+
1388
+ 1. It will create an IAM role with the necessary trust policy to allow the "pods.eks.amazonaws.com" principal to assume the role.
1389
+ This trust policy grants the EKS service the permission to retrieve temporary AWS credentials on behalf of the pods using this service account.
1390
+ 2. It will enable the "Amazon EKS Pod Identity Agent" add-on on the EKS cluster. This add-on is responsible for managing the temporary
1391
+ AWS credentials and making them available to the pods.
1392
+ 3. It will create an association between the IAM role and the Kubernetes service account. This association allows the pods using this
1393
+ service account to obtain the temporary AWS credentials from the associated IAM role.
1394
+
1395
+ This simplifies the process of configuring IAM permissions for your Kubernetes applications running on Amazon EKS. It handles the creation of the IAM role,
1396
+ the installation of the Pod Identity Agent add-on, and the association between the role and the service account, making it easier to manage AWS credentials
1397
+ for your applications.
1398
+
1359
1399
  ## Applying Kubernetes Resources
1360
1400
 
1361
1401
  The library supports several popular resource deployment mechanisms, among which are:
@@ -2533,6 +2573,159 @@ class AccessScopeType(enum.Enum):
2533
2573
  '''The policy applies to the entire cluster.'''
2534
2574
 
2535
2575
 
2576
+ @jsii.data_type(
2577
+ jsii_type="aws-cdk-lib.aws_eks.AddonAttributes",
2578
+ jsii_struct_bases=[],
2579
+ name_mapping={"addon_name": "addonName", "cluster_name": "clusterName"},
2580
+ )
2581
+ class AddonAttributes:
2582
+ def __init__(self, *, addon_name: builtins.str, cluster_name: builtins.str) -> None:
2583
+ '''Represents the attributes of an addon for an Amazon EKS cluster.
2584
+
2585
+ :param addon_name: The name of the addon.
2586
+ :param cluster_name: The name of the Amazon EKS cluster the addon is associated with.
2587
+
2588
+ :exampleMetadata: fixture=_generated
2589
+
2590
+ Example::
2591
+
2592
+ # The code below shows an example of how to instantiate this type.
2593
+ # The values are placeholders you should change.
2594
+ from aws_cdk import aws_eks as eks
2595
+
2596
+ addon_attributes = eks.AddonAttributes(
2597
+ addon_name="addonName",
2598
+ cluster_name="clusterName"
2599
+ )
2600
+ '''
2601
+ if __debug__:
2602
+ type_hints = typing.get_type_hints(_typecheckingstub__77d0746018f1cbe3ed090d492996344d98293f7a76446705a3ac043408c02cfe)
2603
+ check_type(argname="argument addon_name", value=addon_name, expected_type=type_hints["addon_name"])
2604
+ check_type(argname="argument cluster_name", value=cluster_name, expected_type=type_hints["cluster_name"])
2605
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2606
+ "addon_name": addon_name,
2607
+ "cluster_name": cluster_name,
2608
+ }
2609
+
2610
+ @builtins.property
2611
+ def addon_name(self) -> builtins.str:
2612
+ '''The name of the addon.'''
2613
+ result = self._values.get("addon_name")
2614
+ assert result is not None, "Required property 'addon_name' is missing"
2615
+ return typing.cast(builtins.str, result)
2616
+
2617
+ @builtins.property
2618
+ def cluster_name(self) -> builtins.str:
2619
+ '''The name of the Amazon EKS cluster the addon is associated with.'''
2620
+ result = self._values.get("cluster_name")
2621
+ assert result is not None, "Required property 'cluster_name' is missing"
2622
+ return typing.cast(builtins.str, result)
2623
+
2624
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2625
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2626
+
2627
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2628
+ return not (rhs == self)
2629
+
2630
+ def __repr__(self) -> str:
2631
+ return "AddonAttributes(%s)" % ", ".join(
2632
+ k + "=" + repr(v) for k, v in self._values.items()
2633
+ )
2634
+
2635
+
2636
+ @jsii.data_type(
2637
+ jsii_type="aws-cdk-lib.aws_eks.AddonProps",
2638
+ jsii_struct_bases=[],
2639
+ name_mapping={
2640
+ "addon_name": "addonName",
2641
+ "cluster": "cluster",
2642
+ "addon_version": "addonVersion",
2643
+ },
2644
+ )
2645
+ class AddonProps:
2646
+ def __init__(
2647
+ self,
2648
+ *,
2649
+ addon_name: builtins.str,
2650
+ cluster: "ICluster",
2651
+ addon_version: typing.Optional[builtins.str] = None,
2652
+ ) -> None:
2653
+ '''Properties for creating an Amazon EKS Add-On.
2654
+
2655
+ :param addon_name: Name of the Add-On.
2656
+ :param cluster: The EKS cluster the Add-On is associated with.
2657
+ :param addon_version: Version of the Add-On. You can check all available versions with describe-addon-versons. 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.
2658
+
2659
+ :exampleMetadata: fixture=_generated
2660
+
2661
+ Example::
2662
+
2663
+ # The code below shows an example of how to instantiate this type.
2664
+ # The values are placeholders you should change.
2665
+ from aws_cdk import aws_eks as eks
2666
+
2667
+ # cluster: eks.Cluster
2668
+
2669
+ addon_props = eks.AddonProps(
2670
+ addon_name="addonName",
2671
+ cluster=cluster,
2672
+
2673
+ # the properties below are optional
2674
+ addon_version="addonVersion"
2675
+ )
2676
+ '''
2677
+ if __debug__:
2678
+ type_hints = typing.get_type_hints(_typecheckingstub__febc9f6cb4243d885b1b1838be38d633e7c5fc6534eaaf731f00a24653ee7591)
2679
+ check_type(argname="argument addon_name", value=addon_name, expected_type=type_hints["addon_name"])
2680
+ check_type(argname="argument cluster", value=cluster, expected_type=type_hints["cluster"])
2681
+ check_type(argname="argument addon_version", value=addon_version, expected_type=type_hints["addon_version"])
2682
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2683
+ "addon_name": addon_name,
2684
+ "cluster": cluster,
2685
+ }
2686
+ if addon_version is not None:
2687
+ self._values["addon_version"] = addon_version
2688
+
2689
+ @builtins.property
2690
+ def addon_name(self) -> builtins.str:
2691
+ '''Name of the Add-On.'''
2692
+ result = self._values.get("addon_name")
2693
+ assert result is not None, "Required property 'addon_name' is missing"
2694
+ return typing.cast(builtins.str, result)
2695
+
2696
+ @builtins.property
2697
+ def cluster(self) -> "ICluster":
2698
+ '''The EKS cluster the Add-On is associated with.'''
2699
+ result = self._values.get("cluster")
2700
+ assert result is not None, "Required property 'cluster' is missing"
2701
+ return typing.cast("ICluster", result)
2702
+
2703
+ @builtins.property
2704
+ def addon_version(self) -> typing.Optional[builtins.str]:
2705
+ '''Version of the Add-On.
2706
+
2707
+ You can check all available versions with describe-addon-versons.
2708
+ For example, this lists all available versions for the ``eks-pod-identity-agent`` addon:
2709
+ $ aws eks describe-addon-versions --addon-name eks-pod-identity-agent
2710
+ --query 'addons[*].addonVersions[*].addonVersion'
2711
+
2712
+ :default: the latest version.
2713
+ '''
2714
+ result = self._values.get("addon_version")
2715
+ return typing.cast(typing.Optional[builtins.str], result)
2716
+
2717
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2718
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2719
+
2720
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2721
+ return not (rhs == self)
2722
+
2723
+ def __repr__(self) -> str:
2724
+ return "AddonProps(%s)" % ", ".join(
2725
+ k + "=" + repr(v) for k, v in self._values.items()
2726
+ )
2727
+
2728
+
2536
2729
  class AlbController(
2537
2730
  _constructs_77d1e7e8.Construct,
2538
2731
  metaclass=jsii.JSIIMeta,
@@ -5510,6 +5703,7 @@ class CfnCluster(
5510
5703
  authentication_mode="authenticationMode",
5511
5704
  bootstrap_cluster_creator_admin_permissions=False
5512
5705
  ),
5706
+ bootstrap_self_managed_addons=False,
5513
5707
  encryption_config=[eks.CfnCluster.EncryptionConfigProperty(
5514
5708
  provider=eks.CfnCluster.ProviderProperty(
5515
5709
  key_arn="keyArn"
@@ -5554,6 +5748,7 @@ class CfnCluster(
5554
5748
  resources_vpc_config: typing.Union[_IResolvable_da3f097b, typing.Union["CfnCluster.ResourcesVpcConfigProperty", typing.Dict[builtins.str, typing.Any]]],
5555
5749
  role_arn: builtins.str,
5556
5750
  access_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCluster.AccessConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
5751
+ bootstrap_self_managed_addons: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
5557
5752
  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,
5558
5753
  kubernetes_network_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCluster.KubernetesNetworkConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
5559
5754
  logging: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCluster.LoggingProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -5568,6 +5763,7 @@ class CfnCluster(
5568
5763
  :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.
5569
5764
  :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** .
5570
5765
  :param access_config: The access configuration for the cluster.
5766
+ :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.
5571
5767
  :param encryption_config: The encryption configuration for the cluster.
5572
5768
  :param kubernetes_network_config: The Kubernetes network configuration for the cluster.
5573
5769
  :param logging: The logging configuration for your cluster.
@@ -5584,6 +5780,7 @@ class CfnCluster(
5584
5780
  resources_vpc_config=resources_vpc_config,
5585
5781
  role_arn=role_arn,
5586
5782
  access_config=access_config,
5783
+ bootstrap_self_managed_addons=bootstrap_self_managed_addons,
5587
5784
  encryption_config=encryption_config,
5588
5785
  kubernetes_network_config=kubernetes_network_config,
5589
5786
  logging=logging,
@@ -5765,6 +5962,24 @@ class CfnCluster(
5765
5962
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5766
5963
  jsii.set(self, "accessConfig", value)
5767
5964
 
5965
+ @builtins.property
5966
+ @jsii.member(jsii_name="bootstrapSelfManagedAddons")
5967
+ def bootstrap_self_managed_addons(
5968
+ self,
5969
+ ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
5970
+ '''If you set this value to ``False`` when creating a cluster, the default networking add-ons will not be installed.'''
5971
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], jsii.get(self, "bootstrapSelfManagedAddons"))
5972
+
5973
+ @bootstrap_self_managed_addons.setter
5974
+ def bootstrap_self_managed_addons(
5975
+ self,
5976
+ value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
5977
+ ) -> None:
5978
+ if __debug__:
5979
+ type_hints = typing.get_type_hints(_typecheckingstub__1b3725246139251af199def1d548b17a13e8ddd4df825377563ea01cdea555c4)
5980
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5981
+ jsii.set(self, "bootstrapSelfManagedAddons", value)
5982
+
5768
5983
  @builtins.property
5769
5984
  @jsii.member(jsii_name="encryptionConfig")
5770
5985
  def encryption_config(
@@ -6688,6 +6903,7 @@ class CfnCluster(
6688
6903
  "resources_vpc_config": "resourcesVpcConfig",
6689
6904
  "role_arn": "roleArn",
6690
6905
  "access_config": "accessConfig",
6906
+ "bootstrap_self_managed_addons": "bootstrapSelfManagedAddons",
6691
6907
  "encryption_config": "encryptionConfig",
6692
6908
  "kubernetes_network_config": "kubernetesNetworkConfig",
6693
6909
  "logging": "logging",
@@ -6704,6 +6920,7 @@ class CfnClusterProps:
6704
6920
  resources_vpc_config: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.ResourcesVpcConfigProperty, typing.Dict[builtins.str, typing.Any]]],
6705
6921
  role_arn: builtins.str,
6706
6922
  access_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.AccessConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
6923
+ bootstrap_self_managed_addons: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
6707
6924
  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,
6708
6925
  kubernetes_network_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.KubernetesNetworkConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
6709
6926
  logging: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.LoggingProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -6717,6 +6934,7 @@ class CfnClusterProps:
6717
6934
  :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.
6718
6935
  :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** .
6719
6936
  :param access_config: The access configuration for the cluster.
6937
+ :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.
6720
6938
  :param encryption_config: The encryption configuration for the cluster.
6721
6939
  :param kubernetes_network_config: The Kubernetes network configuration for the cluster.
6722
6940
  :param logging: The logging configuration for your cluster.
@@ -6751,6 +6969,7 @@ class CfnClusterProps:
6751
6969
  authentication_mode="authenticationMode",
6752
6970
  bootstrap_cluster_creator_admin_permissions=False
6753
6971
  ),
6972
+ bootstrap_self_managed_addons=False,
6754
6973
  encryption_config=[eks.CfnCluster.EncryptionConfigProperty(
6755
6974
  provider=eks.CfnCluster.ProviderProperty(
6756
6975
  key_arn="keyArn"
@@ -6791,6 +7010,7 @@ class CfnClusterProps:
6791
7010
  check_type(argname="argument resources_vpc_config", value=resources_vpc_config, expected_type=type_hints["resources_vpc_config"])
6792
7011
  check_type(argname="argument role_arn", value=role_arn, expected_type=type_hints["role_arn"])
6793
7012
  check_type(argname="argument access_config", value=access_config, expected_type=type_hints["access_config"])
7013
+ check_type(argname="argument bootstrap_self_managed_addons", value=bootstrap_self_managed_addons, expected_type=type_hints["bootstrap_self_managed_addons"])
6794
7014
  check_type(argname="argument encryption_config", value=encryption_config, expected_type=type_hints["encryption_config"])
6795
7015
  check_type(argname="argument kubernetes_network_config", value=kubernetes_network_config, expected_type=type_hints["kubernetes_network_config"])
6796
7016
  check_type(argname="argument logging", value=logging, expected_type=type_hints["logging"])
@@ -6804,6 +7024,8 @@ class CfnClusterProps:
6804
7024
  }
6805
7025
  if access_config is not None:
6806
7026
  self._values["access_config"] = access_config
7027
+ if bootstrap_self_managed_addons is not None:
7028
+ self._values["bootstrap_self_managed_addons"] = bootstrap_self_managed_addons
6807
7029
  if encryption_config is not None:
6808
7030
  self._values["encryption_config"] = encryption_config
6809
7031
  if kubernetes_network_config is not None:
@@ -6856,6 +7078,21 @@ class CfnClusterProps:
6856
7078
  result = self._values.get("access_config")
6857
7079
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnCluster.AccessConfigProperty]], result)
6858
7080
 
7081
+ @builtins.property
7082
+ def bootstrap_self_managed_addons(
7083
+ self,
7084
+ ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
7085
+ '''If you set this value to ``False`` when creating a cluster, the default networking add-ons will not be installed.
7086
+
7087
+ The default networking addons include vpc-cni, coredns, and kube-proxy.
7088
+
7089
+ Use this option when you plan to install third-party alternative add-ons or self-manage the default networking add-ons.
7090
+
7091
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-cluster.html#cfn-eks-cluster-bootstrapselfmanagedaddons
7092
+ '''
7093
+ result = self._values.get("bootstrap_self_managed_addons")
7094
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], result)
7095
+
6859
7096
  @builtins.property
6860
7097
  def encryption_config(
6861
7098
  self,
@@ -11775,6 +12012,58 @@ class _IAccessPolicyProxy:
11775
12012
  typing.cast(typing.Any, IAccessPolicy).__jsii_proxy_class__ = lambda : _IAccessPolicyProxy
11776
12013
 
11777
12014
 
12015
+ @jsii.interface(jsii_type="aws-cdk-lib.aws_eks.IAddon")
12016
+ class IAddon(_IResource_c80c4260, typing_extensions.Protocol):
12017
+ '''Represents an Amazon EKS Add-On.'''
12018
+
12019
+ @builtins.property
12020
+ @jsii.member(jsii_name="addonArn")
12021
+ def addon_arn(self) -> builtins.str:
12022
+ '''ARN of the Add-On.
12023
+
12024
+ :attribute: true
12025
+ '''
12026
+ ...
12027
+
12028
+ @builtins.property
12029
+ @jsii.member(jsii_name="addonName")
12030
+ def addon_name(self) -> builtins.str:
12031
+ '''Name of the Add-On.
12032
+
12033
+ :attribute: true
12034
+ '''
12035
+ ...
12036
+
12037
+
12038
+ class _IAddonProxy(
12039
+ jsii.proxy_for(_IResource_c80c4260), # type: ignore[misc]
12040
+ ):
12041
+ '''Represents an Amazon EKS Add-On.'''
12042
+
12043
+ __jsii_type__: typing.ClassVar[str] = "aws-cdk-lib.aws_eks.IAddon"
12044
+
12045
+ @builtins.property
12046
+ @jsii.member(jsii_name="addonArn")
12047
+ def addon_arn(self) -> builtins.str:
12048
+ '''ARN of the Add-On.
12049
+
12050
+ :attribute: true
12051
+ '''
12052
+ return typing.cast(builtins.str, jsii.get(self, "addonArn"))
12053
+
12054
+ @builtins.property
12055
+ @jsii.member(jsii_name="addonName")
12056
+ def addon_name(self) -> builtins.str:
12057
+ '''Name of the Add-On.
12058
+
12059
+ :attribute: true
12060
+ '''
12061
+ return typing.cast(builtins.str, jsii.get(self, "addonName"))
12062
+
12063
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
12064
+ typing.cast(typing.Any, IAddon).__jsii_proxy_class__ = lambda : _IAddonProxy
12065
+
12066
+
11778
12067
  @jsii.interface(jsii_type="aws-cdk-lib.aws_eks.ICluster")
11779
12068
  class ICluster(_IResource_c80c4260, _IConnectable_10015a05, typing_extensions.Protocol):
11780
12069
  '''An EKS cluster.'''
@@ -11900,6 +12189,22 @@ class ICluster(_IResource_c80c4260, _IConnectable_10015a05, typing_extensions.Pr
11900
12189
  '''
11901
12190
  ...
11902
12191
 
12192
+ @builtins.property
12193
+ @jsii.member(jsii_name="eksPodIdentityAgent")
12194
+ def eks_pod_identity_agent(self) -> typing.Optional[IAddon]:
12195
+ '''The EKS Pod Identity Agent addon for the EKS cluster.
12196
+
12197
+ The EKS Pod Identity Agent is responsible for managing the temporary credentials
12198
+ used by pods in the cluster to access AWS resources. It runs as a DaemonSet on
12199
+ each node and provides the necessary credentials to the pods based on their
12200
+ associated service account.
12201
+
12202
+ This property returns the ``CfnAddon`` resource representing the EKS Pod Identity
12203
+ Agent addon. If the addon has not been created yet, it will be created and
12204
+ returned.
12205
+ '''
12206
+ ...
12207
+
11903
12208
  @builtins.property
11904
12209
  @jsii.member(jsii_name="ipFamily")
11905
12210
  def ip_family(self) -> typing.Optional["IpFamily"]:
@@ -12079,6 +12384,7 @@ class ICluster(_IResource_c80c4260, _IConnectable_10015a05, typing_extensions.Pr
12079
12384
  id: builtins.str,
12080
12385
  *,
12081
12386
  annotations: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
12387
+ identity_type: typing.Optional["IdentityType"] = None,
12082
12388
  labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
12083
12389
  name: typing.Optional[builtins.str] = None,
12084
12390
  namespace: typing.Optional[builtins.str] = None,
@@ -12087,6 +12393,7 @@ class ICluster(_IResource_c80c4260, _IConnectable_10015a05, typing_extensions.Pr
12087
12393
 
12088
12394
  :param id: logical id of service account.
12089
12395
  :param annotations: Additional annotations of the service account. Default: - no additional annotations
12396
+ :param identity_type: The identity type to use for the service account. Default: IdentityType.IRSA
12090
12397
  :param labels: Additional labels of the service account. Default: - no additional labels
12091
12398
  :param name: The name of the service account. The name of a ServiceAccount object must be a valid DNS subdomain name. https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ Default: - If no name is given, it will use the id of the resource.
12092
12399
  :param namespace: The namespace of the service account. All namespace names must be valid RFC 1123 DNS labels. https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#namespaces-and-dns Default: "default"
@@ -12260,6 +12567,22 @@ class _IClusterProxy(
12260
12567
  '''
12261
12568
  return typing.cast(typing.Optional[_ISecurityGroup_acf8a799], jsii.get(self, "clusterHandlerSecurityGroup"))
12262
12569
 
12570
+ @builtins.property
12571
+ @jsii.member(jsii_name="eksPodIdentityAgent")
12572
+ def eks_pod_identity_agent(self) -> typing.Optional[IAddon]:
12573
+ '''The EKS Pod Identity Agent addon for the EKS cluster.
12574
+
12575
+ The EKS Pod Identity Agent is responsible for managing the temporary credentials
12576
+ used by pods in the cluster to access AWS resources. It runs as a DaemonSet on
12577
+ each node and provides the necessary credentials to the pods based on their
12578
+ associated service account.
12579
+
12580
+ This property returns the ``CfnAddon`` resource representing the EKS Pod Identity
12581
+ Agent addon. If the addon has not been created yet, it will be created and
12582
+ returned.
12583
+ '''
12584
+ return typing.cast(typing.Optional[IAddon], jsii.get(self, "eksPodIdentityAgent"))
12585
+
12263
12586
  @builtins.property
12264
12587
  @jsii.member(jsii_name="ipFamily")
12265
12588
  def ip_family(self) -> typing.Optional["IpFamily"]:
@@ -12472,6 +12795,7 @@ class _IClusterProxy(
12472
12795
  id: builtins.str,
12473
12796
  *,
12474
12797
  annotations: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
12798
+ identity_type: typing.Optional["IdentityType"] = None,
12475
12799
  labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
12476
12800
  name: typing.Optional[builtins.str] = None,
12477
12801
  namespace: typing.Optional[builtins.str] = None,
@@ -12480,6 +12804,7 @@ class _IClusterProxy(
12480
12804
 
12481
12805
  :param id: logical id of service account.
12482
12806
  :param annotations: Additional annotations of the service account. Default: - no additional annotations
12807
+ :param identity_type: The identity type to use for the service account. Default: IdentityType.IRSA
12483
12808
  :param labels: Additional labels of the service account. Default: - no additional labels
12484
12809
  :param name: The name of the service account. The name of a ServiceAccount object must be a valid DNS subdomain name. https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ Default: - If no name is given, it will use the id of the resource.
12485
12810
  :param namespace: The namespace of the service account. All namespace names must be valid RFC 1123 DNS labels. https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#namespaces-and-dns Default: "default"
@@ -12488,7 +12813,11 @@ class _IClusterProxy(
12488
12813
  type_hints = typing.get_type_hints(_typecheckingstub__e1ebfaeb10359620b55323126554d3e31b14090625de1618808646a519d578de)
12489
12814
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
12490
12815
  options = ServiceAccountOptions(
12491
- annotations=annotations, labels=labels, name=name, namespace=namespace
12816
+ annotations=annotations,
12817
+ identity_type=identity_type,
12818
+ labels=labels,
12819
+ name=name,
12820
+ namespace=namespace,
12492
12821
  )
12493
12822
 
12494
12823
  return typing.cast("ServiceAccount", jsii.invoke(self, "addServiceAccount", [id, options]))
@@ -12631,6 +12960,49 @@ class _INodegroupProxy(
12631
12960
  typing.cast(typing.Any, INodegroup).__jsii_proxy_class__ = lambda : _INodegroupProxy
12632
12961
 
12633
12962
 
12963
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_eks.IdentityType")
12964
+ class IdentityType(enum.Enum):
12965
+ '''Enum representing the different identity types that can be used for a Kubernetes service account.
12966
+
12967
+ :exampleMetadata: infused
12968
+
12969
+ Example::
12970
+
12971
+ # cluster: eks.Cluster
12972
+
12973
+
12974
+ eks.ServiceAccount(self, "ServiceAccount",
12975
+ cluster=cluster,
12976
+ name="test-sa",
12977
+ namespace="default",
12978
+ identity_type=eks.IdentityType.POD_IDENTITY
12979
+ )
12980
+ '''
12981
+
12982
+ IRSA = "IRSA"
12983
+ '''Use the IAM Roles for Service Accounts (IRSA) identity type.
12984
+
12985
+ IRSA allows you to associate an IAM role with a Kubernetes service account.
12986
+ This provides a way to grant permissions to Kubernetes pods by associating an IAM role with a Kubernetes service account.
12987
+ The IAM role can then be used to provide AWS credentials to the pods, allowing them to access other AWS resources.
12988
+
12989
+ When enabled, the openIdConnectProvider of the cluster would be created when you create the ServiceAccount.
12990
+
12991
+ :see: https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html
12992
+ '''
12993
+ POD_IDENTITY = "POD_IDENTITY"
12994
+ '''Use the EKS Pod Identities identity type.
12995
+
12996
+ EKS Pod Identities provide the ability to manage credentials for your applications, similar to the way that Amazon EC2 instance profiles
12997
+ provide credentials to Amazon EC2 instances. Instead of creating and distributing your AWS credentials to the containers or using the
12998
+ Amazon EC2 instance's role, you associate an IAM role with a Kubernetes service account and configure your Pods to use the service account.
12999
+
13000
+ When enabled, the Pod Identity Agent AddOn of the cluster would be created when you create the ServiceAccount.
13001
+
13002
+ :see: https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html
13003
+ '''
13004
+
13005
+
12634
13006
  @jsii.enum(jsii_type="aws-cdk-lib.aws_eks.IpFamily")
12635
13007
  class IpFamily(enum.Enum):
12636
13008
  '''EKS cluster IP family.
@@ -13905,13 +14277,7 @@ class KubernetesVersion(
13905
14277
  def V1_22(cls) -> "KubernetesVersion":
13906
14278
  '''(deprecated) Kubernetes version 1.22.
13907
14279
 
13908
- :deprecated:
13909
-
13910
- Use newer version of EKS
13911
-
13912
- When creating a ``Cluster`` with this version, you need to also specify the
13913
- ``kubectlLayer`` property with a ``KubectlV22Layer`` from
13914
- ``@aws-cdk/lambda-layer-kubectl-v22``.
14280
+ :deprecated: Use newer version of EKS
13915
14281
 
13916
14282
  :stability: deprecated
13917
14283
  '''
@@ -14000,7 +14366,7 @@ class KubernetesVersion(
14000
14366
  '''Kubernetes version 1.30.
14001
14367
 
14002
14368
  When creating a ``Cluster`` with this version, you need to also specify the
14003
- ``kubectlLayer`` property with a ``KubectlV29Layer`` from
14369
+ ``kubectlLayer`` property with a ``KubectlV30Layer`` from
14004
14370
  ``@aws-cdk/lambda-layer-kubectl-v30``.
14005
14371
  '''
14006
14372
  return typing.cast("KubernetesVersion", jsii.sget(cls, "V1_30"))
@@ -14611,7 +14977,7 @@ class NodegroupOptions:
14611
14977
 
14612
14978
  :default: t3.medium will be used according to the cloudformation document.
14613
14979
 
14614
- :see: - https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-instancetypes
14980
+ :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-instancetypes
14615
14981
  '''
14616
14982
  result = self._values.get("instance_types")
14617
14983
  return typing.cast(typing.Optional[typing.List[_InstanceType_f64915b9]], result)
@@ -14631,7 +14997,7 @@ class NodegroupOptions:
14631
14997
 
14632
14998
  :default: - no launch template
14633
14999
 
14634
- :see: - https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html
15000
+ :see: https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html
14635
15001
  '''
14636
15002
  result = self._values.get("launch_template_spec")
14637
15003
  return typing.cast(typing.Optional[LaunchTemplateSpec], result)
@@ -15053,7 +15419,7 @@ class NodegroupProps(NodegroupOptions):
15053
15419
 
15054
15420
  :default: t3.medium will be used according to the cloudformation document.
15055
15421
 
15056
- :see: - https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-instancetypes
15422
+ :see: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-instancetypes
15057
15423
  '''
15058
15424
  result = self._values.get("instance_types")
15059
15425
  return typing.cast(typing.Optional[typing.List[_InstanceType_f64915b9]], result)
@@ -15073,7 +15439,7 @@ class NodegroupProps(NodegroupOptions):
15073
15439
 
15074
15440
  :default: - no launch template
15075
15441
 
15076
- :see: - https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html
15442
+ :see: https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html
15077
15443
  '''
15078
15444
  result = self._values.get("launch_template_spec")
15079
15445
  return typing.cast(typing.Optional[LaunchTemplateSpec], result)
@@ -15577,6 +15943,7 @@ class ServiceAccount(
15577
15943
  *,
15578
15944
  cluster: ICluster,
15579
15945
  annotations: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15946
+ identity_type: typing.Optional[IdentityType] = None,
15580
15947
  labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15581
15948
  name: typing.Optional[builtins.str] = None,
15582
15949
  namespace: typing.Optional[builtins.str] = None,
@@ -15586,6 +15953,7 @@ class ServiceAccount(
15586
15953
  :param id: -
15587
15954
  :param cluster: The cluster to apply the patch to.
15588
15955
  :param annotations: Additional annotations of the service account. Default: - no additional annotations
15956
+ :param identity_type: The identity type to use for the service account. Default: IdentityType.IRSA
15589
15957
  :param labels: Additional labels of the service account. Default: - no additional labels
15590
15958
  :param name: The name of the service account. The name of a ServiceAccount object must be a valid DNS subdomain name. https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ Default: - If no name is given, it will use the id of the resource.
15591
15959
  :param namespace: The namespace of the service account. All namespace names must be valid RFC 1123 DNS labels. https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#namespaces-and-dns Default: "default"
@@ -15597,6 +15965,7 @@ class ServiceAccount(
15597
15965
  props = ServiceAccountProps(
15598
15966
  cluster=cluster,
15599
15967
  annotations=annotations,
15968
+ identity_type=identity_type,
15600
15969
  labels=labels,
15601
15970
  name=name,
15602
15971
  namespace=namespace,
@@ -15660,6 +16029,7 @@ class ServiceAccount(
15660
16029
  jsii_struct_bases=[],
15661
16030
  name_mapping={
15662
16031
  "annotations": "annotations",
16032
+ "identity_type": "identityType",
15663
16033
  "labels": "labels",
15664
16034
  "name": "name",
15665
16035
  "namespace": "namespace",
@@ -15670,6 +16040,7 @@ class ServiceAccountOptions:
15670
16040
  self,
15671
16041
  *,
15672
16042
  annotations: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16043
+ identity_type: typing.Optional[IdentityType] = None,
15673
16044
  labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15674
16045
  name: typing.Optional[builtins.str] = None,
15675
16046
  namespace: typing.Optional[builtins.str] = None,
@@ -15677,6 +16048,7 @@ class ServiceAccountOptions:
15677
16048
  '''Options for ``ServiceAccount``.
15678
16049
 
15679
16050
  :param annotations: Additional annotations of the service account. Default: - no additional annotations
16051
+ :param identity_type: The identity type to use for the service account. Default: IdentityType.IRSA
15680
16052
  :param labels: Additional labels of the service account. Default: - no additional labels
15681
16053
  :param name: The name of the service account. The name of a ServiceAccount object must be a valid DNS subdomain name. https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ Default: - If no name is given, it will use the id of the resource.
15682
16054
  :param namespace: The namespace of the service account. All namespace names must be valid RFC 1123 DNS labels. https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#namespaces-and-dns Default: "default"
@@ -15700,12 +16072,15 @@ class ServiceAccountOptions:
15700
16072
  if __debug__:
15701
16073
  type_hints = typing.get_type_hints(_typecheckingstub__c16813f7f34b0f551b6879a204a04016f3eb45d120b546a7afd47fee08551d86)
15702
16074
  check_type(argname="argument annotations", value=annotations, expected_type=type_hints["annotations"])
16075
+ check_type(argname="argument identity_type", value=identity_type, expected_type=type_hints["identity_type"])
15703
16076
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
15704
16077
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
15705
16078
  check_type(argname="argument namespace", value=namespace, expected_type=type_hints["namespace"])
15706
16079
  self._values: typing.Dict[builtins.str, typing.Any] = {}
15707
16080
  if annotations is not None:
15708
16081
  self._values["annotations"] = annotations
16082
+ if identity_type is not None:
16083
+ self._values["identity_type"] = identity_type
15709
16084
  if labels is not None:
15710
16085
  self._values["labels"] = labels
15711
16086
  if name is not None:
@@ -15724,6 +16099,15 @@ class ServiceAccountOptions:
15724
16099
  result = self._values.get("annotations")
15725
16100
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
15726
16101
 
16102
+ @builtins.property
16103
+ def identity_type(self) -> typing.Optional[IdentityType]:
16104
+ '''The identity type to use for the service account.
16105
+
16106
+ :default: IdentityType.IRSA
16107
+ '''
16108
+ result = self._values.get("identity_type")
16109
+ return typing.cast(typing.Optional[IdentityType], result)
16110
+
15727
16111
  @builtins.property
15728
16112
  def labels(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
15729
16113
  '''Additional labels of the service account.
@@ -15774,6 +16158,7 @@ class ServiceAccountOptions:
15774
16158
  jsii_struct_bases=[ServiceAccountOptions],
15775
16159
  name_mapping={
15776
16160
  "annotations": "annotations",
16161
+ "identity_type": "identityType",
15777
16162
  "labels": "labels",
15778
16163
  "name": "name",
15779
16164
  "namespace": "namespace",
@@ -15785,6 +16170,7 @@ class ServiceAccountProps(ServiceAccountOptions):
15785
16170
  self,
15786
16171
  *,
15787
16172
  annotations: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16173
+ identity_type: typing.Optional[IdentityType] = None,
15788
16174
  labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15789
16175
  name: typing.Optional[builtins.str] = None,
15790
16176
  namespace: typing.Optional[builtins.str] = None,
@@ -15793,38 +16179,30 @@ class ServiceAccountProps(ServiceAccountOptions):
15793
16179
  '''Properties for defining service accounts.
15794
16180
 
15795
16181
  :param annotations: Additional annotations of the service account. Default: - no additional annotations
16182
+ :param identity_type: The identity type to use for the service account. Default: IdentityType.IRSA
15796
16183
  :param labels: Additional labels of the service account. Default: - no additional labels
15797
16184
  :param name: The name of the service account. The name of a ServiceAccount object must be a valid DNS subdomain name. https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ Default: - If no name is given, it will use the id of the resource.
15798
16185
  :param namespace: The namespace of the service account. All namespace names must be valid RFC 1123 DNS labels. https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#namespaces-and-dns Default: "default"
15799
16186
  :param cluster: The cluster to apply the patch to.
15800
16187
 
15801
- :exampleMetadata: fixture=_generated
16188
+ :exampleMetadata: infused
15802
16189
 
15803
16190
  Example::
15804
16191
 
15805
- # The code below shows an example of how to instantiate this type.
15806
- # The values are placeholders you should change.
15807
- from aws_cdk import aws_eks as eks
15808
-
15809
16192
  # cluster: eks.Cluster
15810
16193
 
15811
- service_account_props = eks.ServiceAccountProps(
15812
- cluster=cluster,
15813
16194
 
15814
- # the properties below are optional
15815
- annotations={
15816
- "annotations_key": "annotations"
15817
- },
15818
- labels={
15819
- "labels_key": "labels"
15820
- },
15821
- name="name",
15822
- namespace="namespace"
16195
+ eks.ServiceAccount(self, "ServiceAccount",
16196
+ cluster=cluster,
16197
+ name="test-sa",
16198
+ namespace="default",
16199
+ identity_type=eks.IdentityType.POD_IDENTITY
15823
16200
  )
15824
16201
  '''
15825
16202
  if __debug__:
15826
16203
  type_hints = typing.get_type_hints(_typecheckingstub__f409e147cd54788bf9d9542d66a6b0445436e408deb553426c2dca2bd73b6d76)
15827
16204
  check_type(argname="argument annotations", value=annotations, expected_type=type_hints["annotations"])
16205
+ check_type(argname="argument identity_type", value=identity_type, expected_type=type_hints["identity_type"])
15828
16206
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
15829
16207
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
15830
16208
  check_type(argname="argument namespace", value=namespace, expected_type=type_hints["namespace"])
@@ -15834,6 +16212,8 @@ class ServiceAccountProps(ServiceAccountOptions):
15834
16212
  }
15835
16213
  if annotations is not None:
15836
16214
  self._values["annotations"] = annotations
16215
+ if identity_type is not None:
16216
+ self._values["identity_type"] = identity_type
15837
16217
  if labels is not None:
15838
16218
  self._values["labels"] = labels
15839
16219
  if name is not None:
@@ -15852,6 +16232,15 @@ class ServiceAccountProps(ServiceAccountOptions):
15852
16232
  result = self._values.get("annotations")
15853
16233
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
15854
16234
 
16235
+ @builtins.property
16236
+ def identity_type(self) -> typing.Optional[IdentityType]:
16237
+ '''The identity type to use for the service account.
16238
+
16239
+ :default: IdentityType.IRSA
16240
+ '''
16241
+ result = self._values.get("identity_type")
16242
+ return typing.cast(typing.Optional[IdentityType], result)
16243
+
15855
16244
  @builtins.property
15856
16245
  def labels(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
15857
16246
  '''Additional labels of the service account.
@@ -16287,6 +16676,123 @@ class AccessPolicy(
16287
16676
  return typing.cast(builtins.str, jsii.get(self, "policy"))
16288
16677
 
16289
16678
 
16679
+ @jsii.implements(IAddon)
16680
+ class Addon(
16681
+ _Resource_45bc6135,
16682
+ metaclass=jsii.JSIIMeta,
16683
+ jsii_type="aws-cdk-lib.aws_eks.Addon",
16684
+ ):
16685
+ '''Represents an Amazon EKS Add-On.
16686
+
16687
+ :exampleMetadata: fixture=_generated
16688
+
16689
+ Example::
16690
+
16691
+ # The code below shows an example of how to instantiate this type.
16692
+ # The values are placeholders you should change.
16693
+ from aws_cdk import aws_eks as eks
16694
+
16695
+ # cluster: eks.Cluster
16696
+
16697
+ addon = eks.Addon(self, "MyAddon",
16698
+ addon_name="addonName",
16699
+ cluster=cluster,
16700
+
16701
+ # the properties below are optional
16702
+ addon_version="addonVersion"
16703
+ )
16704
+ '''
16705
+
16706
+ def __init__(
16707
+ self,
16708
+ scope: _constructs_77d1e7e8.Construct,
16709
+ id: builtins.str,
16710
+ *,
16711
+ addon_name: builtins.str,
16712
+ cluster: ICluster,
16713
+ addon_version: typing.Optional[builtins.str] = None,
16714
+ ) -> None:
16715
+ '''Creates a new Amazon EKS Add-On.
16716
+
16717
+ :param scope: The parent construct.
16718
+ :param id: The construct ID.
16719
+ :param addon_name: Name of the Add-On.
16720
+ :param cluster: The EKS cluster the Add-On is associated with.
16721
+ :param addon_version: Version of the Add-On. You can check all available versions with describe-addon-versons. 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.
16722
+ '''
16723
+ if __debug__:
16724
+ type_hints = typing.get_type_hints(_typecheckingstub__a8342124e215d4789acf852df764143c4809251dbcaa86f6b4a11860e46f830d)
16725
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
16726
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
16727
+ props = AddonProps(
16728
+ addon_name=addon_name, cluster=cluster, addon_version=addon_version
16729
+ )
16730
+
16731
+ jsii.create(self.__class__, self, [scope, id, props])
16732
+
16733
+ @jsii.member(jsii_name="fromAddonArn")
16734
+ @builtins.classmethod
16735
+ def from_addon_arn(
16736
+ cls,
16737
+ scope: _constructs_77d1e7e8.Construct,
16738
+ id: builtins.str,
16739
+ addon_arn: builtins.str,
16740
+ ) -> IAddon:
16741
+ '''Creates an ``IAddon`` from an existing addon ARN.
16742
+
16743
+ :param scope: - The parent construct.
16744
+ :param id: - The ID of the construct.
16745
+ :param addon_arn: - The ARN of the addon.
16746
+
16747
+ :return: An ``IAddon`` implementation.
16748
+ '''
16749
+ if __debug__:
16750
+ type_hints = typing.get_type_hints(_typecheckingstub__d4c2296edfe5b5c8603ac11e589a95341ba550799d11a043d66684ed98365879)
16751
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
16752
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
16753
+ check_type(argname="argument addon_arn", value=addon_arn, expected_type=type_hints["addon_arn"])
16754
+ return typing.cast(IAddon, jsii.sinvoke(cls, "fromAddonArn", [scope, id, addon_arn]))
16755
+
16756
+ @jsii.member(jsii_name="fromAddonAttributes")
16757
+ @builtins.classmethod
16758
+ def from_addon_attributes(
16759
+ cls,
16760
+ scope: _constructs_77d1e7e8.Construct,
16761
+ id: builtins.str,
16762
+ *,
16763
+ addon_name: builtins.str,
16764
+ cluster_name: builtins.str,
16765
+ ) -> IAddon:
16766
+ '''Creates an ``IAddon`` instance from the given addon attributes.
16767
+
16768
+ :param scope: - The parent construct.
16769
+ :param id: - The construct ID.
16770
+ :param addon_name: The name of the addon.
16771
+ :param cluster_name: The name of the Amazon EKS cluster the addon is associated with.
16772
+
16773
+ :return: An ``IAddon`` instance.
16774
+ '''
16775
+ if __debug__:
16776
+ type_hints = typing.get_type_hints(_typecheckingstub__8a990f16d21217e79d80780ad054930c23d18b30b674b483763b39dcdb7fdac7)
16777
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
16778
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
16779
+ attrs = AddonAttributes(addon_name=addon_name, cluster_name=cluster_name)
16780
+
16781
+ return typing.cast(IAddon, jsii.sinvoke(cls, "fromAddonAttributes", [scope, id, attrs]))
16782
+
16783
+ @builtins.property
16784
+ @jsii.member(jsii_name="addonArn")
16785
+ def addon_arn(self) -> builtins.str:
16786
+ '''Arn of the addon.'''
16787
+ return typing.cast(builtins.str, jsii.get(self, "addonArn"))
16788
+
16789
+ @builtins.property
16790
+ @jsii.member(jsii_name="addonName")
16791
+ def addon_name(self) -> builtins.str:
16792
+ '''Name of the addon.'''
16793
+ return typing.cast(builtins.str, jsii.get(self, "addonName"))
16794
+
16795
+
16290
16796
  @jsii.implements(ICluster)
16291
16797
  class Cluster(
16292
16798
  _Resource_45bc6135,
@@ -16877,6 +17383,7 @@ class Cluster(
16877
17383
  id: builtins.str,
16878
17384
  *,
16879
17385
  annotations: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
17386
+ identity_type: typing.Optional[IdentityType] = None,
16880
17387
  labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16881
17388
  name: typing.Optional[builtins.str] = None,
16882
17389
  namespace: typing.Optional[builtins.str] = None,
@@ -16885,6 +17392,7 @@ class Cluster(
16885
17392
 
16886
17393
  :param id: -
16887
17394
  :param annotations: Additional annotations of the service account. Default: - no additional annotations
17395
+ :param identity_type: The identity type to use for the service account. Default: IdentityType.IRSA
16888
17396
  :param labels: Additional labels of the service account. Default: - no additional labels
16889
17397
  :param name: The name of the service account. The name of a ServiceAccount object must be a valid DNS subdomain name. https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ Default: - If no name is given, it will use the id of the resource.
16890
17398
  :param namespace: The namespace of the service account. All namespace names must be valid RFC 1123 DNS labels. https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#namespaces-and-dns Default: "default"
@@ -16893,7 +17401,11 @@ class Cluster(
16893
17401
  type_hints = typing.get_type_hints(_typecheckingstub__a242c66f1c038c3d983fd703316e9b6709e3aed4c6773ed4ea290f2c0f5749be)
16894
17402
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
16895
17403
  options = ServiceAccountOptions(
16896
- annotations=annotations, labels=labels, name=name, namespace=namespace
17404
+ annotations=annotations,
17405
+ identity_type=identity_type,
17406
+ labels=labels,
17407
+ name=name,
17408
+ namespace=namespace,
16897
17409
  )
16898
17410
 
16899
17411
  return typing.cast(ServiceAccount, jsii.invoke(self, "addServiceAccount", [id, options]))
@@ -17210,6 +17722,18 @@ class Cluster(
17210
17722
  '''
17211
17723
  return typing.cast(typing.Optional[Nodegroup], jsii.get(self, "defaultNodegroup"))
17212
17724
 
17725
+ @builtins.property
17726
+ @jsii.member(jsii_name="eksPodIdentityAgent")
17727
+ def eks_pod_identity_agent(self) -> typing.Optional[IAddon]:
17728
+ '''Retrieves the EKS Pod Identity Agent addon for the EKS cluster.
17729
+
17730
+ The EKS Pod Identity Agent is responsible for managing the temporary credentials
17731
+ used by pods in the cluster to access AWS resources. It runs as a DaemonSet on
17732
+ each node and provides the necessary credentials to the pods based on their
17733
+ associated service account.
17734
+ '''
17735
+ return typing.cast(typing.Optional[IAddon], jsii.get(self, "eksPodIdentityAgent"))
17736
+
17213
17737
  @builtins.property
17214
17738
  @jsii.member(jsii_name="ipFamily")
17215
17739
  def ip_family(self) -> typing.Optional[IpFamily]:
@@ -19252,6 +19776,9 @@ __all__ = [
19252
19776
  "AccessPolicyProps",
19253
19777
  "AccessScope",
19254
19778
  "AccessScopeType",
19779
+ "Addon",
19780
+ "AddonAttributes",
19781
+ "AddonProps",
19255
19782
  "AlbController",
19256
19783
  "AlbControllerOptions",
19257
19784
  "AlbControllerProps",
@@ -19301,9 +19828,11 @@ __all__ = [
19301
19828
  "HelmChartProps",
19302
19829
  "IAccessEntry",
19303
19830
  "IAccessPolicy",
19831
+ "IAddon",
19304
19832
  "ICluster",
19305
19833
  "IKubectlProvider",
19306
19834
  "INodegroup",
19835
+ "IdentityType",
19307
19836
  "IngressLoadBalancerAddressOptions",
19308
19837
  "IpFamily",
19309
19838
  "KubectlProvider",
@@ -19394,6 +19923,23 @@ def _typecheckingstub__5f979c2154a9a6bd2f77cf7ff51d6f83944d3c1290fcb70cdab0b403b
19394
19923
  """Type checking stubs"""
19395
19924
  pass
19396
19925
 
19926
+ def _typecheckingstub__77d0746018f1cbe3ed090d492996344d98293f7a76446705a3ac043408c02cfe(
19927
+ *,
19928
+ addon_name: builtins.str,
19929
+ cluster_name: builtins.str,
19930
+ ) -> None:
19931
+ """Type checking stubs"""
19932
+ pass
19933
+
19934
+ def _typecheckingstub__febc9f6cb4243d885b1b1838be38d633e7c5fc6534eaaf731f00a24653ee7591(
19935
+ *,
19936
+ addon_name: builtins.str,
19937
+ cluster: ICluster,
19938
+ addon_version: typing.Optional[builtins.str] = None,
19939
+ ) -> None:
19940
+ """Type checking stubs"""
19941
+ pass
19942
+
19397
19943
  def _typecheckingstub__5e2ca421e3f17c3114d53057ba096ab3f90bd3b8ed6c2e0f75f61c88dd5aed4b(
19398
19944
  scope: _constructs_77d1e7e8.Construct,
19399
19945
  id: builtins.str,
@@ -19771,6 +20317,7 @@ def _typecheckingstub__d3e62a858014f3867f3039d1328d57223fb0d16e3fb6d1e2d79279938
19771
20317
  resources_vpc_config: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.ResourcesVpcConfigProperty, typing.Dict[builtins.str, typing.Any]]],
19772
20318
  role_arn: builtins.str,
19773
20319
  access_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.AccessConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20320
+ bootstrap_self_managed_addons: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
19774
20321
  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,
19775
20322
  kubernetes_network_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.KubernetesNetworkConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
19776
20323
  logging: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.LoggingProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -19812,6 +20359,12 @@ def _typecheckingstub__249431e71bfb6d15cdb94aea4df14d4b3371f709cb261f00cb7dc77e7
19812
20359
  """Type checking stubs"""
19813
20360
  pass
19814
20361
 
20362
+ def _typecheckingstub__1b3725246139251af199def1d548b17a13e8ddd4df825377563ea01cdea555c4(
20363
+ value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
20364
+ ) -> None:
20365
+ """Type checking stubs"""
20366
+ pass
20367
+
19815
20368
  def _typecheckingstub__b161fda542258d1cd8a20fecd3943cacecb658f19ab16b918baf49908459644c(
19816
20369
  value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnCluster.EncryptionConfigProperty]]]],
19817
20370
  ) -> None:
@@ -19939,6 +20492,7 @@ def _typecheckingstub__270f142a59c249328ab174c5b0484cfdae6e3110ab52578dbe783d6f8
19939
20492
  resources_vpc_config: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.ResourcesVpcConfigProperty, typing.Dict[builtins.str, typing.Any]]],
19940
20493
  role_arn: builtins.str,
19941
20494
  access_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.AccessConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
20495
+ bootstrap_self_managed_addons: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
19942
20496
  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,
19943
20497
  kubernetes_network_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.KubernetesNetworkConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
19944
20498
  logging: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCluster.LoggingProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -20605,6 +21159,7 @@ def _typecheckingstub__e1ebfaeb10359620b55323126554d3e31b14090625de1618808646a51
20605
21159
  id: builtins.str,
20606
21160
  *,
20607
21161
  annotations: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
21162
+ identity_type: typing.Optional[IdentityType] = None,
20608
21163
  labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
20609
21164
  name: typing.Optional[builtins.str] = None,
20610
21165
  namespace: typing.Optional[builtins.str] = None,
@@ -20896,6 +21451,7 @@ def _typecheckingstub__c59483a03e00366cbc5eed954b787cea3e7b09f1579c5c9badd84776c
20896
21451
  *,
20897
21452
  cluster: ICluster,
20898
21453
  annotations: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
21454
+ identity_type: typing.Optional[IdentityType] = None,
20899
21455
  labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
20900
21456
  name: typing.Optional[builtins.str] = None,
20901
21457
  namespace: typing.Optional[builtins.str] = None,
@@ -20912,6 +21468,7 @@ def _typecheckingstub__644b8e999f78647ce72c2476e43febe6c5bec18a337cfb7b041c87773
20912
21468
  def _typecheckingstub__c16813f7f34b0f551b6879a204a04016f3eb45d120b546a7afd47fee08551d86(
20913
21469
  *,
20914
21470
  annotations: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
21471
+ identity_type: typing.Optional[IdentityType] = None,
20915
21472
  labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
20916
21473
  name: typing.Optional[builtins.str] = None,
20917
21474
  namespace: typing.Optional[builtins.str] = None,
@@ -20922,6 +21479,7 @@ def _typecheckingstub__c16813f7f34b0f551b6879a204a04016f3eb45d120b546a7afd47fee0
20922
21479
  def _typecheckingstub__f409e147cd54788bf9d9542d66a6b0445436e408deb553426c2dca2bd73b6d76(
20923
21480
  *,
20924
21481
  annotations: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
21482
+ identity_type: typing.Optional[IdentityType] = None,
20925
21483
  labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
20926
21484
  name: typing.Optional[builtins.str] = None,
20927
21485
  namespace: typing.Optional[builtins.str] = None,
@@ -20985,6 +21543,35 @@ def _typecheckingstub__a928f26a921cd1d01ec556e4421fe3bf4a1ac17a9b598a554215bfae5
20985
21543
  """Type checking stubs"""
20986
21544
  pass
20987
21545
 
21546
+ def _typecheckingstub__a8342124e215d4789acf852df764143c4809251dbcaa86f6b4a11860e46f830d(
21547
+ scope: _constructs_77d1e7e8.Construct,
21548
+ id: builtins.str,
21549
+ *,
21550
+ addon_name: builtins.str,
21551
+ cluster: ICluster,
21552
+ addon_version: typing.Optional[builtins.str] = None,
21553
+ ) -> None:
21554
+ """Type checking stubs"""
21555
+ pass
21556
+
21557
+ def _typecheckingstub__d4c2296edfe5b5c8603ac11e589a95341ba550799d11a043d66684ed98365879(
21558
+ scope: _constructs_77d1e7e8.Construct,
21559
+ id: builtins.str,
21560
+ addon_arn: builtins.str,
21561
+ ) -> None:
21562
+ """Type checking stubs"""
21563
+ pass
21564
+
21565
+ def _typecheckingstub__8a990f16d21217e79d80780ad054930c23d18b30b674b483763b39dcdb7fdac7(
21566
+ scope: _constructs_77d1e7e8.Construct,
21567
+ id: builtins.str,
21568
+ *,
21569
+ addon_name: builtins.str,
21570
+ cluster_name: builtins.str,
21571
+ ) -> None:
21572
+ """Type checking stubs"""
21573
+ pass
21574
+
20988
21575
  def _typecheckingstub__786576ad54eacdb9ab8e92277c0fd07f813bc56d4243937f3b5a85c0c575cac9(
20989
21576
  scope: _constructs_77d1e7e8.Construct,
20990
21577
  id: builtins.str,
@@ -21174,6 +21761,7 @@ def _typecheckingstub__a242c66f1c038c3d983fd703316e9b6709e3aed4c6773ed4ea290f2c0
21174
21761
  id: builtins.str,
21175
21762
  *,
21176
21763
  annotations: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
21764
+ identity_type: typing.Optional[IdentityType] = None,
21177
21765
  labels: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
21178
21766
  name: typing.Optional[builtins.str] = None,
21179
21767
  namespace: typing.Optional[builtins.str] = None,