aws-cdk-lib 2.144.0__py3-none-any.whl → 2.146.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 (38) hide show
  1. aws_cdk/__init__.py +3 -1
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.144.0.jsii.tgz → aws-cdk-lib@2.146.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_apigatewayv2_authorizers/__init__.py +27 -0
  5. aws_cdk/aws_apigatewayv2_integrations/__init__.py +27 -0
  6. aws_cdk/aws_appsync/__init__.py +62 -0
  7. aws_cdk/aws_autoscaling/__init__.py +416 -60
  8. aws_cdk/aws_chatbot/__init__.py +38 -0
  9. aws_cdk/aws_codebuild/__init__.py +598 -19
  10. aws_cdk/aws_config/__init__.py +1305 -45
  11. aws_cdk/aws_connect/__init__.py +86 -0
  12. aws_cdk/aws_ec2/__init__.py +42 -3
  13. aws_cdk/aws_ecs/__init__.py +110 -1
  14. aws_cdk/aws_eks/__init__.py +1495 -72
  15. aws_cdk/aws_iam/__init__.py +16 -11
  16. aws_cdk/aws_lambda/__init__.py +12 -0
  17. aws_cdk/aws_logs/__init__.py +114 -8
  18. aws_cdk/aws_logs_destinations/__init__.py +11 -9
  19. aws_cdk/aws_mediaconnect/__init__.py +2 -6
  20. aws_cdk/aws_mediapackagev2/__init__.py +476 -0
  21. aws_cdk/aws_opensearchservice/__init__.py +6 -0
  22. aws_cdk/aws_pipes/__init__.py +639 -0
  23. aws_cdk/aws_rds/__init__.py +12 -0
  24. aws_cdk/aws_rolesanywhere/__init__.py +196 -0
  25. aws_cdk/aws_route53/__init__.py +3 -3
  26. aws_cdk/aws_securityhub/__init__.py +2415 -374
  27. aws_cdk/aws_securitylake/__init__.py +179 -314
  28. aws_cdk/aws_sns/__init__.py +61 -9
  29. aws_cdk/aws_sqs/__init__.py +2 -2
  30. aws_cdk/aws_stepfunctions_tasks/__init__.py +3 -3
  31. aws_cdk/pipelines/__init__.py +2 -0
  32. aws_cdk/region_info/__init__.py +6 -0
  33. {aws_cdk_lib-2.144.0.dist-info → aws_cdk_lib-2.146.0.dist-info}/METADATA +2 -2
  34. {aws_cdk_lib-2.144.0.dist-info → aws_cdk_lib-2.146.0.dist-info}/NOTICE +0 -35
  35. {aws_cdk_lib-2.144.0.dist-info → aws_cdk_lib-2.146.0.dist-info}/RECORD +38 -38
  36. {aws_cdk_lib-2.144.0.dist-info → aws_cdk_lib-2.146.0.dist-info}/LICENSE +0 -0
  37. {aws_cdk_lib-2.144.0.dist-info → aws_cdk_lib-2.146.0.dist-info}/WHEEL +0 -0
  38. {aws_cdk_lib-2.144.0.dist-info → aws_cdk_lib-2.146.0.dist-info}/top_level.txt +0 -0
