All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.cloudshiftdev.awscdk.services.rds.CfnDBInstanceProps.kt Maven / Gradle / Ivy

The newest version!
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")

package io.cloudshiftdev.awscdk.services.rds

import io.cloudshiftdev.awscdk.CfnTag
import io.cloudshiftdev.awscdk.IResolvable
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.common.CdkObject
import io.cloudshiftdev.awscdk.common.CdkObjectWrappers
import kotlin.Any
import kotlin.Boolean
import kotlin.Deprecated
import kotlin.Number
import kotlin.String
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Properties for defining a `CfnDBInstance`.
 *
 * Example:
 *
 * ```
 * // The code below shows an example of how to instantiate this type.
 * // The values are placeholders you should change.
 * import io.cloudshiftdev.awscdk.services.rds.*;
 * CfnDBInstanceProps cfnDBInstanceProps = CfnDBInstanceProps.builder()
 * .allocatedStorage("allocatedStorage")
 * .allowMajorVersionUpgrade(false)
 * .associatedRoles(List.of(DBInstanceRoleProperty.builder()
 * .featureName("featureName")
 * .roleArn("roleArn")
 * .build()))
 * .automaticBackupReplicationKmsKeyId("automaticBackupReplicationKmsKeyId")
 * .automaticBackupReplicationRegion("automaticBackupReplicationRegion")
 * .autoMinorVersionUpgrade(false)
 * .availabilityZone("availabilityZone")
 * .backupRetentionPeriod(123)
 * .caCertificateIdentifier("caCertificateIdentifier")
 * .certificateDetails(CertificateDetailsProperty.builder()
 * .caIdentifier("caIdentifier")
 * .validTill("validTill")
 * .build())
 * .certificateRotationRestart(false)
 * .characterSetName("characterSetName")
 * .copyTagsToSnapshot(false)
 * .customIamInstanceProfile("customIamInstanceProfile")
 * .dbClusterIdentifier("dbClusterIdentifier")
 * .dbClusterSnapshotIdentifier("dbClusterSnapshotIdentifier")
 * .dbInstanceClass("dbInstanceClass")
 * .dbInstanceIdentifier("dbInstanceIdentifier")
 * .dbName("dbName")
 * .dbParameterGroupName("dbParameterGroupName")
 * .dbSecurityGroups(List.of("dbSecurityGroups"))
 * .dbSnapshotIdentifier("dbSnapshotIdentifier")
 * .dbSubnetGroupName("dbSubnetGroupName")
 * .dedicatedLogVolume(false)
 * .deleteAutomatedBackups(false)
 * .deletionProtection(false)
 * .domain("domain")
 * .domainAuthSecretArn("domainAuthSecretArn")
 * .domainDnsIps(List.of("domainDnsIps"))
 * .domainFqdn("domainFqdn")
 * .domainIamRoleName("domainIamRoleName")
 * .domainOu("domainOu")
 * .enableCloudwatchLogsExports(List.of("enableCloudwatchLogsExports"))
 * .enableIamDatabaseAuthentication(false)
 * .enablePerformanceInsights(false)
 * .endpoint(EndpointProperty.builder()
 * .address("address")
 * .hostedZoneId("hostedZoneId")
 * .port("port")
 * .build())
 * .engine("engine")
 * .engineLifecycleSupport("engineLifecycleSupport")
 * .engineVersion("engineVersion")
 * .iops(123)
 * .kmsKeyId("kmsKeyId")
 * .licenseModel("licenseModel")
 * .manageMasterUserPassword(false)
 * .masterUsername("masterUsername")
 * .masterUserPassword("masterUserPassword")
 * .masterUserSecret(MasterUserSecretProperty.builder()
 * .kmsKeyId("kmsKeyId")
 * .secretArn("secretArn")
 * .build())
 * .maxAllocatedStorage(123)
 * .monitoringInterval(123)
 * .monitoringRoleArn("monitoringRoleArn")
 * .multiAz(false)
 * .ncharCharacterSetName("ncharCharacterSetName")
 * .networkType("networkType")
 * .optionGroupName("optionGroupName")
 * .performanceInsightsKmsKeyId("performanceInsightsKmsKeyId")
 * .performanceInsightsRetentionPeriod(123)
 * .port("port")
 * .preferredBackupWindow("preferredBackupWindow")
 * .preferredMaintenanceWindow("preferredMaintenanceWindow")
 * .processorFeatures(List.of(ProcessorFeatureProperty.builder()
 * .name("name")
 * .value("value")
 * .build()))
 * .promotionTier(123)
 * .publiclyAccessible(false)
 * .replicaMode("replicaMode")
 * .restoreTime("restoreTime")
 * .sourceDbClusterIdentifier("sourceDbClusterIdentifier")
 * .sourceDbInstanceAutomatedBackupsArn("sourceDbInstanceAutomatedBackupsArn")
 * .sourceDbInstanceIdentifier("sourceDbInstanceIdentifier")
 * .sourceDbiResourceId("sourceDbiResourceId")
 * .sourceRegion("sourceRegion")
 * .storageEncrypted(false)
 * .storageThroughput(123)
 * .storageType("storageType")
 * .tags(List.of(CfnTag.builder()
 * .key("key")
 * .value("value")
 * .build()))
 * .tdeCredentialArn("tdeCredentialArn")
 * .tdeCredentialPassword("tdeCredentialPassword")
 * .timezone("timezone")
 * .useDefaultProcessorFeatures(false)
 * .useLatestRestorableTime(false)
 * .vpcSecurityGroups(List.of("vpcSecurityGroups"))
 * .build();
 * ```
 *
 * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html)
 */
public interface CfnDBInstanceProps {
  /**
   * The amount of storage in gibibytes (GiB) to be initially allocated for the database instance.
   *
   *
   * If any value is set in the `Iops` parameter, `AllocatedStorage` must be at least 100 GiB, which
   * corresponds to the minimum Iops value of 1,000. If you increase the `Iops` value (in 1,000 IOPS
   * increments), then you must also increase the `AllocatedStorage` value (in 100-GiB increments).
   *
   *
   * *Amazon Aurora*
   *
   * Not applicable. Aurora cluster volumes automatically grow as the amount of data in your
   * database increases, though you are only charged for the space that you use in an Aurora cluster
   * volume.
   *
   * *Db2*
   *
   * Constraints to the amount of storage for each storage type are the following:
   *
   * * General Purpose (SSD) storage (gp3): Must be an integer from 20 to 64000.
   * * Provisioned IOPS storage (io1): Must be an integer from 100 to 64000.
   *
   * *MySQL*
   *
   * Constraints to the amount of storage for each storage type are the following:
   *
   * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
   * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
   * * Magnetic storage (standard): Must be an integer from 5 to 3072.
   *
   * *MariaDB*
   *
   * Constraints to the amount of storage for each storage type are the following:
   *
   * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
   * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
   * * Magnetic storage (standard): Must be an integer from 5 to 3072.
   *
   * *PostgreSQL*
   *
   * Constraints to the amount of storage for each storage type are the following:
   *
   * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
   * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
   * * Magnetic storage (standard): Must be an integer from 5 to 3072.
   *
   * *Oracle*
   *
   * Constraints to the amount of storage for each storage type are the following:
   *
   * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
   * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
   * * Magnetic storage (standard): Must be an integer from 10 to 3072.
   *
   * *SQL Server*
   *
   * Constraints to the amount of storage for each storage type are the following:
   *
   * * General Purpose (SSD) storage (gp2):
   * * Enterprise and Standard editions: Must be an integer from 20 to 16384.
   * * Web and Express editions: Must be an integer from 20 to 16384.
   * * Provisioned IOPS storage (io1):
   * * Enterprise and Standard editions: Must be an integer from 20 to 16384.
   * * Web and Express editions: Must be an integer from 20 to 16384.
   * * Magnetic storage (standard):
   * * Enterprise and Standard editions: Must be an integer from 20 to 1024.
   * * Web and Express editions: Must be an integer from 20 to 1024.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-allocatedstorage)
   */
  public fun allocatedStorage(): String? = unwrap(this).getAllocatedStorage()

  /**
   * A value that indicates whether major version upgrades are allowed.
   *
   * Changing this parameter doesn't result in an outage and the change is asynchronously applied as
   * soon as possible.
   *
   * Constraints: Major version upgrades must be allowed when specifying a value for the
   * `EngineVersion` parameter that is a different major version than the DB instance's current
   * version.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-allowmajorversionupgrade)
   */
  public fun allowMajorVersionUpgrade(): Any? = unwrap(this).getAllowMajorVersionUpgrade()

  /**
   * The AWS Identity and Access Management (IAM) roles associated with the DB instance.
   *
   * *Amazon Aurora*
   *
   * Not applicable. The associated roles are managed by the DB cluster.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-associatedroles)
   */
  public fun associatedRoles(): Any? = unwrap(this).getAssociatedRoles()

  /**
   * A value that indicates whether minor engine upgrades are applied automatically to the DB
   * instance during the maintenance window.
   *
   * By default, minor engine upgrades are applied automatically.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-autominorversionupgrade)
   */
  public fun autoMinorVersionUpgrade(): Any? = unwrap(this).getAutoMinorVersionUpgrade()

  /**
   * The AWS KMS key identifier for encryption of the replicated automated backups.
   *
   * The KMS key ID is the Amazon Resource Name (ARN) for the KMS encryption key in the destination
   * AWS Region , for example, `arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE` .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-automaticbackupreplicationkmskeyid)
   */
  public fun automaticBackupReplicationKmsKeyId(): String? =
      unwrap(this).getAutomaticBackupReplicationKmsKeyId()

  /**
   * The AWS Region associated with the automated backup.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-automaticbackupreplicationregion)
   */
  public fun automaticBackupReplicationRegion(): String? =
      unwrap(this).getAutomaticBackupReplicationRegion()

  /**
   * The Availability Zone (AZ) where the database will be created.
   *
   * For information on AWS Regions and Availability Zones, see [Regions and Availability
   * Zones](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html)
   * .
   *
   * For Amazon Aurora, each Aurora DB cluster hosts copies of its storage in three separate
   * Availability Zones. Specify one of these Availability Zones. Aurora automatically chooses an
   * appropriate Availability Zone if you don't specify one.
   *
   * Default: A random, system-chosen Availability Zone in the endpoint's AWS Region .
   *
   * Constraints:
   *
   * * The `AvailabilityZone` parameter can't be specified if the DB instance is a Multi-AZ
   * deployment.
   * * The specified Availability Zone must be in the same AWS Region as the current endpoint.
   *
   * Example: `us-east-1d`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-availabilityzone)
   */
  public fun availabilityZone(): String? = unwrap(this).getAvailabilityZone()

  /**
   * The number of days for which automated backups are retained.
   *
   * Setting this parameter to a positive number enables backups. Setting this parameter to 0
   * disables automated backups.
   *
   * *Amazon Aurora*
   *
   * Not applicable. The retention period for automated backups is managed by the DB cluster.
   *
   * Default: 1
   *
   * Constraints:
   *
   * * Must be a value from 0 to 35
   * * Can't be set to 0 if the DB instance is a source to read replicas
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-backupretentionperiod)
   */
  public fun backupRetentionPeriod(): Number? = unwrap(this).getBackupRetentionPeriod()

  /**
   * The identifier of the CA certificate for this DB instance.
   *
   * For more information, see [Using SSL/TLS to encrypt a connection to a DB
   * instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) in the
   * *Amazon RDS User Guide* and [Using SSL/TLS to encrypt a connection to a DB
   * cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html) in
   * the *Amazon Aurora User Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-cacertificateidentifier)
   */
  public fun caCertificateIdentifier(): String? = unwrap(this).getCaCertificateIdentifier()

  /**
   * The details of the DB instance's server certificate.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-certificatedetails)
   */
  public fun certificateDetails(): Any? = unwrap(this).getCertificateDetails()

  /**
   * Specifies whether the DB instance is restarted when you rotate your SSL/TLS certificate.
   *
   * By default, the DB instance is restarted when you rotate your SSL/TLS certificate. The
   * certificate is not updated until the DB instance is restarted.
   *
   *
   * Set this parameter only if you are *not* using SSL/TLS to connect to the DB instance.
   *
   *
   * If you are using SSL/TLS to connect to the DB instance, follow the appropriate instructions for
   * your DB engine to rotate your SSL/TLS certificate:
   *
   * * For more information about rotating your SSL/TLS certificate for RDS DB engines, see
   * [Rotating Your SSL/TLS
   * Certificate.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html)
   * in the *Amazon RDS User Guide.*
   * * For more information about rotating your SSL/TLS certificate for Aurora DB engines, see
   * [Rotating Your SSL/TLS
   * Certificate](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html)
   * in the *Amazon Aurora User Guide* .
   *
   * This setting doesn't apply to RDS Custom DB instances.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-certificaterotationrestart)
   */
  public fun certificateRotationRestart(): Any? = unwrap(this).getCertificateRotationRestart()

  /**
   * For supported engines, indicates that the DB instance should be associated with the specified
   * character set.
   *
   * *Amazon Aurora*
   *
   * Not applicable. The character set is managed by the DB cluster. For more information, see
   * [AWS::RDS::DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html)
   * .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-charactersetname)
   */
  public fun characterSetName(): String? = unwrap(this).getCharacterSetName()

  /**
   * Specifies whether to copy tags from the DB instance to snapshots of the DB instance.
   *
   * By default, tags are not copied.
   *
   * This setting doesn't apply to Amazon Aurora DB instances. Copying tags to snapshots is managed
   * by the DB cluster. Setting this value for an Aurora DB instance has no effect on the DB cluster
   * setting.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-copytagstosnapshot)
   */
  public fun copyTagsToSnapshot(): Any? = unwrap(this).getCopyTagsToSnapshot()

  /**
   * The instance profile associated with the underlying Amazon EC2 instance of an RDS Custom DB
   * instance.
   *
   * This setting is required for RDS Custom.
   *
   * Constraints:
   *
   * * The profile must exist in your account.
   * * The profile must have an IAM role that Amazon EC2 has permissions to assume.
   * * The instance profile name and the associated IAM role name must start with the prefix
   * `AWSRDSCustom` .
   *
   * For the list of permissions required for the IAM role, see [Configure IAM and your
   * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc)
   * in the *Amazon RDS User Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-customiaminstanceprofile)
   */
  public fun customIamInstanceProfile(): String? = unwrap(this).getCustomIamInstanceProfile()

  /**
   * The identifier of the DB cluster that this DB instance will belong to.
   *
   * This setting doesn't apply to RDS Custom DB instances.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbclusteridentifier)
   */
  public fun dbClusterIdentifier(): String? = unwrap(this).getDbClusterIdentifier()

  /**
   * The identifier for the Multi-AZ DB cluster snapshot to restore from.
   *
   * For more information on Multi-AZ DB clusters, see [Multi-AZ DB cluster
   * deployments](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
   * in the *Amazon RDS User Guide* .
   *
   * Constraints:
   *
   * * Must match the identifier of an existing Multi-AZ DB cluster snapshot.
   * * Can't be specified when `DBSnapshotIdentifier` is specified.
   * * Must be specified when `DBSnapshotIdentifier` isn't specified.
   * * If you are restoring from a shared manual Multi-AZ DB cluster snapshot, the
   * `DBClusterSnapshotIdentifier` must be the ARN of the shared snapshot.
   * * Can't be the identifier of an Aurora DB cluster snapshot.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbclustersnapshotidentifier)
   */
  public fun dbClusterSnapshotIdentifier(): String? = unwrap(this).getDbClusterSnapshotIdentifier()

  /**
   * The compute and memory capacity of the DB instance, for example `db.m5.large` . Not all DB
   * instance classes are available in all AWS Regions , or for all database engines. For the full list
   * of DB instance classes, and availability for your engine, see [DB instance
   * classes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html) in
   * the *Amazon RDS User Guide* or [Aurora DB instance
   * classes](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html)
   * in the *Amazon Aurora User Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbinstanceclass)
   */
  public fun dbInstanceClass(): String? = unwrap(this).getDbInstanceClass()

  /**
   * A name for the DB instance.
   *
   * If you specify a name, AWS CloudFormation converts it to lowercase. If you don't specify a
   * name, AWS CloudFormation generates a unique physical ID and uses that ID for the DB instance. For
   * more information, see [Name
   * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
   *
   * For information about constraints that apply to DB instance identifiers, see [Naming
   * constraints in Amazon
   * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints)
   * in the *Amazon RDS User Guide* .
   *
   *
   * If you specify a name, you can't perform updates that require replacement of this resource. You
   * can perform updates that require no or some interruption. If you must replace the resource,
   * specify a new name.
   *
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbinstanceidentifier)
   */
  public fun dbInstanceIdentifier(): String? = unwrap(this).getDbInstanceIdentifier()

  /**
   * The meaning of this parameter differs according to the database engine you use.
   *
   *
   * If you specify the
   * `[DBSnapshotIdentifier](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsnapshotidentifier)`
   * property, this property only applies to RDS for Oracle.
   *
   *
   * *Amazon Aurora*
   *
   * Not applicable. The database name is managed by the DB cluster.
   *
   * *Db2*
   *
   * The name of the database to create when the DB instance is created. If this parameter isn't
   * specified, no database is created in the DB instance.
   *
   * Constraints:
   *
   * * Must contain 1 to 64 letters or numbers.
   * * Must begin with a letter. Subsequent characters can be letters, underscores, or digits (0-9).
   * * Can't be a word reserved by the specified database engine.
   *
   * *MySQL*
   *
   * The name of the database to create when the DB instance is created. If this parameter is not
   * specified, no database is created in the DB instance.
   *
   * Constraints:
   *
   * * Must contain 1 to 64 letters or numbers.
   * * Can't be a word reserved by the specified database engine
   *
   * *MariaDB*
   *
   * The name of the database to create when the DB instance is created. If this parameter is not
   * specified, no database is created in the DB instance.
   *
   * Constraints:
   *
   * * Must contain 1 to 64 letters or numbers.
   * * Can't be a word reserved by the specified database engine
   *
   * *PostgreSQL*
   *
   * The name of the database to create when the DB instance is created. If this parameter is not
   * specified, the default `postgres` database is created in the DB instance.
   *
   * Constraints:
   *
   * * Must begin with a letter. Subsequent characters can be letters, underscores, or digits (0-9).
   * * Must contain 1 to 63 characters.
   * * Can't be a word reserved by the specified database engine
   *
   * *Oracle*
   *
   * The Oracle System ID (SID) of the created DB instance. If you specify `null` , the default
   * value `ORCL` is used. You can't specify the string NULL, or any other reserved word, for `DBName`
   * .
   *
   * Default: `ORCL`
   *
   * Constraints:
   *
   * * Can't be longer than 8 characters
   *
   * *SQL Server*
   *
   * Not applicable. Must be null.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbname)
   */
  public fun dbName(): String? = unwrap(this).getDbName()

  /**
   * The name of an existing DB parameter group or a reference to an
   * [AWS::RDS::DBParameterGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html)
   * resource created in the template.
   *
   * To list all of the available DB parameter group names, use the following command:
   *
   * `aws rds describe-db-parameter-groups --query
   * "DBParameterGroups[].DBParameterGroupName" --output text`
   *
   *
   * If any of the data members of the referenced parameter group are changed during an update, the
   * DB instance might need to be restarted, which causes some interruption. If the parameter group
   * contains static parameters, whether they were changed or not, an update triggers a reboot.
   *
   *
   * If you don't specify a value for `DBParameterGroupName` property, the default DB parameter
   * group for the specified engine and engine version is used.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbparametergroupname)
   */
  public fun dbParameterGroupName(): String? = unwrap(this).getDbParameterGroupName()

  /**
   * A list of the DB security groups to assign to the DB instance.
   *
   * The list can include both the name of existing DB security groups or references to
   * AWS::RDS::DBSecurityGroup resources created in the template.
   *
   * If you set DBSecurityGroups, you must not set VPCSecurityGroups, and vice versa. Also, note
   * that the DBSecurityGroups property exists only for backwards compatibility with older regions and
   * is no longer recommended for providing security information to an RDS DB instance. Instead, use
   * VPCSecurityGroups.
   *
   *
   * If you specify this property, AWS CloudFormation sends only the following properties (if
   * specified) to Amazon RDS during create operations:
   *
   * * `AllocatedStorage`
   * * `AutoMinorVersionUpgrade`
   * * `AvailabilityZone`
   * * `BackupRetentionPeriod`
   * * `CharacterSetName`
   * * `DBInstanceClass`
   * * `DBName`
   * * `DBParameterGroupName`
   * * `DBSecurityGroups`
   * * `DBSubnetGroupName`
   * * `Engine`
   * * `EngineVersion`
   * * `Iops`
   * * `LicenseModel`
   * * `MasterUsername`
   * * `MasterUserPassword`
   * * `MultiAZ`
   * * `OptionGroupName`
   * * `PreferredBackupWindow`
   * * `PreferredMaintenanceWindow`
   *
   * All other properties are ignored. Specify a virtual private cloud (VPC) security group if you
   * want to submit other properties, such as `StorageType` , `StorageEncrypted` , or `KmsKeyId` . If
   * you're already using the `DBSecurityGroups` property, you can't use these other properties by
   * updating your DB instance to use a VPC security group. You must recreate the DB instance.
   *
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbsecuritygroups)
   */
  public fun dbSecurityGroups(): List = unwrap(this).getDbSecurityGroups() ?: emptyList()

  /**
   * The name or Amazon Resource Name (ARN) of the DB snapshot that's used to restore the DB
   * instance.
   *
   * If you're restoring from a shared manual DB snapshot, you must specify the ARN of the snapshot.
   *
   * By specifying this property, you can create a DB instance from the specified DB snapshot. If
   * the `DBSnapshotIdentifier` property is an empty string or the `AWS::RDS::DBInstance` declaration
   * has no `DBSnapshotIdentifier` property, AWS CloudFormation creates a new database. If the property
   * contains a value (other than an empty string), AWS CloudFormation creates a database from the
   * specified snapshot. If a snapshot with the specified name doesn't exist, AWS CloudFormation can't
   * create the database and it rolls back the stack.
   *
   * Some DB instance properties aren't valid when you restore from a snapshot, such as the
   * `MasterUsername` and `MasterUserPassword` properties. For information about the properties that
   * you can specify, see the `RestoreDBInstanceFromDBSnapshot` action in the *Amazon RDS API
   * Reference* .
   *
   * After you restore a DB instance with a `DBSnapshotIdentifier` property, you must specify the
   * same `DBSnapshotIdentifier` property for any future updates to the DB instance. When you specify
   * this property for an update, the DB instance is not restored from the DB snapshot again, and the
   * data in the database is not changed. However, if you don't specify the `DBSnapshotIdentifier`
   * property, an empty DB instance is created, and the original DB instance is deleted. If you specify
   * a property that is different from the previous snapshot restore property, a new DB instance is
   * restored from the specified `DBSnapshotIdentifier` property, and the original DB instance is
   * deleted.
   *
   * If you specify the `DBSnapshotIdentifier` property to restore a DB instance (as opposed to
   * specifying it for DB instance updates), then don't specify the following properties:
   *
   * * `CharacterSetName`
   * * `DBClusterIdentifier`
   * * `DBName`
   * * `DeleteAutomatedBackups`
   * * `KmsKeyId`
   * * `MasterUsername`
   * * `MasterUserPassword`
   * * `PerformanceInsightsKMSKeyId`
   * * `PerformanceInsightsRetentionPeriod`
   * * `PromotionTier`
   * * `SourceDBInstanceIdentifier`
   * * `SourceRegion`
   * * `StorageEncrypted` (for an encrypted snapshot)
   * * `Timezone`
   *
   * *Amazon Aurora*
   *
   * Not applicable. Snapshot restore is managed by the DB cluster.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbsnapshotidentifier)
   */
  public fun dbSnapshotIdentifier(): String? = unwrap(this).getDbSnapshotIdentifier()

  /**
   * A DB subnet group to associate with the DB instance.
   *
   * If you update this value, the new subnet group must be a subnet group in a new VPC.
   *
   * If there's no DB subnet group, then the DB instance isn't a VPC DB instance.
   *
   * For more information about using Amazon RDS in a VPC, see [Amazon VPC and Amazon
   * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS User
   * Guide* .
   *
   * This setting doesn't apply to Amazon Aurora DB instances. The DB subnet group is managed by the
   * DB cluster. If specified, the setting must match the DB cluster setting.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbsubnetgroupname)
   */
  public fun dbSubnetGroupName(): String? = unwrap(this).getDbSubnetGroupName()

  /**
   * Indicates whether the DB instance has a dedicated log volume (DLV) enabled.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dedicatedlogvolume)
   */
  public fun dedicatedLogVolume(): Any? = unwrap(this).getDedicatedLogVolume()

  /**
   * A value that indicates whether to remove automated backups immediately after the DB instance is
   * deleted.
   *
   * This parameter isn't case-sensitive. The default is to remove automated backups immediately
   * after the DB instance is deleted.
   *
   * *Amazon Aurora*
   *
   * Not applicable. When you delete a DB cluster, all automated backups for that DB cluster are
   * deleted and can't be recovered. Manual DB cluster snapshots of the DB cluster are not deleted.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-deleteautomatedbackups)
   */
  public fun deleteAutomatedBackups(): Any? = unwrap(this).getDeleteAutomatedBackups()

  /**
   * Specifies whether the DB instance has deletion protection enabled.
   *
   * The database can't be deleted when deletion protection is enabled. By default, deletion
   * protection isn't enabled. For more information, see [Deleting a DB
   * Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html) .
   *
   * This setting doesn't apply to Amazon Aurora DB instances. You can enable or disable deletion
   * protection for the DB cluster. For more information, see `CreateDBCluster` . DB instances in a DB
   * cluster can be deleted even when deletion protection is enabled for the DB cluster.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-deletionprotection)
   */
  public fun deletionProtection(): Any? = unwrap(this).getDeletionProtection()

  /**
   * The Active Directory directory ID to create the DB instance in.
   *
   * Currently, only Db2, MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB instances can be
   * created in an Active Directory Domain.
   *
   * For more information, see [Kerberos
   * Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html)
   * in the *Amazon RDS User Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domain)
   */
  public fun domain(): String? = unwrap(this).getDomain()

  /**
   * The ARN for the Secrets Manager secret with the credentials for the user joining the domain.
   *
   * Example: `arn:aws:secretsmanager:region:account-number:secret:myselfmanagedADtestsecret-123456`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainauthsecretarn)
   */
  public fun domainAuthSecretArn(): String? = unwrap(this).getDomainAuthSecretArn()

  /**
   * The IPv4 DNS IP addresses of your primary and secondary Active Directory domain controllers.
   *
   * Constraints:
   *
   * * Two IP addresses must be provided. If there isn't a secondary domain controller, use the IP
   * address of the primary domain controller for both entries in the list.
   *
   * Example: `123.124.125.126,234.235.236.237`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domaindnsips)
   */
  public fun domainDnsIps(): List = unwrap(this).getDomainDnsIps() ?: emptyList()

  /**
   * The fully qualified domain name (FQDN) of an Active Directory domain.
   *
   * Constraints:
   *
   * * Can't be longer than 64 characters.
   *
   * Example: `mymanagedADtest.mymanagedAD.mydomain`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainfqdn)
   */
  public fun domainFqdn(): String? = unwrap(this).getDomainFqdn()

  /**
   * The name of the IAM role to use when making API calls to the Directory Service.
   *
   * This setting doesn't apply to the following DB instances:
   *
   * * Amazon Aurora (The domain is managed by the DB cluster.)
   * * RDS Custom
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainiamrolename)
   */
  public fun domainIamRoleName(): String? = unwrap(this).getDomainIamRoleName()

  /**
   * The Active Directory organizational unit for your DB instance to join.
   *
   * Constraints:
   *
   * * Must be in the distinguished name format.
   * * Can't be longer than 64 characters.
   *
   * Example: `OU=mymanagedADtestOU,DC=mymanagedADtest,DC=mymanagedAD,DC=mydomain`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainou)
   */
  public fun domainOu(): String? = unwrap(this).getDomainOu()

  /**
   * The list of log types that need to be enabled for exporting to CloudWatch Logs.
   *
   * The values in the list depend on the DB engine being used. For more information, see
   * [Publishing Database Logs to Amazon CloudWatch
   * Logs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
   * in the *Amazon Relational Database Service User Guide* .
   *
   * *Amazon Aurora*
   *
   * Not applicable. CloudWatch Logs exports are managed by the DB cluster.
   *
   * *Db2*
   *
   * Valid values: `diag.log` , `notify.log`
   *
   * *MariaDB*
   *
   * Valid values: `audit` , `error` , `general` , `slowquery`
   *
   * *Microsoft SQL Server*
   *
   * Valid values: `agent` , `error`
   *
   * *MySQL*
   *
   * Valid values: `audit` , `error` , `general` , `slowquery`
   *
   * *Oracle*
   *
   * Valid values: `alert` , `audit` , `listener` , `trace` , `oemagent`
   *
   * *PostgreSQL*
   *
   * Valid values: `postgresql` , `upgrade`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-enablecloudwatchlogsexports)
   */
  public fun enableCloudwatchLogsExports(): List =
      unwrap(this).getEnableCloudwatchLogsExports() ?: emptyList()

  /**
   * A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM)
   * accounts to database accounts.
   *
   * By default, mapping is disabled.
   *
   * This property is supported for RDS for MariaDB, RDS for MySQL, and RDS for PostgreSQL. For more
   * information, see [IAM Database Authentication for MariaDB, MySQL, and
   * PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html) in
   * the *Amazon RDS User Guide.*
   *
   * *Amazon Aurora*
   *
   * Not applicable. Mapping AWS IAM accounts to database accounts is managed by the DB cluster.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-enableiamdatabaseauthentication)
   */
  public fun enableIamDatabaseAuthentication(): Any? =
      unwrap(this).getEnableIamDatabaseAuthentication()

  /**
   * Specifies whether to enable Performance Insights for the DB instance.
   *
   * For more information, see [Using Amazon Performance
   * Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) in the
   * *Amazon RDS User Guide* .
   *
   * This setting doesn't apply to RDS Custom DB instances.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-enableperformanceinsights)
   */
  public fun enablePerformanceInsights(): Any? = unwrap(this).getEnablePerformanceInsights()

  /**
   * The connection endpoint for the DB instance.
   *
   *
   * The endpoint might not be shown for instances with the status of `creating` .
   *
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-endpoint)
   */
  public fun endpoint(): Any? = unwrap(this).getEndpoint()

  /**
   * The name of the database engine to use for this DB instance.
   *
   * Not every database engine is available in every AWS Region.
   *
   * This property is required when creating a DB instance.
   *
   *
   * You can convert an Oracle database from the non-CDB architecture to the container database
   * (CDB) architecture by updating the `Engine` value in your templates from `oracle-ee` to
   * `oracle-ee-cdb` or from `oracle-se2` to `oracle-se2-cdb` . Converting to the CDB architecture
   * requires an interruption.
   *
   *
   * Valid Values:
   *
   * * `aurora-mysql` (for Aurora MySQL DB instances)
   * * `aurora-postgresql` (for Aurora PostgreSQL DB instances)
   * * `custom-oracle-ee` (for RDS Custom for Oracle DB instances)
   * * `custom-oracle-ee-cdb` (for RDS Custom for Oracle DB instances)
   * * `custom-sqlserver-ee` (for RDS Custom for SQL Server DB instances)
   * * `custom-sqlserver-se` (for RDS Custom for SQL Server DB instances)
   * * `custom-sqlserver-web` (for RDS Custom for SQL Server DB instances)
   * * `db2-ae`
   * * `db2-se`
   * * `mariadb`
   * * `mysql`
   * * `oracle-ee`
   * * `oracle-ee-cdb`
   * * `oracle-se2`
   * * `oracle-se2-cdb`
   * * `postgres`
   * * `sqlserver-ee`
   * * `sqlserver-se`
   * * `sqlserver-ex`
   * * `sqlserver-web`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-engine)
   */
  public fun engine(): String? = unwrap(this).getEngine()

