Skip to content

Commit 0593d51

Browse files
joehillenElad Ben-Israel
authored andcommitted
feat(rds): add engineVersion to DatabaseCluster (#2698)
Without this change, CDK's RDS DatabaseCluster is not very useful because you can only deploy the default versions of the given database engine. This change adds an optional prop `engineVersion` Fixes #2212
1 parent 0f54698 commit 0593d51

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

packages/@aws-cdk/aws-rds/lib/cluster.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@ export interface DatabaseClusterProps {
1919
*/
2020
readonly engine: DatabaseClusterEngine;
2121

22+
/**
23+
* What version of the database to start
24+
*
25+
* @default - The default for the engine is used.
26+
*/
27+
readonly engineVersion?: string;
28+
2229
/**
2330
* How many replicas/instances to create
2431
*
@@ -292,6 +299,7 @@ export class DatabaseCluster extends DatabaseClusterBase {
292299
const cluster = new CfnDBCluster(this, 'Resource', {
293300
// Basic
294301
engine: props.engine.name,
302+
engineVersion: props.engineVersion,
295303
dbClusterIdentifier: props.clusterIdentifier,
296304
dbSubnetGroupName: subnetGroup.ref,
297305
vpcSecurityGroupIds: [this.securityGroupId],
@@ -349,6 +357,7 @@ export class DatabaseCluster extends DatabaseClusterBase {
349357
const instance = new CfnDBInstance(this, `Instance${instanceIndex}`, {
350358
// Link to cluster
351359
engine: props.engine.name,
360+
engineVersion: props.engineVersion,
352361
dbClusterIdentifier: cluster.ref,
353362
dbInstanceIdentifier: instanceIdentifier,
354363
// Instance properties

packages/@aws-cdk/aws-rds/test/test.cluster.ts

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,60 @@ export = {
266266
test.done();
267267

268268
},
269+
270+
'create a cluster using a specific version of MySQL'(test: Test) {
271+
// GIVEN
272+
const stack = testStack();
273+
const vpc = new ec2.Vpc(stack, 'VPC');
274+
275+
// WHEN
276+
new DatabaseCluster(stack, 'Database', {
277+
engine: DatabaseClusterEngine.AuroraMysql,
278+
engineVersion: "5.7.mysql_aurora.2.04.4",
279+
masterUser: {
280+
username: 'admin'
281+
},
282+
instanceProps: {
283+
instanceType: new ec2.InstanceTypePair(ec2.InstanceClass.Burstable2, ec2.InstanceSize.Small),
284+
vpc
285+
},
286+
});
287+
288+
// THEN
289+
expect(stack).to(haveResource('AWS::RDS::DBCluster', {
290+
Engine: "aurora-mysql",
291+
EngineVersion: "5.7.mysql_aurora.2.04.4",
292+
}));
293+
294+
test.done();
295+
},
296+
297+
'create a cluster using a specific version of Postgresql'(test: Test) {
298+
// GIVEN
299+
const stack = testStack();
300+
const vpc = new ec2.Vpc(stack, 'VPC');
301+
302+
// WHEN
303+
new DatabaseCluster(stack, 'Database', {
304+
engine: DatabaseClusterEngine.AuroraPostgresql,
305+
engineVersion: "10.7",
306+
masterUser: {
307+
username: 'admin'
308+
},
309+
instanceProps: {
310+
instanceType: new ec2.InstanceTypePair(ec2.InstanceClass.Burstable2, ec2.InstanceSize.Small),
311+
vpc
312+
},
313+
});
314+
315+
// THEN
316+
expect(stack).to(haveResource('AWS::RDS::DBCluster', {
317+
Engine: "aurora-postgresql",
318+
EngineVersion: "10.7",
319+
}));
320+
321+
test.done();
322+
}
269323
};
270324

271325
function testStack() {

0 commit comments

Comments
 (0)