packages/aws-cdk-lib/aws-rds/lib/cluster-engine.ts (484 lines of code) (raw):

import { Construct } from 'constructs'; import { IEngine } from './engine'; import { EngineVersion } from './engine-version'; import { IParameterGroup, ParameterGroup } from './parameter-group'; import * as iam from '../../aws-iam'; import * as secretsmanager from '../../aws-secretsmanager'; import { ValidationError } from '../../core/lib/errors'; /** * The extra options passed to the `IClusterEngine.bindToCluster` method. */ export interface ClusterEngineBindOptions { /** * The role used for S3 importing. * * @default - none */ readonly s3ImportRole?: iam.IRole; /** * The role used for S3 exporting. * * @default - none */ readonly s3ExportRole?: iam.IRole; /** * The customer-provided ParameterGroup. * * @default - none */ readonly parameterGroup?: IParameterGroup; } /** * The type returned from the `IClusterEngine.bindToCluster` method. */ export interface ClusterEngineConfig { /** * The ParameterGroup to use for the cluster. * * @default - no ParameterGroup will be used */ readonly parameterGroup?: IParameterGroup; /** * The port to use for this cluster, * unless the customer specified the port directly. * * @default - use the default port for clusters (3306) */ readonly port?: number; /** * Features supported by the database engine. * * @see https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBEngineVersion.html * * @default - no features */ readonly features?: ClusterEngineFeatures; } /** * Represents Database Engine features */ export interface ClusterEngineFeatures { /** * Feature name for the DB instance that the IAM role to access the S3 bucket for import * is to be associated with. * * @default - no s3Import feature name */ readonly s3Import?: string; /** * Feature name for the DB instance that the IAM role to export to S3 bucket is to be * associated with. * * @default - no s3Export feature name */ readonly s3Export?: string; } /** * The interface representing a database cluster (as opposed to instance) engine. */ export interface IClusterEngine extends IEngine { /** The application used by this engine to perform rotation for a single-user scenario. */ readonly singleUserRotationApplication: secretsmanager.SecretRotationApplication; /** The application used by this engine to perform rotation for a multi-user scenario. */ readonly multiUserRotationApplication: secretsmanager.SecretRotationApplication; /** The log types that are available with this engine type */ readonly supportedLogTypes: string[]; /** * Whether the IAM Roles used for data importing and exporting need to be combined for this Engine, * or can they be kept separate. * * @default false */ readonly combineImportAndExportRoles?: boolean; /** * Method called when the engine is used to create a new cluster. */ bindToCluster(scope: Construct, options: ClusterEngineBindOptions): ClusterEngineConfig; } interface ClusterEngineBaseProps { readonly engineType: string; readonly singleUserRotationApplication: secretsmanager.SecretRotationApplication; readonly multiUserRotationApplication: secretsmanager.SecretRotationApplication; readonly defaultPort?: number; readonly engineVersion?: EngineVersion; readonly features?: ClusterEngineFeatures; } abstract class ClusterEngineBase implements IClusterEngine { public readonly engineType: string; public readonly engineVersion?: EngineVersion; public readonly parameterGroupFamily?: string; public readonly singleUserRotationApplication: secretsmanager.SecretRotationApplication; public readonly multiUserRotationApplication: secretsmanager.SecretRotationApplication; public abstract readonly supportedLogTypes: string[]; private readonly defaultPort?: number; private readonly features?: ClusterEngineFeatures; constructor(props: ClusterEngineBaseProps) { this.engineType = props.engineType; this.features = props.features; this.singleUserRotationApplication = props.singleUserRotationApplication; this.multiUserRotationApplication = props.multiUserRotationApplication; this.defaultPort = props.defaultPort; this.engineVersion = props.engineVersion; this.parameterGroupFamily = this.engineVersion ? `${this.engineType}${this.engineVersion.majorVersion}` : undefined; } public bindToCluster(scope: Construct, options: ClusterEngineBindOptions): ClusterEngineConfig { const parameterGroup = options.parameterGroup ?? this.defaultParameterGroup(scope); return { parameterGroup, port: this.defaultPort, features: this.features, }; } /** * Return an optional default ParameterGroup, * possibly an imported one, * if one wasn't provided by the customer explicitly. */ protected abstract defaultParameterGroup(scope: Construct): IParameterGroup | undefined; } interface MysqlClusterEngineBaseProps { readonly engineType: string; readonly engineVersion?: EngineVersion; readonly defaultMajorVersion: string; readonly combineImportAndExportRoles?: boolean; } abstract class MySqlClusterEngineBase extends ClusterEngineBase { public readonly engineFamily = 'MYSQL'; public readonly supportedLogTypes: string[] = ['error', 'general', 'slowquery', 'audit']; public readonly combineImportAndExportRoles?: boolean; constructor(props: MysqlClusterEngineBaseProps) { super({ ...props, singleUserRotationApplication: secretsmanager.SecretRotationApplication.MYSQL_ROTATION_SINGLE_USER, multiUserRotationApplication: secretsmanager.SecretRotationApplication.MYSQL_ROTATION_MULTI_USER, engineVersion: props.engineVersion ? props.engineVersion : { majorVersion: props.defaultMajorVersion }, }); this.combineImportAndExportRoles = props.combineImportAndExportRoles; } public bindToCluster(scope: Construct, options: ClusterEngineBindOptions): ClusterEngineConfig { const config = super.bindToCluster(scope, options); const parameterGroup = options.parameterGroup ?? (options.s3ImportRole || options.s3ExportRole ? new ParameterGroup(scope, 'ClusterParameterGroup', { engine: this, }) : config.parameterGroup); if (options.s3ImportRole) { // versions which combine the import and export Roles (right now, this is only 8.0) // require a different parameter name (identical for both import and export) const s3ImportParam = this.combineImportAndExportRoles ? 'aws_default_s3_role' : 'aurora_load_from_s3_role'; parameterGroup?.addParameter(s3ImportParam, options.s3ImportRole.roleArn); } if (options.s3ExportRole) { const s3ExportParam = this.combineImportAndExportRoles ? 'aws_default_s3_role' : 'aurora_select_into_s3_role'; parameterGroup?.addParameter(s3ExportParam, options.s3ExportRole.roleArn); } return { ...config, parameterGroup, }; } } /** * The versions for the Aurora cluster engine * (those returned by `DatabaseClusterEngine.aurora`). * * @deprecated use `AuroraMysqlEngineVersion` instead */ export class AuroraEngineVersion { /** Version "5.6.10a". */ public static readonly VER_10A = AuroraEngineVersion.builtIn_5_6('10a', false); /** Version "5.6.mysql_aurora.1.17.9". */ public static readonly VER_1_17_9 = AuroraEngineVersion.builtIn_5_6('1.17.9'); /** Version "5.6.mysql_aurora.1.19.0". */ public static readonly VER_1_19_0 = AuroraEngineVersion.builtIn_5_6('1.19.0'); /** Version "5.6.mysql_aurora.1.19.1". */ public static readonly VER_1_19_1 = AuroraEngineVersion.builtIn_5_6('1.19.1'); /** Version "5.6.mysql_aurora.1.19.2". */ public static readonly VER_1_19_2 = AuroraEngineVersion.builtIn_5_6('1.19.2'); /** Version "5.6.mysql_aurora.1.19.5". */ public static readonly VER_1_19_5 = AuroraEngineVersion.builtIn_5_6('1.19.5'); /** Version "5.6.mysql_aurora.1.19.6". */ public static readonly VER_1_19_6 = AuroraEngineVersion.builtIn_5_6('1.19.6'); /** Version "5.6.mysql_aurora.1.20.0". */ public static readonly VER_1_20_0 = AuroraEngineVersion.builtIn_5_6('1.20.0'); /** Version "5.6.mysql_aurora.1.20.1". */ public static readonly VER_1_20_1 = AuroraEngineVersion.builtIn_5_6('1.20.1'); /** Version "5.6.mysql_aurora.1.21.0". */ public static readonly VER_1_21_0 = AuroraEngineVersion.builtIn_5_6('1.21.0'); /** Version "5.6.mysql_aurora.1.22.0". */ public static readonly VER_1_22_0 = AuroraEngineVersion.builtIn_5_6('1.22.0'); /** Version "5.6.mysql_aurora.1.22.1". */ public static readonly VER_1_22_1 = AuroraEngineVersion.builtIn_5_6('1.22.1'); /** Version "5.6.mysql_aurora.1.22.1.3". */ public static readonly VER_1_22_1_3 = AuroraEngineVersion.builtIn_5_6('1.22.1.3'); /** Version "5.6.mysql_aurora.1.22.2". */ public static readonly VER_1_22_2 = AuroraEngineVersion.builtIn_5_6('1.22.2'); /** Version "5.6.mysql_aurora.1.22.3". */ public static readonly VER_1_22_3 = AuroraEngineVersion.builtIn_5_6('1.22.3'); /** Version "5.6.mysql_aurora.1.22.4". */ public static readonly VER_1_22_4 = AuroraEngineVersion.builtIn_5_6('1.22.4'); /** Version "5.6.mysql_aurora.1.22.5". */ public static readonly VER_1_22_5 = AuroraEngineVersion.builtIn_5_6('1.22.5'); /** Version "5.6.mysql_aurora.1.23.0". */ public static readonly VER_1_23_0 = AuroraEngineVersion.builtIn_5_6('1.23.0'); /** Version "5.6.mysql_aurora.1.23.1". */ public static readonly VER_1_23_1 = AuroraEngineVersion.builtIn_5_6('1.23.1'); /** Version "5.6.mysql_aurora.1.23.2". */ public static readonly VER_1_23_2 = AuroraEngineVersion.builtIn_5_6('1.23.2'); /** Version "5.6.mysql_aurora.1.23.3". */ public static readonly VER_1_23_3 = AuroraEngineVersion.builtIn_5_6('1.23.3'); /** Version "5.6.mysql_aurora.1.23.4". */ public static readonly VER_1_23_4 = AuroraEngineVersion.builtIn_5_6('1.23.4'); /** * Create a new AuroraEngineVersion with an arbitrary version. * * @param auroraFullVersion the full version string, * for example "5.6.mysql_aurora.1.78.3.6" * @param auroraMajorVersion the major version of the engine, * defaults to "5.6" */ public static of(auroraFullVersion: string, auroraMajorVersion?: string): AuroraEngineVersion { return new AuroraEngineVersion(auroraFullVersion, auroraMajorVersion); } private static builtIn_5_6(minorVersion: string, addStandardPrefix: boolean = true): AuroraEngineVersion { return new AuroraEngineVersion(`5.6.${addStandardPrefix ? 'mysql_aurora.' : ''}${minorVersion}`); } /** The full version string, for example, "5.6.mysql_aurora.1.78.3.6". */ public readonly auroraFullVersion: string; /** The major version of the engine. Currently, it's always "5.6". */ public readonly auroraMajorVersion: string; private constructor(auroraFullVersion: string, auroraMajorVersion: string = '5.6') { this.auroraFullVersion = auroraFullVersion; this.auroraMajorVersion = auroraMajorVersion; } } /** * Creation properties of the plain Aurora database cluster engine. * Used in `DatabaseClusterEngine.aurora`. * * @deprecated use `AuroraMysqlClusterEngineProps` instead */ export interface AuroraClusterEngineProps { /** The version of the Aurora cluster engine. */ readonly version: AuroraEngineVersion; } /** * @deprecated use `AuroraMysqlClusterEngine` instead */ class AuroraClusterEngine extends MySqlClusterEngineBase { constructor(version?: AuroraEngineVersion) { super({ engineType: 'aurora', engineVersion: version ? { fullVersion: version.auroraFullVersion, majorVersion: version.auroraMajorVersion, } : undefined, defaultMajorVersion: '5.6', }); } protected defaultParameterGroup(_scope: Construct): IParameterGroup | undefined { // the default.aurora5.6 ParameterGroup is actually the default, // so just return undefined in this case return undefined; } } /** * The versions for the Aurora MySQL cluster engine * (those returned by `DatabaseClusterEngine.auroraMysql`). * * https://docs.aws.amazon.com/AmazonRDS/latest/AuroraMySQLReleaseNotes/Welcome.html */ export class AuroraMysqlEngineVersion { /** * Version "5.7.12". * @deprecated Version 5.7.12 is no longer supported by Amazon RDS. */ public static readonly VER_5_7_12 = AuroraMysqlEngineVersion.builtIn_5_7('12', false); /** * Version "5.7.mysql_aurora.2.02.3" * @deprecated Version 5.7.mysql_aurora.2.02.3 is no longer supported by Amazon RDS. */ public static readonly VER_2_02_3 = AuroraMysqlEngineVersion.builtIn_5_7('2.02.3'); /** * Version "5.7.mysql_aurora.2.03.2". * @deprecated Version 5.7.mysql_aurora.2.03.2 is no longer supported by Amazon RDS. */ public static readonly VER_2_03_2 = AuroraMysqlEngineVersion.builtIn_5_7('2.03.2'); /** * Version "5.7.mysql_aurora.2.03.3". * @deprecated Version 5.7.mysql_aurora.2.03.3 is no longer supported by Amazon RDS. */ public static readonly VER_2_03_3 = AuroraMysqlEngineVersion.builtIn_5_7('2.03.3'); /** * Version "5.7.mysql_aurora.2.03.4". * @deprecated Version 5.7.mysql_aurora.2.03.4 is no longer supported by Amazon RDS. */ public static readonly VER_2_03_4 = AuroraMysqlEngineVersion.builtIn_5_7('2.03.4'); /** * Version "5.7.mysql_aurora.2.04.0". * @deprecated Version 5.7.mysql_aurora.2.04.0 is no longer supported by Amazon RDS. */ public static readonly VER_2_04_0 = AuroraMysqlEngineVersion.builtIn_5_7('2.04.0'); /** * Version "5.7.mysql_aurora.2.04.1". * @deprecated Version 5.7.mysql_aurora.2.04.1 is no longer supported by Amazon RDS. */ public static readonly VER_2_04_1 = AuroraMysqlEngineVersion.builtIn_5_7('2.04.1'); /** * Version "5.7.mysql_aurora.2.04.2". * @deprecated Version 5.7.mysql_aurora.2.04.2 is no longer supported by Amazon RDS. */ public static readonly VER_2_04_2 = AuroraMysqlEngineVersion.builtIn_5_7('2.04.2'); /** * Version "5.7.mysql_aurora.2.04.3". * @deprecated Version 5.7.mysql_aurora.2.04.3 is no longer supported by Amazon RDS. */ public static readonly VER_2_04_3 = AuroraMysqlEngineVersion.builtIn_5_7('2.04.3'); /** * Version "5.7.mysql_aurora.2.04.4". * @deprecated Version 5.7.mysql_aurora.2.04.4 is no longer supported by Amazon RDS. */ public static readonly VER_2_04_4 = AuroraMysqlEngineVersion.builtIn_5_7('2.04.4'); /** * Version "5.7.mysql_aurora.2.04.5". * @deprecated Version 5.7.mysql_aurora.2.04.5 is no longer supported by Amazon RDS. */ public static readonly VER_2_04_5 = AuroraMysqlEngineVersion.builtIn_5_7('2.04.5'); /** * Version "5.7.mysql_aurora.2.04.6". * @deprecated Version 5.7.mysql_aurora.2.04.6 is no longer supported by Amazon RDS. */ public static readonly VER_2_04_6 = AuroraMysqlEngineVersion.builtIn_5_7('2.04.6'); /** * Version "5.7.mysql_aurora.2.04.7". * @deprecated Version 5.7.mysql_aurora.2.04.7 is no longer supported by Amazon RDS. */ public static readonly VER_2_04_7 = AuroraMysqlEngineVersion.builtIn_5_7('2.04.7'); /** * Version "5.7.mysql_aurora.2.04.8". * @deprecated Version 5.7.mysql_aurora.2.04.8 is no longer supported by Amazon RDS. */ public static readonly VER_2_04_8 = AuroraMysqlEngineVersion.builtIn_5_7('2.04.8'); /** * Version "5.7.mysql_aurora.2.04.9" * @deprecated Version 5.7.mysql_aurora.2.04.9 is no longer supported by Amazon RDS. */ public static readonly VER_2_04_9 = AuroraMysqlEngineVersion.builtIn_5_7('2.04.9'); /** * Version "5.7.mysql_aurora.2.05.0". * @deprecated Version 5.7.mysql_aurora.2.05.0 is no longer supported by Amazon RDS. */ public static readonly VER_2_05_0 = AuroraMysqlEngineVersion.builtIn_5_7('2.05.0'); /** * Version "5.7.mysql_aurora.2.05.1" * @deprecated Version 5.7.mysql_aurora.2.05.1 is no longer supported by Amazon RDS. */ public static readonly VER_2_05_1 = AuroraMysqlEngineVersion.builtIn_5_7('2.05.1'); /** * Version "5.7.mysql_aurora.2.06.0". * @deprecated Version 5.7.mysql_aurora.2.06.0 is no longer supported by Amazon RDS. */ public static readonly VER_2_06_0 = AuroraMysqlEngineVersion.builtIn_5_7('2.06.0'); /** * Version "5.7.mysql_aurora.2.07.0". * @deprecated Version 5.7.mysql_aurora.2.07.0 is no longer supported by Amazon RDS. */ public static readonly VER_2_07_0 = AuroraMysqlEngineVersion.builtIn_5_7('2.07.0'); /** * Version "5.7.mysql_aurora.2.07.1". * @deprecated Version 5.7.mysql_aurora.2.07.1 is no longer supported by Amazon RDS. */ public static readonly VER_2_07_1 = AuroraMysqlEngineVersion.builtIn_5_7('2.07.1'); /** * Version "5.7.mysql_aurora.2.07.2". * @deprecated Version 5.7.mysql_aurora.2.07.2 is no longer supported by Amazon RDS. */ public static readonly VER_2_07_2 = AuroraMysqlEngineVersion.builtIn_5_7('2.07.2'); /** * Version "5.7.mysql_aurora.2.07.3". * @deprecated Version 5.7.mysql_aurora.2.07.3 is no longer supported by Amazon RDS. */ public static readonly VER_2_07_3 = AuroraMysqlEngineVersion.builtIn_5_7('2.07.3'); /** * Version "5.7.mysql_aurora.2.07.4" * @deprecated Version 5.7.mysql_aurora.2.07.4 is no longer supported by Amazon RDS. */ public static readonly VER_2_07_4 = AuroraMysqlEngineVersion.builtIn_5_7('2.07.4'); /** * Version "5.7.mysql_aurora.2.07.5". * @deprecated Version 5.7.mysql_aurora.2.07.5 is no longer supported by Amazon RDS. */ public static readonly VER_2_07_5 = AuroraMysqlEngineVersion.builtIn_5_7('2.07.5'); /** * Version "5.7.mysql_aurora.2.07.6". * @deprecated Version 5.7.mysql_aurora.2.07.6 is no longer supported by Amazon RDS. */ public static readonly VER_2_07_6 = AuroraMysqlEngineVersion.builtIn_5_7('2.07.6'); /** * Version "5.7.mysql_aurora.2.07.7". * @deprecated Version 5.7.mysql_aurora.2.07.7 is no longer supported by Amazon RDS. */ public static readonly VER_2_07_7 = AuroraMysqlEngineVersion.builtIn_5_7('2.07.7'); /** * Version "5.7.mysql_aurora.2.07.8". * @deprecated Version 5.7.mysql_aurora.2.07.8 is no longer supported by Amazon RDS. */ public static readonly VER_2_07_8 = AuroraMysqlEngineVersion.builtIn_5_7('2.07.8'); /** * Version "5.7.mysql_aurora.2.07.9". * @deprecated Version 5.7.mysql_aurora.2.07.9 is no longer supported by Amazon RDS. */ public static readonly VER_2_07_9 = AuroraMysqlEngineVersion.builtIn_5_7('2.07.9'); /** * Version "5.7.mysql_aurora.2.07.10". * @deprecated Version 5.7.mysql_aurora.2.07.10 is no longer supported by Amazon RDS. */ public static readonly VER_2_07_10 = AuroraMysqlEngineVersion.builtIn_5_7('2.07.10'); /** * Version "5.7.mysql_aurora.2.08.0". * @deprecated Version 5.7.mysql_aurora.2.08.0 is no longer supported by Amazon RDS. */ public static readonly VER_2_08_0 = AuroraMysqlEngineVersion.builtIn_5_7('2.08.0'); /** * Version "5.7.mysql_aurora.2.08.1". * @deprecated Version 5.7.mysql_aurora.2.08.1 is no longer supported by Amazon RDS. */ public static readonly VER_2_08_1 = AuroraMysqlEngineVersion.builtIn_5_7('2.08.1'); /** * Version "5.7.mysql_aurora.2.08.2". * @deprecated Version 5.7.mysql_aurora.2.08.2 is no longer supported by Amazon RDS. */ public static readonly VER_2_08_2 = AuroraMysqlEngineVersion.builtIn_5_7('2.08.2'); /** * Version "5.7.mysql_aurora.2.08.3". * @deprecated Version 5.7.mysql_aurora.2.08.3 is no longer supported by Amazon RDS. */ public static readonly VER_2_08_3 = AuroraMysqlEngineVersion.builtIn_5_7('2.08.3'); /** * Version "5.7.mysql_aurora.2.08.4". * @deprecated Version 5.7.mysql_aurora.2.08.4 is no longer supported by Amazon RDS. */ public static readonly VER_2_08_4 = AuroraMysqlEngineVersion.builtIn_5_7('2.08.4'); /** * Version "5.7.mysql_aurora.2.09.0". * @deprecated Version 5.7.mysql_aurora.2.09.0 is no longer supported by Amazon RDS. */ public static readonly VER_2_09_0 = AuroraMysqlEngineVersion.builtIn_5_7('2.09.0'); /** * Version "5.7.mysql_aurora.2.09.1". * @deprecated Version 5.7.mysql_aurora.2.09.1 is no longer supported by Amazon RDS. */ public static readonly VER_2_09_1 = AuroraMysqlEngineVersion.builtIn_5_7('2.09.1'); /** * Version "5.7.mysql_aurora.2.09.2". * @deprecated Version 5.7.mysql_aurora.2.09.2 is no longer supported by Amazon RDS. */ public static readonly VER_2_09_2 = AuroraMysqlEngineVersion.builtIn_5_7('2.09.2'); /** * Version "5.7.mysql_aurora.2.09.3". * @deprecated Version 5.7.mysql_aurora.2.09.3 is no longer supported by Amazon RDS. */ public static readonly VER_2_09_3 = AuroraMysqlEngineVersion.builtIn_5_7('2.09.3'); /** * Version "5.7.mysql_aurora.2.10.0". * @deprecated Version 5.7.mysql_aurora.2.10.0 is no longer supported by Amazon RDS. */ public static readonly VER_2_10_0 = AuroraMysqlEngineVersion.builtIn_5_7('2.10.0'); /** * Version "5.7.mysql_aurora.2.10.1". * @deprecated Version 5.7.mysql_aurora.2.10.1 is no longer supported by Amazon RDS. */ public static readonly VER_2_10_1 = AuroraMysqlEngineVersion.builtIn_5_7('2.10.1'); /** * Version "5.7.mysql_aurora.2.10.2". * @deprecated Version 5.7.mysql_aurora.2.10.2 is no longer supported by Amazon RDS. */ public static readonly VER_2_10_2 = AuroraMysqlEngineVersion.builtIn_5_7('2.10.2'); /** * Version "5.7.mysql_aurora.2.10.3". * @deprecated Version 5.7.mysql_aurora.2.10.3 is no longer supported by Amazon RDS. */ public static readonly VER_2_10_3 = AuroraMysqlEngineVersion.builtIn_5_7('2.10.3'); /** * Version "5.7.mysql_aurora.2.11.0" * @deprecated Version 5.7.mysql_aurora.2.11.0 is no longer supported by Amazon RDS. */ public static readonly VER_2_11_0 = AuroraMysqlEngineVersion.builtIn_5_7('2.11.0'); /** Version "5.7.mysql_aurora.2.11.1". */ public static readonly VER_2_11_1 = AuroraMysqlEngineVersion.builtIn_5_7('2.11.1'); /** Version "5.7.mysql_aurora.2.11.2". */ public static readonly VER_2_11_2 = AuroraMysqlEngineVersion.builtIn_5_7('2.11.2'); /** Version "5.7.mysql_aurora.2.11.3". */ public static readonly VER_2_11_3 = AuroraMysqlEngineVersion.builtIn_5_7('2.11.3'); /** Version "5.7.mysql_aurora.2.11.4". */ public static readonly VER_2_11_4 = AuroraMysqlEngineVersion.builtIn_5_7('2.11.4'); /** Version "5.7.mysql_aurora.2.11.5". */ public static readonly VER_2_11_5 = AuroraMysqlEngineVersion.builtIn_5_7('2.11.5'); /** Version "5.7.mysql_aurora.2.12.0". */ public static readonly VER_2_12_0 = AuroraMysqlEngineVersion.builtIn_5_7('2.12.0'); /** Version "5.7.mysql_aurora.2.12.1". */ public static readonly VER_2_12_1 = AuroraMysqlEngineVersion.builtIn_5_7('2.12.1'); /** Version "5.7.mysql_aurora.2.12.2". */ public static readonly VER_2_12_2 = AuroraMysqlEngineVersion.builtIn_5_7('2.12.2'); /** Version "5.7.mysql_aurora.2.12.3". */ public static readonly VER_2_12_3 = AuroraMysqlEngineVersion.builtIn_5_7('2.12.3'); /** Version "5.7.mysql_aurora.2.12.4". */ public static readonly VER_2_12_4 = AuroraMysqlEngineVersion.builtIn_5_7('2.12.4'); /** * Version "8.0.mysql_aurora.3.01.0" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.01.0 is no longer supported by Amazon RDS. */ public static readonly VER_3_01_0 = AuroraMysqlEngineVersion.builtIn_8_0('3.01.0'); /** * Version "8.0.mysql_aurora.3.01.1" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.01.1 is no longer supported by Amazon RDS. */ public static readonly VER_3_01_1 = AuroraMysqlEngineVersion.builtIn_8_0('3.01.1'); /** * Version "8.0.mysql_aurora.3.02.0" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.02.0 is no longer supported by Amazon RDS. */ public static readonly VER_3_02_0 = AuroraMysqlEngineVersion.builtIn_8_0('3.02.0'); /** * Version "8.0.mysql_aurora.3.02.1" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.02.1 is no longer supported by Amazon RDS. */ public static readonly VER_3_02_1 = AuroraMysqlEngineVersion.builtIn_8_0('3.02.1'); /** * Version "8.0.mysql_aurora.3.02.2" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.02.2 is no longer supported by Amazon RDS. */ public static readonly VER_3_02_2 = AuroraMysqlEngineVersion.builtIn_8_0('3.02.2'); /** * Version "8.0.mysql_aurora.3.02.3" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.02.3 is no longer supported by Amazon RDS. */ public static readonly VER_3_02_3 = AuroraMysqlEngineVersion.builtIn_8_0('3.02.3'); /** * Version "8.0.mysql_aurora.3.03.0" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.03.0 is no longer supported by Amazon RDS. */ public static readonly VER_3_03_0 = AuroraMysqlEngineVersion.builtIn_8_0('3.03.0'); /** * Version "8.0.mysql_aurora.3.03.1" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.03.1 is no longer supported by Amazon RDS. */ public static readonly VER_3_03_1 = AuroraMysqlEngineVersion.builtIn_8_0('3.03.1'); /** * Version "8.0.mysql_aurora.3.03.2" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.03.2 is no longer supported by Amazon RDS. */ public static readonly VER_3_03_2 = AuroraMysqlEngineVersion.builtIn_8_0('3.03.2'); /** * Version "8.0.mysql_aurora.3.03.3" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.03.3 is no longer supported by Amazon RDS. */ public static readonly VER_3_03_3 = AuroraMysqlEngineVersion.builtIn_8_0('3.03.3'); /** Version "8.0.mysql_aurora.3.04.0". */ public static readonly VER_3_04_0 = AuroraMysqlEngineVersion.builtIn_8_0('3.04.0'); /** Version "8.0.mysql_aurora.3.04.1". */ public static readonly VER_3_04_1 = AuroraMysqlEngineVersion.builtIn_8_0('3.04.1'); /** Version "8.0.mysql_aurora.3.04.2". */ public static readonly VER_3_04_2 = AuroraMysqlEngineVersion.builtIn_8_0('3.04.2'); /** Version "8.0.mysql_aurora.3.04.3". */ public static readonly VER_3_04_3 = AuroraMysqlEngineVersion.builtIn_8_0('3.04.3'); /** * Version "8.0.mysql_aurora.3.05.0" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.05.0 is no longer supported by Amazon RDS. */ public static readonly VER_3_05_0 = AuroraMysqlEngineVersion.builtIn_8_0('3.05.0'); /** * Version "8.0.mysql_aurora.3.05.1" * @deprecated Aurora MySQL 8.0.mysql_aurora.3.05.1 is no longer supported by Amazon RDS. */ public static readonly VER_3_05_1 = AuroraMysqlEngineVersion.builtIn_8_0('3.05.1'); /** Version "8.0.mysql_aurora.3.05.2". */ public static readonly VER_3_05_2 = AuroraMysqlEngineVersion.builtIn_8_0('3.05.2'); /** Version "8.0.mysql_aurora.3.06.0". */ public static readonly VER_3_06_0 = AuroraMysqlEngineVersion.builtIn_8_0('3.06.0'); /** Version "8.0.mysql_aurora.3.06.1". */ public static readonly VER_3_06_1 = AuroraMysqlEngineVersion.builtIn_8_0('3.06.1'); /** Version "8.0.mysql_aurora.3.07.0". */ public static readonly VER_3_07_0 = AuroraMysqlEngineVersion.builtIn_8_0('3.07.0'); /** Version "8.0.mysql_aurora.3.07.1". */ public static readonly VER_3_07_1 = AuroraMysqlEngineVersion.builtIn_8_0('3.07.1'); /** Version "8.0.mysql_aurora.3.08.0". */ public static readonly VER_3_08_0 = AuroraMysqlEngineVersion.builtIn_8_0('3.08.0'); /** Version "8.0.mysql_aurora.3.08.1". */ public static readonly VER_3_08_1 = AuroraMysqlEngineVersion.builtIn_8_0('3.08.1'); /** Version "8.0.mysql_aurora.3.08.2". */ public static readonly VER_3_08_2 = AuroraMysqlEngineVersion.builtIn_8_0('3.08.2'); /** * Create a new AuroraMysqlEngineVersion with an arbitrary version. * * @param auroraMysqlFullVersion the full version string, * for example "5.7.mysql_aurora.2.78.3.6" * @param auroraMysqlMajorVersion the major version of the engine, * defaults to "5.7" */ public static of(auroraMysqlFullVersion: string, auroraMysqlMajorVersion?: string): AuroraMysqlEngineVersion { return new AuroraMysqlEngineVersion(auroraMysqlFullVersion, auroraMysqlMajorVersion); } private static builtIn_5_7(minorVersion: string, addStandardPrefix: boolean = true): AuroraMysqlEngineVersion { return new AuroraMysqlEngineVersion(`5.7.${addStandardPrefix ? 'mysql_aurora.' : ''}${minorVersion}`); } private static builtIn_8_0(minorVersion: string): AuroraMysqlEngineVersion { // 8.0 of the MySQL engine needs to combine the import and export Roles return new AuroraMysqlEngineVersion(`8.0.mysql_aurora.${minorVersion}`, '8.0', true); } /** The full version string, for example, "5.7.mysql_aurora.1.78.3.6". */ public readonly auroraMysqlFullVersion: string; /** The major version of the engine. Currently, it's either "5.7", or "8.0". */ public readonly auroraMysqlMajorVersion: string; /** * Whether this version requires combining the import and export IAM Roles. * * @internal */ public readonly _combineImportAndExportRoles?: boolean; private constructor( auroraMysqlFullVersion: string, auroraMysqlMajorVersion: string = '5.7', combineImportAndExportRoles?: boolean, ) { this.auroraMysqlFullVersion = auroraMysqlFullVersion; this.auroraMysqlMajorVersion = auroraMysqlMajorVersion; this._combineImportAndExportRoles = combineImportAndExportRoles; } } /** * Creation properties of the Aurora MySQL database cluster engine. * Used in `DatabaseClusterEngine.auroraMysql`. */ export interface AuroraMysqlClusterEngineProps { /** The version of the Aurora MySQL cluster engine. */ readonly version: AuroraMysqlEngineVersion; } class AuroraMysqlClusterEngine extends MySqlClusterEngineBase { constructor(version?: AuroraMysqlEngineVersion) { super({ engineType: 'aurora-mysql', engineVersion: version ? { fullVersion: version.auroraMysqlFullVersion, majorVersion: version.auroraMysqlMajorVersion, } : undefined, defaultMajorVersion: '5.7', combineImportAndExportRoles: version?._combineImportAndExportRoles, }); } protected defaultParameterGroup(scope: Construct): IParameterGroup | undefined { return ParameterGroup.fromParameterGroupName(scope, 'AuroraMySqlDatabaseClusterEngineDefaultParameterGroup', `default.${this.parameterGroupFamily}`); } } /** * Features supported by this version of the Aurora Postgres cluster engine. */ export interface AuroraPostgresEngineFeatures { /** * Whether this version of the Aurora Postgres cluster engine supports the S3 data import feature. * * @default false */ readonly s3Import?: boolean; /** * Whether this version of the Aurora Postgres cluster engine supports the S3 data export feature. * * @default false */ readonly s3Export?: boolean; } /** * The versions for the Aurora PostgreSQL cluster engine * (those returned by `DatabaseClusterEngine.auroraPostgres`). * * https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html */ export class AuroraPostgresEngineVersion { /** * Version "9.6.8". * @deprecated Version 9.6.8 is no longer supported by Amazon RDS. */ public static readonly VER_9_6_8 = AuroraPostgresEngineVersion.of('9.6.8', '9.6'); /** * Version "9.6.9". * @deprecated Version 9.6.9 is no longer supported by Amazon RDS. */ public static readonly VER_9_6_9 = AuroraPostgresEngineVersion.of('9.6.9', '9.6'); /** * Version "9.6.11". * @deprecated Version 9.6.11 is no longer supported by Amazon RDS. */ public static readonly VER_9_6_11 = AuroraPostgresEngineVersion.of('9.6.11', '9.6'); /** * Version "9.6.12". * @deprecated Version 9.6.12 is no longer supported by Amazon RDS. */ public static readonly VER_9_6_12 = AuroraPostgresEngineVersion.of('9.6.12', '9.6'); /** * Version "9.6.16". * @deprecated Version 9.6.16 is no longer supported by Amazon RDS. */ public static readonly VER_9_6_16 = AuroraPostgresEngineVersion.of('9.6.16', '9.6'); /** * Version "9.6.17". * @deprecated Version 9.6.17 is no longer supported by Amazon RDS. */ public static readonly VER_9_6_17 = AuroraPostgresEngineVersion.of('9.6.17', '9.6'); /** * Version "9.6.18". * @deprecated Version 9.6.18 is no longer supported by Amazon RDS. */ public static readonly VER_9_6_18 = AuroraPostgresEngineVersion.of('9.6.18', '9.6'); /** * Version "9.6.19". * @deprecated Version 9.6.19 is no longer supported by Amazon RDS. */ public static readonly VER_9_6_19 = AuroraPostgresEngineVersion.of('9.6.19', '9.6'); /** * Version "9.6.22" * @deprecated Version 9.6.22 is no longer supported by Amazon RDS. */ public static readonly VER_9_6_22 = AuroraPostgresEngineVersion.of('9.6.22', '9.6'); /** * Version "10.4". * @deprecated Version 10.4 is no longer supported by Amazon RDS. */ public static readonly VER_10_4 = AuroraPostgresEngineVersion.of('10.4', '10'); /** * Version "10.5". * @deprecated Version 10.5 is no longer supported by Amazon RDS. */ public static readonly VER_10_5 = AuroraPostgresEngineVersion.of('10.5', '10'); /** * Version "10.6". * @deprecated Version 10.6 is no longer supported by Amazon RDS. */ public static readonly VER_10_6 = AuroraPostgresEngineVersion.of('10.6', '10'); /** * Version "10.7". * @deprecated Version 10.7 is no longer supported by Amazon RDS. */ public static readonly VER_10_7 = AuroraPostgresEngineVersion.of('10.7', '10', { s3Import: true }); /** * Version "10.11". * @deprecated Version 10.11 is no longer supported by Amazon RDS. */ public static readonly VER_10_11 = AuroraPostgresEngineVersion.of('10.11', '10', { s3Import: true, s3Export: true }); /** * Version "10.12". * @deprecated Version 10.12 is no longer supported by Amazon RDS. */ public static readonly VER_10_12 = AuroraPostgresEngineVersion.of('10.12', '10', { s3Import: true, s3Export: true }); /** * Version "10.13". * @deprecated Version 10.13 is no longer supported by Amazon RDS. */ public static readonly VER_10_13 = AuroraPostgresEngineVersion.of('10.13', '10', { s3Import: true, s3Export: true }); /** * Version "10.14". * @deprecated Version 10.14 is no longer supported by Amazon RDS. */ public static readonly VER_10_14 = AuroraPostgresEngineVersion.of('10.14', '10', { s3Import: true, s3Export: true }); /** * Version "10.16". * @deprecated Version 10.16 is no longer supported by Amazon RDS. */ public static readonly VER_10_16 = AuroraPostgresEngineVersion.of('10.16', '10', { s3Import: true, s3Export: true }); /** * Version "10.17". * @deprecated Version 10.17 is no longer supported by Amazon RDS. */ public static readonly VER_10_17 = AuroraPostgresEngineVersion.of('10.17', '10', { s3Import: true, s3Export: true }); /** * Version "10.18". * @deprecated Version 10.18 is no longer supported by Amazon RDS. */ public static readonly VER_10_18 = AuroraPostgresEngineVersion.of('10.18', '10', { s3Import: true, s3Export: true }); /** * Version "10.19". * @deprecated Version 10.19 is no longer supported by Amazon RDS. */ public static readonly VER_10_19 = AuroraPostgresEngineVersion.of('10.19', '10', { s3Import: true, s3Export: true }); /** * Version "10.20". * @deprecated Version 10.20 is no longer supported by Amazon RDS. */ public static readonly VER_10_20 = AuroraPostgresEngineVersion.of('10.20', '10', { s3Import: true, s3Export: true }); /** * Version "10.21". * @deprecated Version 10.21 is no longer supported by Amazon RDS. */ public static readonly VER_10_21 = AuroraPostgresEngineVersion.of('10.21', '10', { s3Import: true, s3Export: true }); /** * Version "11.4". * @deprecated Version 11.4 is no longer supported by Amazon RDS. */ public static readonly VER_11_4 = AuroraPostgresEngineVersion.of('11.4', '11', { s3Import: true }); /** * Version "11.6". * @deprecated Version 11.6 is no longer supported by Amazon RDS. */ public static readonly VER_11_6 = AuroraPostgresEngineVersion.of('11.6', '11', { s3Import: true, s3Export: true }); /** * Version "11.7". * @deprecated Version 11.7 is no longer supported by Amazon RDS. */ public static readonly VER_11_7 = AuroraPostgresEngineVersion.of('11.7', '11', { s3Import: true, s3Export: true }); /** * Version "11.8". * @deprecated Version 11.8 is no longer supported by Amazon RDS. */ public static readonly VER_11_8 = AuroraPostgresEngineVersion.of('11.8', '11', { s3Import: true, s3Export: true }); /** Version "11.9". */ public static readonly VER_11_9 = AuroraPostgresEngineVersion.of('11.9', '11', { s3Import: true, s3Export: true }); /** * Version "11.11". * @deprecated Version 11.11 is no longer supported by Amazon RDS. */ public static readonly VER_11_11 = AuroraPostgresEngineVersion.of('11.11', '11', { s3Import: true, s3Export: true }); /** * Version "11.12". * @deprecated Version 11.12 is no longer supported by Amazon RDS. */ public static readonly VER_11_12 = AuroraPostgresEngineVersion.of('11.12', '11', { s3Import: true, s3Export: true }); /** * Version "11.13". * @deprecated Version 11.13 is no longer supported by Amazon RDS. */ public static readonly VER_11_13 = AuroraPostgresEngineVersion.of('11.13', '11', { s3Import: true, s3Export: true }); /** * Version "11.14". * @deprecated Version 11.14 is no longer supported by Amazon RDS. */ public static readonly VER_11_14 = AuroraPostgresEngineVersion.of('11.14', '11', { s3Import: true, s3Export: true }); /** * Version "11.15". * @deprecated Version 11.15 is no longer supported by Amazon RDS. */ public static readonly VER_11_15 = AuroraPostgresEngineVersion.of('11.15', '11', { s3Import: true, s3Export: true }); /** * Version "11.16" * @deprecated Version 11.16 is no longer supported by Amazon RDS. */ public static readonly VER_11_16 = AuroraPostgresEngineVersion.of('11.16', '11', { s3Import: true, s3Export: true }); /** * Version "11.17" * @deprecated Version 11.17 is no longer supported by Amazon RDS. */ public static readonly VER_11_17 = AuroraPostgresEngineVersion.of('11.17', '11', { s3Import: true, s3Export: true }); /** * Version "11.18" * @deprecated Version 11.18 is no longer supported by Amazon RDS. */ public static readonly VER_11_18 = AuroraPostgresEngineVersion.of('11.18', '11', { s3Import: true, s3Export: true }); /** * Version "11.19" * @deprecated Version 11.19 is no longer supported by Amazon RDS. */ public static readonly VER_11_19 = AuroraPostgresEngineVersion.of('11.19', '11', { s3Import: true, s3Export: true }); /** * Version "11.20" * @deprecated Version 11.20 is no longer supported by Amazon RDS. */ public static readonly VER_11_20 = AuroraPostgresEngineVersion.of('11.20', '11', { s3Import: true, s3Export: true }); /** Version "11.21". */ public static readonly VER_11_21 = AuroraPostgresEngineVersion.of('11.21', '11', { s3Import: true, s3Export: true }); /** * Version "12.4". * @deprecated Version 12.4 is no longer supported by Amazon RDS. */ public static readonly VER_12_4 = AuroraPostgresEngineVersion.of('12.4', '12', { s3Import: true, s3Export: true }); /** * Version "12.6". * @deprecated Version 12.6 is no longer supported by Amazon RDS. */ public static readonly VER_12_6 = AuroraPostgresEngineVersion.of('12.6', '12', { s3Import: true, s3Export: true }); /** * Version "12.7". * @deprecated Version 12.7 is no longer supported by Amazon RDS. */ public static readonly VER_12_7 = AuroraPostgresEngineVersion.of('12.7', '12', { s3Import: true, s3Export: true }); /** * Version "12.8". * @deprecated Version 12.8 is no longer supported by Amazon RDS. */ public static readonly VER_12_8 = AuroraPostgresEngineVersion.of('12.8', '12', { s3Import: true, s3Export: true }); /** Version "12.9". */ public static readonly VER_12_9 = AuroraPostgresEngineVersion.of('12.9', '12', { s3Import: true, s3Export: true }); /** * Version "12.10". * @deprecated Version 12.10 is no longer supported by Amazon RDS. */ public static readonly VER_12_10 = AuroraPostgresEngineVersion.of('12.10', '12', { s3Import: true, s3Export: true }); /** Version "12.11". */ public static readonly VER_12_11 = AuroraPostgresEngineVersion.of('12.11', '12', { s3Import: true, s3Export: true }); /** Version "12.12". */ public static readonly VER_12_12 = AuroraPostgresEngineVersion.of('12.12', '12', { s3Import: true, s3Export: true }); /** Version "12.13". */ public static readonly VER_12_13 = AuroraPostgresEngineVersion.of('12.13', '12', { s3Import: true, s3Export: true }); /** Version "12.14". */ public static readonly VER_12_14 = AuroraPostgresEngineVersion.of('12.14', '12', { s3Import: true, s3Export: true }); /** Version "12.15". */ public static readonly VER_12_15 = AuroraPostgresEngineVersion.of('12.15', '12', { s3Import: true, s3Export: true }); /** Version "12.16". */ public static readonly VER_12_16 = AuroraPostgresEngineVersion.of('12.16', '12', { s3Import: true, s3Export: true }); /** Version "12.17". */ public static readonly VER_12_17 = AuroraPostgresEngineVersion.of('12.17', '12', { s3Import: true, s3Export: true }); /** Version "12.18". */ public static readonly VER_12_18 = AuroraPostgresEngineVersion.of('12.18', '12', { s3Import: true, s3Export: true }); /** Version "12.19". */ public static readonly VER_12_19 = AuroraPostgresEngineVersion.of('12.19', '12', { s3Import: true, s3Export: true }); /** Version "12.20". */ public static readonly VER_12_20 = AuroraPostgresEngineVersion.of('12.20', '12', { s3Import: true, s3Export: true }); /** Version "12.21". */ public static readonly VER_12_21 = AuroraPostgresEngineVersion.of('12.21', '12', { s3Import: true, s3Export: true }); /** Version "12.22". */ public static readonly VER_12_22 = AuroraPostgresEngineVersion.of('12.22', '12', { s3Import: true, s3Export: true }); /** * Version "13.3". * @deprecated Version 13.3 is no longer supported by Amazon RDS. */ public static readonly VER_13_3 = AuroraPostgresEngineVersion.of('13.3', '13', { s3Import: true, s3Export: true }); /** * Version "13.4". * @deprecated Version 13.4 is no longer supported by Amazon RDS. */ public static readonly VER_13_4 = AuroraPostgresEngineVersion.of('13.4', '13', { s3Import: true, s3Export: true }); /** * Version "13.5". * @deprecated Version 13.5 is no longer supported by Amazon RDS. */ public static readonly VER_13_5 = AuroraPostgresEngineVersion.of('13.5', '13', { s3Import: true, s3Export: true }); /** * Version "13.6". * @deprecated Version 13.6 is no longer supported by Amazon RDS. */ public static readonly VER_13_6 = AuroraPostgresEngineVersion.of('13.6', '13', { s3Import: true, s3Export: true }); /** Version "13.7". */ public static readonly VER_13_7 = AuroraPostgresEngineVersion.of('13.7', '13', { s3Import: true, s3Export: true }); /** Version "13.8". */ public static readonly VER_13_8 = AuroraPostgresEngineVersion.of('13.8', '13', { s3Import: true, s3Export: true }); /** Version "13.9". */ public static readonly VER_13_9 = AuroraPostgresEngineVersion.of('13.9', '13', { s3Import: true, s3Export: true }); /** Version "13.10". */ public static readonly VER_13_10 = AuroraPostgresEngineVersion.of('13.10', '13', { s3Import: true, s3Export: true }); /** Version "13.11". */ public static readonly VER_13_11 = AuroraPostgresEngineVersion.of('13.11', '13', { s3Import: true, s3Export: true }); /** Version "13.12". */ public static readonly VER_13_12 = AuroraPostgresEngineVersion.of('13.12', '13', { s3Import: true, s3Export: true }); /** Version "13.13". */ public static readonly VER_13_13 = AuroraPostgresEngineVersion.of('13.13', '13', { s3Import: true, s3Export: true }); /** Version "13.14". */ public static readonly VER_13_14 = AuroraPostgresEngineVersion.of('13.14', '13', { s3Import: true, s3Export: true }); /** Version "13.15". */ public static readonly VER_13_15 = AuroraPostgresEngineVersion.of('13.15', '13', { s3Import: true, s3Export: true }); /** Version "13.16". */ public static readonly VER_13_16 = AuroraPostgresEngineVersion.of('13.16', '13', { s3Import: true, s3Export: true }); /** Version "13.17". */ public static readonly VER_13_17 = AuroraPostgresEngineVersion.of('13.17', '13', { s3Import: true, s3Export: true }); /** Version "13.18". */ public static readonly VER_13_18 = AuroraPostgresEngineVersion.of('13.18', '13', { s3Import: true, s3Export: true }); /** Version "13.20". */ public static readonly VER_13_20 = AuroraPostgresEngineVersion.of('13.20', '13', { s3Import: true, s3Export: true }); /** Version "14.3". */ public static readonly VER_14_3 = AuroraPostgresEngineVersion.of('14.3', '14', { s3Import: true, s3Export: true }); /** Version "14.4". */ public static readonly VER_14_4 = AuroraPostgresEngineVersion.of('14.4', '14', { s3Import: true, s3Export: true }); /** Version "14.5". */ public static readonly VER_14_5 = AuroraPostgresEngineVersion.of('14.5', '14', { s3Import: true, s3Export: true }); /** Version "14.6". */ public static readonly VER_14_6 = AuroraPostgresEngineVersion.of('14.6', '14', { s3Import: true, s3Export: true }); /** Version "14.7". */ public static readonly VER_14_7 = AuroraPostgresEngineVersion.of('14.7', '14', { s3Import: true, s3Export: true }); /** Version "14.8". */ public static readonly VER_14_8 = AuroraPostgresEngineVersion.of('14.8', '14', { s3Import: true, s3Export: true }); /** Version "14.9". */ public static readonly VER_14_9 = AuroraPostgresEngineVersion.of('14.9', '14', { s3Import: true, s3Export: true }); /** Version "14.10". */ public static readonly VER_14_10 = AuroraPostgresEngineVersion.of('14.10', '14', { s3Import: true, s3Export: true }); /** Version "14.11". */ public static readonly VER_14_11 = AuroraPostgresEngineVersion.of('14.11', '14', { s3Import: true, s3Export: true }); /** Version "14.12". */ public static readonly VER_14_12 = AuroraPostgresEngineVersion.of('14.12', '14', { s3Import: true, s3Export: true }); /** Version "14.13". */ public static readonly VER_14_13 = AuroraPostgresEngineVersion.of('14.13', '14', { s3Import: true, s3Export: true }); /** Version "14.14". */ public static readonly VER_14_14 = AuroraPostgresEngineVersion.of('14.14', '14', { s3Import: true, s3Export: true }); /** Version "14.15". */ public static readonly VER_14_15 = AuroraPostgresEngineVersion.of('14.15', '14', { s3Import: true, s3Export: true }); /** Version "14.17". */ public static readonly VER_14_17 = AuroraPostgresEngineVersion.of('14.17', '14', { s3Import: true, s3Export: true }); /** Version "15.2". */ public static readonly VER_15_2 = AuroraPostgresEngineVersion.of('15.2', '15', { s3Import: true, s3Export: true }); /** Version "15.3". */ public static readonly VER_15_3 = AuroraPostgresEngineVersion.of('15.3', '15', { s3Import: true, s3Export: true }); /** Version "15.4". */ public static readonly VER_15_4 = AuroraPostgresEngineVersion.of('15.4', '15', { s3Import: true, s3Export: true }); /** Version "15.5". */ public static readonly VER_15_5 = AuroraPostgresEngineVersion.of('15.5', '15', { s3Import: true, s3Export: true }); /** Version "15.6". */ public static readonly VER_15_6 = AuroraPostgresEngineVersion.of('15.6', '15', { s3Import: true, s3Export: true }); /** Version "15.7". */ public static readonly VER_15_7 = AuroraPostgresEngineVersion.of('15.7', '15', { s3Import: true, s3Export: true }); /** Version "15.8". */ public static readonly VER_15_8 = AuroraPostgresEngineVersion.of('15.8', '15', { s3Import: true, s3Export: true }); /** Version "15.9". */ public static readonly VER_15_9 = AuroraPostgresEngineVersion.of('15.9', '15', { s3Import: true, s3Export: true }); /** Version "15.10". */ public static readonly VER_15_10 = AuroraPostgresEngineVersion.of('15.10', '15', { s3Import: true, s3Export: true }); /** Version "15.12". */ public static readonly VER_15_12 = AuroraPostgresEngineVersion.of('15.12', '15', { s3Import: true, s3Export: true }); /** * Version "16.0" * @deprecated Version 16.0 is no longer supported by Amazon RDS. */ public static readonly VER_16_0 = AuroraPostgresEngineVersion.of('16.0', '16', { s3Import: true, s3Export: true }); /** Version "16.1". */ public static readonly VER_16_1 = AuroraPostgresEngineVersion.of('16.1', '16', { s3Import: true, s3Export: true }); /** Version "16.2". */ public static readonly VER_16_2 = AuroraPostgresEngineVersion.of('16.2', '16', { s3Import: true, s3Export: true }); /** Version "16.3". */ public static readonly VER_16_3 = AuroraPostgresEngineVersion.of('16.3', '16', { s3Import: true, s3Export: true }); /** Version "16.4". */ public static readonly VER_16_4 = AuroraPostgresEngineVersion.of('16.4', '16', { s3Import: true, s3Export: true }); /** Version "16.4 limitless" */ public static readonly VER_16_4_LIMITLESS = AuroraPostgresEngineVersion.of('16.4-limitless', '16', { s3Import: true, s3Export: true }); /** * Version "16.5" * @deprecated Version 16.5 is no longer supported by Amazon RDS. */ public static readonly VER_16_5 = AuroraPostgresEngineVersion.of('16.5', '16', { s3Import: true, s3Export: true }); /** Version "16.6". */ public static readonly VER_16_6 = AuroraPostgresEngineVersion.of('16.6', '16', { s3Import: true, s3Export: true }); /** Version "16.6 limitless" */ public static readonly VER_16_6_LIMITLESS = AuroraPostgresEngineVersion.of('16.6-limitless', '16', { s3Import: true, s3Export: true }); /** Version "16.8". */ public static readonly VER_16_8 = AuroraPostgresEngineVersion.of('16.8', '16', { s3Import: true, s3Export: true }); /** * Version "17.1" * @deprecated Version 17.1 is no longer supported by Amazon RDS. */ public static readonly VER_17_1 = AuroraPostgresEngineVersion.of('17.1', '17', { s3Import: true, s3Export: true }); /** * Version "17.2" * @deprecated Version 17.2 is no longer supported by Amazon RDS. */ public static readonly VER_17_2 = AuroraPostgresEngineVersion.of('17.2', '17', { s3Import: true, s3Export: true }); /** Version "17.4". */ public static readonly VER_17_4 = AuroraPostgresEngineVersion.of('17.4', '17', { s3Import: true, s3Export: true }); /** * Create a new AuroraPostgresEngineVersion with an arbitrary version. * * @param auroraPostgresFullVersion the full version string, * for example "9.6.25.1" * @param auroraPostgresMajorVersion the major version of the engine, * for example "9.6" */ public static of(auroraPostgresFullVersion: string, auroraPostgresMajorVersion: string, auroraPostgresFeatures?: AuroraPostgresEngineFeatures): AuroraPostgresEngineVersion { return new AuroraPostgresEngineVersion(auroraPostgresFullVersion, auroraPostgresMajorVersion, auroraPostgresFeatures); } /** The full version string, for example, "9.6.25.1". */ public readonly auroraPostgresFullVersion: string; /** The major version of the engine, for example, "9.6". */ public readonly auroraPostgresMajorVersion: string; /** * The supported features for the DB engine * * @internal */ public readonly _features: ClusterEngineFeatures; private constructor(auroraPostgresFullVersion: string, auroraPostgresMajorVersion: string, auroraPostgresFeatures?: AuroraPostgresEngineFeatures) { this.auroraPostgresFullVersion = auroraPostgresFullVersion; this.auroraPostgresMajorVersion = auroraPostgresMajorVersion; this._features = { s3Import: auroraPostgresFeatures?.s3Import ? 's3Import' : undefined, s3Export: auroraPostgresFeatures?.s3Export ? 's3Export' : undefined, }; } } /** * Creation properties of the Aurora PostgreSQL database cluster engine. * Used in `DatabaseClusterEngine.auroraPostgres`. */ export interface AuroraPostgresClusterEngineProps { /** The version of the Aurora PostgreSQL cluster engine. */ readonly version: AuroraPostgresEngineVersion; } class AuroraPostgresClusterEngine extends ClusterEngineBase { /** * feature name for the S3 data import feature */ private static readonly S3_IMPORT_FEATURE_NAME = 's3Import'; /** * feature name for the S3 data export feature */ private static readonly S3_EXPORT_FEATURE_NAME = 's3Export'; public readonly engineFamily = 'POSTGRESQL'; public readonly defaultUsername = 'postgres'; public readonly supportedLogTypes: string[] = ['postgresql']; constructor(version?: AuroraPostgresEngineVersion) { super({ engineType: 'aurora-postgresql', singleUserRotationApplication: secretsmanager.SecretRotationApplication.POSTGRES_ROTATION_SINGLE_USER, multiUserRotationApplication: secretsmanager.SecretRotationApplication.POSTGRES_ROTATION_MULTI_USER, defaultPort: 5432, engineVersion: version ? { fullVersion: version.auroraPostgresFullVersion, majorVersion: version.auroraPostgresMajorVersion, } : undefined, features: version ? { s3Import: version._features.s3Import ? AuroraPostgresClusterEngine.S3_IMPORT_FEATURE_NAME : undefined, s3Export: version._features.s3Export ? AuroraPostgresClusterEngine.S3_EXPORT_FEATURE_NAME : undefined, } : { s3Import: AuroraPostgresClusterEngine.S3_IMPORT_FEATURE_NAME, s3Export: AuroraPostgresClusterEngine.S3_EXPORT_FEATURE_NAME, }, }); } public bindToCluster(scope: Construct, options: ClusterEngineBindOptions): ClusterEngineConfig { const config = super.bindToCluster(scope, options); // skip validation for unversioned as it might be supported/unsupported. we cannot reliably tell at compile-time if (this.engineVersion?.fullVersion) { if (options.s3ImportRole && !(config.features?.s3Import)) { throw new ValidationError(`s3Import is not supported for Postgres version: ${this.engineVersion.fullVersion}. Use a version that supports the s3Import feature.`, scope); } if (options.s3ExportRole && !(config.features?.s3Export)) { throw new ValidationError(`s3Export is not supported for Postgres version: ${this.engineVersion.fullVersion}. Use a version that supports the s3Export feature.`, scope); } } return config; } protected defaultParameterGroup(scope: Construct): IParameterGroup | undefined { if (!this.parameterGroupFamily) { throw new ValidationError('Could not create a new ParameterGroup for an unversioned aurora-postgresql cluster engine. ' + 'Please either use a versioned engine, or pass an explicit ParameterGroup when creating the cluster', scope); } return ParameterGroup.fromParameterGroupName(scope, 'AuroraPostgreSqlDatabaseClusterEngineDefaultParameterGroup', `default.${this.parameterGroupFamily}`); } } /** * A database cluster engine. Provides mapping to the serverless application * used for secret rotation. */ export class DatabaseClusterEngine { /** * The unversioned 'aurora' cluster engine. * * **Note**: we do not recommend using unversioned engines for non-serverless Clusters, * as that can pose an availability risk. * We recommend using versioned engines created using the `aurora()` method * * @deprecated use `AURORA_MYSQL` instead */ public static readonly AURORA: IClusterEngine = new AuroraClusterEngine(); /** * The unversioned 'aurora-msql' cluster engine. * * **Note**: we do not recommend using unversioned engines for non-serverless Clusters, * as that can pose an availability risk. * We recommend using versioned engines created using the `auroraMysql()` method */ public static readonly AURORA_MYSQL: IClusterEngine = new AuroraMysqlClusterEngine(); /** * The unversioned 'aurora-postgresql' cluster engine. * * **Note**: we do not recommend using unversioned engines for non-serverless Clusters, * as that can pose an availability risk. * We recommend using versioned engines created using the `auroraPostgres()` method */ public static readonly AURORA_POSTGRESQL: IClusterEngine = new AuroraPostgresClusterEngine(); /** * Creates a new plain Aurora database cluster engine. * * @deprecated use `auroraMysql()` instead */ public static aurora(props: AuroraClusterEngineProps): IClusterEngine { return new AuroraClusterEngine(props.version); } /** Creates a new Aurora MySQL database cluster engine. */ public static auroraMysql(props: AuroraMysqlClusterEngineProps): IClusterEngine { return new AuroraMysqlClusterEngine(props.version); } /** Creates a new Aurora PostgreSQL database cluster engine. */ public static auroraPostgres(props: AuroraPostgresClusterEngineProps): IClusterEngine { return new AuroraPostgresClusterEngine(props.version); } }