  /**
   * The life cycle type for this DB instance.
   *
   *
   * By default, this value is set to `open-source-rds-extended-support` , which enrolls your DB
   * instance into Amazon RDS Extended Support. At the end of standard support, you can avoid charges
   * for Extended Support by setting the value to `open-source-rds-extended-support-disabled` . In this
   * case, creating the DB instance will fail if the DB major version is past its end of standard
   * support date.
   *
   *
   * This setting applies only to RDS for MySQL and RDS for PostgreSQL. For Amazon Aurora DB
   * instances, the life cycle type is managed by the DB cluster.
   *
   * You can use this setting to enroll your DB instance into Amazon RDS Extended Support. With RDS
   * Extended Support, you can run the selected major engine version on your DB instance past the end
   * of standard support for that engine version. For more information, see [Using Amazon RDS Extended
   * Support](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html) in the
   * *Amazon RDS User Guide* .
   *
   * Valid Values: `open-source-rds-extended-support | open-source-rds-extended-support-disabled`
   *
   * Default: `open-source-rds-extended-support`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-enginelifecyclesupport)
   */
  public fun engineLifecycleSupport(): String? = unwrap(this).getEngineLifecycleSupport()

  /**
   * The version number of the database engine to use.
   *
   * For a list of valid engine versions, use the `DescribeDBEngineVersions` action.
   *
   * The following are the database engines and links to information about the major and minor
   * versions that are available with Amazon RDS. Not every database engine is available for every AWS
   * Region.
   *
   * *Amazon Aurora*
   *
   * Not applicable. The version number of the database engine to be used by the DB instance is
   * managed by the DB cluster.
   *
   * *Db2*
   *
   * See [Amazon RDS for
   * Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Db2.html#Db2.Concepts.VersionMgmt)
   * in the *Amazon RDS User Guide.*
   *
   * *MariaDB*
   *
   * See [MariaDB on Amazon RDS
   * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt)
   * in the *Amazon RDS User Guide.*
   *
   * *Microsoft SQL Server*
   *
   * See [Microsoft SQL Server Versions on Amazon
   * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport)
   * in the *Amazon RDS User Guide.*
   *
   * *MySQL*
   *
   * See [MySQL on Amazon RDS
   * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt)
   * in the *Amazon RDS User Guide.*
   *
   * *Oracle*
   *
   * See [Oracle Database Engine Release
   * Notes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html)
   * in the *Amazon RDS User Guide.*
   *
   * *PostgreSQL*
   *
   * See [Supported PostgreSQL Database
   * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.DBVersions)
   * in the *Amazon RDS User Guide.*
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-engineversion)
   */
  public fun engineVersion(): String? = unwrap(this).getEngineVersion()

  /**
   * The number of I/O operations per second (IOPS) that the database provisions.
   *
   * The value must be equal to or greater than 1000.
   *
   * If you specify this property, you must follow the range of allowed ratios of your requested
   * IOPS rate to the amount of storage that you allocate (IOPS to allocated storage). For example, you
   * can provision an Oracle database instance with 1000 IOPS and 200 GiB of storage (a ratio of 5:1),
   * or specify 2000 IOPS with 200 GiB of storage (a ratio of 10:1). For more information, see [Amazon
   * RDS Provisioned IOPS Storage to Improve
   * Performance](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/CHAP_Storage.html#USER_PIOPS)
   * in the *Amazon RDS User Guide* .
   *
   *
   * If you specify `io1` for the `StorageType` property, then you must also specify the `Iops`
   * property.
   *
   *
   * Constraints:
   *
   * * For RDS for Db2, MariaDB, MySQL, Oracle, and PostgreSQL - Must be a multiple between .5 and
   * 50 of the storage amount for the DB instance.
   * * For RDS for SQL Server - Must be a multiple between 1 and 50 of the storage amount for the DB
   * instance.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-iops)
   */
  public fun iops(): Number? = unwrap(this).getIops()

  /**
   * The ARN of the AWS KMS key that's used to encrypt the DB instance, such as
   * `arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef` .
   *
   * If you enable the StorageEncrypted property but don't specify this property, AWS CloudFormation
   * uses the default KMS key. If you specify this property, you must set the StorageEncrypted property
   * to true.
   *
   * If you specify the `SourceDBInstanceIdentifier` or `SourceDbiResourceId` property, don't
   * specify this property. The value is inherited from the source DB instance, and if the DB instance
   * is encrypted, the specified `KmsKeyId` property is used. However, if the source DB instance is in
   * a different AWS Region, you must specify a KMS key ID.
   *
   * If you specify the `SourceDBInstanceAutomatedBackupsArn` property, don't specify this property.
   * The value is inherited from the source DB instance automated backup, and if the automated backup
   * is encrypted, the specified `KmsKeyId` property is used.
   *
   * If you create an encrypted read replica in a different AWS Region, then you must specify a KMS
   * key for the destination AWS Region. KMS encryption keys are specific to the region that they're
   * created in, and you can't use encryption keys from one region in another region.
   *
   * If you specify the `DBSnapshotIdentifier` property, don't specify this property. The
   * `StorageEncrypted` property value is inherited from the snapshot. If the DB instance is encrypted,
   * the specified `KmsKeyId` property is also inherited from the snapshot.
   *
   * If you specify `DBSecurityGroups` , AWS CloudFormation ignores this property. To specify both a
   * security group and this property, you must use a VPC security group. For more information about
   * Amazon RDS and VPC, see [Using Amazon RDS with Amazon
   * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS User
   * Guide* .
   *
   * *Amazon Aurora*
   *
   * Not applicable. The KMS key identifier is managed by the DB cluster.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-kmskeyid)
   */
  public fun kmsKeyId(): String? = unwrap(this).getKmsKeyId()

  /**
   * License model information for this DB instance.
   *
   * Valid Values:
   *
   * * Aurora MySQL - `general-public-license`
   * * Aurora PostgreSQL - `postgresql-license`
   * * RDS for Db2 - `bring-your-own-license` . For more information about RDS for Db2 licensing,
   * see [](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-licensing.html) in the *Amazon
   * RDS User Guide.*
   * * RDS for MariaDB - `general-public-license`
   * * RDS for Microsoft SQL Server - `license-included`
   * * RDS for MySQL - `general-public-license`
   * * RDS for Oracle - `bring-your-own-license` or `license-included`
   * * RDS for PostgreSQL - `postgresql-license`
   *
   *
   * If you've specified `DBSecurityGroups` and then you update the license model, AWS
   * CloudFormation replaces the underlying DB instance. This will incur some interruptions to database
   * availability.
   *
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-licensemodel)
   */
  public fun licenseModel(): String? = unwrap(this).getLicenseModel()

  /**
   * Specifies whether to manage the master user password with AWS Secrets Manager.
   *
   * For more information, see [Password management with AWS Secrets
   * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
   * *Amazon RDS User Guide.*
   *
   * Constraints:
   *
   * * Can't manage the master user password with AWS Secrets Manager if `MasterUserPassword` is
   * specified.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-managemasteruserpassword)
   */
  public fun manageMasterUserPassword(): Any? = unwrap(this).getManageMasterUserPassword()

  /**
   * The password for the master user. The password can include any printable ASCII character except
   * "/", """, or "@".
   *
   * *Amazon Aurora*
   *
   * Not applicable. The password for the master user is managed by the DB cluster.
   *
   * *RDS for Db2*
   *
   * Must contain from 8 to 255 characters.
   *
   * *RDS for MariaDB*
   *
   * Constraints: Must contain from 8 to 41 characters.
   *
   * *RDS for Microsoft SQL Server*
   *
   * Constraints: Must contain from 8 to 128 characters.
   *
   * *RDS for MySQL*
   *
   * Constraints: Must contain from 8 to 41 characters.
   *
   * *RDS for Oracle*
   *
   * Constraints: Must contain from 8 to 30 characters.
   *
   * *RDS for PostgreSQL*
   *
   * Constraints: Must contain from 8 to 128 characters.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-masteruserpassword)
   */
  public fun masterUserPassword(): String? = unwrap(this).getMasterUserPassword()

  /**
   * The secret managed by RDS in AWS Secrets Manager for the master user password.
   *
   * For more information, see [Password management with AWS Secrets
   * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
   * *Amazon RDS User Guide.*
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-masterusersecret)
   */
  public fun masterUserSecret(): Any? = unwrap(this).getMasterUserSecret()

  /**
   * The master user name for the DB instance.
   *
   *
   * If you specify the `SourceDBInstanceIdentifier` or `DBSnapshotIdentifier` property, don't
   * specify this property. The value is inherited from the source DB instance or snapshot.
   *
   * When migrating a self-managed Db2 database, we recommend that you use the same master username
   * as your self-managed Db2 instance name.
   *
   *
   * *Amazon Aurora*
   *
   * Not applicable. The name for the master user is managed by the DB cluster.
   *
   * *RDS for Db2*
   *
   * Constraints:
   *
   * * Must be 1 to 16 letters or numbers.
   * * First character must be a letter.
   * * Can't be a reserved word for the chosen database engine.
   *
   * *RDS for MariaDB*
   *
   * Constraints:
   *
   * * Must be 1 to 16 letters or numbers.
   * * Can't be a reserved word for the chosen database engine.
   *
   * *RDS for Microsoft SQL Server*
   *
   * Constraints:
   *
   * * Must be 1 to 128 letters or numbers.
   * * First character must be a letter.
   * * Can't be a reserved word for the chosen database engine.
   *
   * *RDS for MySQL*
   *
   * Constraints:
   *
   * * Must be 1 to 16 letters or numbers.
   * * First character must be a letter.
   * * Can't be a reserved word for the chosen database engine.
   *
   * *RDS for Oracle*
   *
   * Constraints:
   *
   * * Must be 1 to 30 letters or numbers.
   * * First character must be a letter.
   * * Can't be a reserved word for the chosen database engine.
   *
   * *RDS for PostgreSQL*
   *
   * Constraints:
   *
   * * Must be 1 to 63 letters or numbers.
   * * First character must be a letter.
   * * Can't be a reserved word for the chosen database engine.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-masterusername)
   */
  public fun masterUsername(): String? = unwrap(this).getMasterUsername()

  /**
   * The upper limit in gibibytes (GiB) to which Amazon RDS can automatically scale the storage of
   * the DB instance.
   *
   * For more information about this setting, including limitations that apply to it, see [Managing
   * capacity automatically with Amazon RDS storage
   * autoscaling](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling)
   * in the *Amazon RDS User Guide* .
   *
   * This setting doesn't apply to the following DB instances:
   *
   * * Amazon Aurora (Storage is managed by the DB cluster.)
   * * RDS Custom
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-maxallocatedstorage)
   */
  public fun maxAllocatedStorage(): Number? = unwrap(this).getMaxAllocatedStorage()

  /**
   * The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the
   * DB instance.
   *
   * To disable collection of Enhanced Monitoring metrics, specify `0` .
   *
   * If `MonitoringRoleArn` is specified, then you must set `MonitoringInterval` to a value other
   * than `0` .
   *
   * This setting doesn't apply to RDS Custom DB instances.
   *
   * Valid Values: `0 | 1 | 5 | 10 | 15 | 30 | 60`
   *
   * Default: `0`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-monitoringinterval)
   */
  public fun monitoringInterval(): Number? = unwrap(this).getMonitoringInterval()

  /**
   * The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to Amazon
   * CloudWatch Logs.
   *
   * For example, `arn:aws:iam:123456789012:role/emaccess` . For information on creating a
   * monitoring role, see [Setting Up and Enabling Enhanced
   * Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling)
   * in the *Amazon RDS User Guide* .
   *
   * If `MonitoringInterval` is set to a value other than `0` , then you must supply a
   * `MonitoringRoleArn` value.
   *
   * This setting doesn't apply to RDS Custom DB instances.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-monitoringrolearn)
   */
  public fun monitoringRoleArn(): String? = unwrap(this).getMonitoringRoleArn()

  /**
   * Specifies whether the DB instance is a Multi-AZ deployment.
   *
   * You can't set the `AvailabilityZone` parameter if the DB instance is a Multi-AZ deployment.
   *
   * This setting doesn't apply to the following DB instances:
   *
   * * Amazon Aurora (DB instance Availability Zones (AZs) are managed by the DB cluster.)
   * * RDS Custom
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-multiaz)
   */
  public fun multiAz(): Any? = unwrap(this).getMultiAz()

  /**
   * The name of the NCHAR character set for the Oracle DB instance.
   *
   * This setting doesn't apply to RDS Custom DB instances.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-ncharcharactersetname)
   */
  public fun ncharCharacterSetName(): String? = unwrap(this).getNcharCharacterSetName()

  /**
   * The network type of the DB instance.
   *
   * Valid values:
   *
   * * `IPV4`
   * * `DUAL`
   *
   * The network type is determined by the `DBSubnetGroup` specified for the DB instance. A
   * `DBSubnetGroup` can support only the IPv4 protocol or the IPv4 and IPv6 protocols ( `DUAL` ).
   *
   * For more information, see [Working with a DB instance in a
   * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
   * in the *Amazon RDS User Guide.*
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-networktype)
   */
  public fun networkType(): String? = unwrap(this).getNetworkType()

  /**
   * Indicates that the DB instance should be associated with the specified option group.
   *
   * Permanent options, such as the TDE option for Oracle Advanced Security TDE, can't be removed
   * from an option group. Also, that option group can't be removed from a DB instance once it is
   * associated with a DB instance.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-optiongroupname)
   */
  public fun optionGroupName(): String? = unwrap(this).getOptionGroupName()

  /**
   * The AWS KMS key identifier for encryption of Performance Insights data.
   *
   * The KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.
   *
   * If you do not specify a value for `PerformanceInsightsKMSKeyId` , then Amazon RDS uses your
   * default KMS key. There is a default KMS key for your AWS account. Your AWS account has a different
   * default KMS key for each AWS Region.
   *
   * For information about enabling Performance Insights, see
   * [EnablePerformanceInsights](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-enableperformanceinsights)
   * .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-performanceinsightskmskeyid)
   */
  public fun performanceInsightsKmsKeyId(): String? = unwrap(this).getPerformanceInsightsKmsKeyId()

  /**
   * The number of days to retain Performance Insights data.
   *
   * This setting doesn't apply to RDS Custom DB instances.
   *
   * Valid Values:
   *
   * * `7`
   * * *month* * 31, where *month* is a number of months from 1-23. Examples: `93` (3 months * 31),
   * `341` (11 months * 31), `589` (19 months * 31)
   * * `731`
   *
   * Default: `7` days
   *
   * If you specify a retention period that isn't valid, such as `94` , Amazon RDS returns an error.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-performanceinsightsretentionperiod)
   */
  public fun performanceInsightsRetentionPeriod(): Number? =
      unwrap(this).getPerformanceInsightsRetentionPeriod()

  /**
   * The port number on which the database accepts connections.
   *
   * This setting doesn't apply to Aurora DB instances. The port number is managed by the cluster.
   *
   * Valid Values: `1150-65535`
   *
   * Default:
   *
   * * RDS for Db2 - `50000`
   * * RDS for MariaDB - `3306`
   * * RDS for Microsoft SQL Server - `1433`
   * * RDS for MySQL - `3306`
   * * RDS for Oracle - `1521`
   * * RDS for PostgreSQL - `5432`
   *
   * Constraints:
   *
   * * For RDS for Microsoft SQL Server, the value can't be `1234` , `1434` , `3260` , `3343` ,
   * `3389` , `47001` , or `49152-49156` .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-port)
   */
  public fun port(): String? = unwrap(this).getPort()

  /**
   * The daily time range during which automated backups are created if automated backups are
   * enabled, using the `BackupRetentionPeriod` parameter.
   *
   * For more information, see [Backup
   * Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)
   * in the *Amazon RDS User Guide.*
   *
   * Constraints:
   *
   * * Must be in the format `hh24:mi-hh24:mi` .
   * * Must be in Universal Coordinated Time (UTC).
   * * Must not conflict with the preferred maintenance window.
   * * Must be at least 30 minutes.
   *
   * *Amazon Aurora*
   *
   * Not applicable. The daily time range for creating automated backups is managed by the DB
   * cluster.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-preferredbackupwindow)
   */
  public fun preferredBackupWindow(): String? = unwrap(this).getPreferredBackupWindow()

  /**
   * The weekly time range during which system maintenance can occur, in Universal Coordinated Time
   * (UTC).
   *
   * Format: `ddd:hh24:mi-ddd:hh24:mi`
   *
   * The default is 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. To see the time blocks available, see [Adjusting
   * the Preferred DB Instance Maintenance
   * Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow)
   * in the *Amazon RDS User Guide.*
   *
   *
   * This property applies when AWS CloudFormation initially creates the DB instance. If you use AWS
   * CloudFormation to update the DB instance, those updates are applied immediately.
   *
   *
   * Constraints: Minimum 30-minute window.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-preferredmaintenancewindow)
   */
  public fun preferredMaintenanceWindow(): String? = unwrap(this).getPreferredMaintenanceWindow()

  /**
   * The number of CPU cores and the number of threads per core for the DB instance class of the DB
   * instance.
   *
   * This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-processorfeatures)
   */
  public fun processorFeatures(): Any? = unwrap(this).getProcessorFeatures()

  /**
   * The order of priority in which an Aurora Replica is promoted to the primary instance after a
   * failure of the existing primary instance.
   *
   * For more information, see [Fault Tolerance for an Aurora DB
   * Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html#Aurora.Managing.FaultTolerance)
   * in the *Amazon Aurora User Guide* .
   *
   * This setting doesn't apply to RDS Custom DB instances.
   *
   * Default: `1`
   *
   * Valid Values: `0 - 15`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-promotiontier)
   */
  public fun promotionTier(): Number? = unwrap(this).getPromotionTier()

  /**
   * Indicates whether the DB instance is an internet-facing instance.
   *
   * If you specify true, AWS CloudFormation creates an instance with a publicly resolvable DNS
   * name, which resolves to a public IP address. If you specify false, AWS CloudFormation creates an
   * internal instance with a DNS name that resolves to a private IP address.
   *
   * The default behavior value depends on your VPC setup and the database subnet group. For more
   * information, see the `PubliclyAccessible` parameter in the
   * [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
   * in the *Amazon RDS API Reference* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-publiclyaccessible)
   */
  public fun publiclyAccessible(): Any? = unwrap(this).getPubliclyAccessible()

  /**
   * The open mode of an Oracle read replica.
   *
   * For more information, see [Working with Oracle Read Replicas for Amazon
   * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.html) in the
   * *Amazon RDS User Guide* .
   *
   * This setting is only supported in RDS for Oracle.
   *
   * Default: `open-read-only`
   *
   * Valid Values: `open-read-only` or `mounted`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-replicamode)
   */
  public fun replicaMode(): String? = unwrap(this).getReplicaMode()

  /**
   * The date and time to restore from.
   *
   * This parameter applies to point-in-time recovery. For more information, see [Restoring a DB
   * instance to a specified
   * time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon
   * RDS User Guide* .
   *
   * Constraints:
   *
   * * Must be a time in Universal Coordinated Time (UTC) format.
   * * Must be before the latest restorable time for the DB instance.
   * * Can't be specified if the `UseLatestRestorableTime` parameter is enabled.
   *
   * Example: `2009-09-07T23:45:00Z`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-restoretime)
   */
  public fun restoreTime(): String? = unwrap(this).getRestoreTime()

  /**
   * The identifier of the Multi-AZ DB cluster that will act as the source for the read replica.
   *
   * Each DB cluster can have up to 15 read replicas.
   *
   * Constraints:
   *
   * * Must be the identifier of an existing Multi-AZ DB cluster.
   * * Can't be specified if the `SourceDBInstanceIdentifier` parameter is also specified.
   * * The specified DB cluster must have automatic backups enabled, that is, its backup retention
   * period must be greater than 0.
   * * The source DB cluster must be in the same AWS Region as the read replica. Cross-Region
   * replication isn't supported.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbclusteridentifier)
   */
  public fun sourceDbClusterIdentifier(): String? = unwrap(this).getSourceDbClusterIdentifier()

  /**
   * The Amazon Resource Name (ARN) of the replicated automated backups from which to restore, for
   * example, `arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE` .
   *
   * This setting doesn't apply to RDS Custom.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbinstanceautomatedbackupsarn)
   */
  public fun sourceDbInstanceAutomatedBackupsArn(): String? =
      unwrap(this).getSourceDbInstanceAutomatedBackupsArn()

  /**
   * If you want to create a read replica DB instance, specify the ID of the source DB instance.
   *
   * Each DB instance can have a limited number of read replicas. For more information, see [Working
   * with Read
   * Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/USER_ReadRepl.html) in the
   * *Amazon RDS User Guide* .
   *
   * For information about constraints that apply to DB instance identifiers, see [Naming
   * constraints in Amazon
   * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints)
   * in the *Amazon RDS User Guide* .
   *
   * The `SourceDBInstanceIdentifier` property determines whether a DB instance is a read replica.
   * If you remove the `SourceDBInstanceIdentifier` property from your template and then update your
   * stack, AWS CloudFormation promotes the read replica to a standalone DB instance.
   *
   * If you specify the `UseLatestRestorableTime` or `RestoreTime` properties in conjunction with
   * the `SourceDBInstanceIdentifier` property, RDS restores the DB instance to the requested point in
   * time, thereby creating a new DB instance.
   *
   *
   * * If you specify a source DB instance that uses VPC security groups, we recommend that you
   * specify the `VPCSecurityGroups` property. If you don't specify the property, the read replica
   * inherits the value of the `VPCSecurityGroups` property from the source DB when you create the
   * replica. However, if you update the stack, AWS CloudFormation reverts the replica's
   * `VPCSecurityGroups` property to the default value because it's not defined in the stack's
   * template. This change might cause unexpected issues.
   * * Read replicas don't support deletion policies. AWS CloudFormation ignores any deletion policy
   * that's associated with a read replica.
   * * If you specify `SourceDBInstanceIdentifier` , don't specify the `DBSnapshotIdentifier`
   * property. You can't create a read replica from a snapshot.
   * * Don't set the `BackupRetentionPeriod` , `DBName` , `MasterUsername` , `MasterUserPassword` ,
   * and `PreferredBackupWindow` properties. The database attributes are inherited from the source DB
   * instance, and backups are disabled for read replicas.
   * * If the source DB instance is in a different region than the read replica, specify the source
   * region in `SourceRegion` , and specify an ARN for a valid DB instance in
   * `SourceDBInstanceIdentifier` . For more information, see [Constructing a Amazon RDS Amazon
   * Resource Name
   * (ARN)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN)
   * in the *Amazon RDS User Guide* .
   * * For DB instances in Amazon Aurora clusters, don't specify this property. Amazon RDS
   * automatically assigns writer and reader DB instances.
   *
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbinstanceidentifier)
   */
  public fun sourceDbInstanceIdentifier(): String? = unwrap(this).getSourceDbInstanceIdentifier()

  /**
   * The resource ID of the source DB instance from which to restore.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbiresourceid)
   */
  public fun sourceDbiResourceId(): String? = unwrap(this).getSourceDbiResourceId()

  /**
   * The ID of the region that contains the source DB instance for the read replica.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourceregion)
   */
  public fun sourceRegion(): String? = unwrap(this).getSourceRegion()

  /**
   * A value that indicates whether the DB instance is encrypted. By default, it isn't encrypted.
   *
   * If you specify the `KmsKeyId` property, then you must enable encryption.
   *
   * If you specify the `SourceDBInstanceIdentifier` or `SourceDbiResourceId` property, don't
   * specify this property. The value is inherited from the source DB instance, and if the DB instance
   * is encrypted, the specified `KmsKeyId` property is used.
   *
   * If you specify the `SourceDBInstanceAutomatedBackupsArn` property, don't specify this property.
   * The value is inherited from the source DB instance automated backup.
   *
   * If you specify `DBSnapshotIdentifier` property, don't specify this property. The value is
   * inherited from the snapshot.
   *
   * *Amazon Aurora*
   *
   * Not applicable. The encryption for DB instances is managed by the DB cluster.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-storageencrypted)
   */
  public fun storageEncrypted(): Any? = unwrap(this).getStorageEncrypted()

  /**
   * Specifies the storage throughput value for the DB instance. This setting applies only to the
   * `gp3` storage type.
   *
   * This setting doesn't apply to RDS Custom or Amazon Aurora.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-storagethroughput)
   */
  public fun storageThroughput(): Number? = unwrap(this).getStorageThroughput()

  /**
   * The storage type to associate with the DB instance.
   *
   * If you specify `io1` , `io2` , or `gp3` , you must also include a value for the `Iops`
   * parameter.
   *
   * This setting doesn't apply to Amazon Aurora DB instances. Storage is managed by the DB cluster.
   *
   * Valid Values: `gp2 | gp3 | io1 | io2 | standard`
   *
   * Default: `io1` , if the `Iops` parameter is specified. Otherwise, `gp2` .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-storagetype)
   */
  public fun storageType(): String? = unwrap(this).getStorageType()

  /**
   * Tags to assign to the DB instance.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-tags)
   */
  public fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()

  /**
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-tdecredentialarn)
   * @deprecated this property has been deprecated
   */
  @Deprecated(message = "deprecated in CDK")
  public fun tdeCredentialArn(): String? = unwrap(this).getTdeCredentialArn()

  /**
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-tdecredentialpassword)
   * @deprecated this property has been deprecated
   */
  @Deprecated(message = "deprecated in CDK")
  public fun tdeCredentialPassword(): String? = unwrap(this).getTdeCredentialPassword()

  /**
   * The time zone of the DB instance.
   *
   * The time zone parameter is currently supported only by [RDS for
   * Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone) and [RDS for SQL
   * Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone)
   * .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-timezone)
   */
  public fun timezone(): String? = unwrap(this).getTimezone()

  /**
   * Specifies whether the DB instance class of the DB instance uses its default processor features.
   *
   * This setting doesn't apply to RDS Custom DB instances.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-usedefaultprocessorfeatures)
   */
  public fun useDefaultProcessorFeatures(): Any? = unwrap(this).getUseDefaultProcessorFeatures()

  /**
   * Specifies whether the DB instance is restored from the latest backup time.
   *
   * By default, the DB instance isn't restored from the latest backup time. This parameter applies
   * to point-in-time recovery. For more information, see [Restoring a DB instance to a specified
   * time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the *Amazon
   * RDS User Guide* .
   *
   * Constraints:
   *
   * * Can't be specified if the `RestoreTime` parameter is provided.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-uselatestrestorabletime)
   */
  public fun useLatestRestorableTime(): Any? = unwrap(this).getUseLatestRestorableTime()

  /**
   * A list of the VPC security group IDs to assign to the DB instance.
   *
   * The list can include both the physical IDs of existing VPC security groups and references to
   * [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)
   * resources created in the template.
   *
   * If you plan to update the resource, don't specify VPC security groups in a shared VPC.
   *
   * If you set `VPCSecurityGroups` , you must not set
   * [`DBSecurityGroups`](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
   * , and vice versa.
   *
   *
   * You can migrate a DB instance in your stack from an RDS DB security group to a VPC security
   * group, but keep the following in mind:
   *
   * * You can't revert to using an RDS security group after you establish a VPC security group
   * membership.
   * * When you migrate your DB instance to VPC security groups, if your stack update rolls back
   * because the DB instance update fails or because an update fails in another AWS CloudFormation
   * resource, the rollback fails because it can't revert to an RDS security group.
   * * To use the properties that are available when you use a VPC security group, you must recreate
   * the DB instance. If you don't, AWS CloudFormation submits only the property values that are listed
   * in the
   * [`DBSecurityGroups`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
   * property.
   *
   *
   * To avoid this situation, migrate your DB instance to using VPC security groups only when that
   * is the only change in your stack template.
   *
   * *Amazon Aurora*
   *
   * Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster. If
   * specified, the setting must match the DB cluster setting.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-vpcsecuritygroups)
   */
  public fun vpcSecurityGroups(): List = unwrap(this).getVpcSecurityGroups() ?: emptyList()

  /**
   * A builder for [CfnDBInstanceProps]
   */
  @CdkDslMarker
  public interface Builder {
    /**
     * @param allocatedStorage The amount of storage in gibibytes (GiB) to be initially allocated
     * for the database instance.
     *
     * If any value is set in the `Iops` parameter, `AllocatedStorage` must be at least 100 GiB,
     * which corresponds to the minimum Iops value of 1,000. If you increase the `Iops` value (in 1,000
     * IOPS increments), then you must also increase the `AllocatedStorage` value (in 100-GiB
     * increments).
     *
     *
     * *Amazon Aurora*
     *
     * Not applicable. Aurora cluster volumes automatically grow as the amount of data in your
     * database increases, though you are only charged for the space that you use in an Aurora cluster
     * volume.
     *
     * *Db2*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp3): Must be an integer from 20 to 64000.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 64000.
     *
     * *MySQL*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 5 to 3072.
     *
     * *MariaDB*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 5 to 3072.
     *
     * *PostgreSQL*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 5 to 3072.
     *
     * *Oracle*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 10 to 3072.
     *
     * *SQL Server*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2):
     * * Enterprise and Standard editions: Must be an integer from 20 to 16384.
     * * Web and Express editions: Must be an integer from 20 to 16384.
     * * Provisioned IOPS storage (io1):
     * * Enterprise and Standard editions: Must be an integer from 20 to 16384.
     * * Web and Express editions: Must be an integer from 20 to 16384.
     * * Magnetic storage (standard):
     * * Enterprise and Standard editions: Must be an integer from 20 to 1024.
     * * Web and Express editions: Must be an integer from 20 to 1024.
     */
    public fun allocatedStorage(allocatedStorage: String)

    /**
     * @param allowMajorVersionUpgrade A value that indicates whether major version upgrades are
     * allowed.
     * Changing this parameter doesn't result in an outage and the change is asynchronously applied
     * as soon as possible.
     *
     * Constraints: Major version upgrades must be allowed when specifying a value for the
     * `EngineVersion` parameter that is a different major version than the DB instance's current
     * version.
     */
    public fun allowMajorVersionUpgrade(allowMajorVersionUpgrade: Boolean)

    /**
     * @param allowMajorVersionUpgrade A value that indicates whether major version upgrades are
     * allowed.
     * Changing this parameter doesn't result in an outage and the change is asynchronously applied
     * as soon as possible.
     *
     * Constraints: Major version upgrades must be allowed when specifying a value for the
     * `EngineVersion` parameter that is a different major version than the DB instance's current
     * version.
     */
    public fun allowMajorVersionUpgrade(allowMajorVersionUpgrade: IResolvable)

