aws-cdk-lib 2.145.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.

@@ -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)
@@ -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)
@@ -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,
@@ -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],
@@ -10907,34 +11629,144 @@ class HelmChartProps(HelmChartOptions):
10907
11629
  return typing.cast(typing.Optional[builtins.str], result)
10908
11630
 
10909
11631
  @builtins.property
10910
- def wait(self) -> typing.Optional[builtins.bool]:
10911
- '''Whether or not Helm should wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment, StatefulSet, or ReplicaSet are in a ready state before marking the release as successful.
10912
-
10913
- :default: - Helm will not wait before marking release as successful
10914
- '''
10915
- result = self._values.get("wait")
10916
- return typing.cast(typing.Optional[builtins.bool], result)
11632
+ def wait(self) -> typing.Optional[builtins.bool]:
11633
+ '''Whether or not Helm should wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment, StatefulSet, or ReplicaSet are in a ready state before marking the release as successful.
11634
+
11635
+ :default: - Helm will not wait before marking release as successful
11636
+ '''
11637
+ result = self._values.get("wait")
11638
+ return typing.cast(typing.Optional[builtins.bool], result)
11639
+
11640
+ @builtins.property
11641
+ def cluster(self) -> "ICluster":
11642
+ '''The EKS cluster to apply this configuration to.
11643
+
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
+ ...
10917
11740
 
10918
11741
  @builtins.property
10919
- def cluster(self) -> "ICluster":
10920
- '''The EKS cluster to apply this configuration to.
11742
+ @jsii.member(jsii_name="policy")
11743
+ def policy(self) -> builtins.str:
11744
+ '''The access policy itself, which defines the specific permissions.'''
11745
+ ...
10921
11746
 
10922
- [disable-awslint:ref-via-interface]
10923
- '''
10924
- result = self._values.get("cluster")
10925
- assert result is not None, "Required property 'cluster' is missing"
10926
- return typing.cast("ICluster", result)
10927
11747
 
10928
- def __eq__(self, rhs: typing.Any) -> builtins.bool:
10929
- return isinstance(rhs, self.__class__) and rhs._values == self._values
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.
10930
11750
 
10931
- def __ne__(self, rhs: typing.Any) -> builtins.bool:
10932
- return not (rhs == self)
11751
+ :interface: IAccessPolicy
11752
+ '''
10933
11753
 
10934
- def __repr__(self) -> str:
10935
- return "HelmChartProps(%s)" % ", ".join(
10936
- k + "=" + repr(v) for k, v in self._values.items()
10937
- )
11754
+ __jsii_type__: typing.ClassVar[str] = "aws-cdk-lib.aws_eks.IAccessPolicy"
11755
+
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"))
11761
+
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"))
11767
+
11768
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
11769
+ typing.cast(typing.Any, IAccessPolicy).__jsii_proxy_class__ = lambda : _IAccessPolicyProxy
10938
11770
 
10939
11771
 
10940
11772
  @jsii.interface(jsii_type="aws-cdk-lib.aws_eks.ICluster")
