From ce630ec5aa8b4351e4f3bb835219b205fa0d321c Mon Sep 17 00:00:00 2001 From: akash1810 Date: Thu, 20 Apr 2023 07:12:14 +0100 Subject: [PATCH] refactor(rds): Make `instanceResourceId` prop optional To avoid a breaking change, make `instanceResourceId` an optional prop. --- .../aws-backup/test/selection.test.ts | 1 - packages/aws-cdk-lib/aws-rds/lib/instance.ts | 16 ++++++++++------ .../aws-cdk-lib/aws-rds/test/instance.test.ts | 2 -- packages/aws-cdk-lib/aws-rds/test/proxy.test.ts | 1 - 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/aws-cdk-lib/aws-backup/test/selection.test.ts b/packages/aws-cdk-lib/aws-backup/test/selection.test.ts index 6468f4cc7974b..63b0257d9dfec 100644 --- a/packages/aws-cdk-lib/aws-backup/test/selection.test.ts +++ b/packages/aws-cdk-lib/aws-backup/test/selection.test.ts @@ -438,7 +438,6 @@ test('fromRdsDatabaseInstance', () => { const existingInstance = rds.DatabaseInstance.fromDatabaseInstanceAttributes(stack, 'Existing', { instanceEndpointAddress: 'address', instanceIdentifier: 'existing-instance', - instanceResourceId: 'resource-id', port: 3306, securityGroups: [], }); diff --git a/packages/aws-cdk-lib/aws-rds/lib/instance.ts b/packages/aws-cdk-lib/aws-rds/lib/instance.ts index 6da55f0a76a06..cf2e81e0747b5 100644 --- a/packages/aws-cdk-lib/aws-rds/lib/instance.ts +++ b/packages/aws-cdk-lib/aws-rds/lib/instance.ts @@ -53,7 +53,7 @@ export interface IDatabaseInstance extends IResource, ec2.IConnectable, secretsm * * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#aws-resource-rds-dbinstance-return-values */ - readonly instanceResourceId: string; + readonly instanceResourceId?: string; /** * The instance endpoint. @@ -112,7 +112,7 @@ export interface DatabaseInstanceAttributes { * * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#aws-resource-rds-dbinstance-return-values */ - readonly instanceResourceId: string; + readonly instanceResourceId?: string; /** * The security groups of the instance. @@ -156,7 +156,7 @@ export abstract class DatabaseInstanceBase extends Resource implements IDatabase public abstract readonly instanceIdentifier: string; public abstract readonly dbInstanceEndpointAddress: string; public abstract readonly dbInstanceEndpointPort: string; - public abstract readonly instanceResourceId: string; + public abstract readonly instanceResourceId?: string; public abstract readonly instanceEndpoint: Endpoint; // only required because of JSII bug: https://github.com/aws/jsii/issues/2040 public abstract readonly engine?: IInstanceEngine; @@ -182,6 +182,10 @@ export abstract class DatabaseInstanceBase extends Resource implements IDatabase throw new Error('Cannot grant connect when IAM authentication is disabled'); } + if (!this.instanceResourceId) { + throw new Error('For imported Database Instances, instanceResourceId is required to grantConnect()'); + } + if (!dbUser) { throw new Error('For imported Database Instances, the dbUser is required to grantConnect()'); } @@ -1126,7 +1130,7 @@ export class DatabaseInstance extends DatabaseInstanceSource implements IDatabas public readonly instanceIdentifier: string; public readonly dbInstanceEndpointAddress: string; public readonly dbInstanceEndpointPort: string; - public readonly instanceResourceId: string; + public readonly instanceResourceId?: string; public readonly instanceEndpoint: Endpoint; public readonly secret?: secretsmanager.ISecret; @@ -1195,7 +1199,7 @@ export class DatabaseInstanceFromSnapshot extends DatabaseInstanceSource impleme public readonly instanceIdentifier: string; public readonly dbInstanceEndpointAddress: string; public readonly dbInstanceEndpointPort: string; - public readonly instanceResourceId: string; + public readonly instanceResourceId?: string; public readonly instanceEndpoint: Endpoint; public readonly secret?: secretsmanager.ISecret; @@ -1285,7 +1289,7 @@ export class DatabaseInstanceReadReplica extends DatabaseInstanceNew implements public readonly instanceIdentifier: string; public readonly dbInstanceEndpointAddress: string; public readonly dbInstanceEndpointPort: string; - public readonly instanceResourceId: string; + public readonly instanceResourceId?: string; public readonly instanceEndpoint: Endpoint; public readonly engine?: IInstanceEngine = undefined; protected readonly instanceType: ec2.InstanceType; diff --git a/packages/aws-cdk-lib/aws-rds/test/instance.test.ts b/packages/aws-cdk-lib/aws-rds/test/instance.test.ts index 92985fb4484b1..ac227e874c77c 100644 --- a/packages/aws-cdk-lib/aws-rds/test/instance.test.ts +++ b/packages/aws-cdk-lib/aws-rds/test/instance.test.ts @@ -471,7 +471,6 @@ describe('instance', () => { instanceIdentifier: '', securityGroups: [], instanceEndpointAddress: '', - instanceResourceId: '', port: databasePort, }); @@ -686,7 +685,6 @@ describe('instance', () => { const instance = rds.DatabaseInstance.fromDatabaseInstanceAttributes(stack, 'Database', { instanceEndpointAddress: 'address', instanceIdentifier: 'identifier', - instanceResourceId: 'resource-id', port: 3306, securityGroups: [ec2.SecurityGroup.fromSecurityGroupId(stack, 'SG', 'sg-123456789', { allowAllOutbound: false, diff --git a/packages/aws-cdk-lib/aws-rds/test/proxy.test.ts b/packages/aws-cdk-lib/aws-rds/test/proxy.test.ts index fd74c76dcc7b2..1b9c7de783110 100644 --- a/packages/aws-cdk-lib/aws-rds/test/proxy.test.ts +++ b/packages/aws-cdk-lib/aws-rds/test/proxy.test.ts @@ -189,7 +189,6 @@ describe('proxy', () => { const importedInstance = rds.DatabaseInstance.fromDatabaseInstanceAttributes(stack, 'Cluster', { instanceIdentifier: 'my-instance', instanceEndpointAddress: 'instance-address', - instanceResourceId: 'resource-id', port: 5432, securityGroups: [], engine: rds.DatabaseInstanceEngine.mariaDb({