    /**
     * @param associatedRoles The AWS Identity and Access Management (IAM) roles associated with the
     * DB instance.
     * *Amazon Aurora*
     *
     * Not applicable. The associated roles are managed by the DB cluster.
     */
    public fun associatedRoles(associatedRoles: IResolvable)

    /**
     * @param associatedRoles The AWS Identity and Access Management (IAM) roles associated with the
     * DB instance.
     * *Amazon Aurora*
     *
     * Not applicable. The associated roles are managed by the DB cluster.
     */
    public fun associatedRoles(associatedRoles: List)

    /**
     * @param associatedRoles The AWS Identity and Access Management (IAM) roles associated with the
     * DB instance.
     * *Amazon Aurora*
     *
     * Not applicable. The associated roles are managed by the DB cluster.
     */
    public fun associatedRoles(vararg associatedRoles: Any)

    /**
     * @param autoMinorVersionUpgrade A value that indicates whether minor engine upgrades are
     * applied automatically to the DB instance during the maintenance window.
     * By default, minor engine upgrades are applied automatically.
     */
    public fun autoMinorVersionUpgrade(autoMinorVersionUpgrade: Boolean)

    /**
     * @param autoMinorVersionUpgrade A value that indicates whether minor engine upgrades are
     * applied automatically to the DB instance during the maintenance window.
     * By default, minor engine upgrades are applied automatically.
     */
    public fun autoMinorVersionUpgrade(autoMinorVersionUpgrade: IResolvable)

    /**
     * @param automaticBackupReplicationKmsKeyId The AWS KMS key identifier for encryption of the
     * replicated automated backups.
     * The KMS key ID is the Amazon Resource Name (ARN) for the KMS encryption key in the
     * destination AWS Region , for example,
     * `arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE` .
     */
    public fun automaticBackupReplicationKmsKeyId(automaticBackupReplicationKmsKeyId: String)

    /**
     * @param automaticBackupReplicationRegion The AWS Region associated with the automated backup.
     */
    public fun automaticBackupReplicationRegion(automaticBackupReplicationRegion: String)

    /**
     * @param availabilityZone The Availability Zone (AZ) where the database will be created.
     * For information on AWS Regions and Availability Zones, see [Regions and Availability
     * Zones](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html)
     * .
     *
     * For Amazon Aurora, each Aurora DB cluster hosts copies of its storage in three separate
     * Availability Zones. Specify one of these Availability Zones. Aurora automatically chooses an
     * appropriate Availability Zone if you don't specify one.
     *
     * Default: A random, system-chosen Availability Zone in the endpoint's AWS Region .
     *
     * Constraints:
     *
     * * The `AvailabilityZone` parameter can't be specified if the DB instance is a Multi-AZ
     * deployment.
     * * The specified Availability Zone must be in the same AWS Region as the current endpoint.
     *
     * Example: `us-east-1d`
     */
    public fun availabilityZone(availabilityZone: String)

    /**
     * @param backupRetentionPeriod The number of days for which automated backups are retained.
     * Setting this parameter to a positive number enables backups. Setting this parameter to 0
     * disables automated backups.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The retention period for automated backups is managed by the DB cluster.
     *
     * Default: 1
     *
     * Constraints:
     *
     * * Must be a value from 0 to 35
     * * Can't be set to 0 if the DB instance is a source to read replicas
     */
    public fun backupRetentionPeriod(backupRetentionPeriod: Number)

    /**
     * @param caCertificateIdentifier The identifier of the CA certificate for this DB instance.
     * For more information, see [Using SSL/TLS to encrypt a connection to a DB
     * instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) in the
     * *Amazon RDS User Guide* and [Using SSL/TLS to encrypt a connection to a DB
     * cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html) in
     * the *Amazon Aurora User Guide* .
     */
    public fun caCertificateIdentifier(caCertificateIdentifier: String)

    /**
     * @param certificateDetails The details of the DB instance's server certificate.
     */
    public fun certificateDetails(certificateDetails: IResolvable)

    /**
     * @param certificateDetails The details of the DB instance's server certificate.
     */
    public fun certificateDetails(certificateDetails: CfnDBInstance.CertificateDetailsProperty)

    /**
     * @param certificateDetails The details of the DB instance's server certificate.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("a28138b43a7cdc1c509818c0a0be65dc8ab95a94f0468fe9a64f453036e07923")
    public
        fun certificateDetails(certificateDetails: CfnDBInstance.CertificateDetailsProperty.Builder.() -> Unit)

    /**
     * @param certificateRotationRestart Specifies whether the DB instance is restarted when you
     * rotate your SSL/TLS certificate.
     * By default, the DB instance is restarted when you rotate your SSL/TLS certificate. The
     * certificate is not updated until the DB instance is restarted.
     *
     *
     * Set this parameter only if you are *not* using SSL/TLS to connect to the DB instance.
     *
     *
     * If you are using SSL/TLS to connect to the DB instance, follow the appropriate instructions
     * for your DB engine to rotate your SSL/TLS certificate:
     *
     * * For more information about rotating your SSL/TLS certificate for RDS DB engines, see
     * [Rotating Your SSL/TLS
     * Certificate.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html)
     * in the *Amazon RDS User Guide.*
     * * For more information about rotating your SSL/TLS certificate for Aurora DB engines, see
     * [Rotating Your SSL/TLS
     * Certificate](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html)
     * in the *Amazon Aurora User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     */
    public fun certificateRotationRestart(certificateRotationRestart: Boolean)

    /**
     * @param certificateRotationRestart Specifies whether the DB instance is restarted when you
     * rotate your SSL/TLS certificate.
     * By default, the DB instance is restarted when you rotate your SSL/TLS certificate. The
     * certificate is not updated until the DB instance is restarted.
     *
     *
     * Set this parameter only if you are *not* using SSL/TLS to connect to the DB instance.
     *
     *
     * If you are using SSL/TLS to connect to the DB instance, follow the appropriate instructions
     * for your DB engine to rotate your SSL/TLS certificate:
     *
     * * For more information about rotating your SSL/TLS certificate for RDS DB engines, see
     * [Rotating Your SSL/TLS
     * Certificate.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html)
     * in the *Amazon RDS User Guide.*
     * * For more information about rotating your SSL/TLS certificate for Aurora DB engines, see
     * [Rotating Your SSL/TLS
     * Certificate](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html)
     * in the *Amazon Aurora User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     */
    public fun certificateRotationRestart(certificateRotationRestart: IResolvable)

    /**
     * @param characterSetName For supported engines, indicates that the DB instance should be
     * associated with the specified character set.
     * *Amazon Aurora*
     *
     * Not applicable. The character set is managed by the DB cluster. For more information, see
     * [AWS::RDS::DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html)
     * .
     */
    public fun characterSetName(characterSetName: String)

    /**
     * @param copyTagsToSnapshot Specifies whether to copy tags from the DB instance to snapshots of
     * the DB instance.
     * By default, tags are not copied.
     *
     * This setting doesn't apply to Amazon Aurora DB instances. Copying tags to snapshots is
     * managed by the DB cluster. Setting this value for an Aurora DB instance has no effect on the DB
     * cluster setting.
     */
    public fun copyTagsToSnapshot(copyTagsToSnapshot: Boolean)

    /**
     * @param copyTagsToSnapshot Specifies whether to copy tags from the DB instance to snapshots of
     * the DB instance.
     * By default, tags are not copied.
     *
     * This setting doesn't apply to Amazon Aurora DB instances. Copying tags to snapshots is
     * managed by the DB cluster. Setting this value for an Aurora DB instance has no effect on the DB
     * cluster setting.
     */
    public fun copyTagsToSnapshot(copyTagsToSnapshot: IResolvable)

    /**
     * @param customIamInstanceProfile The instance profile associated with the underlying Amazon
     * EC2 instance of an RDS Custom DB instance.
     * This setting is required for RDS Custom.
     *
     * Constraints:
     *
     * * The profile must exist in your account.
     * * The profile must have an IAM role that Amazon EC2 has permissions to assume.
     * * The instance profile name and the associated IAM role name must start with the prefix
     * `AWSRDSCustom` .
     *
     * For the list of permissions required for the IAM role, see [Configure IAM and your
     * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc)
     * in the *Amazon RDS User Guide* .
     */
    public fun customIamInstanceProfile(customIamInstanceProfile: String)

    /**
     * @param dbClusterIdentifier The identifier of the DB cluster that this DB instance will belong
     * to.
     * This setting doesn't apply to RDS Custom DB instances.
     */
    public fun dbClusterIdentifier(dbClusterIdentifier: String)

    /**
     * @param dbClusterSnapshotIdentifier The identifier for the Multi-AZ DB cluster snapshot to
     * restore from.
     * For more information on Multi-AZ DB clusters, see [Multi-AZ DB cluster
     * deployments](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
     * in the *Amazon RDS User Guide* .
     *
     * Constraints:
     *
     * * Must match the identifier of an existing Multi-AZ DB cluster snapshot.
     * * Can't be specified when `DBSnapshotIdentifier` is specified.
     * * Must be specified when `DBSnapshotIdentifier` isn't specified.
     * * If you are restoring from a shared manual Multi-AZ DB cluster snapshot, the
     * `DBClusterSnapshotIdentifier` must be the ARN of the shared snapshot.
     * * Can't be the identifier of an Aurora DB cluster snapshot.
     */
    public fun dbClusterSnapshotIdentifier(dbClusterSnapshotIdentifier: String)

    /**
     * @param dbInstanceClass The compute and memory capacity of the DB instance, for example
     * `db.m5.large` . Not all DB instance classes are available in all AWS Regions , or for all
     * database engines. For the full list of DB instance classes, and availability for your engine,
     * see [DB instance
     * classes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
     * in the *Amazon RDS User Guide* or [Aurora DB instance
     * classes](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html)
     * in the *Amazon Aurora User Guide* .
     */
    public fun dbInstanceClass(dbInstanceClass: String)

    /**
     * @param dbInstanceIdentifier A name for the DB instance.
     * If you specify a name, AWS CloudFormation converts it to lowercase. If you don't specify a
     * name, AWS CloudFormation generates a unique physical ID and uses that ID for the DB instance.
     * For more information, see [Name
     * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     *
     * For information about constraints that apply to DB instance identifiers, see [Naming
     * constraints in Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints)
     * in the *Amazon RDS User Guide* .
     *
     *
     * If you specify a name, you can't perform updates that require replacement of this resource.
     * You can perform updates that require no or some interruption. If you must replace the resource,
     * specify a new name.
     */
    public fun dbInstanceIdentifier(dbInstanceIdentifier: String)

    /**
     * @param dbName The meaning of this parameter differs according to the database engine you use.
     *
     * If you specify the
     * `[DBSnapshotIdentifier](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsnapshotidentifier)`
     * property, this property only applies to RDS for Oracle.
     *
     *
     * *Amazon Aurora*
     *
     * Not applicable. The database name is managed by the DB cluster.
     *
     * *Db2*
     *
     * The name of the database to create when the DB instance is created. If this parameter isn't
     * specified, no database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must contain 1 to 64 letters or numbers.
     * * Must begin with a letter. Subsequent characters can be letters, underscores, or digits
     * (0-9).
     * * Can't be a word reserved by the specified database engine.
     *
     * *MySQL*
     *
     * The name of the database to create when the DB instance is created. If this parameter is not
     * specified, no database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must contain 1 to 64 letters or numbers.
     * * Can't be a word reserved by the specified database engine
     *
     * *MariaDB*
     *
     * The name of the database to create when the DB instance is created. If this parameter is not
     * specified, no database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must contain 1 to 64 letters or numbers.
     * * Can't be a word reserved by the specified database engine
     *
     * *PostgreSQL*
     *
     * The name of the database to create when the DB instance is created. If this parameter is not
     * specified, the default `postgres` database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must begin with a letter. Subsequent characters can be letters, underscores, or digits
     * (0-9).
     * * Must contain 1 to 63 characters.
     * * Can't be a word reserved by the specified database engine
     *
     * *Oracle*
     *
     * The Oracle System ID (SID) of the created DB instance. If you specify `null` , the default
     * value `ORCL` is used. You can't specify the string NULL, or any other reserved word, for
     * `DBName` .
     *
     * Default: `ORCL`
     *
     * Constraints:
     *
     * * Can't be longer than 8 characters
     *
     * *SQL Server*
     *
     * Not applicable. Must be null.
     */
    public fun dbName(dbName: String)

    /**
     * @param dbParameterGroupName The name of an existing DB parameter group or a reference to an
     * [AWS::RDS::DBParameterGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html)
     * resource created in the template.
     * To list all of the available DB parameter group names, use the following command:
     *
     * `aws rds describe-db-parameter-groups --query
     * "DBParameterGroups[].DBParameterGroupName" --output text`
     *
     *
     * If any of the data members of the referenced parameter group are changed during an update,
     * the DB instance might need to be restarted, which causes some interruption. If the parameter
     * group contains static parameters, whether they were changed or not, an update triggers a reboot.
     *
     *
     * If you don't specify a value for `DBParameterGroupName` property, the default DB parameter
     * group for the specified engine and engine version is used.
     */
    public fun dbParameterGroupName(dbParameterGroupName: String)

    /**
     * @param dbSecurityGroups A list of the DB security groups to assign to the DB instance.
     * The list can include both the name of existing DB security groups or references to
     * AWS::RDS::DBSecurityGroup resources created in the template.
     *
     * If you set DBSecurityGroups, you must not set VPCSecurityGroups, and vice versa. Also, note
     * that the DBSecurityGroups property exists only for backwards compatibility with older regions
     * and is no longer recommended for providing security information to an RDS DB instance. Instead,
     * use VPCSecurityGroups.
     *
     *
     * If you specify this property, AWS CloudFormation sends only the following properties (if
     * specified) to Amazon RDS during create operations:
     *
     * * `AllocatedStorage`
     * * `AutoMinorVersionUpgrade`
     * * `AvailabilityZone`
     * * `BackupRetentionPeriod`
     * * `CharacterSetName`
     * * `DBInstanceClass`
     * * `DBName`
     * * `DBParameterGroupName`
     * * `DBSecurityGroups`
     * * `DBSubnetGroupName`
     * * `Engine`
     * * `EngineVersion`
     * * `Iops`
     * * `LicenseModel`
     * * `MasterUsername`
     * * `MasterUserPassword`
     * * `MultiAZ`
     * * `OptionGroupName`
     * * `PreferredBackupWindow`
     * * `PreferredMaintenanceWindow`
     *
     * All other properties are ignored. Specify a virtual private cloud (VPC) security group if you
     * want to submit other properties, such as `StorageType` , `StorageEncrypted` , or `KmsKeyId` . If
     * you're already using the `DBSecurityGroups` property, you can't use these other properties by
     * updating your DB instance to use a VPC security group. You must recreate the DB instance.
     */
    public fun dbSecurityGroups(dbSecurityGroups: List)

    /**
     * @param dbSecurityGroups A list of the DB security groups to assign to the DB instance.
     * The list can include both the name of existing DB security groups or references to
     * AWS::RDS::DBSecurityGroup resources created in the template.
     *
     * If you set DBSecurityGroups, you must not set VPCSecurityGroups, and vice versa. Also, note
     * that the DBSecurityGroups property exists only for backwards compatibility with older regions
     * and is no longer recommended for providing security information to an RDS DB instance. Instead,
     * use VPCSecurityGroups.
     *
     *
     * If you specify this property, AWS CloudFormation sends only the following properties (if
     * specified) to Amazon RDS during create operations:
     *
     * * `AllocatedStorage`
     * * `AutoMinorVersionUpgrade`
     * * `AvailabilityZone`
     * * `BackupRetentionPeriod`
     * * `CharacterSetName`
     * * `DBInstanceClass`
     * * `DBName`
     * * `DBParameterGroupName`
     * * `DBSecurityGroups`
     * * `DBSubnetGroupName`
     * * `Engine`
     * * `EngineVersion`
     * * `Iops`
     * * `LicenseModel`
     * * `MasterUsername`
     * * `MasterUserPassword`
     * * `MultiAZ`
     * * `OptionGroupName`
     * * `PreferredBackupWindow`
     * * `PreferredMaintenanceWindow`
     *
     * All other properties are ignored. Specify a virtual private cloud (VPC) security group if you
     * want to submit other properties, such as `StorageType` , `StorageEncrypted` , or `KmsKeyId` . If
     * you're already using the `DBSecurityGroups` property, you can't use these other properties by
     * updating your DB instance to use a VPC security group. You must recreate the DB instance.
     */
    public fun dbSecurityGroups(vararg dbSecurityGroups: String)

    /**
     * @param dbSnapshotIdentifier The name or Amazon Resource Name (ARN) of the DB snapshot that's
     * used to restore the DB instance.
     * If you're restoring from a shared manual DB snapshot, you must specify the ARN of the
     * snapshot.
     *
     * By specifying this property, you can create a DB instance from the specified DB snapshot. If
     * the `DBSnapshotIdentifier` property is an empty string or the `AWS::RDS::DBInstance` declaration
     * has no `DBSnapshotIdentifier` property, AWS CloudFormation creates a new database. If the
     * property contains a value (other than an empty string), AWS CloudFormation creates a database
     * from the specified snapshot. If a snapshot with the specified name doesn't exist, AWS
     * CloudFormation can't create the database and it rolls back the stack.
     *
     * Some DB instance properties aren't valid when you restore from a snapshot, such as the
     * `MasterUsername` and `MasterUserPassword` properties. For information about the properties that
     * you can specify, see the `RestoreDBInstanceFromDBSnapshot` action in the *Amazon RDS API
     * Reference* .
     *
     * After you restore a DB instance with a `DBSnapshotIdentifier` property, you must specify the
     * same `DBSnapshotIdentifier` property for any future updates to the DB instance. When you specify
     * this property for an update, the DB instance is not restored from the DB snapshot again, and the
     * data in the database is not changed. However, if you don't specify the `DBSnapshotIdentifier`
     * property, an empty DB instance is created, and the original DB instance is deleted. If you
     * specify a property that is different from the previous snapshot restore property, a new DB
     * instance is restored from the specified `DBSnapshotIdentifier` property, and the original DB
     * instance is deleted.
     *
     * If you specify the `DBSnapshotIdentifier` property to restore a DB instance (as opposed to
     * specifying it for DB instance updates), then don't specify the following properties:
     *
     * * `CharacterSetName`
     * * `DBClusterIdentifier`
     * * `DBName`
     * * `DeleteAutomatedBackups`
     * * `KmsKeyId`
     * * `MasterUsername`
     * * `MasterUserPassword`
     * * `PerformanceInsightsKMSKeyId`
     * * `PerformanceInsightsRetentionPeriod`
     * * `PromotionTier`
     * * `SourceDBInstanceIdentifier`
     * * `SourceRegion`
     * * `StorageEncrypted` (for an encrypted snapshot)
     * * `Timezone`
     *
     * *Amazon Aurora*
     *
     * Not applicable. Snapshot restore is managed by the DB cluster.
     */
    public fun dbSnapshotIdentifier(dbSnapshotIdentifier: String)

    /**
     * @param dbSubnetGroupName A DB subnet group to associate with the DB instance.
     * If you update this value, the new subnet group must be a subnet group in a new VPC.
     *
     * If there's no DB subnet group, then the DB instance isn't a VPC DB instance.
     *
     * For more information about using Amazon RDS in a VPC, see [Amazon VPC and Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS
     * User Guide* .
     *
     * This setting doesn't apply to Amazon Aurora DB instances. The DB subnet group is managed by
     * the DB cluster. If specified, the setting must match the DB cluster setting.
     */
    public fun dbSubnetGroupName(dbSubnetGroupName: String)

    /**
     * @param dedicatedLogVolume Indicates whether the DB instance has a dedicated log volume (DLV)
     * enabled.
     */
    public fun dedicatedLogVolume(dedicatedLogVolume: Boolean)

    /**
     * @param dedicatedLogVolume Indicates whether the DB instance has a dedicated log volume (DLV)
     * enabled.
     */
    public fun dedicatedLogVolume(dedicatedLogVolume: IResolvable)

    /**
     * @param deleteAutomatedBackups A value that indicates whether to remove automated backups
     * immediately after the DB instance is deleted.
     * This parameter isn't case-sensitive. The default is to remove automated backups immediately
     * after the DB instance is deleted.
     *
     * *Amazon Aurora*
     *
     * Not applicable. When you delete a DB cluster, all automated backups for that DB cluster are
     * deleted and can't be recovered. Manual DB cluster snapshots of the DB cluster are not deleted.
     */
    public fun deleteAutomatedBackups(deleteAutomatedBackups: Boolean)

    /**
     * @param deleteAutomatedBackups A value that indicates whether to remove automated backups
     * immediately after the DB instance is deleted.
     * This parameter isn't case-sensitive. The default is to remove automated backups immediately
     * after the DB instance is deleted.
     *
     * *Amazon Aurora*
     *
     * Not applicable. When you delete a DB cluster, all automated backups for that DB cluster are
     * deleted and can't be recovered. Manual DB cluster snapshots of the DB cluster are not deleted.
     */
    public fun deleteAutomatedBackups(deleteAutomatedBackups: IResolvable)

    /**
     * @param deletionProtection Specifies whether the DB instance has deletion protection enabled.
     * The database can't be deleted when deletion protection is enabled. By default, deletion
     * protection isn't enabled. For more information, see [Deleting a DB
     * Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html) .
     *
     * This setting doesn't apply to Amazon Aurora DB instances. You can enable or disable deletion
     * protection for the DB cluster. For more information, see `CreateDBCluster` . DB instances in a
     * DB cluster can be deleted even when deletion protection is enabled for the DB cluster.
     */
    public fun deletionProtection(deletionProtection: Boolean)

    /**
     * @param deletionProtection Specifies whether the DB instance has deletion protection enabled.
     * The database can't be deleted when deletion protection is enabled. By default, deletion
     * protection isn't enabled. For more information, see [Deleting a DB
     * Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html) .
     *
     * This setting doesn't apply to Amazon Aurora DB instances. You can enable or disable deletion
     * protection for the DB cluster. For more information, see `CreateDBCluster` . DB instances in a
     * DB cluster can be deleted even when deletion protection is enabled for the DB cluster.
     */
    public fun deletionProtection(deletionProtection: IResolvable)

    /**
     * @param domain The Active Directory directory ID to create the DB instance in.
     * Currently, only Db2, MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB instances can be
     * created in an Active Directory Domain.
     *
     * For more information, see [Kerberos
     * Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html)
     * in the *Amazon RDS User Guide* .
     */
    public fun domain(domain: String)

    /**
     * @param domainAuthSecretArn The ARN for the Secrets Manager secret with the credentials for
     * the user joining the domain.
     * Example:
     * `arn:aws:secretsmanager:region:account-number:secret:myselfmanagedADtestsecret-123456`
     */
    public fun domainAuthSecretArn(domainAuthSecretArn: String)

    /**
     * @param domainDnsIps The IPv4 DNS IP addresses of your primary and secondary Active Directory
     * domain controllers.
     * Constraints:
     *
     * * Two IP addresses must be provided. If there isn't a secondary domain controller, use the IP
     * address of the primary domain controller for both entries in the list.
     *
     * Example: `123.124.125.126,234.235.236.237`
     */
    public fun domainDnsIps(domainDnsIps: List)

    /**
     * @param domainDnsIps The IPv4 DNS IP addresses of your primary and secondary Active Directory
     * domain controllers.
     * Constraints:
     *
     * * Two IP addresses must be provided. If there isn't a secondary domain controller, use the IP
     * address of the primary domain controller for both entries in the list.
     *
     * Example: `123.124.125.126,234.235.236.237`
     */
    public fun domainDnsIps(vararg domainDnsIps: String)

    /**
     * @param domainFqdn The fully qualified domain name (FQDN) of an Active Directory domain.
     * Constraints:
     *
     * * Can't be longer than 64 characters.
     *
     * Example: `mymanagedADtest.mymanagedAD.mydomain`
     */
    public fun domainFqdn(domainFqdn: String)

    /**
     * @param domainIamRoleName The name of the IAM role to use when making API calls to the
     * Directory Service.
     * This setting doesn't apply to the following DB instances:
     *
     * * Amazon Aurora (The domain is managed by the DB cluster.)
     * * RDS Custom
     */
    public fun domainIamRoleName(domainIamRoleName: String)

    /**
     * @param domainOu The Active Directory organizational unit for your DB instance to join.
     * Constraints:
     *
     * * Must be in the distinguished name format.
     * * Can't be longer than 64 characters.
     *
     * Example: `OU=mymanagedADtestOU,DC=mymanagedADtest,DC=mymanagedAD,DC=mydomain`
     */
    public fun domainOu(domainOu: String)

    /**
     * @param enableCloudwatchLogsExports The list of log types that need to be enabled for
     * exporting to CloudWatch Logs.
     * The values in the list depend on the DB engine being used. For more information, see
     * [Publishing Database Logs to Amazon CloudWatch
     * Logs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
     * in the *Amazon Relational Database Service User Guide* .
     *
     * *Amazon Aurora*
     *
     * Not applicable. CloudWatch Logs exports are managed by the DB cluster.
     *
     * *Db2*
     *
     * Valid values: `diag.log` , `notify.log`
     *
     * *MariaDB*
     *
     * Valid values: `audit` , `error` , `general` , `slowquery`
     *
     * *Microsoft SQL Server*
     *
     * Valid values: `agent` , `error`
     *
     * *MySQL*
     *
     * Valid values: `audit` , `error` , `general` , `slowquery`
     *
     * *Oracle*
     *
     * Valid values: `alert` , `audit` , `listener` , `trace` , `oemagent`
     *
     * *PostgreSQL*
     *
     * Valid values: `postgresql` , `upgrade`
     */
    public fun enableCloudwatchLogsExports(enableCloudwatchLogsExports: List)

    /**
     * @param enableCloudwatchLogsExports The list of log types that need to be enabled for
     * exporting to CloudWatch Logs.
     * The values in the list depend on the DB engine being used. For more information, see
     * [Publishing Database Logs to Amazon CloudWatch
     * Logs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
     * in the *Amazon Relational Database Service User Guide* .
     *
     * *Amazon Aurora*
     *
     * Not applicable. CloudWatch Logs exports are managed by the DB cluster.
     *
     * *Db2*
     *
     * Valid values: `diag.log` , `notify.log`
     *
     * *MariaDB*
     *
     * Valid values: `audit` , `error` , `general` , `slowquery`
     *
     * *Microsoft SQL Server*
     *
     * Valid values: `agent` , `error`
     *
     * *MySQL*
     *
     * Valid values: `audit` , `error` , `general` , `slowquery`
     *
     * *Oracle*
     *
     * Valid values: `alert` , `audit` , `listener` , `trace` , `oemagent`
     *
     * *PostgreSQL*
     *
     * Valid values: `postgresql` , `upgrade`
     */
    public fun enableCloudwatchLogsExports(vararg enableCloudwatchLogsExports: String)

    /**
     * @param enableIamDatabaseAuthentication A value that indicates whether to enable mapping of
     * AWS Identity and Access Management (IAM) accounts to database accounts.
     * By default, mapping is disabled.
     *
     * This property is supported for RDS for MariaDB, RDS for MySQL, and RDS for PostgreSQL. For
     * more information, see [IAM Database Authentication for MariaDB, MySQL, and
     * PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
     * in the *Amazon RDS User Guide.*
     *
     * *Amazon Aurora*
     *
     * Not applicable. Mapping AWS IAM accounts to database accounts is managed by the DB cluster.
     */
    public fun enableIamDatabaseAuthentication(enableIamDatabaseAuthentication: Boolean)

    /**
     * @param enableIamDatabaseAuthentication A value that indicates whether to enable mapping of
     * AWS Identity and Access Management (IAM) accounts to database accounts.
     * By default, mapping is disabled.
     *
     * This property is supported for RDS for MariaDB, RDS for MySQL, and RDS for PostgreSQL. For
     * more information, see [IAM Database Authentication for MariaDB, MySQL, and
     * PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
     * in the *Amazon RDS User Guide.*
     *
     * *Amazon Aurora*
     *
     * Not applicable. Mapping AWS IAM accounts to database accounts is managed by the DB cluster.
     */
    public fun enableIamDatabaseAuthentication(enableIamDatabaseAuthentication: IResolvable)

    /**
     * @param enablePerformanceInsights Specifies whether to enable Performance Insights for the DB
     * instance.
     * For more information, see [Using Amazon Performance
     * Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) in the
     * *Amazon RDS User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     */
    public fun enablePerformanceInsights(enablePerformanceInsights: Boolean)

    /**
     * @param enablePerformanceInsights Specifies whether to enable Performance Insights for the DB
     * instance.
     * For more information, see [Using Amazon Performance
     * Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) in the
     * *Amazon RDS User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     */
    public fun enablePerformanceInsights(enablePerformanceInsights: IResolvable)

    /**
     * @param endpoint The connection endpoint for the DB instance.
     *
     * The endpoint might not be shown for instances with the status of `creating` .
     */
    public fun endpoint(endpoint: IResolvable)

    /**
     * @param endpoint The connection endpoint for the DB instance.
     *
     * The endpoint might not be shown for instances with the status of `creating` .
     */
    public fun endpoint(endpoint: CfnDBInstance.EndpointProperty)

    /**
     * @param endpoint The connection endpoint for the DB instance.
     *
     * The endpoint might not be shown for instances with the status of `creating` .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("7947e5819bba5c75904e4610cb293a5a01f8267d49b226670e67ad3e8b09537d")
    public fun endpoint(endpoint: CfnDBInstance.EndpointProperty.Builder.() -> Unit)

    /**
     * @param engine The name of the database engine to use for this DB instance.
     * Not every database engine is available in every AWS Region.
     *
     * This property is required when creating a DB instance.
     *
     *
     * You can convert an Oracle database from the non-CDB architecture to the container database
     * (CDB) architecture by updating the `Engine` value in your templates from `oracle-ee` to
     * `oracle-ee-cdb` or from `oracle-se2` to `oracle-se2-cdb` . Converting to the CDB architecture
     * requires an interruption.
     *
     *
     * Valid Values:
     *
     * * `aurora-mysql` (for Aurora MySQL DB instances)
     * * `aurora-postgresql` (for Aurora PostgreSQL DB instances)
     * * `custom-oracle-ee` (for RDS Custom for Oracle DB instances)
     * * `custom-oracle-ee-cdb` (for RDS Custom for Oracle DB instances)
     * * `custom-sqlserver-ee` (for RDS Custom for SQL Server DB instances)
     * * `custom-sqlserver-se` (for RDS Custom for SQL Server DB instances)
     * * `custom-sqlserver-web` (for RDS Custom for SQL Server DB instances)
     * * `db2-ae`
     * * `db2-se`
     * * `mariadb`
     * * `mysql`
     * * `oracle-ee`
     * * `oracle-ee-cdb`
     * * `oracle-se2`
     * * `oracle-se2-cdb`
     * * `postgres`
     * * `sqlserver-ee`
     * * `sqlserver-se`
     * * `sqlserver-ex`
     * * `sqlserver-web`
     */
    public fun engine(engine: String)

