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