From 47764ab3463a6cfdda19642d207bebe9fa0ce3d1 Mon Sep 17 00:00:00 2001 From: kinchit Date: Thu, 7 Aug 2025 14:51:01 +0530 Subject: [PATCH 1/4] fix: added new props & slackbot name conflict --- src/rds.ts | 22 +++++++++++++++++++--- src/slackchatbot.ts | 4 ++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/rds.ts b/src/rds.ts index 6b3f6d8..3e8e4df 100644 --- a/src/rds.ts +++ b/src/rds.ts @@ -5,6 +5,8 @@ import { import { Construct } from 'constructs'; import { AlertThresholds, RDSMonitoring } from './monitoring'; import { ObjToStrMap } from './utils/common'; +import { StorageType } from 'aws-cdk-lib/aws-rds'; +import { DeletionProtectionCheck } from 'aws-cdk-lib/aws-appconfig'; export enum ResourceType { NEW, @@ -49,6 +51,8 @@ export interface PostgresProps { readonly multiAz?: boolean; readonly allocatedStorage?: number; readonly maxAllocatedStorage?: number; + readonly replicaAllocatedStorage?: number + readonly replicaMaxAllocatedStorage?: number readonly storageType?: rds.StorageType; readonly backupRetention?: number; readonly deletionProtection?: boolean; @@ -61,6 +65,9 @@ export interface PostgresProps { readonly metricTopicName?: string; readonly snsTopicCreate?: boolean; readonly storageEncrypted?: boolean; + readonly allowMajorVersionUpgrade?: boolean; + readonly autoMinorVersionUpgrade?: boolean; + readonly dbIOPS?: number; readonly tags?: Record; readonly enableAlerts?: boolean; // Flag to enable/disable all alerts (default: true) // Custom alert thresholds @@ -139,11 +146,15 @@ export class PostgresRDSCluster extends Construct { performanceInsightRetention: props.performanceInsightRetention, deleteAutomatedBackups: true, removalPolicy: RemovalPolicy.SNAPSHOT, - deletionProtection: props.deletionProtection, + deletionProtection: props.deletionProtection ?? true, cloudwatchLogsExports: ['postgresql'], copyTagsToSnapshot: true, allocatedStorage: props.allocatedStorage, maxAllocatedStorage: props.maxAllocatedStorage, + StorageType: props.storageType, + allowMajorVersionUpgrade: props.allowMajorVersionUpgrade ?? false, + autoMinorVersionUpgrade: props.autoMinorVersionUpgrade ?? false, + iops: props.dbIOPS, }; const rdsInstance = props.snapshotIdentifier ? new rds.DatabaseInstanceFromSnapshot(this, `${props.clusterName}Cluster`, { ...commonInstanceProps, @@ -154,8 +165,6 @@ export class PostgresRDSCluster extends Construct { ...commonInstanceProps, engine: props.postgresVersion, credentials: rds.Credentials.fromGeneratedSecret(props.databaseMasterUserName), - allowMajorVersionUpgrade: false, - autoMinorVersionUpgrade: true, backupRetention: props.backupRetention ? Duration.days(props.backupRetention) : Duration.days(0), storageEncrypted: props.storageEncrypted ?? false, databaseName: props.databaseName, @@ -196,6 +205,13 @@ export class PostgresRDSCluster extends Construct { for (let index = 0; index < props.readReplicas.replicas; index++) { let readReplics = new rds.DatabaseInstanceReadReplica(this, `${props.clusterName}-rreplicas-${index}`, { sourceDatabaseInstance: rdsInstance, + subnetGroup: dbSubnetGroup, + deletionProtection: props.deletionProtection, + storageEncrypted: props.storageEncrypted, + storageType: props.storageType, + autoMinorVersionUpgrade: props.allowMajorVersionUpgrade ?? false, + allocatedStorage: props.replicaAllocatedStorage ?? props.allocatedStorage, + maxAllocatedStorage: props.replicaMaxAllocatedStorage ?? props.maxAllocatedStorage, instanceIdentifier: `${props.clusterName}-rreplicas-${index}`, instanceType: props.readReplicas.instanceType, enablePerformanceInsights: props.enablePerformanceInsights, diff --git a/src/slackchatbot.ts b/src/slackchatbot.ts index 9c7ae05..e4403cd 100644 --- a/src/slackchatbot.ts +++ b/src/slackchatbot.ts @@ -7,7 +7,7 @@ import { import { Construct } from 'constructs'; export interface SlackChatbotProps { - readonly environmentName: string; + readonly slackChannelConfigurationName: string; readonly slackWorkspaceId: string; readonly slackChannelId: string; readonly notificationTopics: sns.ITopic[]; @@ -50,7 +50,7 @@ export class SlackChatbotIntegration extends Construct { this.slackChannel = new chatbot.SlackChannelConfiguration(this, `${this.node.id}-SlackChannelConfig`, { slackWorkspaceId: props.slackWorkspaceId, slackChannelId: props.slackChannelId, - slackChannelConfigurationName: `${props.environmentName}-tracking-rds-alerts`, + slackChannelConfigurationName: props.slackChannelConfigurationName, role: this.chatbotRole, notificationTopics: props.notificationTopics, }); From 0de849ad742341079c598dc736813f87a0b7ebbb Mon Sep 17 00:00:00 2001 From: kinchit Date: Thu, 7 Aug 2025 14:55:52 +0530 Subject: [PATCH 2/4] fix: removed unsued imports --- src/rds.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/rds.ts b/src/rds.ts index 3e8e4df..14961fa 100644 --- a/src/rds.ts +++ b/src/rds.ts @@ -5,8 +5,6 @@ import { import { Construct } from 'constructs'; import { AlertThresholds, RDSMonitoring } from './monitoring'; import { ObjToStrMap } from './utils/common'; -import { StorageType } from 'aws-cdk-lib/aws-rds'; -import { DeletionProtectionCheck } from 'aws-cdk-lib/aws-appconfig'; export enum ResourceType { NEW, From e4f0107c5778d86df64a3e34609344cc2322a555 Mon Sep 17 00:00:00 2001 From: kinchit Date: Thu, 7 Aug 2025 15:25:48 +0530 Subject: [PATCH 3/4] fix: yarn build --- API.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++------- src/rds.ts | 6 ++---- 2 files changed, 53 insertions(+), 11 deletions(-) diff --git a/API.md b/API.md index c39c0d7..1910cb9 100644 --- a/API.md +++ b/API.md @@ -840,6 +840,8 @@ const postgresProps: PostgresProps = { ... } | postgresVersion | aws-cdk-lib.aws_rds.IInstanceEngine | *No description.* | | alertSubcriptionWebhooks | string[] | *No description.* | | allocatedStorage | number | *No description.* | +| allowMajorVersionUpgrade | boolean | *No description.* | +| autoMinorVersionUpgrade | boolean | *No description.* | | backupRetention | number | *No description.* | | deletionProtection | boolean | *No description.* | | enableAlerts | boolean | *No description.* | @@ -854,6 +856,8 @@ const postgresProps: PostgresProps = { ... } | publiclyAccessible | boolean | *No description.* | | readReplicas | ReadReplica | *No description.* | | replicaAlertThresholds | AlertThresholds | *No description.* | +| replicaAllocatedStorage | number | *No description.* | +| replicaMaxAllocatedStorage | number | *No description.* | | snapshotIdentifier | string | *No description.* | | snsTopicCreate | boolean | *No description.* | | storageEncrypted | boolean | *No description.* | @@ -942,6 +946,26 @@ public readonly allocatedStorage: number; --- +##### `allowMajorVersionUpgrade`Optional + +```typescript +public readonly allowMajorVersionUpgrade: boolean; +``` + +- *Type:* boolean + +--- + +##### `autoMinorVersionUpgrade`Optional + +```typescript +public readonly autoMinorVersionUpgrade: boolean; +``` + +- *Type:* boolean + +--- + ##### `backupRetention`Optional ```typescript @@ -1082,6 +1106,26 @@ public readonly replicaAlertThresholds: AlertThresholds; --- +##### `replicaAllocatedStorage`Optional + +```typescript +public readonly replicaAllocatedStorage: number; +``` + +- *Type:* number + +--- + +##### `replicaMaxAllocatedStorage`Optional + +```typescript +public readonly replicaMaxAllocatedStorage: number; +``` + +- *Type:* number + +--- + ##### `snapshotIdentifier`Optional ```typescript @@ -1257,30 +1301,30 @@ const slackChatbotProps: SlackChatbotProps = { ... } | **Name** | **Type** | **Description** | | --- | --- | --- | -| environmentName | string | *No description.* | | notificationTopics | aws-cdk-lib.aws_sns.ITopic[] | *No description.* | +| slackChannelConfigurationName | string | *No description.* | | slackChannelId | string | *No description.* | | slackWorkspaceId | string | *No description.* | --- -##### `environmentName`Required +##### `notificationTopics`Required ```typescript -public readonly environmentName: string; +public readonly notificationTopics: ITopic[]; ``` -- *Type:* string +- *Type:* aws-cdk-lib.aws_sns.ITopic[] --- -##### `notificationTopics`Required +##### `slackChannelConfigurationName`Required ```typescript -public readonly notificationTopics: ITopic[]; +public readonly slackChannelConfigurationName: string; ``` -- *Type:* aws-cdk-lib.aws_sns.ITopic[] +- *Type:* string --- diff --git a/src/rds.ts b/src/rds.ts index 14961fa..6491c6d 100644 --- a/src/rds.ts +++ b/src/rds.ts @@ -49,8 +49,8 @@ export interface PostgresProps { readonly multiAz?: boolean; readonly allocatedStorage?: number; readonly maxAllocatedStorage?: number; - readonly replicaAllocatedStorage?: number - readonly replicaMaxAllocatedStorage?: number + readonly replicaAllocatedStorage?: number; + readonly replicaMaxAllocatedStorage?: number; readonly storageType?: rds.StorageType; readonly backupRetention?: number; readonly deletionProtection?: boolean; @@ -65,7 +65,6 @@ export interface PostgresProps { readonly storageEncrypted?: boolean; readonly allowMajorVersionUpgrade?: boolean; readonly autoMinorVersionUpgrade?: boolean; - readonly dbIOPS?: number; readonly tags?: Record; readonly enableAlerts?: boolean; // Flag to enable/disable all alerts (default: true) // Custom alert thresholds @@ -152,7 +151,6 @@ export class PostgresRDSCluster extends Construct { StorageType: props.storageType, allowMajorVersionUpgrade: props.allowMajorVersionUpgrade ?? false, autoMinorVersionUpgrade: props.autoMinorVersionUpgrade ?? false, - iops: props.dbIOPS, }; const rdsInstance = props.snapshotIdentifier ? new rds.DatabaseInstanceFromSnapshot(this, `${props.clusterName}Cluster`, { ...commonInstanceProps, From 9b348a0b3c014b61cd48327447bb02deaf2d8f8b Mon Sep 17 00:00:00 2001 From: kinchit Date: Thu, 7 Aug 2025 15:32:35 +0530 Subject: [PATCH 4/4] fix: conditional improvement --- src/rds.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rds.ts b/src/rds.ts index 6491c6d..932e12c 100644 --- a/src/rds.ts +++ b/src/rds.ts @@ -162,7 +162,7 @@ export class PostgresRDSCluster extends Construct { engine: props.postgresVersion, credentials: rds.Credentials.fromGeneratedSecret(props.databaseMasterUserName), backupRetention: props.backupRetention ? Duration.days(props.backupRetention) : Duration.days(0), - storageEncrypted: props.storageEncrypted ?? false, + storageEncrypted: props.storageEncrypted ?? true, databaseName: props.databaseName, }); tags.forEach((v, k) => { @@ -202,8 +202,8 @@ export class PostgresRDSCluster extends Construct { let readReplics = new rds.DatabaseInstanceReadReplica(this, `${props.clusterName}-rreplicas-${index}`, { sourceDatabaseInstance: rdsInstance, subnetGroup: dbSubnetGroup, - deletionProtection: props.deletionProtection, - storageEncrypted: props.storageEncrypted, + deletionProtection: props.deletionProtection ?? true, + storageEncrypted: props.storageEncrypted ?? true, storageType: props.storageType, autoMinorVersionUpgrade: props.allowMajorVersionUpgrade ?? false, allocatedStorage: props.replicaAllocatedStorage ?? props.allocatedStorage,