aws-cdk-lib 2.145.0__py3-none-any.whl → 2.147.0__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (71) hide show
  1. aws_cdk/__init__.py +12 -11
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.145.0.jsii.tgz → aws-cdk-lib@2.147.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_apigateway/__init__.py +32 -12
  5. aws_cdk/aws_apigatewayv2/__init__.py +48 -2
  6. aws_cdk/aws_apigatewayv2_integrations/__init__.py +142 -4
  7. aws_cdk/aws_appconfig/__init__.py +8 -4
  8. aws_cdk/aws_applicationsignals/__init__.py +1766 -0
  9. aws_cdk/aws_appsync/__init__.py +62 -0
  10. aws_cdk/aws_auditmanager/__init__.py +5 -1
  11. aws_cdk/aws_autoscaling/__init__.py +457 -56
  12. aws_cdk/aws_batch/__init__.py +215 -0
  13. aws_cdk/aws_bedrock/__init__.py +272 -103
  14. aws_cdk/aws_cloudformation/__init__.py +5 -11
  15. aws_cdk/aws_cloudfront/__init__.py +10 -3
  16. aws_cdk/aws_cloudtrail/__init__.py +56 -2
  17. aws_cdk/aws_codebuild/__init__.py +85 -32
  18. aws_cdk/aws_codepipeline/__init__.py +10 -5
  19. aws_cdk/aws_connect/__init__.py +86 -0
  20. aws_cdk/aws_datazone/__init__.py +80 -68
  21. aws_cdk/aws_deadline/__init__.py +603 -17
  22. aws_cdk/aws_ec2/__init__.py +237 -112
  23. aws_cdk/aws_ecs/__init__.py +123 -12
  24. aws_cdk/aws_eks/__init__.py +1335 -50
  25. aws_cdk/aws_elasticloadbalancingv2/__init__.py +11 -5
  26. aws_cdk/aws_emrserverless/__init__.py +5 -5
  27. aws_cdk/aws_events/__init__.py +36 -16
  28. aws_cdk/aws_fsx/__init__.py +126 -21
  29. aws_cdk/aws_globalaccelerator/__init__.py +2 -1
  30. aws_cdk/aws_globalaccelerator_endpoints/__init__.py +35 -4
  31. aws_cdk/aws_glue/__init__.py +26 -0
  32. aws_cdk/aws_grafana/__init__.py +4 -4
  33. aws_cdk/aws_groundstation/__init__.py +55 -35
  34. aws_cdk/aws_guardduty/__init__.py +826 -0
  35. aws_cdk/aws_iam/__init__.py +13 -8
  36. aws_cdk/aws_iot/__init__.py +3 -3
  37. aws_cdk/aws_lambda/__init__.py +7 -5
  38. aws_cdk/aws_lightsail/__init__.py +1 -1
  39. aws_cdk/aws_location/__init__.py +10 -11
  40. aws_cdk/aws_mediapackagev2/__init__.py +38 -20
  41. aws_cdk/aws_mediatailor/__init__.py +2 -2
  42. aws_cdk/aws_msk/__init__.py +4 -4
  43. aws_cdk/aws_mwaa/__init__.py +16 -8
  44. aws_cdk/aws_nimblestudio/__init__.py +9 -9
  45. aws_cdk/aws_opensearchservice/__init__.py +11 -4
  46. aws_cdk/aws_opsworks/__init__.py +3 -3
  47. aws_cdk/aws_osis/__init__.py +33 -4
  48. aws_cdk/aws_pipes/__init__.py +691 -0
  49. aws_cdk/aws_quicksight/__init__.py +23 -21
  50. aws_cdk/aws_rds/__init__.py +55 -11
  51. aws_cdk/aws_refactorspaces/__init__.py +3 -3
  52. aws_cdk/aws_rolesanywhere/__init__.py +206 -3
  53. aws_cdk/aws_sagemaker/__init__.py +5 -2
  54. aws_cdk/aws_securityhub/__init__.py +163 -78
  55. aws_cdk/aws_securitylake/__init__.py +7 -5
  56. aws_cdk/aws_ses/__init__.py +117 -0
  57. aws_cdk/aws_simspaceweaver/__init__.py +2 -2
  58. aws_cdk/aws_sns/__init__.py +67 -13
  59. aws_cdk/aws_sqs/__init__.py +3 -3
  60. aws_cdk/aws_stepfunctions/__init__.py +51 -28
  61. aws_cdk/aws_stepfunctions_tasks/__init__.py +59 -5
  62. aws_cdk/aws_transfer/__init__.py +8 -2
  63. aws_cdk/aws_wafv2/__init__.py +10 -10
  64. aws_cdk/aws_workspacesweb/__init__.py +8 -8
  65. aws_cdk/region_info/__init__.py +6 -0
  66. {aws_cdk_lib-2.145.0.dist-info → aws_cdk_lib-2.147.0.dist-info}/METADATA +2 -2
  67. {aws_cdk_lib-2.145.0.dist-info → aws_cdk_lib-2.147.0.dist-info}/NOTICE +0 -35
  68. {aws_cdk_lib-2.145.0.dist-info → aws_cdk_lib-2.147.0.dist-info}/RECORD +71 -70
  69. {aws_cdk_lib-2.145.0.dist-info → aws_cdk_lib-2.147.0.dist-info}/LICENSE +0 -0
  70. {aws_cdk_lib-2.145.0.dist-info → aws_cdk_lib-2.147.0.dist-info}/WHEEL +0 -0
  71. {aws_cdk_lib-2.145.0.dist-info → aws_cdk_lib-2.147.0.dist-info}/top_level.txt +0 -0