    /**
     * @param engineLifecycleSupport The life cycle type for this DB instance.
     *
     * By default, this value is set to `open-source-rds-extended-support` , which enrolls your DB
     * instance into Amazon RDS Extended Support. At the end of standard support, you can avoid charges
     * for Extended Support by setting the value to `open-source-rds-extended-support-disabled` . In
     * this case, creating the DB instance will fail if the DB major version is past its end of
     * standard support date.
     *
     *
     * This setting applies only to RDS for MySQL and RDS for PostgreSQL. For Amazon Aurora DB
     * instances, the life cycle type is managed by the DB cluster.
     *
     * You can use this setting to enroll your DB instance into Amazon RDS Extended Support. With
     * RDS Extended Support, you can run the selected major engine version on your DB instance past the
     * end of standard support for that engine version. For more information, see [Using Amazon RDS
     * Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html)
     * in the *Amazon RDS User Guide* .
     *
     * Valid Values: `open-source-rds-extended-support | open-source-rds-extended-support-disabled`
     *
     * Default: `open-source-rds-extended-support`
     */
    public fun engineLifecycleSupport(engineLifecycleSupport: String)

    /**
     * @param engineVersion The version number of the database engine to use.
     * For a list of valid engine versions, use the `DescribeDBEngineVersions` action.
     *
     * The following are the database engines and links to information about the major and minor
     * versions that are available with Amazon RDS. Not every database engine is available for every
     * AWS Region.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The version number of the database engine to be used by the DB instance is
     * managed by the DB cluster.
     *
     * *Db2*
     *
     * See [Amazon RDS for
     * Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Db2.html#Db2.Concepts.VersionMgmt)
     * in the *Amazon RDS User Guide.*
     *
     * *MariaDB*
     *
     * See [MariaDB on Amazon RDS
     * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt)
     * in the *Amazon RDS User Guide.*
     *
     * *Microsoft SQL Server*
     *
     * See [Microsoft SQL Server Versions on Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport)
     * in the *Amazon RDS User Guide.*
     *
     * *MySQL*
     *
     * See [MySQL on Amazon RDS
     * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt)
     * in the *Amazon RDS User Guide.*
     *
     * *Oracle*
     *
     * See [Oracle Database Engine Release
     * Notes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html)
     * in the *Amazon RDS User Guide.*
     *
     * *PostgreSQL*
     *
     * See [Supported PostgreSQL Database
     * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.DBVersions)
     * in the *Amazon RDS User Guide.*
     */
    public fun engineVersion(engineVersion: String)

    /**
     * @param iops The number of I/O operations per second (IOPS) that the database provisions.
     * The value must be equal to or greater than 1000.
     *
     * If you specify this property, you must follow the range of allowed ratios of your requested
     * IOPS rate to the amount of storage that you allocate (IOPS to allocated storage). For example,
     * you can provision an Oracle database instance with 1000 IOPS and 200 GiB of storage (a ratio of
     * 5:1), or specify 2000 IOPS with 200 GiB of storage (a ratio of 10:1). For more information, see
     * [Amazon RDS Provisioned IOPS Storage to Improve
     * Performance](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/CHAP_Storage.html#USER_PIOPS)
     * in the *Amazon RDS User Guide* .
     *
     *
     * If you specify `io1` for the `StorageType` property, then you must also specify the `Iops`
     * property.
     *
     *
     * Constraints:
     *
     * * For RDS for Db2, MariaDB, MySQL, Oracle, and PostgreSQL - Must be a multiple between .5 and
     * 50 of the storage amount for the DB instance.
     * * For RDS for SQL Server - Must be a multiple between 1 and 50 of the storage amount for the
     * DB instance.
     */
    public fun iops(iops: Number)

    /**
     * @param kmsKeyId The ARN of the AWS KMS key that's used to encrypt the DB instance, such as
     * `arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef` .
     * If you enable the StorageEncrypted property but don't specify this property, AWS
     * CloudFormation uses the default KMS key. If you specify this property, you must set the
     * StorageEncrypted property to true.
     *
     * If you specify the `SourceDBInstanceIdentifier` or `SourceDbiResourceId` property, don't
     * specify this property. The value is inherited from the source DB instance, and if the DB
     * instance is encrypted, the specified `KmsKeyId` property is used. However, if the source DB
     * instance is in a different AWS Region, you must specify a KMS key ID.
     *
     * If you specify the `SourceDBInstanceAutomatedBackupsArn` property, don't specify this
     * property. The value is inherited from the source DB instance automated backup, and if the
     * automated backup is encrypted, the specified `KmsKeyId` property is used.
     *
     * If you create an encrypted read replica in a different AWS Region, then you must specify a
     * KMS key for the destination AWS Region. KMS encryption keys are specific to the region that
     * they're created in, and you can't use encryption keys from one region in another region.
     *
     * If you specify the `DBSnapshotIdentifier` property, don't specify this property. The
     * `StorageEncrypted` property value is inherited from the snapshot. If the DB instance is
     * encrypted, the specified `KmsKeyId` property is also inherited from the snapshot.
     *
     * If you specify `DBSecurityGroups` , AWS CloudFormation ignores this property. To specify both
     * a security group and this property, you must use a VPC security group. For more information
     * about Amazon RDS and VPC, see [Using Amazon RDS with Amazon
     * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS
     * User Guide* .
     *
     * *Amazon Aurora*
     *
     * Not applicable. The KMS key identifier is managed by the DB cluster.
     */
    public fun kmsKeyId(kmsKeyId: String)

    /**
     * @param licenseModel License model information for this DB instance.
     * Valid Values:
     *
     * * Aurora MySQL - `general-public-license`
     * * Aurora PostgreSQL - `postgresql-license`
     * * RDS for Db2 - `bring-your-own-license` . For more information about RDS for Db2 licensing,
     * see [](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-licensing.html) in the *Amazon
     * RDS User Guide.*
     * * RDS for MariaDB - `general-public-license`
     * * RDS for Microsoft SQL Server - `license-included`
     * * RDS for MySQL - `general-public-license`
     * * RDS for Oracle - `bring-your-own-license` or `license-included`
     * * RDS for PostgreSQL - `postgresql-license`
     *
     *
     * If you've specified `DBSecurityGroups` and then you update the license model, AWS
     * CloudFormation replaces the underlying DB instance. This will incur some interruptions to
     * database availability.
     */
    public fun licenseModel(licenseModel: String)

    /**
     * @param manageMasterUserPassword Specifies whether to manage the master user password with AWS
     * Secrets Manager.
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     *
     * Constraints:
     *
     * * Can't manage the master user password with AWS Secrets Manager if `MasterUserPassword` is
     * specified.
     */
    public fun manageMasterUserPassword(manageMasterUserPassword: Boolean)

    /**
     * @param manageMasterUserPassword Specifies whether to manage the master user password with AWS
     * Secrets Manager.
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     *
     * Constraints:
     *
     * * Can't manage the master user password with AWS Secrets Manager if `MasterUserPassword` is
     * specified.
     */
    public fun manageMasterUserPassword(manageMasterUserPassword: IResolvable)

    /**
     * @param masterUserPassword The password for the master user. The password can include any
     * printable ASCII character except "/", """, or "@".
     * *Amazon Aurora*
     *
     * Not applicable. The password for the master user is managed by the DB cluster.
     *
     * *RDS for Db2*
     *
     * Must contain from 8 to 255 characters.
     *
     * *RDS for MariaDB*
     *
     * Constraints: Must contain from 8 to 41 characters.
     *
     * *RDS for Microsoft SQL Server*
     *
     * Constraints: Must contain from 8 to 128 characters.
     *
     * *RDS for MySQL*
     *
     * Constraints: Must contain from 8 to 41 characters.
     *
     * *RDS for Oracle*
     *
     * Constraints: Must contain from 8 to 30 characters.
     *
     * *RDS for PostgreSQL*
     *
     * Constraints: Must contain from 8 to 128 characters.
     */
    public fun masterUserPassword(masterUserPassword: String)

    /**
     * @param masterUserSecret The secret managed by RDS in AWS Secrets Manager for the master user
     * password.
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     */
    public fun masterUserSecret(masterUserSecret: IResolvable)

    /**
     * @param masterUserSecret The secret managed by RDS in AWS Secrets Manager for the master user
     * password.
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     */
    public fun masterUserSecret(masterUserSecret: CfnDBInstance.MasterUserSecretProperty)

    /**
     * @param masterUserSecret The secret managed by RDS in AWS Secrets Manager for the master user
     * password.
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("64022dfb8dc7b9545e66d18484a4eef57beed16a27bc24d8bd93c488e9761f42")
    public
        fun masterUserSecret(masterUserSecret: CfnDBInstance.MasterUserSecretProperty.Builder.() -> Unit)

    /**
     * @param masterUsername The master user name for the DB instance.
     *
     * If you specify the `SourceDBInstanceIdentifier` or `DBSnapshotIdentifier` property, don't
     * specify this property. The value is inherited from the source DB instance or snapshot.
     *
     * When migrating a self-managed Db2 database, we recommend that you use the same master
     * username as your self-managed Db2 instance name.
     *
     *
     * *Amazon Aurora*
     *
     * Not applicable. The name for the master user is managed by the DB cluster.
     *
     * *RDS for Db2*
     *
     * Constraints:
     *
     * * Must be 1 to 16 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for MariaDB*
     *
     * Constraints:
     *
     * * Must be 1 to 16 letters or numbers.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for Microsoft SQL Server*
     *
     * Constraints:
     *
     * * Must be 1 to 128 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for MySQL*
     *
     * Constraints:
     *
     * * Must be 1 to 16 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for Oracle*
     *
     * Constraints:
     *
     * * Must be 1 to 30 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for PostgreSQL*
     *
     * Constraints:
     *
     * * Must be 1 to 63 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     */
    public fun masterUsername(masterUsername: String)

    /**
     * @param maxAllocatedStorage The upper limit in gibibytes (GiB) to which Amazon RDS can
     * automatically scale the storage of the DB instance.
     * For more information about this setting, including limitations that apply to it, see
     * [Managing capacity automatically with Amazon RDS storage
     * autoscaling](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling)
     * in the *Amazon RDS User Guide* .
     *
     * This setting doesn't apply to the following DB instances:
     *
     * * Amazon Aurora (Storage is managed by the DB cluster.)
     * * RDS Custom
     */
    public fun maxAllocatedStorage(maxAllocatedStorage: Number)

    /**
     * @param monitoringInterval The interval, in seconds, between points when Enhanced Monitoring
     * metrics are collected for the DB instance.
     * To disable collection of Enhanced Monitoring metrics, specify `0` .
     *
     * If `MonitoringRoleArn` is specified, then you must set `MonitoringInterval` to a value other
     * than `0` .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * Valid Values: `0 | 1 | 5 | 10 | 15 | 30 | 60`
     *
     * Default: `0`
     */
    public fun monitoringInterval(monitoringInterval: Number)

    /**
     * @param monitoringRoleArn The ARN for the IAM role that permits RDS to send enhanced
     * monitoring metrics to Amazon CloudWatch Logs.
     * For example, `arn:aws:iam:123456789012:role/emaccess` . For information on creating a
     * monitoring role, see [Setting Up and Enabling Enhanced
     * Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling)
     * in the *Amazon RDS User Guide* .
     *
     * If `MonitoringInterval` is set to a value other than `0` , then you must supply a
     * `MonitoringRoleArn` value.
     *
     * This setting doesn't apply to RDS Custom DB instances.
     */
    public fun monitoringRoleArn(monitoringRoleArn: String)

    /**
     * @param multiAz Specifies whether the DB instance is a Multi-AZ deployment.
     * You can't set the `AvailabilityZone` parameter if the DB instance is a Multi-AZ deployment.
     *
     * This setting doesn't apply to the following DB instances:
     *
     * * Amazon Aurora (DB instance Availability Zones (AZs) are managed by the DB cluster.)
     * * RDS Custom
     */
    public fun multiAz(multiAz: Boolean)

    /**
     * @param multiAz Specifies whether the DB instance is a Multi-AZ deployment.
     * You can't set the `AvailabilityZone` parameter if the DB instance is a Multi-AZ deployment.
     *
     * This setting doesn't apply to the following DB instances:
     *
     * * Amazon Aurora (DB instance Availability Zones (AZs) are managed by the DB cluster.)
     * * RDS Custom
     */
    public fun multiAz(multiAz: IResolvable)

    /**
     * @param ncharCharacterSetName The name of the NCHAR character set for the Oracle DB instance.
     * This setting doesn't apply to RDS Custom DB instances.
     */
    public fun ncharCharacterSetName(ncharCharacterSetName: String)

    /**
     * @param networkType The network type of the DB instance.
     * Valid values:
     *
     * * `IPV4`
     * * `DUAL`
     *
     * The network type is determined by the `DBSubnetGroup` specified for the DB instance. A
     * `DBSubnetGroup` can support only the IPv4 protocol or the IPv4 and IPv6 protocols ( `DUAL` ).
     *
     * For more information, see [Working with a DB instance in a
     * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
     * in the *Amazon RDS User Guide.*
     */
    public fun networkType(networkType: String)

    /**
     * @param optionGroupName Indicates that the DB instance should be associated with the specified
     * option group.
     * Permanent options, such as the TDE option for Oracle Advanced Security TDE, can't be removed
     * from an option group. Also, that option group can't be removed from a DB instance once it is
     * associated with a DB instance.
     */
    public fun optionGroupName(optionGroupName: String)

    /**
     * @param performanceInsightsKmsKeyId The AWS KMS key identifier for encryption of Performance
     * Insights data.
     * The KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.
     *
     * If you do not specify a value for `PerformanceInsightsKMSKeyId` , then Amazon RDS uses your
     * default KMS key. There is a default KMS key for your AWS account. Your AWS account has a
     * different default KMS key for each AWS Region.
     *
     * For information about enabling Performance Insights, see
     * [EnablePerformanceInsights](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-enableperformanceinsights)
     * .
     */
    public fun performanceInsightsKmsKeyId(performanceInsightsKmsKeyId: String)

    /**
     * @param performanceInsightsRetentionPeriod The number of days to retain Performance Insights
     * data.
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * Valid Values:
     *
     * * `7`
     * * *month* * 31, where *month* is a number of months from 1-23. Examples: `93` (3 months *
     * 31), `341` (11 months * 31), `589` (19 months * 31)
     * * `731`
     *
     * Default: `7` days
     *
     * If you specify a retention period that isn't valid, such as `94` , Amazon RDS returns an
     * error.
     */
    public fun performanceInsightsRetentionPeriod(performanceInsightsRetentionPeriod: Number)

    /**
     * @param port The port number on which the database accepts connections.
     * This setting doesn't apply to Aurora DB instances. The port number is managed by the cluster.
     *
     * Valid Values: `1150-65535`
     *
     * Default:
     *
     * * RDS for Db2 - `50000`
     * * RDS for MariaDB - `3306`
     * * RDS for Microsoft SQL Server - `1433`
     * * RDS for MySQL - `3306`
     * * RDS for Oracle - `1521`
     * * RDS for PostgreSQL - `5432`
     *
     * Constraints:
     *
     * * For RDS for Microsoft SQL Server, the value can't be `1234` , `1434` , `3260` , `3343` ,
     * `3389` , `47001` , or `49152-49156` .
     */
    public fun port(port: String)

    /**
     * @param preferredBackupWindow The daily time range during which automated backups are created
     * if automated backups are enabled, using the `BackupRetentionPeriod` parameter.
     * For more information, see [Backup
     * Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)
     * in the *Amazon RDS User Guide.*
     *
     * Constraints:
     *
     * * Must be in the format `hh24:mi-hh24:mi` .
     * * Must be in Universal Coordinated Time (UTC).
     * * Must not conflict with the preferred maintenance window.
     * * Must be at least 30 minutes.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The daily time range for creating automated backups is managed by the DB
     * cluster.
     */
    public fun preferredBackupWindow(preferredBackupWindow: String)

    /**
     * @param preferredMaintenanceWindow The weekly time range during which system maintenance can
     * occur, in Universal Coordinated Time (UTC).
     * Format: `ddd:hh24:mi-ddd:hh24:mi`
     *
     * The default is 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. To see the time blocks available, see
     * [Adjusting the Preferred DB Instance Maintenance
     * Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow)
     * in the *Amazon RDS User Guide.*
     *
     *
     * This property applies when AWS CloudFormation initially creates the DB instance. If you use
     * AWS CloudFormation to update the DB instance, those updates are applied immediately.
     *
     *
     * Constraints: Minimum 30-minute window.
     */
    public fun preferredMaintenanceWindow(preferredMaintenanceWindow: String)

    /**
     * @param processorFeatures The number of CPU cores and the number of threads per core for the
     * DB instance class of the DB instance.
     * This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
     */
    public fun processorFeatures(processorFeatures: IResolvable)

    /**
     * @param processorFeatures The number of CPU cores and the number of threads per core for the
     * DB instance class of the DB instance.
     * This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
     */
    public fun processorFeatures(processorFeatures: List)

    /**
     * @param processorFeatures The number of CPU cores and the number of threads per core for the
     * DB instance class of the DB instance.
     * This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
     */
    public fun processorFeatures(vararg processorFeatures: Any)

    /**
     * @param promotionTier The order of priority in which an Aurora Replica is promoted to the
     * primary instance after a failure of the existing primary instance.
     * For more information, see [Fault Tolerance for an Aurora DB
     * Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html#Aurora.Managing.FaultTolerance)
     * in the *Amazon Aurora User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * Default: `1`
     *
     * Valid Values: `0 - 15`
     */
    public fun promotionTier(promotionTier: Number)

    /**
     * @param publiclyAccessible Indicates whether the DB instance is an internet-facing instance.
     * If you specify true, AWS CloudFormation creates an instance with a publicly resolvable DNS
     * name, which resolves to a public IP address. If you specify false, AWS CloudFormation creates an
     * internal instance with a DNS name that resolves to a private IP address.
     *
     * The default behavior value depends on your VPC setup and the database subnet group. For more
     * information, see the `PubliclyAccessible` parameter in the
     * [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
     * in the *Amazon RDS API Reference* .
     */
    public fun publiclyAccessible(publiclyAccessible: Boolean)

    /**
     * @param publiclyAccessible Indicates whether the DB instance is an internet-facing instance.
     * If you specify true, AWS CloudFormation creates an instance with a publicly resolvable DNS
     * name, which resolves to a public IP address. If you specify false, AWS CloudFormation creates an
     * internal instance with a DNS name that resolves to a private IP address.
     *
     * The default behavior value depends on your VPC setup and the database subnet group. For more
     * information, see the `PubliclyAccessible` parameter in the
     * [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
     * in the *Amazon RDS API Reference* .
     */
    public fun publiclyAccessible(publiclyAccessible: IResolvable)

    /**
     * @param replicaMode The open mode of an Oracle read replica.
     * For more information, see [Working with Oracle Read Replicas for Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.html) in the
     * *Amazon RDS User Guide* .
     *
     * This setting is only supported in RDS for Oracle.
     *
     * Default: `open-read-only`
     *
     * Valid Values: `open-read-only` or `mounted`
     */
    public fun replicaMode(replicaMode: String)

    /**
     * @param restoreTime The date and time to restore from.
     * This parameter applies to point-in-time recovery. For more information, see [Restoring a DB
     * instance to a specified
     * time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the
     * *Amazon RDS User Guide* .
     *
     * Constraints:
     *
     * * Must be a time in Universal Coordinated Time (UTC) format.
     * * Must be before the latest restorable time for the DB instance.
     * * Can't be specified if the `UseLatestRestorableTime` parameter is enabled.
     *
     * Example: `2009-09-07T23:45:00Z`
     */
    public fun restoreTime(restoreTime: String)

    /**
     * @param sourceDbClusterIdentifier The identifier of the Multi-AZ DB cluster that will act as
     * the source for the read replica.
     * Each DB cluster can have up to 15 read replicas.
     *
     * Constraints:
     *
     * * Must be the identifier of an existing Multi-AZ DB cluster.
     * * Can't be specified if the `SourceDBInstanceIdentifier` parameter is also specified.
     * * The specified DB cluster must have automatic backups enabled, that is, its backup retention
     * period must be greater than 0.
     * * The source DB cluster must be in the same AWS Region as the read replica. Cross-Region
     * replication isn't supported.
     */
    public fun sourceDbClusterIdentifier(sourceDbClusterIdentifier: String)

    /**
     * @param sourceDbInstanceAutomatedBackupsArn The Amazon Resource Name (ARN) of the replicated
     * automated backups from which to restore, for example,
     * `arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE` .
     * This setting doesn't apply to RDS Custom.
     */
    public fun sourceDbInstanceAutomatedBackupsArn(sourceDbInstanceAutomatedBackupsArn: String)

    /**
     * @param sourceDbInstanceIdentifier If you want to create a read replica DB instance, specify
     * the ID of the source DB instance.
     * Each DB instance can have a limited number of read replicas. For more information, see
     * [Working with Read
     * Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/USER_ReadRepl.html) in the
     * *Amazon RDS User Guide* .
     *
     * For information about constraints that apply to DB instance identifiers, see [Naming
     * constraints in Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints)
     * in the *Amazon RDS User Guide* .
     *
     * The `SourceDBInstanceIdentifier` property determines whether a DB instance is a read replica.
     * If you remove the `SourceDBInstanceIdentifier` property from your template and then update your
     * stack, AWS CloudFormation promotes the read replica to a standalone DB instance.
     *
     * If you specify the `UseLatestRestorableTime` or `RestoreTime` properties in conjunction with
     * the `SourceDBInstanceIdentifier` property, RDS restores the DB instance to the requested point
     * in time, thereby creating a new DB instance.
     *
     *
     * * If you specify a source DB instance that uses VPC security groups, we recommend that you
     * specify the `VPCSecurityGroups` property. If you don't specify the property, the read replica
     * inherits the value of the `VPCSecurityGroups` property from the source DB when you create the
     * replica. However, if you update the stack, AWS CloudFormation reverts the replica's
     * `VPCSecurityGroups` property to the default value because it's not defined in the stack's
     * template. This change might cause unexpected issues.
     * * Read replicas don't support deletion policies. AWS CloudFormation ignores any deletion
     * policy that's associated with a read replica.
     * * If you specify `SourceDBInstanceIdentifier` , don't specify the `DBSnapshotIdentifier`
     * property. You can't create a read replica from a snapshot.
     * * Don't set the `BackupRetentionPeriod` , `DBName` , `MasterUsername` , `MasterUserPassword`
     * , and `PreferredBackupWindow` properties. The database attributes are inherited from the source
     * DB instance, and backups are disabled for read replicas.
     * * If the source DB instance is in a different region than the read replica, specify the
     * source region in `SourceRegion` , and specify an ARN for a valid DB instance in
     * `SourceDBInstanceIdentifier` . For more information, see [Constructing a Amazon RDS Amazon
     * Resource Name
     * (ARN)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN)
     * in the *Amazon RDS User Guide* .
     * * For DB instances in Amazon Aurora clusters, don't specify this property. Amazon RDS
     * automatically assigns writer and reader DB instances.
     */
    public fun sourceDbInstanceIdentifier(sourceDbInstanceIdentifier: String)

    /**
     * @param sourceDbiResourceId The resource ID of the source DB instance from which to restore.
     */
    public fun sourceDbiResourceId(sourceDbiResourceId: String)

    /**
     * @param sourceRegion The ID of the region that contains the source DB instance for the read
     * replica.
     */
    public fun sourceRegion(sourceRegion: String)

    /**
     * @param storageEncrypted A value that indicates whether the DB instance is encrypted. By
     * default, it isn't encrypted.
     * If you specify the `KmsKeyId` property, then you must enable encryption.
     *
     * If you specify the `SourceDBInstanceIdentifier` or `SourceDbiResourceId` property, don't
     * specify this property. The value is inherited from the source DB instance, and if the DB
     * instance is encrypted, the specified `KmsKeyId` property is used.
     *
     * If you specify the `SourceDBInstanceAutomatedBackupsArn` property, don't specify this
     * property. The value is inherited from the source DB instance automated backup.
     *
     * If you specify `DBSnapshotIdentifier` property, don't specify this property. The value is
     * inherited from the snapshot.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The encryption for DB instances is managed by the DB cluster.
     */
    public fun storageEncrypted(storageEncrypted: Boolean)

    /**
     * @param storageEncrypted A value that indicates whether the DB instance is encrypted. By
     * default, it isn't encrypted.
     * If you specify the `KmsKeyId` property, then you must enable encryption.
     *
     * If you specify the `SourceDBInstanceIdentifier` or `SourceDbiResourceId` property, don't
     * specify this property. The value is inherited from the source DB instance, and if the DB
     * instance is encrypted, the specified `KmsKeyId` property is used.
     *
     * If you specify the `SourceDBInstanceAutomatedBackupsArn` property, don't specify this
     * property. The value is inherited from the source DB instance automated backup.
     *
     * If you specify `DBSnapshotIdentifier` property, don't specify this property. The value is
     * inherited from the snapshot.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The encryption for DB instances is managed by the DB cluster.
     */
    public fun storageEncrypted(storageEncrypted: IResolvable)

    /**
     * @param storageThroughput Specifies the storage throughput value for the DB instance. This
     * setting applies only to the `gp3` storage type.
     * This setting doesn't apply to RDS Custom or Amazon Aurora.
     */
    public fun storageThroughput(storageThroughput: Number)

    /**
     * @param storageType The storage type to associate with the DB instance.
     * If you specify `io1` , `io2` , or `gp3` , you must also include a value for the `Iops`
     * parameter.
     *
     * This setting doesn't apply to Amazon Aurora DB instances. Storage is managed by the DB
     * cluster.
     *
     * Valid Values: `gp2 | gp3 | io1 | io2 | standard`
     *
     * Default: `io1` , if the `Iops` parameter is specified. Otherwise, `gp2` .
     */
    public fun storageType(storageType: String)

    /**
     * @param tags Tags to assign to the DB instance.
     */
    public fun tags(tags: List)

    /**
     * @param tags Tags to assign to the DB instance.
     */
    public fun tags(vararg tags: CfnTag)

    /**
     * @param tdeCredentialArn the value to be set.
     * @deprecated this property has been deprecated
     */
    @Deprecated(message = "deprecated in CDK")
    public fun tdeCredentialArn(tdeCredentialArn: String)

    /**
     * @param tdeCredentialPassword the value to be set.
     * @deprecated this property has been deprecated
     */
    @Deprecated(message = "deprecated in CDK")
    public fun tdeCredentialPassword(tdeCredentialPassword: String)

    /**
     * @param timezone The time zone of the DB instance.
     * The time zone parameter is currently supported only by [RDS for
     * Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone) and [RDS for SQL
     * Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone)
     * .
     */
    public fun timezone(timezone: String)

    /**
     * @param useDefaultProcessorFeatures Specifies whether the DB instance class of the DB instance
     * uses its default processor features.
     * This setting doesn't apply to RDS Custom DB instances.
     */
    public fun useDefaultProcessorFeatures(useDefaultProcessorFeatures: Boolean)

    /**
     * @param useDefaultProcessorFeatures Specifies whether the DB instance class of the DB instance
     * uses its default processor features.
     * This setting doesn't apply to RDS Custom DB instances.
     */
    public fun useDefaultProcessorFeatures(useDefaultProcessorFeatures: IResolvable)

    /**
     * @param useLatestRestorableTime Specifies whether the DB instance is restored from the latest
     * backup time.
     * By default, the DB instance isn't restored from the latest backup time. This parameter
     * applies to point-in-time recovery. For more information, see [Restoring a DB instance to a
     * specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in
     * the *Amazon RDS User Guide* .
     *
     * Constraints:
     *
     * * Can't be specified if the `RestoreTime` parameter is provided.
     */
    public fun useLatestRestorableTime(useLatestRestorableTime: Boolean)

    /**
     * @param useLatestRestorableTime Specifies whether the DB instance is restored from the latest
     * backup time.
     * By default, the DB instance isn't restored from the latest backup time. This parameter
     * applies to point-in-time recovery. For more information, see [Restoring a DB instance to a
     * specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in
     * the *Amazon RDS User Guide* .
     *
     * Constraints:
     *
     * * Can't be specified if the `RestoreTime` parameter is provided.
     */
    public fun useLatestRestorableTime(useLatestRestorableTime: IResolvable)

    /**
     * @param vpcSecurityGroups A list of the VPC security group IDs to assign to the DB instance.
     * The list can include both the physical IDs of existing VPC security groups and references to
     * [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)
     * resources created in the template.
     *
     * If you plan to update the resource, don't specify VPC security groups in a shared VPC.
     *
     * If you set `VPCSecurityGroups` , you must not set
     * [`DBSecurityGroups`](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
     * , and vice versa.
     *
     *
     * You can migrate a DB instance in your stack from an RDS DB security group to a VPC security
     * group, but keep the following in mind:
     *
     * * You can't revert to using an RDS security group after you establish a VPC security group
     * membership.
     * * When you migrate your DB instance to VPC security groups, if your stack update rolls back
     * because the DB instance update fails or because an update fails in another AWS CloudFormation
     * resource, the rollback fails because it can't revert to an RDS security group.
     * * To use the properties that are available when you use a VPC security group, you must
     * recreate the DB instance. If you don't, AWS CloudFormation submits only the property values that
     * are listed in the
     * [`DBSecurityGroups`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
     * property.
     *
     *
     * To avoid this situation, migrate your DB instance to using VPC security groups only when that
     * is the only change in your stack template.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster.
     * If specified, the setting must match the DB cluster setting.
     */
    public fun vpcSecurityGroups(vpcSecurityGroups: List)

    /**
     * @param vpcSecurityGroups A list of the VPC security group IDs to assign to the DB instance.
     * The list can include both the physical IDs of existing VPC security groups and references to
     * [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)
     * resources created in the template.
     *
     * If you plan to update the resource, don't specify VPC security groups in a shared VPC.
     *
     * If you set `VPCSecurityGroups` , you must not set
     * [`DBSecurityGroups`](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
     * , and vice versa.
     *
     *
     * You can migrate a DB instance in your stack from an RDS DB security group to a VPC security
     * group, but keep the following in mind:
     *
     * * You can't revert to using an RDS security group after you establish a VPC security group
     * membership.
     * * When you migrate your DB instance to VPC security groups, if your stack update rolls back
     * because the DB instance update fails or because an update fails in another AWS CloudFormation
     * resource, the rollback fails because it can't revert to an RDS security group.
     * * To use the properties that are available when you use a VPC security group, you must
     * recreate the DB instance. If you don't, AWS CloudFormation submits only the property values that
     * are listed in the
     * [`DBSecurityGroups`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
     * property.
     *
     *
     * To avoid this situation, migrate your DB instance to using VPC security groups only when that
     * is the only change in your stack template.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster.
     * If specified, the setting must match the DB cluster setting.
     */
    public fun vpcSecurityGroups(vararg vpcSecurityGroups: String)
  }

  private class BuilderImpl : Builder {
    private val cdkBuilder: software.amazon.awscdk.services.rds.CfnDBInstanceProps.Builder =
        software.amazon.awscdk.services.rds.CfnDBInstanceProps.builder()