@@ -11027,6 +11859,15 @@ class ICluster(_IResource_c80c4260, _IConnectable_10015a05, typing_extensions.Pr
11027
11859
  '''The VPC in which this Cluster was created.'''
11028
11860
  ...
11029
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
+
11030
11871
  @builtins.property
11031
11872
  @jsii.member(jsii_name="awscliLayer")
11032
11873
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
@@ -11378,6 +12219,15 @@ class _IClusterProxy(
11378
12219
  '''The VPC in which this Cluster was created.'''
11379
12220
  return typing.cast(_IVpc_f30d5663, jsii.get(self, "vpc"))
11380
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
+
11381
12231
  @builtins.property
11382
12232
  @jsii.member(jsii_name="awscliLayer")
11383
12233
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
@@ -12931,15 +13781,16 @@ class KubernetesVersion(
12931
13781
 
12932
13782
  Example::
12933
13783
 
12934
- cluster = eks.Cluster(self, "HelloEKS",
12935
- version=eks.KubernetesVersion.V1_30,
12936
- 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
12937
13789
  )
12938
-
12939
- cluster.add_nodegroup_capacity("custom-node-group",
12940
- instance_types=[ec2.InstanceType("m5.large")],
12941
- min_size=4,
12942
- 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"
12943
13794
  )
12944
13795
  '''
12945
13796
 
@@ -15232,6 +16083,204 @@ class TaintSpec:
15232
16083
  )
15233
16084
 
15234
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
+
15235
16284
  @jsii.implements(ICluster)
15236
16285
  class Cluster(
15237
16286
  _Resource_45bc6135,
@@ -15247,18 +16296,16 @@ class Cluster(
15247
16296
 
15248
16297
  Example::
15249
16298
 
15250
- import aws_cdk.aws_eks as eks
15251
-
15252
-
15253
- my_eks_cluster = eks.Cluster(self, "my sample cluster",
15254
- version=eks.KubernetesVersion.V1_18,
15255
- 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
15256
16304
  )
15257
-
15258
- tasks.EksCall(self, "Call a EKS Endpoint",
15259
- cluster=my_eks_cluster,
15260
- http_method=tasks.HttpMethods.GET,
15261
- 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"
15262
16309
  )
15263
16310
  '''
15264
16311
 
@@ -15267,12 +16314,14 @@ class Cluster(
15267
16314
  scope: _constructs_77d1e7e8.Construct,
15268
16315
  id: builtins.str,
15269
16316
  *,
16317
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
15270
16318
  default_capacity: typing.Optional[jsii.Number] = None,
15271
16319
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
15272
16320
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
15273
16321
  kubectl_lambda_role: typing.Optional[_IRole_235f5d8e] = None,
15274
16322
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15275
16323
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
16324
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
15276
16325
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
15277
16326
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15278
16327
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -15303,12 +16352,14 @@ class Cluster(
15303
16352
 
15304
16353
  :param scope: a Construct, most likely a cdk.Stack created.
15305
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
15306
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
15307
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
15308
16358
  :param default_capacity_type: The default capacity type for the cluster. Default: NODEGROUP
15309
16359
  :param kubectl_lambda_role: The IAM role to pass to the Kubectl Lambda Handler. Default: - Default Lambda IAM Execution Role
15310
16360
  :param tags: The tags assigned to the EKS cluster. Default: - none
15311
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
15312
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
15313
16364
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
15314
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.
@@ -15340,12 +16391,14 @@ class Cluster(
15340
16391
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
15341
16392
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
15342
16393
  props = ClusterProps(
16394
+ bootstrap_cluster_creator_admin_permissions=bootstrap_cluster_creator_admin_permissions,
15343
16395
  default_capacity=default_capacity,
15344
16396
  default_capacity_instance=default_capacity_instance,
15345
16397
  default_capacity_type=default_capacity_type,
15346
16398
  kubectl_lambda_role=kubectl_lambda_role,
15347
16399
  tags=tags,
15348
16400
  alb_controller=alb_controller,
16401
+ authentication_mode=authentication_mode,
15349
16402
  awscli_layer=awscli_layer,
15350
16403
  cluster_handler_environment=cluster_handler_environment,
15351
16404
  cluster_handler_security_group=cluster_handler_security_group,
@@ -15933,6 +16986,30 @@ class Cluster(
15933
16986
 
15934
16987
  return typing.cast(builtins.str, jsii.invoke(self, "getServiceLoadBalancerAddress", [service_name, options]))
15935
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
+
15936
17013
  @builtins.property
15937
17014
  @jsii.member(jsii_name="adminRole")
15938
17015
  def admin_role(self) -> _Role_e8c6e11f:
@@ -16070,6 +17147,19 @@ class Cluster(
16070
17147
  '''
16071
17148
  return typing.cast(typing.Optional[AlbController], jsii.get(self, "albController"))
16072
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
+
16073
17163
  @builtins.property
16074
17164
  @jsii.member(jsii_name="awscliLayer")
16075
17165
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
@@ -16223,6 +17313,7 @@ class Cluster(
16223
17313
  "vpc": "vpc",
16224
17314
  "vpc_subnets": "vpcSubnets",
16225
17315
  "alb_controller": "albController",
17316
+ "authentication_mode": "authenticationMode",
16226
17317
  "awscli_layer": "awscliLayer",
16227
17318
  "cluster_handler_environment": "clusterHandlerEnvironment",
16228
17319
  "cluster_handler_security_group": "clusterHandlerSecurityGroup",
@@ -16255,6 +17346,7 @@ class ClusterOptions(CommonClusterOptions):
16255
17346
  vpc: typing.Optional[_IVpc_f30d5663] = None,
16256
17347
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
16257
17348
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
17349
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
16258
17350
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
16259
17351
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16260
17352
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -16284,6 +17376,7 @@ class ClusterOptions(CommonClusterOptions):
16284
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``.
16285
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
16286
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
16287
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
16288
17381
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
16289
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.
@@ -16339,6 +17432,7 @@ class ClusterOptions(CommonClusterOptions):
16339
17432
  policy=policy,
16340
17433
  repository="repository"
16341
17434
  ),
17435
+ authentication_mode=eks.AuthenticationMode.CONFIG_MAP,
16342
17436
  awscli_layer=layer_version,
16343
17437
  cluster_handler_environment={
16344
17438
  "cluster_handler_environment_key": "clusterHandlerEnvironment"
@@ -16389,6 +17483,7 @@ class ClusterOptions(CommonClusterOptions):
16389
17483
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
16390
17484
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
16391
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"])
16392
17487
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
16393
17488
  check_type(argname="argument cluster_handler_environment", value=cluster_handler_environment, expected_type=type_hints["cluster_handler_environment"])
16394
17489
  check_type(argname="argument cluster_handler_security_group", value=cluster_handler_security_group, expected_type=type_hints["cluster_handler_security_group"])
@@ -16425,6 +17520,8 @@ class ClusterOptions(CommonClusterOptions):
16425
17520
  self._values["vpc_subnets"] = vpc_subnets
16426
17521
  if alb_controller is not None:
16427
17522
  self._values["alb_controller"] = alb_controller
17523
+ if authentication_mode is not None:
17524
+ self._values["authentication_mode"] = authentication_mode
16428
17525
  if awscli_layer is not None:
16429
17526
  self._values["awscli_layer"] = awscli_layer
16430
17527
  if cluster_handler_environment is not None:
@@ -16548,6 +17645,15 @@ class ClusterOptions(CommonClusterOptions):
16548
17645
  result = self._values.get("alb_controller")
16549
17646
  return typing.cast(typing.Optional[AlbControllerOptions], result)
16550
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
+
16551
17657
  @builtins.property
16552
17658
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
16553
17659
  '''An AWS Lambda layer that contains the ``aws`` CLI.
@@ -16786,6 +17892,7 @@ class ClusterOptions(CommonClusterOptions):
16786
17892
  "vpc": "vpc",
16787
17893
  "vpc_subnets": "vpcSubnets",
16788
17894
  "alb_controller": "albController",
17895
+ "authentication_mode": "authenticationMode",
16789
17896
  "awscli_layer": "awscliLayer",
16790
17897
  "cluster_handler_environment": "clusterHandlerEnvironment",
16791
17898
  "cluster_handler_security_group": "clusterHandlerSecurityGroup",
@@ -16803,6 +17910,7 @@ class ClusterOptions(CommonClusterOptions):
16803
17910
  "prune": "prune",
16804
17911
  "secrets_encryption_key": "secretsEncryptionKey",
16805
17912
  "service_ipv4_cidr": "serviceIpv4Cidr",
17913
+ "bootstrap_cluster_creator_admin_permissions": "bootstrapClusterCreatorAdminPermissions",
16806
17914
  "default_capacity": "defaultCapacity",
16807
17915
  "default_capacity_instance": "defaultCapacityInstance",
16808
17916
  "default_capacity_type": "defaultCapacityType",
@@ -16823,6 +17931,7 @@ class ClusterProps(ClusterOptions):
16823
17931
  vpc: typing.Optional[_IVpc_f30d5663] = None,
16824
17932
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
16825
17933
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
17934
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
16826
17935
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
16827
17936
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16828
17937
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -16840,6 +17949,7 @@ class ClusterProps(ClusterOptions):
16840
17949
  prune: typing.Optional[builtins.bool] = None,
16841
17950
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
16842
17951
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
17952
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
16843
17953
  default_capacity: typing.Optional[jsii.Number] = None,
16844
17954
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
16845
17955
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
@@ -16857,6 +17967,7 @@ class ClusterProps(ClusterOptions):
16857
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``.
16858
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
16859
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
16860
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
16861
17972
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
16862
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.
@@ -16874,6 +17985,7 @@ class ClusterProps(ClusterOptions):
16874
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
16875
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.
16876
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
16877
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
16878
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
16879
17991
  :param default_capacity_type: The default capacity type for the cluster. Default: NODEGROUP
@@ -16909,6 +18021,7 @@ class ClusterProps(ClusterOptions):
16909
18021
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
16910
18022
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
16911
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"])
16912
18025
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
16913
18026
  check_type(argname="argument cluster_handler_environment", value=cluster_handler_environment, expected_type=type_hints["cluster_handler_environment"])
16914
18027
  check_type(argname="argument cluster_handler_security_group", value=cluster_handler_security_group, expected_type=type_hints["cluster_handler_security_group"])
@@ -16926,6 +18039,7 @@ class ClusterProps(ClusterOptions):
16926
18039
  check_type(argname="argument prune", value=prune, expected_type=type_hints["prune"])
16927
18040
  check_type(argname="argument secrets_encryption_key", value=secrets_encryption_key, expected_type=type_hints["secrets_encryption_key"])
16928
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"])
16929
18043
  check_type(argname="argument default_capacity", value=default_capacity, expected_type=type_hints["default_capacity"])
16930
18044
  check_type(argname="argument default_capacity_instance", value=default_capacity_instance, expected_type=type_hints["default_capacity_instance"])
16931
18045
  check_type(argname="argument default_capacity_type", value=default_capacity_type, expected_type=type_hints["default_capacity_type"])
@@ -16950,6 +18064,8 @@ class ClusterProps(ClusterOptions):
16950
18064
  self._values["vpc_subnets"] = vpc_subnets
16951
18065
  if alb_controller is not None:
16952
18066
  self._values["alb_controller"] = alb_controller
18067
+ if authentication_mode is not None:
18068
+ self._values["authentication_mode"] = authentication_mode
16953
18069
  if awscli_layer is not None:
16954
18070
  self._values["awscli_layer"] = awscli_layer
16955
18071
  if cluster_handler_environment is not None:
@@ -16984,6 +18100,8 @@ class ClusterProps(ClusterOptions):
16984
18100
  self._values["secrets_encryption_key"] = secrets_encryption_key
16985
18101
  if service_ipv4_cidr is not None:
16986
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
16987
18105
  if default_capacity is not None:
16988
18106
  self._values["default_capacity"] = default_capacity
16989
18107
  if default_capacity_instance is not None:
@@ -17083,6 +18201,15 @@ class ClusterProps(ClusterOptions):
17083
18201
  result = self._values.get("alb_controller")
17084
18202
  return typing.cast(typing.Optional[AlbControllerOptions], result)
17085
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
+
17086
18213
  @builtins.property
17087
18214
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
17088
18215
  '''An AWS Lambda layer that contains the ``aws`` CLI.
@@ -17296,6 +18423,19 @@ class ClusterProps(ClusterOptions):
17296
18423
  result = self._values.get("service_ipv4_cidr")
17297
18424
  return typing.cast(typing.Optional[builtins.str], result)
17298
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
+
17299
18439
  @builtins.property
17300
18440
  def default_capacity(self) -> typing.Optional[jsii.Number]:
17301
18441
  '''Number of instances to allocate as an initial capacity for this cluster.
@@ -17389,6 +18529,7 @@ class FargateCluster(
17389
18529
  *,
17390
18530
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,
17391
18531
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
18532
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
17392
18533
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
17393
18534
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
17394
18535
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -17420,6 +18561,7 @@ class FargateCluster(
17420
18561
  :param id: -
17421
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.
17422
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
17423
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
17424
18566
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
17425
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.
@@ -17453,6 +18595,7 @@ class FargateCluster(
17453
18595
  props = FargateClusterProps(
17454
18596
  default_profile=default_profile,
17455
18597
  alb_controller=alb_controller,
18598
+ authentication_mode=authentication_mode,
17456
18599
  awscli_layer=awscli_layer,
17457
18600
  cluster_handler_environment=cluster_handler_environment,
17458
18601
  cluster_handler_security_group=cluster_handler_security_group,
@@ -17502,6 +18645,7 @@ class FargateCluster(
17502
18645
  "vpc": "vpc",
17503
18646
  "vpc_subnets": "vpcSubnets",
17504
18647
  "alb_controller": "albController",
18648
+ "authentication_mode": "authenticationMode",
17505
18649
  "awscli_layer": "awscliLayer",
17506
18650
  "cluster_handler_environment": "clusterHandlerEnvironment",
17507
18651
  "cluster_handler_security_group": "clusterHandlerSecurityGroup",
@@ -17535,6 +18679,7 @@ class FargateClusterProps(ClusterOptions):
17535
18679
  vpc: typing.Optional[_IVpc_f30d5663] = None,
17536
18680
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
17537
18681
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
18682
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
17538
18683
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
17539
18684
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
17540
18685
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -17565,6 +18710,7 @@ class FargateClusterProps(ClusterOptions):
17565
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``.
17566
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
17567
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
17568
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
17569
18715
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
17570
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.
@@ -17607,6 +18753,7 @@ class FargateClusterProps(ClusterOptions):
17607
18753
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
17608
18754
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
17609
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"])
17610
18757
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
17611
18758
  check_type(argname="argument cluster_handler_environment", value=cluster_handler_environment, expected_type=type_hints["cluster_handler_environment"])
17612
18759
  check_type(argname="argument cluster_handler_security_group", value=cluster_handler_security_group, expected_type=type_hints["cluster_handler_security_group"])
@@ -17644,6 +18791,8 @@ class FargateClusterProps(ClusterOptions):
17644
18791
  self._values["vpc_subnets"] = vpc_subnets
17645
18792
  if alb_controller is not None:
17646
18793
  self._values["alb_controller"] = alb_controller
18794
+ if authentication_mode is not None:
18795
+ self._values["authentication_mode"] = authentication_mode
17647
18796
  if awscli_layer is not None:
17648
18797
  self._values["awscli_layer"] = awscli_layer
17649
18798
  if cluster_handler_environment is not None:
@@ -17769,6 +18918,15 @@ class FargateClusterProps(ClusterOptions):
17769
18918
  result = self._values.get("alb_controller")
17770
18919
  return typing.cast(typing.Optional[AlbControllerOptions], result)
17771
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
+
17772
18930
  @builtins.property
17773
18931
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
17774
18932
  '''An AWS Lambda layer that contains the ``aws`` CLI.
@@ -18078,11 +19236,22 @@ class IngressLoadBalancerAddressOptions(ServiceLoadBalancerAddressOptions):
18078
19236
 
18079
19237
 
18080
19238
  __all__ = [
19239
+ "AccessEntry",
19240
+ "AccessEntryAttributes",
19241
+ "AccessEntryProps",
19242
+ "AccessEntryType",
19243
+ "AccessPolicy",
19244
+ "AccessPolicyArn",
19245
+ "AccessPolicyNameOptions",
19246
+ "AccessPolicyProps",
19247
+ "AccessScope",
19248
+ "AccessScopeType",
18081
19249
  "AlbController",
18082
19250
  "AlbControllerOptions",
18083
19251
  "AlbControllerProps",
18084
19252
  "AlbControllerVersion",
18085
19253
  "AlbScheme",
19254
+ "AuthenticationMode",
18086
19255
  "AutoScalingGroupCapacityOptions",
18087
19256
  "AutoScalingGroupOptions",
18088
19257
  "AwsAuth",
@@ -18124,6 +19293,8 @@ __all__ = [
18124
19293
  "HelmChart",
18125
19294
  "HelmChartOptions",
18126
19295
  "HelmChartProps",
19296
+ "IAccessEntry",
19297
+ "IAccessPolicy",
18127
19298
  "ICluster",
18128
19299
  "IKubectlProvider",
18129
19300
  "INodegroup",
@@ -18162,6 +19333,61 @@ __all__ = [
18162
19333
 
18163
19334
  publication.publish()
18164
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
+
18165
19391
  def _typecheckingstub__5e2ca421e3f17c3114d53057ba096ab3f90bd3b8ed6c2e0f75f61c88dd5aed4b(
18166
19392
  scope: _constructs_77d1e7e8.Construct,
18167
19393
  id: builtins.str,
@@ -19715,16 +20941,56 @@ def _typecheckingstub__be119d20277d81d5cacb542dcf0ff7927e8c934305e8be443e95ce321
19715
20941
  """Type checking stubs"""
19716
20942
  pass
19717
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
+
19718
20982
  def _typecheckingstub__786576ad54eacdb9ab8e92277c0fd07f813bc56d4243937f3b5a85c0c575cac9(
19719
20983
  scope: _constructs_77d1e7e8.Construct,
19720
20984
  id: builtins.str,
19721
20985
  *,
20986
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
19722
20987
  default_capacity: typing.Optional[jsii.Number] = None,
19723
20988
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
19724
20989
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
19725
20990
  kubectl_lambda_role: typing.Optional[_IRole_235f5d8e] = None,
19726
20991
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19727
20992
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
20993
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
19728
20994
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19729
20995
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19730
20996
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -19939,6 +21205,14 @@ def _typecheckingstub__1125553e51a293d46862ded8c9242c2427ed871d469da6db3ac9d9ace
19939
21205
  """Type checking stubs"""
19940
21206
  pass
19941
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
+
19942
21216
  def _typecheckingstub__0b45b97fda36b43e872f90f9fe4cde65de855b50b3acfd236c1f400ef40c0cb1(
19943
21217
  *,
19944
21218
  version: KubernetesVersion,
@@ -19950,6 +21224,7 @@ def _typecheckingstub__0b45b97fda36b43e872f90f9fe4cde65de855b50b3acfd236c1f400ef
19950
21224
  vpc: typing.Optional[_IVpc_f30d5663] = None,
19951
21225
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
19952
21226
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21227
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
19953
21228
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19954
21229
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19955
21230
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -19982,6 +21257,7 @@ def _typecheckingstub__ce7a73a63de29ba5e5b5cd5cabde7aca1c4bc7d119de52fc4c0f11d99
19982
21257
  vpc: typing.Optional[_IVpc_f30d5663] = None,
19983
21258
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
19984
21259
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21260
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
19985
21261
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19986
21262
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19987
21263
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -19999,6 +21275,7 @@ def _typecheckingstub__ce7a73a63de29ba5e5b5cd5cabde7aca1c4bc7d119de52fc4c0f11d99
19999
21275
  prune: typing.Optional[builtins.bool] = None,
20000
21276
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
20001
21277
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
21278
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
20002
21279
  default_capacity: typing.Optional[jsii.Number] = None,
20003
21280
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
20004
21281
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
@@ -20014,6 +21291,7 @@ def _typecheckingstub__ae166d791f5d5176f3386726c22bc44afedf5d336437a3513e3740387
20014
21291
  *,
20015
21292
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,
20016
21293
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21294
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
20017
21295
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
20018
21296
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
20019
21297
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -20054,6 +21332,7 @@ def _typecheckingstub__f11c7f989209f6213cb855d2846bb0b2b79a6a2b85eb0d65939e981df
20054
21332
  vpc: typing.Optional[_IVpc_f30d5663] = None,
20055
21333
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
20056
21334
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21335
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
20057
21336
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
20058
21337
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
20059
21338
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,