Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 51 additions & 7 deletions API.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 16 additions & 4 deletions src/rds.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,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;
Expand All @@ -61,6 +63,8 @@ export interface PostgresProps {
readonly metricTopicName?: string;
readonly snsTopicCreate?: boolean;
readonly storageEncrypted?: boolean;
readonly allowMajorVersionUpgrade?: boolean;
readonly autoMinorVersionUpgrade?: boolean;
readonly tags?: Record<string, string>;
readonly enableAlerts?: boolean; // Flag to enable/disable all alerts (default: true)
// Custom alert thresholds
Expand Down Expand Up @@ -139,11 +143,14 @@ 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,
};
const rdsInstance = props.snapshotIdentifier ? new rds.DatabaseInstanceFromSnapshot(this, `${props.clusterName}Cluster`, {
...commonInstanceProps,
Expand All @@ -154,10 +161,8 @@ 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,
storageEncrypted: props.storageEncrypted ?? true,
databaseName: props.databaseName,
});
tags.forEach((v, k) => {
Expand Down Expand Up @@ -196,6 +201,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 ?? true,
storageEncrypted: props.storageEncrypted ?? true,
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,
Expand Down
4 changes: 2 additions & 2 deletions src/slackchatbot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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[];
Expand Down Expand Up @@ -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,
});
Expand Down
Loading