    /**
     * @param allocatedStorage The amount of storage in gibibytes (GiB) to be initially allocated
     * for the database instance.
     *
     * If any value is set in the `Iops` parameter, `AllocatedStorage` must be at least 100 GiB,
     * which corresponds to the minimum Iops value of 1,000. If you increase the `Iops` value (in 1,000
     * IOPS increments), then you must also increase the `AllocatedStorage` value (in 100-GiB
     * increments).
     *
     *
     * *Amazon Aurora*
     *
     * Not applicable. Aurora cluster volumes automatically grow as the amount of data in your
     * database increases, though you are only charged for the space that you use in an Aurora cluster
     * volume.
     *
     * *Db2*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp3): Must be an integer from 20 to 64000.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 64000.
     *
     * *MySQL*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 5 to 3072.
     *
     * *MariaDB*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 5 to 3072.
     *
     * *PostgreSQL*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 5 to 3072.
     *
     * *Oracle*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 10 to 3072.
     *
     * *SQL Server*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2):
     * * Enterprise and Standard editions: Must be an integer from 20 to 16384.
     * * Web and Express editions: Must be an integer from 20 to 16384.
     * * Provisioned IOPS storage (io1):
     * * Enterprise and Standard editions: Must be an integer from 20 to 16384.
     * * Web and Express editions: Must be an integer from 20 to 16384.
     * * Magnetic storage (standard):
     * * Enterprise and Standard editions: Must be an integer from 20 to 1024.
     * * Web and Express editions: Must be an integer from 20 to 1024.
     */
    override fun allocatedStorage(allocatedStorage: String) {
      cdkBuilder.allocatedStorage(allocatedStorage)
    }

    /**
     * @param allowMajorVersionUpgrade A value that indicates whether major version upgrades are
     * allowed.
     * Changing this parameter doesn't result in an outage and the change is asynchronously applied
     * as soon as possible.
     *
     * Constraints: Major version upgrades must be allowed when specifying a value for the
     * `EngineVersion` parameter that is a different major version than the DB instance's current
     * version.
     */
    override fun allowMajorVersionUpgrade(allowMajorVersionUpgrade: Boolean) {
      cdkBuilder.allowMajorVersionUpgrade(allowMajorVersionUpgrade)
    }

