aws / aws-cdk

The AWS Cloud Development Kit is a framework for defining cloud infrastructure in code
https://aws.amazon.com/cdk
Apache License 2.0
11.55k stars 3.87k forks source link

EKS: Automatically Generated Cluster Name Can Exceed 100 Characters #30632

Open hakenmt opened 3 months ago

hakenmt commented 3 months ago

Describe the bug

The automatic naming of a cluster is impacted by the path of the resource. In some circumstances this can cause the cluster name to exceed 100 characters, which exceeds the limit for EKS, https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html and results in an error from the onEventHandler function: InvalidParameterException: The parameter name should not be greater than 100 characters.

Expected Behavior

I would expect the construct to trim the name down to 100 characters or fail to synth and provide a meaningful error.

Current Behavior

A name of more than 100 characters can be produced through the automatic name generation.

Reproduction Steps

Have a sufficiently nested EKS cluster without a cluster name specified. For example, this is what was produced: multi-az-workshop-EKSNestedStackEKSNestedStackResourceAE427C53-1UH8V2OQX83GX-EKSCluster7638EADC-132IJXPSLXM72

Given a parent stack name of "multi-az-workshop", a nested stack in that parent of "EKSNestedStack", and naming the EKS cluster resource "EKSCluster".

Possible Solution

While certainly possible to name the cluster yourself, would hope there to be some safety checking before actually trying to create the cluster leading to failure.

Additional Information/Context

No response

CDK CLI Version

2.147.0

Framework Version

No response

Node.js Version

v20.9.0

OS

darwin

Language

.NET

Language Version

No response

Other information

No response

pahud commented 3 months ago

Yes we probably should fix here

https://github.com/aws/aws-cdk/blob/2a659f0ebbc039a03402b7f99a36dbf461e026aa/packages/aws-cdk-lib/aws-eks/lib/cluster.ts#L1711

with Names.uniqueResourceName with maxLength: 128

Feel free to submit a PR. Thank you.