@@ -42,6 +42,8 @@ In addition, the library also supports defining Kubernetes resource manifests wi
42
42
  * [Permissions and Security](#permissions-and-security)
43
43
 
44
44
  * [AWS IAM Mapping](#aws-iam-mapping)
45
+ * [Access Config](#access-config)
46
+ * [Access Entry](#access-mapping)
45
47
  * [Cluster Security Group](#cluster-security-group)
46
48
  * [Node SSH Access](#node-ssh-access)
47
49
  * [Service Accounts](#service-accounts)
@@ -74,13 +76,13 @@ This example defines an Amazon EKS cluster with the following configuration:
74
76
  * A Kubernetes pod with a container based on the [paulbouwer/hello-kubernetes](https://github.com/paulbouwer/hello-kubernetes) image.
75
77
 
76
78
  ```python
77
- from aws_cdk.lambda_layer_kubectl_v29 import KubectlV29Layer
79
+ from aws_cdk.lambda_layer_kubectl_v30 import KubectlV30Layer
78
80
 
79
81
 
80
82
  # provisioning a cluster
81
83
  cluster = eks.Cluster(self, "hello-eks",
82
- version=eks.KubernetesVersion.V1_29,
83
- kubectl_layer=KubectlV29Layer(self, "kubectl")
84
+ version=eks.KubernetesVersion.V1_30,
85
+ kubectl_layer=KubectlV30Layer(self, "kubectl")
84
86
  )
85
87
 
86
88
  # apply a kubernetes manifest to the cluster
@@ -145,7 +147,7 @@ Creating a new cluster is done using the `Cluster` or `FargateCluster` construct
145
147
 
146
148
  ```python
147
149
  eks.Cluster(self, "HelloEKS",
148
- version=eks.KubernetesVersion.V1_29
150
+ version=eks.KubernetesVersion.V1_30
149
151
  )
150
152
  ```
151
153
 
@@ -153,7 +155,7 @@ You can also use `FargateCluster` to provision a cluster that uses only fargate
153
155
 
154
156
  ```python
155
157
  eks.FargateCluster(self, "HelloEKS",
156
- version=eks.KubernetesVersion.V1_29
158
+ version=eks.KubernetesVersion.V1_30
157
159
  )
158
160
  ```
159
161
 
@@ -177,7 +179,7 @@ At cluster instantiation time, you can customize the number of instances and the
177
179
 
178
180
  ```python
179
181
  eks.Cluster(self, "HelloEKS",
180
- version=eks.KubernetesVersion.V1_29,
182
+ version=eks.KubernetesVersion.V1_30,
181
183
  default_capacity=5,
182
184
  default_capacity_instance=ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.SMALL)
183
185
  )
@@ -189,7 +191,7 @@ Additional customizations are available post instantiation. To apply them, set t
189
191
 
190
192
  ```python
191
193
  cluster = eks.Cluster(self, "HelloEKS",
192
- version=eks.KubernetesVersion.V1_29,
194
+ version=eks.KubernetesVersion.V1_30,
193
195
  default_capacity=0
194
196
  )
195
197
 
@@ -291,7 +293,7 @@ eks_cluster_node_group_role = iam.Role(self, "eksClusterNodeGroupRole",
291
293
  )
292
294
 
293
295
  cluster = eks.Cluster(self, "HelloEKS",
294
- version=eks.KubernetesVersion.V1_29,
296
+ version=eks.KubernetesVersion.V1_30,
295
297
  default_capacity=0
296
298
  )
297
299
 
@@ -403,7 +405,7 @@ successful replacement. Consider this example if you are renaming the cluster fr
403
405
  ```python
404
406
  cluster = eks.Cluster(self, "cluster-to-rename",
405
407
  cluster_name="foo", # rename this to 'bar'
406
- version=eks.KubernetesVersion.V1_29
408
+ version=eks.KubernetesVersion.V1_30
407
409
  )
408
410
 
409
411
  # allow the cluster admin role to delete the cluster 'foo'
@@ -457,7 +459,7 @@ The following code defines an Amazon EKS cluster with a default Fargate Profile
457
459
 
458
460
  ```python
459
461
  cluster = eks.FargateCluster(self, "MyCluster",
460
- version=eks.KubernetesVersion.V1_29
462
+ version=eks.KubernetesVersion.V1_30
461
463
  )
462
464
  ```
463
465
 
@@ -538,7 +540,7 @@ You can also configure the cluster to use an auto-scaling group as the default c
538
540
 
539
541
  ```python
540
542
  cluster = eks.Cluster(self, "HelloEKS",
541
- version=eks.KubernetesVersion.V1_29,
543
+ version=eks.KubernetesVersion.V1_30,
542
544
  default_capacity_type=eks.DefaultCapacityType.EC2
543
545
  )
544
546
  ```
@@ -647,7 +649,7 @@ You can configure the [cluster endpoint access](https://docs.aws.amazon.com/eks/
647
649
 
648
650
  ```python
649
651
  cluster = eks.Cluster(self, "hello-eks",
650
- version=eks.KubernetesVersion.V1_29,
652
+ version=eks.KubernetesVersion.V1_30,
651
653
  endpoint_access=eks.EndpointAccess.PRIVATE
652
654
  )
653
655
  ```
@@ -669,7 +671,7 @@ To deploy the controller on your EKS cluster, configure the `albController` prop
669
671
 
670
672
  ```python
671
673
  eks.Cluster(self, "HelloEKS",
672
- version=eks.KubernetesVersion.V1_29,
674
+ version=eks.KubernetesVersion.V1_30,
673
675
  alb_controller=eks.AlbControllerOptions(
674
676
  version=eks.AlbControllerVersion.V2_6_2
675
677
  )
@@ -713,7 +715,7 @@ You can specify the VPC of the cluster using the `vpc` and `vpcSubnets` properti
713
715
 
714
716
 
715
717
  eks.Cluster(self, "HelloEKS",
716
- version=eks.KubernetesVersion.V1_29,
718
+ version=eks.KubernetesVersion.V1_30,
717
719
  vpc=vpc,
718
720
  vpc_subnets=[ec2.SubnetSelection(subnet_type=ec2.SubnetType.PRIVATE_WITH_EGRESS)]
719
721
  )
@@ -762,7 +764,7 @@ You can configure the environment of the Cluster Handler functions by specifying
762
764
  # proxy_instance_security_group: ec2.SecurityGroup
763
765
 
764
766
  cluster = eks.Cluster(self, "hello-eks",
765
- version=eks.KubernetesVersion.V1_29,
767
+ version=eks.KubernetesVersion.V1_30,
766
768
  cluster_handler_environment={
767
769
  "https_proxy": "http://proxy.myproxy.com"
768
770
  },
@@ -803,7 +805,7 @@ for subnet in subnets:
803
805
  subnetcount = subnetcount + 1
804
806
 
805
807
  cluster = eks.Cluster(self, "hello-eks",
806
- version=eks.KubernetesVersion.V1_29,
808
+ version=eks.KubernetesVersion.V1_30,
807
809
  vpc=vpc,
808
810
  ip_family=eks.IpFamily.IP_V6,
809
811
  vpc_subnets=[ec2.SubnetSelection(subnets=vpc.public_subnets)]
@@ -838,7 +840,7 @@ You can configure the environment of this function by specifying it at cluster i
838
840
 
839
841
  ```python
840
842
  cluster = eks.Cluster(self, "hello-eks",
841
- version=eks.KubernetesVersion.V1_29,
843
+ version=eks.KubernetesVersion.V1_30,
842
844
  kubectl_environment={
843
845
  "http_proxy": "http://proxy.myproxy.com"
844
846
  }
@@ -858,12 +860,12 @@ Depending on which version of kubernetes you're targeting, you will need to use
858
860
  the `@aws-cdk/lambda-layer-kubectl-vXY` packages.
859
861
 
860
862
  ```python
861
- from aws_cdk.lambda_layer_kubectl_v29 import KubectlV29Layer
863
+ from aws_cdk.lambda_layer_kubectl_v30 import KubectlV30Layer
862
864
 
863
865
 
864
866
  cluster = eks.Cluster(self, "hello-eks",
865
- version=eks.KubernetesVersion.V1_29,
866
- kubectl_layer=KubectlV29Layer(self, "kubectl")
867
+ version=eks.KubernetesVersion.V1_30,
868
+ kubectl_layer=KubectlV30Layer(self, "kubectl")
867
869
  )
868
870
  ```
869
871
 
@@ -899,7 +901,7 @@ cluster1 = eks.Cluster(self, "MyCluster",
899
901
  kubectl_layer=layer,
900
902
  vpc=vpc,
901
903
  cluster_name="cluster-name",
902
- version=eks.KubernetesVersion.V1_29
904
+ version=eks.KubernetesVersion.V1_30
903
905
  )
904
906
 
905
907
  # or
@@ -919,7 +921,7 @@ By default, the kubectl provider is configured with 1024MiB of memory. You can u
919
921
  # vpc: ec2.Vpc
920
922
  eks.Cluster(self, "MyCluster",
921
923
  kubectl_memory=Size.gibibytes(4),
922
- version=eks.KubernetesVersion.V1_29
924
+ version=eks.KubernetesVersion.V1_30
923
925
  )
924
926
  eks.Cluster.from_cluster_attributes(self, "MyCluster",
925
927
  kubectl_memory=Size.gibibytes(4),
@@ -957,7 +959,7 @@ When you create a cluster, you can specify a `mastersRole`. The `Cluster` constr
957
959
  # role: iam.Role
958
960
 
959
961
  eks.Cluster(self, "HelloEKS",
960
- version=eks.KubernetesVersion.V1_29,
962
+ version=eks.KubernetesVersion.V1_30,
961
963
  masters_role=role
962
964
  )
963
965
  ```
@@ -1007,7 +1009,7 @@ You can use the `secretsEncryptionKey` to configure which key the cluster will u
1007
1009
  secrets_key = kms.Key(self, "SecretsKey")
1008
1010
  cluster = eks.Cluster(self, "MyCluster",
1009
1011
  secrets_encryption_key=secrets_key,
1010
- version=eks.KubernetesVersion.V1_29
1012
+ version=eks.KubernetesVersion.V1_30
1011
1013
  )
1012
1014
  ```
1013
1015
 
@@ -1017,7 +1019,7 @@ You can also use a similar configuration for running a cluster built using the F
1017
1019
  secrets_key = kms.Key(self, "SecretsKey")
1018
1020
  cluster = eks.FargateCluster(self, "MyFargateCluster",
1019
1021
  secrets_encryption_key=secrets_key,
1020
- version=eks.KubernetesVersion.V1_29
1022
+ version=eks.KubernetesVersion.V1_30
1021
1023
  )
1022
1024
  ```
1023
1025
 
@@ -1064,7 +1066,7 @@ To access the Kubernetes resources from the console, make sure your viewing prin
1064
1066
  in the `aws-auth` ConfigMap. Some options to consider:
1065
1067
 
1066
1068
  ```python
1067
- from aws_cdk.lambda_layer_kubectl_v29 import KubectlV29Layer
1069
+ from aws_cdk.lambda_layer_kubectl_v30 import KubectlV30Layer
1068
1070
  # cluster: eks.Cluster
1069
1071
  # your_current_role: iam.Role
1070
1072
  # vpc: ec2.Vpc
@@ -1082,7 +1084,7 @@ your_current_role.add_to_policy(iam.PolicyStatement(
1082
1084
 
1083
1085
  ```python
1084
1086
  # Option 2: create your custom mastersRole with scoped assumeBy arn as the Cluster prop. Switch to this role from the AWS console.
1085
- from aws_cdk.lambda_layer_kubectl_v29 import KubectlV29Layer
1087
+ from aws_cdk.lambda_layer_kubectl_v30 import KubectlV30Layer
1086
1088
  # vpc: ec2.Vpc
1087
1089
 
1088
1090
 
@@ -1092,8 +1094,8 @@ masters_role = iam.Role(self, "MastersRole",
1092
1094
 
1093
1095
  cluster = eks.Cluster(self, "EksCluster",
1094
1096
  vpc=vpc,
1095
- version=eks.KubernetesVersion.V1_29,
1096
- kubectl_layer=KubectlV29Layer(self, "KubectlLayer"),
1097
+ version=eks.KubernetesVersion.V1_30,
1098
+ kubectl_layer=KubectlV30Layer(self, "KubectlLayer"),
1097
1099
  masters_role=masters_role
1098
1100
  )
1099
1101
 
@@ -1122,6 +1124,131 @@ console_read_only_role.add_to_policy(iam.PolicyStatement(
1122
1124
  cluster.aws_auth.add_masters_role(console_read_only_role)
1123
1125
  ```
1124
1126
 
1127
+ ### Access Config
1128
+
1129
+ Amazon EKS supports three modes of authentication: `CONFIG_MAP`, `API_AND_CONFIG_MAP`, and `API`. You can enable cluster
1130
+ to use access entry APIs by using authenticationMode `API` or `API_AND_CONFIG_MAP`. Use authenticationMode `CONFIG_MAP`
1131
+ to continue using aws-auth configMap exclusively. When `API_AND_CONFIG_MAP` is enabled, the cluster will source authenticated
1132
+ AWS IAM principals from both Amazon EKS access entry APIs and the aws-auth configMap, with priority given to the access entry API.
1133
+
1134
+ To specify the `authenticationMode`:
1135
+
1136
+ ```python
1137
+ from aws_cdk.lambda_layer_kubectl_v30 import KubectlV30Layer
1138
+ # vpc: ec2.Vpc
1139
+
1140
+
1141
+ eks.Cluster(self, "Cluster",
1142
+ vpc=vpc,
1143
+ version=eks.KubernetesVersion.V1_30,
1144
+ kubectl_layer=KubectlV30Layer(self, "KubectlLayer"),
1145
+ authentication_mode=eks.AuthenticationMode.API_AND_CONFIG_MAP
1146
+ )
1147
+ ```
1148
+
1149
+ > **Note** - Switching authentication modes on an existing cluster is a one-way operation. You can switch from
1150
+ > `CONFIG_MAP` to `API_AND_CONFIG_MAP`. You can then switch from `API_AND_CONFIG_MAP` to `API`.
1151
+ > You cannot revert these operations in the opposite direction. Meaning you cannot switch back to
1152
+ > `CONFIG_MAP` or `API_AND_CONFIG_MAP` from `API`. And you cannot switch back to `CONFIG_MAP` from `API_AND_CONFIG_MAP`.
1153
+
1154
+ Read [A deep dive into simplified Amazon EKS access management controls
1155
+ ](https://aws.amazon.com/blogs/containers/a-deep-dive-into-simplified-amazon-eks-access-management-controls/) for more details.
1156
+
1157
+ You can disable granting the cluster admin permissions to the cluster creator role on bootstrapping by setting
1158
+ `bootstrapClusterCreatorAdminPermissions` to false.
1159
+
1160
+ > **Note** - Switching `bootstrapClusterCreatorAdminPermissions` on an existing cluster would cause cluster replacement and should be avoided in production.
1161
+
1162
+ ### Access Entry
1163
+
1164
+ An access entry is a cluster identity—directly linked to an AWS IAM principal user or role that is used to authenticate to
1165
+ an Amazon EKS cluster. An Amazon EKS access policy authorizes an access entry to perform specific cluster actions.
1166
+
1167
+ Access policies are Amazon EKS-specific policies that assign Kubernetes permissions to access entries. Amazon EKS supports
1168
+ only predefined and AWS managed policies. Access policies are not AWS IAM entities and are defined and managed by Amazon EKS.
1169
+ Amazon EKS access policies include permission sets that support common use cases of administration, editing, or read-only access
1170
+ to Kubernetes resources. See [Access Policy Permissions](https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html#access-policy-permissions) for more details.
1171
+
1172
+ Use `AccessPolicy` to include predefined AWS managed policies:
1173
+
1174
+ ```python
1175
+ # AmazonEKSClusterAdminPolicy with `cluster` scope
1176
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSClusterAdminPolicy",
1177
+ access_scope_type=eks.AccessScopeType.CLUSTER
1178
+ )
1179
+ # AmazonEKSAdminPolicy with `namespace` scope
1180
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSAdminPolicy",
1181
+ access_scope_type=eks.AccessScopeType.NAMESPACE,
1182
+ namespaces=["foo", "bar"]
1183
+ )
1184
+ ```
1185
+
1186
+ Use `grantAccess()` to grant the AccessPolicy to an IAM principal:
1187
+
1188
+ ```python
1189
+ from aws_cdk.lambda_layer_kubectl_v30 import KubectlV30Layer
1190
+ # vpc: ec2.Vpc
1191
+
1192
+
1193
+ cluster_admin_role = iam.Role(self, "ClusterAdminRole",
1194
+ assumed_by=iam.ArnPrincipal("arn_for_trusted_principal")
1195
+ )
1196
+
1197
+ eks_admin_role = iam.Role(self, "EKSAdminRole",
1198
+ assumed_by=iam.ArnPrincipal("arn_for_trusted_principal")
1199
+ )
1200
+
1201
+ eks_admin_view_role = iam.Role(self, "EKSAdminViewRole",
1202
+ assumed_by=iam.ArnPrincipal("arn_for_trusted_principal")
1203
+ )
1204
+
1205
+ cluster = eks.Cluster(self, "Cluster",
1206
+ vpc=vpc,
1207
+ masters_role=cluster_admin_role,
1208
+ version=eks.KubernetesVersion.V1_30,
1209
+ kubectl_layer=KubectlV30Layer(self, "KubectlLayer"),
1210
+ authentication_mode=eks.AuthenticationMode.API_AND_CONFIG_MAP
1211
+ )
1212
+
1213
+ # Cluster Admin role for this cluster
1214
+ cluster.grant_access("clusterAdminAccess", cluster_admin_role.role_arn, [
1215
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSClusterAdminPolicy",
1216
+ access_scope_type=eks.AccessScopeType.CLUSTER
1217
+ )
1218
+ ])
1219
+
1220
+ # EKS Admin role for specified namespaces of this cluster
1221
+ cluster.grant_access("eksAdminRoleAccess", eks_admin_role.role_arn, [
1222
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSAdminPolicy",
1223
+ access_scope_type=eks.AccessScopeType.NAMESPACE,
1224
+ namespaces=["foo", "bar"]
1225
+ )
1226
+ ])
1227
+
1228
+ # EKS Admin Viewer role for specified namespaces of this cluster
1229
+ cluster.grant_access("eksAdminViewRoleAccess", eks_admin_view_role.role_arn, [
1230
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSAdminViewPolicy",
1231
+ access_scope_type=eks.AccessScopeType.NAMESPACE,
1232
+ namespaces=["foo", "bar"]
1233
+ )
1234
+ ])
1235
+ ```
1236
+
1237
+ ### Migrating from ConfigMap to Access Entry
1238
+
1239
+ If the cluster is created with the `authenticationMode` property left undefined,
1240
+ it will default to `CONFIG_MAP`.
1241
+
1242
+ The update path is:
1243
+
1244
+ `undefined`(`CONFIG_MAP`) -> `API_AND_CONFIG_MAP` -> `API`
1245
+
1246
+ If you have explicitly declared `AwsAuth` resources and then try to switch to the `API` mode, which no longer supports the
1247
+ `ConfigMap`, AWS CDK will throw an error as a protective measure to prevent you from losing all the access entries in the `ConfigMap`. In this case, you will need to remove all the declared `AwsAuth` resources explicitly and define the access entries before you are allowed to transition to the `API` mode.
1248
+
1249
+ > **Note** - This is a one-way transition. Once you switch to the `API` mode,
1250
+ > you will not be able to switch back. Therefore, it is crucial to ensure that you have defined all the necessary access entries before making the switch to the `API` mode.
1251
+
1125
1252
  ### Cluster Security Group
1126
1253
 
1127
1254
  When you create an Amazon EKS cluster, a [cluster security group](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html)
@@ -1372,7 +1499,7 @@ when a cluster is defined:
1372
1499
 
1373
1500
  ```python
1374
1501
  eks.Cluster(self, "MyCluster",
1375
- version=eks.KubernetesVersion.V1_29,
1502
+ version=eks.KubernetesVersion.V1_30,
1376
1503
  prune=False
1377
1504
  )
1378
1505
  ```
@@ -1754,7 +1881,7 @@ property. For example:
1754
1881
  ```python
1755
1882
  cluster = eks.Cluster(self, "Cluster",
1756
1883
  # ...
1757
- version=eks.KubernetesVersion.V1_29,
1884
+ version=eks.KubernetesVersion.V1_30,
1758
1885
  cluster_logging=[eks.ClusterLoggingTypes.API, eks.ClusterLoggingTypes.AUTHENTICATOR, eks.ClusterLoggingTypes.SCHEDULER
1759
1886
  ]
1760
1887
  )
@@ -1839,6 +1966,573 @@ from ..aws_lambda import ILayerVersion as _ILayerVersion_5ac127c8
1839
1966
  from ..aws_s3_assets import Asset as _Asset_ac2a7e61
1840
1967
 
1841
1968
 
1969
+ @jsii.data_type(
1970
+ jsii_type="aws-cdk-lib.aws_eks.AccessEntryAttributes",
1971
+ jsii_struct_bases=[],
1972
+ name_mapping={
1973
+ "access_entry_arn": "accessEntryArn",
1974
+ "access_entry_name": "accessEntryName",
1975
+ },
1976
+ )
1977
+ class AccessEntryAttributes:
1978
+ def __init__(
1979
+ self,
1980
+ *,
1981
+ access_entry_arn: builtins.str,
1982
+ access_entry_name: builtins.str,
1983
+ ) -> None:
1984
+ '''Represents the attributes of an access entry.
1985
+
1986
+ :param access_entry_arn: The Amazon Resource Name (ARN) of the access entry.
1987
+ :param access_entry_name: The name of the access entry.
1988
+
1989
+ :exampleMetadata: fixture=_generated
1990
+
1991
+ Example::
1992
+
1993
+ # The code below shows an example of how to instantiate this type.
1994
+ # The values are placeholders you should change.
1995
+ from aws_cdk import aws_eks as eks
1996
+
1997
+ access_entry_attributes = eks.AccessEntryAttributes(
1998
+ access_entry_arn="accessEntryArn",
1999
+ access_entry_name="accessEntryName"
2000
+ )
2001
+ '''
2002
+ if __debug__:
2003
+ type_hints = typing.get_type_hints(_typecheckingstub__ea57d074f938dd093d38b977c20869681c2abd3bacc2931046328147dc4d8d72)
2004
+ check_type(argname="argument access_entry_arn", value=access_entry_arn, expected_type=type_hints["access_entry_arn"])
2005
+ check_type(argname="argument access_entry_name", value=access_entry_name, expected_type=type_hints["access_entry_name"])
2006
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2007
+ "access_entry_arn": access_entry_arn,
2008
+ "access_entry_name": access_entry_name,
2009
+ }
2010
+
2011
+ @builtins.property
2012
+ def access_entry_arn(self) -> builtins.str:
2013
+ '''The Amazon Resource Name (ARN) of the access entry.'''
2014
+ result = self._values.get("access_entry_arn")
2015
+ assert result is not None, "Required property 'access_entry_arn' is missing"
2016
+ return typing.cast(builtins.str, result)
2017
+
2018
+ @builtins.property
2019
+ def access_entry_name(self) -> builtins.str:
2020
+ '''The name of the access entry.'''
2021
+ result = self._values.get("access_entry_name")
2022
+ assert result is not None, "Required property 'access_entry_name' is missing"
2023
+ return typing.cast(builtins.str, result)
2024
+
2025
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2026
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2027
+
2028
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2029
+ return not (rhs == self)
2030
+
2031
+ def __repr__(self) -> str:
2032
+ return "AccessEntryAttributes(%s)" % ", ".join(
2033
+ k + "=" + repr(v) for k, v in self._values.items()
2034
+ )
2035
+
2036
+
2037
+ @jsii.data_type(
2038
+ jsii_type="aws-cdk-lib.aws_eks.AccessEntryProps",
2039
+ jsii_struct_bases=[],
2040
+ name_mapping={
2041
+ "access_policies": "accessPolicies",
2042
+ "cluster": "cluster",
2043
+ "principal": "principal",
2044
+ "access_entry_name": "accessEntryName",
2045
+ "access_entry_type": "accessEntryType",
2046
+ },
2047
+ )
2048
+ class AccessEntryProps:
2049
+ def __init__(
2050
+ self,
2051
+ *,
2052
+ access_policies: typing.Sequence["IAccessPolicy"],
2053
+ cluster: "ICluster",
2054
+ principal: builtins.str,
2055
+ access_entry_name: typing.Optional[builtins.str] = None,
2056
+ access_entry_type: typing.Optional["AccessEntryType"] = None,
2057
+ ) -> None:
2058
+ '''Represents the properties required to create an Amazon EKS access entry.
2059
+
2060
+ :param access_policies: The access policies that define the permissions and scope for the access entry.
2061
+ :param cluster: The Amazon EKS cluster to which the access entry applies.
2062
+ :param principal: The Amazon Resource Name (ARN) of the principal (user or role) to associate the access entry with.
2063
+ :param access_entry_name: The name of the AccessEntry. Default: - No access entry name is provided
2064
+ :param access_entry_type: The type of the AccessEntry. Default: STANDARD
2065
+
2066
+ :exampleMetadata: fixture=_generated
2067
+
2068
+ Example::
2069
+
2070
+ # The code below shows an example of how to instantiate this type.
2071
+ # The values are placeholders you should change.
2072
+ from aws_cdk import aws_eks as eks
2073
+
2074
+ # access_policy: eks.AccessPolicy
2075
+ # cluster: eks.Cluster
2076
+
2077
+ access_entry_props = eks.AccessEntryProps(
2078
+ access_policies=[access_policy],
2079
+ cluster=cluster,
2080
+ principal="principal",
2081
+
2082
+ # the properties below are optional
2083
+ access_entry_name="accessEntryName",
2084
+ access_entry_type=eks.AccessEntryType.STANDARD
2085
+ )
2086
+ '''
2087
+ if __debug__:
2088
+ type_hints = typing.get_type_hints(_typecheckingstub__0cc467f068aa2e977dd81e9c0227cfe45f7381ea6d31cea9c6f7f80e6d83e048)
2089
+ check_type(argname="argument access_policies", value=access_policies, expected_type=type_hints["access_policies"])
2090
+ check_type(argname="argument cluster", value=cluster, expected_type=type_hints["cluster"])
2091
+ check_type(argname="argument principal", value=principal, expected_type=type_hints["principal"])
2092
+ check_type(argname="argument access_entry_name", value=access_entry_name, expected_type=type_hints["access_entry_name"])
2093
+ check_type(argname="argument access_entry_type", value=access_entry_type, expected_type=type_hints["access_entry_type"])
2094
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2095
+ "access_policies": access_policies,
2096
+ "cluster": cluster,
2097
+ "principal": principal,
2098
+ }
2099
+ if access_entry_name is not None:
2100
+ self._values["access_entry_name"] = access_entry_name
2101
+ if access_entry_type is not None:
2102
+ self._values["access_entry_type"] = access_entry_type
2103
+
2104
+ @builtins.property
2105
+ def access_policies(self) -> typing.List["IAccessPolicy"]:
2106
+ '''The access policies that define the permissions and scope for the access entry.'''
2107
+ result = self._values.get("access_policies")
2108
+ assert result is not None, "Required property 'access_policies' is missing"
2109
+ return typing.cast(typing.List["IAccessPolicy"], result)
2110
+
2111
+ @builtins.property
2112
+ def cluster(self) -> "ICluster":
2113
+ '''The Amazon EKS cluster to which the access entry applies.'''
2114
+ result = self._values.get("cluster")
2115
+ assert result is not None, "Required property 'cluster' is missing"
2116
+ return typing.cast("ICluster", result)
2117
+
2118
+ @builtins.property
2119
+ def principal(self) -> builtins.str:
2120
+ '''The Amazon Resource Name (ARN) of the principal (user or role) to associate the access entry with.'''
2121
+ result = self._values.get("principal")
2122
+ assert result is not None, "Required property 'principal' is missing"
2123
+ return typing.cast(builtins.str, result)
2124
+
2125
+ @builtins.property
2126
+ def access_entry_name(self) -> typing.Optional[builtins.str]:
2127
+ '''The name of the AccessEntry.
2128
+
2129
+ :default: - No access entry name is provided
2130
+ '''
2131
+ result = self._values.get("access_entry_name")
2132
+ return typing.cast(typing.Optional[builtins.str], result)
2133
+
2134
+ @builtins.property
2135
+ def access_entry_type(self) -> typing.Optional["AccessEntryType"]:
2136
+ '''The type of the AccessEntry.
2137
+
2138
+ :default: STANDARD
2139
+ '''
2140
+ result = self._values.get("access_entry_type")
2141
+ return typing.cast(typing.Optional["AccessEntryType"], result)
2142
+
2143
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2144
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2145
+
2146
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2147
+ return not (rhs == self)
2148
+
2149
+ def __repr__(self) -> str:
2150
+ return "AccessEntryProps(%s)" % ", ".join(
2151
+ k + "=" + repr(v) for k, v in self._values.items()
2152
+ )
2153
+
2154
+
2155
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_eks.AccessEntryType")
2156
+ class AccessEntryType(enum.Enum):
2157
+ '''Represents the different types of access entries that can be used in an Amazon EKS cluster.
2158
+
2159
+ :enum: true
2160
+ '''
2161
+
2162
+ STANDARD = "STANDARD"
2163
+ '''Represents a standard access entry.'''
2164
+ FARGATE_LINUX = "FARGATE_LINUX"
2165
+ '''Represents a Fargate Linux access entry.'''
2166
+ EC2_LINUX = "EC2_LINUX"
2167
+ '''Represents an EC2 Linux access entry.'''
2168
+ EC2_WINDOWS = "EC2_WINDOWS"
2169
+ '''Represents an EC2 Windows access entry.'''
2170
+
2171
+
2172
+ class AccessPolicyArn(
2173
+ metaclass=jsii.JSIIMeta,
2174
+ jsii_type="aws-cdk-lib.aws_eks.AccessPolicyArn",
2175
+ ):
2176
+ '''Represents an Amazon EKS Access Policy ARN.
2177
+
2178
+ Amazon EKS Access Policies are used to control access to Amazon EKS clusters.
2179
+
2180
+ :see: https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html
2181
+ :exampleMetadata: fixture=_generated
2182
+
2183
+ Example::
2184
+
2185
+ # The code below shows an example of how to instantiate this type.
2186
+ # The values are placeholders you should change.
2187
+ from aws_cdk import aws_eks as eks
2188
+
2189
+ access_policy_arn = eks.AccessPolicyArn.AMAZON_EKS_ADMIN_POLICY
2190
+ '''
2191
+
2192
+ def __init__(self, policy_name: builtins.str) -> None:
2193
+ '''Constructs a new instance of the ``AccessEntry`` class.
2194
+
2195
+ :param policy_name: - The name of the Amazon EKS access policy. This is used to construct the policy ARN.
2196
+ '''
2197
+ if __debug__:
2198
+ type_hints = typing.get_type_hints(_typecheckingstub__0ac946189967c669f9d1c47c0772f99ed1ce20197e6c76e4496836bbe19d2a72)
2199
+ check_type(argname="argument policy_name", value=policy_name, expected_type=type_hints["policy_name"])
2200
+ jsii.create(self.__class__, self, [policy_name])
2201
+
2202
+ @jsii.member(jsii_name="of")
2203
+ @builtins.classmethod
2204
+ def of(cls, policy_name: builtins.str) -> "AccessPolicyArn":
2205
+ '''Creates a new instance of the AccessPolicy class with the specified policy name.
2206
+
2207
+ :param policy_name: The name of the access policy.
2208
+
2209
+ :return: A new instance of the AccessPolicy class.
2210
+ '''
2211
+ if __debug__:
2212
+ type_hints = typing.get_type_hints(_typecheckingstub__23236f8d1dae1650ef58623c900288d55afe1fd4ead26b7b1aff290d073de854)
2213
+ check_type(argname="argument policy_name", value=policy_name, expected_type=type_hints["policy_name"])
2214
+ return typing.cast("AccessPolicyArn", jsii.sinvoke(cls, "of", [policy_name]))
2215
+
2216
+ @jsii.python.classproperty
2217
+ @jsii.member(jsii_name="AMAZON_EKS_ADMIN_POLICY")
2218
+ def AMAZON_EKS_ADMIN_POLICY(cls) -> "AccessPolicyArn":
2219
+ '''The Amazon EKS Admin Policy.
2220
+
2221
+ This access policy includes permissions that grant an IAM principal
2222
+ most permissions to resources. When associated to an access entry, its access scope is typically
2223
+ one or more Kubernetes namespaces.
2224
+ '''
2225
+ return typing.cast("AccessPolicyArn", jsii.sget(cls, "AMAZON_EKS_ADMIN_POLICY"))
2226
+
2227
+ @jsii.python.classproperty
2228
+ @jsii.member(jsii_name="AMAZON_EKS_ADMIN_VIEW_POLICY")
2229
+ def AMAZON_EKS_ADMIN_VIEW_POLICY(cls) -> "AccessPolicyArn":
2230
+ '''The Amazon EKS Admin View Policy.
2231
+
2232
+ This access policy includes permissions that grant an IAM principal
2233
+ access to list/view all resources in a cluster.
2234
+ '''
2235
+ return typing.cast("AccessPolicyArn", jsii.sget(cls, "AMAZON_EKS_ADMIN_VIEW_POLICY"))
2236
+
2237
+ @jsii.python.classproperty
2238
+ @jsii.member(jsii_name="AMAZON_EKS_CLUSTER_ADMIN_POLICY")
2239
+ def AMAZON_EKS_CLUSTER_ADMIN_POLICY(cls) -> "AccessPolicyArn":
2240
+ '''The Amazon EKS Cluster Admin Policy.
2241
+
2242
+ This access policy includes permissions that grant an IAM
2243
+ principal administrator access to a cluster. When associated to an access entry, its access scope
2244
+ is typically the cluster, rather than a Kubernetes namespace.
2245
+ '''
2246
+ return typing.cast("AccessPolicyArn", jsii.sget(cls, "AMAZON_EKS_CLUSTER_ADMIN_POLICY"))
2247
+
2248
+ @jsii.python.classproperty
2249
+ @jsii.member(jsii_name="AMAZON_EKS_EDIT_POLICY")
2250
+ def AMAZON_EKS_EDIT_POLICY(cls) -> "AccessPolicyArn":
2251
+ '''The Amazon EKS Edit Policy.
2252
+
2253
+ This access policy includes permissions that allow an IAM principal
2254
+ to edit most Kubernetes resources.
2255
+ '''
2256
+ return typing.cast("AccessPolicyArn", jsii.sget(cls, "AMAZON_EKS_EDIT_POLICY"))
2257
+
2258
+ @jsii.python.classproperty
2259
+ @jsii.member(jsii_name="AMAZON_EKS_VIEW_POLICY")
2260
+ def AMAZON_EKS_VIEW_POLICY(cls) -> "AccessPolicyArn":
2261
+ '''The Amazon EKS View Policy.
2262
+
2263
+ This access policy includes permissions that grant an IAM principal
2264
+ access to list/view all resources in a cluster.
2265
+ '''
2266
+ return typing.cast("AccessPolicyArn", jsii.sget(cls, "AMAZON_EKS_VIEW_POLICY"))
2267
+
2268
+ @builtins.property
2269
+ @jsii.member(jsii_name="policyArn")
2270
+ def policy_arn(self) -> builtins.str:
2271
+ '''The Amazon Resource Name (ARN) of the access policy.'''
2272
+ return typing.cast(builtins.str, jsii.get(self, "policyArn"))
2273
+
2274
+ @builtins.property
2275
+ @jsii.member(jsii_name="policyName")
2276
+ def policy_name(self) -> builtins.str:
2277
+ '''- The name of the Amazon EKS access policy.
2278
+
2279
+ This is used to construct the policy ARN.
2280
+ '''
2281
+ return typing.cast(builtins.str, jsii.get(self, "policyName"))
2282
+
2283
+
2284
+ @jsii.data_type(
2285
+ jsii_type="aws-cdk-lib.aws_eks.AccessPolicyNameOptions",
2286
+ jsii_struct_bases=[],
2287
+ name_mapping={"access_scope_type": "accessScopeType", "namespaces": "namespaces"},
2288
+ )
2289
+ class AccessPolicyNameOptions:
2290
+ def __init__(
2291
+ self,
2292
+ *,
2293
+ access_scope_type: "AccessScopeType",
2294
+ namespaces: typing.Optional[typing.Sequence[builtins.str]] = None,
2295
+ ) -> None:
2296
+ '''Represents the options required to create an Amazon EKS Access Policy using the ``fromAccessPolicyName()`` method.
2297
+
2298
+ :param access_scope_type: The scope of the access policy. This determines the level of access granted by the policy.
2299
+ :param namespaces: An optional array of Kubernetes namespaces to which the access policy applies. Default: - no specific namespaces for this scope
2300
+
2301
+ :exampleMetadata: infused
2302
+
2303
+ Example::
2304
+
2305
+ # AmazonEKSClusterAdminPolicy with `cluster` scope
2306
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSClusterAdminPolicy",
2307
+ access_scope_type=eks.AccessScopeType.CLUSTER
2308
+ )
2309
+ # AmazonEKSAdminPolicy with `namespace` scope
2310
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSAdminPolicy",
2311
+ access_scope_type=eks.AccessScopeType.NAMESPACE,
2312
+ namespaces=["foo", "bar"]
2313
+ )
2314
+ '''
2315
+ if __debug__:
2316
+ type_hints = typing.get_type_hints(_typecheckingstub__249ef277acd24f14314e76608ae6685b8ec176bb0872ba8327c446714e5afaee)
2317
+ check_type(argname="argument access_scope_type", value=access_scope_type, expected_type=type_hints["access_scope_type"])
2318
+ check_type(argname="argument namespaces", value=namespaces, expected_type=type_hints["namespaces"])
2319
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2320
+ "access_scope_type": access_scope_type,
2321
+ }
2322
+ if namespaces is not None:
2323
+ self._values["namespaces"] = namespaces
2324
+
2325
+ @builtins.property
2326
+ def access_scope_type(self) -> "AccessScopeType":
2327
+ '''The scope of the access policy.
2328
+
2329
+ This determines the level of access granted by the policy.
2330
+ '''
2331
+ result = self._values.get("access_scope_type")
2332
+ assert result is not None, "Required property 'access_scope_type' is missing"
2333
+ return typing.cast("AccessScopeType", result)
2334
+
2335
+ @builtins.property
2336
+ def namespaces(self) -> typing.Optional[typing.List[builtins.str]]:
2337
+ '''An optional array of Kubernetes namespaces to which the access policy applies.
2338
+
2339
+ :default: - no specific namespaces for this scope
2340
+ '''
2341
+ result = self._values.get("namespaces")
2342
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2343
+
2344
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2345
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2346
+
2347
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2348
+ return not (rhs == self)
2349
+
2350
+ def __repr__(self) -> str:
2351
+ return "AccessPolicyNameOptions(%s)" % ", ".join(
2352
+ k + "=" + repr(v) for k, v in self._values.items()
2353
+ )
2354
+
2355
+
2356
+ @jsii.data_type(
2357
+ jsii_type="aws-cdk-lib.aws_eks.AccessPolicyProps",
2358
+ jsii_struct_bases=[],
2359
+ name_mapping={"access_scope": "accessScope", "policy": "policy"},
2360
+ )
2361
+ class AccessPolicyProps:
2362
+ def __init__(
2363
+ self,
2364
+ *,
2365
+ access_scope: typing.Union["AccessScope", typing.Dict[builtins.str, typing.Any]],
2366
+ policy: AccessPolicyArn,
2367
+ ) -> None:
2368
+ '''Properties for configuring an Amazon EKS Access Policy.
2369
+
2370
+ :param access_scope: The scope of the access policy, which determines the level of access granted.
2371
+ :param policy: The access policy itself, which defines the specific permissions.
2372
+
2373
+ :exampleMetadata: fixture=_generated
2374
+
2375
+ Example::
2376
+
2377
+ # The code below shows an example of how to instantiate this type.
2378
+ # The values are placeholders you should change.
2379
+ from aws_cdk import aws_eks as eks
2380
+
2381
+ # access_policy_arn: eks.AccessPolicyArn
2382
+
2383
+ access_policy_props = eks.AccessPolicyProps(
2384
+ access_scope=eks.AccessScope(
2385
+ type=eks.AccessScopeType.NAMESPACE,
2386
+
2387
+ # the properties below are optional
2388
+ namespaces=["namespaces"]
2389
+ ),
2390
+ policy=access_policy_arn
2391
+ )
2392
+ '''
2393
+ if isinstance(access_scope, dict):
2394
+ access_scope = AccessScope(**access_scope)
2395
+ if __debug__:
2396
+ type_hints = typing.get_type_hints(_typecheckingstub__d76ffc136ce61df3ec4331aefef6219d2ab1e0d4a6c6da1cd604f5d3a29a1c20)
2397
+ check_type(argname="argument access_scope", value=access_scope, expected_type=type_hints["access_scope"])
2398
+ check_type(argname="argument policy", value=policy, expected_type=type_hints["policy"])
2399
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2400
+ "access_scope": access_scope,
2401
+ "policy": policy,
2402
+ }
2403
+
2404
+ @builtins.property
2405
+ def access_scope(self) -> "AccessScope":
2406
+ '''The scope of the access policy, which determines the level of access granted.'''
2407
+ result = self._values.get("access_scope")
2408
+ assert result is not None, "Required property 'access_scope' is missing"
2409
+ return typing.cast("AccessScope", result)
2410
+
2411
+ @builtins.property
2412
+ def policy(self) -> AccessPolicyArn:
2413
+ '''The access policy itself, which defines the specific permissions.'''
2414
+ result = self._values.get("policy")
2415
+ assert result is not None, "Required property 'policy' is missing"
2416
+ return typing.cast(AccessPolicyArn, result)
2417
+
2418
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2419
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2420
+
2421
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2422
+ return not (rhs == self)
2423
+
2424
+ def __repr__(self) -> str:
2425
+ return "AccessPolicyProps(%s)" % ", ".join(
2426
+ k + "=" + repr(v) for k, v in self._values.items()
2427
+ )
2428
+
2429
+
2430
+ @jsii.data_type(
2431
+ jsii_type="aws-cdk-lib.aws_eks.AccessScope",
2432
+ jsii_struct_bases=[],
2433
+ name_mapping={"type": "type", "namespaces": "namespaces"},
2434
+ )
2435
+ class AccessScope:
2436
+ def __init__(
2437
+ self,
2438
+ *,
2439
+ type: "AccessScopeType",
2440
+ namespaces: typing.Optional[typing.Sequence[builtins.str]] = None,
2441
+ ) -> None:
2442
+ '''Represents the scope of an access policy.
2443
+
2444
+ The scope defines the namespaces or cluster-level access granted by the policy.
2445
+
2446
+ :param type: The scope type of the policy, either 'namespace' or 'cluster'.
2447
+ :param namespaces: A Kubernetes namespace that an access policy is scoped to. A value is required if you specified namespace for Type. Default: - no specific namespaces for this scope.
2448
+
2449
+ :interface: AccessScope
2450
+ :property: {AccessScopeType} type - The scope type of the policy, either 'namespace' or 'cluster'.
2451
+ :exampleMetadata: fixture=_generated
2452
+
2453
+ Example::
2454
+
2455
+ # The code below shows an example of how to instantiate this type.
2456
+ # The values are placeholders you should change.
2457
+ from aws_cdk import aws_eks as eks
2458
+
2459
+ access_scope = eks.AccessScope(
2460
+ type=eks.AccessScopeType.NAMESPACE,
2461
+
2462
+ # the properties below are optional
2463
+ namespaces=["namespaces"]
2464
+ )
2465
+ '''
2466
+ if __debug__:
2467
+ type_hints = typing.get_type_hints(_typecheckingstub__5f979c2154a9a6bd2f77cf7ff51d6f83944d3c1290fcb70cdab0b403b6a0a8f8)
2468
+ check_type(argname="argument type", value=type, expected_type=type_hints["type"])
2469
+ check_type(argname="argument namespaces", value=namespaces, expected_type=type_hints["namespaces"])
2470
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2471
+ "type": type,
2472
+ }
2473
+ if namespaces is not None:
2474
+ self._values["namespaces"] = namespaces
2475
+
2476
+ @builtins.property
2477
+ def type(self) -> "AccessScopeType":
2478
+ '''The scope type of the policy, either 'namespace' or 'cluster'.'''
2479
+ result = self._values.get("type")
2480
+ assert result is not None, "Required property 'type' is missing"
2481
+ return typing.cast("AccessScopeType", result)
2482
+
2483
+ @builtins.property
2484
+ def namespaces(self) -> typing.Optional[typing.List[builtins.str]]:
2485
+ '''A Kubernetes namespace that an access policy is scoped to.
2486
+
2487
+ A value is required if you specified
2488
+ namespace for Type.
2489
+
2490
+ :default: - no specific namespaces for this scope.
2491
+ '''
2492
+ result = self._values.get("namespaces")
2493
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2494
+
2495
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2496
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2497
+
2498
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2499
+ return not (rhs == self)
2500
+
2501
+ def __repr__(self) -> str:
2502
+ return "AccessScope(%s)" % ", ".join(
2503
+ k + "=" + repr(v) for k, v in self._values.items()
2504
+ )
2505
+
2506
+
2507
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_eks.AccessScopeType")
2508
+ class AccessScopeType(enum.Enum):
2509
+ '''Represents the scope type of an access policy.
2510
+
2511
+ The scope type determines the level of access granted by the policy.
2512
+
2513
+ :enum: true
2514
+ :export: true
2515
+ :exampleMetadata: infused
2516
+
2517
+ Example::
2518
+
2519
+ # AmazonEKSClusterAdminPolicy with `cluster` scope
2520
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSClusterAdminPolicy",
2521
+ access_scope_type=eks.AccessScopeType.CLUSTER
2522
+ )
2523
+ # AmazonEKSAdminPolicy with `namespace` scope
2524
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSAdminPolicy",
2525
+ access_scope_type=eks.AccessScopeType.NAMESPACE,
2526
+ namespaces=["foo", "bar"]
2527
+ )
2528
+ '''
2529
+
2530
+ NAMESPACE = "NAMESPACE"
2531
+ '''The policy applies to a specific namespace within the cluster.'''
2532
+ CLUSTER = "CLUSTER"
2533
+ '''The policy applies to the entire cluster.'''
2534
+
2535
+
1842
2536
  class AlbController(
1843
2537
  _constructs_77d1e7e8.Construct,
1844
2538
  metaclass=jsii.JSIIMeta,
@@ -1958,7 +2652,7 @@ class AlbControllerOptions:
1958
2652
  Example::
1959
2653
 
1960
2654
  eks.Cluster(self, "HelloEKS",
1961
- version=eks.KubernetesVersion.V1_29,
2655
+ version=eks.KubernetesVersion.V1_30,
1962
2656
  alb_controller=eks.AlbControllerOptions(
1963
2657
  version=eks.AlbControllerVersion.V2_6_2
1964
2658
  )
@@ -2151,7 +2845,7 @@ class AlbControllerVersion(
2151
2845
  Example::
2152
2846
 
2153
2847
  eks.Cluster(self, "HelloEKS",
2154
- version=eks.KubernetesVersion.V1_29,
2848
+ version=eks.KubernetesVersion.V1_30,
2155
2849
  alb_controller=eks.AlbControllerOptions(
2156
2850
  version=eks.AlbControllerVersion.V2_6_2
2157
2851
  )
@@ -2386,6 +3080,34 @@ class AlbScheme(enum.Enum):
2386
3080
  '''An internet-facing load balancer has a publicly resolvable DNS name, so it can route requests from clients over the internet to the EC2 instances that are registered with the load balancer.'''
2387
3081
 
2388
3082
 
3083
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_eks.AuthenticationMode")
3084
+ class AuthenticationMode(enum.Enum):
3085
+ '''Represents the authentication mode for an Amazon EKS cluster.
3086
+
3087
+ :exampleMetadata: infused
3088
+
3089
+ Example::
3090
+
3091
+ from aws_cdk.lambda_layer_kubectl_v30 import KubectlV30Layer
3092
+ # vpc: ec2.Vpc
3093
+
3094
+
3095
+ eks.Cluster(self, "Cluster",
3096
+ vpc=vpc,
3097
+ version=eks.KubernetesVersion.V1_30,
3098
+ kubectl_layer=KubectlV30Layer(self, "KubectlLayer"),
3099
+ authentication_mode=eks.AuthenticationMode.API_AND_CONFIG_MAP
3100
+ )
3101
+ '''
3102
+
3103
+ CONFIG_MAP = "CONFIG_MAP"
3104
+ '''Authenticates using a Kubernetes ConfigMap.'''
3105
+ API_AND_CONFIG_MAP = "API_AND_CONFIG_MAP"
3106
+ '''Authenticates using both the Kubernetes API server and a ConfigMap.'''
3107
+ API = "API"
3108
+ '''Authenticates using the Kubernetes API server.'''
3109
+
3110
+
2389
3111
  @jsii.data_type(
2390
3112
  jsii_type="aws-cdk-lib.aws_eks.AutoScalingGroupCapacityOptions",
2391
3113
  jsii_struct_bases=[_CommonAutoScalingGroupProps_808bbf2d],
@@ -4207,6 +4929,10 @@ class CfnAddon(
4207
4929
  # the properties below are optional
4208
4930
  addon_version="addonVersion",
4209
4931
  configuration_values="configurationValues",
4932
+ pod_identity_associations=[eks.CfnAddon.PodIdentityAssociationProperty(
4933
+ role_arn="roleArn",
4934
+ service_account="serviceAccount"
4935
+ )],
4210
4936
  preserve_on_delete=False,
4211
4937
  resolve_conflicts="resolveConflicts",
4212
4938
  service_account_role_arn="serviceAccountRoleArn",
@@ -4226,6 +4952,7 @@ class CfnAddon(
4226
4952
  cluster_name: builtins.str,
4227
4953
  addon_version: typing.Optional[builtins.str] = None,
4228
4954
  configuration_values: typing.Optional[builtins.str] = None,
4955
+ 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,
4229
4956
  preserve_on_delete: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
4230
4957
  resolve_conflicts: typing.Optional[builtins.str] = None,
4231
4958
  service_account_role_arn: typing.Optional[builtins.str] = None,
@@ -4238,6 +4965,7 @@ class CfnAddon(
4238
4965
  :param cluster_name: The name of your cluster.
4239
4966
  :param addon_version: The version of the add-on.
4240
4967
  :param configuration_values: The configuration values that you provided.
4968
+ :param pod_identity_associations: An array of pod identities to apply to this add-on.
4241
4969
  :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.
4242
4970
  :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.
4243
4971
  :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* .
@@ -4252,6 +4980,7 @@ class CfnAddon(
4252
4980
  cluster_name=cluster_name,
4253
4981
  addon_version=addon_version,
4254
4982
  configuration_values=configuration_values,
4983
+ pod_identity_associations=pod_identity_associations,
4255
4984
  preserve_on_delete=preserve_on_delete,
4256
4985
  resolve_conflicts=resolve_conflicts,
4257
4986
  service_account_role_arn=service_account_role_arn,
@@ -4362,6 +5091,24 @@ class CfnAddon(
4362
5091
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
4363
5092
  jsii.set(self, "configurationValues", value)
4364
5093
 
5094
+ @builtins.property
5095
+ @jsii.member(jsii_name="podIdentityAssociations")
5096
+ def pod_identity_associations(
5097
+ self,
5098
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAddon.PodIdentityAssociationProperty"]]]]:
5099
+ '''An array of pod identities to apply to this add-on.'''
5100
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAddon.PodIdentityAssociationProperty"]]]], jsii.get(self, "podIdentityAssociations"))
5101
+
5102
+ @pod_identity_associations.setter
5103
+ def pod_identity_associations(
5104
+ self,
5105
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAddon.PodIdentityAssociationProperty"]]]],
5106
+ ) -> None:
5107
+ if __debug__:
5108
+ type_hints = typing.get_type_hints(_typecheckingstub__04a430658e28600fba10a8c3e5edab2978904829dda6f2c70e9cca8560f7e400)
5109
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
5110
+ jsii.set(self, "podIdentityAssociations", value)
5111
+
4365
5112
  @builtins.property
4366
5113
  @jsii.member(jsii_name="preserveOnDelete")
4367
5114
  def preserve_on_delete(
@@ -4419,6 +5166,77 @@ class CfnAddon(
4419
5166
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
4420
5167
  jsii.set(self, "tagsRaw", value)
4421
5168
 
5169
+ @jsii.data_type(
5170
+ jsii_type="aws-cdk-lib.aws_eks.CfnAddon.PodIdentityAssociationProperty",
5171
+ jsii_struct_bases=[],
5172
+ name_mapping={"role_arn": "roleArn", "service_account": "serviceAccount"},
5173
+ )
5174
+ class PodIdentityAssociationProperty:
5175
+ def __init__(
5176
+ self,
5177
+ *,
5178
+ role_arn: builtins.str,
5179
+ service_account: builtins.str,
5180
+ ) -> None:
5181
+ '''A pod identity to associate with an add-on.
5182
+
5183
+ :param role_arn: The IAM role ARN that the pod identity association is created for.
5184
+ :param service_account: The Kubernetes service account that the pod identity association is created for.
5185
+
5186
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-addon-podidentityassociation.html
5187
+ :exampleMetadata: fixture=_generated
5188
+
5189
+ Example::
5190
+
5191
+ # The code below shows an example of how to instantiate this type.
5192
+ # The values are placeholders you should change.
5193
+ from aws_cdk import aws_eks as eks
5194
+
5195
+ pod_identity_association_property = eks.CfnAddon.PodIdentityAssociationProperty(
5196
+ role_arn="roleArn",
5197
+ service_account="serviceAccount"
5198
+ )
5199
+ '''
5200
+ if __debug__:
5201
+ type_hints = typing.get_type_hints(_typecheckingstub__3925c850dd0d0ad3b9faeea87aafbe69220a7bf33d95af5527715674625c9891)
5202
+ check_type(argname="argument role_arn", value=role_arn, expected_type=type_hints["role_arn"])
5203
+ check_type(argname="argument service_account", value=service_account, expected_type=type_hints["service_account"])
5204
+ self._values: typing.Dict[builtins.str, typing.Any] = {
5205
+ "role_arn": role_arn,
5206
+ "service_account": service_account,
5207
+ }
5208
+
5209
+ @builtins.property
5210
+ def role_arn(self) -> builtins.str:
5211
+ '''The IAM role ARN that the pod identity association is created for.
5212
+
5213
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-addon-podidentityassociation.html#cfn-eks-addon-podidentityassociation-rolearn
5214
+ '''
5215
+ result = self._values.get("role_arn")
5216
+ assert result is not None, "Required property 'role_arn' is missing"
5217
+ return typing.cast(builtins.str, result)
5218
+
5219
+ @builtins.property
5220
+ def service_account(self) -> builtins.str:
5221
+ '''The Kubernetes service account that the pod identity association is created for.
5222
+
5223
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-addon-podidentityassociation.html#cfn-eks-addon-podidentityassociation-serviceaccount
5224
+ '''
5225
+ result = self._values.get("service_account")
5226
+ assert result is not None, "Required property 'service_account' is missing"
5227
+ return typing.cast(builtins.str, result)
5228
+
5229
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
5230
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
5231
+
5232
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
5233
+ return not (rhs == self)
5234
+
5235
+ def __repr__(self) -> str:
5236
+ return "PodIdentityAssociationProperty(%s)" % ", ".join(
5237
+ k + "=" + repr(v) for k, v in self._values.items()
5238
+ )
5239
+
4422
5240
 
4423
5241
  @jsii.data_type(
4424
5242
  jsii_type="aws-cdk-lib.aws_eks.CfnAddonProps",
@@ -4428,6 +5246,7 @@ class CfnAddon(
4428
5246
  "cluster_name": "clusterName",
4429
5247
  "addon_version": "addonVersion",
4430
5248
  "configuration_values": "configurationValues",
5249
+ "pod_identity_associations": "podIdentityAssociations",
4431
5250
  "preserve_on_delete": "preserveOnDelete",
4432
5251
  "resolve_conflicts": "resolveConflicts",
4433
5252
  "service_account_role_arn": "serviceAccountRoleArn",
@@ -4442,6 +5261,7 @@ class CfnAddonProps:
4442
5261
  cluster_name: builtins.str,
4443
5262
  addon_version: typing.Optional[builtins.str] = None,
4444
5263
  configuration_values: typing.Optional[builtins.str] = None,
5264
+ 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,
4445
5265
  preserve_on_delete: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
4446
5266
  resolve_conflicts: typing.Optional[builtins.str] = None,
4447
5267
  service_account_role_arn: typing.Optional[builtins.str] = None,
@@ -4453,6 +5273,7 @@ class CfnAddonProps:
4453
5273
  :param cluster_name: The name of your cluster.
4454
5274
  :param addon_version: The version of the add-on.
4455
5275
  :param configuration_values: The configuration values that you provided.
5276
+ :param pod_identity_associations: An array of pod identities to apply to this add-on.
4456
5277
  :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.
4457
5278
  :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.
4458
5279
  :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* .
@@ -4474,6 +5295,10 @@ class CfnAddonProps:
4474
5295
  # the properties below are optional
4475
5296
  addon_version="addonVersion",
4476
5297
  configuration_values="configurationValues",
5298
+ pod_identity_associations=[eks.CfnAddon.PodIdentityAssociationProperty(
5299
+ role_arn="roleArn",
5300
+ service_account="serviceAccount"
5301
+ )],
4477
5302
  preserve_on_delete=False,
4478
5303
  resolve_conflicts="resolveConflicts",
4479
5304
  service_account_role_arn="serviceAccountRoleArn",
@@ -4489,6 +5314,7 @@ class CfnAddonProps:
4489
5314
  check_type(argname="argument cluster_name", value=cluster_name, expected_type=type_hints["cluster_name"])
4490
5315
  check_type(argname="argument addon_version", value=addon_version, expected_type=type_hints["addon_version"])
4491
5316
  check_type(argname="argument configuration_values", value=configuration_values, expected_type=type_hints["configuration_values"])
5317
+ check_type(argname="argument pod_identity_associations", value=pod_identity_associations, expected_type=type_hints["pod_identity_associations"])
4492
5318
  check_type(argname="argument preserve_on_delete", value=preserve_on_delete, expected_type=type_hints["preserve_on_delete"])
4493
5319
  check_type(argname="argument resolve_conflicts", value=resolve_conflicts, expected_type=type_hints["resolve_conflicts"])
4494
5320
  check_type(argname="argument service_account_role_arn", value=service_account_role_arn, expected_type=type_hints["service_account_role_arn"])
@@ -4501,6 +5327,8 @@ class CfnAddonProps:
4501
5327
  self._values["addon_version"] = addon_version
4502
5328
  if configuration_values is not None:
4503
5329
  self._values["configuration_values"] = configuration_values
5330
+ if pod_identity_associations is not None:
5331
+ self._values["pod_identity_associations"] = pod_identity_associations
4504
5332
  if preserve_on_delete is not None:
4505
5333
  self._values["preserve_on_delete"] = preserve_on_delete
4506
5334
  if resolve_conflicts is not None:
@@ -4548,6 +5376,17 @@ class CfnAddonProps:
4548
5376
  result = self._values.get("configuration_values")
4549
5377
  return typing.cast(typing.Optional[builtins.str], result)
4550
5378
 
5379
+ @builtins.property
5380
+ def pod_identity_associations(
5381
+ self,
5382
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAddon.PodIdentityAssociationProperty]]]]:
5383
+ '''An array of pod identities to apply to this add-on.
5384
+
5385
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-addon.html#cfn-eks-addon-podidentityassociations
5386
+ '''
5387
+ result = self._values.get("pod_identity_associations")
5388
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAddon.PodIdentityAssociationProperty]]]], result)
5389
+
4551
5390
  @builtins.property
4552
5391
  def preserve_on_delete(
4553
5392
  self,
@@ -9340,7 +10179,7 @@ class ClusterLoggingTypes(enum.Enum):
9340
10179
 
9341
10180
  cluster = eks.Cluster(self, "Cluster",
9342
10181
  # ...
9343
- version=eks.KubernetesVersion.V1_29,
10182
+ version=eks.KubernetesVersion.V1_30,
9344
10183
  cluster_logging=[eks.ClusterLoggingTypes.API, eks.ClusterLoggingTypes.AUTHENTICATOR, eks.ClusterLoggingTypes.SCHEDULER
9345
10184
  ]
9346
10185
  )
@@ -9579,7 +10418,7 @@ class DefaultCapacityType(enum.Enum):
9579
10418
  Example::
9580
10419
 
9581
10420
  cluster = eks.Cluster(self, "HelloEKS",
9582
- version=eks.KubernetesVersion.V1_29,
10421
+ version=eks.KubernetesVersion.V1_30,
9583
10422
  default_capacity_type=eks.DefaultCapacityType.EC2
9584
10423
  )
9585
10424
  '''
@@ -9748,7 +10587,7 @@ class EndpointAccess(
9748
10587
  Example::
9749
10588
 
9750
10589
  cluster = eks.Cluster(self, "hello-eks",
9751
- version=eks.KubernetesVersion.V1_29,
10590
+ version=eks.KubernetesVersion.V1_30,
9752
10591
  endpoint_access=eks.EndpointAccess.PRIVATE
9753
10592
  )
9754
10593
  '''
@@ -10802,22 +11641,132 @@ class HelmChartProps(HelmChartOptions):
10802
11641
  def cluster(self) -> "ICluster":
10803
11642
  '''The EKS cluster to apply this configuration to.
10804
11643
 
10805
- [disable-awslint:ref-via-interface]
10806
- '''
10807
- result = self._values.get("cluster")
10808
- assert result is not None, "Required property 'cluster' is missing"
10809
- return typing.cast("ICluster", result)
11644
+ [disable-awslint:ref-via-interface]
11645
+ '''
11646
+ result = self._values.get("cluster")
11647
+ assert result is not None, "Required property 'cluster' is missing"
11648
+ return typing.cast("ICluster", result)
11649
+
11650
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
11651
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
11652
+
11653
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
11654
+ return not (rhs == self)
11655
+
11656
+ def __repr__(self) -> str:
11657
+ return "HelmChartProps(%s)" % ", ".join(
11658
+ k + "=" + repr(v) for k, v in self._values.items()
11659
+ )
11660
+
11661
+
11662
+ @jsii.interface(jsii_type="aws-cdk-lib.aws_eks.IAccessEntry")
11663
+ class IAccessEntry(_IResource_c80c4260, typing_extensions.Protocol):
11664
+ '''Represents an access entry in an Amazon EKS cluster.
11665
+
11666
+ An access entry defines the permissions and scope for a user or role to access an Amazon EKS cluster.
11667
+
11668
+ :extends: IResource *
11669
+ :interface: IAccessEntry
11670
+ :property: {string} accessEntryArn - The Amazon Resource Name (ARN) of the access entry.
11671
+ '''
11672
+
11673
+ @builtins.property
11674
+ @jsii.member(jsii_name="accessEntryArn")
11675
+ def access_entry_arn(self) -> builtins.str:
11676
+ '''The Amazon Resource Name (ARN) of the access entry.
11677
+
11678
+ :attribute: true
11679
+ '''
11680
+ ...
11681
+
11682
+ @builtins.property
11683
+ @jsii.member(jsii_name="accessEntryName")
11684
+ def access_entry_name(self) -> builtins.str:
11685
+ '''The name of the access entry.
11686
+
11687
+ :attribute: true
11688
+ '''
11689
+ ...
11690
+
11691
+
11692
+ class _IAccessEntryProxy(
11693
+ jsii.proxy_for(_IResource_c80c4260), # type: ignore[misc]
11694
+ ):
11695
+ '''Represents an access entry in an Amazon EKS cluster.
11696
+
11697
+ An access entry defines the permissions and scope for a user or role to access an Amazon EKS cluster.
11698
+
11699
+ :extends: IResource *
11700
+ :interface: IAccessEntry
11701
+ :property: {string} accessEntryArn - The Amazon Resource Name (ARN) of the access entry.
11702
+ '''
11703
+
11704
+ __jsii_type__: typing.ClassVar[str] = "aws-cdk-lib.aws_eks.IAccessEntry"
11705
+
11706
+ @builtins.property
11707
+ @jsii.member(jsii_name="accessEntryArn")
11708
+ def access_entry_arn(self) -> builtins.str:
11709
+ '''The Amazon Resource Name (ARN) of the access entry.
11710
+
11711
+ :attribute: true
11712
+ '''
11713
+ return typing.cast(builtins.str, jsii.get(self, "accessEntryArn"))
11714
+
11715
+ @builtins.property
11716
+ @jsii.member(jsii_name="accessEntryName")
11717
+ def access_entry_name(self) -> builtins.str:
11718
+ '''The name of the access entry.
11719
+
11720
+ :attribute: true
11721
+ '''
11722
+ return typing.cast(builtins.str, jsii.get(self, "accessEntryName"))
11723
+
11724
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
11725
+ typing.cast(typing.Any, IAccessEntry).__jsii_proxy_class__ = lambda : _IAccessEntryProxy
11726
+
11727
+
11728
+ @jsii.interface(jsii_type="aws-cdk-lib.aws_eks.IAccessPolicy")
11729
+ class IAccessPolicy(typing_extensions.Protocol):
11730
+ '''Represents an access policy that defines the permissions and scope for a user or role to access an Amazon EKS cluster.
11731
+
11732
+ :interface: IAccessPolicy
11733
+ '''
11734
+
11735
+ @builtins.property
11736
+ @jsii.member(jsii_name="accessScope")
11737
+ def access_scope(self) -> AccessScope:
11738
+ '''The scope of the access policy, which determines the level of access granted.'''
11739
+ ...
11740
+
11741
+ @builtins.property
11742
+ @jsii.member(jsii_name="policy")
11743
+ def policy(self) -> builtins.str:
11744
+ '''The access policy itself, which defines the specific permissions.'''
11745
+ ...
11746
+
11747
+
11748
+ class _IAccessPolicyProxy:
11749
+ '''Represents an access policy that defines the permissions and scope for a user or role to access an Amazon EKS cluster.
11750
+
11751
+ :interface: IAccessPolicy
11752
+ '''
11753
+
11754
+ __jsii_type__: typing.ClassVar[str] = "aws-cdk-lib.aws_eks.IAccessPolicy"
10810
11755
 
10811
- def __eq__(self, rhs: typing.Any) -> builtins.bool:
10812
- return isinstance(rhs, self.__class__) and rhs._values == self._values
11756
+ @builtins.property
11757
+ @jsii.member(jsii_name="accessScope")
11758
+ def access_scope(self) -> AccessScope:
11759
+ '''The scope of the access policy, which determines the level of access granted.'''
11760
+ return typing.cast(AccessScope, jsii.get(self, "accessScope"))
10813
11761
 
10814
- def __ne__(self, rhs: typing.Any) -> builtins.bool:
10815
- return not (rhs == self)
11762
+ @builtins.property
11763
+ @jsii.member(jsii_name="policy")
11764
+ def policy(self) -> builtins.str:
11765
+ '''The access policy itself, which defines the specific permissions.'''
11766
+ return typing.cast(builtins.str, jsii.get(self, "policy"))
10816
11767
 
10817
- def __repr__(self) -> str:
10818
- return "HelmChartProps(%s)" % ", ".join(
10819
- k + "=" + repr(v) for k, v in self._values.items()
10820
- )
11768
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
11769
+ typing.cast(typing.Any, IAccessPolicy).__jsii_proxy_class__ = lambda : _IAccessPolicyProxy
10821
11770
 
10822
11771
 
10823
11772
  @jsii.interface(jsii_type="aws-cdk-lib.aws_eks.ICluster")
@@ -10910,6 +11859,15 @@ class ICluster(_IResource_c80c4260, _IConnectable_10015a05, typing_extensions.Pr
10910
11859
  '''The VPC in which this Cluster was created.'''
10911
11860
  ...
10912
11861
 
11862
+ @builtins.property
11863
+ @jsii.member(jsii_name="authenticationMode")
11864
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
11865
+ '''The authentication mode for the cluster.
11866
+
11867
+ :default: AuthenticationMode.CONFIG_MAP
11868
+ '''
11869
+ ...
11870
+
10913
11871
  @builtins.property
10914
11872
  @jsii.member(jsii_name="awscliLayer")
10915
11873
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
@@ -11261,6 +12219,15 @@ class _IClusterProxy(
11261
12219
  '''The VPC in which this Cluster was created.'''
11262
12220
  return typing.cast(_IVpc_f30d5663, jsii.get(self, "vpc"))
11263
12221
 
12222
+ @builtins.property
12223
+ @jsii.member(jsii_name="authenticationMode")
12224
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
12225
+ '''The authentication mode for the cluster.
12226
+
12227
+ :default: AuthenticationMode.CONFIG_MAP
12228
+ '''
12229
+ return typing.cast(typing.Optional[AuthenticationMode], jsii.get(self, "authenticationMode"))
12230
+
11264
12231
  @builtins.property
11265
12232
  @jsii.member(jsii_name="awscliLayer")
11266
12233
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
@@ -11690,7 +12657,7 @@ class IpFamily(enum.Enum):
11690
12657
  subnetcount = subnetcount + 1
11691
12658
 
11692
12659
  cluster = eks.Cluster(self, "hello-eks",
11693
- version=eks.KubernetesVersion.V1_29,
12660
+ version=eks.KubernetesVersion.V1_30,
11694
12661
  vpc=vpc,
11695
12662
  ip_family=eks.IpFamily.IP_V6,
11696
12663
  vpc_subnets=[ec2.SubnetSelection(subnets=vpc.public_subnets)]
@@ -12814,15 +13781,16 @@ class KubernetesVersion(
12814
13781
 
12815
13782
  Example::
12816
13783
 
12817
- cluster = eks.Cluster(self, "HelloEKS",
12818
- version=eks.KubernetesVersion.V1_29,
12819
- default_capacity=0
13784
+ # or
13785
+ # vpc: ec2.Vpc
13786
+ eks.Cluster(self, "MyCluster",
13787
+ kubectl_memory=Size.gibibytes(4),
13788
+ version=eks.KubernetesVersion.V1_30
12820
13789
  )
12821
-
12822
- cluster.add_nodegroup_capacity("custom-node-group",
12823
- instance_types=[ec2.InstanceType("m5.large")],
12824
- min_size=4,
12825
- disk_size=100
13790
+ eks.Cluster.from_cluster_attributes(self, "MyCluster",
13791
+ kubectl_memory=Size.gibibytes(4),
13792
+ vpc=vpc,
13793
+ cluster_name="cluster-name"
12826
13794
  )
12827
13795
  '''
12828
13796
 
@@ -13020,6 +13988,17 @@ class KubernetesVersion(
13020
13988
  '''
13021
13989
  return typing.cast("KubernetesVersion", jsii.sget(cls, "V1_29"))
13022
13990
 
13991
+ @jsii.python.classproperty
13992
+ @jsii.member(jsii_name="V1_30")
13993
+ def V1_30(cls) -> "KubernetesVersion":
13994
+ '''Kubernetes version 1.30.
13995
+
13996
+ When creating a ``Cluster`` with this version, you need to also specify the
13997
+ ``kubectlLayer`` property with a ``KubectlV29Layer`` from
13998
+ ``@aws-cdk/lambda-layer-kubectl-v30``.
13999
+ '''
14000
+ return typing.cast("KubernetesVersion", jsii.sget(cls, "V1_30"))
14001
+
13023
14002
  @builtins.property
13024
14003
  @jsii.member(jsii_name="version")
13025
14004
  def version(self) -> builtins.str:
@@ -15104,6 +16083,204 @@ class TaintSpec:
15104
16083
  )
15105
16084
 
15106
16085
 
16086
+ @jsii.implements(IAccessEntry)
16087
+ class AccessEntry(
16088
+ _Resource_45bc6135,
16089
+ metaclass=jsii.JSIIMeta,
16090
+ jsii_type="aws-cdk-lib.aws_eks.AccessEntry",
16091
+ ):
16092
+ '''Represents an access entry in an Amazon EKS cluster.
16093
+
16094
+ An access entry defines the permissions and scope for a user or role to access an Amazon EKS cluster.
16095
+
16096
+ :implements: IAccessEntry
16097
+ :exampleMetadata: fixture=_generated
16098
+
16099
+ Example::
16100
+
16101
+ # The code below shows an example of how to instantiate this type.
16102
+ # The values are placeholders you should change.
16103
+ from aws_cdk import aws_eks as eks
16104
+
16105
+ # access_policy: eks.AccessPolicy
16106
+ # cluster: eks.Cluster
16107
+
16108
+ access_entry = eks.AccessEntry(self, "MyAccessEntry",
16109
+ access_policies=[access_policy],
16110
+ cluster=cluster,
16111
+ principal="principal",
16112
+
16113
+ # the properties below are optional
16114
+ access_entry_name="accessEntryName",
16115
+ access_entry_type=eks.AccessEntryType.STANDARD
16116
+ )
16117
+ '''
16118
+
16119
+ def __init__(
16120
+ self,
16121
+ scope: _constructs_77d1e7e8.Construct,
16122
+ id: builtins.str,
16123
+ *,
16124
+ access_policies: typing.Sequence[IAccessPolicy],
16125
+ cluster: ICluster,
16126
+ principal: builtins.str,
16127
+ access_entry_name: typing.Optional[builtins.str] = None,
16128
+ access_entry_type: typing.Optional[AccessEntryType] = None,
16129
+ ) -> None:
16130
+ '''
16131
+ :param scope: -
16132
+ :param id: -
16133
+ :param access_policies: The access policies that define the permissions and scope for the access entry.
16134
+ :param cluster: The Amazon EKS cluster to which the access entry applies.
16135
+ :param principal: The Amazon Resource Name (ARN) of the principal (user or role) to associate the access entry with.
16136
+ :param access_entry_name: The name of the AccessEntry. Default: - No access entry name is provided
16137
+ :param access_entry_type: The type of the AccessEntry. Default: STANDARD
16138
+ '''
16139
+ if __debug__:
16140
+ type_hints = typing.get_type_hints(_typecheckingstub__76acfe0dd4f79a87279c3d9cbf3bd8c7327733233aec66908901483da7f17d5b)
16141
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
16142
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
16143
+ props = AccessEntryProps(
16144
+ access_policies=access_policies,
16145
+ cluster=cluster,
16146
+ principal=principal,
16147
+ access_entry_name=access_entry_name,
16148
+ access_entry_type=access_entry_type,
16149
+ )
16150
+
16151
+ jsii.create(self.__class__, self, [scope, id, props])
16152
+
16153
+ @jsii.member(jsii_name="fromAccessEntryAttributes")
16154
+ @builtins.classmethod
16155
+ def from_access_entry_attributes(
16156
+ cls,
16157
+ scope: _constructs_77d1e7e8.Construct,
16158
+ id: builtins.str,
16159
+ *,
16160
+ access_entry_arn: builtins.str,
16161
+ access_entry_name: builtins.str,
16162
+ ) -> IAccessEntry:
16163
+ '''Imports an ``AccessEntry`` from its attributes.
16164
+
16165
+ :param scope: - The parent construct.
16166
+ :param id: - The ID of the imported construct.
16167
+ :param access_entry_arn: The Amazon Resource Name (ARN) of the access entry.
16168
+ :param access_entry_name: The name of the access entry.
16169
+
16170
+ :return: The imported access entry.
16171
+ '''
16172
+ if __debug__:
16173
+ type_hints = typing.get_type_hints(_typecheckingstub__f179e9982369f73f3bb7a13ff87f073fda0da2cd11932479d54f6d69d8849141)
16174
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
16175
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
16176
+ attrs = AccessEntryAttributes(
16177
+ access_entry_arn=access_entry_arn, access_entry_name=access_entry_name
16178
+ )
16179
+
16180
+ return typing.cast(IAccessEntry, jsii.sinvoke(cls, "fromAccessEntryAttributes", [scope, id, attrs]))
16181
+
16182
+ @jsii.member(jsii_name="addAccessPolicies")
16183
+ def add_access_policies(
16184
+ self,
16185
+ new_access_policies: typing.Sequence[IAccessPolicy],
16186
+ ) -> None:
16187
+ '''Add the access policies for this entry.
16188
+
16189
+ :param new_access_policies: - The new access policies to add.
16190
+ '''
16191
+ if __debug__:
16192
+ type_hints = typing.get_type_hints(_typecheckingstub__e1007432e51c3db7b596578b73c0068b372fc6af638d2adb2faa12db70799372)
16193
+ check_type(argname="argument new_access_policies", value=new_access_policies, expected_type=type_hints["new_access_policies"])
16194
+ return typing.cast(None, jsii.invoke(self, "addAccessPolicies", [new_access_policies]))
16195
+
16196
+ @builtins.property
16197
+ @jsii.member(jsii_name="accessEntryArn")
16198
+ def access_entry_arn(self) -> builtins.str:
16199
+ '''The Amazon Resource Name (ARN) of the access entry.'''
16200
+ return typing.cast(builtins.str, jsii.get(self, "accessEntryArn"))
16201
+
16202
+ @builtins.property
16203
+ @jsii.member(jsii_name="accessEntryName")
16204
+ def access_entry_name(self) -> builtins.str:
16205
+ '''The name of the access entry.'''
16206
+ return typing.cast(builtins.str, jsii.get(self, "accessEntryName"))
16207
+
16208
+
16209
+ @jsii.implements(IAccessPolicy)
16210
+ class AccessPolicy(
16211
+ metaclass=jsii.JSIIMeta,
16212
+ jsii_type="aws-cdk-lib.aws_eks.AccessPolicy",
16213
+ ):
16214
+ '''Represents an Amazon EKS Access Policy that implements the IAccessPolicy interface.
16215
+
16216
+ :implements: IAccessPolicy
16217
+ :exampleMetadata: infused
16218
+
16219
+ Example::
16220
+
16221
+ # AmazonEKSClusterAdminPolicy with `cluster` scope
16222
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSClusterAdminPolicy",
16223
+ access_scope_type=eks.AccessScopeType.CLUSTER
16224
+ )
16225
+ # AmazonEKSAdminPolicy with `namespace` scope
16226
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSAdminPolicy",
16227
+ access_scope_type=eks.AccessScopeType.NAMESPACE,
16228
+ namespaces=["foo", "bar"]
16229
+ )
16230
+ '''
16231
+
16232
+ def __init__(
16233
+ self,
16234
+ *,
16235
+ access_scope: typing.Union[AccessScope, typing.Dict[builtins.str, typing.Any]],
16236
+ policy: AccessPolicyArn,
16237
+ ) -> None:
16238
+ '''Constructs a new instance of the AccessPolicy class.
16239
+
16240
+ :param access_scope: The scope of the access policy, which determines the level of access granted.
16241
+ :param policy: The access policy itself, which defines the specific permissions.
16242
+ '''
16243
+ props = AccessPolicyProps(access_scope=access_scope, policy=policy)
16244
+
16245
+ jsii.create(self.__class__, self, [props])
16246
+
16247
+ @jsii.member(jsii_name="fromAccessPolicyName")
16248
+ @builtins.classmethod
16249
+ def from_access_policy_name(
16250
+ cls,
16251
+ policy_name: builtins.str,
16252
+ *,
16253
+ access_scope_type: AccessScopeType,
16254
+ namespaces: typing.Optional[typing.Sequence[builtins.str]] = None,
16255
+ ) -> IAccessPolicy:
16256
+ '''Import AccessPolicy by name.
16257
+
16258
+ :param policy_name: -
16259
+ :param access_scope_type: The scope of the access policy. This determines the level of access granted by the policy.
16260
+ :param namespaces: An optional array of Kubernetes namespaces to which the access policy applies. Default: - no specific namespaces for this scope
16261
+ '''
16262
+ if __debug__:
16263
+ type_hints = typing.get_type_hints(_typecheckingstub__a928f26a921cd1d01ec556e4421fe3bf4a1ac17a9b598a554215bfae5af842aa)
16264
+ check_type(argname="argument policy_name", value=policy_name, expected_type=type_hints["policy_name"])
16265
+ options = AccessPolicyNameOptions(
16266
+ access_scope_type=access_scope_type, namespaces=namespaces
16267
+ )
16268
+
16269
+ return typing.cast(IAccessPolicy, jsii.sinvoke(cls, "fromAccessPolicyName", [policy_name, options]))
16270
+
16271
+ @builtins.property
16272
+ @jsii.member(jsii_name="accessScope")
16273
+ def access_scope(self) -> AccessScope:
16274
+ '''The scope of the access policy, which determines the level of access granted.'''
16275
+ return typing.cast(AccessScope, jsii.get(self, "accessScope"))
16276
+
16277
+ @builtins.property
16278
+ @jsii.member(jsii_name="policy")
16279
+ def policy(self) -> builtins.str:
16280
+ '''The access policy itself, which defines the specific permissions.'''
16281
+ return typing.cast(builtins.str, jsii.get(self, "policy"))
16282
+
16283
+
15107
16284
  @jsii.implements(ICluster)
15108
16285
  class Cluster(
15109
16286
  _Resource_45bc6135,
@@ -15119,18 +16296,16 @@ class Cluster(
15119
16296
 
15120
16297
  Example::
15121
16298
 
15122
- import aws_cdk.aws_eks as eks
15123
-
15124
-
15125
- my_eks_cluster = eks.Cluster(self, "my sample cluster",
15126
- version=eks.KubernetesVersion.V1_18,
15127
- cluster_name="myEksCluster"
16299
+ # or
16300
+ # vpc: ec2.Vpc
16301
+ eks.Cluster(self, "MyCluster",
16302
+ kubectl_memory=Size.gibibytes(4),
16303
+ version=eks.KubernetesVersion.V1_30
15128
16304
  )
15129
-
15130
- tasks.EksCall(self, "Call a EKS Endpoint",
15131
- cluster=my_eks_cluster,
15132
- http_method=tasks.HttpMethods.GET,
15133
- http_path="/api/v1/namespaces/default/pods"
16305
+ eks.Cluster.from_cluster_attributes(self, "MyCluster",
16306
+ kubectl_memory=Size.gibibytes(4),
16307
+ vpc=vpc,
16308
+ cluster_name="cluster-name"
15134
16309
  )
15135
16310
  '''
15136
16311
 
@@ -15139,12 +16314,14 @@ class Cluster(
15139
16314
  scope: _constructs_77d1e7e8.Construct,
15140
16315
  id: builtins.str,
15141
16316
  *,
16317
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
15142
16318
  default_capacity: typing.Optional[jsii.Number] = None,
15143
16319
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
15144
16320
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
15145
16321
  kubectl_lambda_role: typing.Optional[_IRole_235f5d8e] = None,
15146
16322
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15147
16323
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
16324
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
15148
16325
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
15149
16326
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15150
16327
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -15175,12 +16352,14 @@ class Cluster(
15175
16352
 
15176
16353
  :param scope: a Construct, most likely a cdk.Stack created.
15177
16354
  :param id: the id of the Construct to create.
16355
+ :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
15178
16356
  :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
15179
16357
  :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
15180
16358
  :param default_capacity_type: The default capacity type for the cluster. Default: NODEGROUP
15181
16359
  :param kubectl_lambda_role: The IAM role to pass to the Kubectl Lambda Handler. Default: - Default Lambda IAM Execution Role
15182
16360
  :param tags: The tags assigned to the EKS cluster. Default: - none
15183
16361
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
16362
+ :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
15184
16363
  :param awscli_layer: An AWS Lambda layer that contains the ``aws`` CLI. The handler expects the layer to include the following executables:: /opt/awscli/aws Default: - a default layer with the AWS CLI 1.x
15185
16364
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
15186
16365
  :param cluster_handler_security_group: A security group to associate with the Cluster Handler's Lambdas. The Cluster Handler's Lambdas are responsible for calling AWS's EKS API. Requires ``placeClusterHandlerInVpc`` to be set to true. Default: - No security group.
@@ -15212,12 +16391,14 @@ class Cluster(
15212
16391
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
15213
16392
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
15214
16393
  props = ClusterProps(
16394
+ bootstrap_cluster_creator_admin_permissions=bootstrap_cluster_creator_admin_permissions,
15215
16395
  default_capacity=default_capacity,
15216
16396
  default_capacity_instance=default_capacity_instance,
15217
16397
  default_capacity_type=default_capacity_type,
15218
16398
  kubectl_lambda_role=kubectl_lambda_role,
15219
16399
  tags=tags,
15220
16400
  alb_controller=alb_controller,
16401
+ authentication_mode=authentication_mode,
15221
16402
  awscli_layer=awscli_layer,
15222
16403
  cluster_handler_environment=cluster_handler_environment,
15223
16404
  cluster_handler_security_group=cluster_handler_security_group,
@@ -15805,6 +16986,30 @@ class Cluster(
15805
16986
 
15806
16987
  return typing.cast(builtins.str, jsii.invoke(self, "getServiceLoadBalancerAddress", [service_name, options]))
15807
16988
 
16989
+ @jsii.member(jsii_name="grantAccess")
16990
+ def grant_access(
16991
+ self,
16992
+ id: builtins.str,
16993
+ principal: builtins.str,
16994
+ access_policies: typing.Sequence[IAccessPolicy],
16995
+ ) -> None:
16996
+ '''Grants the specified IAM principal access to the EKS cluster based on the provided access policies.
16997
+
16998
+ This method creates an ``AccessEntry`` construct that grants the specified IAM principal the access permissions
16999
+ defined by the provided ``IAccessPolicy`` array. This allows the IAM principal to perform the actions permitted
17000
+ by the access policies within the EKS cluster.
17001
+
17002
+ :param id: - The ID of the ``AccessEntry`` construct to be created.
17003
+ :param principal: - The IAM principal (role or user) to be granted access to the EKS cluster.
17004
+ :param access_policies: - An array of ``IAccessPolicy`` objects that define the access permissions to be granted to the IAM principal.
17005
+ '''
17006
+ if __debug__:
17007
+ type_hints = typing.get_type_hints(_typecheckingstub__c595337c9bbbcf6eb001ec015e579e32f72cb323ae83c9fa92eef98034ea8936)
17008
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
17009
+ check_type(argname="argument principal", value=principal, expected_type=type_hints["principal"])
17010
+ check_type(argname="argument access_policies", value=access_policies, expected_type=type_hints["access_policies"])
17011
+ return typing.cast(None, jsii.invoke(self, "grantAccess", [id, principal, access_policies]))
17012
+
15808
17013
  @builtins.property
15809
17014
  @jsii.member(jsii_name="adminRole")
15810
17015
  def admin_role(self) -> _Role_e8c6e11f:
@@ -15942,6 +17147,19 @@ class Cluster(
15942
17147
  '''
15943
17148
  return typing.cast(typing.Optional[AlbController], jsii.get(self, "albController"))
15944
17149
 
17150
+ @builtins.property
17151
+ @jsii.member(jsii_name="authenticationMode")
17152
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
17153
+ '''The authentication mode for the Amazon EKS cluster.
17154
+
17155
+ The authentication mode determines how users and applications authenticate to the Kubernetes API server.
17156
+
17157
+ :default: CONFIG_MAP.
17158
+
17159
+ :property: {AuthenticationMode} [authenticationMode] - The authentication mode for the Amazon EKS cluster.
17160
+ '''
17161
+ return typing.cast(typing.Optional[AuthenticationMode], jsii.get(self, "authenticationMode"))
17162
+
15945
17163
  @builtins.property
15946
17164
  @jsii.member(jsii_name="awscliLayer")
15947
17165
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
@@ -16095,6 +17313,7 @@ class Cluster(
16095
17313
  "vpc": "vpc",
16096
17314
  "vpc_subnets": "vpcSubnets",
16097
17315
  "alb_controller": "albController",
17316
+ "authentication_mode": "authenticationMode",
16098
17317
  "awscli_layer": "awscliLayer",
16099
17318
  "cluster_handler_environment": "clusterHandlerEnvironment",
16100
17319
  "cluster_handler_security_group": "clusterHandlerSecurityGroup",
@@ -16127,6 +17346,7 @@ class ClusterOptions(CommonClusterOptions):
16127
17346
  vpc: typing.Optional[_IVpc_f30d5663] = None,
16128
17347
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
16129
17348
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
17349
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
16130
17350
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
16131
17351
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16132
17352
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -16156,6 +17376,7 @@ class ClusterOptions(CommonClusterOptions):
16156
17376
  :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``.
16157
17377
  :param vpc_subnets: Where to place EKS Control Plane ENIs. For example, to only select private subnets, supply the following: ``vpcSubnets: [{ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }]`` Default: - All public and private subnets
16158
17378
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
17379
+ :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
16159
17380
  :param awscli_layer: An AWS Lambda layer that contains the ``aws`` CLI. The handler expects the layer to include the following executables:: /opt/awscli/aws Default: - a default layer with the AWS CLI 1.x
16160
17381
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
16161
17382
  :param cluster_handler_security_group: A security group to associate with the Cluster Handler's Lambdas. The Cluster Handler's Lambdas are responsible for calling AWS's EKS API. Requires ``placeClusterHandlerInVpc`` to be set to true. Default: - No security group.
@@ -16211,6 +17432,7 @@ class ClusterOptions(CommonClusterOptions):
16211
17432
  policy=policy,
16212
17433
  repository="repository"
16213
17434
  ),
17435
+ authentication_mode=eks.AuthenticationMode.CONFIG_MAP,
16214
17436
  awscli_layer=layer_version,
16215
17437
  cluster_handler_environment={
16216
17438
  "cluster_handler_environment_key": "clusterHandlerEnvironment"
@@ -16261,6 +17483,7 @@ class ClusterOptions(CommonClusterOptions):
16261
17483
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
16262
17484
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
16263
17485
  check_type(argname="argument alb_controller", value=alb_controller, expected_type=type_hints["alb_controller"])
17486
+ check_type(argname="argument authentication_mode", value=authentication_mode, expected_type=type_hints["authentication_mode"])
16264
17487
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
16265
17488
  check_type(argname="argument cluster_handler_environment", value=cluster_handler_environment, expected_type=type_hints["cluster_handler_environment"])
16266
17489
  check_type(argname="argument cluster_handler_security_group", value=cluster_handler_security_group, expected_type=type_hints["cluster_handler_security_group"])
@@ -16297,6 +17520,8 @@ class ClusterOptions(CommonClusterOptions):
16297
17520
  self._values["vpc_subnets"] = vpc_subnets
16298
17521
  if alb_controller is not None:
16299
17522
  self._values["alb_controller"] = alb_controller
17523
+ if authentication_mode is not None:
17524
+ self._values["authentication_mode"] = authentication_mode
16300
17525
  if awscli_layer is not None:
16301
17526
  self._values["awscli_layer"] = awscli_layer
16302
17527
  if cluster_handler_environment is not None:
@@ -16420,6 +17645,15 @@ class ClusterOptions(CommonClusterOptions):
16420
17645
  result = self._values.get("alb_controller")
16421
17646
  return typing.cast(typing.Optional[AlbControllerOptions], result)
16422
17647
 
17648
+ @builtins.property
17649
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
17650
+ '''The desired authentication mode for the cluster.
17651
+
17652
+ :default: AuthenticationMode.CONFIG_MAP
17653
+ '''
17654
+ result = self._values.get("authentication_mode")
17655
+ return typing.cast(typing.Optional[AuthenticationMode], result)
17656
+
16423
17657
  @builtins.property
16424
17658
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
16425
17659
  '''An AWS Lambda layer that contains the ``aws`` CLI.
@@ -16658,6 +17892,7 @@ class ClusterOptions(CommonClusterOptions):
16658
17892
  "vpc": "vpc",
16659
17893
  "vpc_subnets": "vpcSubnets",
16660
17894
  "alb_controller": "albController",
17895
+ "authentication_mode": "authenticationMode",
16661
17896
  "awscli_layer": "awscliLayer",
16662
17897
  "cluster_handler_environment": "clusterHandlerEnvironment",
16663
17898
  "cluster_handler_security_group": "clusterHandlerSecurityGroup",
@@ -16675,6 +17910,7 @@ class ClusterOptions(CommonClusterOptions):
16675
17910
  "prune": "prune",
16676
17911
  "secrets_encryption_key": "secretsEncryptionKey",
16677
17912
  "service_ipv4_cidr": "serviceIpv4Cidr",
17913
+ "bootstrap_cluster_creator_admin_permissions": "bootstrapClusterCreatorAdminPermissions",
16678
17914
  "default_capacity": "defaultCapacity",
16679
17915
  "default_capacity_instance": "defaultCapacityInstance",
16680
17916
  "default_capacity_type": "defaultCapacityType",
@@ -16695,6 +17931,7 @@ class ClusterProps(ClusterOptions):
16695
17931
  vpc: typing.Optional[_IVpc_f30d5663] = None,
16696
17932
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
16697
17933
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
17934
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
16698
17935
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
16699
17936
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16700
17937
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -16712,6 +17949,7 @@ class ClusterProps(ClusterOptions):
16712
17949
  prune: typing.Optional[builtins.bool] = None,
16713
17950
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
16714
17951
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
17952
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
16715
17953
  default_capacity: typing.Optional[jsii.Number] = None,
16716
17954
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
16717
17955
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
@@ -16729,6 +17967,7 @@ class ClusterProps(ClusterOptions):
16729
17967
  :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``.
16730
17968
  :param vpc_subnets: Where to place EKS Control Plane ENIs. For example, to only select private subnets, supply the following: ``vpcSubnets: [{ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }]`` Default: - All public and private subnets
16731
17969
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
17970
+ :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
16732
17971
  :param awscli_layer: An AWS Lambda layer that contains the ``aws`` CLI. The handler expects the layer to include the following executables:: /opt/awscli/aws Default: - a default layer with the AWS CLI 1.x
16733
17972
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
16734
17973
  :param cluster_handler_security_group: A security group to associate with the Cluster Handler's Lambdas. The Cluster Handler's Lambdas are responsible for calling AWS's EKS API. Requires ``placeClusterHandlerInVpc`` to be set to true. Default: - No security group.
@@ -16746,6 +17985,7 @@ class ClusterProps(ClusterOptions):
16746
17985
  :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
16747
17986
  :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.
16748
17987
  :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
17988
+ :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
16749
17989
  :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
16750
17990
  :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
16751
17991
  :param default_capacity_type: The default capacity type for the cluster. Default: NODEGROUP
@@ -16760,7 +18000,7 @@ class ClusterProps(ClusterOptions):
16760
18000
  # vpc: ec2.Vpc
16761
18001
  eks.Cluster(self, "MyCluster",
16762
18002
  kubectl_memory=Size.gibibytes(4),
16763
- version=eks.KubernetesVersion.V1_29
18003
+ version=eks.KubernetesVersion.V1_30
16764
18004
  )
16765
18005
  eks.Cluster.from_cluster_attributes(self, "MyCluster",
16766
18006
  kubectl_memory=Size.gibibytes(4),
@@ -16781,6 +18021,7 @@ class ClusterProps(ClusterOptions):
16781
18021
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
16782
18022
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
16783
18023
  check_type(argname="argument alb_controller", value=alb_controller, expected_type=type_hints["alb_controller"])
18024
+ check_type(argname="argument authentication_mode", value=authentication_mode, expected_type=type_hints["authentication_mode"])
16784
18025
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
16785
18026
  check_type(argname="argument cluster_handler_environment", value=cluster_handler_environment, expected_type=type_hints["cluster_handler_environment"])
16786
18027
  check_type(argname="argument cluster_handler_security_group", value=cluster_handler_security_group, expected_type=type_hints["cluster_handler_security_group"])
@@ -16798,6 +18039,7 @@ class ClusterProps(ClusterOptions):
16798
18039
  check_type(argname="argument prune", value=prune, expected_type=type_hints["prune"])
16799
18040
  check_type(argname="argument secrets_encryption_key", value=secrets_encryption_key, expected_type=type_hints["secrets_encryption_key"])
16800
18041
  check_type(argname="argument service_ipv4_cidr", value=service_ipv4_cidr, expected_type=type_hints["service_ipv4_cidr"])
18042
+ check_type(argname="argument bootstrap_cluster_creator_admin_permissions", value=bootstrap_cluster_creator_admin_permissions, expected_type=type_hints["bootstrap_cluster_creator_admin_permissions"])
16801
18043
  check_type(argname="argument default_capacity", value=default_capacity, expected_type=type_hints["default_capacity"])
16802
18044
  check_type(argname="argument default_capacity_instance", value=default_capacity_instance, expected_type=type_hints["default_capacity_instance"])
16803
18045
  check_type(argname="argument default_capacity_type", value=default_capacity_type, expected_type=type_hints["default_capacity_type"])
@@ -16822,6 +18064,8 @@ class ClusterProps(ClusterOptions):
16822
18064
  self._values["vpc_subnets"] = vpc_subnets
16823
18065
  if alb_controller is not None:
16824
18066
  self._values["alb_controller"] = alb_controller
18067
+ if authentication_mode is not None:
18068
+ self._values["authentication_mode"] = authentication_mode
16825
18069
  if awscli_layer is not None:
16826
18070
  self._values["awscli_layer"] = awscli_layer
16827
18071
  if cluster_handler_environment is not None:
@@ -16856,6 +18100,8 @@ class ClusterProps(ClusterOptions):
16856
18100
  self._values["secrets_encryption_key"] = secrets_encryption_key
16857
18101
  if service_ipv4_cidr is not None:
16858
18102
  self._values["service_ipv4_cidr"] = service_ipv4_cidr
18103
+ if bootstrap_cluster_creator_admin_permissions is not None:
18104
+ self._values["bootstrap_cluster_creator_admin_permissions"] = bootstrap_cluster_creator_admin_permissions
16859
18105
  if default_capacity is not None:
16860
18106
  self._values["default_capacity"] = default_capacity
16861
18107
  if default_capacity_instance is not None:
@@ -16955,6 +18201,15 @@ class ClusterProps(ClusterOptions):
16955
18201
  result = self._values.get("alb_controller")
16956
18202
  return typing.cast(typing.Optional[AlbControllerOptions], result)
16957
18203
 
18204
+ @builtins.property
18205
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
18206
+ '''The desired authentication mode for the cluster.
18207
+
18208
+ :default: AuthenticationMode.CONFIG_MAP
18209
+ '''
18210
+ result = self._values.get("authentication_mode")
18211
+ return typing.cast(typing.Optional[AuthenticationMode], result)
18212
+
16958
18213
  @builtins.property
16959
18214
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
16960
18215
  '''An AWS Lambda layer that contains the ``aws`` CLI.
@@ -17168,6 +18423,19 @@ class ClusterProps(ClusterOptions):
17168
18423
  result = self._values.get("service_ipv4_cidr")
17169
18424
  return typing.cast(typing.Optional[builtins.str], result)
17170
18425
 
18426
+ @builtins.property
18427
+ def bootstrap_cluster_creator_admin_permissions(
18428
+ self,
18429
+ ) -> typing.Optional[builtins.bool]:
18430
+ '''Whether or not IAM principal of the cluster creator was set as a cluster admin access entry during cluster creation time.
18431
+
18432
+ Changing this value after the cluster has been created will result in the cluster being replaced.
18433
+
18434
+ :default: true
18435
+ '''
18436
+ result = self._values.get("bootstrap_cluster_creator_admin_permissions")
18437
+ return typing.cast(typing.Optional[builtins.bool], result)
18438
+
17171
18439
  @builtins.property
17172
18440
  def default_capacity(self) -> typing.Optional[jsii.Number]:
17173
18441
  '''Number of instances to allocate as an initial capacity for this cluster.
@@ -17250,7 +18518,7 @@ class FargateCluster(
17250
18518
  Example::
17251
18519
 
17252
18520
  cluster = eks.FargateCluster(self, "MyCluster",
17253
- version=eks.KubernetesVersion.V1_29
18521
+ version=eks.KubernetesVersion.V1_30
17254
18522
  )
17255
18523
  '''
17256
18524
 
@@ -17261,6 +18529,7 @@ class FargateCluster(
17261
18529
  *,
17262
18530
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,
17263
18531
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
18532
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
17264
18533
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
17265
18534
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
17266
18535
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -17292,6 +18561,7 @@ class FargateCluster(
17292
18561
  :param id: -
17293
18562
  :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.
17294
18563
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
18564
+ :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
17295
18565
  :param awscli_layer: An AWS Lambda layer that contains the ``aws`` CLI. The handler expects the layer to include the following executables:: /opt/awscli/aws Default: - a default layer with the AWS CLI 1.x
17296
18566
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
17297
18567
  :param cluster_handler_security_group: A security group to associate with the Cluster Handler's Lambdas. The Cluster Handler's Lambdas are responsible for calling AWS's EKS API. Requires ``placeClusterHandlerInVpc`` to be set to true. Default: - No security group.
@@ -17325,6 +18595,7 @@ class FargateCluster(
17325
18595
  props = FargateClusterProps(
17326
18596
  default_profile=default_profile,
17327
18597
  alb_controller=alb_controller,
18598
+ authentication_mode=authentication_mode,
17328
18599
  awscli_layer=awscli_layer,
17329
18600
  cluster_handler_environment=cluster_handler_environment,
17330
18601
  cluster_handler_security_group=cluster_handler_security_group,
@@ -17374,6 +18645,7 @@ class FargateCluster(
17374
18645
  "vpc": "vpc",
17375
18646
  "vpc_subnets": "vpcSubnets",
17376
18647
  "alb_controller": "albController",
18648
+ "authentication_mode": "authenticationMode",
17377
18649
  "awscli_layer": "awscliLayer",
17378
18650
  "cluster_handler_environment": "clusterHandlerEnvironment",
17379
18651
  "cluster_handler_security_group": "clusterHandlerSecurityGroup",
@@ -17407,6 +18679,7 @@ class FargateClusterProps(ClusterOptions):
17407
18679
  vpc: typing.Optional[_IVpc_f30d5663] = None,
17408
18680
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
17409
18681
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
18682
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
17410
18683
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
17411
18684
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
17412
18685
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -17437,6 +18710,7 @@ class FargateClusterProps(ClusterOptions):
17437
18710
  :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``.
17438
18711
  :param vpc_subnets: Where to place EKS Control Plane ENIs. For example, to only select private subnets, supply the following: ``vpcSubnets: [{ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }]`` Default: - All public and private subnets
17439
18712
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
18713
+ :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
17440
18714
  :param awscli_layer: An AWS Lambda layer that contains the ``aws`` CLI. The handler expects the layer to include the following executables:: /opt/awscli/aws Default: - a default layer with the AWS CLI 1.x
17441
18715
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
17442
18716
  :param cluster_handler_security_group: A security group to associate with the Cluster Handler's Lambdas. The Cluster Handler's Lambdas are responsible for calling AWS's EKS API. Requires ``placeClusterHandlerInVpc`` to be set to true. Default: - No security group.
@@ -17461,7 +18735,7 @@ class FargateClusterProps(ClusterOptions):
17461
18735
  Example::
17462
18736
 
17463
18737
  cluster = eks.FargateCluster(self, "MyCluster",
17464
- version=eks.KubernetesVersion.V1_29
18738
+ version=eks.KubernetesVersion.V1_30
17465
18739
  )
17466
18740
  '''
17467
18741
  if isinstance(alb_controller, dict):
@@ -17479,6 +18753,7 @@ class FargateClusterProps(ClusterOptions):
17479
18753
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
17480
18754
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
17481
18755
  check_type(argname="argument alb_controller", value=alb_controller, expected_type=type_hints["alb_controller"])
18756
+ check_type(argname="argument authentication_mode", value=authentication_mode, expected_type=type_hints["authentication_mode"])
17482
18757
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
17483
18758
  check_type(argname="argument cluster_handler_environment", value=cluster_handler_environment, expected_type=type_hints["cluster_handler_environment"])
17484
18759
  check_type(argname="argument cluster_handler_security_group", value=cluster_handler_security_group, expected_type=type_hints["cluster_handler_security_group"])
@@ -17516,6 +18791,8 @@ class FargateClusterProps(ClusterOptions):
17516
18791
  self._values["vpc_subnets"] = vpc_subnets
17517
18792
  if alb_controller is not None:
17518
18793
  self._values["alb_controller"] = alb_controller
18794
+ if authentication_mode is not None:
18795
+ self._values["authentication_mode"] = authentication_mode
17519
18796
  if awscli_layer is not None:
17520
18797
  self._values["awscli_layer"] = awscli_layer
17521
18798
  if cluster_handler_environment is not None:
@@ -17641,6 +18918,15 @@ class FargateClusterProps(ClusterOptions):
17641
18918
  result = self._values.get("alb_controller")
17642
18919
  return typing.cast(typing.Optional[AlbControllerOptions], result)
17643
18920
 
18921
+ @builtins.property
18922
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
18923
+ '''The desired authentication mode for the cluster.
18924
+
18925
+ :default: AuthenticationMode.CONFIG_MAP
18926
+ '''
18927
+ result = self._values.get("authentication_mode")
18928
+ return typing.cast(typing.Optional[AuthenticationMode], result)
18929
+
17644
18930
  @builtins.property
17645
18931
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
17646
18932
  '''An AWS Lambda layer that contains the ``aws`` CLI.
@@ -17950,11 +19236,22 @@ class IngressLoadBalancerAddressOptions(ServiceLoadBalancerAddressOptions):
17950
19236
 
17951
19237
 
17952
19238
  __all__ = [
19239
+ "AccessEntry",
19240
+ "AccessEntryAttributes",
19241
+ "AccessEntryProps",
19242
+ "AccessEntryType",
19243
+ "AccessPolicy",
19244
+ "AccessPolicyArn",
19245
+ "AccessPolicyNameOptions",
19246
+ "AccessPolicyProps",
19247
+ "AccessScope",
19248
+ "AccessScopeType",
17953
19249
  "AlbController",
17954
19250
  "AlbControllerOptions",
17955
19251
  "AlbControllerProps",
17956
19252
  "AlbControllerVersion",
17957
19253
  "AlbScheme",
19254
+ "AuthenticationMode",
17958
19255
  "AutoScalingGroupCapacityOptions",
17959
19256
  "AutoScalingGroupOptions",
17960
19257
  "AwsAuth",
@@ -17996,6 +19293,8 @@ __all__ = [
17996
19293
  "HelmChart",
17997
19294
  "HelmChartOptions",
17998
19295
  "HelmChartProps",
19296
+ "IAccessEntry",
19297
+ "IAccessPolicy",
17999
19298
  "ICluster",
18000
19299
  "IKubectlProvider",
18001
19300
  "INodegroup",
@@ -18034,6 +19333,61 @@ __all__ = [
18034
19333
 
18035
19334
  publication.publish()
18036
19335
 
19336
+ def _typecheckingstub__ea57d074f938dd093d38b977c20869681c2abd3bacc2931046328147dc4d8d72(
19337
+ *,
19338
+ access_entry_arn: builtins.str,
19339
+ access_entry_name: builtins.str,
19340
+ ) -> None:
19341
+ """Type checking stubs"""
19342
+ pass
19343
+
19344
+ def _typecheckingstub__0cc467f068aa2e977dd81e9c0227cfe45f7381ea6d31cea9c6f7f80e6d83e048(
19345
+ *,
19346
+ access_policies: typing.Sequence[IAccessPolicy],
19347
+ cluster: ICluster,
19348
+ principal: builtins.str,
19349
+ access_entry_name: typing.Optional[builtins.str] = None,
19350
+ access_entry_type: typing.Optional[AccessEntryType] = None,
19351
+ ) -> None:
19352
+ """Type checking stubs"""
19353
+ pass
19354
+
19355
+ def _typecheckingstub__0ac946189967c669f9d1c47c0772f99ed1ce20197e6c76e4496836bbe19d2a72(
19356
+ policy_name: builtins.str,
19357
+ ) -> None:
19358
+ """Type checking stubs"""
19359
+ pass
19360
+
19361
+ def _typecheckingstub__23236f8d1dae1650ef58623c900288d55afe1fd4ead26b7b1aff290d073de854(
19362
+ policy_name: builtins.str,
19363
+ ) -> None:
19364
+ """Type checking stubs"""
19365
+ pass
19366
+
19367
+ def _typecheckingstub__249ef277acd24f14314e76608ae6685b8ec176bb0872ba8327c446714e5afaee(
19368
+ *,
19369
+ access_scope_type: AccessScopeType,
19370
+ namespaces: typing.Optional[typing.Sequence[builtins.str]] = None,
19371
+ ) -> None:
19372
+ """Type checking stubs"""
19373
+ pass
19374
+
19375
+ def _typecheckingstub__d76ffc136ce61df3ec4331aefef6219d2ab1e0d4a6c6da1cd604f5d3a29a1c20(
19376
+ *,
19377
+ access_scope: typing.Union[AccessScope, typing.Dict[builtins.str, typing.Any]],
19378
+ policy: AccessPolicyArn,
19379
+ ) -> None:
19380
+ """Type checking stubs"""
19381
+ pass
19382
+
19383
+ def _typecheckingstub__5f979c2154a9a6bd2f77cf7ff51d6f83944d3c1290fcb70cdab0b403b6a0a8f8(
19384
+ *,
19385
+ type: AccessScopeType,
19386
+ namespaces: typing.Optional[typing.Sequence[builtins.str]] = None,
19387
+ ) -> None:
19388
+ """Type checking stubs"""
19389
+ pass
19390
+
18037
19391
  def _typecheckingstub__5e2ca421e3f17c3114d53057ba096ab3f90bd3b8ed6c2e0f75f61c88dd5aed4b(
18038
19392
  scope: _constructs_77d1e7e8.Construct,
18039
19393
  id: builtins.str,
@@ -18306,6 +19660,7 @@ def _typecheckingstub__45ff0728c7d6fc5f47c97aa791c327f70a32e19bdf463d94d9351053f
18306
19660
  cluster_name: builtins.str,
18307
19661
  addon_version: typing.Optional[builtins.str] = None,
18308
19662
  configuration_values: typing.Optional[builtins.str] = None,
19663
+ 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,
18309
19664
  preserve_on_delete: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
18310
19665
  resolve_conflicts: typing.Optional[builtins.str] = None,
18311
19666
  service_account_role_arn: typing.Optional[builtins.str] = None,
@@ -18350,6 +19705,12 @@ def _typecheckingstub__f2b158aed78a78d2962c2650df64f6c3880ccb508ebd6b281bda6c1a1
18350
19705
  """Type checking stubs"""
18351
19706
  pass
18352
19707
 
19708
+ def _typecheckingstub__04a430658e28600fba10a8c3e5edab2978904829dda6f2c70e9cca8560f7e400(
19709
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAddon.PodIdentityAssociationProperty]]]],
19710
+ ) -> None:
19711
+ """Type checking stubs"""
19712
+ pass
19713
+
18353
19714
  def _typecheckingstub__c38bc0bc32707ba96b79f5dda73d99054ea5b77577796b10a0f95ff6fe51b133(
18354
19715
  value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
18355
19716
  ) -> None:
@@ -18374,12 +19735,21 @@ def _typecheckingstub__61cfcc2cd9aba81e02df7f2a5c976044dc5e5cbf6c05b880c4944cb35
18374
19735
  """Type checking stubs"""
18375
19736
  pass
18376
19737
 
19738
+ def _typecheckingstub__3925c850dd0d0ad3b9faeea87aafbe69220a7bf33d95af5527715674625c9891(
19739
+ *,
19740
+ role_arn: builtins.str,
19741
+ service_account: builtins.str,
19742
+ ) -> None:
19743
+ """Type checking stubs"""
19744
+ pass
19745
+
18377
19746
  def _typecheckingstub__484b2779e40e4780cb0940ac7bc9daaf91fa04347613d732138d3be3d3f5a2d9(
18378
19747
  *,
18379
19748
  addon_name: builtins.str,
18380
19749
  cluster_name: builtins.str,
18381
19750
  addon_version: typing.Optional[builtins.str] = None,
18382
19751
  configuration_values: typing.Optional[builtins.str] = None,
19752
+ 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,
18383
19753
  preserve_on_delete: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
18384
19754
  resolve_conflicts: typing.Optional[builtins.str] = None,
18385
19755
  service_account_role_arn: typing.Optional[builtins.str] = None,
@@ -19571,16 +20941,56 @@ def _typecheckingstub__be119d20277d81d5cacb542dcf0ff7927e8c934305e8be443e95ce321
19571
20941
  """Type checking stubs"""
19572
20942
  pass
19573
20943
 
20944
+ def _typecheckingstub__76acfe0dd4f79a87279c3d9cbf3bd8c7327733233aec66908901483da7f17d5b(
20945
+ scope: _constructs_77d1e7e8.Construct,
20946
+ id: builtins.str,
20947
+ *,
20948
+ access_policies: typing.Sequence[IAccessPolicy],
20949
+ cluster: ICluster,
20950
+ principal: builtins.str,
20951
+ access_entry_name: typing.Optional[builtins.str] = None,
20952
+ access_entry_type: typing.Optional[AccessEntryType] = None,
20953
+ ) -> None:
20954
+ """Type checking stubs"""
20955
+ pass
20956
+
20957
+ def _typecheckingstub__f179e9982369f73f3bb7a13ff87f073fda0da2cd11932479d54f6d69d8849141(
20958
+ scope: _constructs_77d1e7e8.Construct,
20959
+ id: builtins.str,
20960
+ *,
20961
+ access_entry_arn: builtins.str,
20962
+ access_entry_name: builtins.str,
20963
+ ) -> None:
20964
+ """Type checking stubs"""
20965
+ pass
20966
+
20967
+ def _typecheckingstub__e1007432e51c3db7b596578b73c0068b372fc6af638d2adb2faa12db70799372(
20968
+ new_access_policies: typing.Sequence[IAccessPolicy],
20969
+ ) -> None:
20970
+ """Type checking stubs"""
20971
+ pass
20972
+
20973
+ def _typecheckingstub__a928f26a921cd1d01ec556e4421fe3bf4a1ac17a9b598a554215bfae5af842aa(
20974
+ policy_name: builtins.str,
20975
+ *,
20976
+ access_scope_type: AccessScopeType,
20977
+ namespaces: typing.Optional[typing.Sequence[builtins.str]] = None,
20978
+ ) -> None:
20979
+ """Type checking stubs"""
20980
+ pass
20981
+
19574
20982
  def _typecheckingstub__786576ad54eacdb9ab8e92277c0fd07f813bc56d4243937f3b5a85c0c575cac9(
19575
20983
  scope: _constructs_77d1e7e8.Construct,
19576
20984
  id: builtins.str,
19577
20985
  *,
20986
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
19578
20987
  default_capacity: typing.Optional[jsii.Number] = None,
19579
20988
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
19580
20989
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
19581
20990
  kubectl_lambda_role: typing.Optional[_IRole_235f5d8e] = None,
19582
20991
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19583
20992
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
20993
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
19584
20994
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19585
20995
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19586
20996
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -19795,6 +21205,14 @@ def _typecheckingstub__1125553e51a293d46862ded8c9242c2427ed871d469da6db3ac9d9ace
19795
21205
  """Type checking stubs"""
19796
21206
  pass
19797
21207
 
21208
+ def _typecheckingstub__c595337c9bbbcf6eb001ec015e579e32f72cb323ae83c9fa92eef98034ea8936(
21209
+ id: builtins.str,
21210
+ principal: builtins.str,
21211
+ access_policies: typing.Sequence[IAccessPolicy],
21212
+ ) -> None:
21213
+ """Type checking stubs"""
21214
+ pass
21215
+
19798
21216
  def _typecheckingstub__0b45b97fda36b43e872f90f9fe4cde65de855b50b3acfd236c1f400ef40c0cb1(
19799
21217
  *,
19800
21218
  version: KubernetesVersion,
@@ -19806,6 +21224,7 @@ def _typecheckingstub__0b45b97fda36b43e872f90f9fe4cde65de855b50b3acfd236c1f400ef
19806
21224
  vpc: typing.Optional[_IVpc_f30d5663] = None,
19807
21225
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
19808
21226
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21227
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
19809
21228
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19810
21229
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19811
21230
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -19838,6 +21257,7 @@ def _typecheckingstub__ce7a73a63de29ba5e5b5cd5cabde7aca1c4bc7d119de52fc4c0f11d99
19838
21257
  vpc: typing.Optional[_IVpc_f30d5663] = None,
19839
21258
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
19840
21259
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21260
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
19841
21261
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19842
21262
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19843
21263
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -19855,6 +21275,7 @@ def _typecheckingstub__ce7a73a63de29ba5e5b5cd5cabde7aca1c4bc7d119de52fc4c0f11d99
19855
21275
  prune: typing.Optional[builtins.bool] = None,
19856
21276
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
19857
21277
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
21278
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
19858
21279
  default_capacity: typing.Optional[jsii.Number] = None,
19859
21280
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
19860
21281
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
@@ -19870,6 +21291,7 @@ def _typecheckingstub__ae166d791f5d5176f3386726c22bc44afedf5d336437a3513e3740387
19870
21291
  *,
19871
21292
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,
19872
21293
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21294
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
19873
21295
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19874
21296
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19875
21297
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -19910,6 +21332,7 @@ def _typecheckingstub__f11c7f989209f6213cb855d2846bb0b2b79a6a2b85eb0d65939e981df
19910
21332
  vpc: typing.Optional[_IVpc_f30d5663] = None,
19911
21333
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
19912
21334
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21335
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
19913
21336
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19914
21337
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19915
21338
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,