    /**
     * @param allowMajorVersionUpgrade A value that indicates whether major version upgrades are
     * allowed.
     * Changing this parameter doesn't result in an outage and the change is asynchronously applied
     * as soon as possible.
     *
     * Constraints: Major version upgrades must be allowed when specifying a value for the
     * `EngineVersion` parameter that is a different major version than the DB instance's current
     * version.
     */
    override fun allowMajorVersionUpgrade(allowMajorVersionUpgrade: IResolvable) {
      cdkBuilder.allowMajorVersionUpgrade(allowMajorVersionUpgrade.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param associatedRoles The AWS Identity and Access Management (IAM) roles associated with the
     * DB instance.
     * *Amazon Aurora*
     *
     * Not applicable. The associated roles are managed by the DB cluster.
     */
    override fun associatedRoles(associatedRoles: IResolvable) {
      cdkBuilder.associatedRoles(associatedRoles.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param associatedRoles The AWS Identity and Access Management (IAM) roles associated with the
     * DB instance.
     * *Amazon Aurora*
     *
     * Not applicable. The associated roles are managed by the DB cluster.
     */
    override fun associatedRoles(associatedRoles: List) {
      cdkBuilder.associatedRoles(associatedRoles.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param associatedRoles The AWS Identity and Access Management (IAM) roles associated with the
     * DB instance.
     * *Amazon Aurora*
     *
     * Not applicable. The associated roles are managed by the DB cluster.
     */
    override fun associatedRoles(vararg associatedRoles: Any): Unit =
        associatedRoles(associatedRoles.toList())

    /**
     * @param autoMinorVersionUpgrade A value that indicates whether minor engine upgrades are
     * applied automatically to the DB instance during the maintenance window.
     * By default, minor engine upgrades are applied automatically.
     */
    override fun autoMinorVersionUpgrade(autoMinorVersionUpgrade: Boolean) {
      cdkBuilder.autoMinorVersionUpgrade(autoMinorVersionUpgrade)
    }

    /**
     * @param autoMinorVersionUpgrade A value that indicates whether minor engine upgrades are
     * applied automatically to the DB instance during the maintenance window.
     * By default, minor engine upgrades are applied automatically.
     */
    override fun autoMinorVersionUpgrade(autoMinorVersionUpgrade: IResolvable) {
      cdkBuilder.autoMinorVersionUpgrade(autoMinorVersionUpgrade.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param automaticBackupReplicationKmsKeyId The AWS KMS key identifier for encryption of the
     * replicated automated backups.
     * The KMS key ID is the Amazon Resource Name (ARN) for the KMS encryption key in the
     * destination AWS Region , for example,
     * `arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE` .
     */
    override fun automaticBackupReplicationKmsKeyId(automaticBackupReplicationKmsKeyId: String) {
      cdkBuilder.automaticBackupReplicationKmsKeyId(automaticBackupReplicationKmsKeyId)
    }

    /**
     * @param automaticBackupReplicationRegion The AWS Region associated with the automated backup.
     */
    override fun automaticBackupReplicationRegion(automaticBackupReplicationRegion: String) {
      cdkBuilder.automaticBackupReplicationRegion(automaticBackupReplicationRegion)
    }

    /**
     * @param availabilityZone The Availability Zone (AZ) where the database will be created.
     * For information on AWS Regions and Availability Zones, see [Regions and Availability
     * Zones](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html)
     * .
     *
     * For Amazon Aurora, each Aurora DB cluster hosts copies of its storage in three separate
     * Availability Zones. Specify one of these Availability Zones. Aurora automatically chooses an
     * appropriate Availability Zone if you don't specify one.
     *
     * Default: A random, system-chosen Availability Zone in the endpoint's AWS Region .
     *
     * Constraints:
     *
     * * The `AvailabilityZone` parameter can't be specified if the DB instance is a Multi-AZ
     * deployment.
     * * The specified Availability Zone must be in the same AWS Region as the current endpoint.
     *
     * Example: `us-east-1d`
     */
    override fun availabilityZone(availabilityZone: String) {
      cdkBuilder.availabilityZone(availabilityZone)
    }

    /**
     * @param backupRetentionPeriod The number of days for which automated backups are retained.
     * Setting this parameter to a positive number enables backups. Setting this parameter to 0
     * disables automated backups.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The retention period for automated backups is managed by the DB cluster.
     *
     * Default: 1
     *
     * Constraints:
     *
     * * Must be a value from 0 to 35
     * * Can't be set to 0 if the DB instance is a source to read replicas
     */
    override fun backupRetentionPeriod(backupRetentionPeriod: Number) {
      cdkBuilder.backupRetentionPeriod(backupRetentionPeriod)
    }

    /**
     * @param caCertificateIdentifier The identifier of the CA certificate for this DB instance.
     * For more information, see [Using SSL/TLS to encrypt a connection to a DB
     * instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) in the
     * *Amazon RDS User Guide* and [Using SSL/TLS to encrypt a connection to a DB
     * cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html) in
     * the *Amazon Aurora User Guide* .
     */
    override fun caCertificateIdentifier(caCertificateIdentifier: String) {
      cdkBuilder.caCertificateIdentifier(caCertificateIdentifier)
    }

    /**
     * @param certificateDetails The details of the DB instance's server certificate.
     */
    override fun certificateDetails(certificateDetails: IResolvable) {
      cdkBuilder.certificateDetails(certificateDetails.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param certificateDetails The details of the DB instance's server certificate.
     */
    override fun certificateDetails(certificateDetails: CfnDBInstance.CertificateDetailsProperty) {
      cdkBuilder.certificateDetails(certificateDetails.let(CfnDBInstance.CertificateDetailsProperty.Companion::unwrap))
    }

    /**
     * @param certificateDetails The details of the DB instance's server certificate.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("a28138b43a7cdc1c509818c0a0be65dc8ab95a94f0468fe9a64f453036e07923")
    override
        fun certificateDetails(certificateDetails: CfnDBInstance.CertificateDetailsProperty.Builder.() -> Unit):
        Unit = certificateDetails(CfnDBInstance.CertificateDetailsProperty(certificateDetails))

    /**
     * @param certificateRotationRestart Specifies whether the DB instance is restarted when you
     * rotate your SSL/TLS certificate.
     * By default, the DB instance is restarted when you rotate your SSL/TLS certificate. The
     * certificate is not updated until the DB instance is restarted.
     *
     *
     * Set this parameter only if you are *not* using SSL/TLS to connect to the DB instance.
     *
     *
     * If you are using SSL/TLS to connect to the DB instance, follow the appropriate instructions
     * for your DB engine to rotate your SSL/TLS certificate:
     *
     * * For more information about rotating your SSL/TLS certificate for RDS DB engines, see
     * [Rotating Your SSL/TLS
     * Certificate.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html)
     * in the *Amazon RDS User Guide.*
     * * For more information about rotating your SSL/TLS certificate for Aurora DB engines, see
     * [Rotating Your SSL/TLS
     * Certificate](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html)
     * in the *Amazon Aurora User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     */
    override fun certificateRotationRestart(certificateRotationRestart: Boolean) {
      cdkBuilder.certificateRotationRestart(certificateRotationRestart)
    }

    /**
     * @param certificateRotationRestart Specifies whether the DB instance is restarted when you
     * rotate your SSL/TLS certificate.
     * By default, the DB instance is restarted when you rotate your SSL/TLS certificate. The
     * certificate is not updated until the DB instance is restarted.
     *
     *
     * Set this parameter only if you are *not* using SSL/TLS to connect to the DB instance.
     *
     *
     * If you are using SSL/TLS to connect to the DB instance, follow the appropriate instructions
     * for your DB engine to rotate your SSL/TLS certificate:
     *
     * * For more information about rotating your SSL/TLS certificate for RDS DB engines, see
     * [Rotating Your SSL/TLS
     * Certificate.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html)
     * in the *Amazon RDS User Guide.*
     * * For more information about rotating your SSL/TLS certificate for Aurora DB engines, see
     * [Rotating Your SSL/TLS
     * Certificate](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html)
     * in the *Amazon Aurora User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     */
    override fun certificateRotationRestart(certificateRotationRestart: IResolvable) {
      cdkBuilder.certificateRotationRestart(certificateRotationRestart.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param characterSetName For supported engines, indicates that the DB instance should be
     * associated with the specified character set.
     * *Amazon Aurora*
     *
     * Not applicable. The character set is managed by the DB cluster. For more information, see
     * [AWS::RDS::DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html)
     * .
     */
    override fun characterSetName(characterSetName: String) {
      cdkBuilder.characterSetName(characterSetName)
    }

    /**
     * @param copyTagsToSnapshot Specifies whether to copy tags from the DB instance to snapshots of
     * the DB instance.
     * By default, tags are not copied.
     *
     * This setting doesn't apply to Amazon Aurora DB instances. Copying tags to snapshots is
     * managed by the DB cluster. Setting this value for an Aurora DB instance has no effect on the DB
     * cluster setting.
     */
    override fun copyTagsToSnapshot(copyTagsToSnapshot: Boolean) {
      cdkBuilder.copyTagsToSnapshot(copyTagsToSnapshot)
    }

    /**
     * @param copyTagsToSnapshot Specifies whether to copy tags from the DB instance to snapshots of
     * the DB instance.
     * By default, tags are not copied.
     *
     * This setting doesn't apply to Amazon Aurora DB instances. Copying tags to snapshots is
     * managed by the DB cluster. Setting this value for an Aurora DB instance has no effect on the DB
     * cluster setting.
     */
    override fun copyTagsToSnapshot(copyTagsToSnapshot: IResolvable) {
      cdkBuilder.copyTagsToSnapshot(copyTagsToSnapshot.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param customIamInstanceProfile The instance profile associated with the underlying Amazon
     * EC2 instance of an RDS Custom DB instance.
     * This setting is required for RDS Custom.
     *
     * Constraints:
     *
     * * The profile must exist in your account.
     * * The profile must have an IAM role that Amazon EC2 has permissions to assume.
     * * The instance profile name and the associated IAM role name must start with the prefix
     * `AWSRDSCustom` .
     *
     * For the list of permissions required for the IAM role, see [Configure IAM and your
     * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc)
     * in the *Amazon RDS User Guide* .
     */
    override fun customIamInstanceProfile(customIamInstanceProfile: String) {
      cdkBuilder.customIamInstanceProfile(customIamInstanceProfile)
    }

    /**
     * @param dbClusterIdentifier The identifier of the DB cluster that this DB instance will belong
     * to.
     * This setting doesn't apply to RDS Custom DB instances.
     */
    override fun dbClusterIdentifier(dbClusterIdentifier: String) {
      cdkBuilder.dbClusterIdentifier(dbClusterIdentifier)
    }

    /**
     * @param dbClusterSnapshotIdentifier The identifier for the Multi-AZ DB cluster snapshot to
     * restore from.
     * For more information on Multi-AZ DB clusters, see [Multi-AZ DB cluster
     * deployments](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
     * in the *Amazon RDS User Guide* .
     *
     * Constraints:
     *
     * * Must match the identifier of an existing Multi-AZ DB cluster snapshot.
     * * Can't be specified when `DBSnapshotIdentifier` is specified.
     * * Must be specified when `DBSnapshotIdentifier` isn't specified.
     * * If you are restoring from a shared manual Multi-AZ DB cluster snapshot, the
     * `DBClusterSnapshotIdentifier` must be the ARN of the shared snapshot.
     * * Can't be the identifier of an Aurora DB cluster snapshot.
     */
    override fun dbClusterSnapshotIdentifier(dbClusterSnapshotIdentifier: String) {
      cdkBuilder.dbClusterSnapshotIdentifier(dbClusterSnapshotIdentifier)
    }

    /**
     * @param dbInstanceClass The compute and memory capacity of the DB instance, for example
     * `db.m5.large` . Not all DB instance classes are available in all AWS Regions , or for all
     * database engines. For the full list of DB instance classes, and availability for your engine,
     * see [DB instance
     * classes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
     * in the *Amazon RDS User Guide* or [Aurora DB instance
     * classes](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html)
     * in the *Amazon Aurora User Guide* .
     */
    override fun dbInstanceClass(dbInstanceClass: String) {
      cdkBuilder.dbInstanceClass(dbInstanceClass)
    }

    /**
     * @param dbInstanceIdentifier A name for the DB instance.
     * If you specify a name, AWS CloudFormation converts it to lowercase. If you don't specify a
     * name, AWS CloudFormation generates a unique physical ID and uses that ID for the DB instance.
     * For more information, see [Name
     * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     *
     * For information about constraints that apply to DB instance identifiers, see [Naming
     * constraints in Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints)
     * in the *Amazon RDS User Guide* .
     *
     *
     * If you specify a name, you can't perform updates that require replacement of this resource.
     * You can perform updates that require no or some interruption. If you must replace the resource,
     * specify a new name.
     */
    override fun dbInstanceIdentifier(dbInstanceIdentifier: String) {
      cdkBuilder.dbInstanceIdentifier(dbInstanceIdentifier)
    }

    /**
     * @param dbName The meaning of this parameter differs according to the database engine you use.
     *
     * If you specify the
     * `[DBSnapshotIdentifier](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsnapshotidentifier)`
     * property, this property only applies to RDS for Oracle.
     *
     *
     * *Amazon Aurora*
     *
     * Not applicable. The database name is managed by the DB cluster.
     *
     * *Db2*
     *
     * The name of the database to create when the DB instance is created. If this parameter isn't
     * specified, no database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must contain 1 to 64 letters or numbers.
     * * Must begin with a letter. Subsequent characters can be letters, underscores, or digits
     * (0-9).
     * * Can't be a word reserved by the specified database engine.
     *
     * *MySQL*
     *
     * The name of the database to create when the DB instance is created. If this parameter is not
     * specified, no database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must contain 1 to 64 letters or numbers.
     * * Can't be a word reserved by the specified database engine
     *
     * *MariaDB*
     *
     * The name of the database to create when the DB instance is created. If this parameter is not
     * specified, no database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must contain 1 to 64 letters or numbers.
     * * Can't be a word reserved by the specified database engine
     *
     * *PostgreSQL*
     *
     * The name of the database to create when the DB instance is created. If this parameter is not
     * specified, the default `postgres` database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must begin with a letter. Subsequent characters can be letters, underscores, or digits
     * (0-9).
     * * Must contain 1 to 63 characters.
     * * Can't be a word reserved by the specified database engine
     *
     * *Oracle*
     *
     * The Oracle System ID (SID) of the created DB instance. If you specify `null` , the default
     * value `ORCL` is used. You can't specify the string NULL, or any other reserved word, for
     * `DBName` .
     *
     * Default: `ORCL`
     *
     * Constraints:
     *
     * * Can't be longer than 8 characters
     *
     * *SQL Server*
     *
     * Not applicable. Must be null.
     */
    override fun dbName(dbName: String) {
      cdkBuilder.dbName(dbName)
    }

    /**
     * @param dbParameterGroupName The name of an existing DB parameter group or a reference to an
     * [AWS::RDS::DBParameterGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html)
     * resource created in the template.
     * To list all of the available DB parameter group names, use the following command:
     *
     * `aws rds describe-db-parameter-groups --query
     * "DBParameterGroups[].DBParameterGroupName" --output text`
     *
     *
     * If any of the data members of the referenced parameter group are changed during an update,
     * the DB instance might need to be restarted, which causes some interruption. If the parameter
     * group contains static parameters, whether they were changed or not, an update triggers a reboot.
     *
     *
     * If you don't specify a value for `DBParameterGroupName` property, the default DB parameter
     * group for the specified engine and engine version is used.
     */
    override fun dbParameterGroupName(dbParameterGroupName: String) {
      cdkBuilder.dbParameterGroupName(dbParameterGroupName)
    }

    /**
     * @param dbSecurityGroups A list of the DB security groups to assign to the DB instance.
     * The list can include both the name of existing DB security groups or references to
     * AWS::RDS::DBSecurityGroup resources created in the template.
     *
     * If you set DBSecurityGroups, you must not set VPCSecurityGroups, and vice versa. Also, note
     * that the DBSecurityGroups property exists only for backwards compatibility with older regions
     * and is no longer recommended for providing security information to an RDS DB instance. Instead,
     * use VPCSecurityGroups.
     *
     *
     * If you specify this property, AWS CloudFormation sends only the following properties (if
     * specified) to Amazon RDS during create operations:
     *
     * * `AllocatedStorage`
     * * `AutoMinorVersionUpgrade`
     * * `AvailabilityZone`
     * * `BackupRetentionPeriod`
     * * `CharacterSetName`
     * * `DBInstanceClass`
     * * `DBName`
     * * `DBParameterGroupName`
     * * `DBSecurityGroups`
     * * `DBSubnetGroupName`
     * * `Engine`
     * * `EngineVersion`
     * * `Iops`
     * * `LicenseModel`
     * * `MasterUsername`
     * * `MasterUserPassword`
     * * `MultiAZ`
     * * `OptionGroupName`
     * * `PreferredBackupWindow`
     * * `PreferredMaintenanceWindow`
     *
     * All other properties are ignored. Specify a virtual private cloud (VPC) security group if you
     * want to submit other properties, such as `StorageType` , `StorageEncrypted` , or `KmsKeyId` . If
     * you're already using the `DBSecurityGroups` property, you can't use these other properties by
     * updating your DB instance to use a VPC security group. You must recreate the DB instance.
     */
    override fun dbSecurityGroups(dbSecurityGroups: List) {
      cdkBuilder.dbSecurityGroups(dbSecurityGroups)
    }

    /**
     * @param dbSecurityGroups A list of the DB security groups to assign to the DB instance.
     * The list can include both the name of existing DB security groups or references to
     * AWS::RDS::DBSecurityGroup resources created in the template.
     *
     * If you set DBSecurityGroups, you must not set VPCSecurityGroups, and vice versa. Also, note
     * that the DBSecurityGroups property exists only for backwards compatibility with older regions
     * and is no longer recommended for providing security information to an RDS DB instance. Instead,
     * use VPCSecurityGroups.
     *
     *
     * If you specify this property, AWS CloudFormation sends only the following properties (if
     * specified) to Amazon RDS during create operations:
     *
     * * `AllocatedStorage`
     * * `AutoMinorVersionUpgrade`
     * * `AvailabilityZone`
     * * `BackupRetentionPeriod`
     * * `CharacterSetName`
     * * `DBInstanceClass`
     * * `DBName`
     * * `DBParameterGroupName`
     * * `DBSecurityGroups`
     * * `DBSubnetGroupName`
     * * `Engine`
     * * `EngineVersion`
     * * `Iops`
     * * `LicenseModel`
     * * `MasterUsername`
     * * `MasterUserPassword`
     * * `MultiAZ`
     * * `OptionGroupName`
     * * `PreferredBackupWindow`
     * * `PreferredMaintenanceWindow`
     *
     * All other properties are ignored. Specify a virtual private cloud (VPC) security group if you
     * want to submit other properties, such as `StorageType` , `StorageEncrypted` , or `KmsKeyId` . If
     * you're already using the `DBSecurityGroups` property, you can't use these other properties by
     * updating your DB instance to use a VPC security group. You must recreate the DB instance.
     */
    override fun dbSecurityGroups(vararg dbSecurityGroups: String): Unit =
        dbSecurityGroups(dbSecurityGroups.toList())

    /**
     * @param dbSnapshotIdentifier The name or Amazon Resource Name (ARN) of the DB snapshot that's
     * used to restore the DB instance.
     * If you're restoring from a shared manual DB snapshot, you must specify the ARN of the
     * snapshot.
     *
     * By specifying this property, you can create a DB instance from the specified DB snapshot. If
     * the `DBSnapshotIdentifier` property is an empty string or the `AWS::RDS::DBInstance` declaration
     * has no `DBSnapshotIdentifier` property, AWS CloudFormation creates a new database. If the
     * property contains a value (other than an empty string), AWS CloudFormation creates a database
     * from the specified snapshot. If a snapshot with the specified name doesn't exist, AWS
     * CloudFormation can't create the database and it rolls back the stack.
     *
     * Some DB instance properties aren't valid when you restore from a snapshot, such as the
     * `MasterUsername` and `MasterUserPassword` properties. For information about the properties that
     * you can specify, see the `RestoreDBInstanceFromDBSnapshot` action in the *Amazon RDS API
     * Reference* .
     *
     * After you restore a DB instance with a `DBSnapshotIdentifier` property, you must specify the
     * same `DBSnapshotIdentifier` property for any future updates to the DB instance. When you specify
     * this property for an update, the DB instance is not restored from the DB snapshot again, and the
     * data in the database is not changed. However, if you don't specify the `DBSnapshotIdentifier`
     * property, an empty DB instance is created, and the original DB instance is deleted. If you
     * specify a property that is different from the previous snapshot restore property, a new DB
     * instance is restored from the specified `DBSnapshotIdentifier` property, and the original DB
     * instance is deleted.
     *
     * If you specify the `DBSnapshotIdentifier` property to restore a DB instance (as opposed to
     * specifying it for DB instance updates), then don't specify the following properties:
     *
     * * `CharacterSetName`
     * * `DBClusterIdentifier`
     * * `DBName`
     * * `DeleteAutomatedBackups`
     * * `KmsKeyId`
     * * `MasterUsername`
     * * `MasterUserPassword`
     * * `PerformanceInsightsKMSKeyId`
     * * `PerformanceInsightsRetentionPeriod`
     * * `PromotionTier`
     * * `SourceDBInstanceIdentifier`
     * * `SourceRegion`
     * * `StorageEncrypted` (for an encrypted snapshot)
     * * `Timezone`
     *
     * *Amazon Aurora*
     *
     * Not applicable. Snapshot restore is managed by the DB cluster.
     */
    override fun dbSnapshotIdentifier(dbSnapshotIdentifier: String) {
      cdkBuilder.dbSnapshotIdentifier(dbSnapshotIdentifier)
    }

    /**
     * @param dbSubnetGroupName A DB subnet group to associate with the DB instance.
     * If you update this value, the new subnet group must be a subnet group in a new VPC.
     *
     * If there's no DB subnet group, then the DB instance isn't a VPC DB instance.
     *
     * For more information about using Amazon RDS in a VPC, see [Amazon VPC and Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS
     * User Guide* .
     *
     * This setting doesn't apply to Amazon Aurora DB instances. The DB subnet group is managed by
     * the DB cluster. If specified, the setting must match the DB cluster setting.
     */
    override fun dbSubnetGroupName(dbSubnetGroupName: String) {
      cdkBuilder.dbSubnetGroupName(dbSubnetGroupName)
    }

    /**
     * @param dedicatedLogVolume Indicates whether the DB instance has a dedicated log volume (DLV)
     * enabled.
     */
    override fun dedicatedLogVolume(dedicatedLogVolume: Boolean) {
      cdkBuilder.dedicatedLogVolume(dedicatedLogVolume)
    }

    /**
     * @param dedicatedLogVolume Indicates whether the DB instance has a dedicated log volume (DLV)
     * enabled.
     */
    override fun dedicatedLogVolume(dedicatedLogVolume: IResolvable) {
      cdkBuilder.dedicatedLogVolume(dedicatedLogVolume.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param deleteAutomatedBackups A value that indicates whether to remove automated backups
     * immediately after the DB instance is deleted.
     * This parameter isn't case-sensitive. The default is to remove automated backups immediately
     * after the DB instance is deleted.
     *
     * *Amazon Aurora*
     *
     * Not applicable. When you delete a DB cluster, all automated backups for that DB cluster are
     * deleted and can't be recovered. Manual DB cluster snapshots of the DB cluster are not deleted.
     */
    override fun deleteAutomatedBackups(deleteAutomatedBackups: Boolean) {
      cdkBuilder.deleteAutomatedBackups(deleteAutomatedBackups)
    }

    /**
     * @param deleteAutomatedBackups A value that indicates whether to remove automated backups
     * immediately after the DB instance is deleted.
     * This parameter isn't case-sensitive. The default is to remove automated backups immediately
     * after the DB instance is deleted.
     *
     * *Amazon Aurora*
     *
     * Not applicable. When you delete a DB cluster, all automated backups for that DB cluster are
     * deleted and can't be recovered. Manual DB cluster snapshots of the DB cluster are not deleted.
     */
    override fun deleteAutomatedBackups(deleteAutomatedBackups: IResolvable) {
      cdkBuilder.deleteAutomatedBackups(deleteAutomatedBackups.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param deletionProtection Specifies whether the DB instance has deletion protection enabled.
     * The database can't be deleted when deletion protection is enabled. By default, deletion
     * protection isn't enabled. For more information, see [Deleting a DB
     * Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html) .
     *
     * This setting doesn't apply to Amazon Aurora DB instances. You can enable or disable deletion
     * protection for the DB cluster. For more information, see `CreateDBCluster` . DB instances in a
     * DB cluster can be deleted even when deletion protection is enabled for the DB cluster.
     */
    override fun deletionProtection(deletionProtection: Boolean) {
      cdkBuilder.deletionProtection(deletionProtection)
    }

    /**
     * @param deletionProtection Specifies whether the DB instance has deletion protection enabled.
     * The database can't be deleted when deletion protection is enabled. By default, deletion
     * protection isn't enabled. For more information, see [Deleting a DB
     * Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html) .
     *
     * This setting doesn't apply to Amazon Aurora DB instances. You can enable or disable deletion
     * protection for the DB cluster. For more information, see `CreateDBCluster` . DB instances in a
     * DB cluster can be deleted even when deletion protection is enabled for the DB cluster.
     */
    override fun deletionProtection(deletionProtection: IResolvable) {
      cdkBuilder.deletionProtection(deletionProtection.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param domain The Active Directory directory ID to create the DB instance in.
     * Currently, only Db2, MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB instances can be
     * created in an Active Directory Domain.
     *
     * For more information, see [Kerberos
     * Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html)
     * in the *Amazon RDS User Guide* .
     */
    override fun domain(domain: String) {
      cdkBuilder.domain(domain)
    }

    /**
     * @param domainAuthSecretArn The ARN for the Secrets Manager secret with the credentials for
     * the user joining the domain.
     * Example:
     * `arn:aws:secretsmanager:region:account-number:secret:myselfmanagedADtestsecret-123456`
     */
    override fun domainAuthSecretArn(domainAuthSecretArn: String) {
      cdkBuilder.domainAuthSecretArn(domainAuthSecretArn)
    }

    /**
     * @param domainDnsIps The IPv4 DNS IP addresses of your primary and secondary Active Directory
     * domain controllers.
     * Constraints:
     *
     * * Two IP addresses must be provided. If there isn't a secondary domain controller, use the IP
     * address of the primary domain controller for both entries in the list.
     *
     * Example: `123.124.125.126,234.235.236.237`
     */
    override fun domainDnsIps(domainDnsIps: List) {
      cdkBuilder.domainDnsIps(domainDnsIps)
    }

    /**
     * @param domainDnsIps The IPv4 DNS IP addresses of your primary and secondary Active Directory
     * domain controllers.
     * Constraints:
     *
     * * Two IP addresses must be provided. If there isn't a secondary domain controller, use the IP
     * address of the primary domain controller for both entries in the list.
     *
     * Example: `123.124.125.126,234.235.236.237`
     */
    override fun domainDnsIps(vararg domainDnsIps: String): Unit =
        domainDnsIps(domainDnsIps.toList())

    /**
     * @param domainFqdn The fully qualified domain name (FQDN) of an Active Directory domain.
     * Constraints:
     *
     * * Can't be longer than 64 characters.
     *
     * Example: `mymanagedADtest.mymanagedAD.mydomain`
     */
    override fun domainFqdn(domainFqdn: String) {
      cdkBuilder.domainFqdn(domainFqdn)
    }

    /**
     * @param domainIamRoleName The name of the IAM role to use when making API calls to the
     * Directory Service.
     * This setting doesn't apply to the following DB instances:
     *
     * * Amazon Aurora (The domain is managed by the DB cluster.)
     * * RDS Custom
     */
    override fun domainIamRoleName(domainIamRoleName: String) {
      cdkBuilder.domainIamRoleName(domainIamRoleName)
    }

    /**
     * @param domainOu The Active Directory organizational unit for your DB instance to join.
     * Constraints:
     *
     * * Must be in the distinguished name format.
     * * Can't be longer than 64 characters.
     *
     * Example: `OU=mymanagedADtestOU,DC=mymanagedADtest,DC=mymanagedAD,DC=mydomain`
     */
    override fun domainOu(domainOu: String) {
      cdkBuilder.domainOu(domainOu)
    }

    /**
     * @param enableCloudwatchLogsExports The list of log types that need to be enabled for
     * exporting to CloudWatch Logs.
     * The values in the list depend on the DB engine being used. For more information, see
     * [Publishing Database Logs to Amazon CloudWatch
     * Logs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
     * in the *Amazon Relational Database Service User Guide* .
     *
     * *Amazon Aurora*
     *
     * Not applicable. CloudWatch Logs exports are managed by the DB cluster.
     *
     * *Db2*
     *
     * Valid values: `diag.log` , `notify.log`
     *
     * *MariaDB*
     *
     * Valid values: `audit` , `error` , `general` , `slowquery`
     *
     * *Microsoft SQL Server*
     *
     * Valid values: `agent` , `error`
     *
     * *MySQL*
     *
     * Valid values: `audit` , `error` , `general` , `slowquery`
     *
     * *Oracle*
     *
     * Valid values: `alert` , `audit` , `listener` , `trace` , `oemagent`
     *
     * *PostgreSQL*
     *
     * Valid values: `postgresql` , `upgrade`
     */
    override fun enableCloudwatchLogsExports(enableCloudwatchLogsExports: List) {
      cdkBuilder.enableCloudwatchLogsExports(enableCloudwatchLogsExports)
    }

    /**
     * @param enableCloudwatchLogsExports The list of log types that need to be enabled for
     * exporting to CloudWatch Logs.
     * The values in the list depend on the DB engine being used. For more information, see
     * [Publishing Database Logs to Amazon CloudWatch
     * Logs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
     * in the *Amazon Relational Database Service User Guide* .
     *
     * *Amazon Aurora*
     *
     * Not applicable. CloudWatch Logs exports are managed by the DB cluster.
     *
     * *Db2*
     *
     * Valid values: `diag.log` , `notify.log`
     *
     * *MariaDB*
     *
     * Valid values: `audit` , `error` , `general` , `slowquery`
     *
     * *Microsoft SQL Server*
     *
     * Valid values: `agent` , `error`
     *
     * *MySQL*
     *
     * Valid values: `audit` , `error` , `general` , `slowquery`
     *
     * *Oracle*
     *
     * Valid values: `alert` , `audit` , `listener` , `trace` , `oemagent`
     *
     * *PostgreSQL*
     *
     * Valid values: `postgresql` , `upgrade`
     */
    override fun enableCloudwatchLogsExports(vararg enableCloudwatchLogsExports: String): Unit =
        enableCloudwatchLogsExports(enableCloudwatchLogsExports.toList())

    /**
     * @param enableIamDatabaseAuthentication A value that indicates whether to enable mapping of
     * AWS Identity and Access Management (IAM) accounts to database accounts.
     * By default, mapping is disabled.
     *
     * This property is supported for RDS for MariaDB, RDS for MySQL, and RDS for PostgreSQL. For
     * more information, see [IAM Database Authentication for MariaDB, MySQL, and
     * PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
     * in the *Amazon RDS User Guide.*
     *
     * *Amazon Aurora*
     *
     * Not applicable. Mapping AWS IAM accounts to database accounts is managed by the DB cluster.
     */
    override fun enableIamDatabaseAuthentication(enableIamDatabaseAuthentication: Boolean) {
      cdkBuilder.enableIamDatabaseAuthentication(enableIamDatabaseAuthentication)
    }

    /**
     * @param enableIamDatabaseAuthentication A value that indicates whether to enable mapping of
     * AWS Identity and Access Management (IAM) accounts to database accounts.
     * By default, mapping is disabled.
     *
     * This property is supported for RDS for MariaDB, RDS for MySQL, and RDS for PostgreSQL. For
     * more information, see [IAM Database Authentication for MariaDB, MySQL, and
     * PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
     * in the *Amazon RDS User Guide.*
     *
     * *Amazon Aurora*
     *
     * Not applicable. Mapping AWS IAM accounts to database accounts is managed by the DB cluster.
     */
    override fun enableIamDatabaseAuthentication(enableIamDatabaseAuthentication: IResolvable) {
      cdkBuilder.enableIamDatabaseAuthentication(enableIamDatabaseAuthentication.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param enablePerformanceInsights Specifies whether to enable Performance Insights for the DB
     * instance.
     * For more information, see [Using Amazon Performance
     * Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) in the
     * *Amazon RDS User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     */
    override fun enablePerformanceInsights(enablePerformanceInsights: Boolean) {
      cdkBuilder.enablePerformanceInsights(enablePerformanceInsights)
    }

    /**
     * @param enablePerformanceInsights Specifies whether to enable Performance Insights for the DB
     * instance.
     * For more information, see [Using Amazon Performance
     * Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) in the
     * *Amazon RDS User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     */
    override fun enablePerformanceInsights(enablePerformanceInsights: IResolvable) {
      cdkBuilder.enablePerformanceInsights(enablePerformanceInsights.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param endpoint The connection endpoint for the DB instance.
     *
     * The endpoint might not be shown for instances with the status of `creating` .
     */
    override fun endpoint(endpoint: IResolvable) {
      cdkBuilder.endpoint(endpoint.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param endpoint The connection endpoint for the DB instance.
     *
     * The endpoint might not be shown for instances with the status of `creating` .
     */
    override fun endpoint(endpoint: CfnDBInstance.EndpointProperty) {
      cdkBuilder.endpoint(endpoint.let(CfnDBInstance.EndpointProperty.Companion::unwrap))
    }

    /**
     * @param endpoint The connection endpoint for the DB instance.
     *
     * The endpoint might not be shown for instances with the status of `creating` .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("7947e5819bba5c75904e4610cb293a5a01f8267d49b226670e67ad3e8b09537d")
    override fun endpoint(endpoint: CfnDBInstance.EndpointProperty.Builder.() -> Unit): Unit =
        endpoint(CfnDBInstance.EndpointProperty(endpoint))

    /**
     * @param engine The name of the database engine to use for this DB instance.
     * Not every database engine is available in every AWS Region.
     *
     * This property is required when creating a DB instance.
     *
     *
     * You can convert an Oracle database from the non-CDB architecture to the container database
     * (CDB) architecture by updating the `Engine` value in your templates from `oracle-ee` to
     * `oracle-ee-cdb` or from `oracle-se2` to `oracle-se2-cdb` . Converting to the CDB architecture
     * requires an interruption.
     *
     *
     * Valid Values:
     *
     * * `aurora-mysql` (for Aurora MySQL DB instances)
     * * `aurora-postgresql` (for Aurora PostgreSQL DB instances)
     * * `custom-oracle-ee` (for RDS Custom for Oracle DB instances)
     * * `custom-oracle-ee-cdb` (for RDS Custom for Oracle DB instances)
     * * `custom-sqlserver-ee` (for RDS Custom for SQL Server DB instances)
     * * `custom-sqlserver-se` (for RDS Custom for SQL Server DB instances)
     * * `custom-sqlserver-web` (for RDS Custom for SQL Server DB instances)
     * * `db2-ae`
     * * `db2-se`
     * * `mariadb`
     * * `mysql`
     * * `oracle-ee`
     * * `oracle-ee-cdb`
     * * `oracle-se2`
     * * `oracle-se2-cdb`
     * * `postgres`
     * * `sqlserver-ee`
     * * `sqlserver-se`
     * * `sqlserver-ex`
     * * `sqlserver-web`
     */
    override fun engine(engine: String) {
      cdkBuilder.engine(engine)
    }

    /**
     * @param engineLifecycleSupport The life cycle type for this DB instance.
     *
     * By default, this value is set to `open-source-rds-extended-support` , which enrolls your DB
     * instance into Amazon RDS Extended Support. At the end of standard support, you can avoid charges
     * for Extended Support by setting the value to `open-source-rds-extended-support-disabled` . In
     * this case, creating the DB instance will fail if the DB major version is past its end of
     * standard support date.
     *
     *
     * This setting applies only to RDS for MySQL and RDS for PostgreSQL. For Amazon Aurora DB
     * instances, the life cycle type is managed by the DB cluster.
     *
     * You can use this setting to enroll your DB instance into Amazon RDS Extended Support. With
     * RDS Extended Support, you can run the selected major engine version on your DB instance past the
     * end of standard support for that engine version. For more information, see [Using Amazon RDS
     * Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html)
     * in the *Amazon RDS User Guide* .
     *
     * Valid Values: `open-source-rds-extended-support | open-source-rds-extended-support-disabled`
     *
     * Default: `open-source-rds-extended-support`
     */
    override fun engineLifecycleSupport(engineLifecycleSupport: String) {
      cdkBuilder.engineLifecycleSupport(engineLifecycleSupport)
    }

    /**
     * @param engineVersion The version number of the database engine to use.
     * For a list of valid engine versions, use the `DescribeDBEngineVersions` action.
     *
     * The following are the database engines and links to information about the major and minor
     * versions that are available with Amazon RDS. Not every database engine is available for every
     * AWS Region.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The version number of the database engine to be used by the DB instance is
     * managed by the DB cluster.
     *
     * *Db2*
     *
     * See [Amazon RDS for
     * Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Db2.html#Db2.Concepts.VersionMgmt)
     * in the *Amazon RDS User Guide.*
     *
     * *MariaDB*
     *
     * See [MariaDB on Amazon RDS
     * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt)
     * in the *Amazon RDS User Guide.*
     *
     * *Microsoft SQL Server*
     *
     * See [Microsoft SQL Server Versions on Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport)
     * in the *Amazon RDS User Guide.*
     *
     * *MySQL*
     *
     * See [MySQL on Amazon RDS
     * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt)
     * in the *Amazon RDS User Guide.*
     *
     * *Oracle*
     *
     * See [Oracle Database Engine Release
     * Notes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html)
     * in the *Amazon RDS User Guide.*
     *
     * *PostgreSQL*
     *
     * See [Supported PostgreSQL Database
     * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.DBVersions)
     * in the *Amazon RDS User Guide.*
     */
    override fun engineVersion(engineVersion: String) {
      cdkBuilder.engineVersion(engineVersion)
    }

    /**
     * @param iops The number of I/O operations per second (IOPS) that the database provisions.
     * The value must be equal to or greater than 1000.
     *
     * If you specify this property, you must follow the range of allowed ratios of your requested
     * IOPS rate to the amount of storage that you allocate (IOPS to allocated storage). For example,
     * you can provision an Oracle database instance with 1000 IOPS and 200 GiB of storage (a ratio of
     * 5:1), or specify 2000 IOPS with 200 GiB of storage (a ratio of 10:1). For more information, see
     * [Amazon RDS Provisioned IOPS Storage to Improve
     * Performance](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/CHAP_Storage.html#USER_PIOPS)
     * in the *Amazon RDS User Guide* .
     *
     *
     * If you specify `io1` for the `StorageType` property, then you must also specify the `Iops`
     * property.
     *
     *
     * Constraints:
     *
     * * For RDS for Db2, MariaDB, MySQL, Oracle, and PostgreSQL - Must be a multiple between .5 and
     * 50 of the storage amount for the DB instance.
     * * For RDS for SQL Server - Must be a multiple between 1 and 50 of the storage amount for the
     * DB instance.
     */
    override fun iops(iops: Number) {
      cdkBuilder.iops(iops)
    }

    /**
     * @param kmsKeyId The ARN of the AWS KMS key that's used to encrypt the DB instance, such as
     * `arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef` .
     * If you enable the StorageEncrypted property but don't specify this property, AWS
     * CloudFormation uses the default KMS key. If you specify this property, you must set the
     * StorageEncrypted property to true.
     *
     * If you specify the `SourceDBInstanceIdentifier` or `SourceDbiResourceId` property, don't
     * specify this property. The value is inherited from the source DB instance, and if the DB
     * instance is encrypted, the specified `KmsKeyId` property is used. However, if the source DB
     * instance is in a different AWS Region, you must specify a KMS key ID.
     *
     * If you specify the `SourceDBInstanceAutomatedBackupsArn` property, don't specify this
     * property. The value is inherited from the source DB instance automated backup, and if the
     * automated backup is encrypted, the specified `KmsKeyId` property is used.
     *
     * If you create an encrypted read replica in a different AWS Region, then you must specify a
     * KMS key for the destination AWS Region. KMS encryption keys are specific to the region that
     * they're created in, and you can't use encryption keys from one region in another region.
     *
     * If you specify the `DBSnapshotIdentifier` property, don't specify this property. The
     * `StorageEncrypted` property value is inherited from the snapshot. If the DB instance is
     * encrypted, the specified `KmsKeyId` property is also inherited from the snapshot.
     *
     * If you specify `DBSecurityGroups` , AWS CloudFormation ignores this property. To specify both
     * a security group and this property, you must use a VPC security group. For more information
     * about Amazon RDS and VPC, see [Using Amazon RDS with Amazon
     * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS
     * User Guide* .
     *
     * *Amazon Aurora*
     *
     * Not applicable. The KMS key identifier is managed by the DB cluster.
     */
    override fun kmsKeyId(kmsKeyId: String) {
      cdkBuilder.kmsKeyId(kmsKeyId)
    }

    /**
     * @param licenseModel License model information for this DB instance.
     * Valid Values:
     *
     * * Aurora MySQL - `general-public-license`
     * * Aurora PostgreSQL - `postgresql-license`
     * * RDS for Db2 - `bring-your-own-license` . For more information about RDS for Db2 licensing,
     * see [](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-licensing.html) in the *Amazon
     * RDS User Guide.*
     * * RDS for MariaDB - `general-public-license`
     * * RDS for Microsoft SQL Server - `license-included`
     * * RDS for MySQL - `general-public-license`
     * * RDS for Oracle - `bring-your-own-license` or `license-included`
     * * RDS for PostgreSQL - `postgresql-license`
     *
     *
     * If you've specified `DBSecurityGroups` and then you update the license model, AWS
     * CloudFormation replaces the underlying DB instance. This will incur some interruptions to
     * database availability.
     */
    override fun licenseModel(licenseModel: String) {
      cdkBuilder.licenseModel(licenseModel)
    }

    /**
     * @param manageMasterUserPassword Specifies whether to manage the master user password with AWS
     * Secrets Manager.
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     *
     * Constraints:
     *
     * * Can't manage the master user password with AWS Secrets Manager if `MasterUserPassword` is
     * specified.
     */
    override fun manageMasterUserPassword(manageMasterUserPassword: Boolean) {
      cdkBuilder.manageMasterUserPassword(manageMasterUserPassword)
    }

    /**
     * @param manageMasterUserPassword Specifies whether to manage the master user password with AWS
     * Secrets Manager.
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     *
     * Constraints:
     *
     * * Can't manage the master user password with AWS Secrets Manager if `MasterUserPassword` is
     * specified.
     */
    override fun manageMasterUserPassword(manageMasterUserPassword: IResolvable) {
      cdkBuilder.manageMasterUserPassword(manageMasterUserPassword.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param masterUserPassword The password for the master user. The password can include any
     * printable ASCII character except "/", """, or "@".
     * *Amazon Aurora*
     *
     * Not applicable. The password for the master user is managed by the DB cluster.
     *
     * *RDS for Db2*
     *
     * Must contain from 8 to 255 characters.
     *
     * *RDS for MariaDB*
     *
     * Constraints: Must contain from 8 to 41 characters.
     *
     * *RDS for Microsoft SQL Server*
     *
     * Constraints: Must contain from 8 to 128 characters.
     *
     * *RDS for MySQL*
     *
     * Constraints: Must contain from 8 to 41 characters.
     *
     * *RDS for Oracle*
     *
     * Constraints: Must contain from 8 to 30 characters.
     *
     * *RDS for PostgreSQL*
     *
     * Constraints: Must contain from 8 to 128 characters.
     */
    override fun masterUserPassword(masterUserPassword: String) {
      cdkBuilder.masterUserPassword(masterUserPassword)
    }

    /**
     * @param masterUserSecret The secret managed by RDS in AWS Secrets Manager for the master user
     * password.
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     */
    override fun masterUserSecret(masterUserSecret: IResolvable) {
      cdkBuilder.masterUserSecret(masterUserSecret.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param masterUserSecret The secret managed by RDS in AWS Secrets Manager for the master user
     * password.
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     */
    override fun masterUserSecret(masterUserSecret: CfnDBInstance.MasterUserSecretProperty) {
      cdkBuilder.masterUserSecret(masterUserSecret.let(CfnDBInstance.MasterUserSecretProperty.Companion::unwrap))
    }

    /**
     * @param masterUserSecret The secret managed by RDS in AWS Secrets Manager for the master user
     * password.
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("64022dfb8dc7b9545e66d18484a4eef57beed16a27bc24d8bd93c488e9761f42")
    override
        fun masterUserSecret(masterUserSecret: CfnDBInstance.MasterUserSecretProperty.Builder.() -> Unit):
        Unit = masterUserSecret(CfnDBInstance.MasterUserSecretProperty(masterUserSecret))

    /**
     * @param masterUsername The master user name for the DB instance.
     *
     * If you specify the `SourceDBInstanceIdentifier` or `DBSnapshotIdentifier` property, don't
     * specify this property. The value is inherited from the source DB instance or snapshot.
     *
     * When migrating a self-managed Db2 database, we recommend that you use the same master
     * username as your self-managed Db2 instance name.
     *
     *
     * *Amazon Aurora*
     *
     * Not applicable. The name for the master user is managed by the DB cluster.
     *
     * *RDS for Db2*
     *
     * Constraints:
     *
     * * Must be 1 to 16 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for MariaDB*
     *
     * Constraints:
     *
     * * Must be 1 to 16 letters or numbers.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for Microsoft SQL Server*
     *
     * Constraints:
     *
     * * Must be 1 to 128 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for MySQL*
     *
     * Constraints:
     *
     * * Must be 1 to 16 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for Oracle*
     *
     * Constraints:
     *
     * * Must be 1 to 30 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for PostgreSQL*
     *
     * Constraints:
     *
     * * Must be 1 to 63 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     */
    override fun masterUsername(masterUsername: String) {
      cdkBuilder.masterUsername(masterUsername)
    }

    /**
     * @param maxAllocatedStorage The upper limit in gibibytes (GiB) to which Amazon RDS can
     * automatically scale the storage of the DB instance.
     * For more information about this setting, including limitations that apply to it, see
     * [Managing capacity automatically with Amazon RDS storage
     * autoscaling](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling)
     * in the *Amazon RDS User Guide* .
     *
     * This setting doesn't apply to the following DB instances:
     *
     * * Amazon Aurora (Storage is managed by the DB cluster.)
     * * RDS Custom
     */
    override fun maxAllocatedStorage(maxAllocatedStorage: Number) {
      cdkBuilder.maxAllocatedStorage(maxAllocatedStorage)
    }

    /**
     * @param monitoringInterval The interval, in seconds, between points when Enhanced Monitoring
     * metrics are collected for the DB instance.
     * To disable collection of Enhanced Monitoring metrics, specify `0` .
     *
     * If `MonitoringRoleArn` is specified, then you must set `MonitoringInterval` to a value other
     * than `0` .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * Valid Values: `0 | 1 | 5 | 10 | 15 | 30 | 60`
     *
     * Default: `0`
     */
    override fun monitoringInterval(monitoringInterval: Number) {
      cdkBuilder.monitoringInterval(monitoringInterval)
    }

    /**
     * @param monitoringRoleArn The ARN for the IAM role that permits RDS to send enhanced
     * monitoring metrics to Amazon CloudWatch Logs.
     * For example, `arn:aws:iam:123456789012:role/emaccess` . For information on creating a
     * monitoring role, see [Setting Up and Enabling Enhanced
     * Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling)
     * in the *Amazon RDS User Guide* .
     *
     * If `MonitoringInterval` is set to a value other than `0` , then you must supply a
     * `MonitoringRoleArn` value.
     *
     * This setting doesn't apply to RDS Custom DB instances.
     */
    override fun monitoringRoleArn(monitoringRoleArn: String) {
      cdkBuilder.monitoringRoleArn(monitoringRoleArn)
    }

    /**
     * @param multiAz Specifies whether the DB instance is a Multi-AZ deployment.
     * You can't set the `AvailabilityZone` parameter if the DB instance is a Multi-AZ deployment.
     *
     * This setting doesn't apply to the following DB instances:
     *
     * * Amazon Aurora (DB instance Availability Zones (AZs) are managed by the DB cluster.)
     * * RDS Custom
     */
    override fun multiAz(multiAz: Boolean) {
      cdkBuilder.multiAz(multiAz)
    }

    /**
     * @param multiAz Specifies whether the DB instance is a Multi-AZ deployment.
     * You can't set the `AvailabilityZone` parameter if the DB instance is a Multi-AZ deployment.
     *
     * This setting doesn't apply to the following DB instances:
     *
     * * Amazon Aurora (DB instance Availability Zones (AZs) are managed by the DB cluster.)
     * * RDS Custom
     */
    override fun multiAz(multiAz: IResolvable) {
      cdkBuilder.multiAz(multiAz.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param ncharCharacterSetName The name of the NCHAR character set for the Oracle DB instance.
     * This setting doesn't apply to RDS Custom DB instances.
     */
    override fun ncharCharacterSetName(ncharCharacterSetName: String) {
      cdkBuilder.ncharCharacterSetName(ncharCharacterSetName)
    }

    /**
     * @param networkType The network type of the DB instance.
     * Valid values:
     *
     * * `IPV4`
     * * `DUAL`
     *
     * The network type is determined by the `DBSubnetGroup` specified for the DB instance. A
     * `DBSubnetGroup` can support only the IPv4 protocol or the IPv4 and IPv6 protocols ( `DUAL` ).
     *
     * For more information, see [Working with a DB instance in a
     * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
     * in the *Amazon RDS User Guide.*
     */
    override fun networkType(networkType: String) {
      cdkBuilder.networkType(networkType)
    }

    /**
     * @param optionGroupName Indicates that the DB instance should be associated with the specified
     * option group.
     * Permanent options, such as the TDE option for Oracle Advanced Security TDE, can't be removed
     * from an option group. Also, that option group can't be removed from a DB instance once it is
     * associated with a DB instance.
     */
    override fun optionGroupName(optionGroupName: String) {
      cdkBuilder.optionGroupName(optionGroupName)
    }

    /**
     * @param performanceInsightsKmsKeyId The AWS KMS key identifier for encryption of Performance
     * Insights data.
     * The KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.
     *
     * If you do not specify a value for `PerformanceInsightsKMSKeyId` , then Amazon RDS uses your
     * default KMS key. There is a default KMS key for your AWS account. Your AWS account has a
     * different default KMS key for each AWS Region.
     *
     * For information about enabling Performance Insights, see
     * [EnablePerformanceInsights](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-enableperformanceinsights)
     * .
     */
    override fun performanceInsightsKmsKeyId(performanceInsightsKmsKeyId: String) {
      cdkBuilder.performanceInsightsKmsKeyId(performanceInsightsKmsKeyId)
    }

    /**
     * @param performanceInsightsRetentionPeriod The number of days to retain Performance Insights
     * data.
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * Valid Values:
     *
     * * `7`
     * * *month* * 31, where *month* is a number of months from 1-23. Examples: `93` (3 months *
     * 31), `341` (11 months * 31), `589` (19 months * 31)
     * * `731`
     *
     * Default: `7` days
     *
     * If you specify a retention period that isn't valid, such as `94` , Amazon RDS returns an
     * error.
     */
    override fun performanceInsightsRetentionPeriod(performanceInsightsRetentionPeriod: Number) {
      cdkBuilder.performanceInsightsRetentionPeriod(performanceInsightsRetentionPeriod)
    }

    /**
     * @param port The port number on which the database accepts connections.
     * This setting doesn't apply to Aurora DB instances. The port number is managed by the cluster.
     *
     * Valid Values: `1150-65535`
     *
     * Default:
     *
     * * RDS for Db2 - `50000`
     * * RDS for MariaDB - `3306`
     * * RDS for Microsoft SQL Server - `1433`
     * * RDS for MySQL - `3306`
     * * RDS for Oracle - `1521`
     * * RDS for PostgreSQL - `5432`
     *
     * Constraints:
     *
     * * For RDS for Microsoft SQL Server, the value can't be `1234` , `1434` , `3260` , `3343` ,
     * `3389` , `47001` , or `49152-49156` .
     */
    override fun port(port: String) {
      cdkBuilder.port(port)
    }

    /**
     * @param preferredBackupWindow The daily time range during which automated backups are created
     * if automated backups are enabled, using the `BackupRetentionPeriod` parameter.
     * For more information, see [Backup
     * Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)
     * in the *Amazon RDS User Guide.*
     *
     * Constraints:
     *
     * * Must be in the format `hh24:mi-hh24:mi` .
     * * Must be in Universal Coordinated Time (UTC).
     * * Must not conflict with the preferred maintenance window.
     * * Must be at least 30 minutes.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The daily time range for creating automated backups is managed by the DB
     * cluster.
     */
    override fun preferredBackupWindow(preferredBackupWindow: String) {
      cdkBuilder.preferredBackupWindow(preferredBackupWindow)
    }

    /**
     * @param preferredMaintenanceWindow The weekly time range during which system maintenance can
     * occur, in Universal Coordinated Time (UTC).
     * Format: `ddd:hh24:mi-ddd:hh24:mi`
     *
     * The default is 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. To see the time blocks available, see
     * [Adjusting the Preferred DB Instance Maintenance
     * Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow)
     * in the *Amazon RDS User Guide.*
     *
     *
     * This property applies when AWS CloudFormation initially creates the DB instance. If you use
     * AWS CloudFormation to update the DB instance, those updates are applied immediately.
     *
     *
     * Constraints: Minimum 30-minute window.
     */
    override fun preferredMaintenanceWindow(preferredMaintenanceWindow: String) {
      cdkBuilder.preferredMaintenanceWindow(preferredMaintenanceWindow)
    }

    /**
     * @param processorFeatures The number of CPU cores and the number of threads per core for the
     * DB instance class of the DB instance.
     * This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
     */
    override fun processorFeatures(processorFeatures: IResolvable) {
      cdkBuilder.processorFeatures(processorFeatures.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param processorFeatures The number of CPU cores and the number of threads per core for the
     * DB instance class of the DB instance.
     * This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
     */
    override fun processorFeatures(processorFeatures: List) {
      cdkBuilder.processorFeatures(processorFeatures.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param processorFeatures The number of CPU cores and the number of threads per core for the
     * DB instance class of the DB instance.
     * This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
     */
    override fun processorFeatures(vararg processorFeatures: Any): Unit =
        processorFeatures(processorFeatures.toList())

    /**
     * @param promotionTier The order of priority in which an Aurora Replica is promoted to the
     * primary instance after a failure of the existing primary instance.
     * For more information, see [Fault Tolerance for an Aurora DB
     * Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html#Aurora.Managing.FaultTolerance)
     * in the *Amazon Aurora User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * Default: `1`
     *
     * Valid Values: `0 - 15`
     */
    override fun promotionTier(promotionTier: Number) {
      cdkBuilder.promotionTier(promotionTier)
    }

    /**
     * @param publiclyAccessible Indicates whether the DB instance is an internet-facing instance.
     * If you specify true, AWS CloudFormation creates an instance with a publicly resolvable DNS
     * name, which resolves to a public IP address. If you specify false, AWS CloudFormation creates an
     * internal instance with a DNS name that resolves to a private IP address.
     *
     * The default behavior value depends on your VPC setup and the database subnet group. For more
     * information, see the `PubliclyAccessible` parameter in the
     * [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
     * in the *Amazon RDS API Reference* .
     */
    override fun publiclyAccessible(publiclyAccessible: Boolean) {
      cdkBuilder.publiclyAccessible(publiclyAccessible)
    }

    /**
     * @param publiclyAccessible Indicates whether the DB instance is an internet-facing instance.
     * If you specify true, AWS CloudFormation creates an instance with a publicly resolvable DNS
     * name, which resolves to a public IP address. If you specify false, AWS CloudFormation creates an
     * internal instance with a DNS name that resolves to a private IP address.
     *
     * The default behavior value depends on your VPC setup and the database subnet group. For more
     * information, see the `PubliclyAccessible` parameter in the
     * [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
     * in the *Amazon RDS API Reference* .
     */
    override fun publiclyAccessible(publiclyAccessible: IResolvable) {
      cdkBuilder.publiclyAccessible(publiclyAccessible.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param replicaMode The open mode of an Oracle read replica.
     * For more information, see [Working with Oracle Read Replicas for Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.html) in the
     * *Amazon RDS User Guide* .
     *
     * This setting is only supported in RDS for Oracle.
     *
     * Default: `open-read-only`
     *
     * Valid Values: `open-read-only` or `mounted`
     */
    override fun replicaMode(replicaMode: String) {
      cdkBuilder.replicaMode(replicaMode)
    }

    /**
     * @param restoreTime The date and time to restore from.
     * This parameter applies to point-in-time recovery. For more information, see [Restoring a DB
     * instance to a specified
     * time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the
     * *Amazon RDS User Guide* .
     *
     * Constraints:
     *
     * * Must be a time in Universal Coordinated Time (UTC) format.
     * * Must be before the latest restorable time for the DB instance.
     * * Can't be specified if the `UseLatestRestorableTime` parameter is enabled.
     *
     * Example: `2009-09-07T23:45:00Z`
     */
    override fun restoreTime(restoreTime: String) {
      cdkBuilder.restoreTime(restoreTime)
    }

    /**
     * @param sourceDbClusterIdentifier The identifier of the Multi-AZ DB cluster that will act as
     * the source for the read replica.
     * Each DB cluster can have up to 15 read replicas.
     *
     * Constraints:
     *
     * * Must be the identifier of an existing Multi-AZ DB cluster.
     * * Can't be specified if the `SourceDBInstanceIdentifier` parameter is also specified.
     * * The specified DB cluster must have automatic backups enabled, that is, its backup retention
     * period must be greater than 0.
     * * The source DB cluster must be in the same AWS Region as the read replica. Cross-Region
     * replication isn't supported.
     */
    override fun sourceDbClusterIdentifier(sourceDbClusterIdentifier: String) {
      cdkBuilder.sourceDbClusterIdentifier(sourceDbClusterIdentifier)
    }

    /**
     * @param sourceDbInstanceAutomatedBackupsArn The Amazon Resource Name (ARN) of the replicated
     * automated backups from which to restore, for example,
     * `arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE` .
     * This setting doesn't apply to RDS Custom.
     */
    override fun sourceDbInstanceAutomatedBackupsArn(sourceDbInstanceAutomatedBackupsArn: String) {
      cdkBuilder.sourceDbInstanceAutomatedBackupsArn(sourceDbInstanceAutomatedBackupsArn)
    }

    /**
     * @param sourceDbInstanceIdentifier If you want to create a read replica DB instance, specify
     * the ID of the source DB instance.
     * Each DB instance can have a limited number of read replicas. For more information, see
     * [Working with Read
     * Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/USER_ReadRepl.html) in the
     * *Amazon RDS User Guide* .
     *
     * For information about constraints that apply to DB instance identifiers, see [Naming
     * constraints in Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints)
     * in the *Amazon RDS User Guide* .
     *
     * The `SourceDBInstanceIdentifier` property determines whether a DB instance is a read replica.
     * If you remove the `SourceDBInstanceIdentifier` property from your template and then update your
     * stack, AWS CloudFormation promotes the read replica to a standalone DB instance.
     *
     * If you specify the `UseLatestRestorableTime` or `RestoreTime` properties in conjunction with
     * the `SourceDBInstanceIdentifier` property, RDS restores the DB instance to the requested point
     * in time, thereby creating a new DB instance.
     *
     *
     * * If you specify a source DB instance that uses VPC security groups, we recommend that you
     * specify the `VPCSecurityGroups` property. If you don't specify the property, the read replica
     * inherits the value of the `VPCSecurityGroups` property from the source DB when you create the
     * replica. However, if you update the stack, AWS CloudFormation reverts the replica's
     * `VPCSecurityGroups` property to the default value because it's not defined in the stack's
     * template. This change might cause unexpected issues.
     * * Read replicas don't support deletion policies. AWS CloudFormation ignores any deletion
     * policy that's associated with a read replica.
     * * If you specify `SourceDBInstanceIdentifier` , don't specify the `DBSnapshotIdentifier`
     * property. You can't create a read replica from a snapshot.
     * * Don't set the `BackupRetentionPeriod` , `DBName` , `MasterUsername` , `MasterUserPassword`
     * , and `PreferredBackupWindow` properties. The database attributes are inherited from the source
     * DB instance, and backups are disabled for read replicas.
     * * If the source DB instance is in a different region than the read replica, specify the
     * source region in `SourceRegion` , and specify an ARN for a valid DB instance in
     * `SourceDBInstanceIdentifier` . For more information, see [Constructing a Amazon RDS Amazon
     * Resource Name
     * (ARN)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN)
     * in the *Amazon RDS User Guide* .
     * * For DB instances in Amazon Aurora clusters, don't specify this property. Amazon RDS
     * automatically assigns writer and reader DB instances.
     */
    override fun sourceDbInstanceIdentifier(sourceDbInstanceIdentifier: String) {
      cdkBuilder.sourceDbInstanceIdentifier(sourceDbInstanceIdentifier)
    }

    /**
     * @param sourceDbiResourceId The resource ID of the source DB instance from which to restore.
     */
    override fun sourceDbiResourceId(sourceDbiResourceId: String) {
      cdkBuilder.sourceDbiResourceId(sourceDbiResourceId)
    }

    /**
     * @param sourceRegion The ID of the region that contains the source DB instance for the read
     * replica.
     */
    override fun sourceRegion(sourceRegion: String) {
      cdkBuilder.sourceRegion(sourceRegion)
    }

    /**
     * @param storageEncrypted A value that indicates whether the DB instance is encrypted. By
     * default, it isn't encrypted.
     * If you specify the `KmsKeyId` property, then you must enable encryption.
     *
     * If you specify the `SourceDBInstanceIdentifier` or `SourceDbiResourceId` property, don't
     * specify this property. The value is inherited from the source DB instance, and if the DB
     * instance is encrypted, the specified `KmsKeyId` property is used.
     *
     * If you specify the `SourceDBInstanceAutomatedBackupsArn` property, don't specify this
     * property. The value is inherited from the source DB instance automated backup.
     *
     * If you specify `DBSnapshotIdentifier` property, don't specify this property. The value is
     * inherited from the snapshot.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The encryption for DB instances is managed by the DB cluster.
     */
    override fun storageEncrypted(storageEncrypted: Boolean) {
      cdkBuilder.storageEncrypted(storageEncrypted)
    }

    /**
     * @param storageEncrypted A value that indicates whether the DB instance is encrypted. By
     * default, it isn't encrypted.
     * If you specify the `KmsKeyId` property, then you must enable encryption.
     *
     * If you specify the `SourceDBInstanceIdentifier` or `SourceDbiResourceId` property, don't
     * specify this property. The value is inherited from the source DB instance, and if the DB
     * instance is encrypted, the specified `KmsKeyId` property is used.
     *
     * If you specify the `SourceDBInstanceAutomatedBackupsArn` property, don't specify this
     * property. The value is inherited from the source DB instance automated backup.
     *
     * If you specify `DBSnapshotIdentifier` property, don't specify this property. The value is
     * inherited from the snapshot.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The encryption for DB instances is managed by the DB cluster.
     */
    override fun storageEncrypted(storageEncrypted: IResolvable) {
      cdkBuilder.storageEncrypted(storageEncrypted.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param storageThroughput Specifies the storage throughput value for the DB instance. This
     * setting applies only to the `gp3` storage type.
     * This setting doesn't apply to RDS Custom or Amazon Aurora.
     */
    override fun storageThroughput(storageThroughput: Number) {
      cdkBuilder.storageThroughput(storageThroughput)
    }

    /**
     * @param storageType The storage type to associate with the DB instance.
     * If you specify `io1` , `io2` , or `gp3` , you must also include a value for the `Iops`
     * parameter.
     *
     * This setting doesn't apply to Amazon Aurora DB instances. Storage is managed by the DB
     * cluster.
     *
     * Valid Values: `gp2 | gp3 | io1 | io2 | standard`
     *
     * Default: `io1` , if the `Iops` parameter is specified. Otherwise, `gp2` .
     */
    override fun storageType(storageType: String) {
      cdkBuilder.storageType(storageType)
    }

    /**
     * @param tags Tags to assign to the DB instance.
     */
    override fun tags(tags: List) {
      cdkBuilder.tags(tags.map(CfnTag.Companion::unwrap))
    }

    /**
     * @param tags Tags to assign to the DB instance.
     */
    override fun tags(vararg tags: CfnTag): Unit = tags(tags.toList())

    /**
     * @param tdeCredentialArn the value to be set.
     * @deprecated this property has been deprecated
     */
    @Deprecated(message = "deprecated in CDK")
    override fun tdeCredentialArn(tdeCredentialArn: String) {
      cdkBuilder.tdeCredentialArn(tdeCredentialArn)
    }

    /**
     * @param tdeCredentialPassword the value to be set.
     * @deprecated this property has been deprecated
     */
    @Deprecated(message = "deprecated in CDK")
    override fun tdeCredentialPassword(tdeCredentialPassword: String) {
      cdkBuilder.tdeCredentialPassword(tdeCredentialPassword)
    }

    /**
     * @param timezone The time zone of the DB instance.
     * The time zone parameter is currently supported only by [RDS for
     * Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone) and [RDS for SQL
     * Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone)
     * .
     */
    override fun timezone(timezone: String) {
      cdkBuilder.timezone(timezone)
    }

    /**
     * @param useDefaultProcessorFeatures Specifies whether the DB instance class of the DB instance
     * uses its default processor features.
     * This setting doesn't apply to RDS Custom DB instances.
     */
    override fun useDefaultProcessorFeatures(useDefaultProcessorFeatures: Boolean) {
      cdkBuilder.useDefaultProcessorFeatures(useDefaultProcessorFeatures)
    }

    /**
     * @param useDefaultProcessorFeatures Specifies whether the DB instance class of the DB instance
     * uses its default processor features.
     * This setting doesn't apply to RDS Custom DB instances.
     */
    override fun useDefaultProcessorFeatures(useDefaultProcessorFeatures: IResolvable) {
      cdkBuilder.useDefaultProcessorFeatures(useDefaultProcessorFeatures.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param useLatestRestorableTime Specifies whether the DB instance is restored from the latest
     * backup time.
     * By default, the DB instance isn't restored from the latest backup time. This parameter
     * applies to point-in-time recovery. For more information, see [Restoring a DB instance to a
     * specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in
     * the *Amazon RDS User Guide* .
     *
     * Constraints:
     *
     * * Can't be specified if the `RestoreTime` parameter is provided.
     */
    override fun useLatestRestorableTime(useLatestRestorableTime: Boolean) {
      cdkBuilder.useLatestRestorableTime(useLatestRestorableTime)
    }

    /**
     * @param useLatestRestorableTime Specifies whether the DB instance is restored from the latest
     * backup time.
     * By default, the DB instance isn't restored from the latest backup time. This parameter
     * applies to point-in-time recovery. For more information, see [Restoring a DB instance to a
     * specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in
     * the *Amazon RDS User Guide* .
     *
     * Constraints:
     *
     * * Can't be specified if the `RestoreTime` parameter is provided.
     */
    override fun useLatestRestorableTime(useLatestRestorableTime: IResolvable) {
      cdkBuilder.useLatestRestorableTime(useLatestRestorableTime.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param vpcSecurityGroups A list of the VPC security group IDs to assign to the DB instance.
     * The list can include both the physical IDs of existing VPC security groups and references to
     * [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)
     * resources created in the template.
     *
     * If you plan to update the resource, don't specify VPC security groups in a shared VPC.
     *
     * If you set `VPCSecurityGroups` , you must not set
     * [`DBSecurityGroups`](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
     * , and vice versa.
     *
     *
     * You can migrate a DB instance in your stack from an RDS DB security group to a VPC security
     * group, but keep the following in mind:
     *
     * * You can't revert to using an RDS security group after you establish a VPC security group
     * membership.
     * * When you migrate your DB instance to VPC security groups, if your stack update rolls back
     * because the DB instance update fails or because an update fails in another AWS CloudFormation
     * resource, the rollback fails because it can't revert to an RDS security group.
     * * To use the properties that are available when you use a VPC security group, you must
     * recreate the DB instance. If you don't, AWS CloudFormation submits only the property values that
     * are listed in the
     * [`DBSecurityGroups`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
     * property.
     *
     *
     * To avoid this situation, migrate your DB instance to using VPC security groups only when that
     * is the only change in your stack template.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster.
     * If specified, the setting must match the DB cluster setting.
     */
    override fun vpcSecurityGroups(vpcSecurityGroups: List) {
      cdkBuilder.vpcSecurityGroups(vpcSecurityGroups)
    }

    /**
     * @param vpcSecurityGroups A list of the VPC security group IDs to assign to the DB instance.
     * The list can include both the physical IDs of existing VPC security groups and references to
     * [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)
     * resources created in the template.
     *
     * If you plan to update the resource, don't specify VPC security groups in a shared VPC.
     *
     * If you set `VPCSecurityGroups` , you must not set
     * [`DBSecurityGroups`](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
     * , and vice versa.
     *
     *
     * You can migrate a DB instance in your stack from an RDS DB security group to a VPC security
     * group, but keep the following in mind:
     *
     * * You can't revert to using an RDS security group after you establish a VPC security group
     * membership.
     * * When you migrate your DB instance to VPC security groups, if your stack update rolls back
     * because the DB instance update fails or because an update fails in another AWS CloudFormation
     * resource, the rollback fails because it can't revert to an RDS security group.
     * * To use the properties that are available when you use a VPC security group, you must
     * recreate the DB instance. If you don't, AWS CloudFormation submits only the property values that
     * are listed in the
     * [`DBSecurityGroups`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
     * property.
     *
     *
     * To avoid this situation, migrate your DB instance to using VPC security groups only when that
     * is the only change in your stack template.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster.
     * If specified, the setting must match the DB cluster setting.
     */
    override fun vpcSecurityGroups(vararg vpcSecurityGroups: String): Unit =
        vpcSecurityGroups(vpcSecurityGroups.toList())

    public fun build(): software.amazon.awscdk.services.rds.CfnDBInstanceProps = cdkBuilder.build()
  }

  private class Wrapper(
    cdkObject: software.amazon.awscdk.services.rds.CfnDBInstanceProps,
  ) : CdkObject(cdkObject),
      CfnDBInstanceProps {
    /**
     * The amount of storage in gibibytes (GiB) to be initially allocated for the database instance.
     *
     *
     * If any value is set in the `Iops` parameter, `AllocatedStorage` must be at least 100 GiB,
     * which corresponds to the minimum Iops value of 1,000. If you increase the `Iops` value (in 1,000
     * IOPS increments), then you must also increase the `AllocatedStorage` value (in 100-GiB
     * increments).
     *
     *
     * *Amazon Aurora*
     *
     * Not applicable. Aurora cluster volumes automatically grow as the amount of data in your
     * database increases, though you are only charged for the space that you use in an Aurora cluster
     * volume.
     *
     * *Db2*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp3): Must be an integer from 20 to 64000.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 64000.
     *
     * *MySQL*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 5 to 3072.
     *
     * *MariaDB*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 5 to 3072.
     *
     * *PostgreSQL*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 5 to 3072.
     *
     * *Oracle*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2): Must be an integer from 20 to 65536.
     * * Provisioned IOPS storage (io1): Must be an integer from 100 to 65536.
     * * Magnetic storage (standard): Must be an integer from 10 to 3072.
     *
     * *SQL Server*
     *
     * Constraints to the amount of storage for each storage type are the following:
     *
     * * General Purpose (SSD) storage (gp2):
     * * Enterprise and Standard editions: Must be an integer from 20 to 16384.
     * * Web and Express editions: Must be an integer from 20 to 16384.
     * * Provisioned IOPS storage (io1):
     * * Enterprise and Standard editions: Must be an integer from 20 to 16384.
     * * Web and Express editions: Must be an integer from 20 to 16384.
     * * Magnetic storage (standard):
     * * Enterprise and Standard editions: Must be an integer from 20 to 1024.
     * * Web and Express editions: Must be an integer from 20 to 1024.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-allocatedstorage)
     */
    override fun allocatedStorage(): String? = unwrap(this).getAllocatedStorage()

    /**
     * A value that indicates whether major version upgrades are allowed.
     *
     * Changing this parameter doesn't result in an outage and the change is asynchronously applied
     * as soon as possible.
     *
     * Constraints: Major version upgrades must be allowed when specifying a value for the
     * `EngineVersion` parameter that is a different major version than the DB instance's current
     * version.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-allowmajorversionupgrade)
     */
    override fun allowMajorVersionUpgrade(): Any? = unwrap(this).getAllowMajorVersionUpgrade()

    /**
     * The AWS Identity and Access Management (IAM) roles associated with the DB instance.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The associated roles are managed by the DB cluster.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-associatedroles)
     */
    override fun associatedRoles(): Any? = unwrap(this).getAssociatedRoles()

    /**
     * A value that indicates whether minor engine upgrades are applied automatically to the DB
     * instance during the maintenance window.
     *
     * By default, minor engine upgrades are applied automatically.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-autominorversionupgrade)
     */
    override fun autoMinorVersionUpgrade(): Any? = unwrap(this).getAutoMinorVersionUpgrade()

    /**
     * The AWS KMS key identifier for encryption of the replicated automated backups.
     *
     * The KMS key ID is the Amazon Resource Name (ARN) for the KMS encryption key in the
     * destination AWS Region , for example,
     * `arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE` .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-automaticbackupreplicationkmskeyid)
     */
    override fun automaticBackupReplicationKmsKeyId(): String? =
        unwrap(this).getAutomaticBackupReplicationKmsKeyId()

    /**
     * The AWS Region associated with the automated backup.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-automaticbackupreplicationregion)
     */
    override fun automaticBackupReplicationRegion(): String? =
        unwrap(this).getAutomaticBackupReplicationRegion()

    /**
     * The Availability Zone (AZ) where the database will be created.
     *
     * For information on AWS Regions and Availability Zones, see [Regions and Availability
     * Zones](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html)
     * .
     *
     * For Amazon Aurora, each Aurora DB cluster hosts copies of its storage in three separate
     * Availability Zones. Specify one of these Availability Zones. Aurora automatically chooses an
     * appropriate Availability Zone if you don't specify one.
     *
     * Default: A random, system-chosen Availability Zone in the endpoint's AWS Region .
     *
     * Constraints:
     *
     * * The `AvailabilityZone` parameter can't be specified if the DB instance is a Multi-AZ
     * deployment.
     * * The specified Availability Zone must be in the same AWS Region as the current endpoint.
     *
     * Example: `us-east-1d`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-availabilityzone)
     */
    override fun availabilityZone(): String? = unwrap(this).getAvailabilityZone()

    /**
     * The number of days for which automated backups are retained.
     *
     * Setting this parameter to a positive number enables backups. Setting this parameter to 0
     * disables automated backups.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The retention period for automated backups is managed by the DB cluster.
     *
     * Default: 1
     *
     * Constraints:
     *
     * * Must be a value from 0 to 35
     * * Can't be set to 0 if the DB instance is a source to read replicas
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-backupretentionperiod)
     */
    override fun backupRetentionPeriod(): Number? = unwrap(this).getBackupRetentionPeriod()

    /**
     * The identifier of the CA certificate for this DB instance.
     *
     * For more information, see [Using SSL/TLS to encrypt a connection to a DB
     * instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) in the
     * *Amazon RDS User Guide* and [Using SSL/TLS to encrypt a connection to a DB
     * cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html) in
     * the *Amazon Aurora User Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-cacertificateidentifier)
     */
    override fun caCertificateIdentifier(): String? = unwrap(this).getCaCertificateIdentifier()

    /**
     * The details of the DB instance's server certificate.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-certificatedetails)
     */
    override fun certificateDetails(): Any? = unwrap(this).getCertificateDetails()

    /**
     * Specifies whether the DB instance is restarted when you rotate your SSL/TLS certificate.
     *
     * By default, the DB instance is restarted when you rotate your SSL/TLS certificate. The
     * certificate is not updated until the DB instance is restarted.
     *
     *
     * Set this parameter only if you are *not* using SSL/TLS to connect to the DB instance.
     *
     *
     * If you are using SSL/TLS to connect to the DB instance, follow the appropriate instructions
     * for your DB engine to rotate your SSL/TLS certificate:
     *
     * * For more information about rotating your SSL/TLS certificate for RDS DB engines, see
     * [Rotating Your SSL/TLS
     * Certificate.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html)
     * in the *Amazon RDS User Guide.*
     * * For more information about rotating your SSL/TLS certificate for Aurora DB engines, see
     * [Rotating Your SSL/TLS
     * Certificate](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html)
     * in the *Amazon Aurora User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-certificaterotationrestart)
     */
    override fun certificateRotationRestart(): Any? = unwrap(this).getCertificateRotationRestart()

    /**
     * For supported engines, indicates that the DB instance should be associated with the specified
     * character set.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The character set is managed by the DB cluster. For more information, see
     * [AWS::RDS::DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-charactersetname)
     */
    override fun characterSetName(): String? = unwrap(this).getCharacterSetName()

    /**
     * Specifies whether to copy tags from the DB instance to snapshots of the DB instance.
     *
     * By default, tags are not copied.
     *
     * This setting doesn't apply to Amazon Aurora DB instances. Copying tags to snapshots is
     * managed by the DB cluster. Setting this value for an Aurora DB instance has no effect on the DB
     * cluster setting.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-copytagstosnapshot)
     */
    override fun copyTagsToSnapshot(): Any? = unwrap(this).getCopyTagsToSnapshot()

    /**
     * The instance profile associated with the underlying Amazon EC2 instance of an RDS Custom DB
     * instance.
     *
     * This setting is required for RDS Custom.
     *
     * Constraints:
     *
     * * The profile must exist in your account.
     * * The profile must have an IAM role that Amazon EC2 has permissions to assume.
     * * The instance profile name and the associated IAM role name must start with the prefix
     * `AWSRDSCustom` .
     *
     * For the list of permissions required for the IAM role, see [Configure IAM and your
     * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc)
     * in the *Amazon RDS User Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-customiaminstanceprofile)
     */
    override fun customIamInstanceProfile(): String? = unwrap(this).getCustomIamInstanceProfile()

    /**
     * The identifier of the DB cluster that this DB instance will belong to.
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbclusteridentifier)
     */
    override fun dbClusterIdentifier(): String? = unwrap(this).getDbClusterIdentifier()

    /**
     * The identifier for the Multi-AZ DB cluster snapshot to restore from.
     *
     * For more information on Multi-AZ DB clusters, see [Multi-AZ DB cluster
     * deployments](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
     * in the *Amazon RDS User Guide* .
     *
     * Constraints:
     *
     * * Must match the identifier of an existing Multi-AZ DB cluster snapshot.
     * * Can't be specified when `DBSnapshotIdentifier` is specified.
     * * Must be specified when `DBSnapshotIdentifier` isn't specified.
     * * If you are restoring from a shared manual Multi-AZ DB cluster snapshot, the
     * `DBClusterSnapshotIdentifier` must be the ARN of the shared snapshot.
     * * Can't be the identifier of an Aurora DB cluster snapshot.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbclustersnapshotidentifier)
     */
    override fun dbClusterSnapshotIdentifier(): String? =
        unwrap(this).getDbClusterSnapshotIdentifier()

    /**
     * The compute and memory capacity of the DB instance, for example `db.m5.large` . Not all DB
     * instance classes are available in all AWS Regions , or for all database engines. For the full
     * list of DB instance classes, and availability for your engine, see [DB instance
     * classes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
     * in the *Amazon RDS User Guide* or [Aurora DB instance
     * classes](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html)
     * in the *Amazon Aurora User Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbinstanceclass)
     */
    override fun dbInstanceClass(): String? = unwrap(this).getDbInstanceClass()

    /**
     * A name for the DB instance.
     *
     * If you specify a name, AWS CloudFormation converts it to lowercase. If you don't specify a
     * name, AWS CloudFormation generates a unique physical ID and uses that ID for the DB instance.
     * For more information, see [Name
     * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     *
     * For information about constraints that apply to DB instance identifiers, see [Naming
     * constraints in Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints)
     * in the *Amazon RDS User Guide* .
     *
     *
     * If you specify a name, you can't perform updates that require replacement of this resource.
     * You can perform updates that require no or some interruption. If you must replace the resource,
     * specify a new name.
     *
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbinstanceidentifier)
     */
    override fun dbInstanceIdentifier(): String? = unwrap(this).getDbInstanceIdentifier()

    /**
     * The meaning of this parameter differs according to the database engine you use.
     *
     *
     * If you specify the
     * `[DBSnapshotIdentifier](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsnapshotidentifier)`
     * property, this property only applies to RDS for Oracle.
     *
     *
     * *Amazon Aurora*
     *
     * Not applicable. The database name is managed by the DB cluster.
     *
     * *Db2*
     *
     * The name of the database to create when the DB instance is created. If this parameter isn't
     * specified, no database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must contain 1 to 64 letters or numbers.
     * * Must begin with a letter. Subsequent characters can be letters, underscores, or digits
     * (0-9).
     * * Can't be a word reserved by the specified database engine.
     *
     * *MySQL*
     *
     * The name of the database to create when the DB instance is created. If this parameter is not
     * specified, no database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must contain 1 to 64 letters or numbers.
     * * Can't be a word reserved by the specified database engine
     *
     * *MariaDB*
     *
     * The name of the database to create when the DB instance is created. If this parameter is not
     * specified, no database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must contain 1 to 64 letters or numbers.
     * * Can't be a word reserved by the specified database engine
     *
     * *PostgreSQL*
     *
     * The name of the database to create when the DB instance is created. If this parameter is not
     * specified, the default `postgres` database is created in the DB instance.
     *
     * Constraints:
     *
     * * Must begin with a letter. Subsequent characters can be letters, underscores, or digits
     * (0-9).
     * * Must contain 1 to 63 characters.
     * * Can't be a word reserved by the specified database engine
     *
     * *Oracle*
     *
     * The Oracle System ID (SID) of the created DB instance. If you specify `null` , the default
     * value `ORCL` is used. You can't specify the string NULL, or any other reserved word, for
     * `DBName` .
     *
     * Default: `ORCL`
     *
     * Constraints:
     *
     * * Can't be longer than 8 characters
     *
     * *SQL Server*
     *
     * Not applicable. Must be null.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbname)
     */
    override fun dbName(): String? = unwrap(this).getDbName()

    /**
     * The name of an existing DB parameter group or a reference to an
     * [AWS::RDS::DBParameterGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html)
     * resource created in the template.
     *
     * To list all of the available DB parameter group names, use the following command:
     *
     * `aws rds describe-db-parameter-groups --query
     * "DBParameterGroups[].DBParameterGroupName" --output text`
     *
     *
     * If any of the data members of the referenced parameter group are changed during an update,
     * the DB instance might need to be restarted, which causes some interruption. If the parameter
     * group contains static parameters, whether they were changed or not, an update triggers a reboot.
     *
     *
     * If you don't specify a value for `DBParameterGroupName` property, the default DB parameter
     * group for the specified engine and engine version is used.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbparametergroupname)
     */
    override fun dbParameterGroupName(): String? = unwrap(this).getDbParameterGroupName()

    /**
     * A list of the DB security groups to assign to the DB instance.
     *
     * The list can include both the name of existing DB security groups or references to
     * AWS::RDS::DBSecurityGroup resources created in the template.
     *
     * If you set DBSecurityGroups, you must not set VPCSecurityGroups, and vice versa. Also, note
     * that the DBSecurityGroups property exists only for backwards compatibility with older regions
     * and is no longer recommended for providing security information to an RDS DB instance. Instead,
     * use VPCSecurityGroups.
     *
     *
     * If you specify this property, AWS CloudFormation sends only the following properties (if
     * specified) to Amazon RDS during create operations:
     *
     * * `AllocatedStorage`
     * * `AutoMinorVersionUpgrade`
     * * `AvailabilityZone`
     * * `BackupRetentionPeriod`
     * * `CharacterSetName`
     * * `DBInstanceClass`
     * * `DBName`
     * * `DBParameterGroupName`
     * * `DBSecurityGroups`
     * * `DBSubnetGroupName`
     * * `Engine`
     * * `EngineVersion`
     * * `Iops`
     * * `LicenseModel`
     * * `MasterUsername`
     * * `MasterUserPassword`
     * * `MultiAZ`
     * * `OptionGroupName`
     * * `PreferredBackupWindow`
     * * `PreferredMaintenanceWindow`
     *
     * All other properties are ignored. Specify a virtual private cloud (VPC) security group if you
     * want to submit other properties, such as `StorageType` , `StorageEncrypted` , or `KmsKeyId` . If
     * you're already using the `DBSecurityGroups` property, you can't use these other properties by
     * updating your DB instance to use a VPC security group. You must recreate the DB instance.
     *
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbsecuritygroups)
     */
    override fun dbSecurityGroups(): List = unwrap(this).getDbSecurityGroups() ?:
        emptyList()

    /**
     * The name or Amazon Resource Name (ARN) of the DB snapshot that's used to restore the DB
     * instance.
     *
     * If you're restoring from a shared manual DB snapshot, you must specify the ARN of the
     * snapshot.
     *
     * By specifying this property, you can create a DB instance from the specified DB snapshot. If
     * the `DBSnapshotIdentifier` property is an empty string or the `AWS::RDS::DBInstance` declaration
     * has no `DBSnapshotIdentifier` property, AWS CloudFormation creates a new database. If the
     * property contains a value (other than an empty string), AWS CloudFormation creates a database
     * from the specified snapshot. If a snapshot with the specified name doesn't exist, AWS
     * CloudFormation can't create the database and it rolls back the stack.
     *
     * Some DB instance properties aren't valid when you restore from a snapshot, such as the
     * `MasterUsername` and `MasterUserPassword` properties. For information about the properties that
     * you can specify, see the `RestoreDBInstanceFromDBSnapshot` action in the *Amazon RDS API
     * Reference* .
     *
     * After you restore a DB instance with a `DBSnapshotIdentifier` property, you must specify the
     * same `DBSnapshotIdentifier` property for any future updates to the DB instance. When you specify
     * this property for an update, the DB instance is not restored from the DB snapshot again, and the
     * data in the database is not changed. However, if you don't specify the `DBSnapshotIdentifier`
     * property, an empty DB instance is created, and the original DB instance is deleted. If you
     * specify a property that is different from the previous snapshot restore property, a new DB
     * instance is restored from the specified `DBSnapshotIdentifier` property, and the original DB
     * instance is deleted.
     *
     * If you specify the `DBSnapshotIdentifier` property to restore a DB instance (as opposed to
     * specifying it for DB instance updates), then don't specify the following properties:
     *
     * * `CharacterSetName`
     * * `DBClusterIdentifier`
     * * `DBName`
     * * `DeleteAutomatedBackups`
     * * `KmsKeyId`
     * * `MasterUsername`
     * * `MasterUserPassword`
     * * `PerformanceInsightsKMSKeyId`
     * * `PerformanceInsightsRetentionPeriod`
     * * `PromotionTier`
     * * `SourceDBInstanceIdentifier`
     * * `SourceRegion`
     * * `StorageEncrypted` (for an encrypted snapshot)
     * * `Timezone`
     *
     * *Amazon Aurora*
     *
     * Not applicable. Snapshot restore is managed by the DB cluster.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbsnapshotidentifier)
     */
    override fun dbSnapshotIdentifier(): String? = unwrap(this).getDbSnapshotIdentifier()

    /**
     * A DB subnet group to associate with the DB instance.
     *
     * If you update this value, the new subnet group must be a subnet group in a new VPC.
     *
     * If there's no DB subnet group, then the DB instance isn't a VPC DB instance.
     *
     * For more information about using Amazon RDS in a VPC, see [Amazon VPC and Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS
     * User Guide* .
     *
     * This setting doesn't apply to Amazon Aurora DB instances. The DB subnet group is managed by
     * the DB cluster. If specified, the setting must match the DB cluster setting.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbsubnetgroupname)
     */
    override fun dbSubnetGroupName(): String? = unwrap(this).getDbSubnetGroupName()

    /**
     * Indicates whether the DB instance has a dedicated log volume (DLV) enabled.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dedicatedlogvolume)
     */
    override fun dedicatedLogVolume(): Any? = unwrap(this).getDedicatedLogVolume()

    /**
     * A value that indicates whether to remove automated backups immediately after the DB instance
     * is deleted.
     *
     * This parameter isn't case-sensitive. The default is to remove automated backups immediately
     * after the DB instance is deleted.
     *
     * *Amazon Aurora*
     *
     * Not applicable. When you delete a DB cluster, all automated backups for that DB cluster are
     * deleted and can't be recovered. Manual DB cluster snapshots of the DB cluster are not deleted.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-deleteautomatedbackups)
     */
    override fun deleteAutomatedBackups(): Any? = unwrap(this).getDeleteAutomatedBackups()

    /**
     * Specifies whether the DB instance has deletion protection enabled.
     *
     * The database can't be deleted when deletion protection is enabled. By default, deletion
     * protection isn't enabled. For more information, see [Deleting a DB
     * Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html) .
     *
     * This setting doesn't apply to Amazon Aurora DB instances. You can enable or disable deletion
     * protection for the DB cluster. For more information, see `CreateDBCluster` . DB instances in a
     * DB cluster can be deleted even when deletion protection is enabled for the DB cluster.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-deletionprotection)
     */
    override fun deletionProtection(): Any? = unwrap(this).getDeletionProtection()

    /**
     * The Active Directory directory ID to create the DB instance in.
     *
     * Currently, only Db2, MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB instances can be
     * created in an Active Directory Domain.
     *
     * For more information, see [Kerberos
     * Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html)
     * in the *Amazon RDS User Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domain)
     */
    override fun domain(): String? = unwrap(this).getDomain()

    /**
     * The ARN for the Secrets Manager secret with the credentials for the user joining the domain.
     *
     * Example:
     * `arn:aws:secretsmanager:region:account-number:secret:myselfmanagedADtestsecret-123456`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainauthsecretarn)
     */
    override fun domainAuthSecretArn(): String? = unwrap(this).getDomainAuthSecretArn()

    /**
     * The IPv4 DNS IP addresses of your primary and secondary Active Directory domain controllers.
     *
     * Constraints:
     *
     * * Two IP addresses must be provided. If there isn't a secondary domain controller, use the IP
     * address of the primary domain controller for both entries in the list.
     *
     * Example: `123.124.125.126,234.235.236.237`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domaindnsips)
     */
    override fun domainDnsIps(): List = unwrap(this).getDomainDnsIps() ?: emptyList()

    /**
     * The fully qualified domain name (FQDN) of an Active Directory domain.
     *
     * Constraints:
     *
     * * Can't be longer than 64 characters.
     *
     * Example: `mymanagedADtest.mymanagedAD.mydomain`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainfqdn)
     */
    override fun domainFqdn(): String? = unwrap(this).getDomainFqdn()

    /**
     * The name of the IAM role to use when making API calls to the Directory Service.
     *
     * This setting doesn't apply to the following DB instances:
     *
     * * Amazon Aurora (The domain is managed by the DB cluster.)
     * * RDS Custom
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainiamrolename)
     */
    override fun domainIamRoleName(): String? = unwrap(this).getDomainIamRoleName()

    /**
     * The Active Directory organizational unit for your DB instance to join.
     *
     * Constraints:
     *
     * * Must be in the distinguished name format.
     * * Can't be longer than 64 characters.
     *
     * Example: `OU=mymanagedADtestOU,DC=mymanagedADtest,DC=mymanagedAD,DC=mydomain`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainou)
     */
    override fun domainOu(): String? = unwrap(this).getDomainOu()

    /**
     * The list of log types that need to be enabled for exporting to CloudWatch Logs.
     *
     * The values in the list depend on the DB engine being used. For more information, see
     * [Publishing Database Logs to Amazon CloudWatch
     * Logs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
     * in the *Amazon Relational Database Service User Guide* .
     *
     * *Amazon Aurora*
     *
     * Not applicable. CloudWatch Logs exports are managed by the DB cluster.
     *
     * *Db2*
     *
     * Valid values: `diag.log` , `notify.log`
     *
     * *MariaDB*
     *
     * Valid values: `audit` , `error` , `general` , `slowquery`
     *
     * *Microsoft SQL Server*
     *
     * Valid values: `agent` , `error`
     *
     * *MySQL*
     *
     * Valid values: `audit` , `error` , `general` , `slowquery`
     *
     * *Oracle*
     *
     * Valid values: `alert` , `audit` , `listener` , `trace` , `oemagent`
     *
     * *PostgreSQL*
     *
     * Valid values: `postgresql` , `upgrade`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-enablecloudwatchlogsexports)
     */
    override fun enableCloudwatchLogsExports(): List =
        unwrap(this).getEnableCloudwatchLogsExports() ?: emptyList()

    /**
     * A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM)
     * accounts to database accounts.
     *
     * By default, mapping is disabled.
     *
     * This property is supported for RDS for MariaDB, RDS for MySQL, and RDS for PostgreSQL. For
     * more information, see [IAM Database Authentication for MariaDB, MySQL, and
     * PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
     * in the *Amazon RDS User Guide.*
     *
     * *Amazon Aurora*
     *
     * Not applicable. Mapping AWS IAM accounts to database accounts is managed by the DB cluster.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-enableiamdatabaseauthentication)
     */
    override fun enableIamDatabaseAuthentication(): Any? =
        unwrap(this).getEnableIamDatabaseAuthentication()

    /**
     * Specifies whether to enable Performance Insights for the DB instance.
     *
     * For more information, see [Using Amazon Performance
     * Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) in the
     * *Amazon RDS User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-enableperformanceinsights)
     */
    override fun enablePerformanceInsights(): Any? = unwrap(this).getEnablePerformanceInsights()

    /**
     * The connection endpoint for the DB instance.
     *
     *
     * The endpoint might not be shown for instances with the status of `creating` .
     *
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-endpoint)
     */
    override fun endpoint(): Any? = unwrap(this).getEndpoint()

    /**
     * The name of the database engine to use for this DB instance.
     *
     * Not every database engine is available in every AWS Region.
     *
     * This property is required when creating a DB instance.
     *
     *
     * You can convert an Oracle database from the non-CDB architecture to the container database
     * (CDB) architecture by updating the `Engine` value in your templates from `oracle-ee` to
     * `oracle-ee-cdb` or from `oracle-se2` to `oracle-se2-cdb` . Converting to the CDB architecture
     * requires an interruption.
     *
     *
     * Valid Values:
     *
     * * `aurora-mysql` (for Aurora MySQL DB instances)
     * * `aurora-postgresql` (for Aurora PostgreSQL DB instances)
     * * `custom-oracle-ee` (for RDS Custom for Oracle DB instances)
     * * `custom-oracle-ee-cdb` (for RDS Custom for Oracle DB instances)
     * * `custom-sqlserver-ee` (for RDS Custom for SQL Server DB instances)
     * * `custom-sqlserver-se` (for RDS Custom for SQL Server DB instances)
     * * `custom-sqlserver-web` (for RDS Custom for SQL Server DB instances)
     * * `db2-ae`
     * * `db2-se`
     * * `mariadb`
     * * `mysql`
     * * `oracle-ee`
     * * `oracle-ee-cdb`
     * * `oracle-se2`
     * * `oracle-se2-cdb`
     * * `postgres`
     * * `sqlserver-ee`
     * * `sqlserver-se`
     * * `sqlserver-ex`
     * * `sqlserver-web`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-engine)
     */
    override fun engine(): String? = unwrap(this).getEngine()

    /**
     * The life cycle type for this DB instance.
     *
     *
     * By default, this value is set to `open-source-rds-extended-support` , which enrolls your DB
     * instance into Amazon RDS Extended Support. At the end of standard support, you can avoid charges
     * for Extended Support by setting the value to `open-source-rds-extended-support-disabled` . In
     * this case, creating the DB instance will fail if the DB major version is past its end of
     * standard support date.
     *
     *
     * This setting applies only to RDS for MySQL and RDS for PostgreSQL. For Amazon Aurora DB
     * instances, the life cycle type is managed by the DB cluster.
     *
     * You can use this setting to enroll your DB instance into Amazon RDS Extended Support. With
     * RDS Extended Support, you can run the selected major engine version on your DB instance past the
     * end of standard support for that engine version. For more information, see [Using Amazon RDS
     * Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html)
     * in the *Amazon RDS User Guide* .
     *
     * Valid Values: `open-source-rds-extended-support | open-source-rds-extended-support-disabled`
     *
     * Default: `open-source-rds-extended-support`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-enginelifecyclesupport)
     */
    override fun engineLifecycleSupport(): String? = unwrap(this).getEngineLifecycleSupport()

    /**
     * The version number of the database engine to use.
     *
     * For a list of valid engine versions, use the `DescribeDBEngineVersions` action.
     *
     * The following are the database engines and links to information about the major and minor
     * versions that are available with Amazon RDS. Not every database engine is available for every
     * AWS Region.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The version number of the database engine to be used by the DB instance is
     * managed by the DB cluster.
     *
     * *Db2*
     *
     * See [Amazon RDS for
     * Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Db2.html#Db2.Concepts.VersionMgmt)
     * in the *Amazon RDS User Guide.*
     *
     * *MariaDB*
     *
     * See [MariaDB on Amazon RDS
     * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt)
     * in the *Amazon RDS User Guide.*
     *
     * *Microsoft SQL Server*
     *
     * See [Microsoft SQL Server Versions on Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport)
     * in the *Amazon RDS User Guide.*
     *
     * *MySQL*
     *
     * See [MySQL on Amazon RDS
     * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt)
     * in the *Amazon RDS User Guide.*
     *
     * *Oracle*
     *
     * See [Oracle Database Engine Release
     * Notes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html)
     * in the *Amazon RDS User Guide.*
     *
     * *PostgreSQL*
     *
     * See [Supported PostgreSQL Database
     * Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.DBVersions)
     * in the *Amazon RDS User Guide.*
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-engineversion)
     */
    override fun engineVersion(): String? = unwrap(this).getEngineVersion()

    /**
     * The number of I/O operations per second (IOPS) that the database provisions.
     *
     * The value must be equal to or greater than 1000.
     *
     * If you specify this property, you must follow the range of allowed ratios of your requested
     * IOPS rate to the amount of storage that you allocate (IOPS to allocated storage). For example,
     * you can provision an Oracle database instance with 1000 IOPS and 200 GiB of storage (a ratio of
     * 5:1), or specify 2000 IOPS with 200 GiB of storage (a ratio of 10:1). For more information, see
     * [Amazon RDS Provisioned IOPS Storage to Improve
     * Performance](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/CHAP_Storage.html#USER_PIOPS)
     * in the *Amazon RDS User Guide* .
     *
     *
     * If you specify `io1` for the `StorageType` property, then you must also specify the `Iops`
     * property.
     *
     *
     * Constraints:
     *
     * * For RDS for Db2, MariaDB, MySQL, Oracle, and PostgreSQL - Must be a multiple between .5 and
     * 50 of the storage amount for the DB instance.
     * * For RDS for SQL Server - Must be a multiple between 1 and 50 of the storage amount for the
     * DB instance.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-iops)
     */
    override fun iops(): Number? = unwrap(this).getIops()

    /**
     * The ARN of the AWS KMS key that's used to encrypt the DB instance, such as
     * `arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef` .
     *
     * If you enable the StorageEncrypted property but don't specify this property, AWS
     * CloudFormation uses the default KMS key. If you specify this property, you must set the
     * StorageEncrypted property to true.
     *
     * If you specify the `SourceDBInstanceIdentifier` or `SourceDbiResourceId` property, don't
     * specify this property. The value is inherited from the source DB instance, and if the DB
     * instance is encrypted, the specified `KmsKeyId` property is used. However, if the source DB
     * instance is in a different AWS Region, you must specify a KMS key ID.
     *
     * If you specify the `SourceDBInstanceAutomatedBackupsArn` property, don't specify this
     * property. The value is inherited from the source DB instance automated backup, and if the
     * automated backup is encrypted, the specified `KmsKeyId` property is used.
     *
     * If you create an encrypted read replica in a different AWS Region, then you must specify a
     * KMS key for the destination AWS Region. KMS encryption keys are specific to the region that
     * they're created in, and you can't use encryption keys from one region in another region.
     *
     * If you specify the `DBSnapshotIdentifier` property, don't specify this property. The
     * `StorageEncrypted` property value is inherited from the snapshot. If the DB instance is
     * encrypted, the specified `KmsKeyId` property is also inherited from the snapshot.
     *
     * If you specify `DBSecurityGroups` , AWS CloudFormation ignores this property. To specify both
     * a security group and this property, you must use a VPC security group. For more information
     * about Amazon RDS and VPC, see [Using Amazon RDS with Amazon
     * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS
     * User Guide* .
     *
     * *Amazon Aurora*
     *
     * Not applicable. The KMS key identifier is managed by the DB cluster.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-kmskeyid)
     */
    override fun kmsKeyId(): String? = unwrap(this).getKmsKeyId()

    /**
     * License model information for this DB instance.
     *
     * Valid Values:
     *
     * * Aurora MySQL - `general-public-license`
     * * Aurora PostgreSQL - `postgresql-license`
     * * RDS for Db2 - `bring-your-own-license` . For more information about RDS for Db2 licensing,
     * see [](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-licensing.html) in the *Amazon
     * RDS User Guide.*
     * * RDS for MariaDB - `general-public-license`
     * * RDS for Microsoft SQL Server - `license-included`
     * * RDS for MySQL - `general-public-license`
     * * RDS for Oracle - `bring-your-own-license` or `license-included`
     * * RDS for PostgreSQL - `postgresql-license`
     *
     *
     * If you've specified `DBSecurityGroups` and then you update the license model, AWS
     * CloudFormation replaces the underlying DB instance. This will incur some interruptions to
     * database availability.
     *
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-licensemodel)
     */
    override fun licenseModel(): String? = unwrap(this).getLicenseModel()

    /**
     * Specifies whether to manage the master user password with AWS Secrets Manager.
     *
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     *
     * Constraints:
     *
     * * Can't manage the master user password with AWS Secrets Manager if `MasterUserPassword` is
     * specified.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-managemasteruserpassword)
     */
    override fun manageMasterUserPassword(): Any? = unwrap(this).getManageMasterUserPassword()

    /**
     * The password for the master user. The password can include any printable ASCII character
     * except "/", """, or "@".
     *
     * *Amazon Aurora*
     *
     * Not applicable. The password for the master user is managed by the DB cluster.
     *
     * *RDS for Db2*
     *
     * Must contain from 8 to 255 characters.
     *
     * *RDS for MariaDB*
     *
     * Constraints: Must contain from 8 to 41 characters.
     *
     * *RDS for Microsoft SQL Server*
     *
     * Constraints: Must contain from 8 to 128 characters.
     *
     * *RDS for MySQL*
     *
     * Constraints: Must contain from 8 to 41 characters.
     *
     * *RDS for Oracle*
     *
     * Constraints: Must contain from 8 to 30 characters.
     *
     * *RDS for PostgreSQL*
     *
     * Constraints: Must contain from 8 to 128 characters.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-masteruserpassword)
     */
    override fun masterUserPassword(): String? = unwrap(this).getMasterUserPassword()

    /**
     * The secret managed by RDS in AWS Secrets Manager for the master user password.
     *
     * For more information, see [Password management with AWS Secrets
     * Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) in the
     * *Amazon RDS User Guide.*
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-masterusersecret)
     */
    override fun masterUserSecret(): Any? = unwrap(this).getMasterUserSecret()

    /**
     * The master user name for the DB instance.
     *
     *
     * If you specify the `SourceDBInstanceIdentifier` or `DBSnapshotIdentifier` property, don't
     * specify this property. The value is inherited from the source DB instance or snapshot.
     *
     * When migrating a self-managed Db2 database, we recommend that you use the same master
     * username as your self-managed Db2 instance name.
     *
     *
     * *Amazon Aurora*
     *
     * Not applicable. The name for the master user is managed by the DB cluster.
     *
     * *RDS for Db2*
     *
     * Constraints:
     *
     * * Must be 1 to 16 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for MariaDB*
     *
     * Constraints:
     *
     * * Must be 1 to 16 letters or numbers.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for Microsoft SQL Server*
     *
     * Constraints:
     *
     * * Must be 1 to 128 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for MySQL*
     *
     * Constraints:
     *
     * * Must be 1 to 16 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for Oracle*
     *
     * Constraints:
     *
     * * Must be 1 to 30 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * *RDS for PostgreSQL*
     *
     * Constraints:
     *
     * * Must be 1 to 63 letters or numbers.
     * * First character must be a letter.
     * * Can't be a reserved word for the chosen database engine.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-masterusername)
     */
    override fun masterUsername(): String? = unwrap(this).getMasterUsername()

    /**
     * The upper limit in gibibytes (GiB) to which Amazon RDS can automatically scale the storage of
     * the DB instance.
     *
     * For more information about this setting, including limitations that apply to it, see
     * [Managing capacity automatically with Amazon RDS storage
     * autoscaling](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling)
     * in the *Amazon RDS User Guide* .
     *
     * This setting doesn't apply to the following DB instances:
     *
     * * Amazon Aurora (Storage is managed by the DB cluster.)
     * * RDS Custom
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-maxallocatedstorage)
     */
    override fun maxAllocatedStorage(): Number? = unwrap(this).getMaxAllocatedStorage()

    /**
     * The interval, in seconds, between points when Enhanced Monitoring metrics are collected for
     * the DB instance.
     *
     * To disable collection of Enhanced Monitoring metrics, specify `0` .
     *
     * If `MonitoringRoleArn` is specified, then you must set `MonitoringInterval` to a value other
     * than `0` .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * Valid Values: `0 | 1 | 5 | 10 | 15 | 30 | 60`
     *
     * Default: `0`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-monitoringinterval)
     */
    override fun monitoringInterval(): Number? = unwrap(this).getMonitoringInterval()

    /**
     * The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to Amazon
     * CloudWatch Logs.
     *
     * For example, `arn:aws:iam:123456789012:role/emaccess` . For information on creating a
     * monitoring role, see [Setting Up and Enabling Enhanced
     * Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling)
     * in the *Amazon RDS User Guide* .
     *
     * If `MonitoringInterval` is set to a value other than `0` , then you must supply a
     * `MonitoringRoleArn` value.
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-monitoringrolearn)
     */
    override fun monitoringRoleArn(): String? = unwrap(this).getMonitoringRoleArn()

    /**
     * Specifies whether the DB instance is a Multi-AZ deployment.
     *
     * You can't set the `AvailabilityZone` parameter if the DB instance is a Multi-AZ deployment.
     *
     * This setting doesn't apply to the following DB instances:
     *
     * * Amazon Aurora (DB instance Availability Zones (AZs) are managed by the DB cluster.)
     * * RDS Custom
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-multiaz)
     */
    override fun multiAz(): Any? = unwrap(this).getMultiAz()

    /**
     * The name of the NCHAR character set for the Oracle DB instance.
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-ncharcharactersetname)
     */
    override fun ncharCharacterSetName(): String? = unwrap(this).getNcharCharacterSetName()

    /**
     * The network type of the DB instance.
     *
     * Valid values:
     *
     * * `IPV4`
     * * `DUAL`
     *
     * The network type is determined by the `DBSubnetGroup` specified for the DB instance. A
     * `DBSubnetGroup` can support only the IPv4 protocol or the IPv4 and IPv6 protocols ( `DUAL` ).
     *
     * For more information, see [Working with a DB instance in a
     * VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
     * in the *Amazon RDS User Guide.*
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-networktype)
     */
    override fun networkType(): String? = unwrap(this).getNetworkType()

    /**
     * Indicates that the DB instance should be associated with the specified option group.
     *
     * Permanent options, such as the TDE option for Oracle Advanced Security TDE, can't be removed
     * from an option group. Also, that option group can't be removed from a DB instance once it is
     * associated with a DB instance.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-optiongroupname)
     */
    override fun optionGroupName(): String? = unwrap(this).getOptionGroupName()

    /**
     * The AWS KMS key identifier for encryption of Performance Insights data.
     *
     * The KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.
     *
     * If you do not specify a value for `PerformanceInsightsKMSKeyId` , then Amazon RDS uses your
     * default KMS key. There is a default KMS key for your AWS account. Your AWS account has a
     * different default KMS key for each AWS Region.
     *
     * For information about enabling Performance Insights, see
     * [EnablePerformanceInsights](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-enableperformanceinsights)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-performanceinsightskmskeyid)
     */
    override fun performanceInsightsKmsKeyId(): String? =
        unwrap(this).getPerformanceInsightsKmsKeyId()

    /**
     * The number of days to retain Performance Insights data.
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * Valid Values:
     *
     * * `7`
     * * *month* * 31, where *month* is a number of months from 1-23. Examples: `93` (3 months *
     * 31), `341` (11 months * 31), `589` (19 months * 31)
     * * `731`
     *
     * Default: `7` days
     *
     * If you specify a retention period that isn't valid, such as `94` , Amazon RDS returns an
     * error.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-performanceinsightsretentionperiod)
     */
    override fun performanceInsightsRetentionPeriod(): Number? =
        unwrap(this).getPerformanceInsightsRetentionPeriod()

    /**
     * The port number on which the database accepts connections.
     *
     * This setting doesn't apply to Aurora DB instances. The port number is managed by the cluster.
     *
     * Valid Values: `1150-65535`
     *
     * Default:
     *
     * * RDS for Db2 - `50000`
     * * RDS for MariaDB - `3306`
     * * RDS for Microsoft SQL Server - `1433`
     * * RDS for MySQL - `3306`
     * * RDS for Oracle - `1521`
     * * RDS for PostgreSQL - `5432`
     *
     * Constraints:
     *
     * * For RDS for Microsoft SQL Server, the value can't be `1234` , `1434` , `3260` , `3343` ,
     * `3389` , `47001` , or `49152-49156` .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-port)
     */
    override fun port(): String? = unwrap(this).getPort()

    /**
     * The daily time range during which automated backups are created if automated backups are
     * enabled, using the `BackupRetentionPeriod` parameter.
     *
     * For more information, see [Backup
     * Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)
     * in the *Amazon RDS User Guide.*
     *
     * Constraints:
     *
     * * Must be in the format `hh24:mi-hh24:mi` .
     * * Must be in Universal Coordinated Time (UTC).
     * * Must not conflict with the preferred maintenance window.
     * * Must be at least 30 minutes.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The daily time range for creating automated backups is managed by the DB
     * cluster.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-preferredbackupwindow)
     */
    override fun preferredBackupWindow(): String? = unwrap(this).getPreferredBackupWindow()

    /**
     * The weekly time range during which system maintenance can occur, in Universal Coordinated
     * Time (UTC).
     *
     * Format: `ddd:hh24:mi-ddd:hh24:mi`
     *
     * The default is 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. To see the time blocks available, see
     * [Adjusting the Preferred DB Instance Maintenance
     * Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow)
     * in the *Amazon RDS User Guide.*
     *
     *
     * This property applies when AWS CloudFormation initially creates the DB instance. If you use
     * AWS CloudFormation to update the DB instance, those updates are applied immediately.
     *
     *
     * Constraints: Minimum 30-minute window.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-preferredmaintenancewindow)
     */
    override fun preferredMaintenanceWindow(): String? =
        unwrap(this).getPreferredMaintenanceWindow()

    /**
     * The number of CPU cores and the number of threads per core for the DB instance class of the
     * DB instance.
     *
     * This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-processorfeatures)
     */
    override fun processorFeatures(): Any? = unwrap(this).getProcessorFeatures()

    /**
     * The order of priority in which an Aurora Replica is promoted to the primary instance after a
     * failure of the existing primary instance.
     *
     * For more information, see [Fault Tolerance for an Aurora DB
     * Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html#Aurora.Managing.FaultTolerance)
     * in the *Amazon Aurora User Guide* .
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * Default: `1`
     *
     * Valid Values: `0 - 15`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-promotiontier)
     */
    override fun promotionTier(): Number? = unwrap(this).getPromotionTier()

    /**
     * Indicates whether the DB instance is an internet-facing instance.
     *
     * If you specify true, AWS CloudFormation creates an instance with a publicly resolvable DNS
     * name, which resolves to a public IP address. If you specify false, AWS CloudFormation creates an
     * internal instance with a DNS name that resolves to a private IP address.
     *
     * The default behavior value depends on your VPC setup and the database subnet group. For more
     * information, see the `PubliclyAccessible` parameter in the
     * [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
     * in the *Amazon RDS API Reference* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-publiclyaccessible)
     */
    override fun publiclyAccessible(): Any? = unwrap(this).getPubliclyAccessible()

    /**
     * The open mode of an Oracle read replica.
     *
     * For more information, see [Working with Oracle Read Replicas for Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.html) in the
     * *Amazon RDS User Guide* .
     *
     * This setting is only supported in RDS for Oracle.
     *
     * Default: `open-read-only`
     *
     * Valid Values: `open-read-only` or `mounted`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-replicamode)
     */
    override fun replicaMode(): String? = unwrap(this).getReplicaMode()

    /**
     * The date and time to restore from.
     *
     * This parameter applies to point-in-time recovery. For more information, see [Restoring a DB
     * instance to a specified
     * time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in the
     * *Amazon RDS User Guide* .
     *
     * Constraints:
     *
     * * Must be a time in Universal Coordinated Time (UTC) format.
     * * Must be before the latest restorable time for the DB instance.
     * * Can't be specified if the `UseLatestRestorableTime` parameter is enabled.
     *
     * Example: `2009-09-07T23:45:00Z`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-restoretime)
     */
    override fun restoreTime(): String? = unwrap(this).getRestoreTime()

    /**
     * The identifier of the Multi-AZ DB cluster that will act as the source for the read replica.
     *
     * Each DB cluster can have up to 15 read replicas.
     *
     * Constraints:
     *
     * * Must be the identifier of an existing Multi-AZ DB cluster.
     * * Can't be specified if the `SourceDBInstanceIdentifier` parameter is also specified.
     * * The specified DB cluster must have automatic backups enabled, that is, its backup retention
     * period must be greater than 0.
     * * The source DB cluster must be in the same AWS Region as the read replica. Cross-Region
     * replication isn't supported.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbclusteridentifier)
     */
    override fun sourceDbClusterIdentifier(): String? = unwrap(this).getSourceDbClusterIdentifier()

    /**
     * The Amazon Resource Name (ARN) of the replicated automated backups from which to restore, for
     * example, `arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE` .
     *
     * This setting doesn't apply to RDS Custom.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbinstanceautomatedbackupsarn)
     */
    override fun sourceDbInstanceAutomatedBackupsArn(): String? =
        unwrap(this).getSourceDbInstanceAutomatedBackupsArn()

    /**
     * If you want to create a read replica DB instance, specify the ID of the source DB instance.
     *
     * Each DB instance can have a limited number of read replicas. For more information, see
     * [Working with Read
     * Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/USER_ReadRepl.html) in the
     * *Amazon RDS User Guide* .
     *
     * For information about constraints that apply to DB instance identifiers, see [Naming
     * constraints in Amazon
     * RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Constraints)
     * in the *Amazon RDS User Guide* .
     *
     * The `SourceDBInstanceIdentifier` property determines whether a DB instance is a read replica.
     * If you remove the `SourceDBInstanceIdentifier` property from your template and then update your
     * stack, AWS CloudFormation promotes the read replica to a standalone DB instance.
     *
     * If you specify the `UseLatestRestorableTime` or `RestoreTime` properties in conjunction with
     * the `SourceDBInstanceIdentifier` property, RDS restores the DB instance to the requested point
     * in time, thereby creating a new DB instance.
     *
     *
     * * If you specify a source DB instance that uses VPC security groups, we recommend that you
     * specify the `VPCSecurityGroups` property. If you don't specify the property, the read replica
     * inherits the value of the `VPCSecurityGroups` property from the source DB when you create the
     * replica. However, if you update the stack, AWS CloudFormation reverts the replica's
     * `VPCSecurityGroups` property to the default value because it's not defined in the stack's
     * template. This change might cause unexpected issues.
     * * Read replicas don't support deletion policies. AWS CloudFormation ignores any deletion
     * policy that's associated with a read replica.
     * * If you specify `SourceDBInstanceIdentifier` , don't specify the `DBSnapshotIdentifier`
     * property. You can't create a read replica from a snapshot.
     * * Don't set the `BackupRetentionPeriod` , `DBName` , `MasterUsername` , `MasterUserPassword`
     * , and `PreferredBackupWindow` properties. The database attributes are inherited from the source
     * DB instance, and backups are disabled for read replicas.
     * * If the source DB instance is in a different region than the read replica, specify the
     * source region in `SourceRegion` , and specify an ARN for a valid DB instance in
     * `SourceDBInstanceIdentifier` . For more information, see [Constructing a Amazon RDS Amazon
     * Resource Name
     * (ARN)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN)
     * in the *Amazon RDS User Guide* .
     * * For DB instances in Amazon Aurora clusters, don't specify this property. Amazon RDS
     * automatically assigns writer and reader DB instances.
     *
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbinstanceidentifier)
     */
    override fun sourceDbInstanceIdentifier(): String? =
        unwrap(this).getSourceDbInstanceIdentifier()

    /**
     * The resource ID of the source DB instance from which to restore.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbiresourceid)
     */
    override fun sourceDbiResourceId(): String? = unwrap(this).getSourceDbiResourceId()

    /**
     * The ID of the region that contains the source DB instance for the read replica.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourceregion)
     */
    override fun sourceRegion(): String? = unwrap(this).getSourceRegion()

    /**
     * A value that indicates whether the DB instance is encrypted. By default, it isn't encrypted.
     *
     * If you specify the `KmsKeyId` property, then you must enable encryption.
     *
     * If you specify the `SourceDBInstanceIdentifier` or `SourceDbiResourceId` property, don't
     * specify this property. The value is inherited from the source DB instance, and if the DB
     * instance is encrypted, the specified `KmsKeyId` property is used.
     *
     * If you specify the `SourceDBInstanceAutomatedBackupsArn` property, don't specify this
     * property. The value is inherited from the source DB instance automated backup.
     *
     * If you specify `DBSnapshotIdentifier` property, don't specify this property. The value is
     * inherited from the snapshot.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The encryption for DB instances is managed by the DB cluster.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-storageencrypted)
     */
    override fun storageEncrypted(): Any? = unwrap(this).getStorageEncrypted()

    /**
     * Specifies the storage throughput value for the DB instance. This setting applies only to the
     * `gp3` storage type.
     *
     * This setting doesn't apply to RDS Custom or Amazon Aurora.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-storagethroughput)
     */
    override fun storageThroughput(): Number? = unwrap(this).getStorageThroughput()

    /**
     * The storage type to associate with the DB instance.
     *
     * If you specify `io1` , `io2` , or `gp3` , you must also include a value for the `Iops`
     * parameter.
     *
     * This setting doesn't apply to Amazon Aurora DB instances. Storage is managed by the DB
     * cluster.
     *
     * Valid Values: `gp2 | gp3 | io1 | io2 | standard`
     *
     * Default: `io1` , if the `Iops` parameter is specified. Otherwise, `gp2` .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-storagetype)
     */
    override fun storageType(): String? = unwrap(this).getStorageType()

    /**
     * Tags to assign to the DB instance.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-tags)
     */
    override fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()

    /**
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-tdecredentialarn)
     * @deprecated this property has been deprecated
     */
    @Deprecated(message = "deprecated in CDK")
    override fun tdeCredentialArn(): String? = unwrap(this).getTdeCredentialArn()

    /**
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-tdecredentialpassword)
     * @deprecated this property has been deprecated
     */
    @Deprecated(message = "deprecated in CDK")
    override fun tdeCredentialPassword(): String? = unwrap(this).getTdeCredentialPassword()

    /**
     * The time zone of the DB instance.
     *
     * The time zone parameter is currently supported only by [RDS for
     * Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone) and [RDS for SQL
     * Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-timezone)
     */
    override fun timezone(): String? = unwrap(this).getTimezone()

    /**
     * Specifies whether the DB instance class of the DB instance uses its default processor
     * features.
     *
     * This setting doesn't apply to RDS Custom DB instances.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-usedefaultprocessorfeatures)
     */
    override fun useDefaultProcessorFeatures(): Any? = unwrap(this).getUseDefaultProcessorFeatures()

    /**
     * Specifies whether the DB instance is restored from the latest backup time.
     *
     * By default, the DB instance isn't restored from the latest backup time. This parameter
     * applies to point-in-time recovery. For more information, see [Restoring a DB instance to a
     * specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) in the in
     * the *Amazon RDS User Guide* .
     *
     * Constraints:
     *
     * * Can't be specified if the `RestoreTime` parameter is provided.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-uselatestrestorabletime)
     */
    override fun useLatestRestorableTime(): Any? = unwrap(this).getUseLatestRestorableTime()

    /**
     * A list of the VPC security group IDs to assign to the DB instance.
     *
     * The list can include both the physical IDs of existing VPC security groups and references to
     * [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)
     * resources created in the template.
     *
     * If you plan to update the resource, don't specify VPC security groups in a shared VPC.
     *
     * If you set `VPCSecurityGroups` , you must not set
     * [`DBSecurityGroups`](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
     * , and vice versa.
     *
     *
     * You can migrate a DB instance in your stack from an RDS DB security group to a VPC security
     * group, but keep the following in mind:
     *
     * * You can't revert to using an RDS security group after you establish a VPC security group
     * membership.
     * * When you migrate your DB instance to VPC security groups, if your stack update rolls back
     * because the DB instance update fails or because an update fails in another AWS CloudFormation
     * resource, the rollback fails because it can't revert to an RDS security group.
     * * To use the properties that are available when you use a VPC security group, you must
     * recreate the DB instance. If you don't, AWS CloudFormation submits only the property values that
     * are listed in the
     * [`DBSecurityGroups`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups)
     * property.
     *
     *
     * To avoid this situation, migrate your DB instance to using VPC security groups only when that
     * is the only change in your stack template.
     *
     * *Amazon Aurora*
     *
     * Not applicable. The associated list of EC2 VPC security groups is managed by the DB cluster.
     * If specified, the setting must match the DB cluster setting.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-vpcsecuritygroups)
     */
    override fun vpcSecurityGroups(): List = unwrap(this).getVpcSecurityGroups() ?:
        emptyList()
  }

  public companion object {
    public operator fun invoke(block: Builder.() -> Unit = {}): CfnDBInstanceProps {
      val builderImpl = BuilderImpl()
      return Wrapper(builderImpl.apply(block).build())
    }

    internal fun wrap(cdkObject: software.amazon.awscdk.services.rds.CfnDBInstanceProps):
        CfnDBInstanceProps = CdkObjectWrappers.wrap(cdkObject) as? CfnDBInstanceProps ?:
        Wrapper(cdkObject)

    internal fun unwrap(wrapped: CfnDBInstanceProps):
        software.amazon.awscdk.services.rds.CfnDBInstanceProps = (wrapped as CdkObject).cdkObject as
        software.amazon.awscdk.services.rds.CfnDBInstanceProps
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy