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/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', 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'); + }); });