aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
807 lines (806 loc) • 31.2 kB
TypeScript
import { Construct } from 'constructs';
import { IClusterInstance } from './aurora-cluster-instance';
import { IClusterEngine } from './cluster-engine';
import { DatabaseClusterAttributes, IDatabaseCluster } from './cluster-ref';
import { Endpoint } from './endpoint';
import { NetworkType } from './instance';
import { IParameterGroup } from './parameter-group';
import { BackupProps, Credentials, InstanceProps, PerformanceInsightRetention, RotationSingleUserOptions, RotationMultiUserOptions, SnapshotCredentials } from './props';
import { DatabaseProxy, DatabaseProxyOptions } from './proxy';
import { CfnDBClusterProps } from './rds.generated';
import { ISubnetGroup } from './subnet-group';
import * as cloudwatch from '../../aws-cloudwatch';
import * as ec2 from '../../aws-ec2';
import * as iam from '../../aws-iam';
import { IRole } from '../../aws-iam';
import * as kms from '../../aws-kms';
import * as logs from '../../aws-logs';
import * as s3 from '../../aws-s3';
import * as secretsmanager from '../../aws-secretsmanager';
import { Duration, RemovalPolicy, Resource } from '../../core';
/**
* Common properties for a new database cluster or cluster from snapshot.
*/
interface DatabaseClusterBaseProps {
/**
* What kind of database to start
*/
readonly engine: IClusterEngine;
/**
* How many replicas/instances to create
*
* Has to be at least 1.
*
* @default 2
* @deprecated - use writer and readers instead
*/
readonly instances?: number;
/**
* Settings for the individual instances that are launched
*
* @deprecated - use writer and readers instead
*/
readonly instanceProps?: InstanceProps;
/**
* The instance to use for the cluster writer
*
* @default - required if instanceProps is not provided
*/
readonly writer?: IClusterInstance;
/**
* A list of instances to create as cluster reader instances
*
* @default - no readers are created. The cluster will have a single writer/reader
*/
readonly readers?: IClusterInstance[];
/**
* The maximum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster.
* You can specify ACU values in half-step increments, such as 40, 40.5, 41, and so on.
* The largest value that you can use is 256.
*
* The maximum capacity must be higher than 0.5 ACUs.
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html#aurora-serverless-v2.max_capacity_considerations
*
* @default 2
*/
readonly serverlessV2MaxCapacity?: number;
/**
* The minimum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster.
* You can specify ACU values in half-step increments, such as 8, 8.5, 9, and so on.
* The smallest value that you can use is 0.
*
* For Aurora versions that support the Aurora Serverless v2 auto-pause feature, the smallest value that you can use is 0.
* For versions that don't support Aurora Serverless v2 auto-pause, the smallest value that you can use is 0.5.
*
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html#aurora-serverless-v2.min_capacity_considerations
*
* @default 0.5
*/
readonly serverlessV2MinCapacity?: number;
/**
* Specifies the duration an Aurora Serverless v2 DB instance must be idle before Aurora attempts to automatically pause it.
*
* The duration must be between 300 seconds (5 minutes) and 86,400 seconds (24 hours).
*
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2-auto-pause.html
*
* @default - The default is 300 seconds (5 minutes).
*/
readonly serverlessV2AutoPauseDuration?: Duration;
/**
* What subnets to run the RDS instances in.
*
* Must be at least 2 subnets in two different AZs.
*/
readonly vpc?: ec2.IVpc;
/**
* Where to place the instances within the VPC
*
* @default - the Vpc default strategy if not specified.
*/
readonly vpcSubnets?: ec2.SubnetSelection;
/**
* Security group.
*
* @default - a new security group is created.
*/
readonly securityGroups?: ec2.ISecurityGroup[];
/**
* The ordering of updates for instances
*
* @default InstanceUpdateBehaviour.BULK
*/
readonly instanceUpdateBehaviour?: InstanceUpdateBehaviour;
/**
* The number of seconds to set a cluster's target backtrack window to.
* This feature is only supported by the Aurora MySQL database engine and
* cannot be enabled on existing clusters.
*
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Managing.Backtrack.html
* @default 0 seconds (no backtrack)
*/
readonly backtrackWindow?: Duration;
/**
* Backup settings
*
* @default - Backup retention period for automated backups is 1 day.
* Backup preferred window is set to a 30-minute window selected at random from an
* 8-hour block of time for each AWS Region, occurring on a random day of the week.
* @see https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow
*/
readonly backup?: BackupProps;
/**
* What port to listen on
*
* @default - The default for the engine is used.
*/
readonly port?: number;
/**
* An optional identifier for the cluster
*
* @default - A name is automatically generated.
*/
readonly clusterIdentifier?: string;
/**
* Base identifier for instances
*
* Every replica is named by appending the replica number to this string, 1-based.
*
* @default - clusterIdentifier is used with the word "Instance" appended.
* If clusterIdentifier is not provided, the identifier is automatically generated.
*/
readonly instanceIdentifierBase?: string;
/**
* Name of a database which is automatically created inside the cluster
*
* @default - Database is not created in cluster.
*/
readonly defaultDatabaseName?: string;
/**
* Indicates whether the DB cluster should have deletion protection enabled.
*
* @default - true if `removalPolicy` is RETAIN, `undefined` otherwise, which will not enable deletion protection.
* To disable deletion protection after it has been enabled, you must explicitly set this value to `false`.
*/
readonly deletionProtection?: boolean;
/**
* A preferred maintenance window day/time range. Should be specified as a range ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).
*
* Example: 'Sun:23:45-Mon:00:15'
*
* @default - 30-minute window selected at random from an 8-hour block of time for
* each AWS Region, occurring on a random day of the week.
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance
*/
readonly preferredMaintenanceWindow?: string;
/**
* Additional parameters to pass to the database engine
*
* @default - No parameter group.
*/
readonly parameterGroup?: IParameterGroup;
/**
* The parameters in the DBClusterParameterGroup to create automatically
*
* You can only specify parameterGroup or parameters but not both.
* You need to use a versioned engine to auto-generate a DBClusterParameterGroup.
*
* @default - None
*/
readonly parameters?: {
[key: string]: string;
};
/**
* The removal policy to apply when the cluster and its instances are removed
* from the stack or replaced during an update.
*
* @default - RemovalPolicy.SNAPSHOT (remove the cluster and instances, but retain a snapshot of the data)
*/
readonly removalPolicy?: RemovalPolicy;
/**
* The list of log types that need to be enabled for exporting to
* CloudWatch Logs.
*
* @default - no log exports
*/
readonly cloudwatchLogsExports?: string[];
/**
* The number of days log events are kept in CloudWatch Logs. When updating
* this property, unsetting it doesn't remove the log retention policy. To
* remove the retention policy, set the value to `Infinity`.
*
* @default - logs never expire
*/
readonly cloudwatchLogsRetention?: logs.RetentionDays;
/**
* The IAM role for the Lambda function associated with the custom resource
* that sets the retention policy.
*
* @default - a new role is created.
*/
readonly cloudwatchLogsRetentionRole?: IRole;
/**
* The interval between points when Amazon RDS collects enhanced monitoring metrics.
*
* If you enable `enableClusterLevelEnhancedMonitoring`, this property is applied to the cluster,
* otherwise it is applied to the instances.
*
* @default - no enhanced monitoring
*/
readonly monitoringInterval?: Duration;
/**
* Role that will be used to manage DB monitoring.
*
* If you enable `enableClusterLevelEnhancedMonitoring`, this property is applied to the cluster,
* otherwise it is applied to the instances.
*
* @default - A role is automatically created for you
*/
readonly monitoringRole?: IRole;
/**
* Whether to enable enhanced monitoring at the cluster level.
*
* If set to true, `monitoringInterval` and `monitoringRole` are applied to not the instances, but the cluster.
* `monitoringInterval` is required to be set if `enableClusterLevelEnhancedMonitoring` is set to true.
*
* @default - When the `monitoringInterval` is set, enhanced monitoring is enabled for each instance.
*/
readonly enableClusterLevelEnhancedMonitoring?: boolean;
/**
* Role that will be associated with this DB cluster to enable S3 import.
* This feature is only supported by the Aurora database engine.
*
* This property must not be used if `s3ImportBuckets` is used.
* To use this property with Aurora PostgreSQL, it must be configured with the S3 import feature enabled when creating the DatabaseClusterEngine
* For MySQL:
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.LoadFromS3.html
*
* For PostgreSQL:
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Migrating.html
*
* @default - New role is created if `s3ImportBuckets` is set, no role is defined otherwise
*/
readonly s3ImportRole?: IRole;
/**
* S3 buckets that you want to load data from. This feature is only supported by the Aurora database engine.
*
* This property must not be used if `s3ImportRole` is used.
*
* For MySQL:
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.LoadFromS3.html
*
* For PostgreSQL:
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Migrating.html
*
* @default - None
*/
readonly s3ImportBuckets?: s3.IBucket[];
/**
* Role that will be associated with this DB cluster to enable S3 export.
* This feature is only supported by the Aurora database engine.
*
* This property must not be used if `s3ExportBuckets` is used.
* To use this property with Aurora PostgreSQL, it must be configured with the S3 export feature enabled when creating the DatabaseClusterEngine
* For MySQL:
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.SaveIntoS3.html
*
* For PostgreSQL:
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-s3-export.html
*
* @default - New role is created if `s3ExportBuckets` is set, no role is defined otherwise
*/
readonly s3ExportRole?: IRole;
/**
* S3 buckets that you want to load data into. This feature is only supported by the Aurora database engine.
*
* This property must not be used if `s3ExportRole` is used.
*
* For MySQL:
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.SaveIntoS3.html
*
* For PostgreSQL:
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-s3-export.html
*
* @default - None
*/
readonly s3ExportBuckets?: s3.IBucket[];
/**
* Existing subnet group for the cluster.
*
* @default - a new subnet group will be created.
*/
readonly subnetGroup?: ISubnetGroup;
/**
* Whether to enable mapping of AWS Identity and Access Management (IAM) accounts
* to database accounts.
*
* @default false
*/
readonly iamAuthentication?: boolean;
/**
* Whether to enable storage encryption.
*
* @default - true if storageEncryptionKey is provided, false otherwise
*/
readonly storageEncrypted?: boolean;
/**
* The KMS key for storage encryption.
* If specified, `storageEncrypted` will be set to `true`.
*
* @default - if storageEncrypted is true then the default master key, no key otherwise
*/
readonly storageEncryptionKey?: kms.IKey;
/**
* The storage type to be associated with the DB cluster.
*
* @default - DBClusterStorageType.AURORA
*/
readonly storageType?: DBClusterStorageType;
/**
* Whether to copy tags to the snapshot when a snapshot is created.
*
* @default - true
*/
readonly copyTagsToSnapshot?: boolean;
/**
* The network type of the DB instance.
*
* @default - IPV4
*/
readonly networkType?: NetworkType;
/**
* Directory ID for associating the DB cluster with a specific Active Directory.
*
* Necessary for enabling Kerberos authentication. If specified, the DB cluster joins the given Active Directory, enabling Kerberos authentication.
* If not specified, the DB cluster will not be associated with any Active Directory, and Kerberos authentication will not be enabled.
*
* @default - DB cluster is not associated with an Active Directory; Kerberos authentication is not enabled.
*/
readonly domain?: string;
/**
* The IAM role to be used when making API calls to the Directory Service. The role needs the AWS-managed policy
* `AmazonRDSDirectoryServiceAccess` or equivalent.
*
* @default - If `DatabaseClusterBaseProps.domain` is specified, a role with the `AmazonRDSDirectoryServiceAccess` policy is automatically created.
*/
readonly domainRole?: iam.IRole;
/**
* Whether to enable the Data API for the cluster.
*
* @default - false
*/
readonly enableDataApi?: boolean;
/**
* Whether read replicas can forward write operations to the writer DB instance in the DB cluster.
*
* This setting can only be enabled for Aurora MySQL 3.04 or higher, and for Aurora PostgreSQL 16.4
* or higher (for version 16), 15.8 or higher (for version 15), and 14.13 or higher (for version 14).
*
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-mysql-write-forwarding.html
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-postgresql-write-forwarding.html
*
* @default false
*/
readonly enableLocalWriteForwarding?: boolean;
/**
* Whether to enable Performance Insights for the DB cluster.
*
* @default - false, unless `performanceInsightRetention` or `performanceInsightEncryptionKey` is set,
* or `databaseInsightsMode` is set to `DatabaseInsightsMode.ADVANCED`.
*/
readonly enablePerformanceInsights?: boolean;
/**
* The amount of time, in days, to retain Performance Insights data.
*
* If you set `databaseInsightsMode` to `DatabaseInsightsMode.ADVANCED`, you must set this property to `PerformanceInsightRetention.MONTHS_15`.
*
* @default - 7
*/
readonly performanceInsightRetention?: PerformanceInsightRetention;
/**
* The AWS KMS key for encryption of Performance Insights data.
*
* @default - default master key
*/
readonly performanceInsightEncryptionKey?: kms.IKey;
/**
* The database insights mode.
*
* @default - DatabaseInsightsMode.STANDARD when performance insights are enabled and Amazon Aurora engine is used, otherwise not set.
*/
readonly databaseInsightsMode?: DatabaseInsightsMode;
/**
* Specifies whether minor engine upgrades are applied automatically to the DB cluster during the maintenance window.
*
* @default true
*/
readonly autoMinorVersionUpgrade?: boolean;
/**
* Specifies the scalability mode of the Aurora DB cluster.
*
* Set LIMITLESS if you want to use a limitless database; otherwise, set it to STANDARD.
*
* @default ClusterScalabilityType.STANDARD
*/
readonly clusterScalabilityType?: ClusterScalabilityType;
/**
* [Misspelled] Specifies the scalability mode of the Aurora DB cluster.
*
* Set LIMITLESS if you want to use a limitless database; otherwise, set it to STANDARD.
*
* @default ClusterScailabilityType.STANDARD
* @deprecated Use clusterScalabilityType instead. This will be removed in the next major version.
*/
readonly clusterScailabilityType?: ClusterScailabilityType;
/**
* The life cycle type for this DB cluster.
*
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/extended-support.html
* @see https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html
*
* @default undefined - AWS RDS default setting is `EngineLifecycleSupport.OPEN_SOURCE_RDS_EXTENDED_SUPPORT`
*/
readonly engineLifecycleSupport?: EngineLifecycleSupport;
}
/**
* Engine lifecycle support for Amazon RDS and Amazon Aurora
*/
export declare enum EngineLifecycleSupport {
/**
* Using Amazon RDS extended support
*/
OPEN_SOURCE_RDS_EXTENDED_SUPPORT = "open-source-rds-extended-support",
/**
* Not using Amazon RDS extended support
*/
OPEN_SOURCE_RDS_EXTENDED_SUPPORT_DISABLED = "open-source-rds-extended-support-disabled"
}
/**
* The storage type to be associated with the DB cluster.
*/
export declare enum DBClusterStorageType {
/**
* Storage type for Aurora DB standard clusters.
*/
AURORA = "aurora",
/**
* Storage type for Aurora DB I/O-Optimized clusters.
*/
AURORA_IOPT1 = "aurora-iopt1"
}
/**
* The orchestration of updates of multiple instances
*/
export declare enum InstanceUpdateBehaviour {
/**
* In a bulk update, all instances of the cluster are updated at the same time.
* This results in a faster update procedure.
* During the update, however, all instances might be unavailable at the same time and thus a downtime might occur.
*/
BULK = "BULK",
/**
* In a rolling update, one instance after another is updated.
* This results in at most one instance being unavailable during the update.
* If your cluster consists of more than 1 instance, the downtime periods are limited to the time a primary switch needs.
*/
ROLLING = "ROLLING"
}
/**
* The scalability mode of the Aurora DB cluster.
*/
export declare enum ClusterScalabilityType {
/**
* The cluster uses normal DB instance creation.
*/
STANDARD = "standard",
/**
* The cluster operates as an Aurora Limitless Database,
* allowing you to create a DB shard group for horizontal scaling (sharding) capabilities.
*
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/limitless.html
*/
LIMITLESS = "limitless"
}
/**
* The scalability mode of the Aurora DB cluster.
* @deprecated Use ClusterScalabilityType instead. This will be removed in the next major version.
*/
export declare enum ClusterScailabilityType {
/**
* The cluster uses normal DB instance creation.
*/
STANDARD = "standard",
/**
* The cluster operates as an Aurora Limitless Database,
* allowing you to create a DB shard group for horizontal scaling (sharding) capabilities.
*
* @see https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/limitless.html
*/
LIMITLESS = "limitless"
}
/**
* The database insights mode of the Aurora DB cluster.
*/
export declare enum DatabaseInsightsMode {
/**
* Standard mode.
*/
STANDARD = "standard",
/**
* Advanced mode.
*/
ADVANCED = "advanced"
}
/**
* A new or imported clustered database.
*/
export declare abstract class DatabaseClusterBase extends Resource implements IDatabaseCluster {
abstract readonly engine?: IClusterEngine;
/**
* Identifier of the cluster
*/
abstract readonly clusterIdentifier: string;
/**
* The immutable identifier for the cluster; for example: cluster-ABCD1234EFGH5678IJKL90MNOP.
*
* This AWS Region-unique identifier is used in things like IAM authentication policies.
*/
abstract readonly clusterResourceIdentifier: string;
/**
* Identifiers of the replicas
*/
abstract readonly instanceIdentifiers: string[];
/**
* The endpoint to use for read/write operations
*/
abstract readonly clusterEndpoint: Endpoint;
/**
* Endpoint to use for load-balanced read-only operations.
*/
abstract readonly clusterReadEndpoint: Endpoint;
/**
* Endpoints which address each individual replica.
*/
abstract readonly instanceEndpoints: Endpoint[];
/**
* Access to the network connections
*/
abstract readonly connections: ec2.Connections;
/**
* The secret attached to this cluster
*/
abstract readonly secret?: secretsmanager.ISecret;
protected abstract enableDataApi?: boolean;
/**
* The ARN of the cluster
*/
get clusterArn(): string;
/**
* Add a new db proxy to this cluster.
*/
addProxy(id: string, options: DatabaseProxyOptions): DatabaseProxy;
/**
* Renders the secret attachment target specifications.
*/
asSecretAttachmentTarget(): secretsmanager.SecretAttachmentTargetProps;
grantConnect(grantee: iam.IGrantable, dbUser: string): iam.Grant;
/**
* Grant the given identity to access the Data API.
*/
grantDataApiAccess(grantee: iam.IGrantable): iam.Grant;
}
/**
* Abstract base for ``DatabaseCluster`` and ``DatabaseClusterFromSnapshot``
*/
declare abstract class DatabaseClusterNew extends DatabaseClusterBase {
/**
* The engine for this Cluster.
* Never undefined.
*/
readonly engine?: IClusterEngine;
protected readonly newCfnProps: CfnDBClusterProps;
protected readonly securityGroups: ec2.ISecurityGroup[];
protected readonly subnetGroup: ISubnetGroup;
private readonly domainId?;
private readonly domainRole?;
/**
* Secret in SecretsManager to store the database cluster user credentials.
*/
abstract readonly secret?: secretsmanager.ISecret;
/**
* The VPC network to place the cluster in.
*/
readonly vpc: ec2.IVpc;
/**
* The cluster's subnets.
*/
readonly vpcSubnets?: ec2.SubnetSelection;
/**
* The log group is created when `cloudwatchLogsExports` is set.
*
* Each export value will create a separate log group.
*/
readonly cloudwatchLogGroups: {
[engine: string]: logs.ILogGroup;
};
/**
* Application for single user rotation of the master password to this cluster.
*/
readonly singleUserRotationApplication: secretsmanager.SecretRotationApplication;
/**
* Application for multi user rotation to this cluster.
*/
readonly multiUserRotationApplication: secretsmanager.SecretRotationApplication;
/**
* Whether Performance Insights is enabled at cluster level.
*/
readonly performanceInsightsEnabled: boolean;
/**
* The amount of time, in days, to retain Performance Insights data.
*/
readonly performanceInsightRetention?: PerformanceInsightRetention;
/**
* The AWS KMS key for encryption of Performance Insights data.
*/
readonly performanceInsightEncryptionKey?: kms.IKey;
/**
* The database insights mode.
*/
readonly databaseInsightsMode?: DatabaseInsightsMode;
/**
* The IAM role for the enhanced monitoring.
*/
readonly monitoringRole?: iam.IRole;
protected readonly serverlessV2MinCapacity: number;
protected readonly serverlessV2MaxCapacity: number;
protected readonly serverlessV2AutoPauseDuration?: Duration;
protected hasServerlessInstance?: boolean;
protected enableDataApi?: boolean;
constructor(scope: Construct, id: string, props: DatabaseClusterBaseProps);
/**
* Create cluster instances
*
* @internal
*/
protected _createInstances(props: DatabaseClusterProps): InstanceConfig;
/**
* Perform validations on the cluster instances
*/
private validateClusterInstances;
/**
* Perform validations on the reader instance
*/
private validateReaderInstance;
/**
* As a cluster-level metric, it represents the average of the ServerlessDatabaseCapacity
* values of all the Aurora Serverless v2 DB instances in the cluster.
*/
metricServerlessDatabaseCapacity(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
/**
* This value is represented as a percentage. It's calculated as the value of the
* ServerlessDatabaseCapacity metric divided by the maximum ACU value of the DB cluster.
*
* If this metric approaches a value of 100.0, the DB instance has scaled up as high as it can.
* Consider increasing the maximum ACU setting for the cluster.
*/
metricACUUtilization(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
private validateServerlessScalingConfig;
/**
* Adds the single user rotation of the master password to this cluster.
* See [Single user rotation strategy](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets_strategies.html#rotating-secrets-one-user-one-password)
*/
addRotationSingleUser(options?: RotationSingleUserOptions): secretsmanager.SecretRotation;
/**
* Adds the multi user rotation to this cluster.
* See [Alternating users rotation strategy](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets_strategies.html#rotating-secrets-two-users)
*/
addRotationMultiUser(id: string, options: RotationMultiUserOptions): secretsmanager.SecretRotation;
}
/**
* Properties for a new database cluster
*/
export interface DatabaseClusterProps extends DatabaseClusterBaseProps {
/**
* Credentials for the administrative user
*
* @default - A username of 'admin' (or 'postgres' for PostgreSQL) and SecretsManager-generated password
*/
readonly credentials?: Credentials;
/**
* The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this DB cluster is created as a read replica.
* Cannot be used with credentials.
*
* @default - This DB Cluster is not a read replica
*/
readonly replicationSourceIdentifier?: string;
}
/**
* Create a clustered database with a given number of instances.
*
* @resource AWS::RDS::DBCluster
*/
export declare class DatabaseCluster extends DatabaseClusterNew {
/**
* Uniquely identifies this class.
*/
static readonly PROPERTY_INJECTION_ID: string;
/**
* Import an existing DatabaseCluster from properties
*/
static fromDatabaseClusterAttributes(scope: Construct, id: string, attrs: DatabaseClusterAttributes): IDatabaseCluster;
readonly clusterIdentifier: string;
readonly clusterResourceIdentifier: string;
readonly clusterEndpoint: Endpoint;
readonly clusterReadEndpoint: Endpoint;
readonly connections: ec2.Connections;
readonly instanceIdentifiers: string[];
readonly instanceEndpoints: Endpoint[];
/**
* The secret attached to this cluster
*/
readonly secret?: secretsmanager.ISecret;
constructor(scope: Construct, id: string, props: DatabaseClusterProps);
}
/**
* Properties for ``DatabaseClusterFromSnapshot``
*/
export interface DatabaseClusterFromSnapshotProps extends DatabaseClusterBaseProps {
/**
* The identifier for the DB instance snapshot or DB cluster snapshot to restore from.
* You can use either the name or the Amazon Resource Name (ARN) to specify a DB cluster snapshot.
* However, you can use only the ARN to specify a DB instance snapshot.
*/
readonly snapshotIdentifier: string;
/**
* Credentials for the administrative user
*
* Note - using this prop only works with `Credentials.fromPassword()` with the
* username of the snapshot, `Credentials.fromUsername()` with the username and
* password of the snapshot or `Credentials.fromSecret()` with a secret containing
* the username and password of the snapshot.
*
* @default - A username of 'admin' (or 'postgres' for PostgreSQL) and SecretsManager-generated password
* that **will not be applied** to the cluster, use `snapshotCredentials` for the correct behavior.
*
* @deprecated use `snapshotCredentials` which allows to generate a new password
*/
readonly credentials?: Credentials;
/**
* Master user credentials.
*
* Note - It is not possible to change the master username for a snapshot;
* however, it is possible to provide (or generate) a new password.
*
* @default - The existing username and password from the snapshot will be used.
*/
readonly snapshotCredentials?: SnapshotCredentials;
}
/**
* A database cluster restored from a snapshot.
*
* @resource AWS::RDS::DBCluster
*/
export declare class DatabaseClusterFromSnapshot extends DatabaseClusterNew {
/**
* Uniquely identifies this class.
*/
static readonly PROPERTY_INJECTION_ID: string;
readonly clusterIdentifier: string;
readonly clusterResourceIdentifier: string;
readonly clusterEndpoint: Endpoint;
readonly clusterReadEndpoint: Endpoint;
readonly connections: ec2.Connections;
readonly instanceIdentifiers: string[];
readonly instanceEndpoints: Endpoint[];
/**
* The secret attached to this cluster
*/
readonly secret?: secretsmanager.ISecret;
constructor(scope: Construct, id: string, props: DatabaseClusterFromSnapshotProps);
}
/** Output from the createInstances method; used to set instance identifiers and endpoints */
interface InstanceConfig {
readonly instanceIdentifiers: string[];
readonly instanceEndpoints: Endpoint[];
}
export {};