diff --git a/packages/@aws-cdk/aws-rds/lib/cluster.ts b/packages/@aws-cdk/aws-rds/lib/cluster.ts index 95f634e6a0fe0..bc3cb557dd5b6 100644 --- a/packages/@aws-cdk/aws-rds/lib/cluster.ts +++ b/packages/@aws-cdk/aws-rds/lib/cluster.ts @@ -19,6 +19,13 @@ export interface DatabaseClusterProps { */ readonly engine: DatabaseClusterEngine; + /** + * What version of the database to start + * + * @default - The default for the engine is used. + */ + readonly engineVersion?: string; + /** * How many replicas/instances to create * @@ -292,6 +299,7 @@ export class DatabaseCluster extends DatabaseClusterBase { const cluster = new CfnDBCluster(this, 'Resource', { // Basic engine: props.engine.name, + engineVersion: props.engineVersion, dbClusterIdentifier: props.clusterIdentifier, dbSubnetGroupName: subnetGroup.ref, vpcSecurityGroupIds: [this.securityGroupId], @@ -349,6 +357,7 @@ export class DatabaseCluster extends DatabaseClusterBase { const instance = new CfnDBInstance(this, `Instance${instanceIndex}`, { // Link to cluster engine: props.engine.name, + engineVersion: props.engineVersion, dbClusterIdentifier: cluster.ref, dbInstanceIdentifier: instanceIdentifier, // Instance properties diff --git a/packages/@aws-cdk/aws-rds/test/test.cluster.ts b/packages/@aws-cdk/aws-rds/test/test.cluster.ts index 2924020ae6198..a56b720228e54 100644 --- a/packages/@aws-cdk/aws-rds/test/test.cluster.ts +++ b/packages/@aws-cdk/aws-rds/test/test.cluster.ts @@ -266,6 +266,60 @@ export = { test.done(); }, + + 'create a cluster using a specific version of MySQL'(test: Test) { + // GIVEN + const stack = testStack(); + const vpc = new ec2.Vpc(stack, 'VPC'); + + // WHEN + new DatabaseCluster(stack, 'Database', { + engine: DatabaseClusterEngine.AuroraMysql, + engineVersion: "5.7.mysql_aurora.2.04.4", + masterUser: { + username: 'admin' + }, + instanceProps: { + instanceType: new ec2.InstanceTypePair(ec2.InstanceClass.Burstable2, ec2.InstanceSize.Small), + vpc + }, + }); + + // THEN + expect(stack).to(haveResource('AWS::RDS::DBCluster', { + Engine: "aurora-mysql", + EngineVersion: "5.7.mysql_aurora.2.04.4", + })); + + test.done(); + }, + + 'create a cluster using a specific version of Postgresql'(test: Test) { + // GIVEN + const stack = testStack(); + const vpc = new ec2.Vpc(stack, 'VPC'); + + // WHEN + new DatabaseCluster(stack, 'Database', { + engine: DatabaseClusterEngine.AuroraPostgresql, + engineVersion: "10.7", + masterUser: { + username: 'admin' + }, + instanceProps: { + instanceType: new ec2.InstanceTypePair(ec2.InstanceClass.Burstable2, ec2.InstanceSize.Small), + vpc + }, + }); + + // THEN + expect(stack).to(haveResource('AWS::RDS::DBCluster', { + Engine: "aurora-postgresql", + EngineVersion: "10.7", + })); + + test.done(); + } }; function testStack() {