From 999195b11df5a2b433dda3e6f3d987813c29ea11 Mon Sep 17 00:00:00 2001 From: Shuto Yukawa Date: Fri, 27 Mar 2026 17:36:23 +0900 Subject: [PATCH 1/2] feat(ec2): add C8a (InstanceClass.C8A) instance class Add support for compute optimized C8a instances based on 5th generation AMD EPYC (codename Turin). Closes #36722 --- packages/aws-cdk-lib/aws-ec2/lib/instance-types.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/aws-cdk-lib/aws-ec2/lib/instance-types.ts b/packages/aws-cdk-lib/aws-ec2/lib/instance-types.ts index 44fd685585c82..d99640210f156 100644 --- a/packages/aws-cdk-lib/aws-ec2/lib/instance-types.ts +++ b/packages/aws-cdk-lib/aws-ec2/lib/instance-types.ts @@ -792,6 +792,16 @@ export enum InstanceClass { */ C7A = 'c7a', + /** + * Compute optimized instances based on 5th generation AMD EPYC (codename Turin), 8th generation + */ + COMPUTE8_AMD = 'compute8-amd', + + /** + * Compute optimized instances based on 5th generation AMD EPYC (codename Turin), 8th generation + */ + C8A = 'c8a', + /** * Storage-optimized instances, 2nd generation */ @@ -1971,6 +1981,8 @@ export class InstanceType { [InstanceClass.C7I_FLEX]: 'c7i-flex', [InstanceClass.COMPUTE7_AMD]: 'c7a', [InstanceClass.C7A]: 'c7a', + [InstanceClass.COMPUTE8_AMD]: 'c8a', + [InstanceClass.C8A]: 'c8a', [InstanceClass.COMPUTE8_GRAVITON4]: 'c8g', [InstanceClass.C8G]: 'c8g', [InstanceClass.COMPUTE8_GRAVITON4_NVME_DRIVE]: 'c8gd', From 066022803100c6842c5a1406382f739016cbde78 Mon Sep 17 00:00:00 2001 From: Shuto Yukawa Date: Mon, 30 Mar 2026 08:59:04 +0900 Subject: [PATCH 2/2] feat(ec2): add README example and unit tests for C8A instance class Add C8A (AMD EPYC 4th gen) usage example to the Instances section of the README and add unit tests verifying InstanceClass.C8A and InstanceClass.COMPUTE8_AMD produce the correct instance type strings. --- packages/aws-cdk-lib/aws-ec2/README.md | 7 +++++++ .../aws-cdk-lib/aws-ec2/test/instance-type.test.ts | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/packages/aws-cdk-lib/aws-ec2/README.md b/packages/aws-cdk-lib/aws-ec2/README.md index 277eba28dbe1d..13a56d6b4b38b 100644 --- a/packages/aws-cdk-lib/aws-ec2/README.md +++ b/packages/aws-cdk-lib/aws-ec2/README.md @@ -1362,6 +1362,13 @@ new ec2.Instance(this, 'Instance5', { cpuType: ec2.AmazonLinuxCpuType.ARM_64, }), }); + +// AMD EPYC (4th gen) Processor +new ec2.Instance(this, 'Instance6', { + vpc, + instanceType: ec2.InstanceType.of(ec2.InstanceClass.C8A, ec2.InstanceSize.LARGE), + machineImage: ec2.MachineImage.latestAmazonLinux2023(), +}); ``` ### Latest Amazon Linux Images diff --git a/packages/aws-cdk-lib/aws-ec2/test/instance-type.test.ts b/packages/aws-cdk-lib/aws-ec2/test/instance-type.test.ts index 821485d84c164..6a08d5afd39ea 100644 --- a/packages/aws-cdk-lib/aws-ec2/test/instance-type.test.ts +++ b/packages/aws-cdk-lib/aws-ec2/test/instance-type.test.ts @@ -5,4 +5,14 @@ describe('InstanceType', () => { const instanceType = InstanceType.of(InstanceClass.MAC2_M1ULTRA, InstanceSize.METAL); expect(instanceType.toString()).toEqual('mac2-m1ultra.metal'); }); + + test('c8a instance class', () => { + const instanceType = InstanceType.of(InstanceClass.C8A, InstanceSize.LARGE); + expect(instanceType.toString()).toEqual('c8a.large'); + }); + + test('COMPUTE8_AMD instance class', () => { + const instanceType = InstanceType.of(InstanceClass.COMPUTE8_AMD, InstanceSize.XLARGE); + expect(instanceType.toString()).toEqual('c8a.xlarge'); + }); });