@@ -42,6 +42,8 @@ In addition, the library also supports defining Kubernetes resource manifests wi
42
42
  * [Permissions and Security](#permissions-and-security)
43
43
 
44
44
  * [AWS IAM Mapping](#aws-iam-mapping)
45
+ * [Access Config](#access-config)
46
+ * [Access Entry](#access-mapping)
45
47
  * [Cluster Security Group](#cluster-security-group)
46
48
  * [Node SSH Access](#node-ssh-access)
47
49
  * [Service Accounts](#service-accounts)
@@ -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],
@@ -4243,7 +4965,7 @@ class CfnAddon(
4243
4965
  :param cluster_name: The name of your cluster.
4244
4966
  :param addon_version: The version of the add-on.
4245
4967
  :param configuration_values: The configuration values that you provided.
4246
- :param pod_identity_associations: An array of pod identities to apply to this add-on.
4968
+ :param pod_identity_associations: An array of Pod Identity Assocations owned by the Addon. Each EKS Pod Identity association maps a role to a service account in a namespace in the cluster. For more information, see `Attach an IAM Role to an Amazon EKS add-on using Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html>`_ in the EKS User Guide.
4247
4969
  :param preserve_on_delete: Specifying this option preserves the add-on software on your cluster but Amazon EKS stops managing any settings for the add-on. If an IAM account is associated with the add-on, it isn't removed.
4248
4970
  :param resolve_conflicts: How to resolve field value conflicts for an Amazon EKS add-on. Conflicts are handled based on the value you choose: - *None* – If the self-managed version of the add-on is installed on your cluster, Amazon EKS doesn't change the value. Creation of the add-on might fail. - *Overwrite* – If the self-managed version of the add-on is installed on your cluster and the Amazon EKS default value is different than the existing value, Amazon EKS changes the value to the Amazon EKS default value. - *Preserve* – This is similar to the NONE option. If the self-managed version of the add-on is installed on your cluster Amazon EKS doesn't change the add-on resource properties. Creation of the add-on might fail if conflicts are detected. This option works differently during the update operation. For more information, see `UpdateAddon <https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html>`_ . If you don't currently have the self-managed version of the add-on installed on your cluster, the Amazon EKS add-on is installed. Amazon EKS sets all values to default values, regardless of the option that you specify.
4249
4971
  :param service_account_role_arn: The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see `Amazon EKS node IAM role <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html>`_ in the *Amazon EKS User Guide* . .. epigraph:: To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see `Enabling IAM roles for service accounts on your cluster <https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html>`_ in the *Amazon EKS User Guide* .
@@ -4374,7 +5096,7 @@ class CfnAddon(
4374
5096
  def pod_identity_associations(
4375
5097
  self,
4376
5098
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAddon.PodIdentityAssociationProperty"]]]]:
4377
- '''An array of pod identities to apply to this add-on.'''
5099
+ '''An array of Pod Identity Assocations owned by the Addon.'''
4378
5100
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnAddon.PodIdentityAssociationProperty"]]]], jsii.get(self, "podIdentityAssociations"))
4379
5101
 
4380
5102
  @pod_identity_associations.setter
@@ -4456,10 +5178,10 @@ class CfnAddon(
4456
5178
  role_arn: builtins.str,
4457
5179
  service_account: builtins.str,
4458
5180
  ) -> None:
4459
- '''A pod identity to associate with an add-on.
5181
+ '''Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that Amazon EC2 instance profiles provide credentials to Amazon EC2 instances.
4460
5182
 
4461
- :param role_arn: The IAM role ARN that the pod identity association is created for.
4462
- :param service_account: The Kubernetes service account that the pod identity association is created for.
5183
+ :param role_arn: The Amazon Resource Name (ARN) of the IAM role to associate with the service account. The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the pods that use this service account.
5184
+ :param service_account: The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.
4463
5185
 
4464
5186
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-addon-podidentityassociation.html
4465
5187
  :exampleMetadata: fixture=_generated
@@ -4486,7 +5208,9 @@ class CfnAddon(
4486
5208
 
4487
5209
  @builtins.property
4488
5210
  def role_arn(self) -> builtins.str:
4489
- '''The IAM role ARN that the pod identity association is created for.
5211
+ '''The Amazon Resource Name (ARN) of the IAM role to associate with the service account.
5212
+
5213
+ The EKS Pod Identity agent manages credentials to assume this role for applications in the containers in the pods that use this service account.
4490
5214
 
4491
5215
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-addon-podidentityassociation.html#cfn-eks-addon-podidentityassociation-rolearn
4492
5216
  '''
@@ -4496,7 +5220,7 @@ class CfnAddon(
4496
5220
 
4497
5221
  @builtins.property
4498
5222
  def service_account(self) -> builtins.str:
4499
- '''The Kubernetes service account that the pod identity association is created for.
5223
+ '''The name of the Kubernetes service account inside the cluster to associate the IAM credentials with.
4500
5224
 
4501
5225
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-addon-podidentityassociation.html#cfn-eks-addon-podidentityassociation-serviceaccount
4502
5226
  '''
@@ -4551,7 +5275,7 @@ class CfnAddonProps:
4551
5275
  :param cluster_name: The name of your cluster.
4552
5276
  :param addon_version: The version of the add-on.
4553
5277
  :param configuration_values: The configuration values that you provided.
4554
- :param pod_identity_associations: An array of pod identities to apply to this add-on.
5278
+ :param pod_identity_associations: An array of Pod Identity Assocations owned by the Addon. Each EKS Pod Identity association maps a role to a service account in a namespace in the cluster. For more information, see `Attach an IAM Role to an Amazon EKS add-on using Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html>`_ in the EKS User Guide.
4555
5279
  :param preserve_on_delete: Specifying this option preserves the add-on software on your cluster but Amazon EKS stops managing any settings for the add-on. If an IAM account is associated with the add-on, it isn't removed.
4556
5280
  :param resolve_conflicts: How to resolve field value conflicts for an Amazon EKS add-on. Conflicts are handled based on the value you choose: - *None* – If the self-managed version of the add-on is installed on your cluster, Amazon EKS doesn't change the value. Creation of the add-on might fail. - *Overwrite* – If the self-managed version of the add-on is installed on your cluster and the Amazon EKS default value is different than the existing value, Amazon EKS changes the value to the Amazon EKS default value. - *Preserve* – This is similar to the NONE option. If the self-managed version of the add-on is installed on your cluster Amazon EKS doesn't change the add-on resource properties. Creation of the add-on might fail if conflicts are detected. This option works differently during the update operation. For more information, see `UpdateAddon <https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html>`_ . If you don't currently have the self-managed version of the add-on installed on your cluster, the Amazon EKS add-on is installed. Amazon EKS sets all values to default values, regardless of the option that you specify.
4557
5281
  :param service_account_role_arn: The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see `Amazon EKS node IAM role <https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html>`_ in the *Amazon EKS User Guide* . .. epigraph:: To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see `Enabling IAM roles for service accounts on your cluster <https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html>`_ in the *Amazon EKS User Guide* .
@@ -4658,7 +5382,11 @@ class CfnAddonProps:
4658
5382
  def pod_identity_associations(
4659
5383
  self,
4660
5384
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnAddon.PodIdentityAssociationProperty]]]]:
4661
- '''An array of pod identities to apply to this add-on.
5385
+ '''An array of Pod Identity Assocations owned by the Addon.
5386
+
5387
+ Each EKS Pod Identity association maps a role to a service account in a namespace in the cluster.
5388
+
5389
+ For more information, see `Attach an IAM Role to an Amazon EKS add-on using Pod Identity <https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html>`_ in the EKS User Guide.
4662
5390
 
4663
5391
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-addon.html#cfn-eks-addon-podidentityassociations
4664
5392
  '''
@@ -10907,34 +11635,144 @@ class HelmChartProps(HelmChartOptions):
10907
11635
  return typing.cast(typing.Optional[builtins.str], result)
10908
11636
 
10909
11637
  @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)
11638
+ def wait(self) -> typing.Optional[builtins.bool]:
11639
+ '''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.
11640
+
11641
+ :default: - Helm will not wait before marking release as successful
11642
+ '''
11643
+ result = self._values.get("wait")
11644
+ return typing.cast(typing.Optional[builtins.bool], result)
11645
+
11646
+ @builtins.property
11647
+ def cluster(self) -> "ICluster":
11648
+ '''The EKS cluster to apply this configuration to.
11649
+
11650
+ [disable-awslint:ref-via-interface]
11651
+ '''
11652
+ result = self._values.get("cluster")
11653
+ assert result is not None, "Required property 'cluster' is missing"
11654
+ return typing.cast("ICluster", result)
11655
+
11656
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
11657
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
11658
+
11659
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
11660
+ return not (rhs == self)
11661
+
11662
+ def __repr__(self) -> str:
11663
+ return "HelmChartProps(%s)" % ", ".join(
11664
+ k + "=" + repr(v) for k, v in self._values.items()
11665
+ )
11666
+
11667
+
11668
+ @jsii.interface(jsii_type="aws-cdk-lib.aws_eks.IAccessEntry")
11669
+ class IAccessEntry(_IResource_c80c4260, typing_extensions.Protocol):
11670
+ '''Represents an access entry in an Amazon EKS cluster.
11671
+
11672
+ An access entry defines the permissions and scope for a user or role to access an Amazon EKS cluster.
11673
+
11674
+ :extends: IResource *
11675
+ :interface: IAccessEntry
11676
+ :property: {string} accessEntryArn - The Amazon Resource Name (ARN) of the access entry.
11677
+ '''
11678
+
11679
+ @builtins.property
11680
+ @jsii.member(jsii_name="accessEntryArn")
11681
+ def access_entry_arn(self) -> builtins.str:
11682
+ '''The Amazon Resource Name (ARN) of the access entry.
11683
+
11684
+ :attribute: true
11685
+ '''
11686
+ ...
11687
+
11688
+ @builtins.property
11689
+ @jsii.member(jsii_name="accessEntryName")
11690
+ def access_entry_name(self) -> builtins.str:
11691
+ '''The name of the access entry.
11692
+
11693
+ :attribute: true
11694
+ '''
11695
+ ...
11696
+
11697
+
11698
+ class _IAccessEntryProxy(
11699
+ jsii.proxy_for(_IResource_c80c4260), # type: ignore[misc]
11700
+ ):
11701
+ '''Represents an access entry in an Amazon EKS cluster.
11702
+
11703
+ An access entry defines the permissions and scope for a user or role to access an Amazon EKS cluster.
11704
+
11705
+ :extends: IResource *
11706
+ :interface: IAccessEntry
11707
+ :property: {string} accessEntryArn - The Amazon Resource Name (ARN) of the access entry.
11708
+ '''
11709
+
11710
+ __jsii_type__: typing.ClassVar[str] = "aws-cdk-lib.aws_eks.IAccessEntry"
11711
+
11712
+ @builtins.property
11713
+ @jsii.member(jsii_name="accessEntryArn")
11714
+ def access_entry_arn(self) -> builtins.str:
11715
+ '''The Amazon Resource Name (ARN) of the access entry.
11716
+
11717
+ :attribute: true
11718
+ '''
11719
+ return typing.cast(builtins.str, jsii.get(self, "accessEntryArn"))
11720
+
11721
+ @builtins.property
11722
+ @jsii.member(jsii_name="accessEntryName")
11723
+ def access_entry_name(self) -> builtins.str:
11724
+ '''The name of the access entry.
11725
+
11726
+ :attribute: true
11727
+ '''
11728
+ return typing.cast(builtins.str, jsii.get(self, "accessEntryName"))
11729
+
11730
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
11731
+ typing.cast(typing.Any, IAccessEntry).__jsii_proxy_class__ = lambda : _IAccessEntryProxy
11732
+
11733
+
11734
+ @jsii.interface(jsii_type="aws-cdk-lib.aws_eks.IAccessPolicy")
11735
+ class IAccessPolicy(typing_extensions.Protocol):
11736
+ '''Represents an access policy that defines the permissions and scope for a user or role to access an Amazon EKS cluster.
11737
+
11738
+ :interface: IAccessPolicy
11739
+ '''
11740
+
11741
+ @builtins.property
11742
+ @jsii.member(jsii_name="accessScope")
11743
+ def access_scope(self) -> AccessScope:
11744
+ '''The scope of the access policy, which determines the level of access granted.'''
11745
+ ...
10917
11746
 
10918
11747
  @builtins.property
10919
- def cluster(self) -> "ICluster":
10920
- '''The EKS cluster to apply this configuration to.
11748
+ @jsii.member(jsii_name="policy")
11749
+ def policy(self) -> builtins.str:
11750
+ '''The access policy itself, which defines the specific permissions.'''
11751
+ ...
10921
11752
 
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
11753
 
10928
- def __eq__(self, rhs: typing.Any) -> builtins.bool:
10929
- return isinstance(rhs, self.__class__) and rhs._values == self._values
11754
+ class _IAccessPolicyProxy:
11755
+ '''Represents an access policy that defines the permissions and scope for a user or role to access an Amazon EKS cluster.
10930
11756
 
10931
- def __ne__(self, rhs: typing.Any) -> builtins.bool:
10932
- return not (rhs == self)
11757
+ :interface: IAccessPolicy
11758
+ '''
10933
11759
 
10934
- def __repr__(self) -> str:
10935
- return "HelmChartProps(%s)" % ", ".join(
10936
- k + "=" + repr(v) for k, v in self._values.items()
10937
- )
11760
+ __jsii_type__: typing.ClassVar[str] = "aws-cdk-lib.aws_eks.IAccessPolicy"
11761
+
11762
+ @builtins.property
11763
+ @jsii.member(jsii_name="accessScope")
11764
+ def access_scope(self) -> AccessScope:
11765
+ '''The scope of the access policy, which determines the level of access granted.'''
11766
+ return typing.cast(AccessScope, jsii.get(self, "accessScope"))
11767
+
11768
+ @builtins.property
11769
+ @jsii.member(jsii_name="policy")
11770
+ def policy(self) -> builtins.str:
11771
+ '''The access policy itself, which defines the specific permissions.'''
11772
+ return typing.cast(builtins.str, jsii.get(self, "policy"))
11773
+
11774
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
11775
+ typing.cast(typing.Any, IAccessPolicy).__jsii_proxy_class__ = lambda : _IAccessPolicyProxy
10938
11776
 
10939
11777
 
10940
11778
  @jsii.interface(jsii_type="aws-cdk-lib.aws_eks.ICluster")
@@ -11027,6 +11865,15 @@ class ICluster(_IResource_c80c4260, _IConnectable_10015a05, typing_extensions.Pr
11027
11865
  '''The VPC in which this Cluster was created.'''
11028
11866
  ...
11029
11867
 
11868
+ @builtins.property
11869
+ @jsii.member(jsii_name="authenticationMode")
11870
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
11871
+ '''The authentication mode for the cluster.
11872
+
11873
+ :default: AuthenticationMode.CONFIG_MAP
11874
+ '''
11875
+ ...
11876
+
11030
11877
  @builtins.property
11031
11878
  @jsii.member(jsii_name="awscliLayer")
11032
11879
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
@@ -11378,6 +12225,15 @@ class _IClusterProxy(
11378
12225
  '''The VPC in which this Cluster was created.'''
11379
12226
  return typing.cast(_IVpc_f30d5663, jsii.get(self, "vpc"))
11380
12227
 
12228
+ @builtins.property
12229
+ @jsii.member(jsii_name="authenticationMode")
12230
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
12231
+ '''The authentication mode for the cluster.
12232
+
12233
+ :default: AuthenticationMode.CONFIG_MAP
12234
+ '''
12235
+ return typing.cast(typing.Optional[AuthenticationMode], jsii.get(self, "authenticationMode"))
12236
+
11381
12237
  @builtins.property
11382
12238
  @jsii.member(jsii_name="awscliLayer")
11383
12239
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
@@ -12931,15 +13787,16 @@ class KubernetesVersion(
12931
13787
 
12932
13788
  Example::
12933
13789
 
12934
- cluster = eks.Cluster(self, "HelloEKS",
12935
- version=eks.KubernetesVersion.V1_30,
12936
- default_capacity=0
13790
+ # or
13791
+ # vpc: ec2.Vpc
13792
+ eks.Cluster(self, "MyCluster",
13793
+ kubectl_memory=Size.gibibytes(4),
13794
+ version=eks.KubernetesVersion.V1_30
12937
13795
  )
12938
-
12939
- cluster.add_nodegroup_capacity("custom-node-group",
12940
- instance_types=[ec2.InstanceType("m5.large")],
12941
- min_size=4,
12942
- disk_size=100
13796
+ eks.Cluster.from_cluster_attributes(self, "MyCluster",
13797
+ kubectl_memory=Size.gibibytes(4),
13798
+ vpc=vpc,
13799
+ cluster_name="cluster-name"
12943
13800
  )
12944
13801
  '''
12945
13802
 
@@ -15232,6 +16089,204 @@ class TaintSpec:
15232
16089
  )
15233
16090
 
15234
16091
 
16092
+ @jsii.implements(IAccessEntry)
16093
+ class AccessEntry(
16094
+ _Resource_45bc6135,
16095
+ metaclass=jsii.JSIIMeta,
16096
+ jsii_type="aws-cdk-lib.aws_eks.AccessEntry",
16097
+ ):
16098
+ '''Represents an access entry in an Amazon EKS cluster.
16099
+
16100
+ An access entry defines the permissions and scope for a user or role to access an Amazon EKS cluster.
16101
+
16102
+ :implements: IAccessEntry
16103
+ :exampleMetadata: fixture=_generated
16104
+
16105
+ Example::
16106
+
16107
+ # The code below shows an example of how to instantiate this type.
16108
+ # The values are placeholders you should change.
16109
+ from aws_cdk import aws_eks as eks
16110
+
16111
+ # access_policy: eks.AccessPolicy
16112
+ # cluster: eks.Cluster
16113
+
16114
+ access_entry = eks.AccessEntry(self, "MyAccessEntry",
16115
+ access_policies=[access_policy],
16116
+ cluster=cluster,
16117
+ principal="principal",
16118
+
16119
+ # the properties below are optional
16120
+ access_entry_name="accessEntryName",
16121
+ access_entry_type=eks.AccessEntryType.STANDARD
16122
+ )
16123
+ '''
16124
+
16125
+ def __init__(
16126
+ self,
16127
+ scope: _constructs_77d1e7e8.Construct,
16128
+ id: builtins.str,
16129
+ *,
16130
+ access_policies: typing.Sequence[IAccessPolicy],
16131
+ cluster: ICluster,
16132
+ principal: builtins.str,
16133
+ access_entry_name: typing.Optional[builtins.str] = None,
16134
+ access_entry_type: typing.Optional[AccessEntryType] = None,
16135
+ ) -> None:
16136
+ '''
16137
+ :param scope: -
16138
+ :param id: -
16139
+ :param access_policies: The access policies that define the permissions and scope for the access entry.
16140
+ :param cluster: The Amazon EKS cluster to which the access entry applies.
16141
+ :param principal: The Amazon Resource Name (ARN) of the principal (user or role) to associate the access entry with.
16142
+ :param access_entry_name: The name of the AccessEntry. Default: - No access entry name is provided
16143
+ :param access_entry_type: The type of the AccessEntry. Default: STANDARD
16144
+ '''
16145
+ if __debug__:
16146
+ type_hints = typing.get_type_hints(_typecheckingstub__76acfe0dd4f79a87279c3d9cbf3bd8c7327733233aec66908901483da7f17d5b)
16147
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
16148
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
16149
+ props = AccessEntryProps(
16150
+ access_policies=access_policies,
16151
+ cluster=cluster,
16152
+ principal=principal,
16153
+ access_entry_name=access_entry_name,
16154
+ access_entry_type=access_entry_type,
16155
+ )
16156
+
16157
+ jsii.create(self.__class__, self, [scope, id, props])
16158
+
16159
+ @jsii.member(jsii_name="fromAccessEntryAttributes")
16160
+ @builtins.classmethod
16161
+ def from_access_entry_attributes(
16162
+ cls,
16163
+ scope: _constructs_77d1e7e8.Construct,
16164
+ id: builtins.str,
16165
+ *,
16166
+ access_entry_arn: builtins.str,
16167
+ access_entry_name: builtins.str,
16168
+ ) -> IAccessEntry:
16169
+ '''Imports an ``AccessEntry`` from its attributes.
16170
+
16171
+ :param scope: - The parent construct.
16172
+ :param id: - The ID of the imported construct.
16173
+ :param access_entry_arn: The Amazon Resource Name (ARN) of the access entry.
16174
+ :param access_entry_name: The name of the access entry.
16175
+
16176
+ :return: The imported access entry.
16177
+ '''
16178
+ if __debug__:
16179
+ type_hints = typing.get_type_hints(_typecheckingstub__f179e9982369f73f3bb7a13ff87f073fda0da2cd11932479d54f6d69d8849141)
16180
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
16181
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
16182
+ attrs = AccessEntryAttributes(
16183
+ access_entry_arn=access_entry_arn, access_entry_name=access_entry_name
16184
+ )
16185
+
16186
+ return typing.cast(IAccessEntry, jsii.sinvoke(cls, "fromAccessEntryAttributes", [scope, id, attrs]))
16187
+
16188
+ @jsii.member(jsii_name="addAccessPolicies")
16189
+ def add_access_policies(
16190
+ self,
16191
+ new_access_policies: typing.Sequence[IAccessPolicy],
16192
+ ) -> None:
16193
+ '''Add the access policies for this entry.
16194
+
16195
+ :param new_access_policies: - The new access policies to add.
16196
+ '''
16197
+ if __debug__:
16198
+ type_hints = typing.get_type_hints(_typecheckingstub__e1007432e51c3db7b596578b73c0068b372fc6af638d2adb2faa12db70799372)
16199
+ check_type(argname="argument new_access_policies", value=new_access_policies, expected_type=type_hints["new_access_policies"])
16200
+ return typing.cast(None, jsii.invoke(self, "addAccessPolicies", [new_access_policies]))
16201
+
16202
+ @builtins.property
16203
+ @jsii.member(jsii_name="accessEntryArn")
16204
+ def access_entry_arn(self) -> builtins.str:
16205
+ '''The Amazon Resource Name (ARN) of the access entry.'''
16206
+ return typing.cast(builtins.str, jsii.get(self, "accessEntryArn"))
16207
+
16208
+ @builtins.property
16209
+ @jsii.member(jsii_name="accessEntryName")
16210
+ def access_entry_name(self) -> builtins.str:
16211
+ '''The name of the access entry.'''
16212
+ return typing.cast(builtins.str, jsii.get(self, "accessEntryName"))
16213
+
16214
+
16215
+ @jsii.implements(IAccessPolicy)
16216
+ class AccessPolicy(
16217
+ metaclass=jsii.JSIIMeta,
16218
+ jsii_type="aws-cdk-lib.aws_eks.AccessPolicy",
16219
+ ):
16220
+ '''Represents an Amazon EKS Access Policy that implements the IAccessPolicy interface.
16221
+
16222
+ :implements: IAccessPolicy
16223
+ :exampleMetadata: infused
16224
+
16225
+ Example::
16226
+
16227
+ # AmazonEKSClusterAdminPolicy with `cluster` scope
16228
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSClusterAdminPolicy",
16229
+ access_scope_type=eks.AccessScopeType.CLUSTER
16230
+ )
16231
+ # AmazonEKSAdminPolicy with `namespace` scope
16232
+ eks.AccessPolicy.from_access_policy_name("AmazonEKSAdminPolicy",
16233
+ access_scope_type=eks.AccessScopeType.NAMESPACE,
16234
+ namespaces=["foo", "bar"]
16235
+ )
16236
+ '''
16237
+
16238
+ def __init__(
16239
+ self,
16240
+ *,
16241
+ access_scope: typing.Union[AccessScope, typing.Dict[builtins.str, typing.Any]],
16242
+ policy: AccessPolicyArn,
16243
+ ) -> None:
16244
+ '''Constructs a new instance of the AccessPolicy class.
16245
+
16246
+ :param access_scope: The scope of the access policy, which determines the level of access granted.
16247
+ :param policy: The access policy itself, which defines the specific permissions.
16248
+ '''
16249
+ props = AccessPolicyProps(access_scope=access_scope, policy=policy)
16250
+
16251
+ jsii.create(self.__class__, self, [props])
16252
+
16253
+ @jsii.member(jsii_name="fromAccessPolicyName")
16254
+ @builtins.classmethod
16255
+ def from_access_policy_name(
16256
+ cls,
16257
+ policy_name: builtins.str,
16258
+ *,
16259
+ access_scope_type: AccessScopeType,
16260
+ namespaces: typing.Optional[typing.Sequence[builtins.str]] = None,
16261
+ ) -> IAccessPolicy:
16262
+ '''Import AccessPolicy by name.
16263
+
16264
+ :param policy_name: -
16265
+ :param access_scope_type: The scope of the access policy. This determines the level of access granted by the policy.
16266
+ :param namespaces: An optional array of Kubernetes namespaces to which the access policy applies. Default: - no specific namespaces for this scope
16267
+ '''
16268
+ if __debug__:
16269
+ type_hints = typing.get_type_hints(_typecheckingstub__a928f26a921cd1d01ec556e4421fe3bf4a1ac17a9b598a554215bfae5af842aa)
16270
+ check_type(argname="argument policy_name", value=policy_name, expected_type=type_hints["policy_name"])
16271
+ options = AccessPolicyNameOptions(
16272
+ access_scope_type=access_scope_type, namespaces=namespaces
16273
+ )
16274
+
16275
+ return typing.cast(IAccessPolicy, jsii.sinvoke(cls, "fromAccessPolicyName", [policy_name, options]))
16276
+
16277
+ @builtins.property
16278
+ @jsii.member(jsii_name="accessScope")
16279
+ def access_scope(self) -> AccessScope:
16280
+ '''The scope of the access policy, which determines the level of access granted.'''
16281
+ return typing.cast(AccessScope, jsii.get(self, "accessScope"))
16282
+
16283
+ @builtins.property
16284
+ @jsii.member(jsii_name="policy")
16285
+ def policy(self) -> builtins.str:
16286
+ '''The access policy itself, which defines the specific permissions.'''
16287
+ return typing.cast(builtins.str, jsii.get(self, "policy"))
16288
+
16289
+
15235
16290
  @jsii.implements(ICluster)
15236
16291
  class Cluster(
15237
16292
  _Resource_45bc6135,
@@ -15247,18 +16302,16 @@ class Cluster(
15247
16302
 
15248
16303
  Example::
15249
16304
 
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"
16305
+ # or
16306
+ # vpc: ec2.Vpc
16307
+ eks.Cluster(self, "MyCluster",
16308
+ kubectl_memory=Size.gibibytes(4),
16309
+ version=eks.KubernetesVersion.V1_30
15256
16310
  )
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"
16311
+ eks.Cluster.from_cluster_attributes(self, "MyCluster",
16312
+ kubectl_memory=Size.gibibytes(4),
16313
+ vpc=vpc,
16314
+ cluster_name="cluster-name"
15262
16315
  )
15263
16316
  '''
15264
16317
 
@@ -15267,12 +16320,14 @@ class Cluster(
15267
16320
  scope: _constructs_77d1e7e8.Construct,
15268
16321
  id: builtins.str,
15269
16322
  *,
16323
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
15270
16324
  default_capacity: typing.Optional[jsii.Number] = None,
15271
16325
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
15272
16326
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
15273
16327
  kubectl_lambda_role: typing.Optional[_IRole_235f5d8e] = None,
15274
16328
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15275
16329
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
16330
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
15276
16331
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
15277
16332
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15278
16333
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -15303,12 +16358,14 @@ class Cluster(
15303
16358
 
15304
16359
  :param scope: a Construct, most likely a cdk.Stack created.
15305
16360
  :param id: the id of the Construct to create.
16361
+ :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
16362
  :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
16363
  :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
16364
  :param default_capacity_type: The default capacity type for the cluster. Default: NODEGROUP
15309
16365
  :param kubectl_lambda_role: The IAM role to pass to the Kubectl Lambda Handler. Default: - Default Lambda IAM Execution Role
15310
16366
  :param tags: The tags assigned to the EKS cluster. Default: - none
15311
16367
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
16368
+ :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
15312
16369
  :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
16370
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
15314
16371
  :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 +16397,14 @@ class Cluster(
15340
16397
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
15341
16398
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
15342
16399
  props = ClusterProps(
16400
+ bootstrap_cluster_creator_admin_permissions=bootstrap_cluster_creator_admin_permissions,
15343
16401
  default_capacity=default_capacity,
15344
16402
  default_capacity_instance=default_capacity_instance,
15345
16403
  default_capacity_type=default_capacity_type,
15346
16404
  kubectl_lambda_role=kubectl_lambda_role,
15347
16405
  tags=tags,
15348
16406
  alb_controller=alb_controller,
16407
+ authentication_mode=authentication_mode,
15349
16408
  awscli_layer=awscli_layer,
15350
16409
  cluster_handler_environment=cluster_handler_environment,
15351
16410
  cluster_handler_security_group=cluster_handler_security_group,
@@ -15933,6 +16992,30 @@ class Cluster(
15933
16992
 
15934
16993
  return typing.cast(builtins.str, jsii.invoke(self, "getServiceLoadBalancerAddress", [service_name, options]))
15935
16994
 
16995
+ @jsii.member(jsii_name="grantAccess")
16996
+ def grant_access(
16997
+ self,
16998
+ id: builtins.str,
16999
+ principal: builtins.str,
17000
+ access_policies: typing.Sequence[IAccessPolicy],
17001
+ ) -> None:
17002
+ '''Grants the specified IAM principal access to the EKS cluster based on the provided access policies.
17003
+
17004
+ This method creates an ``AccessEntry`` construct that grants the specified IAM principal the access permissions
17005
+ defined by the provided ``IAccessPolicy`` array. This allows the IAM principal to perform the actions permitted
17006
+ by the access policies within the EKS cluster.
17007
+
17008
+ :param id: - The ID of the ``AccessEntry`` construct to be created.
17009
+ :param principal: - The IAM principal (role or user) to be granted access to the EKS cluster.
17010
+ :param access_policies: - An array of ``IAccessPolicy`` objects that define the access permissions to be granted to the IAM principal.
17011
+ '''
17012
+ if __debug__:
17013
+ type_hints = typing.get_type_hints(_typecheckingstub__c595337c9bbbcf6eb001ec015e579e32f72cb323ae83c9fa92eef98034ea8936)
17014
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
17015
+ check_type(argname="argument principal", value=principal, expected_type=type_hints["principal"])
17016
+ check_type(argname="argument access_policies", value=access_policies, expected_type=type_hints["access_policies"])
17017
+ return typing.cast(None, jsii.invoke(self, "grantAccess", [id, principal, access_policies]))
17018
+
15936
17019
  @builtins.property
15937
17020
  @jsii.member(jsii_name="adminRole")
15938
17021
  def admin_role(self) -> _Role_e8c6e11f:
@@ -16070,6 +17153,19 @@ class Cluster(
16070
17153
  '''
16071
17154
  return typing.cast(typing.Optional[AlbController], jsii.get(self, "albController"))
16072
17155
 
17156
+ @builtins.property
17157
+ @jsii.member(jsii_name="authenticationMode")
17158
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
17159
+ '''The authentication mode for the Amazon EKS cluster.
17160
+
17161
+ The authentication mode determines how users and applications authenticate to the Kubernetes API server.
17162
+
17163
+ :default: CONFIG_MAP.
17164
+
17165
+ :property: {AuthenticationMode} [authenticationMode] - The authentication mode for the Amazon EKS cluster.
17166
+ '''
17167
+ return typing.cast(typing.Optional[AuthenticationMode], jsii.get(self, "authenticationMode"))
17168
+
16073
17169
  @builtins.property
16074
17170
  @jsii.member(jsii_name="awscliLayer")
16075
17171
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
@@ -16223,6 +17319,7 @@ class Cluster(
16223
17319
  "vpc": "vpc",
16224
17320
  "vpc_subnets": "vpcSubnets",
16225
17321
  "alb_controller": "albController",
17322
+ "authentication_mode": "authenticationMode",
16226
17323
  "awscli_layer": "awscliLayer",
16227
17324
  "cluster_handler_environment": "clusterHandlerEnvironment",
16228
17325
  "cluster_handler_security_group": "clusterHandlerSecurityGroup",
@@ -16255,6 +17352,7 @@ class ClusterOptions(CommonClusterOptions):
16255
17352
  vpc: typing.Optional[_IVpc_f30d5663] = None,
16256
17353
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
16257
17354
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
17355
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
16258
17356
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
16259
17357
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16260
17358
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -16284,6 +17382,7 @@ class ClusterOptions(CommonClusterOptions):
16284
17382
  :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
17383
  :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
17384
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
17385
+ :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
16287
17386
  :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
17387
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
16289
17388
  :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 +17438,7 @@ class ClusterOptions(CommonClusterOptions):
16339
17438
  policy=policy,
16340
17439
  repository="repository"
16341
17440
  ),
17441
+ authentication_mode=eks.AuthenticationMode.CONFIG_MAP,
16342
17442
  awscli_layer=layer_version,
16343
17443
  cluster_handler_environment={
16344
17444
  "cluster_handler_environment_key": "clusterHandlerEnvironment"
@@ -16389,6 +17489,7 @@ class ClusterOptions(CommonClusterOptions):
16389
17489
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
16390
17490
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
16391
17491
  check_type(argname="argument alb_controller", value=alb_controller, expected_type=type_hints["alb_controller"])
17492
+ check_type(argname="argument authentication_mode", value=authentication_mode, expected_type=type_hints["authentication_mode"])
16392
17493
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
16393
17494
  check_type(argname="argument cluster_handler_environment", value=cluster_handler_environment, expected_type=type_hints["cluster_handler_environment"])
16394
17495
  check_type(argname="argument cluster_handler_security_group", value=cluster_handler_security_group, expected_type=type_hints["cluster_handler_security_group"])
@@ -16425,6 +17526,8 @@ class ClusterOptions(CommonClusterOptions):
16425
17526
  self._values["vpc_subnets"] = vpc_subnets
16426
17527
  if alb_controller is not None:
16427
17528
  self._values["alb_controller"] = alb_controller
17529
+ if authentication_mode is not None:
17530
+ self._values["authentication_mode"] = authentication_mode
16428
17531
  if awscli_layer is not None:
16429
17532
  self._values["awscli_layer"] = awscli_layer
16430
17533
  if cluster_handler_environment is not None:
@@ -16548,6 +17651,15 @@ class ClusterOptions(CommonClusterOptions):
16548
17651
  result = self._values.get("alb_controller")
16549
17652
  return typing.cast(typing.Optional[AlbControllerOptions], result)
16550
17653
 
17654
+ @builtins.property
17655
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
17656
+ '''The desired authentication mode for the cluster.
17657
+
17658
+ :default: AuthenticationMode.CONFIG_MAP
17659
+ '''
17660
+ result = self._values.get("authentication_mode")
17661
+ return typing.cast(typing.Optional[AuthenticationMode], result)
17662
+
16551
17663
  @builtins.property
16552
17664
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
16553
17665
  '''An AWS Lambda layer that contains the ``aws`` CLI.
@@ -16786,6 +17898,7 @@ class ClusterOptions(CommonClusterOptions):
16786
17898
  "vpc": "vpc",
16787
17899
  "vpc_subnets": "vpcSubnets",
16788
17900
  "alb_controller": "albController",
17901
+ "authentication_mode": "authenticationMode",
16789
17902
  "awscli_layer": "awscliLayer",
16790
17903
  "cluster_handler_environment": "clusterHandlerEnvironment",
16791
17904
  "cluster_handler_security_group": "clusterHandlerSecurityGroup",
@@ -16803,6 +17916,7 @@ class ClusterOptions(CommonClusterOptions):
16803
17916
  "prune": "prune",
16804
17917
  "secrets_encryption_key": "secretsEncryptionKey",
16805
17918
  "service_ipv4_cidr": "serviceIpv4Cidr",
17919
+ "bootstrap_cluster_creator_admin_permissions": "bootstrapClusterCreatorAdminPermissions",
16806
17920
  "default_capacity": "defaultCapacity",
16807
17921
  "default_capacity_instance": "defaultCapacityInstance",
16808
17922
  "default_capacity_type": "defaultCapacityType",
@@ -16823,6 +17937,7 @@ class ClusterProps(ClusterOptions):
16823
17937
  vpc: typing.Optional[_IVpc_f30d5663] = None,
16824
17938
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
16825
17939
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
17940
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
16826
17941
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
16827
17942
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16828
17943
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -16840,6 +17955,7 @@ class ClusterProps(ClusterOptions):
16840
17955
  prune: typing.Optional[builtins.bool] = None,
16841
17956
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
16842
17957
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
17958
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
16843
17959
  default_capacity: typing.Optional[jsii.Number] = None,
16844
17960
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
16845
17961
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
@@ -16857,6 +17973,7 @@ class ClusterProps(ClusterOptions):
16857
17973
  :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
17974
  :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
17975
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
17976
+ :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
16860
17977
  :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
17978
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
16862
17979
  :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 +17991,7 @@ class ClusterProps(ClusterOptions):
16874
17991
  :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
17992
  :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
17993
  :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
17994
+ :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
17995
  :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
17996
  :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
17997
  :param default_capacity_type: The default capacity type for the cluster. Default: NODEGROUP
@@ -16909,6 +18027,7 @@ class ClusterProps(ClusterOptions):
16909
18027
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
16910
18028
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
16911
18029
  check_type(argname="argument alb_controller", value=alb_controller, expected_type=type_hints["alb_controller"])
18030
+ check_type(argname="argument authentication_mode", value=authentication_mode, expected_type=type_hints["authentication_mode"])
16912
18031
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
16913
18032
  check_type(argname="argument cluster_handler_environment", value=cluster_handler_environment, expected_type=type_hints["cluster_handler_environment"])
16914
18033
  check_type(argname="argument cluster_handler_security_group", value=cluster_handler_security_group, expected_type=type_hints["cluster_handler_security_group"])
@@ -16926,6 +18045,7 @@ class ClusterProps(ClusterOptions):
16926
18045
  check_type(argname="argument prune", value=prune, expected_type=type_hints["prune"])
16927
18046
  check_type(argname="argument secrets_encryption_key", value=secrets_encryption_key, expected_type=type_hints["secrets_encryption_key"])
16928
18047
  check_type(argname="argument service_ipv4_cidr", value=service_ipv4_cidr, expected_type=type_hints["service_ipv4_cidr"])
18048
+ 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
18049
  check_type(argname="argument default_capacity", value=default_capacity, expected_type=type_hints["default_capacity"])
16930
18050
  check_type(argname="argument default_capacity_instance", value=default_capacity_instance, expected_type=type_hints["default_capacity_instance"])
16931
18051
  check_type(argname="argument default_capacity_type", value=default_capacity_type, expected_type=type_hints["default_capacity_type"])
@@ -16950,6 +18070,8 @@ class ClusterProps(ClusterOptions):
16950
18070
  self._values["vpc_subnets"] = vpc_subnets
16951
18071
  if alb_controller is not None:
16952
18072
  self._values["alb_controller"] = alb_controller
18073
+ if authentication_mode is not None:
18074
+ self._values["authentication_mode"] = authentication_mode
16953
18075
  if awscli_layer is not None:
16954
18076
  self._values["awscli_layer"] = awscli_layer
16955
18077
  if cluster_handler_environment is not None:
@@ -16984,6 +18106,8 @@ class ClusterProps(ClusterOptions):
16984
18106
  self._values["secrets_encryption_key"] = secrets_encryption_key
16985
18107
  if service_ipv4_cidr is not None:
16986
18108
  self._values["service_ipv4_cidr"] = service_ipv4_cidr
18109
+ if bootstrap_cluster_creator_admin_permissions is not None:
18110
+ self._values["bootstrap_cluster_creator_admin_permissions"] = bootstrap_cluster_creator_admin_permissions
16987
18111
  if default_capacity is not None:
16988
18112
  self._values["default_capacity"] = default_capacity
16989
18113
  if default_capacity_instance is not None:
@@ -17083,6 +18207,15 @@ class ClusterProps(ClusterOptions):
17083
18207
  result = self._values.get("alb_controller")
17084
18208
  return typing.cast(typing.Optional[AlbControllerOptions], result)
17085
18209
 
18210
+ @builtins.property
18211
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
18212
+ '''The desired authentication mode for the cluster.
18213
+
18214
+ :default: AuthenticationMode.CONFIG_MAP
18215
+ '''
18216
+ result = self._values.get("authentication_mode")
18217
+ return typing.cast(typing.Optional[AuthenticationMode], result)
18218
+
17086
18219
  @builtins.property
17087
18220
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
17088
18221
  '''An AWS Lambda layer that contains the ``aws`` CLI.
@@ -17296,6 +18429,19 @@ class ClusterProps(ClusterOptions):
17296
18429
  result = self._values.get("service_ipv4_cidr")
17297
18430
  return typing.cast(typing.Optional[builtins.str], result)
17298
18431
 
18432
+ @builtins.property
18433
+ def bootstrap_cluster_creator_admin_permissions(
18434
+ self,
18435
+ ) -> typing.Optional[builtins.bool]:
18436
+ '''Whether or not IAM principal of the cluster creator was set as a cluster admin access entry during cluster creation time.
18437
+
18438
+ Changing this value after the cluster has been created will result in the cluster being replaced.
18439
+
18440
+ :default: true
18441
+ '''
18442
+ result = self._values.get("bootstrap_cluster_creator_admin_permissions")
18443
+ return typing.cast(typing.Optional[builtins.bool], result)
18444
+
17299
18445
  @builtins.property
17300
18446
  def default_capacity(self) -> typing.Optional[jsii.Number]:
17301
18447
  '''Number of instances to allocate as an initial capacity for this cluster.
@@ -17389,6 +18535,7 @@ class FargateCluster(
17389
18535
  *,
17390
18536
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,
17391
18537
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
18538
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
17392
18539
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
17393
18540
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
17394
18541
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -17420,6 +18567,7 @@ class FargateCluster(
17420
18567
  :param id: -
17421
18568
  :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
18569
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
18570
+ :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
17423
18571
  :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
18572
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
17425
18573
  :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 +18601,7 @@ class FargateCluster(
17453
18601
  props = FargateClusterProps(
17454
18602
  default_profile=default_profile,
17455
18603
  alb_controller=alb_controller,
18604
+ authentication_mode=authentication_mode,
17456
18605
  awscli_layer=awscli_layer,
17457
18606
  cluster_handler_environment=cluster_handler_environment,
17458
18607
  cluster_handler_security_group=cluster_handler_security_group,
@@ -17502,6 +18651,7 @@ class FargateCluster(
17502
18651
  "vpc": "vpc",
17503
18652
  "vpc_subnets": "vpcSubnets",
17504
18653
  "alb_controller": "albController",
18654
+ "authentication_mode": "authenticationMode",
17505
18655
  "awscli_layer": "awscliLayer",
17506
18656
  "cluster_handler_environment": "clusterHandlerEnvironment",
17507
18657
  "cluster_handler_security_group": "clusterHandlerSecurityGroup",
@@ -17535,6 +18685,7 @@ class FargateClusterProps(ClusterOptions):
17535
18685
  vpc: typing.Optional[_IVpc_f30d5663] = None,
17536
18686
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
17537
18687
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
18688
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
17538
18689
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
17539
18690
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
17540
18691
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -17565,6 +18716,7 @@ class FargateClusterProps(ClusterOptions):
17565
18716
  :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
18717
  :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
18718
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
18719
+ :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
17568
18720
  :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
18721
  :param cluster_handler_environment: Custom environment variables when interacting with the EKS endpoint to manage the cluster lifecycle. Default: - No environment variables.
17570
18722
  :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 +18759,7 @@ class FargateClusterProps(ClusterOptions):
17607
18759
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
17608
18760
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
17609
18761
  check_type(argname="argument alb_controller", value=alb_controller, expected_type=type_hints["alb_controller"])
18762
+ check_type(argname="argument authentication_mode", value=authentication_mode, expected_type=type_hints["authentication_mode"])
17610
18763
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
17611
18764
  check_type(argname="argument cluster_handler_environment", value=cluster_handler_environment, expected_type=type_hints["cluster_handler_environment"])
17612
18765
  check_type(argname="argument cluster_handler_security_group", value=cluster_handler_security_group, expected_type=type_hints["cluster_handler_security_group"])
@@ -17644,6 +18797,8 @@ class FargateClusterProps(ClusterOptions):
17644
18797
  self._values["vpc_subnets"] = vpc_subnets
17645
18798
  if alb_controller is not None:
17646
18799
  self._values["alb_controller"] = alb_controller
18800
+ if authentication_mode is not None:
18801
+ self._values["authentication_mode"] = authentication_mode
17647
18802
  if awscli_layer is not None:
17648
18803
  self._values["awscli_layer"] = awscli_layer
17649
18804
  if cluster_handler_environment is not None:
@@ -17769,6 +18924,15 @@ class FargateClusterProps(ClusterOptions):
17769
18924
  result = self._values.get("alb_controller")
17770
18925
  return typing.cast(typing.Optional[AlbControllerOptions], result)
17771
18926
 
18927
+ @builtins.property
18928
+ def authentication_mode(self) -> typing.Optional[AuthenticationMode]:
18929
+ '''The desired authentication mode for the cluster.
18930
+
18931
+ :default: AuthenticationMode.CONFIG_MAP
18932
+ '''
18933
+ result = self._values.get("authentication_mode")
18934
+ return typing.cast(typing.Optional[AuthenticationMode], result)
18935
+
17772
18936
  @builtins.property
17773
18937
  def awscli_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
17774
18938
  '''An AWS Lambda layer that contains the ``aws`` CLI.
@@ -18078,11 +19242,22 @@ class IngressLoadBalancerAddressOptions(ServiceLoadBalancerAddressOptions):
18078
19242
 
18079
19243
 
18080
19244
  __all__ = [
19245
+ "AccessEntry",
19246
+ "AccessEntryAttributes",
19247
+ "AccessEntryProps",
19248
+ "AccessEntryType",
19249
+ "AccessPolicy",
19250
+ "AccessPolicyArn",
19251
+ "AccessPolicyNameOptions",
19252
+ "AccessPolicyProps",
19253
+ "AccessScope",
19254
+ "AccessScopeType",
18081
19255
  "AlbController",
18082
19256
  "AlbControllerOptions",
18083
19257
  "AlbControllerProps",
18084
19258
  "AlbControllerVersion",
18085
19259
  "AlbScheme",
19260
+ "AuthenticationMode",
18086
19261
  "AutoScalingGroupCapacityOptions",
18087
19262
  "AutoScalingGroupOptions",
18088
19263
  "AwsAuth",
@@ -18124,6 +19299,8 @@ __all__ = [
18124
19299
  "HelmChart",
18125
19300
  "HelmChartOptions",
18126
19301
  "HelmChartProps",
19302
+ "IAccessEntry",
19303
+ "IAccessPolicy",
18127
19304
  "ICluster",
18128
19305
  "IKubectlProvider",
18129
19306
  "INodegroup",
@@ -18162,6 +19339,61 @@ __all__ = [
18162
19339
 
18163
19340
  publication.publish()
18164
19341
 
19342
+ def _typecheckingstub__ea57d074f938dd093d38b977c20869681c2abd3bacc2931046328147dc4d8d72(
19343
+ *,
19344
+ access_entry_arn: builtins.str,
19345
+ access_entry_name: builtins.str,
19346
+ ) -> None:
19347
+ """Type checking stubs"""
19348
+ pass
19349
+
19350
+ def _typecheckingstub__0cc467f068aa2e977dd81e9c0227cfe45f7381ea6d31cea9c6f7f80e6d83e048(
19351
+ *,
19352
+ access_policies: typing.Sequence[IAccessPolicy],
19353
+ cluster: ICluster,
19354
+ principal: builtins.str,
19355
+ access_entry_name: typing.Optional[builtins.str] = None,
19356
+ access_entry_type: typing.Optional[AccessEntryType] = None,
19357
+ ) -> None:
19358
+ """Type checking stubs"""
19359
+ pass
19360
+
19361
+ def _typecheckingstub__0ac946189967c669f9d1c47c0772f99ed1ce20197e6c76e4496836bbe19d2a72(
19362
+ policy_name: builtins.str,
19363
+ ) -> None:
19364
+ """Type checking stubs"""
19365
+ pass
19366
+
19367
+ def _typecheckingstub__23236f8d1dae1650ef58623c900288d55afe1fd4ead26b7b1aff290d073de854(
19368
+ policy_name: builtins.str,
19369
+ ) -> None:
19370
+ """Type checking stubs"""
19371
+ pass
19372
+
19373
+ def _typecheckingstub__249ef277acd24f14314e76608ae6685b8ec176bb0872ba8327c446714e5afaee(
19374
+ *,
19375
+ access_scope_type: AccessScopeType,
19376
+ namespaces: typing.Optional[typing.Sequence[builtins.str]] = None,
19377
+ ) -> None:
19378
+ """Type checking stubs"""
19379
+ pass
19380
+
19381
+ def _typecheckingstub__d76ffc136ce61df3ec4331aefef6219d2ab1e0d4a6c6da1cd604f5d3a29a1c20(
19382
+ *,
19383
+ access_scope: typing.Union[AccessScope, typing.Dict[builtins.str, typing.Any]],
19384
+ policy: AccessPolicyArn,
19385
+ ) -> None:
19386
+ """Type checking stubs"""
19387
+ pass
19388
+
19389
+ def _typecheckingstub__5f979c2154a9a6bd2f77cf7ff51d6f83944d3c1290fcb70cdab0b403b6a0a8f8(
19390
+ *,
19391
+ type: AccessScopeType,
19392
+ namespaces: typing.Optional[typing.Sequence[builtins.str]] = None,
19393
+ ) -> None:
19394
+ """Type checking stubs"""
19395
+ pass
19396
+
18165
19397
  def _typecheckingstub__5e2ca421e3f17c3114d53057ba096ab3f90bd3b8ed6c2e0f75f61c88dd5aed4b(
18166
19398
  scope: _constructs_77d1e7e8.Construct,
18167
19399
  id: builtins.str,
@@ -19715,16 +20947,56 @@ def _typecheckingstub__be119d20277d81d5cacb542dcf0ff7927e8c934305e8be443e95ce321
19715
20947
  """Type checking stubs"""
19716
20948
  pass
19717
20949
 
20950
+ def _typecheckingstub__76acfe0dd4f79a87279c3d9cbf3bd8c7327733233aec66908901483da7f17d5b(
20951
+ scope: _constructs_77d1e7e8.Construct,
20952
+ id: builtins.str,
20953
+ *,
20954
+ access_policies: typing.Sequence[IAccessPolicy],
20955
+ cluster: ICluster,
20956
+ principal: builtins.str,
20957
+ access_entry_name: typing.Optional[builtins.str] = None,
20958
+ access_entry_type: typing.Optional[AccessEntryType] = None,
20959
+ ) -> None:
20960
+ """Type checking stubs"""
20961
+ pass
20962
+
20963
+ def _typecheckingstub__f179e9982369f73f3bb7a13ff87f073fda0da2cd11932479d54f6d69d8849141(
20964
+ scope: _constructs_77d1e7e8.Construct,
20965
+ id: builtins.str,
20966
+ *,
20967
+ access_entry_arn: builtins.str,
20968
+ access_entry_name: builtins.str,
20969
+ ) -> None:
20970
+ """Type checking stubs"""
20971
+ pass
20972
+
20973
+ def _typecheckingstub__e1007432e51c3db7b596578b73c0068b372fc6af638d2adb2faa12db70799372(
20974
+ new_access_policies: typing.Sequence[IAccessPolicy],
20975
+ ) -> None:
20976
+ """Type checking stubs"""
20977
+ pass
20978
+
20979
+ def _typecheckingstub__a928f26a921cd1d01ec556e4421fe3bf4a1ac17a9b598a554215bfae5af842aa(
20980
+ policy_name: builtins.str,
20981
+ *,
20982
+ access_scope_type: AccessScopeType,
20983
+ namespaces: typing.Optional[typing.Sequence[builtins.str]] = None,
20984
+ ) -> None:
20985
+ """Type checking stubs"""
20986
+ pass
20987
+
19718
20988
  def _typecheckingstub__786576ad54eacdb9ab8e92277c0fd07f813bc56d4243937f3b5a85c0c575cac9(
19719
20989
  scope: _constructs_77d1e7e8.Construct,
19720
20990
  id: builtins.str,
19721
20991
  *,
20992
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
19722
20993
  default_capacity: typing.Optional[jsii.Number] = None,
19723
20994
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
19724
20995
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
19725
20996
  kubectl_lambda_role: typing.Optional[_IRole_235f5d8e] = None,
19726
20997
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19727
20998
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
20999
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
19728
21000
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19729
21001
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19730
21002
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -19939,6 +21211,14 @@ def _typecheckingstub__1125553e51a293d46862ded8c9242c2427ed871d469da6db3ac9d9ace
19939
21211
  """Type checking stubs"""
19940
21212
  pass
19941
21213
 
21214
+ def _typecheckingstub__c595337c9bbbcf6eb001ec015e579e32f72cb323ae83c9fa92eef98034ea8936(
21215
+ id: builtins.str,
21216
+ principal: builtins.str,
21217
+ access_policies: typing.Sequence[IAccessPolicy],
21218
+ ) -> None:
21219
+ """Type checking stubs"""
21220
+ pass
21221
+
19942
21222
  def _typecheckingstub__0b45b97fda36b43e872f90f9fe4cde65de855b50b3acfd236c1f400ef40c0cb1(
19943
21223
  *,
19944
21224
  version: KubernetesVersion,
@@ -19950,6 +21230,7 @@ def _typecheckingstub__0b45b97fda36b43e872f90f9fe4cde65de855b50b3acfd236c1f400ef
19950
21230
  vpc: typing.Optional[_IVpc_f30d5663] = None,
19951
21231
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
19952
21232
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21233
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
19953
21234
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19954
21235
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19955
21236
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -19982,6 +21263,7 @@ def _typecheckingstub__ce7a73a63de29ba5e5b5cd5cabde7aca1c4bc7d119de52fc4c0f11d99
19982
21263
  vpc: typing.Optional[_IVpc_f30d5663] = None,
19983
21264
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
19984
21265
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21266
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
19985
21267
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19986
21268
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19987
21269
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -19999,6 +21281,7 @@ def _typecheckingstub__ce7a73a63de29ba5e5b5cd5cabde7aca1c4bc7d119de52fc4c0f11d99
19999
21281
  prune: typing.Optional[builtins.bool] = None,
20000
21282
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
20001
21283
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
21284
+ bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
20002
21285
  default_capacity: typing.Optional[jsii.Number] = None,
20003
21286
  default_capacity_instance: typing.Optional[_InstanceType_f64915b9] = None,
20004
21287
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
@@ -20014,6 +21297,7 @@ def _typecheckingstub__ae166d791f5d5176f3386726c22bc44afedf5d336437a3513e3740387
20014
21297
  *,
20015
21298
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,
20016
21299
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21300
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
20017
21301
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
20018
21302
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
20019
21303
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
@@ -20054,6 +21338,7 @@ def _typecheckingstub__f11c7f989209f6213cb855d2846bb0b2b79a6a2b85eb0d65939e981df
20054
21338
  vpc: typing.Optional[_IVpc_f30d5663] = None,
20055
21339
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
20056
21340
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
21341
+ authentication_mode: typing.Optional[AuthenticationMode] = None,
20057
21342
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
20058
21343
  cluster_handler_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
20059
21344
  cluster_handler_security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,