awsrds

package
v2.112.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 1, 2023 License: Apache-2.0 Imports: 15 Imported by: 12

README

Amazon Relational Database Service Construct Library

import rds "github.com/aws/aws-cdk-go/awscdk"

Starting a clustered database

To set up a clustered database (like Aurora), define a DatabaseCluster. You must always launch a database in a VPC. Use the vpcSubnets attribute to control whether your instances will be launched privately or publicly:

You must specify the instance to use as the writer, along with an optional list of readers (up to 15).

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("clusteradmin")),
	 // Optional - will default to 'admin' username and generated password
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		PubliclyAccessible: jsii.Boolean(false),
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*Provisioned(jsii.String("reader1"), &ProvisionedClusterInstanceProps{
			PromotionTier: jsii.Number(1),
		}),
		rds.ClusterInstance_ServerlessV2(jsii.String("reader2")),
	},
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	Vpc: Vpc,
})

To adopt Aurora I/O-Optimized, specify DBClusterStorageType.AURORA_IOPT1 on the storageType property.

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraPostgres(&AuroraPostgresClusterEngineProps{
		Version: rds.AuroraPostgresEngineVersion_VER_15_2(),
	}),
	Credentials: rds.Credentials_FromUsername(jsii.String("adminuser"), &CredentialsFromUsernameOptions{
		Password: awscdk.SecretValue_UnsafePlainText(jsii.String("7959866cacc02c2d243ecfe177464fe6")),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		PubliclyAccessible: jsii.Boolean(false),
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*Provisioned(jsii.String("reader")),
	},
	StorageType: rds.DBClusterStorageType_AURORA_IOPT1,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	Vpc: Vpc,
})

If there isn't a constant for the exact version you want to use, all of the Version classes have a static of method that can be used to create an arbitrary version.

customEngineVersion := rds.AuroraMysqlEngineVersion_Of(jsii.String("5.7.mysql_aurora.2.08.1"))

By default, the master password will be generated and stored in AWS Secrets Manager with auto-generated description.

Your cluster will be empty by default. To add a default database upon construction, specify the defaultDatabaseName attribute.

To use dual-stack mode, specify NetworkType.DUAL on the networkType property:

var vpc vpc
// VPC and subnets must have IPv6 CIDR blocks
cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_02_1(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		PubliclyAccessible: jsii.Boolean(false),
	}),
	Vpc: Vpc,
	NetworkType: rds.NetworkType_DUAL,
})

For more information about dual-stack mode, see Working with a DB cluster in a VPC.

Use DatabaseClusterFromSnapshot to create a cluster from a snapshot:

var vpc vpc

rds.NewDatabaseClusterFromSnapshot(this, jsii.String("Database"), &DatabaseClusterFromSnapshotProps{
	Engine: rds.DatabaseClusterEngine_Aurora(&AuroraClusterEngineProps{
		Version: rds.AuroraEngineVersion_VER_1_22_2(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Vpc: Vpc,
	SnapshotIdentifier: jsii.String("mySnapshot"),
})
Updating the database instances in a cluster

Database cluster instances may be updated in bulk or on a rolling basis.

An update to all instances in a cluster may cause significant downtime. To reduce the downtime, set the instanceUpdateBehavior property in DatabaseClusterBaseProps to InstanceUpdateBehavior.ROLLING. This adds a dependency between each instance so the update is performed on only one instance at a time.

Use InstanceUpdateBehavior.BULK to update all instances at once.

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("Instance"), &ProvisionedClusterInstanceProps{
		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*Provisioned(jsii.String("reader")),
	},
	InstanceUpdateBehaviour: rds.InstanceUpdateBehaviour_ROLLING,
	 // Optional - defaults to rds.InstanceUpdateBehaviour.BULK
	Vpc: Vpc,
})
Serverless V2 instances in a Cluster

It is possible to create an RDS cluster with both serverlessV2 and provisioned instances. For example, this will create a cluster with a provisioned writer and a serverless v2 reader.

Note Before getting starting with this type of cluster it is highly recommended that you read through the Developer Guide which goes into much more detail on the things you need to take into consideration.

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Readers: []iClusterInstance{
		rds.ClusterInstance_ServerlessV2(jsii.String("reader")),
	},
	Vpc: Vpc,
})
Monitoring

There are some CloudWatch metrics that are important for Aurora Serverless v2.

  • ServerlessDatabaseCapacity: An instance-level metric that can also be evaluated at the cluster level. At the cluster-level it represents the average capacity of all the instances in the cluster.
  • ACUUtilization: Value of the ServerlessDatabaseCapacity/ max ACU of the cluster.
var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Readers: []iClusterInstance{
		rds.ClusterInstance_ServerlessV2(jsii.String("reader")),
	},
	Vpc: Vpc,
})

cluster.metricServerlessDatabaseCapacity(&MetricOptions{
	Period: awscdk.Duration_Minutes(jsii.Number(10)),
}).CreateAlarm(this, jsii.String("capacity"), &CreateAlarmOptions{
	Threshold: jsii.Number(1.5),
	EvaluationPeriods: jsii.Number(3),
})
cluster.metricACUUtilization(&MetricOptions{
	Period: awscdk.Duration_*Minutes(jsii.Number(10)),
}).CreateAlarm(this, jsii.String("alarm"), &CreateAlarmOptions{
	EvaluationPeriods: jsii.Number(3),
	Threshold: jsii.Number(90),
})
Capacity & Scaling

There are some things to take into consideration with Aurora Serverless v2.

To create a cluster that can support serverless v2 instances you configure a minimum and maximum capacity range on the cluster. This is an example showing the default values:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_ServerlessV2(jsii.String("writer")),
	ServerlessV2MinCapacity: jsii.Number(0.5),
	ServerlessV2MaxCapacity: jsii.Number(2),
	Vpc: Vpc,
})

The capacity is defined as a number of Aurora capacity units (ACUs). You can specify in half-step increments (40, 40.5, 41, etc). Each serverless instance in the cluster inherits the capacity that is defined on the cluster. It is not possible to configure separate capacity at the instance level.

The maximum capacity is mainly used for budget control since it allows you to set a cap on how high your instance can scale.

The minimum capacity is a little more involved. This controls a couple different things.

  • The scale-up rate is proportional to the current capacity (larger instances scale up faster)

    • Adjust the minimum capacity to obtain a suitable scaling rate
  • Network throughput is proportional to capacity

Info More complete details can be found in the docs

Another way that you control the capacity/scaling of your serverless v2 reader instances is based on the promotion tier which can be between 0-15. Any serverless v2 instance in the 0-1 tiers will scale alongside the writer even if the current read load does not require the capacity. This is because instances in the 0-1 tier are first priority for failover and Aurora wants to ensure that in the event of a failover the reader that gets promoted is scaled to handle the write load.

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_ServerlessV2(jsii.String("writer")),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*ServerlessV2(jsii.String("reader1"), &ServerlessV2ClusterInstanceProps{
			ScaleWithWriter: jsii.Boolean(true),
		}),
		rds.ClusterInstance_*ServerlessV2(jsii.String("reader2")),
	},
	Vpc: Vpc,
})
  • When the writer scales up, any readers in tier 0-1 will scale up to match
  • Scaling for tier 2-15 is independent of what is happening on the writer
  • Readers in tier 2-15 scale up based on read load against the individual reader

When configuring your cluster it is important to take this into consideration and ensure that in the event of a failover there is an instance that is scaled up to take over.

Mixing Serverless v2 and Provisioned instances

You are able to create a cluster that has both provisioned and serverless instances. This blog post has an excellent guide on choosing between serverless and provisioned instances based on use case.

There are a couple of high level differences:

  • Engine Version (serverless only supports MySQL 8+ & PostgreSQL 13+)
  • Memory up to 256GB can be supported by serverless
Provisioned writer

With a provisioned writer and serverless v2 readers, some of the serverless readers will need to be configured to scale with the writer so they can act as failover targets. You will need to determine the correct capacity based on the provisioned instance type and it's utilization.

As an example, if the CPU utilization for a db.r6g.4xlarge (128 GB) instance stays at 10% most times, then the minimum ACUs may be set at 6.5 ACUs (10% of 128 GB) and maximum may be set at 64 ACUs (64x2GB=128GB). Keep in mind that the speed at which the serverless instance can scale up is determined by the minimum capacity so if your cluster has spiky workloads you may need to set a higher minimum capacity.

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_R6G, ec2.InstanceSize_XLARGE4),
	}),
	ServerlessV2MinCapacity: jsii.Number(6.5),
	ServerlessV2MaxCapacity: jsii.Number(64),
	Readers: []iClusterInstance{
		rds.ClusterInstance_ServerlessV2(jsii.String("reader1"), &ServerlessV2ClusterInstanceProps{
			ScaleWithWriter: jsii.Boolean(true),
		}),
		rds.ClusterInstance_*ServerlessV2(jsii.String("reader2")),
	},
	Vpc: Vpc,
})

In the above example reader1 will scale with the writer based on the writer's utilization. So if the writer were to go to 50% utilization then reader1 would scale up to use 32 ACUs. If the read load stayed consistent then reader2 may remain at 6.5 since it is not configured to scale with the writer.

If one of your Aurora Serverless v2 DB instances consistently reaches the limit of its maximum capacity, Aurora indicates this condition by setting the DB instance to a status of incompatible-parameters. While the DB instance has the incompatible-parameters status, some operations are blocked. For example, you can't upgrade the engine version.

CA certificate

Use the caCertificate property to specify the CA certificates to use for a cluster instances:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		CaCertificate: rds.CaCertificate_RDS_CA_RDS2048_G1(),
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_ServerlessV2(jsii.String("reader"), &ServerlessV2ClusterInstanceProps{
			CaCertificate: rds.CaCertificate_Of(jsii.String("custom-ca")),
		}),
	},
	Vpc: Vpc,
})
Migrating from instanceProps

Creating instances in a DatabaseCluster using instanceProps & instances is deprecated. To migrate to the new properties you can provide the isFromLegacyInstanceProps property.

For example, in order to migrate from this deprecated config:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_03_0(),
	}),
	Instances: jsii.Number(2),
	InstanceProps: &InstanceProps{
		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
		VpcSubnets: &SubnetSelection{
			SubnetType: ec2.SubnetType_PUBLIC,
		},
		Vpc: *Vpc,
	},
})

You would need to migrate to this. The old method of providing instanceProps and instances will create the number of instances that you provide. The first instance will be the writer and the rest will be the readers. It's important that the id that you provide is Instance{NUMBER}. The writer should always be Instance1 and the readers will increment from there.

Make sure to run a cdk diff before deploying to make sure that all changes are expected. Always test the migration in a non-production environment first.

var vpc vpc
instanceProps := map[string]interface{}{
	"instanceType": ec2.InstanceType_of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
	"isFromLegacyInstanceProps": jsii.Boolean(true),
}
cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_03_0(),
	}),
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PUBLIC,
	},
	Vpc: Vpc,
	Writer: rds.ClusterInstance_Provisioned(jsii.String("Instance1"), &ProvisionedClusterInstanceProps{
		InstanceType: instanceProps.instanceType,
		IsFromLegacyInstanceProps: instanceProps.isFromLegacyInstanceProps,
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*Provisioned(jsii.String("Instance2"), &ProvisionedClusterInstanceProps{
			InstanceType: instanceProps.instanceType,
			IsFromLegacyInstanceProps: instanceProps.isFromLegacyInstanceProps,
		}),
	},
})

Starting an instance database

To set up an instance database, define a DatabaseInstance. You must always launch a database in a VPC. Use the vpcSubnets attribute to control whether your instances will be launched privately or publicly:

var vpc vpc

instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	// optional, defaults to m5.large
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("syscdk")),
	 // Optional - will default to 'admin' username and generated password
	Vpc: Vpc,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
})

If there isn't a constant for the exact engine version you want to use, all of the Version classes have a static of method that can be used to create an arbitrary version.

customEngineVersion := rds.OracleEngineVersion_Of(jsii.String("19.0.0.0.ru-2020-04.rur-2020-04.r1"), jsii.String("19"))

By default, the master password will be generated and stored in AWS Secrets Manager.

To use the storage auto scaling option of RDS you can specify the maximum allocated storage. This is the upper limit to which RDS can automatically scale the storage. More info can be found here Example for max storage configuration:

var vpc vpc

instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
		Version: rds.PostgresEngineVersion_VER_15_2(),
	}),
	// optional, defaults to m5.large
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_SMALL),
	Vpc: Vpc,
	MaxAllocatedStorage: jsii.Number(200),
})

To use dual-stack mode, specify NetworkType.DUAL on the networkType property:

var vpc vpc
// VPC and subnets must have IPv6 CIDR blocks
instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
		Version: rds.PostgresEngineVersion_VER_15_2(),
	}),
	Vpc: Vpc,
	NetworkType: rds.NetworkType_DUAL,
	PubliclyAccessible: jsii.Boolean(false),
})

For more information about dual-stack mode, see Working with a DB instance in a VPC.

Use DatabaseInstanceFromSnapshot and DatabaseInstanceReadReplica to create an instance from snapshot or a source database respectively:

var vpc vpc

var sourceInstance databaseInstance

rds.NewDatabaseInstanceFromSnapshot(this, jsii.String("Instance"), &DatabaseInstanceFromSnapshotProps{
	SnapshotIdentifier: jsii.String("my-snapshot"),
	Engine: rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
		Version: rds.PostgresEngineVersion_VER_15_2(),
	}),
	// optional, defaults to m5.large
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_LARGE),
	Vpc: Vpc,
})
rds.NewDatabaseInstanceReadReplica(this, jsii.String("ReadReplica"), &DatabaseInstanceReadReplicaProps{
	SourceDatabaseInstance: sourceInstance,
	InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_LARGE),
	Vpc: Vpc,
})

Automatic backups of read replica instances are only supported for MySQL and MariaDB. By default, automatic backups are disabled for read replicas and can only be enabled (using backupRetention) if also enabled on the source instance.

Creating a "production" Oracle database instance with option and parameter groups:

// Set open cursors with parameter group
parameterGroup := rds.NewParameterGroup(this, jsii.String("ParameterGroup"), &ParameterGroupProps{
	Engine: rds.DatabaseInstanceEngine_OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Parameters: map[string]*string{
		"open_cursors": jsii.String("2500"),
	},
})

optionGroup := rds.NewOptionGroup(this, jsii.String("OptionGroup"), &OptionGroupProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Configurations: []optionConfiguration{
		&optionConfiguration{
			Name: jsii.String("LOCATOR"),
		},
		&optionConfiguration{
			Name: jsii.String("OEM"),
			Port: jsii.Number(1158),
			Vpc: *Vpc,
		},
	},
})

// Allow connections to OEM
optionGroup.OptionConnections.oEM.Connections.AllowDefaultPortFromAnyIpv4()

// Database instance with production values
instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	LicenseModel: rds.LicenseModel_BRING_YOUR_OWN_LICENSE,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_MEDIUM),
	MultiAz: jsii.Boolean(true),
	StorageType: rds.StorageType_IO1,
	Credentials: rds.Credentials_FromUsername(jsii.String("syscdk")),
	Vpc: Vpc,
	DatabaseName: jsii.String("ORCL"),
	StorageEncrypted: jsii.Boolean(true),
	BackupRetention: cdk.Duration_Days(jsii.Number(7)),
	MonitoringInterval: cdk.Duration_Seconds(jsii.Number(60)),
	EnablePerformanceInsights: jsii.Boolean(true),
	CloudwatchLogsExports: []*string{
		jsii.String("trace"),
		jsii.String("audit"),
		jsii.String("alert"),
		jsii.String("listener"),
	},
	CloudwatchLogsRetention: logs.RetentionDays_ONE_MONTH,
	AutoMinorVersionUpgrade: jsii.Boolean(true),
	 // required to be true if LOCATOR is used in the option group
	OptionGroup: OptionGroup,
	ParameterGroup: ParameterGroup,
	RemovalPolicy: awscdk.RemovalPolicy_DESTROY,
})

// Allow connections on default port from any IPV4
instance.connections.AllowDefaultPortFromAnyIpv4()

// Rotate the master user password every 30 days
instance.addRotationSingleUser()

// Add alarm for high CPU
// Add alarm for high CPU
cloudwatch.NewAlarm(this, jsii.String("HighCPU"), &AlarmProps{
	Metric: instance.metricCPUUtilization(),
	Threshold: jsii.Number(90),
	EvaluationPeriods: jsii.Number(1),
})

// Trigger Lambda function on instance availability events
fn := lambda.NewFunction(this, jsii.String("Function"), &FunctionProps{
	Code: lambda.Code_FromInline(jsii.String("exports.handler = (event) => console.log(event);")),
	Handler: jsii.String("index.handler"),
	Runtime: lambda.Runtime_NODEJS_18_X(),
})

availabilityRule := instance.OnEvent(jsii.String("Availability"), &OnEventOptions{
	Target: targets.NewLambdaFunction(fn),
})
availabilityRule.AddEventPattern(&EventPattern{
	Detail: map[string]interface{}{
		"EventCategories": []interface{}{
			jsii.String("availability"),
		},
	},
})

Add XMLDB and OEM with option group

// Set open cursors with parameter group
parameterGroup := rds.NewParameterGroup(this, jsii.String("ParameterGroup"), &ParameterGroupProps{
	Engine: rds.DatabaseInstanceEngine_OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Parameters: map[string]*string{
		"open_cursors": jsii.String("2500"),
	},
})

optionGroup := rds.NewOptionGroup(this, jsii.String("OptionGroup"), &OptionGroupProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Configurations: []optionConfiguration{
		&optionConfiguration{
			Name: jsii.String("LOCATOR"),
		},
		&optionConfiguration{
			Name: jsii.String("OEM"),
			Port: jsii.Number(1158),
			Vpc: *Vpc,
		},
	},
})

// Allow connections to OEM
optionGroup.OptionConnections.oEM.Connections.AllowDefaultPortFromAnyIpv4()

// Database instance with production values
instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	LicenseModel: rds.LicenseModel_BRING_YOUR_OWN_LICENSE,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_MEDIUM),
	MultiAz: jsii.Boolean(true),
	StorageType: rds.StorageType_IO1,
	Credentials: rds.Credentials_FromUsername(jsii.String("syscdk")),
	Vpc: Vpc,
	DatabaseName: jsii.String("ORCL"),
	StorageEncrypted: jsii.Boolean(true),
	BackupRetention: cdk.Duration_Days(jsii.Number(7)),
	MonitoringInterval: cdk.Duration_Seconds(jsii.Number(60)),
	EnablePerformanceInsights: jsii.Boolean(true),
	CloudwatchLogsExports: []*string{
		jsii.String("trace"),
		jsii.String("audit"),
		jsii.String("alert"),
		jsii.String("listener"),
	},
	CloudwatchLogsRetention: logs.RetentionDays_ONE_MONTH,
	AutoMinorVersionUpgrade: jsii.Boolean(true),
	 // required to be true if LOCATOR is used in the option group
	OptionGroup: OptionGroup,
	ParameterGroup: ParameterGroup,
	RemovalPolicy: awscdk.RemovalPolicy_DESTROY,
})

// Allow connections on default port from any IPV4
instance.connections.AllowDefaultPortFromAnyIpv4()

// Rotate the master user password every 30 days
instance.addRotationSingleUser()

// Add alarm for high CPU
// Add alarm for high CPU
cloudwatch.NewAlarm(this, jsii.String("HighCPU"), &AlarmProps{
	Metric: instance.metricCPUUtilization(),
	Threshold: jsii.Number(90),
	EvaluationPeriods: jsii.Number(1),
})

// Trigger Lambda function on instance availability events
fn := lambda.NewFunction(this, jsii.String("Function"), &FunctionProps{
	Code: lambda.Code_FromInline(jsii.String("exports.handler = (event) => console.log(event);")),
	Handler: jsii.String("index.handler"),
	Runtime: lambda.Runtime_NODEJS_18_X(),
})

availabilityRule := instance.OnEvent(jsii.String("Availability"), &OnEventOptions{
	Target: targets.NewLambdaFunction(fn),
})
availabilityRule.AddEventPattern(&EventPattern{
	Detail: map[string]interface{}{
		"EventCategories": []interface{}{
			jsii.String("availability"),
		},
	},
})

Use the storageType property to specify the type of storage to use for the instance:

var vpc vpc


iopsInstance := rds.NewDatabaseInstance(this, jsii.String("IopsInstance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_30(),
	}),
	Vpc: Vpc,
	StorageType: rds.StorageType_IO1,
	Iops: jsii.Number(5000),
})

gp3Instance := rds.NewDatabaseInstance(this, jsii.String("Gp3Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_*Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_30(),
	}),
	Vpc: Vpc,
	AllocatedStorage: jsii.Number(500),
	StorageType: rds.StorageType_GP3,
	StorageThroughput: jsii.Number(500),
})

Use the caCertificate property to specify the CA certificates to use for the instance:

var vpc vpc


rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_30(),
	}),
	Vpc: Vpc,
	CaCertificate: rds.CaCertificate_RDS_CA_RDS2048_G1(),
})

You can specify a custom CA certificate with:

var vpc vpc


rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_30(),
	}),
	Vpc: Vpc,
	CaCertificate: rds.CaCertificate_Of(jsii.String("future-rds-ca")),
})

Setting Public Accessibility

You can set public accessibility for the database instance or cluster using the publiclyAccessible property. If you specify true, it creates an instance with a publicly resolvable DNS name, which resolves to a public IP address. If you specify false, it creates an internal instance with a DNS name that resolves to a private IP address. The default value depends on vpcSubnets. It will be true if vpcSubnets is subnetType: SubnetType.PUBLIC, false otherwise.

var vpc vpc

// Setting public accessibility for DB instance
// Setting public accessibility for DB instance
rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_19(),
	}),
	Vpc: Vpc,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	PubliclyAccessible: jsii.Boolean(true),
})

// Setting public accessibility for DB cluster
// Setting public accessibility for DB cluster
rds.NewDatabaseCluster(this, jsii.String("DatabaseCluster"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_03_0(),
	}),
	InstanceProps: &InstanceProps{
		Vpc: *Vpc,
		VpcSubnets: &SubnetSelection{
			SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
		},
		PubliclyAccessible: jsii.Boolean(true),
	},
})

Instance events

To define Amazon CloudWatch event rules for database instances, use the onEvent method:

var instance databaseInstance
var fn function

rule := instance.OnEvent(jsii.String("InstanceEvent"), &OnEventOptions{
	Target: targets.NewLambdaFunction(fn),
})

Login credentials

By default, database instances and clusters (with the exception of DatabaseInstanceFromSnapshot and ServerlessClusterFromSnapshot) will have admin user with an auto-generated password. An alternative username (and password) may be specified for the admin user instead of the default.

The following examples use a DatabaseInstance, but the same usage is applicable to DatabaseCluster.

var vpc vpc

engine := rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
	Version: rds.PostgresEngineVersion_VER_15_2(),
})
rds.NewDatabaseInstance(this, jsii.String("InstanceWithUsername"), &DatabaseInstanceProps{
	Engine: Engine,
	Vpc: Vpc,
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("postgres")),
})

rds.NewDatabaseInstance(this, jsii.String("InstanceWithUsernameAndPassword"), &DatabaseInstanceProps{
	Engine: Engine,
	Vpc: Vpc,
	Credentials: rds.Credentials_FromPassword(jsii.String("postgres"), awscdk.SecretValue_SsmSecure(jsii.String("/dbPassword"), jsii.String("1"))),
})

mySecret := secretsmanager.Secret_FromSecretName(this, jsii.String("DBSecret"), jsii.String("myDBLoginInfo"))
rds.NewDatabaseInstance(this, jsii.String("InstanceWithSecretLogin"), &DatabaseInstanceProps{
	Engine: Engine,
	Vpc: Vpc,
	Credentials: rds.Credentials_FromSecret(mySecret),
})

Secrets generated by fromGeneratedSecret() can be customized:

var vpc vpc

engine := rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
	Version: rds.PostgresEngineVersion_VER_15_2(),
})
myKey := kms.NewKey(this, jsii.String("MyKey"))

rds.NewDatabaseInstance(this, jsii.String("InstanceWithCustomizedSecret"), &DatabaseInstanceProps{
	Engine: Engine,
	Vpc: Vpc,
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("postgres"), &CredentialsBaseOptions{
		SecretName: jsii.String("my-cool-name"),
		EncryptionKey: myKey,
		ExcludeCharacters: jsii.String("!&*^#@()"),
		ReplicaRegions: []replicaRegion{
			&replicaRegion{
				Region: jsii.String("eu-west-1"),
			},
			&replicaRegion{
				Region: jsii.String("eu-west-2"),
			},
		},
	}),
})
Snapshot credentials

As noted above, Databases created with DatabaseInstanceFromSnapshot or ServerlessClusterFromSnapshot will not create user and auto-generated password by default because it's not possible to change the master username for a snapshot. Instead, they will use the existing username and password from the snapshot. You can still generate a new password - to generate a secret similarly to the other constructs, pass in credentials with fromGeneratedSecret() or fromGeneratedPassword().

var vpc vpc

engine := rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
	Version: rds.PostgresEngineVersion_VER_15_2(),
})
myKey := kms.NewKey(this, jsii.String("MyKey"))

rds.NewDatabaseInstanceFromSnapshot(this, jsii.String("InstanceFromSnapshotWithCustomizedSecret"), &DatabaseInstanceFromSnapshotProps{
	Engine: Engine,
	Vpc: Vpc,
	SnapshotIdentifier: jsii.String("mySnapshot"),
	Credentials: rds.SnapshotCredentials_FromGeneratedSecret(jsii.String("username"), &SnapshotCredentialsFromGeneratedPasswordOptions{
		EncryptionKey: myKey,
		ExcludeCharacters: jsii.String("!&*^#@()"),
		ReplicaRegions: []replicaRegion{
			&replicaRegion{
				Region: jsii.String("eu-west-1"),
			},
			&replicaRegion{
				Region: jsii.String("eu-west-2"),
			},
		},
	}),
})

Connecting

To control who can access the cluster or instance, use the .connections attribute. RDS databases have a default port, so you don't need to specify the port:

var cluster databaseCluster

cluster.Connections.AllowFromAnyIpv4(ec2.Port_AllTraffic(), jsii.String("Open to the world"))

The endpoints to access your database cluster will be available as the .clusterEndpoint and .readerEndpoint attributes:

var cluster databaseCluster

writeAddress := cluster.ClusterEndpoint.SocketAddress

For an instance database:

var instance databaseInstance

address := instance.InstanceEndpoint.SocketAddress

Rotating credentials

When the master password is generated and stored in AWS Secrets Manager, it can be rotated automatically:

var instance databaseInstance
var mySecurityGroup securityGroup


instance.addRotationSingleUser(&RotationSingleUserOptions{
	AutomaticallyAfter: awscdk.Duration_Days(jsii.Number(7)),
	 // defaults to 30 days
	ExcludeCharacters: jsii.String("!@#$%^&*"),
	 // defaults to the set " %+~`#/// here*()|[]{}:;<>?!'/@\"\\"
	SecurityGroup: mySecurityGroup,
})
cluster := rds.NewDatabaseCluster(stack, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA(),
	InstanceProps: &InstanceProps{
		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
		Vpc: *Vpc,
	},
})

cluster.addRotationSingleUser()

clusterWithCustomRotationOptions := rds.NewDatabaseCluster(stack, jsii.String("CustomRotationOptions"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA(),
	InstanceProps: &InstanceProps{
		InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
		Vpc: *Vpc,
	},
})
clusterWithCustomRotationOptions.addRotationSingleUser(&RotationSingleUserOptions{
	AutomaticallyAfter: cdk.Duration_Days(jsii.Number(7)),
	ExcludeCharacters: jsii.String("!@#$%^&*"),
	SecurityGroup: SecurityGroup,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	Endpoint: endpoint,
})

The multi user rotation scheme is also available:

var instance databaseInstance
var myImportedSecret databaseSecret

instance.addRotationMultiUser(jsii.String("MyUser"), &RotationMultiUserOptions{
	Secret: myImportedSecret,
})

It's also possible to create user credentials together with the instance/cluster and add rotation:

var instance databaseInstance

myUserSecret := rds.NewDatabaseSecret(this, jsii.String("MyUserSecret"), &DatabaseSecretProps{
	Username: jsii.String("myuser"),
	SecretName: jsii.String("my-user-secret"),
	 // optional, defaults to a CloudFormation-generated name
	Dbname: jsii.String("mydb"),
	 //optional, defaults to the main database of the RDS cluster this secret gets attached to
	MasterSecret: instance.Secret,
	ExcludeCharacters: jsii.String("{}[]()'\"/\\"),
})
myUserSecretAttached := myUserSecret.attach(instance) // Adds DB connections information in the secret

instance.addRotationMultiUser(jsii.String("MyUser"), &RotationMultiUserOptions{
	 // Add rotation using the multi user scheme
	Secret: myUserSecretAttached,
})

Note: This user must be created manually in the database using the master credentials. The rotation will start as soon as this user exists.

Access to the Secrets Manager API is required for the secret rotation. This can be achieved either with internet connectivity (through NAT) or with a VPC interface endpoint. By default, the rotation Lambda function is deployed in the same subnets as the instance/cluster. If access to the Secrets Manager API is not possible from those subnets or using the default API endpoint, use the vpcSubnets and/or endpoint options:

var instance databaseInstance
var myEndpoint interfaceVpcEndpoint


instance.addRotationSingleUser(&RotationSingleUserOptions{
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	 // Place rotation Lambda in private subnets
	Endpoint: myEndpoint,
})

See also aws-cdk-lib/aws-secretsmanager for credentials rotation of existing clusters/instances.

By default, any stack updates will cause AWS Secrets Manager to rotate a secret immediately. To prevent this behavior and wait until the next scheduled rotation window specified via the automaticallyAfter property, set the rotateImmediatelyOnUpdate property to false:

var instance databaseInstance
var mySecurityGroup securityGroup


instance.addRotationSingleUser(&RotationSingleUserOptions{
	AutomaticallyAfter: awscdk.Duration_Days(jsii.Number(7)),
	 // defaults to 30 days
	ExcludeCharacters: jsii.String("!@#$%^&*"),
	 // defaults to the set " %+~`#/// here*()|[]{}:;<>?!'/@\"\\"
	SecurityGroup: mySecurityGroup,
	 // defaults to an auto-created security group
	RotateImmediatelyOnUpdate: jsii.Boolean(false),
})

IAM Authentication

You can also authenticate to a database instance using AWS Identity and Access Management (IAM) database authentication; See https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html for more information and a list of supported versions and limitations.

Note: grantConnect() does not currently work - see this GitHub issue.

The following example shows enabling IAM authentication for a database instance and granting connection access to an IAM role.

var vpc vpc

instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_19(),
	}),
	Vpc: Vpc,
	IamAuthentication: jsii.Boolean(true),
})
role := iam.NewRole(this, jsii.String("DBRole"), &RoleProps{
	AssumedBy: iam.NewAccountPrincipal(this.Account),
})
instance.grantConnect(role)

The following example shows granting connection access for RDS Proxy to an IAM role.

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_03_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Vpc: Vpc,
})

proxy := rds.NewDatabaseProxy(this, jsii.String("Proxy"), &DatabaseProxyProps{
	ProxyTarget: rds.ProxyTarget_FromCluster(cluster),
	Secrets: []iSecret{
		cluster.Secret,
	},
	Vpc: Vpc,
})

role := iam.NewRole(this, jsii.String("DBProxyRole"), &RoleProps{
	AssumedBy: iam.NewAccountPrincipal(this.Account),
})
proxy.GrantConnect(role, jsii.String("admin"))

Note: In addition to the setup above, a database user will need to be created to support IAM auth. See https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.DBAccounts.html for setup instructions.

Kerberos Authentication

You can also authenticate using Kerberos to a database instance using AWS Managed Microsoft AD for authentication; See https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html for more information and a list of supported versions and limitations.

The following example shows enabling domain support for a database instance and creating an IAM role to access Directory Services.

var vpc vpc

role := iam.NewRole(this, jsii.String("RDSDirectoryServicesRole"), &RoleProps{
	AssumedBy: iam.NewServicePrincipal(jsii.String("rds.amazonaws.com")),
	ManagedPolicies: []iManagedPolicy{
		iam.ManagedPolicy_FromAwsManagedPolicyName(jsii.String("service-role/AmazonRDSDirectoryServiceAccess")),
	},
})
instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_19(),
	}),
	Vpc: Vpc,
	Domain: jsii.String("d-????????"),
	 // The ID of the domain for the instance to join.
	DomainRole: role,
})

Note: In addition to the setup above, you need to make sure that the database instance has network connectivity to the domain controllers. This includes enabling cross-VPC traffic if in a different VPC and setting up the appropriate security groups/network ACL to allow traffic between the database instance and domain controllers. Once configured, see https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html for details on configuring users for each available database engine.

Metrics

Database instances and clusters both expose metrics (cloudwatch.Metric):

// The number of database connections in use (average over 5 minutes)
var instance databaseInstance

// Average CPU utilization over 5 minutes
var cluster databaseCluster

dbConnections := instance.metricDatabaseConnections()
cpuUtilization := cluster.metricCPUUtilization()

// The average amount of time taken per disk I/O operation (average over 1 minute)
readLatency := instance.metric(jsii.String("ReadLatency"), &MetricOptions{
	Statistic: jsii.String("Average"),
	Period: awscdk.Duration_Seconds(jsii.Number(60)),
})

Enabling S3 integration

Data in S3 buckets can be imported to and exported from certain database engines using SQL queries. To enable this functionality, set the s3ImportBuckets and s3ExportBuckets properties for import and export respectively. When configured, the CDK automatically creates and configures IAM roles as required. Additionally, the s3ImportRole and s3ExportRole properties can be used to set this role directly.

You can read more about loading data to (or from) S3 here:

The following snippet sets up a database cluster with different S3 buckets where the data is imported and exported -

import "github.com/aws/aws-cdk-go/awscdk"

var vpc vpc

importBucket := s3.NewBucket(this, jsii.String("importbucket"))
exportBucket := s3.NewBucket(this, jsii.String("exportbucket"))
rds.NewDatabaseCluster(this, jsii.String("dbcluster"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_03_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Vpc: Vpc,
	S3ImportBuckets: []iBucket{
		importBucket,
	},
	S3ExportBuckets: []*iBucket{
		exportBucket,
	},
})

Creating a Database Proxy

Amazon RDS Proxy sits between your application and your relational database to efficiently manage connections to the database and improve scalability of the application. Learn more about at Amazon RDS Proxy

The following code configures an RDS Proxy for a DatabaseInstance.

var vpc vpc
var securityGroup securityGroup
var secrets []secret
var dbInstance databaseInstance


proxy := dbInstance.AddProxy(jsii.String("proxy"), &DatabaseProxyOptions{
	BorrowTimeout: awscdk.Duration_Seconds(jsii.Number(30)),
	MaxConnectionsPercent: jsii.Number(50),
	Secrets: Secrets,
	Vpc: Vpc,
})

Exporting Logs

You can publish database logs to Amazon CloudWatch Logs. With CloudWatch Logs, you can perform real-time analysis of the log data, store the data in highly durable storage, and manage the data with the CloudWatch Logs Agent. This is available for both database instances and clusters; the types of logs available depend on the database type and engine being used.

import logs "github.com/aws/aws-cdk-go/awscdk"
var myLogsPublishingRole role
var vpc vpc


// Exporting logs from a cluster
cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_Aurora(&AuroraClusterEngineProps{
		Version: rds.AuroraEngineVersion_VER_1_17_9(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Vpc: Vpc,
	CloudwatchLogsExports: []*string{
		jsii.String("error"),
		jsii.String("general"),
		jsii.String("slowquery"),
		jsii.String("audit"),
	},
	 // Export all available MySQL-based logs
	CloudwatchLogsRetention: logs.RetentionDays_THREE_MONTHS,
	 // Optional - default is to never expire logs
	CloudwatchLogsRetentionRole: myLogsPublishingRole,
})

// Exporting logs from an instance
instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
		Version: rds.PostgresEngineVersion_VER_15_2(),
	}),
	Vpc: Vpc,
	CloudwatchLogsExports: []*string{
		jsii.String("postgresql"),
	},
})

Option Groups

Some DB engines offer additional features that make it easier to manage data and databases, and to provide additional security for your database. Amazon RDS uses option groups to enable and configure these features. An option group can specify features, called options, that are available for a particular Amazon RDS DB instance.

var vpc vpc
var securityGroup securityGroup


rds.NewOptionGroup(this, jsii.String("Options"), &OptionGroupProps{
	Engine: rds.DatabaseInstanceEngine_OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19(),
	}),
	Configurations: []optionConfiguration{
		&optionConfiguration{
			Name: jsii.String("OEM"),
			Port: jsii.Number(5500),
			Vpc: *Vpc,
			SecurityGroups: []iSecurityGroup{
				securityGroup,
			},
		},
	},
})

Parameter Groups

Database parameters specify how the database is configured. For example, database parameters can specify the amount of resources, such as memory, to allocate to a database. You manage your database configuration by associating your DB instances with parameter groups. Amazon RDS defines parameter groups with default settings.

You can create your own parameter group for your cluster or instance and associate it with your database:

var vpc vpc


parameterGroup := rds.NewParameterGroup(this, jsii.String("ParameterGroup"), &ParameterGroupProps{
	Engine: rds.DatabaseInstanceEngine_SqlServerEe(&SqlServerEeInstanceEngineProps{
		Version: rds.SqlServerEngineVersion_VER_11(),
	}),
	Parameters: map[string]*string{
		"locks": jsii.String("100"),
	},
})

rds.NewDatabaseInstance(this, jsii.String("Database"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_SQL_SERVER_EE(),
	Vpc: Vpc,
	ParameterGroup: ParameterGroup,
})

Another way to specify parameters is to use the inline field parameters that creates an RDS parameter group for you. You can use this if you do not want to reuse the parameter group instance for different instances:

var vpc vpc


rds.NewDatabaseInstance(this, jsii.String("Database"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_SqlServerEe(&SqlServerEeInstanceEngineProps{
		Version: rds.SqlServerEngineVersion_VER_11(),
	}),
	Vpc: Vpc,
	Parameters: map[string]*string{
		"locks": jsii.String("100"),
	},
})

You cannot specify a parameter map and a parameter group at the same time.

Serverless

Amazon Aurora Serverless is an on-demand, auto-scaling configuration for Amazon Aurora. The database will automatically start up, shut down, and scale capacity up or down based on your application's needs. It enables you to run your database in the cloud without managing any database instances.

The following example initializes an Aurora Serverless PostgreSql cluster. Aurora Serverless clusters can specify scaling properties which will be used to automatically scale the database cluster seamlessly based on the workload.

var vpc vpc


cluster := rds.NewServerlessCluster(this, jsii.String("AnotherCluster"), &ServerlessClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA_POSTGRESQL(),
	CopyTagsToSnapshot: jsii.Boolean(true),
	 // whether to save the cluster tags when creating the snapshot. Default is 'true'
	ParameterGroup: rds.ParameterGroup_FromParameterGroupName(this, jsii.String("ParameterGroup"), jsii.String("default.aurora-postgresql10")),
	Vpc: Vpc,
	Scaling: &ServerlessScalingOptions{
		AutoPause: awscdk.Duration_Minutes(jsii.Number(10)),
		 // default is to pause after 5 minutes of idle time
		MinCapacity: rds.AuroraCapacityUnit_ACU_8,
		 // default is 2 Aurora capacity units (ACUs)
		MaxCapacity: rds.AuroraCapacityUnit_ACU_32,
	},
})

Aurora Serverless Clusters do not support the following features:

  • Loading data from an Amazon S3 bucket
  • Saving data to an Amazon S3 bucket
  • Invoking an AWS Lambda function with an Aurora MySQL native function
  • Aurora replicas
  • Backtracking
  • Multi-master clusters
  • Database cloning
  • IAM database cloning
  • IAM database authentication
  • Restoring a snapshot from MySQL DB instance
  • Performance Insights
  • RDS Proxy

Read more about the limitations of Aurora Serverless

Learn more about using Amazon Aurora Serverless by reading the documentation

Use ServerlessClusterFromSnapshot to create a serverless cluster from a snapshot:

var vpc vpc

rds.NewServerlessClusterFromSnapshot(this, jsii.String("Cluster"), &ServerlessClusterFromSnapshotProps{
	Engine: rds.DatabaseClusterEngine_AURORA_MYSQL(),
	Vpc: Vpc,
	SnapshotIdentifier: jsii.String("mySnapshot"),
})
Data API

You can access your Aurora Serverless DB cluster using the built-in Data API. The Data API doesn't require a persistent connection to the DB cluster. Instead, it provides a secure HTTP endpoint and integration with AWS SDKs.

The following example shows granting Data API access to a Lamba function.

var vpc vpc

var code code


cluster := rds.NewServerlessCluster(this, jsii.String("AnotherCluster"), &ServerlessClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA_MYSQL(),
	Vpc: Vpc,
	 // this parameter is optional for serverless Clusters
	EnableDataApi: jsii.Boolean(true),
})
fn := lambda.NewFunction(this, jsii.String("MyFunction"), &FunctionProps{
	Runtime: lambda.Runtime_NODEJS_LATEST(),
	Handler: jsii.String("index.handler"),
	Code: Code,
	Environment: map[string]*string{
		"CLUSTER_ARN": cluster.clusterArn,
		"SECRET_ARN": cluster.secret.secretArn,
	},
})
cluster.grantDataApiAccess(fn)

Note: To invoke the Data API, the resource will need to read the secret associated with the cluster.

To learn more about using the Data API, see the documentation.

Default VPC

The vpc parameter is optional.

If not provided, the cluster will be created in the default VPC of the account and region. As this VPC is not deployed with AWS CDK, you can't configure the vpcSubnets, subnetGroup or securityGroups of the Aurora Serverless Cluster. If you want to provide one of vpcSubnets, subnetGroup or securityGroups parameter, please provide a vpc.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CfnCustomDBEngineVersion_CFN_RESOURCE_TYPE_NAME added in v2.85.0

func CfnCustomDBEngineVersion_CFN_RESOURCE_TYPE_NAME() *string

func CfnCustomDBEngineVersion_IsCfnElement added in v2.85.0

func CfnCustomDBEngineVersion_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnCustomDBEngineVersion_IsCfnResource added in v2.85.0

func CfnCustomDBEngineVersion_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnCustomDBEngineVersion_IsConstruct added in v2.85.0

func CfnCustomDBEngineVersion_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnDBClusterParameterGroup_CFN_RESOURCE_TYPE_NAME

func CfnDBClusterParameterGroup_CFN_RESOURCE_TYPE_NAME() *string

func CfnDBClusterParameterGroup_IsCfnElement

func CfnDBClusterParameterGroup_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnDBClusterParameterGroup_IsCfnResource

func CfnDBClusterParameterGroup_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnDBClusterParameterGroup_IsConstruct

func CfnDBClusterParameterGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnDBCluster_CFN_RESOURCE_TYPE_NAME

func CfnDBCluster_CFN_RESOURCE_TYPE_NAME() *string

func CfnDBCluster_IsCfnElement

func CfnDBCluster_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnDBCluster_IsCfnResource

func CfnDBCluster_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnDBCluster_IsConstruct

func CfnDBCluster_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnDBInstance_CFN_RESOURCE_TYPE_NAME

func CfnDBInstance_CFN_RESOURCE_TYPE_NAME() *string

func CfnDBInstance_IsCfnElement

func CfnDBInstance_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnDBInstance_IsCfnResource

func CfnDBInstance_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnDBInstance_IsConstruct

func CfnDBInstance_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnDBParameterGroup_CFN_RESOURCE_TYPE_NAME

func CfnDBParameterGroup_CFN_RESOURCE_TYPE_NAME() *string

func CfnDBParameterGroup_IsCfnElement

func CfnDBParameterGroup_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnDBParameterGroup_IsCfnResource

func CfnDBParameterGroup_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnDBParameterGroup_IsConstruct

func CfnDBParameterGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnDBProxyEndpoint_CFN_RESOURCE_TYPE_NAME

func CfnDBProxyEndpoint_CFN_RESOURCE_TYPE_NAME() *string

func CfnDBProxyEndpoint_IsCfnElement

func CfnDBProxyEndpoint_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnDBProxyEndpoint_IsCfnResource

func CfnDBProxyEndpoint_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnDBProxyEndpoint_IsConstruct

func CfnDBProxyEndpoint_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnDBProxyTargetGroup_CFN_RESOURCE_TYPE_NAME

func CfnDBProxyTargetGroup_CFN_RESOURCE_TYPE_NAME() *string

func CfnDBProxyTargetGroup_IsCfnElement

func CfnDBProxyTargetGroup_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnDBProxyTargetGroup_IsCfnResource

func CfnDBProxyTargetGroup_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnDBProxyTargetGroup_IsConstruct

func CfnDBProxyTargetGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnDBProxy_CFN_RESOURCE_TYPE_NAME

func CfnDBProxy_CFN_RESOURCE_TYPE_NAME() *string

func CfnDBProxy_IsCfnElement

func CfnDBProxy_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnDBProxy_IsCfnResource

func CfnDBProxy_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnDBProxy_IsConstruct

func CfnDBProxy_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnDBSecurityGroupIngress_CFN_RESOURCE_TYPE_NAME

func CfnDBSecurityGroupIngress_CFN_RESOURCE_TYPE_NAME() *string

func CfnDBSecurityGroupIngress_IsCfnElement

func CfnDBSecurityGroupIngress_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnDBSecurityGroupIngress_IsCfnResource

func CfnDBSecurityGroupIngress_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnDBSecurityGroupIngress_IsConstruct

func CfnDBSecurityGroupIngress_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnDBSecurityGroup_CFN_RESOURCE_TYPE_NAME

func CfnDBSecurityGroup_CFN_RESOURCE_TYPE_NAME() *string

func CfnDBSecurityGroup_IsCfnElement

func CfnDBSecurityGroup_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnDBSecurityGroup_IsCfnResource

func CfnDBSecurityGroup_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnDBSecurityGroup_IsConstruct

func CfnDBSecurityGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnDBSubnetGroup_CFN_RESOURCE_TYPE_NAME

func CfnDBSubnetGroup_CFN_RESOURCE_TYPE_NAME() *string

func CfnDBSubnetGroup_IsCfnElement

func CfnDBSubnetGroup_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnDBSubnetGroup_IsCfnResource

func CfnDBSubnetGroup_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnDBSubnetGroup_IsConstruct

func CfnDBSubnetGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnEventSubscription_CFN_RESOURCE_TYPE_NAME

func CfnEventSubscription_CFN_RESOURCE_TYPE_NAME() *string

func CfnEventSubscription_IsCfnElement

func CfnEventSubscription_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnEventSubscription_IsCfnResource

func CfnEventSubscription_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnEventSubscription_IsConstruct

func CfnEventSubscription_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnGlobalCluster_CFN_RESOURCE_TYPE_NAME

func CfnGlobalCluster_CFN_RESOURCE_TYPE_NAME() *string

func CfnGlobalCluster_IsCfnElement

func CfnGlobalCluster_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnGlobalCluster_IsCfnResource

func CfnGlobalCluster_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnGlobalCluster_IsConstruct

func CfnGlobalCluster_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func CfnOptionGroup_CFN_RESOURCE_TYPE_NAME

func CfnOptionGroup_CFN_RESOURCE_TYPE_NAME() *string

func CfnOptionGroup_IsCfnElement

func CfnOptionGroup_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element.

func CfnOptionGroup_IsCfnResource

func CfnOptionGroup_IsCfnResource(x interface{}) *bool

Check whether the given object is a CfnResource.

func CfnOptionGroup_IsConstruct

func CfnOptionGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func DatabaseClusterBase_IsConstruct

func DatabaseClusterBase_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func DatabaseClusterBase_IsOwnedResource added in v2.32.0

func DatabaseClusterBase_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func DatabaseClusterBase_IsResource

func DatabaseClusterBase_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func DatabaseClusterFromSnapshot_IsConstruct

func DatabaseClusterFromSnapshot_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func DatabaseClusterFromSnapshot_IsOwnedResource added in v2.32.0

func DatabaseClusterFromSnapshot_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func DatabaseClusterFromSnapshot_IsResource

func DatabaseClusterFromSnapshot_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func DatabaseCluster_IsConstruct

func DatabaseCluster_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func DatabaseCluster_IsOwnedResource added in v2.32.0

func DatabaseCluster_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func DatabaseCluster_IsResource

func DatabaseCluster_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func DatabaseInstanceBase_IsConstruct

func DatabaseInstanceBase_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func DatabaseInstanceBase_IsOwnedResource added in v2.32.0

func DatabaseInstanceBase_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func DatabaseInstanceBase_IsResource

func DatabaseInstanceBase_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func DatabaseInstanceFromSnapshot_IsConstruct

func DatabaseInstanceFromSnapshot_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func DatabaseInstanceFromSnapshot_IsOwnedResource added in v2.32.0

func DatabaseInstanceFromSnapshot_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func DatabaseInstanceFromSnapshot_IsResource

func DatabaseInstanceFromSnapshot_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func DatabaseInstanceReadReplica_IsConstruct

func DatabaseInstanceReadReplica_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func DatabaseInstanceReadReplica_IsOwnedResource added in v2.32.0

func DatabaseInstanceReadReplica_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func DatabaseInstanceReadReplica_IsResource

func DatabaseInstanceReadReplica_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func DatabaseInstance_IsConstruct

func DatabaseInstance_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func DatabaseInstance_IsOwnedResource added in v2.32.0

func DatabaseInstance_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func DatabaseInstance_IsResource

func DatabaseInstance_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func DatabaseProxy_IsConstruct

func DatabaseProxy_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func DatabaseProxy_IsOwnedResource added in v2.32.0

func DatabaseProxy_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func DatabaseProxy_IsResource

func DatabaseProxy_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func DatabaseSecret_FromSecretAttributes

func DatabaseSecret_FromSecretAttributes(scope constructs.Construct, id *string, attrs *awssecretsmanager.SecretAttributes) awssecretsmanager.ISecret

Import an existing secret into the Stack.

func DatabaseSecret_FromSecretCompleteArn

func DatabaseSecret_FromSecretCompleteArn(scope constructs.Construct, id *string, secretCompleteArn *string) awssecretsmanager.ISecret

Imports a secret by complete ARN.

The complete ARN is the ARN with the Secrets Manager-supplied suffix.

func DatabaseSecret_FromSecretNameV2

func DatabaseSecret_FromSecretNameV2(scope constructs.Construct, id *string, secretName *string) awssecretsmanager.ISecret

Imports a secret by secret name.

A secret with this name must exist in the same account & region. Replaces the deprecated `fromSecretName`. Please note this method returns ISecret that only contains partial ARN and could lead to AccessDeniedException when you pass the partial ARN to CLI or SDK to get the secret value. If your secret name ends with a hyphen and 6 characters, you should always use fromSecretCompleteArn() to avoid potential AccessDeniedException. See: https://docs.aws.amazon.com/secretsmanager/latest/userguide/troubleshoot.html#ARN_secretnamehyphen

func DatabaseSecret_FromSecretPartialArn

func DatabaseSecret_FromSecretPartialArn(scope constructs.Construct, id *string, secretPartialArn *string) awssecretsmanager.ISecret

Imports a secret by partial ARN.

The partial ARN is the ARN without the Secrets Manager-supplied suffix.

func DatabaseSecret_IsConstruct

func DatabaseSecret_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func DatabaseSecret_IsOwnedResource added in v2.32.0

func DatabaseSecret_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func DatabaseSecret_IsResource

func DatabaseSecret_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func DatabaseSecret_IsSecret added in v2.29.0

func DatabaseSecret_IsSecret(x interface{}) *bool

Return whether the given object is a Secret.

func NewCfnCustomDBEngineVersion_Override added in v2.85.0

func NewCfnCustomDBEngineVersion_Override(c CfnCustomDBEngineVersion, scope constructs.Construct, id *string, props *CfnCustomDBEngineVersionProps)

func NewCfnDBClusterParameterGroup_Override

func NewCfnDBClusterParameterGroup_Override(c CfnDBClusterParameterGroup, scope constructs.Construct, id *string, props *CfnDBClusterParameterGroupProps)

func NewCfnDBCluster_Override

func NewCfnDBCluster_Override(c CfnDBCluster, scope constructs.Construct, id *string, props *CfnDBClusterProps)

func NewCfnDBInstance_Override

func NewCfnDBInstance_Override(c CfnDBInstance, scope constructs.Construct, id *string, props *CfnDBInstanceProps)

func NewCfnDBParameterGroup_Override

func NewCfnDBParameterGroup_Override(c CfnDBParameterGroup, scope constructs.Construct, id *string, props *CfnDBParameterGroupProps)

func NewCfnDBProxyEndpoint_Override

func NewCfnDBProxyEndpoint_Override(c CfnDBProxyEndpoint, scope constructs.Construct, id *string, props *CfnDBProxyEndpointProps)

func NewCfnDBProxyTargetGroup_Override

func NewCfnDBProxyTargetGroup_Override(c CfnDBProxyTargetGroup, scope constructs.Construct, id *string, props *CfnDBProxyTargetGroupProps)

func NewCfnDBProxy_Override

func NewCfnDBProxy_Override(c CfnDBProxy, scope constructs.Construct, id *string, props *CfnDBProxyProps)

func NewCfnDBSecurityGroupIngress_Override

func NewCfnDBSecurityGroupIngress_Override(c CfnDBSecurityGroupIngress, scope constructs.Construct, id *string, props *CfnDBSecurityGroupIngressProps)

func NewCfnDBSecurityGroup_Override

func NewCfnDBSecurityGroup_Override(c CfnDBSecurityGroup, scope constructs.Construct, id *string, props *CfnDBSecurityGroupProps)

func NewCfnDBSubnetGroup_Override

func NewCfnDBSubnetGroup_Override(c CfnDBSubnetGroup, scope constructs.Construct, id *string, props *CfnDBSubnetGroupProps)

func NewCfnEventSubscription_Override

func NewCfnEventSubscription_Override(c CfnEventSubscription, scope constructs.Construct, id *string, props *CfnEventSubscriptionProps)

func NewCfnGlobalCluster_Override

func NewCfnGlobalCluster_Override(c CfnGlobalCluster, scope constructs.Construct, id *string, props *CfnGlobalClusterProps)

func NewCfnOptionGroup_Override

func NewCfnOptionGroup_Override(c CfnOptionGroup, scope constructs.Construct, id *string, props *CfnOptionGroupProps)

func NewClusterInstanceType_Override added in v2.82.0

func NewClusterInstanceType_Override(c ClusterInstanceType, instanceType *string, type_ InstanceType)

func NewCredentials_Override

func NewCredentials_Override(c Credentials)

func NewDatabaseClusterBase_Override

func NewDatabaseClusterBase_Override(d DatabaseClusterBase, scope constructs.Construct, id *string, props *awscdk.ResourceProps)

func NewDatabaseClusterEngine_Override

func NewDatabaseClusterEngine_Override(d DatabaseClusterEngine)

func NewDatabaseClusterFromSnapshot_Override

func NewDatabaseClusterFromSnapshot_Override(d DatabaseClusterFromSnapshot, scope constructs.Construct, id *string, props *DatabaseClusterFromSnapshotProps)

func NewDatabaseCluster_Override

func NewDatabaseCluster_Override(d DatabaseCluster, scope constructs.Construct, id *string, props *DatabaseClusterProps)

func NewDatabaseInstanceBase_Override

func NewDatabaseInstanceBase_Override(d DatabaseInstanceBase, scope constructs.Construct, id *string, props *awscdk.ResourceProps)

func NewDatabaseInstanceEngine_Override

func NewDatabaseInstanceEngine_Override(d DatabaseInstanceEngine)

func NewDatabaseInstanceFromSnapshot_Override

func NewDatabaseInstanceFromSnapshot_Override(d DatabaseInstanceFromSnapshot, scope constructs.Construct, id *string, props *DatabaseInstanceFromSnapshotProps)

func NewDatabaseInstanceReadReplica_Override

func NewDatabaseInstanceReadReplica_Override(d DatabaseInstanceReadReplica, scope constructs.Construct, id *string, props *DatabaseInstanceReadReplicaProps)

func NewDatabaseInstance_Override

func NewDatabaseInstance_Override(d DatabaseInstance, scope constructs.Construct, id *string, props *DatabaseInstanceProps)

func NewDatabaseProxy_Override

func NewDatabaseProxy_Override(d DatabaseProxy, scope constructs.Construct, id *string, props *DatabaseProxyProps)

func NewDatabaseSecret_Override

func NewDatabaseSecret_Override(d DatabaseSecret, scope constructs.Construct, id *string, props *DatabaseSecretProps)

func NewEndpoint_Override

func NewEndpoint_Override(e Endpoint, address *string, port *float64)

func NewOptionGroup_Override

func NewOptionGroup_Override(o OptionGroup, scope constructs.Construct, id *string, props *OptionGroupProps)

func NewParameterGroup_Override

func NewParameterGroup_Override(p ParameterGroup, scope constructs.Construct, id *string, props *ParameterGroupProps)

func NewServerlessClusterFromSnapshot_Override added in v2.4.0

func NewServerlessClusterFromSnapshot_Override(s ServerlessClusterFromSnapshot, scope constructs.Construct, id *string, props *ServerlessClusterFromSnapshotProps)

func NewServerlessCluster_Override

func NewServerlessCluster_Override(s ServerlessCluster, scope constructs.Construct, id *string, props *ServerlessClusterProps)

func NewSnapshotCredentials_Override

func NewSnapshotCredentials_Override(s SnapshotCredentials)

func NewSubnetGroup_Override

func NewSubnetGroup_Override(s SubnetGroup, scope constructs.Construct, id *string, props *SubnetGroupProps)

func OptionGroup_IsConstruct

func OptionGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func OptionGroup_IsOwnedResource added in v2.32.0

func OptionGroup_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func OptionGroup_IsResource

func OptionGroup_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func ParameterGroup_IsConstruct

func ParameterGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func ParameterGroup_IsOwnedResource added in v2.32.0

func ParameterGroup_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func ParameterGroup_IsResource

func ParameterGroup_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func ServerlessClusterFromSnapshot_IsConstruct added in v2.4.0

func ServerlessClusterFromSnapshot_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func ServerlessClusterFromSnapshot_IsOwnedResource added in v2.32.0

func ServerlessClusterFromSnapshot_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func ServerlessClusterFromSnapshot_IsResource added in v2.4.0

func ServerlessClusterFromSnapshot_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func ServerlessCluster_IsConstruct

func ServerlessCluster_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func ServerlessCluster_IsOwnedResource added in v2.32.0

func ServerlessCluster_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func ServerlessCluster_IsResource

func ServerlessCluster_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

func SubnetGroup_IsConstruct

func SubnetGroup_IsConstruct(x interface{}) *bool

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct` instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on disk are seen as independent, completely different libraries. As a consequence, the class `Construct` in each copy of the `constructs` library is seen as a different class, and an instance of one class will not test as `instanceof` the other class. `npm install` will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the `constructs` library can be accidentally installed, and `instanceof` will behave unpredictably. It is safest to avoid using `instanceof`, and using this type-testing method instead.

Returns: true if `x` is an object created from a class which extends `Construct`.

func SubnetGroup_IsOwnedResource added in v2.32.0

func SubnetGroup_IsOwnedResource(construct constructs.IConstruct) *bool

Returns true if the construct was created by CDK, and false otherwise.

func SubnetGroup_IsResource

func SubnetGroup_IsResource(construct constructs.IConstruct) *bool

Check whether the given construct is a Resource.

Types

type AuroraCapacityUnit

type AuroraCapacityUnit string

Aurora capacity units (ACUs).

Each ACU is a combination of processing and memory capacity.

Example:

var vpc vpc

cluster := rds.NewServerlessCluster(this, jsii.String("AnotherCluster"), &ServerlessClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA_POSTGRESQL(),
	CopyTagsToSnapshot: jsii.Boolean(true),
	 // whether to save the cluster tags when creating the snapshot. Default is 'true'
	ParameterGroup: rds.ParameterGroup_FromParameterGroupName(this, jsii.String("ParameterGroup"), jsii.String("default.aurora-postgresql10")),
	Vpc: Vpc,
	Scaling: &ServerlessScalingOptions{
		AutoPause: awscdk.Duration_Minutes(jsii.Number(10)),
		 // default is to pause after 5 minutes of idle time
		MinCapacity: rds.AuroraCapacityUnit_ACU_8,
		 // default is 2 Aurora capacity units (ACUs)
		MaxCapacity: rds.AuroraCapacityUnit_ACU_32,
	},
})

See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.architecture

const (
	// 1 Aurora Capacity Unit.
	AuroraCapacityUnit_ACU_1 AuroraCapacityUnit = "ACU_1"
	// 2 Aurora Capacity Units.
	AuroraCapacityUnit_ACU_2 AuroraCapacityUnit = "ACU_2"
	// 4 Aurora Capacity Units.
	AuroraCapacityUnit_ACU_4 AuroraCapacityUnit = "ACU_4"
	// 8 Aurora Capacity Units.
	AuroraCapacityUnit_ACU_8 AuroraCapacityUnit = "ACU_8"
	// 16 Aurora Capacity Units.
	AuroraCapacityUnit_ACU_16 AuroraCapacityUnit = "ACU_16"
	// 32 Aurora Capacity Units.
	AuroraCapacityUnit_ACU_32 AuroraCapacityUnit = "ACU_32"
	// 64 Aurora Capacity Units.
	AuroraCapacityUnit_ACU_64 AuroraCapacityUnit = "ACU_64"
	// 128 Aurora Capacity Units.
	AuroraCapacityUnit_ACU_128 AuroraCapacityUnit = "ACU_128"
	// 192 Aurora Capacity Units.
	AuroraCapacityUnit_ACU_192 AuroraCapacityUnit = "ACU_192"
	// 256 Aurora Capacity Units.
	AuroraCapacityUnit_ACU_256 AuroraCapacityUnit = "ACU_256"
	// 384 Aurora Capacity Units.
	AuroraCapacityUnit_ACU_384 AuroraCapacityUnit = "ACU_384"
)

type AuroraClusterEngineProps

type AuroraClusterEngineProps struct {
	// The version of the Aurora cluster engine.
	Version AuroraEngineVersion `field:"required" json:"version" yaml:"version"`
}

Creation properties of the plain Aurora database cluster engine.

Used in `DatabaseClusterEngine.aurora`.

Example:

var vpc vpc

rds.NewDatabaseClusterFromSnapshot(this, jsii.String("Database"), &DatabaseClusterFromSnapshotProps{
	Engine: rds.DatabaseClusterEngine_Aurora(&AuroraClusterEngineProps{
		Version: rds.AuroraEngineVersion_VER_1_22_2(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Vpc: Vpc,
	SnapshotIdentifier: jsii.String("mySnapshot"),
})

type AuroraEngineVersion

type AuroraEngineVersion interface {
	// The full version string, for example, "5.6.mysql_aurora.1.78.3.6".
	AuroraFullVersion() *string
	// The major version of the engine.
	//
	// Currently, it's always "5.6".
	AuroraMajorVersion() *string
}

The versions for the Aurora cluster engine (those returned by `DatabaseClusterEngine.aurora`).

Example:

var vpc vpc

rds.NewDatabaseClusterFromSnapshot(this, jsii.String("Database"), &DatabaseClusterFromSnapshotProps{
	Engine: rds.DatabaseClusterEngine_Aurora(&AuroraClusterEngineProps{
		Version: rds.AuroraEngineVersion_VER_1_22_2(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Vpc: Vpc,
	SnapshotIdentifier: jsii.String("mySnapshot"),
})

func AuroraEngineVersion_Of

func AuroraEngineVersion_Of(auroraFullVersion *string, auroraMajorVersion *string) AuroraEngineVersion

Create a new AuroraEngineVersion with an arbitrary version.

func AuroraEngineVersion_VER_10A

func AuroraEngineVersion_VER_10A() AuroraEngineVersion

func AuroraEngineVersion_VER_1_17_9

func AuroraEngineVersion_VER_1_17_9() AuroraEngineVersion

func AuroraEngineVersion_VER_1_19_0

func AuroraEngineVersion_VER_1_19_0() AuroraEngineVersion

func AuroraEngineVersion_VER_1_19_1

func AuroraEngineVersion_VER_1_19_1() AuroraEngineVersion

func AuroraEngineVersion_VER_1_19_2

func AuroraEngineVersion_VER_1_19_2() AuroraEngineVersion

func AuroraEngineVersion_VER_1_19_5

func AuroraEngineVersion_VER_1_19_5() AuroraEngineVersion

func AuroraEngineVersion_VER_1_19_6

func AuroraEngineVersion_VER_1_19_6() AuroraEngineVersion

func AuroraEngineVersion_VER_1_20_0

func AuroraEngineVersion_VER_1_20_0() AuroraEngineVersion

func AuroraEngineVersion_VER_1_20_1

func AuroraEngineVersion_VER_1_20_1() AuroraEngineVersion

func AuroraEngineVersion_VER_1_21_0

func AuroraEngineVersion_VER_1_21_0() AuroraEngineVersion

func AuroraEngineVersion_VER_1_22_0

func AuroraEngineVersion_VER_1_22_0() AuroraEngineVersion

func AuroraEngineVersion_VER_1_22_1

func AuroraEngineVersion_VER_1_22_1() AuroraEngineVersion

func AuroraEngineVersion_VER_1_22_1_3

func AuroraEngineVersion_VER_1_22_1_3() AuroraEngineVersion

func AuroraEngineVersion_VER_1_22_2

func AuroraEngineVersion_VER_1_22_2() AuroraEngineVersion

func AuroraEngineVersion_VER_1_22_3 added in v2.38.0

func AuroraEngineVersion_VER_1_22_3() AuroraEngineVersion

func AuroraEngineVersion_VER_1_22_4 added in v2.38.0

func AuroraEngineVersion_VER_1_22_4() AuroraEngineVersion

func AuroraEngineVersion_VER_1_22_5 added in v2.38.0

func AuroraEngineVersion_VER_1_22_5() AuroraEngineVersion

func AuroraEngineVersion_VER_1_23_0 added in v2.45.0

func AuroraEngineVersion_VER_1_23_0() AuroraEngineVersion

func AuroraEngineVersion_VER_1_23_1 added in v2.45.0

func AuroraEngineVersion_VER_1_23_1() AuroraEngineVersion

func AuroraEngineVersion_VER_1_23_2 added in v2.45.0

func AuroraEngineVersion_VER_1_23_2() AuroraEngineVersion

func AuroraEngineVersion_VER_1_23_3 added in v2.45.0

func AuroraEngineVersion_VER_1_23_3() AuroraEngineVersion

func AuroraEngineVersion_VER_1_23_4 added in v2.45.0

func AuroraEngineVersion_VER_1_23_4() AuroraEngineVersion

type AuroraMysqlClusterEngineProps

type AuroraMysqlClusterEngineProps struct {
	// The version of the Aurora MySQL cluster engine.
	Version AuroraMysqlEngineVersion `field:"required" json:"version" yaml:"version"`
}

Creation properties of the Aurora MySQL database cluster engine.

Used in `DatabaseClusterEngine.auroraMysql`.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_R6G, ec2.InstanceSize_XLARGE4),
	}),
	ServerlessV2MinCapacity: jsii.Number(6.5),
	ServerlessV2MaxCapacity: jsii.Number(64),
	Readers: []iClusterInstance{
		rds.ClusterInstance_ServerlessV2(jsii.String("reader1"), &ServerlessV2ClusterInstanceProps{
			ScaleWithWriter: jsii.Boolean(true),
		}),
		rds.ClusterInstance_*ServerlessV2(jsii.String("reader2")),
	},
	Vpc: Vpc,
})

type AuroraMysqlEngineVersion

type AuroraMysqlEngineVersion interface {
	// The full version string, for example, "5.7.mysql_aurora.1.78.3.6".
	AuroraMysqlFullVersion() *string
	// The major version of the engine.
	//
	// Currently, it's either "5.7", or "8.0".
	AuroraMysqlMajorVersion() *string
}

The versions for the Aurora MySQL cluster engine (those returned by `DatabaseClusterEngine.auroraMysql`).

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraMySQLReleaseNotes/Welcome.html

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("clusteradmin")),
	 // Optional - will default to 'admin' username and generated password
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		PubliclyAccessible: jsii.Boolean(false),
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*Provisioned(jsii.String("reader1"), &ProvisionedClusterInstanceProps{
			PromotionTier: jsii.Number(1),
		}),
		rds.ClusterInstance_ServerlessV2(jsii.String("reader2")),
	},
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	Vpc: Vpc,
})

func AuroraMysqlEngineVersion_Of

func AuroraMysqlEngineVersion_Of(auroraMysqlFullVersion *string, auroraMysqlMajorVersion *string) AuroraMysqlEngineVersion

Create a new AuroraMysqlEngineVersion with an arbitrary version.

func AuroraMysqlEngineVersion_VER_2_03_2

func AuroraMysqlEngineVersion_VER_2_03_2() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_03_3

func AuroraMysqlEngineVersion_VER_2_03_3() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_03_4

func AuroraMysqlEngineVersion_VER_2_03_4() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_04_0

func AuroraMysqlEngineVersion_VER_2_04_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_04_1

func AuroraMysqlEngineVersion_VER_2_04_1() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_04_2

func AuroraMysqlEngineVersion_VER_2_04_2() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_04_3

func AuroraMysqlEngineVersion_VER_2_04_3() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_04_4

func AuroraMysqlEngineVersion_VER_2_04_4() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_04_5

func AuroraMysqlEngineVersion_VER_2_04_5() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_04_6

func AuroraMysqlEngineVersion_VER_2_04_6() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_04_7

func AuroraMysqlEngineVersion_VER_2_04_7() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_04_8

func AuroraMysqlEngineVersion_VER_2_04_8() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_05_0

func AuroraMysqlEngineVersion_VER_2_05_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_06_0

func AuroraMysqlEngineVersion_VER_2_06_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_07_0

func AuroraMysqlEngineVersion_VER_2_07_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_07_1

func AuroraMysqlEngineVersion_VER_2_07_1() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_07_10 added in v2.106.0

func AuroraMysqlEngineVersion_VER_2_07_10() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_07_2

func AuroraMysqlEngineVersion_VER_2_07_2() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_07_3 added in v2.38.0

func AuroraMysqlEngineVersion_VER_2_07_3() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_07_4 added in v2.38.0

func AuroraMysqlEngineVersion_VER_2_07_4() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_07_5 added in v2.38.0

func AuroraMysqlEngineVersion_VER_2_07_5() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_07_6 added in v2.38.0

func AuroraMysqlEngineVersion_VER_2_07_6() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_07_7 added in v2.38.0

func AuroraMysqlEngineVersion_VER_2_07_7() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_07_8 added in v2.38.0

func AuroraMysqlEngineVersion_VER_2_07_8() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_07_9 added in v2.106.0

func AuroraMysqlEngineVersion_VER_2_07_9() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_08_0

func AuroraMysqlEngineVersion_VER_2_08_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_08_1

func AuroraMysqlEngineVersion_VER_2_08_1() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_08_2

func AuroraMysqlEngineVersion_VER_2_08_2() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_08_3 added in v2.38.0

func AuroraMysqlEngineVersion_VER_2_08_3() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_08_4 added in v2.38.0

func AuroraMysqlEngineVersion_VER_2_08_4() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_09_0

func AuroraMysqlEngineVersion_VER_2_09_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_09_1

func AuroraMysqlEngineVersion_VER_2_09_1() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_09_2

func AuroraMysqlEngineVersion_VER_2_09_2() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_09_3 added in v2.9.0

func AuroraMysqlEngineVersion_VER_2_09_3() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_10_0

func AuroraMysqlEngineVersion_VER_2_10_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_10_1

func AuroraMysqlEngineVersion_VER_2_10_1() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_10_2 added in v2.13.0

func AuroraMysqlEngineVersion_VER_2_10_2() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_10_3 added in v2.51.0

func AuroraMysqlEngineVersion_VER_2_10_3() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_11_0 added in v2.67.0

func AuroraMysqlEngineVersion_VER_2_11_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_11_1 added in v2.67.0

func AuroraMysqlEngineVersion_VER_2_11_1() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_11_2 added in v2.73.0

func AuroraMysqlEngineVersion_VER_2_11_2() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_11_3 added in v2.88.0

func AuroraMysqlEngineVersion_VER_2_11_3() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_11_4 added in v2.106.0

func AuroraMysqlEngineVersion_VER_2_11_4() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_2_12_0 added in v2.106.0

func AuroraMysqlEngineVersion_VER_2_12_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_3_01_0 added in v2.2.0

func AuroraMysqlEngineVersion_VER_3_01_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_3_01_1 added in v2.28.0

func AuroraMysqlEngineVersion_VER_3_01_1() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_3_02_0 added in v2.28.0

func AuroraMysqlEngineVersion_VER_3_02_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_3_02_1 added in v2.45.0

func AuroraMysqlEngineVersion_VER_3_02_1() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_3_02_2 added in v2.67.0

func AuroraMysqlEngineVersion_VER_3_02_2() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_3_02_3 added in v2.89.0

func AuroraMysqlEngineVersion_VER_3_02_3() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_3_03_0 added in v2.68.0

func AuroraMysqlEngineVersion_VER_3_03_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_3_03_1 added in v2.89.0

func AuroraMysqlEngineVersion_VER_3_03_1() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_3_04_0 added in v2.91.0

func AuroraMysqlEngineVersion_VER_3_04_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_3_04_1 added in v2.109.0

func AuroraMysqlEngineVersion_VER_3_04_1() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_3_05_0 added in v2.104.0

func AuroraMysqlEngineVersion_VER_3_05_0() AuroraMysqlEngineVersion

func AuroraMysqlEngineVersion_VER_5_7_12

func AuroraMysqlEngineVersion_VER_5_7_12() AuroraMysqlEngineVersion

type AuroraPostgresClusterEngineProps

type AuroraPostgresClusterEngineProps struct {
	// The version of the Aurora PostgreSQL cluster engine.
	Version AuroraPostgresEngineVersion `field:"required" json:"version" yaml:"version"`
}

Creation properties of the Aurora PostgreSQL database cluster engine.

Used in `DatabaseClusterEngine.auroraPostgres`.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraPostgres(&AuroraPostgresClusterEngineProps{
		Version: rds.AuroraPostgresEngineVersion_VER_15_2(),
	}),
	Credentials: rds.Credentials_FromUsername(jsii.String("adminuser"), &CredentialsFromUsernameOptions{
		Password: awscdk.SecretValue_UnsafePlainText(jsii.String("7959866cacc02c2d243ecfe177464fe6")),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		PubliclyAccessible: jsii.Boolean(false),
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*Provisioned(jsii.String("reader")),
	},
	StorageType: rds.DBClusterStorageType_AURORA_IOPT1,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	Vpc: Vpc,
})

type AuroraPostgresEngineFeatures

type AuroraPostgresEngineFeatures struct {
	// Whether this version of the Aurora Postgres cluster engine supports the S3 data export feature.
	// Default: false.
	//
	S3Export *bool `field:"optional" json:"s3Export" yaml:"s3Export"`
	// Whether this version of the Aurora Postgres cluster engine supports the S3 data import feature.
	// Default: false.
	//
	S3Import *bool `field:"optional" json:"s3Import" yaml:"s3Import"`
}

Features supported by this version of the Aurora Postgres cluster engine.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

auroraPostgresEngineFeatures := &AuroraPostgresEngineFeatures{
	S3Export: jsii.Boolean(false),
	S3Import: jsii.Boolean(false),
}

type AuroraPostgresEngineVersion

type AuroraPostgresEngineVersion interface {
	// The full version string, for example, "9.6.25.1".
	AuroraPostgresFullVersion() *string
	// The major version of the engine, for example, "9.6".
	AuroraPostgresMajorVersion() *string
}

The versions for the Aurora PostgreSQL cluster engine (those returned by `DatabaseClusterEngine.auroraPostgres`).

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraPostgres(&AuroraPostgresClusterEngineProps{
		Version: rds.AuroraPostgresEngineVersion_VER_15_2(),
	}),
	Credentials: rds.Credentials_FromUsername(jsii.String("adminuser"), &CredentialsFromUsernameOptions{
		Password: awscdk.SecretValue_UnsafePlainText(jsii.String("7959866cacc02c2d243ecfe177464fe6")),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		PubliclyAccessible: jsii.Boolean(false),
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*Provisioned(jsii.String("reader")),
	},
	StorageType: rds.DBClusterStorageType_AURORA_IOPT1,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	Vpc: Vpc,
})

func AuroraPostgresEngineVersion_Of

func AuroraPostgresEngineVersion_Of(auroraPostgresFullVersion *string, auroraPostgresMajorVersion *string, auroraPostgresFeatures *AuroraPostgresEngineFeatures) AuroraPostgresEngineVersion

Create a new AuroraPostgresEngineVersion with an arbitrary version.

func AuroraPostgresEngineVersion_VER_10_11

func AuroraPostgresEngineVersion_VER_10_11() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_12

func AuroraPostgresEngineVersion_VER_10_12() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_13

func AuroraPostgresEngineVersion_VER_10_13() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_14

func AuroraPostgresEngineVersion_VER_10_14() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_16

func AuroraPostgresEngineVersion_VER_10_16() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_17 added in v2.40.0

func AuroraPostgresEngineVersion_VER_10_17() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_18

func AuroraPostgresEngineVersion_VER_10_18() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_19 added in v2.21.0

func AuroraPostgresEngineVersion_VER_10_19() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_20 added in v2.21.0

func AuroraPostgresEngineVersion_VER_10_20() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_21 added in v2.30.0

func AuroraPostgresEngineVersion_VER_10_21() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_4

func AuroraPostgresEngineVersion_VER_10_4() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_5

func AuroraPostgresEngineVersion_VER_10_5() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_6

func AuroraPostgresEngineVersion_VER_10_6() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_10_7

func AuroraPostgresEngineVersion_VER_10_7() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_11

func AuroraPostgresEngineVersion_VER_11_11() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_12 added in v2.40.0

func AuroraPostgresEngineVersion_VER_11_12() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_13

func AuroraPostgresEngineVersion_VER_11_13() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_14 added in v2.21.0

func AuroraPostgresEngineVersion_VER_11_14() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_15 added in v2.21.0

func AuroraPostgresEngineVersion_VER_11_15() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_16 added in v2.30.0

func AuroraPostgresEngineVersion_VER_11_16() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_17 added in v2.64.0

func AuroraPostgresEngineVersion_VER_11_17() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_18 added in v2.64.0

func AuroraPostgresEngineVersion_VER_11_18() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_19 added in v2.74.0

func AuroraPostgresEngineVersion_VER_11_19() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_20 added in v2.112.0

func AuroraPostgresEngineVersion_VER_11_20() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_21 added in v2.112.0

func AuroraPostgresEngineVersion_VER_11_21() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_4

func AuroraPostgresEngineVersion_VER_11_4() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_6

func AuroraPostgresEngineVersion_VER_11_6() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_7

func AuroraPostgresEngineVersion_VER_11_7() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_8

func AuroraPostgresEngineVersion_VER_11_8() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_11_9

func AuroraPostgresEngineVersion_VER_11_9() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_10 added in v2.21.0

func AuroraPostgresEngineVersion_VER_12_10() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_11 added in v2.30.0

func AuroraPostgresEngineVersion_VER_12_11() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_12 added in v2.64.0

func AuroraPostgresEngineVersion_VER_12_12() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_13 added in v2.64.0

func AuroraPostgresEngineVersion_VER_12_13() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_14 added in v2.74.0

func AuroraPostgresEngineVersion_VER_12_14() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_15 added in v2.112.0

func AuroraPostgresEngineVersion_VER_12_15() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_16 added in v2.112.0

func AuroraPostgresEngineVersion_VER_12_16() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_4

func AuroraPostgresEngineVersion_VER_12_4() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_6

func AuroraPostgresEngineVersion_VER_12_6() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_7 added in v2.40.0

func AuroraPostgresEngineVersion_VER_12_7() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_8

func AuroraPostgresEngineVersion_VER_12_8() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_12_9 added in v2.21.0

func AuroraPostgresEngineVersion_VER_12_9() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_13_10 added in v2.74.0

func AuroraPostgresEngineVersion_VER_13_10() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_13_11 added in v2.112.0

func AuroraPostgresEngineVersion_VER_13_11() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_13_12 added in v2.112.0

func AuroraPostgresEngineVersion_VER_13_12() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_13_3

func AuroraPostgresEngineVersion_VER_13_3() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_13_4

func AuroraPostgresEngineVersion_VER_13_4() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_13_5 added in v2.21.0

func AuroraPostgresEngineVersion_VER_13_5() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_13_6 added in v2.21.0

func AuroraPostgresEngineVersion_VER_13_6() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_13_7 added in v2.30.0

func AuroraPostgresEngineVersion_VER_13_7() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_13_8 added in v2.64.0

func AuroraPostgresEngineVersion_VER_13_8() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_13_9 added in v2.64.0

func AuroraPostgresEngineVersion_VER_13_9() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_14_3 added in v2.38.0

func AuroraPostgresEngineVersion_VER_14_3() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_14_4 added in v2.47.0

func AuroraPostgresEngineVersion_VER_14_4() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_14_5 added in v2.51.0

func AuroraPostgresEngineVersion_VER_14_5() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_14_6 added in v2.64.0

func AuroraPostgresEngineVersion_VER_14_6() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_14_7 added in v2.74.0

func AuroraPostgresEngineVersion_VER_14_7() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_14_8 added in v2.88.0

func AuroraPostgresEngineVersion_VER_14_8() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_14_9 added in v2.112.0

func AuroraPostgresEngineVersion_VER_14_9() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_15_2 added in v2.74.0

func AuroraPostgresEngineVersion_VER_15_2() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_15_3 added in v2.88.0

func AuroraPostgresEngineVersion_VER_15_3() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_15_4 added in v2.112.0

func AuroraPostgresEngineVersion_VER_15_4() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_9_6_11

func AuroraPostgresEngineVersion_VER_9_6_11() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_9_6_12

func AuroraPostgresEngineVersion_VER_9_6_12() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_9_6_16

func AuroraPostgresEngineVersion_VER_9_6_16() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_9_6_17

func AuroraPostgresEngineVersion_VER_9_6_17() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_9_6_18

func AuroraPostgresEngineVersion_VER_9_6_18() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_9_6_19

func AuroraPostgresEngineVersion_VER_9_6_19() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_9_6_8

func AuroraPostgresEngineVersion_VER_9_6_8() AuroraPostgresEngineVersion

func AuroraPostgresEngineVersion_VER_9_6_9

func AuroraPostgresEngineVersion_VER_9_6_9() AuroraPostgresEngineVersion

type BackupProps

type BackupProps struct {
	// How many days to retain the backup.
	Retention awscdk.Duration `field:"required" json:"retention" yaml:"retention"`
	// A daily time range in 24-hours UTC format in which backups preferably execute.
	//
	// Must be at least 30 minutes long.
	//
	// Example: '01:00-02:00'.
	// Default: - a 30-minute window selected at random from an 8-hour block of
	// time for each AWS Region. To see the time blocks available, see
	// https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow
	//
	PreferredWindow *string `field:"optional" json:"preferredWindow" yaml:"preferredWindow"`
}

Backup configuration for RDS databases.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import cdk "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

backupProps := &BackupProps{
	Retention: cdk.Duration_Minutes(jsii.Number(30)),

	// the properties below are optional
	PreferredWindow: jsii.String("preferredWindow"),
}

See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow

Default: - The retention period for automated backups is 1 day. The preferred backup window will be a 30-minute window selected at random from an 8-hour block of time for each AWS Region.

type CaCertificate added in v2.94.0

type CaCertificate interface {
	// Returns the CA certificate identifier as a string.
	ToString() *string
}

The CA certificate used for a DB instance.

Example:

var vpc vpc

rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_30(),
	}),
	Vpc: Vpc,
	CaCertificate: rds.CaCertificate_Of(jsii.String("future-rds-ca")),
})

See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html

func CaCertificate_Of added in v2.94.0

func CaCertificate_Of(identifier *string) CaCertificate

Custom CA certificate.

func CaCertificate_RDS_CA_2019 added in v2.94.0

func CaCertificate_RDS_CA_2019() CaCertificate

func CaCertificate_RDS_CA_ECC384_G1 added in v2.94.0

func CaCertificate_RDS_CA_ECC384_G1() CaCertificate

func CaCertificate_RDS_CA_RDS2048_G1 added in v2.94.0

func CaCertificate_RDS_CA_RDS2048_G1() CaCertificate

func CaCertificate_RDS_CA_RDS4096_G1 added in v2.94.0

func CaCertificate_RDS_CA_RDS4096_G1() CaCertificate

type CfnCustomDBEngineVersion added in v2.85.0

type CfnCustomDBEngineVersion interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The ARN of the custom engine version.
	AttrDbEngineVersionArn() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The name of an Amazon S3 bucket that contains database installation files for your CEV.
	DatabaseInstallationFilesS3BucketName() *string
	SetDatabaseInstallationFilesS3BucketName(val *string)
	// The Amazon S3 directory that contains the database installation files for your CEV.
	DatabaseInstallationFilesS3Prefix() *string
	SetDatabaseInstallationFilesS3Prefix(val *string)
	// An optional description of your CEV.
	Description() *string
	SetDescription(val *string)
	// The database engine to use for your custom engine version (CEV).
	Engine() *string
	SetEngine(val *string)
	// The name of your CEV.
	EngineVersion() *string
	SetEngineVersion(val *string)
	// The AWS KMS key identifier for an encrypted CEV.
	KmsKeyId() *string
	SetKmsKeyId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The CEV manifest, which is a JSON document that describes the installation .zip files stored in Amazon S3. Specify the name/value pairs in a file or a quoted string. RDS Custom applies the patches in the order in which they are listed.
	Manifest() *string
	SetManifest(val *string)
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// A value that indicates the status of a custom engine version (CEV).
	Status() *string
	SetStatus(val *string)
	// A list of tags.
	Tags() *[]*awscdk.CfnTag
	SetTags(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

Creates a custom DB engine version (CEV).

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCustomDBEngineVersion := awscdk.Aws_rds.NewCfnCustomDBEngineVersion(this, jsii.String("MyCfnCustomDBEngineVersion"), &CfnCustomDBEngineVersionProps{
	DatabaseInstallationFilesS3BucketName: jsii.String("databaseInstallationFilesS3BucketName"),
	Engine: jsii.String("engine"),
	EngineVersion: jsii.String("engineVersion"),

	// the properties below are optional
	DatabaseInstallationFilesS3Prefix: jsii.String("databaseInstallationFilesS3Prefix"),
	Description: jsii.String("description"),
	KmsKeyId: jsii.String("kmsKeyId"),
	Manifest: jsii.String("manifest"),
	Status: jsii.String("status"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-customdbengineversion.html

func NewCfnCustomDBEngineVersion added in v2.85.0

func NewCfnCustomDBEngineVersion(scope constructs.Construct, id *string, props *CfnCustomDBEngineVersionProps) CfnCustomDBEngineVersion

type CfnCustomDBEngineVersionProps added in v2.85.0

type CfnCustomDBEngineVersionProps struct {
	// The name of an Amazon S3 bucket that contains database installation files for your CEV.
	//
	// For example, a valid bucket name is `my-custom-installation-files` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-customdbengineversion.html#cfn-rds-customdbengineversion-databaseinstallationfiless3bucketname
	//
	DatabaseInstallationFilesS3BucketName *string `field:"required" json:"databaseInstallationFilesS3BucketName" yaml:"databaseInstallationFilesS3BucketName"`
	// The database engine to use for your custom engine version (CEV).
	//
	// Valid values:
	//
	// - `custom-oracle-ee`
	// - `custom-oracle-ee-cdb`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-customdbengineversion.html#cfn-rds-customdbengineversion-engine
	//
	Engine *string `field:"required" json:"engine" yaml:"engine"`
	// The name of your CEV.
	//
	// The name format is `major version.customized_string` . For example, a valid CEV name is `19.my_cev1` . This setting is required for RDS Custom for Oracle, but optional for Amazon RDS. The combination of `Engine` and `EngineVersion` is unique per customer per Region.
	//
	// *Constraints:* Minimum length is 1. Maximum length is 60.
	//
	// *Pattern:* `^[a-z0-9_.-]{1,60$` }
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-customdbengineversion.html#cfn-rds-customdbengineversion-engineversion
	//
	EngineVersion *string `field:"required" json:"engineVersion" yaml:"engineVersion"`
	// The Amazon S3 directory that contains the database installation files for your CEV.
	//
	// For example, a valid bucket name is `123456789012/cev1` . If this setting isn't specified, no prefix is assumed.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-customdbengineversion.html#cfn-rds-customdbengineversion-databaseinstallationfiless3prefix
	//
	DatabaseInstallationFilesS3Prefix *string `field:"optional" json:"databaseInstallationFilesS3Prefix" yaml:"databaseInstallationFilesS3Prefix"`
	// An optional description of your CEV.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-customdbengineversion.html#cfn-rds-customdbengineversion-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The AWS KMS key identifier for an encrypted CEV.
	//
	// A symmetric encryption KMS key is required for RDS Custom, but optional for Amazon RDS.
	//
	// If you have an existing symmetric encryption KMS key in your account, you can use it with RDS Custom. No further action is necessary. If you don't already have a symmetric encryption KMS key in your account, follow the instructions in [Creating a symmetric encryption KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) in the *AWS Key Management Service Developer Guide* .
	//
	// You can choose the same symmetric encryption key when you create a CEV and a DB instance, or choose different keys.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-customdbengineversion.html#cfn-rds-customdbengineversion-kmskeyid
	//
	KmsKeyId *string `field:"optional" json:"kmsKeyId" yaml:"kmsKeyId"`
	// The CEV manifest, which is a JSON document that describes the installation .zip files stored in Amazon S3. Specify the name/value pairs in a file or a quoted string. RDS Custom applies the patches in the order in which they are listed.
	//
	// The following JSON fields are valid:
	//
	// - **MediaImportTemplateVersion** - Version of the CEV manifest. The date is in the format `YYYY-MM-DD` .
	// - **databaseInstallationFileNames** - Ordered list of installation files for the CEV.
	// - **opatchFileNames** - Ordered list of OPatch installers used for the Oracle DB engine.
	// - **psuRuPatchFileNames** - The PSU and RU patches for this CEV.
	// - **OtherPatchFileNames** - The patches that are not in the list of PSU and RU patches. Amazon RDS applies these patches after applying the PSU and RU patches.
	//
	// For more information, see [Creating the CEV manifest](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.html#custom-cev.preparing.manifest) in the *Amazon RDS User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-customdbengineversion.html#cfn-rds-customdbengineversion-manifest
	//
	Manifest *string `field:"optional" json:"manifest" yaml:"manifest"`
	// A value that indicates the status of a custom engine version (CEV).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-customdbengineversion.html#cfn-rds-customdbengineversion-status
	//
	// Default: - "available".
	//
	Status *string `field:"optional" json:"status" yaml:"status"`
	// A list of tags.
	//
	// For more information, see [Tagging Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the *Amazon RDS User Guide.*
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-customdbengineversion.html#cfn-rds-customdbengineversion-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnCustomDBEngineVersion`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCustomDBEngineVersionProps := &CfnCustomDBEngineVersionProps{
	DatabaseInstallationFilesS3BucketName: jsii.String("databaseInstallationFilesS3BucketName"),
	Engine: jsii.String("engine"),
	EngineVersion: jsii.String("engineVersion"),

	// the properties below are optional
	DatabaseInstallationFilesS3Prefix: jsii.String("databaseInstallationFilesS3Prefix"),
	Description: jsii.String("description"),
	KmsKeyId: jsii.String("kmsKeyId"),
	Manifest: jsii.String("manifest"),
	Status: jsii.String("status"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-customdbengineversion.html

type CfnDBCluster

type CfnDBCluster interface {
	awscdk.CfnResource
	awscdk.IInspectable
	awscdk.ITaggable
	// The amount of storage in gibibytes (GiB) to allocate to each DB instance in the Multi-AZ DB cluster.
	AllocatedStorage() *float64
	SetAllocatedStorage(val *float64)
	// Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster.
	AssociatedRoles() interface{}
	SetAssociatedRoles(val interface{})
	// The Amazon Resource Name (ARN) for the DB cluster.
	AttrDbClusterArn() *string
	// The AWS Region -unique, immutable identifier for the DB cluster.
	//
	// This identifier is found in AWS CloudTrail log entries whenever the KMS key for the DB cluster is accessed.
	AttrDbClusterResourceId() *string
	// The connection endpoint for the primary instance of the DB cluster.
	AttrEndpoint() awscdk.IResolvable
	// The connection endpoint for the DB cluster.
	AttrEndpointAddress() *string
	// The port number that will accept connections on this DB cluster.
	AttrEndpointPort() *string
	// The Amazon Resource Name (ARN) of the secret.
	AttrMasterUserSecretSecretArn() *string
	AttrReadEndpoint() awscdk.IResolvable
	// The reader endpoint for the DB cluster.
	AttrReadEndpointAddress() *string
	// Specifies whether minor engine upgrades are applied automatically to the DB cluster during the maintenance window.
	AutoMinorVersionUpgrade() interface{}
	SetAutoMinorVersionUpgrade(val interface{})
	// A list of Availability Zones (AZs) where instances in the DB cluster can be created.
	AvailabilityZones() *[]*string
	SetAvailabilityZones(val *[]*string)
	// The target backtrack window, in seconds.
	//
	// To disable backtracking, set this value to 0.
	BacktrackWindow() *float64
	SetBacktrackWindow(val *float64)
	// The number of days for which automated backups are retained.
	BackupRetentionPeriod() *float64
	SetBackupRetentionPeriod(val *float64)
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// A value that indicates whether to copy all tags from the DB cluster to snapshots of the DB cluster.
	CopyTagsToSnapshot() interface{}
	SetCopyTagsToSnapshot(val interface{})
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The name of your database.
	DatabaseName() *string
	SetDatabaseName(val *string)
	// The DB cluster identifier.
	//
	// This parameter is stored as a lowercase string.
	DbClusterIdentifier() *string
	SetDbClusterIdentifier(val *string)
	// The compute and memory capacity of each DB instance in the Multi-AZ DB cluster, for example `db.m6gd.xlarge` . Not all DB instance classes are available in all AWS Regions , or for all database engines.
	DbClusterInstanceClass() *string
	SetDbClusterInstanceClass(val *string)
	// The name of the DB cluster parameter group to associate with this DB cluster.
	DbClusterParameterGroupName() *string
	SetDbClusterParameterGroupName(val *string)
	// The name of the DB parameter group to apply to all instances of the DB cluster.
	DbInstanceParameterGroupName() *string
	SetDbInstanceParameterGroupName(val *string)
	// A DB subnet group that you want to associate with this DB cluster.
	DbSubnetGroupName() *string
	SetDbSubnetGroupName(val *string)
	// Reserved for future use.
	DbSystemId() *string
	SetDbSystemId(val *string)
	// A value that indicates whether the DB cluster has deletion protection enabled.
	DeletionProtection() interface{}
	SetDeletionProtection(val interface{})
	// Indicates the directory ID of the Active Directory to create the DB cluster.
	Domain() *string
	SetDomain(val *string)
	// Specifies the name of the IAM role to use when making API calls to the Directory Service.
	DomainIamRoleName() *string
	SetDomainIamRoleName(val *string)
	// The list of log types that need to be enabled for exporting to CloudWatch Logs.
	EnableCloudwatchLogsExports() *[]*string
	SetEnableCloudwatchLogsExports(val *[]*string)
	// Specifies whether to enable this DB cluster to forward write operations to the primary cluster of a global cluster (Aurora global database).
	EnableGlobalWriteForwarding() interface{}
	SetEnableGlobalWriteForwarding(val interface{})
	// A value that indicates whether to enable the HTTP endpoint for an Aurora Serverless DB cluster.
	EnableHttpEndpoint() interface{}
	SetEnableHttpEndpoint(val interface{})
	// A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts.
	EnableIamDatabaseAuthentication() interface{}
	SetEnableIamDatabaseAuthentication(val interface{})
	// The name of the database engine to be used for this DB cluster.
	Engine() *string
	SetEngine(val *string)
	// The DB engine mode of the DB cluster, either `provisioned` or `serverless` .
	EngineMode() *string
	SetEngineMode(val *string)
	// The version number of the database engine to use.
	EngineVersion() *string
	SetEngineVersion(val *string)
	// If you are configuring an Aurora global database cluster and want your Aurora DB cluster to be a secondary member in the global database cluster, specify the global cluster ID of the global database cluster.
	GlobalClusterIdentifier() *string
	SetGlobalClusterIdentifier(val *string)
	// The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for each DB instance in the Multi-AZ DB cluster.
	Iops() *float64
	SetIops(val *float64)
	// The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, such as `arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef` .
	KmsKeyId() *string
	SetKmsKeyId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// Specifies whether to manage the master user password with AWS Secrets Manager.
	ManageMasterUserPassword() interface{}
	SetManageMasterUserPassword(val interface{})
	// The name of the master user for the DB cluster.
	MasterUsername() *string
	SetMasterUsername(val *string)
	// The master password for the DB instance.
	MasterUserPassword() *string
	SetMasterUserPassword(val *string)
	// The secret managed by RDS in AWS Secrets Manager for the master user password.
	MasterUserSecret() interface{}
	SetMasterUserSecret(val interface{})
	// The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB cluster.
	MonitoringInterval() *float64
	SetMonitoringInterval(val *float64)
	// The Amazon Resource Name (ARN) for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs.
	MonitoringRoleArn() *string
	SetMonitoringRoleArn(val *string)
	// The network type of the DB cluster.
	NetworkType() *string
	SetNetworkType(val *string)
	// The tree node.
	Node() constructs.Node
	// Specifies whether to turn on Performance Insights for the DB cluster.
	PerformanceInsightsEnabled() interface{}
	SetPerformanceInsightsEnabled(val interface{})
	// The AWS KMS key identifier for encryption of Performance Insights data.
	PerformanceInsightsKmsKeyId() *string
	SetPerformanceInsightsKmsKeyId(val *string)
	// The number of days to retain Performance Insights data.
	PerformanceInsightsRetentionPeriod() *float64
	SetPerformanceInsightsRetentionPeriod(val *float64)
	// The port number on which the DB instances in the DB cluster accept connections.
	Port() *float64
	SetPort(val *float64)
	// The daily time range during which automated backups are created.
	PreferredBackupWindow() *string
	SetPreferredBackupWindow(val *string)
	// The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).
	PreferredMaintenanceWindow() *string
	SetPreferredMaintenanceWindow(val *string)
	// Specifies whether the DB cluster is publicly accessible.
	PubliclyAccessible() interface{}
	SetPubliclyAccessible(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this DB cluster is created as a read replica.
	ReplicationSourceIdentifier() *string
	SetReplicationSourceIdentifier(val *string)
	// The date and time to restore the DB cluster to.
	RestoreToTime() *string
	SetRestoreToTime(val *string)
	// The type of restore to be performed.
	//
	// You can specify one of the following values:.
	RestoreType() *string
	SetRestoreType(val *string)
	// The `ScalingConfiguration` property type specifies the scaling configuration of an Aurora Serverless DB cluster.
	ScalingConfiguration() interface{}
	SetScalingConfiguration(val interface{})
	// The `ServerlessV2ScalingConfiguration` property type specifies the scaling configuration of an Aurora Serverless V2 DB cluster.
	ServerlessV2ScalingConfiguration() interface{}
	SetServerlessV2ScalingConfiguration(val interface{})
	// The identifier for the DB snapshot or DB cluster snapshot to restore from.
	SnapshotIdentifier() *string
	SetSnapshotIdentifier(val *string)
	// When restoring a DB cluster to a point in time, the identifier of the source DB cluster from which to restore.
	SourceDbClusterIdentifier() *string
	SetSourceDbClusterIdentifier(val *string)
	// The AWS Region which contains the source DB cluster when replicating a DB cluster.
	//
	// For example, `us-east-1` .
	SourceRegion() *string
	SetSourceRegion(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Indicates whether the DB cluster is encrypted.
	StorageEncrypted() interface{}
	SetStorageEncrypted(val interface{})
	// The storage type to associate with the DB cluster.
	StorageType() *string
	SetStorageType(val *string)
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// An optional array of key-value pairs to apply to this DB cluster.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// A value that indicates whether to restore the DB cluster to the latest restorable backup time.
	UseLatestRestorableTime() interface{}
	SetUseLatestRestorableTime(val interface{})
	// A list of EC2 VPC security groups to associate with this DB cluster.
	VpcSecurityGroupIds() *[]*string
	SetVpcSecurityGroupIds(val *[]*string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::DBCluster` resource creates an Amazon Aurora DB cluster or Multi-AZ DB cluster.

For more information about creating an Aurora DB cluster, see [Creating an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html) in the *Amazon Aurora User Guide* .

For more information about creating a Multi-AZ DB cluster, see [Creating a Multi-AZ DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html) in the *Amazon RDS User Guide* .

> You can only create this resource in AWS Regions where Amazon Aurora or Multi-AZ DB clusters are supported.

*Updating DB clusters*

When properties labeled " *Update requires:* [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) " are updated, AWS CloudFormation first creates a replacement DB cluster, then changes references from other dependent resources to point to the replacement DB cluster, and finally deletes the old DB cluster.

> We highly recommend that you take a snapshot of the database before updating the stack. If you don't, you lose the data when AWS CloudFormation replaces your DB cluster. To preserve your data, perform the following procedure: > > - Deactivate any applications that are using the DB cluster so that there's no activity on the DB instance. > - Create a snapshot of the DB cluster. For more information, see [Creating a DB Cluster Snapshot](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_CreateSnapshotCluster.html) . > - If you want to restore your DB cluster using a DB cluster snapshot, modify the updated template with your DB cluster changes and add the `SnapshotIdentifier` property with the ID of the DB cluster snapshot that you want to use. > > After you restore a DB cluster with a `SnapshotIdentifier` property, you must specify the same `SnapshotIdentifier` property for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the DB cluster snapshot again, and the data in the database is not changed. However, if you don't specify the `SnapshotIdentifier` property, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB cluster is restored from the specified `SnapshotIdentifier` property, and the original DB cluster is deleted. > - Update the stack.

Currently, when you are updating the stack for an Aurora Serverless DB cluster, you can't include changes to any other properties when you specify one of the following properties: `PreferredBackupWindow` , `PreferredMaintenanceWindow` , and `Port` . This limitation doesn't apply to provisioned DB clusters.

For more information about updating other properties of this resource, see `[ModifyDBCluster](https://docs.aws.amazon.com//AmazonRDS/latest/APIReference/API_ModifyDBCluster.html)` . For more information about updating stacks, see [AWS CloudFormation Stacks Updates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html) .

*Deleting DB clusters*

The default `DeletionPolicy` for `AWS::RDS::DBCluster` resources is `Snapshot` . For more information about how AWS CloudFormation deletes resources, see [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBCluster := awscdk.Aws_rds.NewCfnDBCluster(this, jsii.String("MyCfnDBCluster"), &CfnDBClusterProps{
	AllocatedStorage: jsii.Number(123),
	AssociatedRoles: []interface{}{
		&DBClusterRoleProperty{
			RoleArn: jsii.String("roleArn"),

			// the properties below are optional
			FeatureName: jsii.String("featureName"),
		},
	},
	AutoMinorVersionUpgrade: jsii.Boolean(false),
	AvailabilityZones: []*string{
		jsii.String("availabilityZones"),
	},
	BacktrackWindow: jsii.Number(123),
	BackupRetentionPeriod: jsii.Number(123),
	CopyTagsToSnapshot: jsii.Boolean(false),
	DatabaseName: jsii.String("databaseName"),
	DbClusterIdentifier: jsii.String("dbClusterIdentifier"),
	DbClusterInstanceClass: jsii.String("dbClusterInstanceClass"),
	DbClusterParameterGroupName: jsii.String("dbClusterParameterGroupName"),
	DbInstanceParameterGroupName: jsii.String("dbInstanceParameterGroupName"),
	DbSubnetGroupName: jsii.String("dbSubnetGroupName"),
	DbSystemId: jsii.String("dbSystemId"),
	DeletionProtection: jsii.Boolean(false),
	Domain: jsii.String("domain"),
	DomainIamRoleName: jsii.String("domainIamRoleName"),
	EnableCloudwatchLogsExports: []*string{
		jsii.String("enableCloudwatchLogsExports"),
	},
	EnableGlobalWriteForwarding: jsii.Boolean(false),
	EnableHttpEndpoint: jsii.Boolean(false),
	EnableIamDatabaseAuthentication: jsii.Boolean(false),
	Engine: jsii.String("engine"),
	EngineMode: jsii.String("engineMode"),
	EngineVersion: jsii.String("engineVersion"),
	GlobalClusterIdentifier: jsii.String("globalClusterIdentifier"),
	Iops: jsii.Number(123),
	KmsKeyId: jsii.String("kmsKeyId"),
	ManageMasterUserPassword: jsii.Boolean(false),
	MasterUsername: jsii.String("masterUsername"),
	MasterUserPassword: jsii.String("masterUserPassword"),
	MasterUserSecret: &MasterUserSecretProperty{
		KmsKeyId: jsii.String("kmsKeyId"),
		SecretArn: jsii.String("secretArn"),
	},
	MonitoringInterval: jsii.Number(123),
	MonitoringRoleArn: jsii.String("monitoringRoleArn"),
	NetworkType: jsii.String("networkType"),
	PerformanceInsightsEnabled: jsii.Boolean(false),
	PerformanceInsightsKmsKeyId: jsii.String("performanceInsightsKmsKeyId"),
	PerformanceInsightsRetentionPeriod: jsii.Number(123),
	Port: jsii.Number(123),
	PreferredBackupWindow: jsii.String("preferredBackupWindow"),
	PreferredMaintenanceWindow: jsii.String("preferredMaintenanceWindow"),
	PubliclyAccessible: jsii.Boolean(false),
	ReplicationSourceIdentifier: jsii.String("replicationSourceIdentifier"),
	RestoreToTime: jsii.String("restoreToTime"),
	RestoreType: jsii.String("restoreType"),
	ScalingConfiguration: &ScalingConfigurationProperty{
		AutoPause: jsii.Boolean(false),
		MaxCapacity: jsii.Number(123),
		MinCapacity: jsii.Number(123),
		SecondsBeforeTimeout: jsii.Number(123),
		SecondsUntilAutoPause: jsii.Number(123),
		TimeoutAction: jsii.String("timeoutAction"),
	},
	ServerlessV2ScalingConfiguration: &ServerlessV2ScalingConfigurationProperty{
		MaxCapacity: jsii.Number(123),
		MinCapacity: jsii.Number(123),
	},
	SnapshotIdentifier: jsii.String("snapshotIdentifier"),
	SourceDbClusterIdentifier: jsii.String("sourceDbClusterIdentifier"),
	SourceRegion: jsii.String("sourceRegion"),
	StorageEncrypted: jsii.Boolean(false),
	StorageType: jsii.String("storageType"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	UseLatestRestorableTime: jsii.Boolean(false),
	VpcSecurityGroupIds: []*string{
		jsii.String("vpcSecurityGroupIds"),
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html

func NewCfnDBCluster

func NewCfnDBCluster(scope constructs.Construct, id *string, props *CfnDBClusterProps) CfnDBCluster

type CfnDBClusterParameterGroup

type CfnDBClusterParameterGroup interface {
	awscdk.CfnResource
	awscdk.IInspectable
	awscdk.ITaggable
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The name of the DB cluster parameter group.
	DbClusterParameterGroupName() *string
	SetDbClusterParameterGroupName(val *string)
	// A friendly description for this DB cluster parameter group.
	Description() *string
	SetDescription(val *string)
	// The DB cluster parameter group family name.
	Family() *string
	SetFamily(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Provides a list of parameters for the DB cluster parameter group.
	Parameters() interface{}
	SetParameters(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// An optional array of key-value pairs to apply to this DB cluster parameter group.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::DBClusterParameterGroup` resource creates a new Amazon RDS DB cluster parameter group.

For information about configuring parameters for Amazon Aurora DB clusters, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.html) in the *Amazon Aurora User Guide* .

> If you apply a parameter group to a DB cluster, then its DB instances might need to reboot. This can result in an outage while the DB instances are rebooting. > > If you apply a change to parameter group associated with a stopped DB cluster, then the update stack waits until the DB cluster is started.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var parameters interface{}

cfnDBClusterParameterGroup := awscdk.Aws_rds.NewCfnDBClusterParameterGroup(this, jsii.String("MyCfnDBClusterParameterGroup"), &CfnDBClusterParameterGroupProps{
	Description: jsii.String("description"),
	Family: jsii.String("family"),
	Parameters: parameters,

	// the properties below are optional
	DbClusterParameterGroupName: jsii.String("dbClusterParameterGroupName"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html

func NewCfnDBClusterParameterGroup

func NewCfnDBClusterParameterGroup(scope constructs.Construct, id *string, props *CfnDBClusterParameterGroupProps) CfnDBClusterParameterGroup

type CfnDBClusterParameterGroupProps

type CfnDBClusterParameterGroupProps struct {
	// A friendly description for this DB cluster parameter group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html#cfn-rds-dbclusterparametergroup-description
	//
	Description *string `field:"required" json:"description" yaml:"description"`
	// The DB cluster parameter group family name.
	//
	// A DB cluster parameter group can be associated with one and only one DB cluster parameter group family, and can be applied only to a DB cluster running a DB engine and engine version compatible with that DB cluster parameter group family.
	//
	// > The DB cluster parameter group family can't be changed when updating a DB cluster parameter group.
	//
	// To list all of the available parameter group families, use the following command:
	//
	// `aws rds describe-db-engine-versions --query "DBEngineVersions[].DBParameterGroupFamily"`
	//
	// The output contains duplicates.
	//
	// For more information, see `[CreateDBClusterParameterGroup](https://docs.aws.amazon.com//AmazonRDS/latest/APIReference/API_CreateDBClusterParameterGroup.html)` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html#cfn-rds-dbclusterparametergroup-family
	//
	Family *string `field:"required" json:"family" yaml:"family"`
	// Provides a list of parameters for the DB cluster parameter group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html#cfn-rds-dbclusterparametergroup-parameters
	//
	Parameters interface{} `field:"required" json:"parameters" yaml:"parameters"`
	// The name of the DB cluster parameter group.
	//
	// Constraints:
	//
	// - Must not match the name of an existing DB cluster parameter group.
	//
	// If you don't specify a value for `DBClusterParameterGroupName` property, a name is automatically created for the DB cluster parameter group.
	//
	// > This value is stored as a lowercase string.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html#cfn-rds-dbclusterparametergroup-dbclusterparametergroupname
	//
	DbClusterParameterGroupName *string `field:"optional" json:"dbClusterParameterGroupName" yaml:"dbClusterParameterGroupName"`
	// An optional array of key-value pairs to apply to this DB cluster parameter group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html#cfn-rds-dbclusterparametergroup-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnDBClusterParameterGroup`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var parameters interface{}

cfnDBClusterParameterGroupProps := &CfnDBClusterParameterGroupProps{
	Description: jsii.String("description"),
	Family: jsii.String("family"),
	Parameters: parameters,

	// the properties below are optional
	DbClusterParameterGroupName: jsii.String("dbClusterParameterGroupName"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html

type CfnDBClusterProps

type CfnDBClusterProps struct {
	// The amount of storage in gibibytes (GiB) to allocate to each DB instance in the Multi-AZ DB cluster.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// This setting is required to create a Multi-AZ DB cluster.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-allocatedstorage
	//
	AllocatedStorage *float64 `field:"optional" json:"allocatedStorage" yaml:"allocatedStorage"`
	// Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster.
	//
	// IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other Amazon Web Services on your behalf.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-associatedroles
	//
	AssociatedRoles interface{} `field:"optional" json:"associatedRoles" yaml:"associatedRoles"`
	// Specifies whether minor engine upgrades are applied automatically to the DB cluster during the maintenance window.
	//
	// By default, minor engine upgrades are applied automatically.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-autominorversionupgrade
	//
	AutoMinorVersionUpgrade interface{} `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// A list of Availability Zones (AZs) where instances in the DB cluster can be created.
	//
	// For information on AWS Regions and Availability Zones, see [Choosing the Regions and Availability Zones](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.RegionsAndAvailabilityZones.html) in the *Amazon Aurora User Guide* .
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-availabilityzones
	//
	AvailabilityZones *[]*string `field:"optional" json:"availabilityZones" yaml:"availabilityZones"`
	// The target backtrack window, in seconds. To disable backtracking, set this value to 0.
	//
	// > Currently, Backtrack is only supported for Aurora MySQL DB clusters.
	//
	// Default: 0
	//
	// Constraints:
	//
	// - If specified, this value must be set to a number from 0 to 259,200 (72 hours).
	//
	// Valid for: Aurora MySQL DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-backtrackwindow
	//
	// Default: - 0.
	//
	BacktrackWindow *float64 `field:"optional" json:"backtrackWindow" yaml:"backtrackWindow"`
	// The number of days for which automated backups are retained.
	//
	// Default: 1
	//
	// Constraints:
	//
	// - Must be a value from 1 to 35
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-backupretentionperiod
	//
	// Default: - 1.
	//
	BackupRetentionPeriod *float64 `field:"optional" json:"backupRetentionPeriod" yaml:"backupRetentionPeriod"`
	// A value that indicates whether to copy all tags from the DB cluster to snapshots of the DB cluster.
	//
	// The default is not to copy them.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-copytagstosnapshot
	//
	CopyTagsToSnapshot interface{} `field:"optional" json:"copyTagsToSnapshot" yaml:"copyTagsToSnapshot"`
	// The name of your database.
	//
	// If you don't provide a name, then Amazon RDS won't create a database in this DB cluster. For naming constraints, see [Naming Constraints](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Limits.html#RDS_Limits.Constraints) in the *Amazon Aurora User Guide* .
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-databasename
	//
	DatabaseName *string `field:"optional" json:"databaseName" yaml:"databaseName"`
	// The DB cluster identifier. This parameter is stored as a lowercase string.
	//
	// Constraints:
	//
	// - Must contain from 1 to 63 letters, numbers, or hyphens.
	// - First character must be a letter.
	// - Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: `my-cluster1`
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-dbclusteridentifier
	//
	DbClusterIdentifier *string `field:"optional" json:"dbClusterIdentifier" yaml:"dbClusterIdentifier"`
	// The compute and memory capacity of each DB instance in the Multi-AZ DB cluster, for example `db.m6gd.xlarge` . 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 class](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html) in the *Amazon RDS User Guide* .
	//
	// This setting is required to create a Multi-AZ DB cluster.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-dbclusterinstanceclass
	//
	DbClusterInstanceClass *string `field:"optional" json:"dbClusterInstanceClass" yaml:"dbClusterInstanceClass"`
	// The name of the DB cluster parameter group to associate with this DB cluster.
	//
	// > If you apply a parameter group to an existing DB cluster, then its DB instances might need to reboot. This can result in an outage while the DB instances are rebooting.
	// >
	// > If you apply a change to parameter group associated with a stopped DB cluster, then the update stack waits until the DB cluster is started.
	//
	// To list all of the available DB cluster parameter group names, use the following command:
	//
	// `aws rds describe-db-cluster-parameter-groups --query "DBClusterParameterGroups[].DBClusterParameterGroupName" --output text`
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-dbclusterparametergroupname
	//
	// Default: - "default.aurora5.6"
	//
	DbClusterParameterGroupName *string `field:"optional" json:"dbClusterParameterGroupName" yaml:"dbClusterParameterGroupName"`
	// The name of the DB parameter group to apply to all instances of the DB cluster.
	//
	// > When you apply a parameter group using the `DBInstanceParameterGroupName` parameter, the DB cluster isn't rebooted automatically. Also, parameter changes are applied immediately rather than during the next maintenance window.
	//
	// Default: The existing name setting
	//
	// Constraints:
	//
	// - The DB parameter group must be in the same DB parameter group family as this DB cluster.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-dbinstanceparametergroupname
	//
	DbInstanceParameterGroupName *string `field:"optional" json:"dbInstanceParameterGroupName" yaml:"dbInstanceParameterGroupName"`
	// A DB subnet group that you want to associate with this DB cluster.
	//
	// If you are restoring a DB cluster to a point in time with `RestoreType` set to `copy-on-write` , and don't specify a DB subnet group name, then the DB cluster is restored with a default DB subnet group.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-dbsubnetgroupname
	//
	DbSubnetGroupName *string `field:"optional" json:"dbSubnetGroupName" yaml:"dbSubnetGroupName"`
	// Reserved for future use.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-dbsystemid
	//
	DbSystemId *string `field:"optional" json:"dbSystemId" yaml:"dbSystemId"`
	// A value that indicates whether the DB cluster has deletion protection enabled.
	//
	// The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-deletionprotection
	//
	DeletionProtection interface{} `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// Indicates the directory ID of the Active Directory to create the DB cluster.
	//
	// For Amazon Aurora DB clusters, Amazon RDS can use Kerberos authentication to authenticate users that connect to the DB cluster.
	//
	// For more information, see [Kerberos authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/kerberos-authentication.html) in the *Amazon Aurora User Guide* .
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-domain
	//
	Domain *string `field:"optional" json:"domain" yaml:"domain"`
	// Specifies the name of the IAM role to use when making API calls to the Directory Service.
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-domainiamrolename
	//
	DomainIamRoleName *string `field:"optional" json:"domainIamRoleName" yaml:"domainIamRoleName"`
	// 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/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch) in the *Amazon Aurora User Guide* .
	//
	// *Aurora MySQL*
	//
	// Valid values: `audit` , `error` , `general` , `slowquery`
	//
	// *Aurora PostgreSQL*
	//
	// Valid values: `postgresql`
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-enablecloudwatchlogsexports
	//
	EnableCloudwatchLogsExports *[]*string `field:"optional" json:"enableCloudwatchLogsExports" yaml:"enableCloudwatchLogsExports"`
	// Specifies whether to enable this DB cluster to forward write operations to the primary cluster of a global cluster (Aurora global database).
	//
	// By default, write operations are not allowed on Aurora DB clusters that are secondary clusters in an Aurora global database.
	//
	// You can set this value only on Aurora DB clusters that are members of an Aurora global database. With this parameter enabled, a secondary cluster can forward writes to the current primary cluster, and the resulting changes are replicated back to this cluster. For the primary DB cluster of an Aurora global database, this value is used immediately if the primary is demoted by a global cluster API operation, but it does nothing until then.
	//
	// Valid for Cluster Type: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-enableglobalwriteforwarding
	//
	EnableGlobalWriteForwarding interface{} `field:"optional" json:"enableGlobalWriteForwarding" yaml:"enableGlobalWriteForwarding"`
	// A value that indicates whether to enable the HTTP endpoint for an Aurora Serverless DB cluster.
	//
	// By default, the HTTP endpoint is disabled.
	//
	// When enabled, the HTTP endpoint provides a connectionless web service API for running SQL queries on the Aurora Serverless DB cluster. You can also query your database from inside the RDS console with the query editor.
	//
	// For more information, see [Using the Data API for Aurora Serverless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html) in the *Amazon Aurora User Guide* .
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-enablehttpendpoint
	//
	EnableHttpEndpoint interface{} `field:"optional" json:"enableHttpEndpoint" yaml:"enableHttpEndpoint"`
	// A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts.
	//
	// By default, mapping is disabled.
	//
	// For more information, see [IAM Database Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html) in the *Amazon Aurora User Guide.*
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-enableiamdatabaseauthentication
	//
	EnableIamDatabaseAuthentication interface{} `field:"optional" json:"enableIamDatabaseAuthentication" yaml:"enableIamDatabaseAuthentication"`
	// The name of the database engine to be used for this DB cluster.
	//
	// Valid Values:
	//
	// - `aurora-mysql`
	// - `aurora-postgresql`
	// - `mysql`
	// - `postgres`
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-engine
	//
	Engine *string `field:"optional" json:"engine" yaml:"engine"`
	// The DB engine mode of the DB cluster, either `provisioned` or `serverless` .
	//
	// The `serverless` engine mode only supports Aurora Serverless v1.
	//
	// Limitations and requirements apply to some DB engine modes. For more information, see the following sections in the *Amazon Aurora User Guide* :
	//
	// - [Limitations of Aurora Serverless v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html#aurora-serverless.limitations)
	// - [Requirements for Aurora Serverless v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html)
	// - [Limitations of parallel query](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-mysql-parallel-query.html#aurora-mysql-parallel-query-limitations)
	// - [Limitations of Aurora global databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database.limitations)
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-enginemode
	//
	EngineMode *string `field:"optional" json:"engineMode" yaml:"engineMode"`
	// The version number of the database engine to use.
	//
	// To list all of the available engine versions for Aurora MySQL version 2 (5.7-compatible) and version 3 (8.0-compatible), use the following command:
	//
	// `aws rds describe-db-engine-versions --engine aurora-mysql --query "DBEngineVersions[].EngineVersion"`
	//
	// You can supply either `5.7` or `8.0` to use the default engine version for Aurora MySQL version 2 or version 3, respectively.
	//
	// To list all of the available engine versions for Aurora PostgreSQL, use the following command:
	//
	// `aws rds describe-db-engine-versions --engine aurora-postgresql --query "DBEngineVersions[].EngineVersion"`
	//
	// To list all of the available engine versions for RDS for MySQL, use the following command:
	//
	// `aws rds describe-db-engine-versions --engine mysql --query "DBEngineVersions[].EngineVersion"`
	//
	// To list all of the available engine versions for RDS for PostgreSQL, use the following command:
	//
	// `aws rds describe-db-engine-versions --engine postgres --query "DBEngineVersions[].EngineVersion"`
	//
	// *Aurora MySQL*
	//
	// For information, see [Database engine updates for Amazon Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.html) in the *Amazon Aurora User Guide* .
	//
	// *Aurora PostgreSQL*
	//
	// For information, see [Amazon Aurora PostgreSQL releases and engine versions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html) in the *Amazon Aurora User Guide* .
	//
	// *MySQL*
	//
	// For information, see [Amazon RDS for MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt) in the *Amazon RDS User Guide* .
	//
	// *PostgreSQL*
	//
	// For information, see [Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts) in the *Amazon RDS User Guide* .
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-engineversion
	//
	EngineVersion *string `field:"optional" json:"engineVersion" yaml:"engineVersion"`
	// If you are configuring an Aurora global database cluster and want your Aurora DB cluster to be a secondary member in the global database cluster, specify the global cluster ID of the global database cluster.
	//
	// To define the primary database cluster of the global cluster, use the [AWS::RDS::GlobalCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html) resource.
	//
	// If you aren't configuring a global database cluster, don't specify this property.
	//
	// > To remove the DB cluster from a global database cluster, specify an empty value for the `GlobalClusterIdentifier` property.
	//
	// For information about Aurora global databases, see [Working with Amazon Aurora Global Databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) in the *Amazon Aurora User Guide* .
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-globalclusteridentifier
	//
	GlobalClusterIdentifier *string `field:"optional" json:"globalClusterIdentifier" yaml:"globalClusterIdentifier"`
	// The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for each DB instance in the Multi-AZ DB cluster.
	//
	// For information about valid IOPS values, see [Provisioned IOPS storage](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS) in the *Amazon RDS User Guide* .
	//
	// This setting is required to create a Multi-AZ DB cluster.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// Constraints:
	//
	// - Must be a multiple between .5 and 50 of the storage amount for the DB cluster.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-iops
	//
	Iops *float64 `field:"optional" json:"iops" yaml:"iops"`
	// The Amazon Resource Name (ARN) of the AWS KMS key that is used to encrypt the database instances in the DB cluster, 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, the default KMS key is used. If you specify this property, you must set the `StorageEncrypted` property to `true` .
	//
	// If you specify the `SnapshotIdentifier` property, the `StorageEncrypted` property value is inherited from the snapshot, and if the DB cluster is encrypted, the specified `KmsKeyId` property is used.
	//
	// If you create a read replica of an encrypted DB cluster in another AWS Region, make sure to set `KmsKeyId` to a KMS key identifier that is valid in the destination AWS Region. This KMS key is used to encrypt the read replica in that AWS Region.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-kmskeyid
	//
	KmsKeyId *string `field:"optional" json:"kmsKeyId" yaml:"kmsKeyId"`
	// 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* and [Password management with AWS Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	// - Can't manage the master user password with AWS Secrets Manager if `MasterUserPassword` is specified.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-managemasteruserpassword
	//
	ManageMasterUserPassword interface{} `field:"optional" json:"manageMasterUserPassword" yaml:"manageMasterUserPassword"`
	// The name of the master user for the DB cluster.
	//
	// > If you specify the `SourceDBClusterIdentifier` , `SnapshotIdentifier` , or `GlobalClusterIdentifier` property, don't specify this property. The value is inherited from the source DB cluster, the snapshot, or the primary DB cluster for the global database cluster, respectively.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-masterusername
	//
	MasterUsername *string `field:"optional" json:"masterUsername" yaml:"masterUsername"`
	// The master password for the DB instance.
	//
	// > If you specify the `SourceDBClusterIdentifier` , `SnapshotIdentifier` , or `GlobalClusterIdentifier` property, don't specify this property. The value is inherited from the source DB cluster, the snapshot, or the primary DB cluster for the global database cluster, respectively.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-masteruserpassword
	//
	MasterUserPassword *string `field:"optional" json:"masterUserPassword" yaml:"masterUserPassword"`
	// 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* and [Password management with AWS Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-masterusersecret
	//
	MasterUserSecret interface{} `field:"optional" json:"masterUserSecret" yaml:"masterUserSecret"`
	// The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB cluster.
	//
	// To turn off collecting Enhanced Monitoring metrics, specify `0` .
	//
	// If `MonitoringRoleArn` is specified, also set `MonitoringInterval` to a value other than `0` .
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// Valid Values: `0 | 1 | 5 | 10 | 15 | 30 | 60`
	//
	// Default: `0`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-monitoringinterval
	//
	// Default: - 0.
	//
	MonitoringInterval *float64 `field:"optional" json:"monitoringInterval" yaml:"monitoringInterval"`
	// The Amazon Resource Name (ARN) for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs.
	//
	// An example is `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` , supply a `MonitoringRoleArn` value.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-monitoringrolearn
	//
	MonitoringRoleArn *string `field:"optional" json:"monitoringRoleArn" yaml:"monitoringRoleArn"`
	// The network type of the DB cluster.
	//
	// Valid values:
	//
	// - `IPV4`
	// - `DUAL`
	//
	// The network type is determined by the `DBSubnetGroup` specified for the DB cluster. 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/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html) in the *Amazon Aurora User Guide.*
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-networktype
	//
	NetworkType *string `field:"optional" json:"networkType" yaml:"networkType"`
	// Specifies whether to turn on Performance Insights for the DB cluster.
	//
	// 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* .
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-performanceinsightsenabled
	//
	PerformanceInsightsEnabled interface{} `field:"optional" json:"performanceInsightsEnabled" yaml:"performanceInsightsEnabled"`
	// The AWS KMS key identifier for encryption of Performance Insights data.
	//
	// The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.
	//
	// If you don't 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 .
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-performanceinsightskmskeyid
	//
	PerformanceInsightsKmsKeyId *string `field:"optional" json:"performanceInsightsKmsKeyId" yaml:"performanceInsightsKmsKeyId"`
	// The number of days to retain Performance Insights data.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// 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 issues an error.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-performanceinsightsretentionperiod
	//
	PerformanceInsightsRetentionPeriod *float64 `field:"optional" json:"performanceInsightsRetentionPeriod" yaml:"performanceInsightsRetentionPeriod"`
	// The port number on which the DB instances in the DB cluster accept connections.
	//
	// Default:
	//
	// - When `EngineMode` is `provisioned` , `3306` (for both Aurora MySQL and Aurora PostgreSQL)
	// - When `EngineMode` is `serverless` :
	//
	// - `3306` when `Engine` is `aurora` or `aurora-mysql`
	// - `5432` when `Engine` is `aurora-postgresql`
	//
	// > The `No interruption` on update behavior only applies to DB clusters. If you are updating a DB instance, see [Port](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-port) for the AWS::RDS::DBInstance resource.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-port
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// The daily time range during which automated backups are created.
	//
	// For more information, see [Backup Window](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.Backups.BackupWindow) in the *Amazon Aurora 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.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-preferredbackupwindow
	//
	PreferredBackupWindow *string `field:"optional" json:"preferredBackupWindow" yaml:"preferredBackupWindow"`
	// 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 Cluster Maintenance Window](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow.Aurora) in the *Amazon Aurora User Guide.*
	//
	// Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
	//
	// Constraints: Minimum 30-minute window.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-preferredmaintenancewindow
	//
	PreferredMaintenanceWindow *string `field:"optional" json:"preferredMaintenanceWindow" yaml:"preferredMaintenanceWindow"`
	// Specifies whether the DB cluster is publicly accessible.
	//
	// When the DB cluster is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB cluster's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB cluster's VPC. Access to the DB cluster is ultimately controlled by the security group it uses. That public access isn't permitted if the security group assigned to the DB cluster doesn't permit it.
	//
	// When the DB cluster isn't publicly accessible, it is an internal DB cluster with a DNS name that resolves to a private IP address.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// Default: The default behavior varies depending on whether `DBSubnetGroupName` is specified.
	//
	// If `DBSubnetGroupName` isn't specified, and `PubliclyAccessible` isn't specified, the following applies:
	//
	// - If the default VPC in the target Region doesn’t have an internet gateway attached to it, the DB cluster is private.
	// - If the default VPC in the target Region has an internet gateway attached to it, the DB cluster is public.
	//
	// If `DBSubnetGroupName` is specified, and `PubliclyAccessible` isn't specified, the following applies:
	//
	// - If the subnets are part of a VPC that doesn’t have an internet gateway attached to it, the DB cluster is private.
	// - If the subnets are part of a VPC that has an internet gateway attached to it, the DB cluster is public.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-publiclyaccessible
	//
	PubliclyAccessible interface{} `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
	// The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this DB cluster is created as a read replica.
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-replicationsourceidentifier
	//
	ReplicationSourceIdentifier *string `field:"optional" json:"replicationSourceIdentifier" yaml:"replicationSourceIdentifier"`
	// The date and time to restore the DB cluster to.
	//
	// Valid Values: Value must be a time in Universal Coordinated Time (UTC) format
	//
	// Constraints:
	//
	// - Must be before the latest restorable time for the DB instance
	// - Must be specified if `UseLatestRestorableTime` parameter isn't provided
	// - Can't be specified if the `UseLatestRestorableTime` parameter is enabled
	// - Can't be specified if the `RestoreType` parameter is `copy-on-write`
	//
	// This property must be used with `SourceDBClusterIdentifier` property. The resulting cluster will have the identifier that matches the value of the `DBclusterIdentifier` property.
	//
	// Example: `2015-03-07T23:45:00Z`
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-restoretotime
	//
	RestoreToTime *string `field:"optional" json:"restoreToTime" yaml:"restoreToTime"`
	// The type of restore to be performed. You can specify one of the following values:.
	//
	// - `full-copy` - The new DB cluster is restored as a full copy of the source DB cluster.
	// - `copy-on-write` - The new DB cluster is restored as a clone of the source DB cluster.
	//
	// If you don't specify a `RestoreType` value, then the new DB cluster is restored as a full copy of the source DB cluster.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-restoretype
	//
	// Default: - "full-copy".
	//
	RestoreType *string `field:"optional" json:"restoreType" yaml:"restoreType"`
	// The `ScalingConfiguration` property type specifies the scaling configuration of an Aurora Serverless DB cluster.
	//
	// This property is only supported for Aurora Serverless v1. For Aurora Serverless v2, use `ServerlessV2ScalingConfiguration` property.
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-scalingconfiguration
	//
	ScalingConfiguration interface{} `field:"optional" json:"scalingConfiguration" yaml:"scalingConfiguration"`
	// The `ServerlessV2ScalingConfiguration` property type specifies the scaling configuration of an Aurora Serverless V2 DB cluster.
	//
	// This property is only supported for Aurora Serverless v2. For Aurora Serverless v1, use `ScalingConfiguration` property.
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-serverlessv2scalingconfiguration
	//
	ServerlessV2ScalingConfiguration interface{} `field:"optional" json:"serverlessV2ScalingConfiguration" yaml:"serverlessV2ScalingConfiguration"`
	// The identifier for the DB snapshot or DB cluster snapshot to restore from.
	//
	// You can use either the name or the Amazon Resource Name (ARN) to specify a DB cluster snapshot. However, you can use only the ARN to specify a DB snapshot.
	//
	// After you restore a DB cluster with a `SnapshotIdentifier` property, you must specify the same `SnapshotIdentifier` property for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed. However, if you don't specify the `SnapshotIdentifier` property, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, a new DB cluster is restored from the specified `SnapshotIdentifier` property, and the original DB cluster is deleted.
	//
	// If you specify the `SnapshotIdentifier` property to restore a DB cluster (as opposed to specifying it for DB cluster updates), then don't specify the following properties:
	//
	// - `GlobalClusterIdentifier`
	// - `MasterUsername`
	// - `MasterUserPassword`
	// - `ReplicationSourceIdentifier`
	// - `RestoreType`
	// - `SourceDBClusterIdentifier`
	// - `SourceRegion`
	// - `StorageEncrypted` (for an encrypted snapshot)
	// - `UseLatestRestorableTime`
	//
	// Constraints:
	//
	// - Must match the identifier of an existing Snapshot.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-snapshotidentifier
	//
	SnapshotIdentifier *string `field:"optional" json:"snapshotIdentifier" yaml:"snapshotIdentifier"`
	// When restoring a DB cluster to a point in time, the identifier of the source DB cluster from which to restore.
	//
	// Constraints:
	//
	// - Must match the identifier of an existing DBCluster.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-sourcedbclusteridentifier
	//
	SourceDbClusterIdentifier *string `field:"optional" json:"sourceDbClusterIdentifier" yaml:"sourceDbClusterIdentifier"`
	// The AWS Region which contains the source DB cluster when replicating a DB cluster. For example, `us-east-1` .
	//
	// Valid for: Aurora DB clusters only.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-sourceregion
	//
	SourceRegion *string `field:"optional" json:"sourceRegion" yaml:"sourceRegion"`
	// Indicates whether the DB cluster is encrypted.
	//
	// If you specify the `KmsKeyId` property, then you must enable encryption.
	//
	// If you specify the `SourceDBClusterIdentifier` property, don't specify this property. The value is inherited from the source DB cluster, and if the DB cluster is encrypted, the specified `KmsKeyId` property is used.
	//
	// If you specify the `SnapshotIdentifier` and the specified snapshot is encrypted, don't specify this property. The value is inherited from the snapshot, and the specified `KmsKeyId` property is used.
	//
	// If you specify the `SnapshotIdentifier` and the specified snapshot isn't encrypted, you can use this property to specify that the restored DB cluster is encrypted. Specify the `KmsKeyId` property for the KMS key to use for encryption. If you don't want the restored DB cluster to be encrypted, then don't set this property or set it to `false` .
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-storageencrypted
	//
	StorageEncrypted interface{} `field:"optional" json:"storageEncrypted" yaml:"storageEncrypted"`
	// The storage type to associate with the DB cluster.
	//
	// For information on storage types for Aurora DB clusters, see [Storage configurations for Amazon Aurora DB clusters](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html#aurora-storage-type) . For information on storage types for Multi-AZ DB clusters, see [Settings for creating Multi-AZ DB clusters](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html#create-multi-az-db-cluster-settings) .
	//
	// This setting is required to create a Multi-AZ DB cluster.
	//
	// When specified for a Multi-AZ DB cluster, a value for the `Iops` parameter is required.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Valid Values:
	//
	// - Aurora DB clusters - `aurora | aurora-iopt1`
	// - Multi-AZ DB clusters - `io1`
	//
	// Default:
	//
	// - Aurora DB clusters - `aurora`
	// - Multi-AZ DB clusters - `io1`
	//
	// > When you create an Aurora DB cluster with the storage type set to `aurora-iopt1` , the storage type is returned in the response. The storage type isn't returned when you set it to `aurora` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-storagetype
	//
	StorageType *string `field:"optional" json:"storageType" yaml:"storageType"`
	// An optional array of key-value pairs to apply to this DB cluster.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// A value that indicates whether to restore the DB cluster to the latest restorable backup time.
	//
	// By default, the DB cluster is not restored to the latest restorable backup time.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-uselatestrestorabletime
	//
	UseLatestRestorableTime interface{} `field:"optional" json:"useLatestRestorableTime" yaml:"useLatestRestorableTime"`
	// A list of EC2 VPC security groups to associate with this DB cluster.
	//
	// If you plan to update the resource, don't specify VPC security groups in a shared VPC.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-vpcsecuritygroupids
	//
	VpcSecurityGroupIds *[]*string `field:"optional" json:"vpcSecurityGroupIds" yaml:"vpcSecurityGroupIds"`
}

Properties for defining a `CfnDBCluster`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBClusterProps := &CfnDBClusterProps{
	AllocatedStorage: jsii.Number(123),
	AssociatedRoles: []interface{}{
		&DBClusterRoleProperty{
			RoleArn: jsii.String("roleArn"),

			// the properties below are optional
			FeatureName: jsii.String("featureName"),
		},
	},
	AutoMinorVersionUpgrade: jsii.Boolean(false),
	AvailabilityZones: []*string{
		jsii.String("availabilityZones"),
	},
	BacktrackWindow: jsii.Number(123),
	BackupRetentionPeriod: jsii.Number(123),
	CopyTagsToSnapshot: jsii.Boolean(false),
	DatabaseName: jsii.String("databaseName"),
	DbClusterIdentifier: jsii.String("dbClusterIdentifier"),
	DbClusterInstanceClass: jsii.String("dbClusterInstanceClass"),
	DbClusterParameterGroupName: jsii.String("dbClusterParameterGroupName"),
	DbInstanceParameterGroupName: jsii.String("dbInstanceParameterGroupName"),
	DbSubnetGroupName: jsii.String("dbSubnetGroupName"),
	DbSystemId: jsii.String("dbSystemId"),
	DeletionProtection: jsii.Boolean(false),
	Domain: jsii.String("domain"),
	DomainIamRoleName: jsii.String("domainIamRoleName"),
	EnableCloudwatchLogsExports: []*string{
		jsii.String("enableCloudwatchLogsExports"),
	},
	EnableGlobalWriteForwarding: jsii.Boolean(false),
	EnableHttpEndpoint: jsii.Boolean(false),
	EnableIamDatabaseAuthentication: jsii.Boolean(false),
	Engine: jsii.String("engine"),
	EngineMode: jsii.String("engineMode"),
	EngineVersion: jsii.String("engineVersion"),
	GlobalClusterIdentifier: jsii.String("globalClusterIdentifier"),
	Iops: jsii.Number(123),
	KmsKeyId: jsii.String("kmsKeyId"),
	ManageMasterUserPassword: jsii.Boolean(false),
	MasterUsername: jsii.String("masterUsername"),
	MasterUserPassword: jsii.String("masterUserPassword"),
	MasterUserSecret: &MasterUserSecretProperty{
		KmsKeyId: jsii.String("kmsKeyId"),
		SecretArn: jsii.String("secretArn"),
	},
	MonitoringInterval: jsii.Number(123),
	MonitoringRoleArn: jsii.String("monitoringRoleArn"),
	NetworkType: jsii.String("networkType"),
	PerformanceInsightsEnabled: jsii.Boolean(false),
	PerformanceInsightsKmsKeyId: jsii.String("performanceInsightsKmsKeyId"),
	PerformanceInsightsRetentionPeriod: jsii.Number(123),
	Port: jsii.Number(123),
	PreferredBackupWindow: jsii.String("preferredBackupWindow"),
	PreferredMaintenanceWindow: jsii.String("preferredMaintenanceWindow"),
	PubliclyAccessible: jsii.Boolean(false),
	ReplicationSourceIdentifier: jsii.String("replicationSourceIdentifier"),
	RestoreToTime: jsii.String("restoreToTime"),
	RestoreType: jsii.String("restoreType"),
	ScalingConfiguration: &ScalingConfigurationProperty{
		AutoPause: jsii.Boolean(false),
		MaxCapacity: jsii.Number(123),
		MinCapacity: jsii.Number(123),
		SecondsBeforeTimeout: jsii.Number(123),
		SecondsUntilAutoPause: jsii.Number(123),
		TimeoutAction: jsii.String("timeoutAction"),
	},
	ServerlessV2ScalingConfiguration: &ServerlessV2ScalingConfigurationProperty{
		MaxCapacity: jsii.Number(123),
		MinCapacity: jsii.Number(123),
	},
	SnapshotIdentifier: jsii.String("snapshotIdentifier"),
	SourceDbClusterIdentifier: jsii.String("sourceDbClusterIdentifier"),
	SourceRegion: jsii.String("sourceRegion"),
	StorageEncrypted: jsii.Boolean(false),
	StorageType: jsii.String("storageType"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	UseLatestRestorableTime: jsii.Boolean(false),
	VpcSecurityGroupIds: []*string{
		jsii.String("vpcSecurityGroupIds"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html

type CfnDBCluster_DBClusterRoleProperty

type CfnDBCluster_DBClusterRoleProperty struct {
	// The Amazon Resource Name (ARN) of the IAM role that is associated with the DB cluster.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-dbclusterrole.html#cfn-rds-dbcluster-dbclusterrole-rolearn
	//
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The name of the feature associated with the AWS Identity and Access Management (IAM) role.
	//
	// IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf. For the list of supported feature names, see the `SupportedFeatureNames` description in [DBEngineVersion](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBEngineVersion.html) in the *Amazon RDS API Reference* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-dbclusterrole.html#cfn-rds-dbcluster-dbclusterrole-featurename
	//
	FeatureName *string `field:"optional" json:"featureName" yaml:"featureName"`
}

Describes an AWS Identity and Access Management (IAM) role that is associated with a DB cluster.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

dBClusterRoleProperty := &DBClusterRoleProperty{
	RoleArn: jsii.String("roleArn"),

	// the properties below are optional
	FeatureName: jsii.String("featureName"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-dbclusterrole.html

type CfnDBCluster_EndpointProperty added in v2.55.0

type CfnDBCluster_EndpointProperty struct {
	// Specifies the connection endpoint for the primary instance of the DB cluster.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-endpoint.html#cfn-rds-dbcluster-endpoint-address
	//
	Address *string `field:"optional" json:"address" yaml:"address"`
	// Specifies the port that the database engine is listening on.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-endpoint.html#cfn-rds-dbcluster-endpoint-port
	//
	Port *string `field:"optional" json:"port" yaml:"port"`
}

The `Endpoint` return value specifies the connection endpoint for the primary instance of the DB cluster.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

endpointProperty := &EndpointProperty{
	Address: jsii.String("address"),
	Port: jsii.String("port"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-endpoint.html

type CfnDBCluster_MasterUserSecretProperty added in v2.61.0

type CfnDBCluster_MasterUserSecretProperty struct {
	// The AWS KMS key identifier that is used to encrypt the secret.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-masterusersecret.html#cfn-rds-dbcluster-masterusersecret-kmskeyid
	//
	KmsKeyId *string `field:"optional" json:"kmsKeyId" yaml:"kmsKeyId"`
	// The Amazon Resource Name (ARN) of the secret.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-masterusersecret.html#cfn-rds-dbcluster-masterusersecret-secretarn
	//
	SecretArn *string `field:"optional" json:"secretArn" yaml:"secretArn"`
}

The `MasterUserSecret` return value specifies 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* and [Password management with AWS Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

masterUserSecretProperty := &MasterUserSecretProperty{
	KmsKeyId: jsii.String("kmsKeyId"),
	SecretArn: jsii.String("secretArn"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-masterusersecret.html

type CfnDBCluster_ReadEndpointProperty added in v2.45.0

type CfnDBCluster_ReadEndpointProperty struct {
	// The host address of the reader endpoint.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-readendpoint.html#cfn-rds-dbcluster-readendpoint-address
	//
	Address *string `field:"optional" json:"address" yaml:"address"`
}

The `ReadEndpoint` return value specifies the reader endpoint for the DB cluster.

The reader endpoint for a DB cluster load-balances connections across the Aurora Replicas that are available in a DB cluster. As clients request new connections to the reader endpoint, Aurora distributes the connection requests among the Aurora Replicas in the DB cluster. This functionality can help balance your read workload across multiple Aurora Replicas in your DB cluster.

If a failover occurs, and the Aurora Replica that you are connected to is promoted to be the primary instance, your connection is dropped. To continue sending your read workload to other Aurora Replicas in the cluster, you can then reconnect to the reader endpoint.

For more information about Aurora endpoints, see [Amazon Aurora connection management](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.Endpoints.html) in the *Amazon Aurora User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

readEndpointProperty := &ReadEndpointProperty{
	Address: jsii.String("address"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-readendpoint.html

type CfnDBCluster_ScalingConfigurationProperty

type CfnDBCluster_ScalingConfigurationProperty struct {
	// Indicates whether to allow or disallow automatic pause for an Aurora DB cluster in `serverless` DB engine mode.
	//
	// A DB cluster can be paused only when it's idle (it has no connections).
	//
	// > If a DB cluster is paused for more than seven days, the DB cluster might be backed up with a snapshot. In this case, the DB cluster is restored when there is a request to connect to it.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-scalingconfiguration.html#cfn-rds-dbcluster-scalingconfiguration-autopause
	//
	AutoPause interface{} `field:"optional" json:"autoPause" yaml:"autoPause"`
	// The maximum capacity for an Aurora DB cluster in `serverless` DB engine mode.
	//
	// For Aurora MySQL, valid capacity values are `1` , `2` , `4` , `8` , `16` , `32` , `64` , `128` , and `256` .
	//
	// For Aurora PostgreSQL, valid capacity values are `2` , `4` , `8` , `16` , `32` , `64` , `192` , and `384` .
	//
	// The maximum capacity must be greater than or equal to the minimum capacity.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-scalingconfiguration.html#cfn-rds-dbcluster-scalingconfiguration-maxcapacity
	//
	MaxCapacity *float64 `field:"optional" json:"maxCapacity" yaml:"maxCapacity"`
	// The minimum capacity for an Aurora DB cluster in `serverless` DB engine mode.
	//
	// For Aurora MySQL, valid capacity values are `1` , `2` , `4` , `8` , `16` , `32` , `64` , `128` , and `256` .
	//
	// For Aurora PostgreSQL, valid capacity values are `2` , `4` , `8` , `16` , `32` , `64` , `192` , and `384` .
	//
	// The minimum capacity must be less than or equal to the maximum capacity.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-scalingconfiguration.html#cfn-rds-dbcluster-scalingconfiguration-mincapacity
	//
	MinCapacity *float64 `field:"optional" json:"minCapacity" yaml:"minCapacity"`
	// The amount of time, in seconds, that Aurora Serverless v1 tries to find a scaling point to perform seamless scaling before enforcing the timeout action.
	//
	// The default is 300.
	//
	// Specify a value between 60 and 600 seconds.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-scalingconfiguration.html#cfn-rds-dbcluster-scalingconfiguration-secondsbeforetimeout
	//
	SecondsBeforeTimeout *float64 `field:"optional" json:"secondsBeforeTimeout" yaml:"secondsBeforeTimeout"`
	// The time, in seconds, before an Aurora DB cluster in `serverless` mode is paused.
	//
	// Specify a value between 300 and 86,400 seconds.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-scalingconfiguration.html#cfn-rds-dbcluster-scalingconfiguration-secondsuntilautopause
	//
	SecondsUntilAutoPause *float64 `field:"optional" json:"secondsUntilAutoPause" yaml:"secondsUntilAutoPause"`
	// The action to take when the timeout is reached, either `ForceApplyCapacityChange` or `RollbackCapacityChange` .
	//
	// `ForceApplyCapacityChange` sets the capacity to the specified value as soon as possible.
	//
	// `RollbackCapacityChange` , the default, ignores the capacity change if a scaling point isn't found in the timeout period.
	//
	// > If you specify `ForceApplyCapacityChange` , connections that prevent Aurora Serverless v1 from finding a scaling point might be dropped.
	//
	// For more information, see [Autoscaling for Aurora Serverless v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.how-it-works.auto-scaling) in the *Amazon Aurora User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-scalingconfiguration.html#cfn-rds-dbcluster-scalingconfiguration-timeoutaction
	//
	TimeoutAction *string `field:"optional" json:"timeoutAction" yaml:"timeoutAction"`
}

The `ScalingConfiguration` property type specifies the scaling configuration of an Aurora Serverless DB cluster.

For more information, see [Using Amazon Aurora Serverless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html) in the *Amazon Aurora User Guide* .

This property is only supported for Aurora Serverless v1. For Aurora Serverless v2, use `ServerlessV2ScalingConfiguration` property.

Valid for: Aurora DB clusters only.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

scalingConfigurationProperty := &ScalingConfigurationProperty{
	AutoPause: jsii.Boolean(false),
	MaxCapacity: jsii.Number(123),
	MinCapacity: jsii.Number(123),
	SecondsBeforeTimeout: jsii.Number(123),
	SecondsUntilAutoPause: jsii.Number(123),
	TimeoutAction: jsii.String("timeoutAction"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-scalingconfiguration.html

type CfnDBCluster_ServerlessV2ScalingConfigurationProperty added in v2.45.0

type CfnDBCluster_ServerlessV2ScalingConfigurationProperty struct {
	// The maximum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster.
	//
	// You can specify ACU values in half-step increments, such as 40, 40.5, 41, and so on. The largest value that you can use is 128.
	//
	// The maximum capacity must be higher than 0.5 ACUs. For more information, see [Choosing the maximum Aurora Serverless v2 capacity setting for a cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html#aurora-serverless-v2.max_capacity_considerations) in the *Amazon Aurora User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-serverlessv2scalingconfiguration.html#cfn-rds-dbcluster-serverlessv2scalingconfiguration-maxcapacity
	//
	MaxCapacity *float64 `field:"optional" json:"maxCapacity" yaml:"maxCapacity"`
	// The minimum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster.
	//
	// You can specify ACU values in half-step increments, such as 8, 8.5, 9, and so on. The smallest value that you can use is 0.5.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-serverlessv2scalingconfiguration.html#cfn-rds-dbcluster-serverlessv2scalingconfiguration-mincapacity
	//
	MinCapacity *float64 `field:"optional" json:"minCapacity" yaml:"minCapacity"`
}

The `ServerlessV2ScalingConfiguration` property type specifies the scaling configuration of an Aurora Serverless V2 DB cluster.

For more information, see [Using Amazon Aurora Serverless v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) in the *Amazon Aurora User Guide* .

If you have an Aurora cluster, you must set the `ScalingConfigurationInfo` attribute before you add a DB instance that uses the `db.serverless` DB instance class. For more information, see [Clusters that use Aurora Serverless v2 must have a capacity range specified](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html#aurora-serverless-v2.requirements.capacity-range) in the *Amazon Aurora User Guide* .

This property is only supported for Aurora Serverless v2. For Aurora Serverless v1, use `ScalingConfiguration` property.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

serverlessV2ScalingConfigurationProperty := &ServerlessV2ScalingConfigurationProperty{
	MaxCapacity: jsii.Number(123),
	MinCapacity: jsii.Number(123),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-serverlessv2scalingconfiguration.html

type CfnDBInstance

type CfnDBInstance interface {
	awscdk.CfnResource
	awscdk.IInspectable
	awscdk.ITaggable
	// The amount of storage in gibibytes (GiB) to be initially allocated for the database instance.
	AllocatedStorage() *string
	SetAllocatedStorage(val *string)
	// A value that indicates whether major version upgrades are allowed.
	AllowMajorVersionUpgrade() interface{}
	SetAllowMajorVersionUpgrade(val interface{})
	// The AWS Identity and Access Management (IAM) roles associated with the DB instance.
	AssociatedRoles() interface{}
	SetAssociatedRoles(val interface{})
	// The CA identifier of the CA certificate used for the DB instance's server certificate.
	AttrCertificateDetailsCaIdentifier() *string
	// The expiration date of the DB instance’s server certificate.
	AttrCertificateDetailsValidTill() *string
	// The Amazon Resource Name (ARN) for the DB instance.
	AttrDbInstanceArn() *string
	// The AWS Region-unique, immutable identifier for the DB instance.
	//
	// This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB instance is accessed.
	AttrDbiResourceId() *string
	// The Oracle system ID (Oracle SID) for a container database (CDB).
	//
	// The Oracle SID is also the name of the CDB.
	//
	// This setting is valid for RDS Custom only.
	AttrDbSystemId() *string
	// Specifies the DNS address of the DB instance.
	AttrEndpointAddress() *string
	// Specifies the ID that Amazon Route 53 assigns when you create a hosted zone.
	AttrEndpointHostedZoneId() *string
	// Specifies the port that the database engine is listening on.
	AttrEndpointPort() *string
	// The Amazon Resource Name (ARN) of the secret.
	AttrMasterUserSecretSecretArn() *string
	// The destination region for the backup replication of the DB instance.
	AutomaticBackupReplicationRegion() *string
	SetAutomaticBackupReplicationRegion(val *string)
	// A value that indicates whether minor engine upgrades are applied automatically to the DB instance during the maintenance window.
	AutoMinorVersionUpgrade() interface{}
	SetAutoMinorVersionUpgrade(val interface{})
	// The Availability Zone (AZ) where the database will be created.
	AvailabilityZone() *string
	SetAvailabilityZone(val *string)
	// The number of days for which automated backups are retained.
	BackupRetentionPeriod() *float64
	SetBackupRetentionPeriod(val *float64)
	// The identifier of the CA certificate for this DB instance.
	CaCertificateIdentifier() *string
	SetCaCertificateIdentifier(val *string)
	// The details of the DB instance's server certificate.
	CertificateDetails() interface{}
	SetCertificateDetails(val interface{})
	// Specifies whether the DB instance is restarted when you rotate your SSL/TLS certificate.
	CertificateRotationRestart() interface{}
	SetCertificateRotationRestart(val interface{})
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// For supported engines, indicates that the DB instance should be associated with the specified character set.
	CharacterSetName() *string
	SetCharacterSetName(val *string)
	// Specifies whether to copy tags from the DB instance to snapshots of the DB instance.
	CopyTagsToSnapshot() interface{}
	SetCopyTagsToSnapshot(val interface{})
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The instance profile associated with the underlying Amazon EC2 instance of an RDS Custom DB instance.
	CustomIamInstanceProfile() *string
	SetCustomIamInstanceProfile(val *string)
	// The identifier of the DB cluster that the instance will belong to.
	DbClusterIdentifier() *string
	SetDbClusterIdentifier(val *string)
	// The identifier for the RDS for MySQL Multi-AZ DB cluster snapshot to restore from.
	DbClusterSnapshotIdentifier() *string
	SetDbClusterSnapshotIdentifier(val *string)
	// The compute and memory capacity of the DB instance, for example, `db.m4.large` . Not all DB instance classes are available in all AWS Regions, or for all database engines.
	DbInstanceClass() *string
	SetDbInstanceClass(val *string)
	// A name for the DB instance.
	DbInstanceIdentifier() *string
	SetDbInstanceIdentifier(val *string)
	// The meaning of this parameter differs according to the database engine you use.
	DbName() *string
	SetDbName(val *string)
	// 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.
	DbParameterGroupName() *string
	SetDbParameterGroupName(val *string)
	// A list of the DB security groups to assign to the DB instance.
	DbSecurityGroups() *[]*string
	SetDbSecurityGroups(val *[]*string)
	// The name or Amazon Resource Name (ARN) of the DB snapshot that's used to restore the DB instance.
	DbSnapshotIdentifier() *string
	SetDbSnapshotIdentifier(val *string)
	// A DB subnet group to associate with the DB instance.
	DbSubnetGroupName() *string
	SetDbSubnetGroupName(val *string)
	// Indicates whether the DB instance has a dedicated log volume (DLV) enabled.
	DedicatedLogVolume() interface{}
	SetDedicatedLogVolume(val interface{})
	// A value that indicates whether to remove automated backups immediately after the DB instance is deleted.
	DeleteAutomatedBackups() interface{}
	SetDeleteAutomatedBackups(val interface{})
	// A value that indicates whether the DB instance has deletion protection enabled.
	DeletionProtection() interface{}
	SetDeletionProtection(val interface{})
	// The Active Directory directory ID to create the DB instance in.
	Domain() *string
	SetDomain(val *string)
	// The ARN for the Secrets Manager secret with the credentials for the user joining the domain.
	DomainAuthSecretArn() *string
	SetDomainAuthSecretArn(val *string)
	// The IPv4 DNS IP addresses of your primary and secondary Active Directory domain controllers.
	DomainDnsIps() *[]*string
	SetDomainDnsIps(val *[]*string)
	// The fully qualified domain name (FQDN) of an Active Directory domain.
	DomainFqdn() *string
	SetDomainFqdn(val *string)
	// The name of the IAM role to use when making API calls to the Directory Service.
	DomainIamRoleName() *string
	SetDomainIamRoleName(val *string)
	// The Active Directory organizational unit for your DB instance to join.
	DomainOu() *string
	SetDomainOu(val *string)
	// The list of log types that need to be enabled for exporting to CloudWatch Logs.
	EnableCloudwatchLogsExports() *[]*string
	SetEnableCloudwatchLogsExports(val *[]*string)
	// A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts.
	EnableIamDatabaseAuthentication() interface{}
	SetEnableIamDatabaseAuthentication(val interface{})
	// Specifies whether to enable Performance Insights for the DB instance.
	EnablePerformanceInsights() interface{}
	SetEnablePerformanceInsights(val interface{})
	// The connection endpoint for the DB instance.
	Endpoint() interface{}
	SetEndpoint(val interface{})
	// The name of the database engine that you want to use for this DB instance.
	Engine() *string
	SetEngine(val *string)
	// The version number of the database engine to use.
	EngineVersion() *string
	SetEngineVersion(val *string)
	// The number of I/O operations per second (IOPS) that the database provisions.
	Iops() *float64
	SetIops(val *float64)
	// 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` .
	KmsKeyId() *string
	SetKmsKeyId(val *string)
	// License model information for this DB instance.
	LicenseModel() *string
	SetLicenseModel(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// Specifies whether to manage the master user password with AWS Secrets Manager.
	ManageMasterUserPassword() interface{}
	SetManageMasterUserPassword(val interface{})
	// The master user name for the DB instance.
	MasterUsername() *string
	SetMasterUsername(val *string)
	// The password for the master user.
	//
	// The password can include any printable ASCII character except "/", """, or "@".
	MasterUserPassword() *string
	SetMasterUserPassword(val *string)
	// The secret managed by RDS in AWS Secrets Manager for the master user password.
	MasterUserSecret() interface{}
	SetMasterUserSecret(val interface{})
	// The upper limit in gibibytes (GiB) to which Amazon RDS can automatically scale the storage of the DB instance.
	MaxAllocatedStorage() *float64
	SetMaxAllocatedStorage(val *float64)
	// The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance.
	MonitoringInterval() *float64
	SetMonitoringInterval(val *float64)
	// The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to Amazon CloudWatch Logs.
	MonitoringRoleArn() *string
	SetMonitoringRoleArn(val *string)
	// Specifies whether the database instance is a Multi-AZ DB instance deployment.
	MultiAz() interface{}
	SetMultiAz(val interface{})
	// The name of the NCHAR character set for the Oracle DB instance.
	NcharCharacterSetName() *string
	SetNcharCharacterSetName(val *string)
	// The network type of the DB instance.
	NetworkType() *string
	SetNetworkType(val *string)
	// The tree node.
	Node() constructs.Node
	// Indicates that the DB instance should be associated with the specified option group.
	OptionGroupName() *string
	SetOptionGroupName(val *string)
	// The AWS KMS key identifier for encryption of Performance Insights data.
	PerformanceInsightsKmsKeyId() *string
	SetPerformanceInsightsKmsKeyId(val *string)
	// The number of days to retain Performance Insights data.
	PerformanceInsightsRetentionPeriod() *float64
	SetPerformanceInsightsRetentionPeriod(val *float64)
	// The port number on which the database accepts connections.
	Port() *string
	SetPort(val *string)
	// The daily time range during which automated backups are created if automated backups are enabled, using the `BackupRetentionPeriod` parameter.
	PreferredBackupWindow() *string
	SetPreferredBackupWindow(val *string)
	// The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).
	PreferredMaintenanceWindow() *string
	SetPreferredMaintenanceWindow(val *string)
	// The number of CPU cores and the number of threads per core for the DB instance class of the DB instance.
	ProcessorFeatures() interface{}
	SetProcessorFeatures(val interface{})
	// The order of priority in which an Aurora Replica is promoted to the primary instance after a failure of the existing primary instance.
	PromotionTier() *float64
	SetPromotionTier(val *float64)
	// Indicates whether the DB instance is an internet-facing instance.
	PubliclyAccessible() interface{}
	SetPubliclyAccessible(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The open mode of an Oracle read replica.
	ReplicaMode() *string
	SetReplicaMode(val *string)
	// The date and time to restore from.
	RestoreTime() *string
	SetRestoreTime(val *string)
	// The identifier of the Multi-AZ DB cluster that will act as the source for the read replica.
	SourceDbClusterIdentifier() *string
	SetSourceDbClusterIdentifier(val *string)
	// 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` .
	SourceDbInstanceAutomatedBackupsArn() *string
	SetSourceDbInstanceAutomatedBackupsArn(val *string)
	// If you want to create a read replica DB instance, specify the ID of the source DB instance.
	SourceDbInstanceIdentifier() *string
	SetSourceDbInstanceIdentifier(val *string)
	// The resource ID of the source DB instance from which to restore.
	SourceDbiResourceId() *string
	SetSourceDbiResourceId(val *string)
	// The ID of the region that contains the source DB instance for the read replica.
	SourceRegion() *string
	SetSourceRegion(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// A value that indicates whether the DB instance is encrypted.
	//
	// By default, it isn't encrypted.
	StorageEncrypted() interface{}
	SetStorageEncrypted(val interface{})
	// Specifies the storage throughput value for the DB instance.
	//
	// This setting applies only to the `gp3` storage type.
	StorageThroughput() *float64
	SetStorageThroughput(val *float64)
	// Specifies the storage type to be associated with the DB instance.
	StorageType() *string
	SetStorageType(val *string)
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// An optional array of key-value pairs to apply to this DB instance.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// The ARN from the key store with which to associate the instance for TDE encryption.
	// Deprecated: this property has been deprecated.
	TdeCredentialArn() *string
	// Deprecated: this property has been deprecated.
	SetTdeCredentialArn(val *string)
	// The password for the given ARN from the key store in order to access the device.
	// Deprecated: this property has been deprecated.
	TdeCredentialPassword() *string
	// Deprecated: this property has been deprecated.
	SetTdeCredentialPassword(val *string)
	// The time zone of the DB instance.
	Timezone() *string
	SetTimezone(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Specifies whether the DB instance class of the DB instance uses its default processor features.
	UseDefaultProcessorFeatures() interface{}
	SetUseDefaultProcessorFeatures(val interface{})
	// Specifies whether the DB instance is restored from the latest backup time.
	UseLatestRestorableTime() interface{}
	SetUseLatestRestorableTime(val interface{})
	// A list of the VPC security group IDs to assign to the DB instance.
	VpcSecurityGroups() *[]*string
	SetVpcSecurityGroups(val *[]*string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::DBInstance` resource creates an Amazon DB instance.

The new DB instance can be an RDS DB instance, or it can be a DB instance in an Aurora DB cluster.

For more information about creating an RDS DB instance, see [Creating an Amazon RDS DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html) in the *Amazon RDS User Guide* .

For more information about creating a DB instance in an Aurora DB cluster, see [Creating an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html) in the *Amazon Aurora User Guide* .

If you import an existing DB instance, and the template configuration doesn't match the actual configuration of the DB instance, AWS CloudFormation applies the changes in the template during the import operation.

> If a DB instance is deleted or replaced during an update, AWS CloudFormation deletes all automated snapshots. However, it retains manual DB snapshots. During an update that requires replacement, you can apply a stack policy to prevent DB instances from being replaced. For more information, see [Prevent Updates to Stack Resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html) .

*Updating DB instances*

When properties labeled " *Update requires:* [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement) " are updated, AWS CloudFormation first creates a replacement DB instance, then changes references from other dependent resources to point to the replacement DB instance, and finally deletes the old DB instance.

> We highly recommend that you take a snapshot of the database before updating the stack. If you don't, you lose the data when AWS CloudFormation replaces your DB instance. To preserve your data, perform the following procedure: > > - Deactivate any applications that are using the DB instance so that there's no activity on the DB instance. > - Create a snapshot of the DB instance. For more information, see [Creating a DB Snapshot](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html) . > - If you want to restore your instance using a DB snapshot, modify the updated template with your DB instance changes and add the `DBSnapshotIdentifier` property with the ID of the DB snapshot that you want to use. > > After you restore a DB instance with a `DBSnapshotIdentifier` property, you can delete the `DBSnapshotIdentifier` property. 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. > - Update the stack.

For more information about updating other properties of this resource, see `[ModifyDBInstance](https://docs.aws.amazon.com//AmazonRDS/latest/APIReference/API_ModifyDBInstance.html)` . For more information about updating stacks, see [AWS CloudFormation Stacks Updates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html) .

*Deleting DB instances*

For DB instances that are part of an Aurora DB cluster, you can set a deletion policy for your DB instance to control how AWS CloudFormation handles the DB instance when the stack is deleted. For Amazon RDS DB instances, you can choose to *retain* the DB instance, to *delete* the DB instance, or to *create a snapshot* of the DB instance. The default AWS CloudFormation behavior depends on the `DBClusterIdentifier` property:

- For `AWS::RDS::DBInstance` resources that don't specify the `DBClusterIdentifier` property, AWS CloudFormation saves a snapshot of the DB instance. - For `AWS::RDS::DBInstance` resources that do specify the `DBClusterIdentifier` property, AWS CloudFormation deletes the DB instance.

For more information, see [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBInstance := awscdk.Aws_rds.NewCfnDBInstance(this, jsii.String("MyCfnDBInstance"), &CfnDBInstanceProps{
	AllocatedStorage: jsii.String("allocatedStorage"),
	AllowMajorVersionUpgrade: jsii.Boolean(false),
	AssociatedRoles: []interface{}{
		&DBInstanceRoleProperty{
			FeatureName: jsii.String("featureName"),
			RoleArn: jsii.String("roleArn"),
		},
	},
	AutomaticBackupReplicationRegion: jsii.String("automaticBackupReplicationRegion"),
	AutoMinorVersionUpgrade: jsii.Boolean(false),
	AvailabilityZone: jsii.String("availabilityZone"),
	BackupRetentionPeriod: jsii.Number(123),
	CaCertificateIdentifier: jsii.String("caCertificateIdentifier"),
	CertificateDetails: &CertificateDetailsProperty{
		CaIdentifier: jsii.String("caIdentifier"),
		ValidTill: jsii.String("validTill"),
	},
	CertificateRotationRestart: jsii.Boolean(false),
	CharacterSetName: jsii.String("characterSetName"),
	CopyTagsToSnapshot: jsii.Boolean(false),
	CustomIamInstanceProfile: jsii.String("customIamInstanceProfile"),
	DbClusterIdentifier: jsii.String("dbClusterIdentifier"),
	DbClusterSnapshotIdentifier: jsii.String("dbClusterSnapshotIdentifier"),
	DbInstanceClass: jsii.String("dbInstanceClass"),
	DbInstanceIdentifier: jsii.String("dbInstanceIdentifier"),
	DbName: jsii.String("dbName"),
	DbParameterGroupName: jsii.String("dbParameterGroupName"),
	DbSecurityGroups: []*string{
		jsii.String("dbSecurityGroups"),
	},
	DbSnapshotIdentifier: jsii.String("dbSnapshotIdentifier"),
	DbSubnetGroupName: jsii.String("dbSubnetGroupName"),
	DedicatedLogVolume: jsii.Boolean(false),
	DeleteAutomatedBackups: jsii.Boolean(false),
	DeletionProtection: jsii.Boolean(false),
	Domain: jsii.String("domain"),
	DomainAuthSecretArn: jsii.String("domainAuthSecretArn"),
	DomainDnsIps: []*string{
		jsii.String("domainDnsIps"),
	},
	DomainFqdn: jsii.String("domainFqdn"),
	DomainIamRoleName: jsii.String("domainIamRoleName"),
	DomainOu: jsii.String("domainOu"),
	EnableCloudwatchLogsExports: []*string{
		jsii.String("enableCloudwatchLogsExports"),
	},
	EnableIamDatabaseAuthentication: jsii.Boolean(false),
	EnablePerformanceInsights: jsii.Boolean(false),
	Endpoint: &EndpointProperty{
		Address: jsii.String("address"),
		HostedZoneId: jsii.String("hostedZoneId"),
		Port: jsii.String("port"),
	},
	Engine: jsii.String("engine"),
	EngineVersion: jsii.String("engineVersion"),
	Iops: jsii.Number(123),
	KmsKeyId: jsii.String("kmsKeyId"),
	LicenseModel: jsii.String("licenseModel"),
	ManageMasterUserPassword: jsii.Boolean(false),
	MasterUsername: jsii.String("masterUsername"),
	MasterUserPassword: jsii.String("masterUserPassword"),
	MasterUserSecret: &MasterUserSecretProperty{
		KmsKeyId: jsii.String("kmsKeyId"),
		SecretArn: jsii.String("secretArn"),
	},
	MaxAllocatedStorage: jsii.Number(123),
	MonitoringInterval: jsii.Number(123),
	MonitoringRoleArn: jsii.String("monitoringRoleArn"),
	MultiAz: jsii.Boolean(false),
	NcharCharacterSetName: jsii.String("ncharCharacterSetName"),
	NetworkType: jsii.String("networkType"),
	OptionGroupName: jsii.String("optionGroupName"),
	PerformanceInsightsKmsKeyId: jsii.String("performanceInsightsKmsKeyId"),
	PerformanceInsightsRetentionPeriod: jsii.Number(123),
	Port: jsii.String("port"),
	PreferredBackupWindow: jsii.String("preferredBackupWindow"),
	PreferredMaintenanceWindow: jsii.String("preferredMaintenanceWindow"),
	ProcessorFeatures: []interface{}{
		&ProcessorFeatureProperty{
			Name: jsii.String("name"),
			Value: jsii.String("value"),
		},
	},
	PromotionTier: jsii.Number(123),
	PubliclyAccessible: jsii.Boolean(false),
	ReplicaMode: jsii.String("replicaMode"),
	RestoreTime: jsii.String("restoreTime"),
	SourceDbClusterIdentifier: jsii.String("sourceDbClusterIdentifier"),
	SourceDbInstanceAutomatedBackupsArn: jsii.String("sourceDbInstanceAutomatedBackupsArn"),
	SourceDbInstanceIdentifier: jsii.String("sourceDbInstanceIdentifier"),
	SourceDbiResourceId: jsii.String("sourceDbiResourceId"),
	SourceRegion: jsii.String("sourceRegion"),
	StorageEncrypted: jsii.Boolean(false),
	StorageThroughput: jsii.Number(123),
	StorageType: jsii.String("storageType"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	TdeCredentialArn: jsii.String("tdeCredentialArn"),
	TdeCredentialPassword: jsii.String("tdeCredentialPassword"),
	Timezone: jsii.String("timezone"),
	UseDefaultProcessorFeatures: jsii.Boolean(false),
	UseLatestRestorableTime: jsii.Boolean(false),
	VpcSecurityGroups: []*string{
		jsii.String("vpcSecurityGroups"),
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html

func NewCfnDBInstance

func NewCfnDBInstance(scope constructs.Construct, id *string, props *CfnDBInstanceProps) CfnDBInstance

type CfnDBInstanceProps

type CfnDBInstanceProps struct {
	// 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.
	//
	// *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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-allocatedstorage
	//
	AllocatedStorage *string `field:"optional" json:"allocatedStorage" yaml:"allocatedStorage"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-allowmajorversionupgrade
	//
	AllowMajorVersionUpgrade interface{} `field:"optional" json:"allowMajorVersionUpgrade" yaml:"allowMajorVersionUpgrade"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-associatedroles
	//
	AssociatedRoles interface{} `field:"optional" json:"associatedRoles" yaml:"associatedRoles"`
	// The destination region for the backup replication of the DB instance.
	//
	// For more info, see [Replicating automated backups to another AWS Region](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReplicateBackups.html) in the *Amazon RDS User Guide* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-automaticbackupreplicationregion
	//
	AutomaticBackupReplicationRegion *string `field:"optional" json:"automaticBackupReplicationRegion" yaml:"automaticBackupReplicationRegion"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-autominorversionupgrade
	//
	AutoMinorVersionUpgrade interface{} `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// 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`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-availabilityzone
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-backupretentionperiod
	//
	// Default: - 1.
	//
	BackupRetentionPeriod *float64 `field:"optional" json:"backupRetentionPeriod" yaml:"backupRetentionPeriod"`
	// The identifier of the CA certificate for this DB instance.
	//
	// > Specifying or updating this property triggers a reboot.
	//
	// For more information about CA certificate identifiers 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 CA certificate identifiers 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* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-cacertificateidentifier
	//
	CaCertificateIdentifier *string `field:"optional" json:"caCertificateIdentifier" yaml:"caCertificateIdentifier"`
	// The details of the DB instance's server certificate.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-certificatedetails
	//
	CertificateDetails interface{} `field:"optional" json:"certificateDetails" yaml:"certificateDetails"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-certificaterotationrestart
	//
	CertificateRotationRestart interface{} `field:"optional" json:"certificateRotationRestart" yaml:"certificateRotationRestart"`
	// 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) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-charactersetname
	//
	CharacterSetName *string `field:"optional" json:"characterSetName" yaml:"characterSetName"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-copytagstosnapshot
	//
	CopyTagsToSnapshot interface{} `field:"optional" json:"copyTagsToSnapshot" yaml:"copyTagsToSnapshot"`
	// 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* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-customiaminstanceprofile
	//
	CustomIamInstanceProfile *string `field:"optional" json:"customIamInstanceProfile" yaml:"customIamInstanceProfile"`
	// The identifier of the DB cluster that the instance will belong to.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbclusteridentifier
	//
	DbClusterIdentifier *string `field:"optional" json:"dbClusterIdentifier" yaml:"dbClusterIdentifier"`
	// The identifier for the RDS for MySQL 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.
	// - Can't be the identifier of an RDS for PostgreSQL Multi-AZ DB cluster snapshot.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbclustersnapshotidentifier
	//
	DbClusterSnapshotIdentifier *string `field:"optional" json:"dbClusterSnapshotIdentifier" yaml:"dbClusterSnapshotIdentifier"`
	// The compute and memory capacity of the DB instance, for example, `db.m4.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 Class](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html) in the *Amazon RDS User Guide.* For more information about DB instance class pricing and AWS Region support for DB instance classes, see [Amazon RDS Pricing](https://docs.aws.amazon.com/rds/pricing/) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbinstanceclass
	//
	DbInstanceClass *string `field:"optional" json:"dbInstanceClass" yaml:"dbInstanceClass"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbinstanceidentifier
	//
	DbInstanceIdentifier *string `field:"optional" json:"dbInstanceIdentifier" yaml:"dbInstanceIdentifier"`
	// 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.
	//
	// *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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbname
	//
	DbName *string `field:"optional" json:"dbName" yaml:"dbName"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbparametergroupname
	//
	DbParameterGroupName *string `field:"optional" json:"dbParameterGroupName" yaml:"dbParameterGroupName"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbsecuritygroups
	//
	DbSecurityGroups *[]*string `field:"optional" json:"dbSecurityGroups" yaml:"dbSecurityGroups"`
	// 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`
	// - `EnablePerformanceInsights`
	// - `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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbsnapshotidentifier
	//
	DbSnapshotIdentifier *string `field:"optional" json:"dbSnapshotIdentifier" yaml:"dbSnapshotIdentifier"`
	// 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 [Using Amazon RDS with Amazon Virtual Private Cloud (VPC)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) in the *Amazon RDS User Guide* .
	//
	// *Amazon Aurora*
	//
	// Not applicable. The DB subnet group is managed by the DB cluster. If specified, the setting must match the DB cluster setting.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dbsubnetgroupname
	//
	DbSubnetGroupName *string `field:"optional" json:"dbSubnetGroupName" yaml:"dbSubnetGroupName"`
	// Indicates whether the DB instance has a dedicated log volume (DLV) enabled.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-dedicatedlogvolume
	//
	DedicatedLogVolume interface{} `field:"optional" json:"dedicatedLogVolume" yaml:"dedicatedLogVolume"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-deleteautomatedbackups
	//
	DeleteAutomatedBackups interface{} `field:"optional" json:"deleteAutomatedBackups" yaml:"deleteAutomatedBackups"`
	// A value that indicates whether the DB instance has deletion protection enabled.
	//
	// The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled. For more information, see [Deleting a DB Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html) .
	//
	// *Amazon Aurora*
	//
	// Not applicable. 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-deletionprotection
	//
	DeletionProtection interface{} `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// The Active Directory directory ID to create the DB instance in.
	//
	// Currently, only 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* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domain
	//
	Domain *string `field:"optional" json:"domain" yaml:"domain"`
	// 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`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainauthsecretarn
	//
	DomainAuthSecretArn *string `field:"optional" json:"domainAuthSecretArn" yaml:"domainAuthSecretArn"`
	// 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`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domaindnsips
	//
	DomainDnsIps *[]*string `field:"optional" json:"domainDnsIps" yaml:"domainDnsIps"`
	// The fully qualified domain name (FQDN) of an Active Directory domain.
	//
	// Constraints:
	//
	// - Can't be longer than 64 characters.
	//
	// Example: `mymanagedADtest.mymanagedAD.mydomain`
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainfqdn
	//
	DomainFqdn *string `field:"optional" json:"domainFqdn" yaml:"domainFqdn"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainiamrolename
	//
	DomainIamRoleName *string `field:"optional" json:"domainIamRoleName" yaml:"domainIamRoleName"`
	// 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`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-domainou
	//
	DomainOu *string `field:"optional" json:"domainOu" yaml:"domainOu"`
	// 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.
	//
	// *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`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-enablecloudwatchlogsexports
	//
	EnableCloudwatchLogsExports *[]*string `field:"optional" json:"enableCloudwatchLogsExports" yaml:"enableCloudwatchLogsExports"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-enableiamdatabaseauthentication
	//
	EnableIamDatabaseAuthentication interface{} `field:"optional" json:"enableIamDatabaseAuthentication" yaml:"enableIamDatabaseAuthentication"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-enableperformanceinsights
	//
	EnablePerformanceInsights interface{} `field:"optional" json:"enablePerformanceInsights" yaml:"enablePerformanceInsights"`
	// The connection endpoint for the DB instance.
	//
	// > The endpoint might not be shown for instances with the status of `creating` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-endpoint
	//
	Endpoint interface{} `field:"optional" json:"endpoint" yaml:"endpoint"`
	// The name of the database engine that you want to use for this DB instance.
	//
	// > When you are creating a DB instance, the `Engine` property is required.
	//
	// 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)
	// - `mariadb`
	// - `mysql`
	// - `oracle-ee`
	// - `oracle-ee-cdb`
	// - `oracle-se2`
	// - `oracle-se2-cdb`
	// - `postgres`
	// - `sqlserver-ee`
	// - `sqlserver-se`
	// - `sqlserver-ex`
	// - `sqlserver-web`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-engine
	//
	Engine *string `field:"optional" json:"engine" yaml:"engine"`
	// 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.
	//
	// *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.*
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-engineversion
	//
	EngineVersion *string `field:"optional" json:"engineVersion" yaml:"engineVersion"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-iops
	//
	Iops *float64 `field:"optional" json:"iops" yaml:"iops"`
	// 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` property, the value is inherited from the source DB instance if the read replica is created in the same region.
	//
	// 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 `SnapshotIdentifier` property, the `StorageEncrypted` property value is inherited from the snapshot, and if the DB instance is encrypted, the specified `KmsKeyId` property is used.
	//
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-kmskeyid
	//
	KmsKeyId *string `field:"optional" json:"kmsKeyId" yaml:"kmsKeyId"`
	// License model information for this DB instance.
	//
	// Valid values:
	//
	// - Aurora MySQL - `general-public-license`
	// - Aurora PostgreSQL - `postgresql-license`
	// - MariaDB - `general-public-license`
	// - Microsoft SQL Server - `license-included`
	// - MySQL - `general-public-license`
	// - Oracle - `bring-your-own-license` or `license-included`
	// - 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-licensemodel
	//
	LicenseModel *string `field:"optional" json:"licenseModel" yaml:"licenseModel"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-managemasteruserpassword
	//
	ManageMasterUserPassword interface{} `field:"optional" json:"manageMasterUserPassword" yaml:"manageMasterUserPassword"`
	// 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.
	//
	// *Amazon Aurora*
	//
	// Not applicable. The name for the master user is managed by the DB cluster.
	//
	// *MariaDB*
	//
	// Constraints:
	//
	// - Required for MariaDB.
	// - Must be 1 to 16 letters or numbers.
	// - Can't be a reserved word for the chosen database engine.
	//
	// *Microsoft SQL Server*
	//
	// Constraints:
	//
	// - Required for SQL Server.
	// - Must be 1 to 128 letters or numbers.
	// - The first character must be a letter.
	// - Can't be a reserved word for the chosen database engine.
	//
	// *MySQL*
	//
	// Constraints:
	//
	// - Required for MySQL.
	// - 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.
	//
	// *Oracle*
	//
	// Constraints:
	//
	// - Required for Oracle.
	// - 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.
	//
	// *PostgreSQL*
	//
	// Constraints:
	//
	// - Required for PostgreSQL.
	// - 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-masterusername
	//
	MasterUsername *string `field:"optional" json:"masterUsername" yaml:"masterUsername"`
	// 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.
	//
	// *MariaDB*
	//
	// Constraints: Must contain from 8 to 41 characters.
	//
	// *Microsoft SQL Server*
	//
	// Constraints: Must contain from 8 to 128 characters.
	//
	// *MySQL*
	//
	// Constraints: Must contain from 8 to 41 characters.
	//
	// *Oracle*
	//
	// Constraints: Must contain from 8 to 30 characters.
	//
	// *PostgreSQL*
	//
	// Constraints: Must contain from 8 to 128 characters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-masteruserpassword
	//
	MasterUserPassword *string `field:"optional" json:"masterUserPassword" yaml:"masterUserPassword"`
	// 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.*
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-masterusersecret
	//
	MasterUserSecret interface{} `field:"optional" json:"masterUserSecret" yaml:"masterUserSecret"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-maxallocatedstorage
	//
	MaxAllocatedStorage *float64 `field:"optional" json:"maxAllocatedStorage" yaml:"maxAllocatedStorage"`
	// 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. The default is 0.
	//
	// If `MonitoringRoleArn` is specified, then you must set `MonitoringInterval` to a value other than 0.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// Valid Values: `0, 1, 5, 10, 15, 30, 60`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-monitoringinterval
	//
	// Default: - 0.
	//
	MonitoringInterval *float64 `field:"optional" json:"monitoringInterval" yaml:"monitoringInterval"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-monitoringrolearn
	//
	MonitoringRoleArn *string `field:"optional" json:"monitoringRoleArn" yaml:"monitoringRoleArn"`
	// Specifies whether the database instance is a Multi-AZ DB instance deployment.
	//
	// You can't set the `AvailabilityZone` parameter if the `MultiAZ` parameter is set to true.
	//
	// For more information, see [Multi-AZ deployments for high availability](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html) in the *Amazon RDS User Guide* .
	//
	// *Amazon Aurora*
	//
	// Not applicable. Amazon Aurora storage is replicated across all of the Availability Zones and doesn't require the `MultiAZ` option to be set.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-multiaz
	//
	MultiAz interface{} `field:"optional" json:"multiAz" yaml:"multiAz"`
	// The name of the NCHAR character set for the Oracle DB instance.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-ncharcharactersetname
	//
	NcharCharacterSetName *string `field:"optional" json:"ncharCharacterSetName" yaml:"ncharCharacterSetName"`
	// 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.*
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-networktype
	//
	NetworkType *string `field:"optional" json:"networkType" yaml:"networkType"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-optiongroupname
	//
	OptionGroupName *string `field:"optional" json:"optionGroupName" yaml:"optionGroupName"`
	// 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) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-performanceinsightskmskeyid
	//
	PerformanceInsightsKmsKeyId *string `field:"optional" json:"performanceInsightsKmsKeyId" yaml:"performanceInsightsKmsKeyId"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-performanceinsightsretentionperiod
	//
	PerformanceInsightsRetentionPeriod *float64 `field:"optional" json:"performanceInsightsRetentionPeriod" yaml:"performanceInsightsRetentionPeriod"`
	// The port number on which the database accepts connections.
	//
	// *Amazon Aurora*
	//
	// Not applicable. The port number is managed by the DB cluster.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-port
	//
	Port *string `field:"optional" json:"port" yaml:"port"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-preferredbackupwindow
	//
	PreferredBackupWindow *string `field:"optional" json:"preferredBackupWindow" yaml:"preferredBackupWindow"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-preferredmaintenancewindow
	//
	PreferredMaintenanceWindow *string `field:"optional" json:"preferredMaintenanceWindow" yaml:"preferredMaintenanceWindow"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-processorfeatures
	//
	ProcessorFeatures interface{} `field:"optional" json:"processorFeatures" yaml:"processorFeatures"`
	// 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`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-promotiontier
	//
	// Default: - 1.
	//
	PromotionTier *float64 `field:"optional" json:"promotionTier" yaml:"promotionTier"`
	// 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* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-publiclyaccessible
	//
	PubliclyAccessible interface{} `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
	// 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`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-replicamode
	//
	ReplicaMode *string `field:"optional" json:"replicaMode" yaml:"replicaMode"`
	// The date and time to restore from.
	//
	// 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`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-restoretime
	//
	RestoreTime *string `field:"optional" json:"restoreTime" yaml:"restoreTime"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbclusteridentifier
	//
	SourceDbClusterIdentifier *string `field:"optional" json:"sourceDbClusterIdentifier" yaml:"sourceDbClusterIdentifier"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbinstanceautomatedbackupsarn
	//
	SourceDbInstanceAutomatedBackupsArn *string `field:"optional" json:"sourceDbInstanceAutomatedBackupsArn" yaml:"sourceDbInstanceAutomatedBackupsArn"`
	// 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 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbinstanceidentifier
	//
	SourceDbInstanceIdentifier *string `field:"optional" json:"sourceDbInstanceIdentifier" yaml:"sourceDbInstanceIdentifier"`
	// The resource ID of the source DB instance from which to restore.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourcedbiresourceid
	//
	SourceDbiResourceId *string `field:"optional" json:"sourceDbiResourceId" yaml:"sourceDbiResourceId"`
	// The ID of the region that contains the source DB instance for the read replica.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-sourceregion
	//
	SourceRegion *string `field:"optional" json:"sourceRegion" yaml:"sourceRegion"`
	// 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` 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 `DBSnapshotIdentifier` and the specified snapshot is encrypted, don't specify this property. The value is inherited from the snapshot, and the specified `KmsKeyId` property is used.
	//
	// If you specify the `DBSnapshotIdentifier` and the specified snapshot isn't encrypted, you can use this property to specify that the restored DB instance is encrypted. Specify the `KmsKeyId` property for the KMS key to use for encryption. If you don't want the restored DB instance to be encrypted, then don't set this property or set it to `false` .
	//
	// *Amazon Aurora*
	//
	// Not applicable. The encryption for DB instances is managed by the DB cluster.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-storageencrypted
	//
	StorageEncrypted interface{} `field:"optional" json:"storageEncrypted" yaml:"storageEncrypted"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-storagethroughput
	//
	StorageThroughput *float64 `field:"optional" json:"storageThroughput" yaml:"storageThroughput"`
	// Specifies the storage type to be associated with the DB instance.
	//
	// Valid values: `gp2 | gp3 | io1 | standard`
	//
	// The `standard` value is also known as magnetic.
	//
	// If you specify `io1` or `gp3` , you must also include a value for the `Iops` parameter.
	//
	// Default: `io1` if the `Iops` parameter is specified, otherwise `gp2`
	//
	// For more information, see [Amazon RDS DB Instance Storage](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) in the *Amazon RDS User Guide* .
	//
	// *Amazon Aurora*
	//
	// Not applicable. Aurora data is stored in the cluster volume, which is a single, virtual volume that uses solid state drives (SSDs).
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-storagetype
	//
	StorageType *string `field:"optional" json:"storageType" yaml:"storageType"`
	// An optional array of key-value pairs to apply to this DB instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// The ARN from the key store with which to associate the instance for TDE encryption.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-tdecredentialarn
	//
	// Deprecated: this property has been deprecated.
	TdeCredentialArn *string `field:"optional" json:"tdeCredentialArn" yaml:"tdeCredentialArn"`
	// The password for the given ARN from the key store in order to access the device.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-tdecredentialpassword
	//
	// Deprecated: this property has been deprecated.
	TdeCredentialPassword *string `field:"optional" json:"tdeCredentialPassword" yaml:"tdeCredentialPassword"`
	// The time zone of the DB instance.
	//
	// The time zone parameter is currently supported only by [Microsoft SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone) .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-timezone
	//
	Timezone *string `field:"optional" json:"timezone" yaml:"timezone"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-usedefaultprocessorfeatures
	//
	UseDefaultProcessorFeatures interface{} `field:"optional" json:"useDefaultProcessorFeatures" yaml:"useDefaultProcessorFeatures"`
	// 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.
	//
	// Constraints:
	//
	// - Can't be specified if the `RestoreTime` parameter is provided.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-uselatestrestorabletime
	//
	UseLatestRestorableTime interface{} `field:"optional" json:"useLatestRestorableTime" yaml:"useLatestRestorableTime"`
	// 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.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-vpcsecuritygroups
	//
	VpcSecurityGroups *[]*string `field:"optional" json:"vpcSecurityGroups" yaml:"vpcSecurityGroups"`
}

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 "github.com/aws/aws-cdk-go/awscdk"

cfnDBInstanceProps := &CfnDBInstanceProps{
	AllocatedStorage: jsii.String("allocatedStorage"),
	AllowMajorVersionUpgrade: jsii.Boolean(false),
	AssociatedRoles: []interface{}{
		&DBInstanceRoleProperty{
			FeatureName: jsii.String("featureName"),
			RoleArn: jsii.String("roleArn"),
		},
	},
	AutomaticBackupReplicationRegion: jsii.String("automaticBackupReplicationRegion"),
	AutoMinorVersionUpgrade: jsii.Boolean(false),
	AvailabilityZone: jsii.String("availabilityZone"),
	BackupRetentionPeriod: jsii.Number(123),
	CaCertificateIdentifier: jsii.String("caCertificateIdentifier"),
	CertificateDetails: &CertificateDetailsProperty{
		CaIdentifier: jsii.String("caIdentifier"),
		ValidTill: jsii.String("validTill"),
	},
	CertificateRotationRestart: jsii.Boolean(false),
	CharacterSetName: jsii.String("characterSetName"),
	CopyTagsToSnapshot: jsii.Boolean(false),
	CustomIamInstanceProfile: jsii.String("customIamInstanceProfile"),
	DbClusterIdentifier: jsii.String("dbClusterIdentifier"),
	DbClusterSnapshotIdentifier: jsii.String("dbClusterSnapshotIdentifier"),
	DbInstanceClass: jsii.String("dbInstanceClass"),
	DbInstanceIdentifier: jsii.String("dbInstanceIdentifier"),
	DbName: jsii.String("dbName"),
	DbParameterGroupName: jsii.String("dbParameterGroupName"),
	DbSecurityGroups: []*string{
		jsii.String("dbSecurityGroups"),
	},
	DbSnapshotIdentifier: jsii.String("dbSnapshotIdentifier"),
	DbSubnetGroupName: jsii.String("dbSubnetGroupName"),
	DedicatedLogVolume: jsii.Boolean(false),
	DeleteAutomatedBackups: jsii.Boolean(false),
	DeletionProtection: jsii.Boolean(false),
	Domain: jsii.String("domain"),
	DomainAuthSecretArn: jsii.String("domainAuthSecretArn"),
	DomainDnsIps: []*string{
		jsii.String("domainDnsIps"),
	},
	DomainFqdn: jsii.String("domainFqdn"),
	DomainIamRoleName: jsii.String("domainIamRoleName"),
	DomainOu: jsii.String("domainOu"),
	EnableCloudwatchLogsExports: []*string{
		jsii.String("enableCloudwatchLogsExports"),
	},
	EnableIamDatabaseAuthentication: jsii.Boolean(false),
	EnablePerformanceInsights: jsii.Boolean(false),
	Endpoint: &EndpointProperty{
		Address: jsii.String("address"),
		HostedZoneId: jsii.String("hostedZoneId"),
		Port: jsii.String("port"),
	},
	Engine: jsii.String("engine"),
	EngineVersion: jsii.String("engineVersion"),
	Iops: jsii.Number(123),
	KmsKeyId: jsii.String("kmsKeyId"),
	LicenseModel: jsii.String("licenseModel"),
	ManageMasterUserPassword: jsii.Boolean(false),
	MasterUsername: jsii.String("masterUsername"),
	MasterUserPassword: jsii.String("masterUserPassword"),
	MasterUserSecret: &MasterUserSecretProperty{
		KmsKeyId: jsii.String("kmsKeyId"),
		SecretArn: jsii.String("secretArn"),
	},
	MaxAllocatedStorage: jsii.Number(123),
	MonitoringInterval: jsii.Number(123),
	MonitoringRoleArn: jsii.String("monitoringRoleArn"),
	MultiAz: jsii.Boolean(false),
	NcharCharacterSetName: jsii.String("ncharCharacterSetName"),
	NetworkType: jsii.String("networkType"),
	OptionGroupName: jsii.String("optionGroupName"),
	PerformanceInsightsKmsKeyId: jsii.String("performanceInsightsKmsKeyId"),
	PerformanceInsightsRetentionPeriod: jsii.Number(123),
	Port: jsii.String("port"),
	PreferredBackupWindow: jsii.String("preferredBackupWindow"),
	PreferredMaintenanceWindow: jsii.String("preferredMaintenanceWindow"),
	ProcessorFeatures: []interface{}{
		&ProcessorFeatureProperty{
			Name: jsii.String("name"),
			Value: jsii.String("value"),
		},
	},
	PromotionTier: jsii.Number(123),
	PubliclyAccessible: jsii.Boolean(false),
	ReplicaMode: jsii.String("replicaMode"),
	RestoreTime: jsii.String("restoreTime"),
	SourceDbClusterIdentifier: jsii.String("sourceDbClusterIdentifier"),
	SourceDbInstanceAutomatedBackupsArn: jsii.String("sourceDbInstanceAutomatedBackupsArn"),
	SourceDbInstanceIdentifier: jsii.String("sourceDbInstanceIdentifier"),
	SourceDbiResourceId: jsii.String("sourceDbiResourceId"),
	SourceRegion: jsii.String("sourceRegion"),
	StorageEncrypted: jsii.Boolean(false),
	StorageThroughput: jsii.Number(123),
	StorageType: jsii.String("storageType"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	TdeCredentialArn: jsii.String("tdeCredentialArn"),
	TdeCredentialPassword: jsii.String("tdeCredentialPassword"),
	Timezone: jsii.String("timezone"),
	UseDefaultProcessorFeatures: jsii.Boolean(false),
	UseLatestRestorableTime: jsii.Boolean(false),
	VpcSecurityGroups: []*string{
		jsii.String("vpcSecurityGroups"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html

type CfnDBInstance_CertificateDetailsProperty added in v2.62.0

type CfnDBInstance_CertificateDetailsProperty struct {
	// The CA identifier of the CA certificate used for the DB instance's server certificate.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-certificatedetails.html#cfn-rds-dbinstance-certificatedetails-caidentifier
	//
	CaIdentifier *string `field:"optional" json:"caIdentifier" yaml:"caIdentifier"`
	// The expiration date of the DB instance’s server certificate.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-certificatedetails.html#cfn-rds-dbinstance-certificatedetails-validtill
	//
	ValidTill *string `field:"optional" json:"validTill" yaml:"validTill"`
}

Returns the details of the DB instance’s server certificate.

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* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

certificateDetailsProperty := &CertificateDetailsProperty{
	CaIdentifier: jsii.String("caIdentifier"),
	ValidTill: jsii.String("validTill"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-certificatedetails.html

type CfnDBInstance_DBInstanceRoleProperty

type CfnDBInstance_DBInstanceRoleProperty struct {
	// The name of the feature associated with the AWS Identity and Access Management (IAM) role.
	//
	// IAM roles that are associated with a DB instance grant permission for the DB instance to access other AWS services on your behalf. For the list of supported feature names, see the `SupportedFeatureNames` description in [DBEngineVersion](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBEngineVersion.html) in the *Amazon RDS API Reference* .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-dbinstancerole.html#cfn-rds-dbinstance-dbinstancerole-featurename
	//
	FeatureName *string `field:"required" json:"featureName" yaml:"featureName"`
	// The Amazon Resource Name (ARN) of the IAM role that is associated with the DB instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-dbinstancerole.html#cfn-rds-dbinstance-dbinstancerole-rolearn
	//
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
}

Information about an AWS Identity and Access Management (IAM) role that is associated with a DB instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

dBInstanceRoleProperty := &DBInstanceRoleProperty{
	FeatureName: jsii.String("featureName"),
	RoleArn: jsii.String("roleArn"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-dbinstancerole.html

type CfnDBInstance_EndpointProperty added in v2.38.0

type CfnDBInstance_EndpointProperty struct {
	// Specifies the DNS address of the DB instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-endpoint.html#cfn-rds-dbinstance-endpoint-address
	//
	Address *string `field:"optional" json:"address" yaml:"address"`
	// Specifies the ID that Amazon Route 53 assigns when you create a hosted zone.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-endpoint.html#cfn-rds-dbinstance-endpoint-hostedzoneid
	//
	HostedZoneId *string `field:"optional" json:"hostedZoneId" yaml:"hostedZoneId"`
	// Specifies the port that the database engine is listening on.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-endpoint.html#cfn-rds-dbinstance-endpoint-port
	//
	Port *string `field:"optional" json:"port" yaml:"port"`
}

This data type represents the information you need to connect to an Amazon RDS DB instance.

This data type is used as a response element in the following actions:

- `CreateDBInstance` - `DescribeDBInstances` - `DeleteDBInstance`

For the data structure that represents Amazon Aurora DB cluster endpoints, see `DBClusterEndpoint` .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

endpointProperty := &EndpointProperty{
	Address: jsii.String("address"),
	HostedZoneId: jsii.String("hostedZoneId"),
	Port: jsii.String("port"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-endpoint.html

type CfnDBInstance_MasterUserSecretProperty added in v2.61.0

type CfnDBInstance_MasterUserSecretProperty struct {
	// The AWS KMS key identifier that is used to encrypt the secret.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-masterusersecret.html#cfn-rds-dbinstance-masterusersecret-kmskeyid
	//
	KmsKeyId *string `field:"optional" json:"kmsKeyId" yaml:"kmsKeyId"`
	// The Amazon Resource Name (ARN) of the secret.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-masterusersecret.html#cfn-rds-dbinstance-masterusersecret-secretarn
	//
	SecretArn *string `field:"optional" json:"secretArn" yaml:"secretArn"`
}

The `MasterUserSecret` return value specifies 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* and [Password management with AWS Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) in the *Amazon Aurora User Guide.*

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

masterUserSecretProperty := &MasterUserSecretProperty{
	KmsKeyId: jsii.String("kmsKeyId"),
	SecretArn: jsii.String("secretArn"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-masterusersecret.html

type CfnDBInstance_ProcessorFeatureProperty

type CfnDBInstance_ProcessorFeatureProperty struct {
	// The name of the processor feature.
	//
	// Valid names are `coreCount` and `threadsPerCore` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-processorfeature.html#cfn-rds-dbinstance-processorfeature-name
	//
	Name *string `field:"optional" json:"name" yaml:"name"`
	// The value of a processor feature name.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-processorfeature.html#cfn-rds-dbinstance-processorfeature-value
	//
	Value *string `field:"optional" json:"value" yaml:"value"`
}

The `ProcessorFeature` property type specifies the processor features of a DB instance class status.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

processorFeatureProperty := &ProcessorFeatureProperty{
	Name: jsii.String("name"),
	Value: jsii.String("value"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-processorfeature.html

type CfnDBParameterGroup

type CfnDBParameterGroup interface {
	awscdk.CfnResource
	awscdk.IInspectable
	awscdk.ITaggable
	// The name of the DB parameter group.
	AttrDbParameterGroupName() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The name of the DB parameter group.
	DbParameterGroupName() *string
	SetDbParameterGroupName(val *string)
	// Provides the customer-specified description for this DB parameter group.
	Description() *string
	SetDescription(val *string)
	// The DB parameter group family name.
	Family() *string
	SetFamily(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// An array of parameter names and values for the parameter update.
	Parameters() interface{}
	SetParameters(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// An optional array of key-value pairs to apply to this DB parameter group.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::DBParameterGroup` resource creates a custom parameter group for an RDS database family.

This type can be declared in a template and referenced in the `DBParameterGroupName` property of an `[AWS::RDS::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html)` resource.

For information about configuring parameters for Amazon RDS DB instances, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html) in the *Amazon RDS User Guide* .

For information about configuring parameters for Amazon Aurora DB instances, see [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.html) in the *Amazon Aurora User Guide* .

> Applying a parameter group to a DB instance may require the DB instance to reboot, resulting in a database outage for the duration of the reboot.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var parameters interface{}

cfnDBParameterGroup := awscdk.Aws_rds.NewCfnDBParameterGroup(this, jsii.String("MyCfnDBParameterGroup"), &CfnDBParameterGroupProps{
	Description: jsii.String("description"),
	Family: jsii.String("family"),

	// the properties below are optional
	DbParameterGroupName: jsii.String("dbParameterGroupName"),
	Parameters: parameters,
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbparametergroup.html

func NewCfnDBParameterGroup

func NewCfnDBParameterGroup(scope constructs.Construct, id *string, props *CfnDBParameterGroupProps) CfnDBParameterGroup

type CfnDBParameterGroupProps

type CfnDBParameterGroupProps struct {
	// Provides the customer-specified description for this DB parameter group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbparametergroup.html#cfn-rds-dbparametergroup-description
	//
	Description *string `field:"required" json:"description" yaml:"description"`
	// The DB parameter group family name.
	//
	// A DB parameter group can be associated with one and only one DB parameter group family, and can be applied only to a DB instance running a DB engine and engine version compatible with that DB parameter group family.
	//
	// > The DB parameter group family can't be changed when updating a DB parameter group.
	//
	// To list all of the available parameter group families, use the following command:
	//
	// `aws rds describe-db-engine-versions --query "DBEngineVersions[].DBParameterGroupFamily"`
	//
	// The output contains duplicates.
	//
	// For more information, see `[CreateDBParameterGroup](https://docs.aws.amazon.com//AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html)` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbparametergroup.html#cfn-rds-dbparametergroup-family
	//
	Family *string `field:"required" json:"family" yaml:"family"`
	// The name of the DB parameter group.
	//
	// Constraints:
	//
	// - Must be 1 to 255 letters, numbers, or hyphens.
	// - First character must be a letter
	// - Can't end with a hyphen or contain two consecutive hyphens
	//
	// If you don't specify a value for `DBParameterGroupName` property, a name is automatically created for the DB parameter group.
	//
	// > This value is stored as a lowercase string.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbparametergroup.html#cfn-rds-dbparametergroup-dbparametergroupname
	//
	DbParameterGroupName *string `field:"optional" json:"dbParameterGroupName" yaml:"dbParameterGroupName"`
	// An array of parameter names and values for the parameter update.
	//
	// At least one parameter name and value must be supplied. Subsequent arguments are optional.
	//
	// For more information about DB parameters and DB parameter groups for Amazon RDS DB engines, see [Working with DB Parameter Groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html) in the *Amazon RDS User Guide* .
	//
	// For more information about DB cluster and DB instance parameters and parameter groups for Amazon Aurora DB engines, see [Working with DB Parameter Groups and DB Cluster Parameter Groups](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.html) in the *Amazon Aurora User Guide* .
	//
	// > AWS CloudFormation doesn't support specifying an apply method for each individual parameter. The default apply method for each parameter is used.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbparametergroup.html#cfn-rds-dbparametergroup-parameters
	//
	Parameters interface{} `field:"optional" json:"parameters" yaml:"parameters"`
	// An optional array of key-value pairs to apply to this DB parameter group.
	//
	// > Currently, this is the only property that supports drift detection.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbparametergroup.html#cfn-rds-dbparametergroup-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnDBParameterGroup`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var parameters interface{}

cfnDBParameterGroupProps := &CfnDBParameterGroupProps{
	Description: jsii.String("description"),
	Family: jsii.String("family"),

	// the properties below are optional
	DbParameterGroupName: jsii.String("dbParameterGroupName"),
	Parameters: parameters,
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbparametergroup.html

type CfnDBProxy

type CfnDBProxy interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The Amazon Resource Name (ARN) representing the target group.
	AttrDbProxyArn() *string
	// The writer endpoint for the RDS DB instance or Aurora DB cluster.
	AttrEndpoint() *string
	// The VPC ID to associate with the DB proxy.
	AttrVpcId() *string
	// The authorization mechanism that the proxy uses.
	Auth() interface{}
	SetAuth(val interface{})
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The identifier for the proxy.
	DbProxyName() *string
	SetDbProxyName(val *string)
	// Specifies whether the proxy includes detailed information about SQL statements in its logs.
	DebugLogging() interface{}
	SetDebugLogging(val interface{})
	// The kinds of databases that the proxy can connect to.
	EngineFamily() *string
	SetEngineFamily(val *string)
	// The number of seconds that a connection to the proxy can be inactive before the proxy disconnects it.
	IdleClientTimeout() *float64
	SetIdleClientTimeout(val *float64)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// Specifies whether Transport Layer Security (TLS) encryption is required for connections to the proxy.
	RequireTls() interface{}
	SetRequireTls(val interface{})
	// The Amazon Resource Name (ARN) of the IAM role that the proxy uses to access secrets in AWS Secrets Manager.
	RoleArn() *string
	SetRoleArn(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// An optional set of key-value pairs to associate arbitrary data of your choosing with the proxy.
	Tags() *[]*CfnDBProxy_TagFormatProperty
	SetTags(val *[]*CfnDBProxy_TagFormatProperty)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// One or more VPC security group IDs to associate with the new proxy.
	VpcSecurityGroupIds() *[]*string
	SetVpcSecurityGroupIds(val *[]*string)
	// One or more VPC subnet IDs to associate with the new proxy.
	VpcSubnetIds() *[]*string
	SetVpcSubnetIds(val *[]*string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::DBProxy` resource creates or updates a DB proxy.

For information about RDS Proxy for Amazon RDS, see [Managing Connections with Amazon RDS Proxy](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.html) in the *Amazon RDS User Guide* .

For information about RDS Proxy for Amazon Aurora, see [Managing Connections with Amazon RDS Proxy](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-proxy.html) in the *Amazon Aurora User Guide* .

> Limitations apply to RDS Proxy, including DB engine version limitations and AWS Region limitations. > > For information about limitations that apply to RDS Proxy for Amazon RDS, see [Limitations for RDS Proxy](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.html#rds-proxy.limitations) in the *Amazon RDS User Guide* . > > For information about that apply to RDS Proxy for Amazon Aurora, see [Limitations for RDS Proxy](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-proxy.html#rds-proxy.limitations) in the *Amazon Aurora User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBProxy := awscdk.Aws_rds.NewCfnDBProxy(this, jsii.String("MyCfnDBProxy"), &CfnDBProxyProps{
	Auth: []interface{}{
		&AuthFormatProperty{
			AuthScheme: jsii.String("authScheme"),
			ClientPasswordAuthType: jsii.String("clientPasswordAuthType"),
			Description: jsii.String("description"),
			IamAuth: jsii.String("iamAuth"),
			SecretArn: jsii.String("secretArn"),
		},
	},
	DbProxyName: jsii.String("dbProxyName"),
	EngineFamily: jsii.String("engineFamily"),
	RoleArn: jsii.String("roleArn"),
	VpcSubnetIds: []*string{
		jsii.String("vpcSubnetIds"),
	},

	// the properties below are optional
	DebugLogging: jsii.Boolean(false),
	IdleClientTimeout: jsii.Number(123),
	RequireTls: jsii.Boolean(false),
	Tags: []tagFormatProperty{
		&tagFormatProperty{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	VpcSecurityGroupIds: []*string{
		jsii.String("vpcSecurityGroupIds"),
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html

func NewCfnDBProxy

func NewCfnDBProxy(scope constructs.Construct, id *string, props *CfnDBProxyProps) CfnDBProxy

type CfnDBProxyEndpoint

type CfnDBProxyEndpoint interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The Amazon Resource Name (ARN) representing the DB proxy endpoint.
	AttrDbProxyEndpointArn() *string
	// The custom endpoint for the RDS DB instance or Aurora DB cluster.
	AttrEndpoint() *string
	// A value that indicates whether this endpoint is the default endpoint for the associated DB proxy.
	//
	// Default DB proxy endpoints always have read/write capability. Other endpoints that you associate with the DB proxy can be either read/write or read-only.
	AttrIsDefault() awscdk.IResolvable
	// The VPC ID of the DB proxy endpoint.
	AttrVpcId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The name of the DB proxy endpoint to create.
	DbProxyEndpointName() *string
	SetDbProxyEndpointName(val *string)
	// The name of the DB proxy associated with the DB proxy endpoint that you create.
	DbProxyName() *string
	SetDbProxyName(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// An optional set of key-value pairs to associate arbitrary data of your choosing with the proxy.
	Tags() *[]*CfnDBProxyEndpoint_TagFormatProperty
	SetTags(val *[]*CfnDBProxyEndpoint_TagFormatProperty)
	// A value that indicates whether the DB proxy endpoint can be used for read/write or read-only operations.
	TargetRole() *string
	SetTargetRole(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// The VPC security group IDs for the DB proxy endpoint that you create.
	VpcSecurityGroupIds() *[]*string
	SetVpcSecurityGroupIds(val *[]*string)
	// The VPC subnet IDs for the DB proxy endpoint that you create.
	VpcSubnetIds() *[]*string
	SetVpcSubnetIds(val *[]*string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::DBProxyEndpoint` resource creates or updates a DB proxy endpoint.

You can use custom proxy endpoints to access a proxy through a different VPC than the proxy's default VPC.

For more information about RDS Proxy, see [AWS::RDS::DBProxy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBProxyEndpoint := awscdk.Aws_rds.NewCfnDBProxyEndpoint(this, jsii.String("MyCfnDBProxyEndpoint"), &CfnDBProxyEndpointProps{
	DbProxyEndpointName: jsii.String("dbProxyEndpointName"),
	DbProxyName: jsii.String("dbProxyName"),
	VpcSubnetIds: []*string{
		jsii.String("vpcSubnetIds"),
	},

	// the properties below are optional
	Tags: []tagFormatProperty{
		&tagFormatProperty{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	TargetRole: jsii.String("targetRole"),
	VpcSecurityGroupIds: []*string{
		jsii.String("vpcSecurityGroupIds"),
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html

func NewCfnDBProxyEndpoint

func NewCfnDBProxyEndpoint(scope constructs.Construct, id *string, props *CfnDBProxyEndpointProps) CfnDBProxyEndpoint

type CfnDBProxyEndpointProps

type CfnDBProxyEndpointProps struct {
	// The name of the DB proxy endpoint to create.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-dbproxyendpointname
	//
	DbProxyEndpointName *string `field:"required" json:"dbProxyEndpointName" yaml:"dbProxyEndpointName"`
	// The name of the DB proxy associated with the DB proxy endpoint that you create.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-dbproxyname
	//
	DbProxyName *string `field:"required" json:"dbProxyName" yaml:"dbProxyName"`
	// The VPC subnet IDs for the DB proxy endpoint that you create.
	//
	// You can specify a different set of subnet IDs than for the original DB proxy.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-vpcsubnetids
	//
	VpcSubnetIds *[]*string `field:"required" json:"vpcSubnetIds" yaml:"vpcSubnetIds"`
	// An optional set of key-value pairs to associate arbitrary data of your choosing with the proxy.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-tags
	//
	Tags *[]*CfnDBProxyEndpoint_TagFormatProperty `field:"optional" json:"tags" yaml:"tags"`
	// A value that indicates whether the DB proxy endpoint can be used for read/write or read-only operations.
	//
	// Valid Values: `READ_WRITE | READ_ONLY`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-targetrole
	//
	TargetRole *string `field:"optional" json:"targetRole" yaml:"targetRole"`
	// The VPC security group IDs for the DB proxy endpoint that you create.
	//
	// You can specify a different set of security group IDs than for the original DB proxy. The default is the default security group for the VPC.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-vpcsecuritygroupids
	//
	VpcSecurityGroupIds *[]*string `field:"optional" json:"vpcSecurityGroupIds" yaml:"vpcSecurityGroupIds"`
}

Properties for defining a `CfnDBProxyEndpoint`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBProxyEndpointProps := &CfnDBProxyEndpointProps{
	DbProxyEndpointName: jsii.String("dbProxyEndpointName"),
	DbProxyName: jsii.String("dbProxyName"),
	VpcSubnetIds: []*string{
		jsii.String("vpcSubnetIds"),
	},

	// the properties below are optional
	Tags: []tagFormatProperty{
		&tagFormatProperty{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	TargetRole: jsii.String("targetRole"),
	VpcSecurityGroupIds: []*string{
		jsii.String("vpcSecurityGroupIds"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html

type CfnDBProxyEndpoint_TagFormatProperty

type CfnDBProxyEndpoint_TagFormatProperty struct {
	// A value is the optional value of the tag.
	//
	// The string value can be 1-256 Unicode characters in length and can't be prefixed with `aws:` . The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$").
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxyendpoint-tagformat.html#cfn-rds-dbproxyendpoint-tagformat-key
	//
	Key *string `field:"optional" json:"key" yaml:"key"`
	// Metadata assigned to a DB instance consisting of a key-value pair.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxyendpoint-tagformat.html#cfn-rds-dbproxyendpoint-tagformat-value
	//
	Value *string `field:"optional" json:"value" yaml:"value"`
}

Metadata assigned to a DB proxy endpoint consisting of a key-value pair.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

tagFormatProperty := &TagFormatProperty{
	Key: jsii.String("key"),
	Value: jsii.String("value"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxyendpoint-tagformat.html

type CfnDBProxyProps

type CfnDBProxyProps struct {
	// The authorization mechanism that the proxy uses.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html#cfn-rds-dbproxy-auth
	//
	Auth interface{} `field:"required" json:"auth" yaml:"auth"`
	// The identifier for the proxy.
	//
	// This name must be unique for all proxies owned by your AWS account in the specified AWS Region . An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens; it can't end with a hyphen or contain two consecutive hyphens.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html#cfn-rds-dbproxy-dbproxyname
	//
	DbProxyName *string `field:"required" json:"dbProxyName" yaml:"dbProxyName"`
	// The kinds of databases that the proxy can connect to.
	//
	// This value determines which database network protocol the proxy recognizes when it interprets network traffic to and from the database. For Aurora MySQL, RDS for MariaDB, and RDS for MySQL databases, specify `MYSQL` . For Aurora PostgreSQL and RDS for PostgreSQL databases, specify `POSTGRESQL` . For RDS for Microsoft SQL Server, specify `SQLSERVER` .
	//
	// *Valid values* : `MYSQL` | `POSTGRESQL` | `SQLSERVER`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html#cfn-rds-dbproxy-enginefamily
	//
	EngineFamily *string `field:"required" json:"engineFamily" yaml:"engineFamily"`
	// The Amazon Resource Name (ARN) of the IAM role that the proxy uses to access secrets in AWS Secrets Manager.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html#cfn-rds-dbproxy-rolearn
	//
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// One or more VPC subnet IDs to associate with the new proxy.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html#cfn-rds-dbproxy-vpcsubnetids
	//
	VpcSubnetIds *[]*string `field:"required" json:"vpcSubnetIds" yaml:"vpcSubnetIds"`
	// Specifies whether the proxy includes detailed information about SQL statements in its logs.
	//
	// This information helps you to debug issues involving SQL behavior or the performance and scalability of the proxy connections. The debug information includes the text of SQL statements that you submit through the proxy. Thus, only enable this setting when needed for debugging, and only when you have security measures in place to safeguard any sensitive information that appears in the logs.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html#cfn-rds-dbproxy-debuglogging
	//
	DebugLogging interface{} `field:"optional" json:"debugLogging" yaml:"debugLogging"`
	// The number of seconds that a connection to the proxy can be inactive before the proxy disconnects it.
	//
	// You can set this value higher or lower than the connection timeout limit for the associated database.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html#cfn-rds-dbproxy-idleclienttimeout
	//
	IdleClientTimeout *float64 `field:"optional" json:"idleClientTimeout" yaml:"idleClientTimeout"`
	// Specifies whether Transport Layer Security (TLS) encryption is required for connections to the proxy.
	//
	// By enabling this setting, you can enforce encrypted TLS connections to the proxy.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html#cfn-rds-dbproxy-requiretls
	//
	RequireTls interface{} `field:"optional" json:"requireTls" yaml:"requireTls"`
	// An optional set of key-value pairs to associate arbitrary data of your choosing with the proxy.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html#cfn-rds-dbproxy-tags
	//
	Tags *[]*CfnDBProxy_TagFormatProperty `field:"optional" json:"tags" yaml:"tags"`
	// One or more VPC security group IDs to associate with the new proxy.
	//
	// If you plan to update the resource, don't specify VPC security groups in a shared VPC.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html#cfn-rds-dbproxy-vpcsecuritygroupids
	//
	VpcSecurityGroupIds *[]*string `field:"optional" json:"vpcSecurityGroupIds" yaml:"vpcSecurityGroupIds"`
}

Properties for defining a `CfnDBProxy`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBProxyProps := &CfnDBProxyProps{
	Auth: []interface{}{
		&AuthFormatProperty{
			AuthScheme: jsii.String("authScheme"),
			ClientPasswordAuthType: jsii.String("clientPasswordAuthType"),
			Description: jsii.String("description"),
			IamAuth: jsii.String("iamAuth"),
			SecretArn: jsii.String("secretArn"),
		},
	},
	DbProxyName: jsii.String("dbProxyName"),
	EngineFamily: jsii.String("engineFamily"),
	RoleArn: jsii.String("roleArn"),
	VpcSubnetIds: []*string{
		jsii.String("vpcSubnetIds"),
	},

	// the properties below are optional
	DebugLogging: jsii.Boolean(false),
	IdleClientTimeout: jsii.Number(123),
	RequireTls: jsii.Boolean(false),
	Tags: []tagFormatProperty{
		&tagFormatProperty{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
	VpcSecurityGroupIds: []*string{
		jsii.String("vpcSecurityGroupIds"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html

type CfnDBProxyTargetGroup

type CfnDBProxyTargetGroup interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The Amazon Resource Name (ARN) representing the target group.
	AttrTargetGroupArn() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Settings that control the size and behavior of the connection pool associated with a `DBProxyTargetGroup` .
	ConnectionPoolConfigurationInfo() interface{}
	SetConnectionPoolConfigurationInfo(val interface{})
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// One or more DB cluster identifiers.
	DbClusterIdentifiers() *[]*string
	SetDbClusterIdentifiers(val *[]*string)
	// One or more DB instance identifiers.
	DbInstanceIdentifiers() *[]*string
	SetDbInstanceIdentifiers(val *[]*string)
	// The identifier of the `DBProxy` that is associated with the `DBProxyTargetGroup` .
	DbProxyName() *string
	SetDbProxyName(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The identifier for the target group.
	TargetGroupName() *string
	SetTargetGroupName(val *string)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::DBProxyTargetGroup` resource represents a set of RDS DB instances, Aurora DB clusters, or both that a proxy can connect to.

Currently, each target group is associated with exactly one RDS DB instance or Aurora DB cluster.

This data type is used as a response element in the `DescribeDBProxyTargetGroups` action.

For information about RDS Proxy for Amazon RDS, see [Managing Connections with Amazon RDS Proxy](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.html) in the *Amazon RDS User Guide* .

For information about RDS Proxy for Amazon Aurora, see [Managing Connections with Amazon RDS Proxy](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-proxy.html) in the *Amazon Aurora User Guide* .

For a sample template that creates a DB proxy and registers a DB instance, see [Examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html#aws-resource-rds-dbproxy--examples) in AWS::RDS::DBProxy.

> Limitations apply to RDS Proxy, including DB engine version limitations and AWS Region limitations. > > For information about limitations that apply to RDS Proxy for Amazon RDS, see [Limitations for RDS Proxy](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.html#rds-proxy.limitations) in the *Amazon RDS User Guide* . > > For information about that apply to RDS Proxy for Amazon Aurora, see [Limitations for RDS Proxy](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-proxy.html#rds-proxy.limitations) in the *Amazon Aurora User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBProxyTargetGroup := awscdk.Aws_rds.NewCfnDBProxyTargetGroup(this, jsii.String("MyCfnDBProxyTargetGroup"), &CfnDBProxyTargetGroupProps{
	DbProxyName: jsii.String("dbProxyName"),
	TargetGroupName: jsii.String("targetGroupName"),

	// the properties below are optional
	ConnectionPoolConfigurationInfo: &ConnectionPoolConfigurationInfoFormatProperty{
		ConnectionBorrowTimeout: jsii.Number(123),
		InitQuery: jsii.String("initQuery"),
		MaxConnectionsPercent: jsii.Number(123),
		MaxIdleConnectionsPercent: jsii.Number(123),
		SessionPinningFilters: []*string{
			jsii.String("sessionPinningFilters"),
		},
	},
	DbClusterIdentifiers: []*string{
		jsii.String("dbClusterIdentifiers"),
	},
	DbInstanceIdentifiers: []*string{
		jsii.String("dbInstanceIdentifiers"),
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html

func NewCfnDBProxyTargetGroup

func NewCfnDBProxyTargetGroup(scope constructs.Construct, id *string, props *CfnDBProxyTargetGroupProps) CfnDBProxyTargetGroup

type CfnDBProxyTargetGroupProps

type CfnDBProxyTargetGroupProps struct {
	// The identifier of the `DBProxy` that is associated with the `DBProxyTargetGroup` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html#cfn-rds-dbproxytargetgroup-dbproxyname
	//
	DbProxyName *string `field:"required" json:"dbProxyName" yaml:"dbProxyName"`
	// The identifier for the target group.
	//
	// > Currently, this property must be set to `default` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html#cfn-rds-dbproxytargetgroup-targetgroupname
	//
	TargetGroupName *string `field:"required" json:"targetGroupName" yaml:"targetGroupName"`
	// Settings that control the size and behavior of the connection pool associated with a `DBProxyTargetGroup` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html#cfn-rds-dbproxytargetgroup-connectionpoolconfigurationinfo
	//
	ConnectionPoolConfigurationInfo interface{} `field:"optional" json:"connectionPoolConfigurationInfo" yaml:"connectionPoolConfigurationInfo"`
	// One or more DB cluster identifiers.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html#cfn-rds-dbproxytargetgroup-dbclusteridentifiers
	//
	DbClusterIdentifiers *[]*string `field:"optional" json:"dbClusterIdentifiers" yaml:"dbClusterIdentifiers"`
	// One or more DB instance identifiers.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html#cfn-rds-dbproxytargetgroup-dbinstanceidentifiers
	//
	DbInstanceIdentifiers *[]*string `field:"optional" json:"dbInstanceIdentifiers" yaml:"dbInstanceIdentifiers"`
}

Properties for defining a `CfnDBProxyTargetGroup`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBProxyTargetGroupProps := &CfnDBProxyTargetGroupProps{
	DbProxyName: jsii.String("dbProxyName"),
	TargetGroupName: jsii.String("targetGroupName"),

	// the properties below are optional
	ConnectionPoolConfigurationInfo: &ConnectionPoolConfigurationInfoFormatProperty{
		ConnectionBorrowTimeout: jsii.Number(123),
		InitQuery: jsii.String("initQuery"),
		MaxConnectionsPercent: jsii.Number(123),
		MaxIdleConnectionsPercent: jsii.Number(123),
		SessionPinningFilters: []*string{
			jsii.String("sessionPinningFilters"),
		},
	},
	DbClusterIdentifiers: []*string{
		jsii.String("dbClusterIdentifiers"),
	},
	DbInstanceIdentifiers: []*string{
		jsii.String("dbInstanceIdentifiers"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html

type CfnDBProxyTargetGroup_ConnectionPoolConfigurationInfoFormatProperty

type CfnDBProxyTargetGroup_ConnectionPoolConfigurationInfoFormatProperty struct {
	// The number of seconds for a proxy to wait for a connection to become available in the connection pool.
	//
	// This setting only applies when the proxy has opened its maximum number of connections and all connections are busy with client sessions. For an unlimited wait time, specify `0` .
	//
	// Default: `120`
	//
	// Constraints:
	//
	// - Must be between 0 and 3600.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat.html#cfn-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat-connectionborrowtimeout
	//
	ConnectionBorrowTimeout *float64 `field:"optional" json:"connectionBorrowTimeout" yaml:"connectionBorrowTimeout"`
	// One or more SQL statements for the proxy to run when opening each new database connection.
	//
	// Typically used with `SET` statements to make sure that each connection has identical settings such as time zone and character set. For multiple statements, use semicolons as the separator. You can also include multiple variables in a single `SET` statement, such as `SET x=1, y=2` .
	//
	// Default: no initialization query.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat.html#cfn-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat-initquery
	//
	InitQuery *string `field:"optional" json:"initQuery" yaml:"initQuery"`
	// The maximum size of the connection pool for each target in a target group.
	//
	// The value is expressed as a percentage of the `max_connections` setting for the RDS DB instance or Aurora DB cluster used by the target group.
	//
	// If you specify `MaxIdleConnectionsPercent` , then you must also include a value for this parameter.
	//
	// Default: `10` for RDS for Microsoft SQL Server, and `100` for all other engines
	//
	// Constraints:
	//
	// - Must be between 1 and 100.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat.html#cfn-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat-maxconnectionspercent
	//
	MaxConnectionsPercent *float64 `field:"optional" json:"maxConnectionsPercent" yaml:"maxConnectionsPercent"`
	// A value that controls how actively the proxy closes idle database connections in the connection pool.
	//
	// The value is expressed as a percentage of the `max_connections` setting for the RDS DB instance or Aurora DB cluster used by the target group. With a high value, the proxy leaves a high percentage of idle database connections open. A low value causes the proxy to close more idle connections and return them to the database.
	//
	// If you specify this parameter, then you must also include a value for `MaxConnectionsPercent` .
	//
	// Default: The default value is half of the value of `MaxConnectionsPercent` . For example, if `MaxConnectionsPercent` is 80, then the default value of `MaxIdleConnectionsPercent` is 40. If the value of `MaxConnectionsPercent` isn't specified, then for SQL Server, `MaxIdleConnectionsPercent` is `5` , and for all other engines, the default is `50` .
	//
	// Constraints:
	//
	// - Must be between 0 and the value of `MaxConnectionsPercent` .
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat.html#cfn-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat-maxidleconnectionspercent
	//
	MaxIdleConnectionsPercent *float64 `field:"optional" json:"maxIdleConnectionsPercent" yaml:"maxIdleConnectionsPercent"`
	// Each item in the list represents a class of SQL operations that normally cause all later statements in a session using a proxy to be pinned to the same underlying database connection.
	//
	// Including an item in the list exempts that class of SQL operations from the pinning behavior.
	//
	// Default: no session pinning filters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat.html#cfn-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat-sessionpinningfilters
	//
	SessionPinningFilters *[]*string `field:"optional" json:"sessionPinningFilters" yaml:"sessionPinningFilters"`
}

Specifies the settings that control the size and behavior of the connection pool associated with a `DBProxyTargetGroup` .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

connectionPoolConfigurationInfoFormatProperty := &ConnectionPoolConfigurationInfoFormatProperty{
	ConnectionBorrowTimeout: jsii.Number(123),
	InitQuery: jsii.String("initQuery"),
	MaxConnectionsPercent: jsii.Number(123),
	MaxIdleConnectionsPercent: jsii.Number(123),
	SessionPinningFilters: []*string{
		jsii.String("sessionPinningFilters"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat.html

type CfnDBProxy_AuthFormatProperty

type CfnDBProxy_AuthFormatProperty struct {
	// The type of authentication that the proxy uses for connections from the proxy to the underlying database.
	//
	// Valid Values: `SECRETS`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxy-authformat.html#cfn-rds-dbproxy-authformat-authscheme
	//
	AuthScheme *string `field:"optional" json:"authScheme" yaml:"authScheme"`
	// Specifies the details of authentication used by a proxy to log in as a specific database user.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxy-authformat.html#cfn-rds-dbproxy-authformat-clientpasswordauthtype
	//
	ClientPasswordAuthType *string `field:"optional" json:"clientPasswordAuthType" yaml:"clientPasswordAuthType"`
	// A user-specified description about the authentication used by a proxy to log in as a specific database user.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxy-authformat.html#cfn-rds-dbproxy-authformat-description
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// Whether to require or disallow AWS Identity and Access Management (IAM) authentication for connections to the proxy.
	//
	// The `ENABLED` value is valid only for proxies with RDS for Microsoft SQL Server.
	//
	// Valid Values: `ENABLED | DISABLED | REQUIRED`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxy-authformat.html#cfn-rds-dbproxy-authformat-iamauth
	//
	IamAuth *string `field:"optional" json:"iamAuth" yaml:"iamAuth"`
	// The Amazon Resource Name (ARN) representing the secret that the proxy uses to authenticate to the RDS DB instance or Aurora DB cluster.
	//
	// These secrets are stored within Amazon Secrets Manager.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxy-authformat.html#cfn-rds-dbproxy-authformat-secretarn
	//
	SecretArn *string `field:"optional" json:"secretArn" yaml:"secretArn"`
}

Specifies the details of authentication used by a proxy to log in as a specific database user.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

authFormatProperty := &AuthFormatProperty{
	AuthScheme: jsii.String("authScheme"),
	ClientPasswordAuthType: jsii.String("clientPasswordAuthType"),
	Description: jsii.String("description"),
	IamAuth: jsii.String("iamAuth"),
	SecretArn: jsii.String("secretArn"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxy-authformat.html

type CfnDBProxy_TagFormatProperty

type CfnDBProxy_TagFormatProperty struct {
	// A key is the required name of the tag.
	//
	// The string value can be 1-128 Unicode characters in length and can't be prefixed with `aws:` . The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$").
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxy-tagformat.html#cfn-rds-dbproxy-tagformat-key
	//
	Key *string `field:"optional" json:"key" yaml:"key"`
	// A value is the optional value of the tag.
	//
	// The string value can be 1-256 Unicode characters in length and can't be prefixed with `aws:` . The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$").
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxy-tagformat.html#cfn-rds-dbproxy-tagformat-value
	//
	Value *string `field:"optional" json:"value" yaml:"value"`
}

Metadata assigned to a DB proxy consisting of a key-value pair.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

tagFormatProperty := &TagFormatProperty{
	Key: jsii.String("key"),
	Value: jsii.String("value"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxy-tagformat.html

type CfnDBSecurityGroup

type CfnDBSecurityGroup interface {
	awscdk.CfnResource
	awscdk.IInspectable
	awscdk.ITaggable
	AttrId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// Ingress rules to be applied to the DB security group.
	DbSecurityGroupIngress() interface{}
	SetDbSecurityGroupIngress(val interface{})
	// The identifier of an Amazon VPC.
	//
	// This property indicates the VPC that this DB security group belongs to.
	Ec2VpcId() *string
	SetEc2VpcId(val *string)
	// Provides the description of the DB security group.
	GroupDescription() *string
	SetGroupDescription(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// An optional array of key-value pairs to apply to this DB security group.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::DBSecurityGroup` resource creates or updates an Amazon RDS DB security group.

> EC2-Classic was retired on August 15, 2022. If you haven't migrated from EC2-Classic to a VPC, we recommend that you migrate as soon as possible. For more information, see [Migrate from EC2-Classic to a VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) in the *Amazon EC2 User Guide* , the blog [EC2-Classic Networking is Retiring – Here’s How to Prepare](https://docs.aws.amazon.com/aws/ec2-classic-is-retiring-heres-how-to-prepare/) , and [Moving a DB instance not in a VPC into a VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.Non-VPC2VPC.html) in the *Amazon RDS User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBSecurityGroup := awscdk.Aws_rds.NewCfnDBSecurityGroup(this, jsii.String("MyCfnDBSecurityGroup"), &CfnDBSecurityGroupProps{
	DbSecurityGroupIngress: []interface{}{
		&IngressProperty{
			Cidrip: jsii.String("cidrip"),
			Ec2SecurityGroupId: jsii.String("ec2SecurityGroupId"),
			Ec2SecurityGroupName: jsii.String("ec2SecurityGroupName"),
			Ec2SecurityGroupOwnerId: jsii.String("ec2SecurityGroupOwnerId"),
		},
	},
	GroupDescription: jsii.String("groupDescription"),

	// the properties below are optional
	Ec2VpcId: jsii.String("ec2VpcId"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroup.html

func NewCfnDBSecurityGroup

func NewCfnDBSecurityGroup(scope constructs.Construct, id *string, props *CfnDBSecurityGroupProps) CfnDBSecurityGroup

type CfnDBSecurityGroupIngress

type CfnDBSecurityGroupIngress interface {
	awscdk.CfnResource
	awscdk.IInspectable
	AttrId() *string
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// The IP range to authorize.
	Cidrip() *string
	SetCidrip(val *string)
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The name of the DB security group to add authorization to.
	DbSecurityGroupName() *string
	SetDbSecurityGroupName(val *string)
	// Id of the EC2 security group to authorize.
	Ec2SecurityGroupId() *string
	SetEc2SecurityGroupId(val *string)
	// Name of the EC2 security group to authorize.
	Ec2SecurityGroupName() *string
	SetEc2SecurityGroupName(val *string)
	// AWS account number of the owner of the EC2 security group specified in the `EC2SecurityGroupName` parameter.
	Ec2SecurityGroupOwnerId() *string
	SetEc2SecurityGroupOwnerId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::DBSecurityGroupIngress` resource enables ingress to a DB security group using one of two forms of authorization.

First, you can add EC2 or VPC security groups to the DB security group if the application using the database is running on EC2 or VPC instances. Second, IP ranges are available if the application accessing your database is running on the Internet.

This type supports updates. For more information about updating stacks, see [AWS CloudFormation Stacks Updates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html) .

For details about the settings for DB security group ingress, see [AuthorizeDBSecurityGroupIngress](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AuthorizeDBSecurityGroupIngress.html) .

> EC2-Classic was retired on August 15, 2022. If you haven't migrated from EC2-Classic to a VPC, we recommend that you migrate as soon as possible. For more information, see [Migrate from EC2-Classic to a VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) in the *Amazon EC2 User Guide* , the blog [EC2-Classic Networking is Retiring – Here’s How to Prepare](https://docs.aws.amazon.com/aws/ec2-classic-is-retiring-heres-how-to-prepare/) , and [Moving a DB instance not in a VPC into a VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.Non-VPC2VPC.html) in the *Amazon RDS User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBSecurityGroupIngress := awscdk.Aws_rds.NewCfnDBSecurityGroupIngress(this, jsii.String("MyCfnDBSecurityGroupIngress"), &CfnDBSecurityGroupIngressProps{
	DbSecurityGroupName: jsii.String("dbSecurityGroupName"),

	// the properties below are optional
	Cidrip: jsii.String("cidrip"),
	Ec2SecurityGroupId: jsii.String("ec2SecurityGroupId"),
	Ec2SecurityGroupName: jsii.String("ec2SecurityGroupName"),
	Ec2SecurityGroupOwnerId: jsii.String("ec2SecurityGroupOwnerId"),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroupingress.html

func NewCfnDBSecurityGroupIngress

func NewCfnDBSecurityGroupIngress(scope constructs.Construct, id *string, props *CfnDBSecurityGroupIngressProps) CfnDBSecurityGroupIngress

type CfnDBSecurityGroupIngressProps

type CfnDBSecurityGroupIngressProps struct {
	// The name of the DB security group to add authorization to.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroupingress.html#cfn-rds-dbsecuritygroupingress-dbsecuritygroupname
	//
	DbSecurityGroupName *string `field:"required" json:"dbSecurityGroupName" yaml:"dbSecurityGroupName"`
	// The IP range to authorize.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroupingress.html#cfn-rds-dbsecuritygroupingress-cidrip
	//
	Cidrip *string `field:"optional" json:"cidrip" yaml:"cidrip"`
	// Id of the EC2 security group to authorize.
	//
	// For VPC DB security groups, `EC2SecurityGroupId` must be provided. Otherwise, `EC2SecurityGroupOwnerId` and either `EC2SecurityGroupName` or `EC2SecurityGroupId` must be provided.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroupingress.html#cfn-rds-dbsecuritygroupingress-ec2securitygroupid
	//
	Ec2SecurityGroupId *string `field:"optional" json:"ec2SecurityGroupId" yaml:"ec2SecurityGroupId"`
	// Name of the EC2 security group to authorize.
	//
	// For VPC DB security groups, `EC2SecurityGroupId` must be provided. Otherwise, `EC2SecurityGroupOwnerId` and either `EC2SecurityGroupName` or `EC2SecurityGroupId` must be provided.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroupingress.html#cfn-rds-dbsecuritygroupingress-ec2securitygroupname
	//
	Ec2SecurityGroupName *string `field:"optional" json:"ec2SecurityGroupName" yaml:"ec2SecurityGroupName"`
	// AWS account number of the owner of the EC2 security group specified in the `EC2SecurityGroupName` parameter.
	//
	// The AWS access key ID isn't an acceptable value. For VPC DB security groups, `EC2SecurityGroupId` must be provided. Otherwise, `EC2SecurityGroupOwnerId` and either `EC2SecurityGroupName` or `EC2SecurityGroupId` must be provided.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroupingress.html#cfn-rds-dbsecuritygroupingress-ec2securitygroupownerid
	//
	Ec2SecurityGroupOwnerId *string `field:"optional" json:"ec2SecurityGroupOwnerId" yaml:"ec2SecurityGroupOwnerId"`
}

Properties for defining a `CfnDBSecurityGroupIngress`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBSecurityGroupIngressProps := &CfnDBSecurityGroupIngressProps{
	DbSecurityGroupName: jsii.String("dbSecurityGroupName"),

	// the properties below are optional
	Cidrip: jsii.String("cidrip"),
	Ec2SecurityGroupId: jsii.String("ec2SecurityGroupId"),
	Ec2SecurityGroupName: jsii.String("ec2SecurityGroupName"),
	Ec2SecurityGroupOwnerId: jsii.String("ec2SecurityGroupOwnerId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroupingress.html

type CfnDBSecurityGroupProps

type CfnDBSecurityGroupProps struct {
	// Ingress rules to be applied to the DB security group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroup.html#cfn-rds-dbsecuritygroup-dbsecuritygroupingress
	//
	DbSecurityGroupIngress interface{} `field:"required" json:"dbSecurityGroupIngress" yaml:"dbSecurityGroupIngress"`
	// Provides the description of the DB security group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroup.html#cfn-rds-dbsecuritygroup-groupdescription
	//
	GroupDescription *string `field:"required" json:"groupDescription" yaml:"groupDescription"`
	// The identifier of an Amazon VPC. This property indicates the VPC that this DB security group belongs to.
	//
	// > The `EC2VpcId` property is for backward compatibility with older regions, and is no longer recommended for providing security information to an RDS DB instance.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroup.html#cfn-rds-dbsecuritygroup-ec2vpcid
	//
	Ec2VpcId *string `field:"optional" json:"ec2VpcId" yaml:"ec2VpcId"`
	// An optional array of key-value pairs to apply to this DB security group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroup.html#cfn-rds-dbsecuritygroup-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnDBSecurityGroup`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBSecurityGroupProps := &CfnDBSecurityGroupProps{
	DbSecurityGroupIngress: []interface{}{
		&IngressProperty{
			Cidrip: jsii.String("cidrip"),
			Ec2SecurityGroupId: jsii.String("ec2SecurityGroupId"),
			Ec2SecurityGroupName: jsii.String("ec2SecurityGroupName"),
			Ec2SecurityGroupOwnerId: jsii.String("ec2SecurityGroupOwnerId"),
		},
	},
	GroupDescription: jsii.String("groupDescription"),

	// the properties below are optional
	Ec2VpcId: jsii.String("ec2VpcId"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsecuritygroup.html

type CfnDBSecurityGroup_IngressProperty

type CfnDBSecurityGroup_IngressProperty struct {
	// The IP range to authorize.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbsecuritygroup-ingress.html#cfn-rds-dbsecuritygroup-ingress-cidrip
	//
	Cidrip *string `field:"optional" json:"cidrip" yaml:"cidrip"`
	// Id of the EC2 security group to authorize.
	//
	// For VPC DB security groups, `EC2SecurityGroupId` must be provided. Otherwise, `EC2SecurityGroupOwnerId` and either `EC2SecurityGroupName` or `EC2SecurityGroupId` must be provided.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbsecuritygroup-ingress.html#cfn-rds-dbsecuritygroup-ingress-ec2securitygroupid
	//
	Ec2SecurityGroupId *string `field:"optional" json:"ec2SecurityGroupId" yaml:"ec2SecurityGroupId"`
	// Name of the EC2 security group to authorize.
	//
	// For VPC DB security groups, `EC2SecurityGroupId` must be provided. Otherwise, `EC2SecurityGroupOwnerId` and either `EC2SecurityGroupName` or `EC2SecurityGroupId` must be provided.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbsecuritygroup-ingress.html#cfn-rds-dbsecuritygroup-ingress-ec2securitygroupname
	//
	Ec2SecurityGroupName *string `field:"optional" json:"ec2SecurityGroupName" yaml:"ec2SecurityGroupName"`
	// AWS account number of the owner of the EC2 security group specified in the `EC2SecurityGroupName` parameter.
	//
	// The AWS access key ID isn't an acceptable value. For VPC DB security groups, `EC2SecurityGroupId` must be provided. Otherwise, `EC2SecurityGroupOwnerId` and either `EC2SecurityGroupName` or `EC2SecurityGroupId` must be provided.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbsecuritygroup-ingress.html#cfn-rds-dbsecuritygroup-ingress-ec2securitygroupownerid
	//
	Ec2SecurityGroupOwnerId *string `field:"optional" json:"ec2SecurityGroupOwnerId" yaml:"ec2SecurityGroupOwnerId"`
}

The `Ingress` property type specifies an individual ingress rule within an `AWS::RDS::DBSecurityGroup` resource.

> EC2-Classic was retired on August 15, 2022. If you haven't migrated from EC2-Classic to a VPC, we recommend that you migrate as soon as possible. For more information, see [Migrate from EC2-Classic to a VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) in the *Amazon EC2 User Guide* , the blog [EC2-Classic Networking is Retiring – Here’s How to Prepare](https://docs.aws.amazon.com/aws/ec2-classic-is-retiring-heres-how-to-prepare/) , and [Moving a DB instance not in a VPC into a VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.Non-VPC2VPC.html) in the *Amazon RDS User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

ingressProperty := &IngressProperty{
	Cidrip: jsii.String("cidrip"),
	Ec2SecurityGroupId: jsii.String("ec2SecurityGroupId"),
	Ec2SecurityGroupName: jsii.String("ec2SecurityGroupName"),
	Ec2SecurityGroupOwnerId: jsii.String("ec2SecurityGroupOwnerId"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbsecuritygroup-ingress.html

type CfnDBSubnetGroup

type CfnDBSubnetGroup interface {
	awscdk.CfnResource
	awscdk.IInspectable
	awscdk.ITaggable
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// The description for the DB subnet group.
	DbSubnetGroupDescription() *string
	SetDbSubnetGroupDescription(val *string)
	// The name for the DB subnet group.
	//
	// This value is stored as a lowercase string.
	DbSubnetGroupName() *string
	SetDbSubnetGroupName(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The EC2 Subnet IDs for the DB subnet group.
	SubnetIds() *[]*string
	SetSubnetIds(val *[]*string)
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// An optional array of key-value pairs to apply to this DB subnet group.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::DBSubnetGroup` resource creates a database subnet group.

Subnet groups must contain at least two subnets in two different Availability Zones in the same region.

For more information, see [Working with DB subnet groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html#USER_VPC.Subnets) in the *Amazon RDS User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBSubnetGroup := awscdk.Aws_rds.NewCfnDBSubnetGroup(this, jsii.String("MyCfnDBSubnetGroup"), &CfnDBSubnetGroupProps{
	DbSubnetGroupDescription: jsii.String("dbSubnetGroupDescription"),
	SubnetIds: []*string{
		jsii.String("subnetIds"),
	},

	// the properties below are optional
	DbSubnetGroupName: jsii.String("dbSubnetGroupName"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnetgroup.html

func NewCfnDBSubnetGroup

func NewCfnDBSubnetGroup(scope constructs.Construct, id *string, props *CfnDBSubnetGroupProps) CfnDBSubnetGroup

type CfnDBSubnetGroupProps

type CfnDBSubnetGroupProps struct {
	// The description for the DB subnet group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnetgroup.html#cfn-rds-dbsubnetgroup-dbsubnetgroupdescription
	//
	DbSubnetGroupDescription *string `field:"required" json:"dbSubnetGroupDescription" yaml:"dbSubnetGroupDescription"`
	// The EC2 Subnet IDs for the DB subnet group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnetgroup.html#cfn-rds-dbsubnetgroup-subnetids
	//
	SubnetIds *[]*string `field:"required" json:"subnetIds" yaml:"subnetIds"`
	// The name for the DB subnet group. This value is stored as a lowercase string.
	//
	// Constraints: Must contain no more than 255 lowercase alphanumeric characters or hyphens. Must not be "Default".
	//
	// Example: `mysubnetgroup`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnetgroup.html#cfn-rds-dbsubnetgroup-dbsubnetgroupname
	//
	DbSubnetGroupName *string `field:"optional" json:"dbSubnetGroupName" yaml:"dbSubnetGroupName"`
	// An optional array of key-value pairs to apply to this DB subnet group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnetgroup.html#cfn-rds-dbsubnetgroup-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnDBSubnetGroup`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDBSubnetGroupProps := &CfnDBSubnetGroupProps{
	DbSubnetGroupDescription: jsii.String("dbSubnetGroupDescription"),
	SubnetIds: []*string{
		jsii.String("subnetIds"),
	},

	// the properties below are optional
	DbSubnetGroupName: jsii.String("dbSubnetGroupName"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnetgroup.html

type CfnEventSubscription

type CfnEventSubscription interface {
	awscdk.CfnResource
	awscdk.IInspectable
	awscdk.ITaggable
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// Specifies whether to activate the subscription.
	Enabled() interface{}
	SetEnabled(val interface{})
	// A list of event categories for a particular source type ( `SourceType` ) that you want to subscribe to.
	EventCategories() *[]*string
	SetEventCategories(val *[]*string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The Amazon Resource Name (ARN) of the SNS topic created for event notification.
	SnsTopicArn() *string
	SetSnsTopicArn(val *string)
	// The list of identifiers of the event sources for which events are returned.
	SourceIds() *[]*string
	SetSourceIds(val *[]*string)
	// The type of source that is generating the events.
	SourceType() *string
	SetSourceType(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// The name of the subscription.
	SubscriptionName() *string
	SetSubscriptionName(val *string)
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// An optional array of key-value pairs to apply to this subscription.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::EventSubscription` resource allows you to receive notifications for Amazon Relational Database Service events through the Amazon Simple Notification Service (Amazon SNS).

For more information, see [Using Amazon RDS Event Notification](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html) in the *Amazon RDS User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnEventSubscription := awscdk.Aws_rds.NewCfnEventSubscription(this, jsii.String("MyCfnEventSubscription"), &CfnEventSubscriptionProps{
	SnsTopicArn: jsii.String("snsTopicArn"),

	// the properties below are optional
	Enabled: jsii.Boolean(false),
	EventCategories: []*string{
		jsii.String("eventCategories"),
	},
	SourceIds: []*string{
		jsii.String("sourceIds"),
	},
	SourceType: jsii.String("sourceType"),
	SubscriptionName: jsii.String("subscriptionName"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html

func NewCfnEventSubscription

func NewCfnEventSubscription(scope constructs.Construct, id *string, props *CfnEventSubscriptionProps) CfnEventSubscription

type CfnEventSubscriptionProps

type CfnEventSubscriptionProps struct {
	// The Amazon Resource Name (ARN) of the SNS topic created for event notification.
	//
	// The ARN is created by Amazon SNS when you create a topic and subscribe to it.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-snstopicarn
	//
	SnsTopicArn *string `field:"required" json:"snsTopicArn" yaml:"snsTopicArn"`
	// Specifies whether to activate the subscription.
	//
	// If the event notification subscription isn't activated, the subscription is created but not active.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-enabled
	//
	// Default: - true.
	//
	Enabled interface{} `field:"optional" json:"enabled" yaml:"enabled"`
	// A list of event categories for a particular source type ( `SourceType` ) that you want to subscribe to.
	//
	// You can see a list of the categories for a given source type in the "Amazon RDS event categories and event messages" section of the [*Amazon RDS User Guide*](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Messages.html) or the [*Amazon Aurora User Guide*](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Events.Messages.html) . You can also see this list by using the `DescribeEventCategories` operation.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-eventcategories
	//
	EventCategories *[]*string `field:"optional" json:"eventCategories" yaml:"eventCategories"`
	// The list of identifiers of the event sources for which events are returned.
	//
	// If not specified, then all sources are included in the response. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens. It can't end with a hyphen or contain two consecutive hyphens.
	//
	// Constraints:
	//
	// - If a `SourceIds` value is supplied, `SourceType` must also be provided.
	// - If the source type is a DB instance, a `DBInstanceIdentifier` value must be supplied.
	// - If the source type is a DB cluster, a `DBClusterIdentifier` value must be supplied.
	// - If the source type is a DB parameter group, a `DBParameterGroupName` value must be supplied.
	// - If the source type is a DB security group, a `DBSecurityGroupName` value must be supplied.
	// - If the source type is a DB snapshot, a `DBSnapshotIdentifier` value must be supplied.
	// - If the source type is a DB cluster snapshot, a `DBClusterSnapshotIdentifier` value must be supplied.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-sourceids
	//
	SourceIds *[]*string `field:"optional" json:"sourceIds" yaml:"sourceIds"`
	// The type of source that is generating the events.
	//
	// For example, if you want to be notified of events generated by a DB instance, set this parameter to `db-instance` . If this value isn't specified, all events are returned.
	//
	// Valid values: `db-instance` | `db-cluster` | `db-parameter-group` | `db-security-group` | `db-snapshot` | `db-cluster-snapshot`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-sourcetype
	//
	SourceType *string `field:"optional" json:"sourceType" yaml:"sourceType"`
	// The name of the subscription.
	//
	// Constraints: The name must be less than 255 characters.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-subscriptionname
	//
	SubscriptionName *string `field:"optional" json:"subscriptionName" yaml:"subscriptionName"`
	// An optional array of key-value pairs to apply to this subscription.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnEventSubscription`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnEventSubscriptionProps := &CfnEventSubscriptionProps{
	SnsTopicArn: jsii.String("snsTopicArn"),

	// the properties below are optional
	Enabled: jsii.Boolean(false),
	EventCategories: []*string{
		jsii.String("eventCategories"),
	},
	SourceIds: []*string{
		jsii.String("sourceIds"),
	},
	SourceType: jsii.String("sourceType"),
	SubscriptionName: jsii.String("subscriptionName"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html

type CfnGlobalCluster

type CfnGlobalCluster interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// Specifies whether to enable deletion protection for the new global database cluster.
	DeletionProtection() interface{}
	SetDeletionProtection(val interface{})
	// The database engine to use for this global database cluster.
	Engine() *string
	SetEngine(val *string)
	// The engine version to use for this global database cluster.
	EngineVersion() *string
	SetEngineVersion(val *string)
	// The cluster identifier for this global database cluster.
	GlobalClusterIdentifier() *string
	SetGlobalClusterIdentifier(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// The tree node.
	Node() constructs.Node
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The Amazon Resource Name (ARN) to use as the primary cluster of the global database.
	SourceDbClusterIdentifier() *string
	SetSourceDbClusterIdentifier(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Specifies whether to enable storage encryption for the new global database cluster.
	StorageEncrypted() interface{}
	SetStorageEncrypted(val interface{})
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::GlobalCluster` resource creates or updates an Amazon Aurora global database spread across multiple AWS Regions.

The global database contains a single primary cluster with read-write capability, and a read-only secondary cluster that receives data from the primary cluster through high-speed replication performed by the Aurora storage subsystem.

You can create a global database that is initially empty, and then add a primary cluster and a secondary cluster to it.

For information about Aurora global databases, see [Working with Amazon Aurora Global Databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) in the *Amazon Aurora User Guide* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnGlobalCluster := awscdk.Aws_rds.NewCfnGlobalCluster(this, jsii.String("MyCfnGlobalCluster"), &CfnGlobalClusterProps{
	DeletionProtection: jsii.Boolean(false),
	Engine: jsii.String("engine"),
	EngineVersion: jsii.String("engineVersion"),
	GlobalClusterIdentifier: jsii.String("globalClusterIdentifier"),
	SourceDbClusterIdentifier: jsii.String("sourceDbClusterIdentifier"),
	StorageEncrypted: jsii.Boolean(false),
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html

func NewCfnGlobalCluster

func NewCfnGlobalCluster(scope constructs.Construct, id *string, props *CfnGlobalClusterProps) CfnGlobalCluster

type CfnGlobalClusterProps

type CfnGlobalClusterProps struct {
	// Specifies whether to enable deletion protection for the new global database cluster.
	//
	// The global database can't be deleted when deletion protection is enabled.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html#cfn-rds-globalcluster-deletionprotection
	//
	DeletionProtection interface{} `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// The database engine to use for this global database cluster.
	//
	// Valid Values: `aurora-mysql | aurora-postgresql`
	//
	// Constraints:
	//
	// - Can't be specified if `SourceDBClusterIdentifier` is specified. In this case, Amazon Aurora uses the engine of the source DB cluster.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html#cfn-rds-globalcluster-engine
	//
	Engine *string `field:"optional" json:"engine" yaml:"engine"`
	// The engine version to use for this global database cluster.
	//
	// Constraints:
	//
	// - Can't be specified if `SourceDBClusterIdentifier` is specified. In this case, Amazon Aurora uses the engine version of the source DB cluster.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html#cfn-rds-globalcluster-engineversion
	//
	EngineVersion *string `field:"optional" json:"engineVersion" yaml:"engineVersion"`
	// The cluster identifier for this global database cluster.
	//
	// This parameter is stored as a lowercase string.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html#cfn-rds-globalcluster-globalclusteridentifier
	//
	GlobalClusterIdentifier *string `field:"optional" json:"globalClusterIdentifier" yaml:"globalClusterIdentifier"`
	// The Amazon Resource Name (ARN) to use as the primary cluster of the global database.
	//
	// If you provide a value for this parameter, don't specify values for the following settings because Amazon Aurora uses the values from the specified source DB cluster:
	//
	// - `DatabaseName`
	// - `Engine`
	// - `EngineVersion`
	// - `StorageEncrypted`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html#cfn-rds-globalcluster-sourcedbclusteridentifier
	//
	SourceDbClusterIdentifier *string `field:"optional" json:"sourceDbClusterIdentifier" yaml:"sourceDbClusterIdentifier"`
	// Specifies whether to enable storage encryption for the new global database cluster.
	//
	// Constraints:
	//
	// - Can't be specified if `SourceDBClusterIdentifier` is specified. In this case, Amazon Aurora uses the setting from the source DB cluster.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html#cfn-rds-globalcluster-storageencrypted
	//
	StorageEncrypted interface{} `field:"optional" json:"storageEncrypted" yaml:"storageEncrypted"`
}

Properties for defining a `CfnGlobalCluster`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnGlobalClusterProps := &CfnGlobalClusterProps{
	DeletionProtection: jsii.Boolean(false),
	Engine: jsii.String("engine"),
	EngineVersion: jsii.String("engineVersion"),
	GlobalClusterIdentifier: jsii.String("globalClusterIdentifier"),
	SourceDbClusterIdentifier: jsii.String("sourceDbClusterIdentifier"),
	StorageEncrypted: jsii.Boolean(false),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html

type CfnOptionGroup

type CfnOptionGroup interface {
	awscdk.CfnResource
	awscdk.IInspectable
	awscdk.ITaggable
	// Options for this resource, such as condition, update policy etc.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	CreationStack() *[]*string
	// Specifies the name of the engine that this option group should be associated with.
	EngineName() *string
	SetEngineName(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	LogicalId() *string
	// Specifies the major version of the engine that this option group should be associated with.
	MajorEngineVersion() *string
	SetMajorEngineVersion(val *string)
	// The tree node.
	Node() constructs.Node
	// A list of options and the settings for each option.
	OptionConfigurations() interface{}
	SetOptionConfigurations(val interface{})
	// The description of the option group.
	OptionGroupDescription() *string
	SetOptionGroupDescription(val *string)
	// The name of the option group to be created.
	OptionGroupName() *string
	SetOptionGroupName(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	Stack() awscdk.Stack
	// Tag Manager which manages the tags for this resource.
	Tags() awscdk.TagManager
	// An optional array of key-value pairs to apply to this option group.
	TagsRaw() *[]*awscdk.CfnTag
	SetTagsRaw(val *[]*awscdk.CfnTag)
	// Deprecated.
	// Deprecated: use `updatedProperties`
	//
	// Return properties modified after initiation
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperites() *map[string]interface{}
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	UpdatedProperties() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	AddDependency(target awscdk.CfnResource)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	// Deprecated: use addDependency.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//   "GlobalSecondaryIndexes": [
	//     {
	//       "Projection": {
	//         "NonKeyAttributes": [ "myattribute" ]
	//         ...
	//       }
	//       ...
	//     },
	//     {
	//       "ProjectionType": "INCLUDE"
	//       ...
	//     },
	//   ]
	//   ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). In some
	// cases, a snapshot can be taken of the resource prior to deletion
	// (`RemovalPolicy.SNAPSHOT`). A list of resources that support this policy
	// can be found in the following link:.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#aws-attribute-deletionpolicy-options
	//
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	GetAtt(attributeName *string, typeHint awscdk.ResolutionTypeHint) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Retrieves an array of resources this resource depends on.
	//
	// This assembles dependencies on resources across stacks (including nested stacks)
	// automatically.
	ObtainDependencies() *[]interface{}
	// Get a shallow copy of dependencies between this resource and other resources in the same stack.
	ObtainResourceDependencies() *[]awscdk.CfnResource
	// Overrides the auto-generated logical ID with a specific ID.
	OverrideLogicalId(newLogicalId *string)
	// Indicates that this resource no longer depends on another resource.
	//
	// This can be used for resources across stacks (including nested stacks)
	// and the dependency will automatically be removed from the relevant scope.
	RemoveDependency(target awscdk.CfnResource)
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Replaces one dependency with another.
	ReplaceDependency(target awscdk.CfnResource, newTarget awscdk.CfnResource)
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	ShouldSynthesize() *bool
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	ToString() *string
	ValidateProperties(_properties interface{})
}

The `AWS::RDS::OptionGroup` resource creates or updates an option group, to enable and configure features that are specific to a particular DB engine.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnOptionGroup := awscdk.Aws_rds.NewCfnOptionGroup(this, jsii.String("MyCfnOptionGroup"), &CfnOptionGroupProps{
	EngineName: jsii.String("engineName"),
	MajorEngineVersion: jsii.String("majorEngineVersion"),
	OptionGroupDescription: jsii.String("optionGroupDescription"),

	// the properties below are optional
	OptionConfigurations: []interface{}{
		&OptionConfigurationProperty{
			OptionName: jsii.String("optionName"),

			// the properties below are optional
			DbSecurityGroupMemberships: []*string{
				jsii.String("dbSecurityGroupMemberships"),
			},
			OptionSettings: []interface{}{
				&OptionSettingProperty{
					Name: jsii.String("name"),
					Value: jsii.String("value"),
				},
			},
			OptionVersion: jsii.String("optionVersion"),
			Port: jsii.Number(123),
			VpcSecurityGroupMemberships: []*string{
				jsii.String("vpcSecurityGroupMemberships"),
			},
		},
	},
	OptionGroupName: jsii.String("optionGroupName"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
})

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html

func NewCfnOptionGroup

func NewCfnOptionGroup(scope constructs.Construct, id *string, props *CfnOptionGroupProps) CfnOptionGroup

type CfnOptionGroupProps

type CfnOptionGroupProps struct {
	// Specifies the name of the engine that this option group should be associated with.
	//
	// Valid Values:
	//
	// - `mariadb`
	// - `mysql`
	// - `oracle-ee`
	// - `oracle-ee-cdb`
	// - `oracle-se2`
	// - `oracle-se2-cdb`
	// - `postgres`
	// - `sqlserver-ee`
	// - `sqlserver-se`
	// - `sqlserver-ex`
	// - `sqlserver-web`.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html#cfn-rds-optiongroup-enginename
	//
	EngineName *string `field:"required" json:"engineName" yaml:"engineName"`
	// Specifies the major version of the engine that this option group should be associated with.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html#cfn-rds-optiongroup-majorengineversion
	//
	MajorEngineVersion *string `field:"required" json:"majorEngineVersion" yaml:"majorEngineVersion"`
	// The description of the option group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html#cfn-rds-optiongroup-optiongroupdescription
	//
	OptionGroupDescription *string `field:"required" json:"optionGroupDescription" yaml:"optionGroupDescription"`
	// A list of options and the settings for each option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html#cfn-rds-optiongroup-optionconfigurations
	//
	OptionConfigurations interface{} `field:"optional" json:"optionConfigurations" yaml:"optionConfigurations"`
	// The name of the option group to be created.
	//
	// Constraints:
	//
	// - Must be 1 to 255 letters, numbers, or hyphens
	// - First character must be a letter
	// - Can't end with a hyphen or contain two consecutive hyphens
	//
	// Example: `myoptiongroup`
	//
	// If you don't specify a value for `OptionGroupName` property, a name is automatically created for the option group.
	//
	// > This value is stored as a lowercase string.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html#cfn-rds-optiongroup-optiongroupname
	//
	OptionGroupName *string `field:"optional" json:"optionGroupName" yaml:"optionGroupName"`
	// An optional array of key-value pairs to apply to this option group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html#cfn-rds-optiongroup-tags
	//
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnOptionGroup`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnOptionGroupProps := &CfnOptionGroupProps{
	EngineName: jsii.String("engineName"),
	MajorEngineVersion: jsii.String("majorEngineVersion"),
	OptionGroupDescription: jsii.String("optionGroupDescription"),

	// the properties below are optional
	OptionConfigurations: []interface{}{
		&OptionConfigurationProperty{
			OptionName: jsii.String("optionName"),

			// the properties below are optional
			DbSecurityGroupMemberships: []*string{
				jsii.String("dbSecurityGroupMemberships"),
			},
			OptionSettings: []interface{}{
				&OptionSettingProperty{
					Name: jsii.String("name"),
					Value: jsii.String("value"),
				},
			},
			OptionVersion: jsii.String("optionVersion"),
			Port: jsii.Number(123),
			VpcSecurityGroupMemberships: []*string{
				jsii.String("vpcSecurityGroupMemberships"),
			},
		},
	},
	OptionGroupName: jsii.String("optionGroupName"),
	Tags: []cfnTag{
		&cfnTag{
			Key: jsii.String("key"),
			Value: jsii.String("value"),
		},
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html

type CfnOptionGroup_OptionConfigurationProperty

type CfnOptionGroup_OptionConfigurationProperty struct {
	// The configuration of options to include in a group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfiguration.html#cfn-rds-optiongroup-optionconfiguration-optionname
	//
	OptionName *string `field:"required" json:"optionName" yaml:"optionName"`
	// A list of DBSecurityGroupMembership name strings used for this option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfiguration.html#cfn-rds-optiongroup-optionconfiguration-dbsecuritygroupmemberships
	//
	DbSecurityGroupMemberships *[]*string `field:"optional" json:"dbSecurityGroupMemberships" yaml:"dbSecurityGroupMemberships"`
	// The option settings to include in an option group.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfiguration.html#cfn-rds-optiongroup-optionconfiguration-optionsettings
	//
	OptionSettings interface{} `field:"optional" json:"optionSettings" yaml:"optionSettings"`
	// The version for the option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfiguration.html#cfn-rds-optiongroup-optionconfiguration-optionversion
	//
	OptionVersion *string `field:"optional" json:"optionVersion" yaml:"optionVersion"`
	// The optional port for the option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfiguration.html#cfn-rds-optiongroup-optionconfiguration-port
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// A list of VpcSecurityGroupMembership name strings used for this option.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfiguration.html#cfn-rds-optiongroup-optionconfiguration-vpcsecuritygroupmemberships
	//
	VpcSecurityGroupMemberships *[]*string `field:"optional" json:"vpcSecurityGroupMemberships" yaml:"vpcSecurityGroupMemberships"`
}

The `OptionConfiguration` property type specifies an individual option, and its settings, within an `AWS::RDS::OptionGroup` resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

optionConfigurationProperty := &OptionConfigurationProperty{
	OptionName: jsii.String("optionName"),

	// the properties below are optional
	DbSecurityGroupMemberships: []*string{
		jsii.String("dbSecurityGroupMemberships"),
	},
	OptionSettings: []interface{}{
		&OptionSettingProperty{
			Name: jsii.String("name"),
			Value: jsii.String("value"),
		},
	},
	OptionVersion: jsii.String("optionVersion"),
	Port: jsii.Number(123),
	VpcSecurityGroupMemberships: []*string{
		jsii.String("vpcSecurityGroupMemberships"),
	},
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfiguration.html

type CfnOptionGroup_OptionSettingProperty

type CfnOptionGroup_OptionSettingProperty struct {
	// The name of the option that has settings that you can set.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionsetting.html#cfn-rds-optiongroup-optionsetting-name
	//
	Name *string `field:"optional" json:"name" yaml:"name"`
	// The current value of the option setting.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionsetting.html#cfn-rds-optiongroup-optionsetting-value
	//
	Value *string `field:"optional" json:"value" yaml:"value"`
}

The `OptionSetting` property type specifies the value for an option within an `OptionSetting` property.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

optionSettingProperty := &OptionSettingProperty{
	Name: jsii.String("name"),
	Value: jsii.String("value"),
}

See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionsetting.html

type ClusterEngineBindOptions

type ClusterEngineBindOptions struct {
	// The customer-provided ParameterGroup.
	// Default: - none.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The role used for S3 exporting.
	// Default: - none.
	//
	S3ExportRole awsiam.IRole `field:"optional" json:"s3ExportRole" yaml:"s3ExportRole"`
	// The role used for S3 importing.
	// Default: - none.
	//
	S3ImportRole awsiam.IRole `field:"optional" json:"s3ImportRole" yaml:"s3ImportRole"`
}

The extra options passed to the `IClusterEngine.bindToCluster` method.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var parameterGroup parameterGroup
var role role

clusterEngineBindOptions := &ClusterEngineBindOptions{
	ParameterGroup: parameterGroup,
	S3ExportRole: role,
	S3ImportRole: role,
}

type ClusterEngineConfig

type ClusterEngineConfig struct {
	// Features supported by the database engine.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBEngineVersion.html
	//
	// Default: - no features.
	//
	Features *ClusterEngineFeatures `field:"optional" json:"features" yaml:"features"`
	// The ParameterGroup to use for the cluster.
	// Default: - no ParameterGroup will be used.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The port to use for this cluster, unless the customer specified the port directly.
	// Default: - use the default port for clusters (3306).
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
}

The type returned from the `IClusterEngine.bindToCluster` method.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var parameterGroup parameterGroup

clusterEngineConfig := &ClusterEngineConfig{
	Features: &ClusterEngineFeatures{
		S3Export: jsii.String("s3Export"),
		S3Import: jsii.String("s3Import"),
	},
	ParameterGroup: parameterGroup,
	Port: jsii.Number(123),
}

type ClusterEngineFeatures

type ClusterEngineFeatures struct {
	// Feature name for the DB instance that the IAM role to export to S3 bucket is to be associated with.
	// Default: - no s3Export feature name.
	//
	S3Export *string `field:"optional" json:"s3Export" yaml:"s3Export"`
	// Feature name for the DB instance that the IAM role to access the S3 bucket for import is to be associated with.
	// Default: - no s3Import feature name.
	//
	S3Import *string `field:"optional" json:"s3Import" yaml:"s3Import"`
}

Represents Database Engine features.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

clusterEngineFeatures := &ClusterEngineFeatures{
	S3Export: jsii.String("s3Export"),
	S3Import: jsii.String("s3Import"),
}

type ClusterInstance added in v2.82.0

type ClusterInstance interface {
	IClusterInstance
	// Add the ClusterInstance to the cluster.
	Bind(scope constructs.Construct, cluster IDatabaseCluster, props *ClusterInstanceBindOptions) IAuroraClusterInstance
}

Create an RDS Aurora Cluster Instance.

You can create either provisioned or serverless v2 instances.

Example:

var vpc vpc

myCluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_2_08_1(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_R6G, ec2.InstanceSize_XLARGE4),
	}),
	ServerlessV2MinCapacity: jsii.Number(6.5),
	ServerlessV2MaxCapacity: jsii.Number(64),
	Readers: []iClusterInstance{
		rds.ClusterInstance_ServerlessV2(jsii.String("reader1"), &ServerlessV2ClusterInstanceProps{
			ScaleWithWriter: jsii.Boolean(true),
		}),
		rds.ClusterInstance_*ServerlessV2(jsii.String("reader2")),
	},
	Vpc: Vpc,
})

type ClusterInstanceBindOptions added in v2.82.0

type ClusterInstanceBindOptions struct {
	// The interval, in seconds, between points when Amazon RDS collects enhanced monitoring metrics for the DB instances.
	// Default: no enhanced monitoring.
	//
	MonitoringInterval awscdk.Duration `field:"optional" json:"monitoringInterval" yaml:"monitoringInterval"`
	// Role that will be used to manage DB instances monitoring.
	// Default: - A role is automatically created for you.
	//
	MonitoringRole awsiam.IRole `field:"optional" json:"monitoringRole" yaml:"monitoringRole"`
	// The promotion tier of the cluster instance.
	//
	// This matters more for serverlessV2 instances. If a serverless
	// instance is in tier 0-1 then it will scale with the writer.
	//
	// For provisioned instances this just determines the failover priority.
	// If multiple instances have the same priority then one will be picked at random.
	// Default: 2.
	//
	PromotionTier *float64 `field:"optional" json:"promotionTier" yaml:"promotionTier"`
	// The removal policy on the cluster.
	// Default: - RemovalPolicy.DESTROY (cluster snapshot can restore)
	//
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// Existing subnet group for the cluster.
	//
	// This is only needed when using the isFromLegacyInstanceProps.
	// Default: - cluster subnet group is used.
	//
	SubnetGroup ISubnetGroup `field:"optional" json:"subnetGroup" yaml:"subnetGroup"`
}

Options for binding the instance to the cluster.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var role role
var subnetGroup subnetGroup

clusterInstanceBindOptions := &ClusterInstanceBindOptions{
	MonitoringInterval: cdk.Duration_Minutes(jsii.Number(30)),
	MonitoringRole: role,
	PromotionTier: jsii.Number(123),
	RemovalPolicy: cdk.RemovalPolicy_DESTROY,
	SubnetGroup: subnetGroup,
}

type ClusterInstanceOptions added in v2.82.0

type ClusterInstanceOptions struct {
	// Whether to allow upgrade of major version for the DB instance.
	// Default: - false.
	//
	AllowMajorVersionUpgrade *bool `field:"optional" json:"allowMajorVersionUpgrade" yaml:"allowMajorVersionUpgrade"`
	// Whether to enable automatic upgrade of minor version for the DB instance.
	// Default: - true.
	//
	AutoMinorVersionUpgrade *bool `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// The identifier of the CA certificate for this DB cluster's instances.
	//
	// Specifying or updating this property triggers a reboot.
	//
	// For RDS DB engines:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html
	//
	// Default: - RDS will choose a certificate authority.
	//
	CaCertificate CaCertificate `field:"optional" json:"caCertificate" yaml:"caCertificate"`
	// Whether to enable Performance Insights for the DB instance.
	// Default: - false, unless “performanceInsightRetention“ or “performanceInsightEncryptionKey“ is set.
	//
	EnablePerformanceInsights *bool `field:"optional" json:"enablePerformanceInsights" yaml:"enablePerformanceInsights"`
	// The identifier for the database instance.
	// Default: - CloudFormation generated identifier.
	//
	InstanceIdentifier *string `field:"optional" json:"instanceIdentifier" yaml:"instanceIdentifier"`
	// Only used for migrating existing clusters from using `instanceProps` to `writer` and `readers`.
	//
	// Example:
	//   // existing cluster
	//   var vpc vpc
	//
	//   cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	//   	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
	//   		Version: rds.AuroraMysqlEngineVersion_VER_3_03_0(),
	//   	}),
	//   	Instances: jsii.Number(2),
	//   	InstanceProps: &InstanceProps{
	//   		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
	//   		VpcSubnets: &SubnetSelection{
	//   			SubnetType: ec2.SubnetType_PUBLIC,
	//   		},
	//   		Vpc: *Vpc,
	//   	},
	//   })
	//
	//   // migration
	//
	//   instanceProps := map[string]interface{}{
	//   	"instanceType": ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
	//   	"isFromLegacyInstanceProps": jsii.Boolean(true),
	//   }
	//
	//   myCluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	//   	Engine: rds.DatabaseClusterEngine_*AuroraMysql(&AuroraMysqlClusterEngineProps{
	//   		Version: rds.AuroraMysqlEngineVersion_VER_3_03_0(),
	//   	}),
	//   	VpcSubnets: &SubnetSelection{
	//   		SubnetType: ec2.SubnetType_PUBLIC,
	//   	},
	//   	Vpc: Vpc,
	//   	Writer: rds.ClusterInstance_Provisioned(jsii.String("Instance1"), &ProvisionedClusterInstanceProps{
	//   		InstanceType: instanceProps.instanceType,
	//   		IsFromLegacyInstanceProps: instanceProps.isFromLegacyInstanceProps,
	//   	}),
	//   	Readers: []iClusterInstance{
	//   		rds.ClusterInstance_*Provisioned(jsii.String("Instance2"), &ProvisionedClusterInstanceProps{
	//   			InstanceType: instanceProps.instanceType,
	//   			IsFromLegacyInstanceProps: instanceProps.isFromLegacyInstanceProps,
	//   		}),
	//   	},
	//   })
	//
	// Default: false.
	//
	IsFromLegacyInstanceProps *bool `field:"optional" json:"isFromLegacyInstanceProps" yaml:"isFromLegacyInstanceProps"`
	// The DB parameter group to associate with the instance.
	//
	// This is only needed if you need to configure different parameter
	// groups for each individual instance, otherwise you should not
	// provide this and just use the cluster parameter group.
	// Default: the cluster parameter group is used.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The parameters in the DBParameterGroup to create automatically.
	//
	// You can only specify parameterGroup or parameters but not both.
	// You need to use a versioned engine to auto-generate a DBParameterGroup.
	// Default: - None.
	//
	Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"`
	// The AWS KMS key for encryption of Performance Insights data.
	// Default: - default master key.
	//
	PerformanceInsightEncryptionKey awskms.IKey `field:"optional" json:"performanceInsightEncryptionKey" yaml:"performanceInsightEncryptionKey"`
	// The amount of time, in days, to retain Performance Insights data.
	// Default: 7.
	//
	PerformanceInsightRetention PerformanceInsightRetention `field:"optional" json:"performanceInsightRetention" yaml:"performanceInsightRetention"`
	// Indicates whether the DB instance is an internet-facing instance.
	// Default: - true if the instance is placed in a public subnet.
	//
	PubliclyAccessible *bool `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
}

Common options for creating a cluster instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var caCertificate caCertificate
var key key
var parameterGroup parameterGroup

clusterInstanceOptions := &ClusterInstanceOptions{
	AllowMajorVersionUpgrade: jsii.Boolean(false),
	AutoMinorVersionUpgrade: jsii.Boolean(false),
	CaCertificate: caCertificate,
	EnablePerformanceInsights: jsii.Boolean(false),
	InstanceIdentifier: jsii.String("instanceIdentifier"),
	IsFromLegacyInstanceProps: jsii.Boolean(false),
	ParameterGroup: parameterGroup,
	Parameters: map[string]*string{
		"parametersKey": jsii.String("parameters"),
	},
	PerformanceInsightEncryptionKey: key,
	PerformanceInsightRetention: awscdk.Aws_rds.PerformanceInsightRetention_DEFAULT,
	PubliclyAccessible: jsii.Boolean(false),
}

type ClusterInstanceProps added in v2.82.0

type ClusterInstanceProps struct {
	// Whether to allow upgrade of major version for the DB instance.
	// Default: - false.
	//
	AllowMajorVersionUpgrade *bool `field:"optional" json:"allowMajorVersionUpgrade" yaml:"allowMajorVersionUpgrade"`
	// Whether to enable automatic upgrade of minor version for the DB instance.
	// Default: - true.
	//
	AutoMinorVersionUpgrade *bool `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// The identifier of the CA certificate for this DB cluster's instances.
	//
	// Specifying or updating this property triggers a reboot.
	//
	// For RDS DB engines:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html
	//
	// Default: - RDS will choose a certificate authority.
	//
	CaCertificate CaCertificate `field:"optional" json:"caCertificate" yaml:"caCertificate"`
	// Whether to enable Performance Insights for the DB instance.
	// Default: - false, unless “performanceInsightRetention“ or “performanceInsightEncryptionKey“ is set.
	//
	EnablePerformanceInsights *bool `field:"optional" json:"enablePerformanceInsights" yaml:"enablePerformanceInsights"`
	// The identifier for the database instance.
	// Default: - CloudFormation generated identifier.
	//
	InstanceIdentifier *string `field:"optional" json:"instanceIdentifier" yaml:"instanceIdentifier"`
	// Only used for migrating existing clusters from using `instanceProps` to `writer` and `readers`.
	//
	// Example:
	//   // existing cluster
	//   declare const vpc: ec2.Vpc;
	//   const cluster = new rds.DatabaseCluster(this, 'Database', {
	//     engine: rds.DatabaseClusterEngine.auroraMysql({
	//       version: rds.AuroraMysqlEngineVersion.VER_3_03_0,
	//     }),
	//     instances: 2,
	//     instanceProps: {
	//       instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.SMALL),
	//       vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC },
	//       vpc,
	//     },
	//   });
	//
	//   // migration
	//
	//   const instanceProps = {
	//     instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.SMALL),
	//     isFromLegacyInstanceProps: true,
	//   };
	//
	//   const myCluster = new rds.DatabaseCluster(this, 'Database', {
	//     engine: rds.DatabaseClusterEngine.auroraMysql({
	//       version: rds.AuroraMysqlEngineVersion.VER_3_03_0,
	//     }),
	//     vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC },
	//     vpc,
	//     writer: rds.ClusterInstance.provisioned('Instance1', {
	//       instanceType: instanceProps.instanceType,
	//       isFromLegacyInstanceProps: instanceProps.isFromLegacyInstanceProps,
	//     }),
	//     readers: [
	//       rds.ClusterInstance.provisioned('Instance2', {
	//         instanceType: instanceProps.instanceType,
	//         isFromLegacyInstanceProps: instanceProps.isFromLegacyInstanceProps,
	//       }),
	//     ],
	//   });
	//
	// Default: false.
	//
	IsFromLegacyInstanceProps *bool `field:"optional" json:"isFromLegacyInstanceProps" yaml:"isFromLegacyInstanceProps"`
	// The DB parameter group to associate with the instance.
	//
	// This is only needed if you need to configure different parameter
	// groups for each individual instance, otherwise you should not
	// provide this and just use the cluster parameter group.
	// Default: the cluster parameter group is used.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The parameters in the DBParameterGroup to create automatically.
	//
	// You can only specify parameterGroup or parameters but not both.
	// You need to use a versioned engine to auto-generate a DBParameterGroup.
	// Default: - None.
	//
	Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"`
	// The AWS KMS key for encryption of Performance Insights data.
	// Default: - default master key.
	//
	PerformanceInsightEncryptionKey awskms.IKey `field:"optional" json:"performanceInsightEncryptionKey" yaml:"performanceInsightEncryptionKey"`
	// The amount of time, in days, to retain Performance Insights data.
	// Default: 7.
	//
	PerformanceInsightRetention PerformanceInsightRetention `field:"optional" json:"performanceInsightRetention" yaml:"performanceInsightRetention"`
	// Indicates whether the DB instance is an internet-facing instance.
	// Default: - true if the instance is placed in a public subnet.
	//
	PubliclyAccessible *bool `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
	// The type of cluster instance to create.
	//
	// Can be either
	// provisioned or serverless v2.
	InstanceType ClusterInstanceType `field:"required" json:"instanceType" yaml:"instanceType"`
	// The promotion tier of the cluster instance.
	//
	// This matters more for serverlessV2 instances. If a serverless
	// instance is in tier 0-1 then it will scale with the writer.
	//
	// For provisioned instances this just determines the failover priority.
	// If multiple instances have the same priority then one will be picked at random.
	// Default: 2.
	//
	PromotionTier *float64 `field:"optional" json:"promotionTier" yaml:"promotionTier"`
}

Common options for creating cluster instances (both serverless and provisioned).

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var caCertificate caCertificate
var clusterInstanceType clusterInstanceType
var key key
var parameterGroup parameterGroup

clusterInstanceProps := &ClusterInstanceProps{
	InstanceType: clusterInstanceType,

	// the properties below are optional
	AllowMajorVersionUpgrade: jsii.Boolean(false),
	AutoMinorVersionUpgrade: jsii.Boolean(false),
	CaCertificate: caCertificate,
	EnablePerformanceInsights: jsii.Boolean(false),
	InstanceIdentifier: jsii.String("instanceIdentifier"),
	IsFromLegacyInstanceProps: jsii.Boolean(false),
	ParameterGroup: parameterGroup,
	Parameters: map[string]*string{
		"parametersKey": jsii.String("parameters"),
	},
	PerformanceInsightEncryptionKey: key,
	PerformanceInsightRetention: awscdk.Aws_rds.PerformanceInsightRetention_DEFAULT,
	PromotionTier: jsii.Number(123),
	PubliclyAccessible: jsii.Boolean(false),
}

type ClusterInstanceType added in v2.82.0

type ClusterInstanceType interface {
	Type() InstanceType
	// String representation of the instance type that can be used in the CloudFormation resource.
	ToString() *string
}

The type of Aurora Cluster Instance.

Can be either serverless v2 or provisioned.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

clusterInstanceType := awscdk.Aws_rds.NewClusterInstanceType(jsii.String("instanceType"), awscdk.Aws_rds.InstanceType_PROVISIONED)

func ClusterInstanceType_Provisioned added in v2.82.0

func ClusterInstanceType_Provisioned(instanceType awsec2.InstanceType) ClusterInstanceType

Aurora Provisioned instance type.

func ClusterInstanceType_ServerlessV2 added in v2.82.0

func ClusterInstanceType_ServerlessV2() ClusterInstanceType

Aurora Serverless V2 instance type. See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html

func NewClusterInstanceType added in v2.82.0

func NewClusterInstanceType(instanceType *string, type_ InstanceType) ClusterInstanceType

type CommonRotationUserOptions added in v2.16.0

type CommonRotationUserOptions struct {
	// Specifies the number of days after the previous rotation before Secrets Manager triggers the next automatic rotation.
	// Default: - 30 days.
	//
	AutomaticallyAfter awscdk.Duration `field:"optional" json:"automaticallyAfter" yaml:"automaticallyAfter"`
	// The VPC interface endpoint to use for the Secrets Manager API.
	//
	// If you enable private DNS hostnames for your VPC private endpoint (the default), you don't
	// need to specify an endpoint. The standard Secrets Manager DNS hostname the Secrets Manager
	// CLI and SDKs use by default (https://secretsmanager.<region>.amazonaws.com) automatically
	// resolves to your VPC endpoint.
	// Default: https://secretsmanager.<region>.amazonaws.com
	//
	Endpoint awsec2.IInterfaceVpcEndpoint `field:"optional" json:"endpoint" yaml:"endpoint"`
	// Specifies characters to not include in generated passwords.
	// Default: " %+~`#$&*()|[]{}:;<>?!'/@\"\\"
	//
	ExcludeCharacters *string `field:"optional" json:"excludeCharacters" yaml:"excludeCharacters"`
	// Specifies whether to rotate the secret immediately or wait until the next scheduled rotation window.
	// Default: true.
	//
	RotateImmediatelyOnUpdate *bool `field:"optional" json:"rotateImmediatelyOnUpdate" yaml:"rotateImmediatelyOnUpdate"`
	// The security group for the Lambda rotation function.
	// Default: - a new security group is created.
	//
	SecurityGroup awsec2.ISecurityGroup `field:"optional" json:"securityGroup" yaml:"securityGroup"`
	// Where to place the rotation Lambda function.
	// Default: - same placement as instance or cluster.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
}

Properties common to single-user and multi-user rotation options.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import cdk "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var interfaceVpcEndpoint interfaceVpcEndpoint
var securityGroup securityGroup
var subnet subnet
var subnetFilter subnetFilter

commonRotationUserOptions := &CommonRotationUserOptions{
	AutomaticallyAfter: cdk.Duration_Minutes(jsii.Number(30)),
	Endpoint: interfaceVpcEndpoint,
	ExcludeCharacters: jsii.String("excludeCharacters"),
	RotateImmediatelyOnUpdate: jsii.Boolean(false),
	SecurityGroup: securityGroup,
	VpcSubnets: &SubnetSelection{
		AvailabilityZones: []*string{
			jsii.String("availabilityZones"),
		},
		OnePerAz: jsii.Boolean(false),
		SubnetFilters: []*subnetFilter{
			subnetFilter,
		},
		SubnetGroupName: jsii.String("subnetGroupName"),
		Subnets: []iSubnet{
			subnet,
		},
		SubnetType: awscdk.Aws_ec2.SubnetType_PRIVATE_ISOLATED,
	},
}

type Credentials

type Credentials interface {
	// KMS encryption key to encrypt the generated secret.
	// Default: - default master key.
	//
	EncryptionKey() awskms.IKey
	// The characters to exclude from the generated password.
	//
	// Only used if `password` has not been set.
	// Default: - the DatabaseSecret default exclude character set (" %+~`#$&*()|[]{}:;<>?!'/@\"\\")
	//
	ExcludeCharacters() *string
	// Password.
	//
	// Do not put passwords in your CDK code directly.
	// Default: - a Secrets Manager generated password.
	//
	Password() awscdk.SecretValue
	// A list of regions where to replicate the generated secret.
	// Default: - Secret is not replicated.
	//
	ReplicaRegions() *[]*awssecretsmanager.ReplicaRegion
	// Secret used to instantiate this Login.
	// Default: - none.
	//
	Secret() awssecretsmanager.ISecret
	// The name to use for the Secret if a new Secret is to be generated in SecretsManager for these Credentials.
	// Default: - A name is generated by CloudFormation.
	//
	SecretName() *string
	// Username.
	Username() *string
	// Whether the username should be referenced as a string and not as a dynamic reference to the username in the secret.
	// Default: false.
	//
	UsernameAsString() *bool
}

Username and password combination.

Example:

// Build a data source for AppSync to access the database.
var api graphqlApi
// Create username and password secret for DB Cluster
secret := rds.NewDatabaseSecret(this, jsii.String("AuroraSecret"), &DatabaseSecretProps{
	Username: jsii.String("clusteradmin"),
})

// The VPC to place the cluster in
vpc := ec2.NewVpc(this, jsii.String("AuroraVpc"))

// Create the serverless cluster, provide all values needed to customise the database.
cluster := rds.NewServerlessCluster(this, jsii.String("AuroraCluster"), &ServerlessClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA_MYSQL(),
	Vpc: Vpc,
	Credentials: map[string]*string{
		"username": jsii.String("clusteradmin"),
	},
	ClusterIdentifier: jsii.String("db-endpoint-test"),
	DefaultDatabaseName: jsii.String("demos"),
})
rdsDS := api.AddRdsDataSource(jsii.String("rds"), cluster, secret, jsii.String("demos"))

// Set up a resolver for an RDS query.
rdsDS.CreateResolver(jsii.String("QueryGetDemosRdsResolver"), &BaseResolverProps{
	TypeName: jsii.String("Query"),
	FieldName: jsii.String("getDemosRds"),
	RequestMappingTemplate: appsync.MappingTemplate_FromString(jsii.String(`
	  {
	    "version": "2018-05-29",
	    "statements": [
	      "SELECT * FROM demos"
	    ]
	  }
	  `)),
	ResponseMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	    $utils.toJson($utils.rds.toJsonObject($ctx.result)[0])
	  `)),
})

// Set up a resolver for an RDS mutation.
rdsDS.CreateResolver(jsii.String("MutationAddDemoRdsResolver"), &BaseResolverProps{
	TypeName: jsii.String("Mutation"),
	FieldName: jsii.String("addDemoRds"),
	RequestMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	  {
	    "version": "2018-05-29",
	    "statements": [
	      "INSERT INTO demos VALUES (:id, :version)",
	      "SELECT * WHERE id = :id"
	    ],
	    "variableMap": {
	      ":id": $util.toJson($util.autoId()),
	      ":version": $util.toJson($ctx.args.version)
	    }
	  }
	  `)),
	ResponseMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	    $utils.toJson($utils.rds.toJsonObject($ctx.result)[1][0])
	  `)),
})

func Credentials_FromGeneratedSecret

func Credentials_FromGeneratedSecret(username *string, options *CredentialsBaseOptions) Credentials

Creates Credentials with a password generated and stored in Secrets Manager.

func Credentials_FromPassword

func Credentials_FromPassword(username *string, password awscdk.SecretValue) Credentials

Creates Credentials from a password.

Do not put passwords in your CDK code directly.

func Credentials_FromSecret

func Credentials_FromSecret(secret awssecretsmanager.ISecret, username *string) Credentials

Creates Credentials from an existing Secrets Manager “Secret“ (or “DatabaseSecret“).

The Secret must be a JSON string with a “username“ and “password“ field: ```

{
  ...
  "username": <required: username>,
  "password": <required: password>,
}

```.

func Credentials_FromUsername

func Credentials_FromUsername(username *string, options *CredentialsFromUsernameOptions) Credentials

Creates Credentials for the given username, and optional password and key.

If no password is provided, one will be generated and stored in Secrets Manager.

type CredentialsBaseOptions

type CredentialsBaseOptions struct {
	// KMS encryption key to encrypt the generated secret.
	// Default: - default master key.
	//
	EncryptionKey awskms.IKey `field:"optional" json:"encryptionKey" yaml:"encryptionKey"`
	// The characters to exclude from the generated password.
	//
	// Has no effect if `password` has been provided.
	// Default: - the DatabaseSecret default exclude character set (" %+~`#$&*()|[]{}:;<>?!'/@\"\\")
	//
	ExcludeCharacters *string `field:"optional" json:"excludeCharacters" yaml:"excludeCharacters"`
	// A list of regions where to replicate this secret.
	// Default: - Secret is not replicated.
	//
	ReplicaRegions *[]*awssecretsmanager.ReplicaRegion `field:"optional" json:"replicaRegions" yaml:"replicaRegions"`
	// The name of the secret.
	// Default: - A name is generated by CloudFormation.
	//
	SecretName *string `field:"optional" json:"secretName" yaml:"secretName"`
}

Base options for creating Credentials.

Example:

var vpc vpc

engine := rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
	Version: rds.PostgresEngineVersion_VER_15_2(),
})
myKey := kms.NewKey(this, jsii.String("MyKey"))

rds.NewDatabaseInstance(this, jsii.String("InstanceWithCustomizedSecret"), &DatabaseInstanceProps{
	Engine: Engine,
	Vpc: Vpc,
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("postgres"), &CredentialsBaseOptions{
		SecretName: jsii.String("my-cool-name"),
		EncryptionKey: myKey,
		ExcludeCharacters: jsii.String("!&*^#@()"),
		ReplicaRegions: []replicaRegion{
			&replicaRegion{
				Region: jsii.String("eu-west-1"),
			},
			&replicaRegion{
				Region: jsii.String("eu-west-2"),
			},
		},
	}),
})

type CredentialsFromUsernameOptions

type CredentialsFromUsernameOptions struct {
	// KMS encryption key to encrypt the generated secret.
	// Default: - default master key.
	//
	EncryptionKey awskms.IKey `field:"optional" json:"encryptionKey" yaml:"encryptionKey"`
	// The characters to exclude from the generated password.
	//
	// Has no effect if `password` has been provided.
	// Default: - the DatabaseSecret default exclude character set (" %+~`#$&*()|[]{}:;<>?!'/@\"\\")
	//
	ExcludeCharacters *string `field:"optional" json:"excludeCharacters" yaml:"excludeCharacters"`
	// A list of regions where to replicate this secret.
	// Default: - Secret is not replicated.
	//
	ReplicaRegions *[]*awssecretsmanager.ReplicaRegion `field:"optional" json:"replicaRegions" yaml:"replicaRegions"`
	// The name of the secret.
	// Default: - A name is generated by CloudFormation.
	//
	SecretName *string `field:"optional" json:"secretName" yaml:"secretName"`
	// Password.
	//
	// Do not put passwords in your CDK code directly.
	// Default: - a Secrets Manager generated password.
	//
	Password awscdk.SecretValue `field:"optional" json:"password" yaml:"password"`
}

Options for creating Credentials from a username.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraPostgres(&AuroraPostgresClusterEngineProps{
		Version: rds.AuroraPostgresEngineVersion_VER_15_2(),
	}),
	Credentials: rds.Credentials_FromUsername(jsii.String("adminuser"), &CredentialsFromUsernameOptions{
		Password: awscdk.SecretValue_UnsafePlainText(jsii.String("7959866cacc02c2d243ecfe177464fe6")),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		PubliclyAccessible: jsii.Boolean(false),
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*Provisioned(jsii.String("reader")),
	},
	StorageType: rds.DBClusterStorageType_AURORA_IOPT1,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	Vpc: Vpc,
})

type DBClusterStorageType added in v2.82.0

type DBClusterStorageType string

The storage type to be associated with the DB cluster.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraPostgres(&AuroraPostgresClusterEngineProps{
		Version: rds.AuroraPostgresEngineVersion_VER_15_2(),
	}),
	Credentials: rds.Credentials_FromUsername(jsii.String("adminuser"), &CredentialsFromUsernameOptions{
		Password: awscdk.SecretValue_UnsafePlainText(jsii.String("7959866cacc02c2d243ecfe177464fe6")),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		PubliclyAccessible: jsii.Boolean(false),
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*Provisioned(jsii.String("reader")),
	},
	StorageType: rds.DBClusterStorageType_AURORA_IOPT1,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	Vpc: Vpc,
})
const (
	// Storage type for Aurora DB standard clusters.
	DBClusterStorageType_AURORA DBClusterStorageType = "AURORA"
	// Storage type for Aurora DB I/O-Optimized clusters.
	DBClusterStorageType_AURORA_IOPT1 DBClusterStorageType = "AURORA_IOPT1"
)

type DatabaseCluster

type DatabaseCluster interface {
	DatabaseClusterBase
	// The endpoint to use for read/write operations.
	ClusterEndpoint() Endpoint
	// Identifier of the cluster.
	ClusterIdentifier() *string
	// Endpoint to use for load-balanced read-only operations.
	ClusterReadEndpoint() Endpoint
	// The immutable identifier for the cluster; for example: cluster-ABCD1234EFGH5678IJKL90MNOP.
	//
	// This AWS Region-unique identifier is used in things like IAM authentication policies.
	ClusterResourceIdentifier() *string
	// Access to the network connections.
	Connections() awsec2.Connections
	// The engine for this Cluster.
	//
	// Never undefined.
	Engine() IClusterEngine
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	HasServerlessInstance() *bool
	SetHasServerlessInstance(val *bool)
	// Endpoints which address each individual replica.
	InstanceEndpoints() *[]Endpoint
	// Identifiers of the replicas.
	InstanceIdentifiers() *[]*string
	// Application for multi user rotation to this cluster.
	MultiUserRotationApplication() awssecretsmanager.SecretRotationApplication
	NewCfnProps() *CfnDBClusterProps
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The secret attached to this cluster.
	Secret() awssecretsmanager.ISecret
	SecurityGroups() *[]awsec2.ISecurityGroup
	ServerlessV2MaxCapacity() *float64
	ServerlessV2MinCapacity() *float64
	// Application for single user rotation of the master password to this cluster.
	SingleUserRotationApplication() awssecretsmanager.SecretRotationApplication
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	SubnetGroup() ISubnetGroup
	// The VPC network to place the cluster in.
	Vpc() awsec2.IVpc
	// The cluster's subnets.
	VpcSubnets() *awsec2.SubnetSelection
	// Add a new db proxy to this cluster.
	AddProxy(id *string, options *DatabaseProxyOptions) DatabaseProxy
	// Adds the multi user rotation to this cluster.
	//
	// See [Alternating users rotation strategy](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets_strategies.html#rotating-secrets-two-users)
	AddRotationMultiUser(id *string, options *RotationMultiUserOptions) awssecretsmanager.SecretRotation
	// Adds the single user rotation of the master password to this cluster.
	//
	// See [Single user rotation strategy](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets_strategies.html#rotating-secrets-one-user-one-password)
	AddRotationSingleUser(options *RotationSingleUserOptions) awssecretsmanager.SecretRotation
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Renders the secret attachment target specifications.
	AsSecretAttachmentTarget() *awssecretsmanager.SecretAttachmentTargetProps
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Return the given named metric for this DBCluster.
	Metric(metricName *string, props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// This value is represented as a percentage.
	//
	// It's calculated as the value of the
	// ServerlessDatabaseCapacity metric divided by the maximum ACU value of the DB cluster.
	//
	// If this metric approaches a value of 100.0, the DB instance has scaled up as high as it can.
	// Consider increasing the maximum ACU setting for the cluster.
	MetricACUUtilization(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The percentage of CPU utilization.
	//
	// Average over 5 minutes.
	MetricCPUUtilization(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of database connections in use.
	//
	// Average over 5 minutes.
	MetricDatabaseConnections(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of deadlocks in the database per second.
	//
	// Average over 5 minutes.
	MetricDeadlocks(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of time that the instance has been running, in seconds.
	//
	// Average over 5 minutes.
	MetricEngineUptime(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available random access memory, in bytes.
	//
	// Average over 5 minutes.
	MetricFreeableMemory(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of local storage available, in bytes.
	//
	// Average over 5 minutes.
	MetricFreeLocalStorage(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput received from clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkReceiveThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput both received from and transmitted to clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput sent to clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkTransmitThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// As a cluster-level metric, it represents the average of the ServerlessDatabaseCapacity values of all the Aurora Serverless v2 DB instances in the cluster.
	MetricServerlessDatabaseCapacity(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The total amount of backup storage in bytes consumed by all Aurora snapshots outside its backup retention window.
	//
	// Average over 5 minutes.
	MetricSnapshotStorageUsed(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The total amount of backup storage in bytes for which you are billed.
	//
	// Average over 5 minutes.
	MetricTotalBackupStorageBilled(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of storage used by your Aurora DB instance, in bytes.
	//
	// Average over 5 minutes.
	MetricVolumeBytesUsed(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of billed read I/O operations from a cluster volume, reported at 5-minute intervals.
	//
	// Average over 5 minutes.
	MetricVolumeReadIOPs(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of write disk I/O operations to the cluster volume, reported at 5-minute intervals.
	//
	// Average over 5 minutes.
	MetricVolumeWriteIOPs(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// Returns a string representation of this construct.
	ToString() *string
}

Create a clustered database with a given number of instances.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_R6G, ec2.InstanceSize_XLARGE4),
	}),
	ServerlessV2MinCapacity: jsii.Number(6.5),
	ServerlessV2MaxCapacity: jsii.Number(64),
	Readers: []iClusterInstance{
		rds.ClusterInstance_ServerlessV2(jsii.String("reader1"), &ServerlessV2ClusterInstanceProps{
			ScaleWithWriter: jsii.Boolean(true),
		}),
		rds.ClusterInstance_*ServerlessV2(jsii.String("reader2")),
	},
	Vpc: Vpc,
})

func NewDatabaseCluster

func NewDatabaseCluster(scope constructs.Construct, id *string, props *DatabaseClusterProps) DatabaseCluster

type DatabaseClusterAttributes

type DatabaseClusterAttributes struct {
	// Identifier for the cluster.
	ClusterIdentifier *string `field:"required" json:"clusterIdentifier" yaml:"clusterIdentifier"`
	// Cluster endpoint address.
	// Default: - no endpoint address.
	//
	ClusterEndpointAddress *string `field:"optional" json:"clusterEndpointAddress" yaml:"clusterEndpointAddress"`
	// The immutable identifier for the cluster; for example: cluster-ABCD1234EFGH5678IJKL90MNOP.
	//
	// This AWS Region-unique identifier is used to grant access to the cluster.
	// Default: none.
	//
	ClusterResourceIdentifier *string `field:"optional" json:"clusterResourceIdentifier" yaml:"clusterResourceIdentifier"`
	// The engine of the existing Cluster.
	// Default: - the imported Cluster's engine is unknown.
	//
	Engine IClusterEngine `field:"optional" json:"engine" yaml:"engine"`
	// Endpoint addresses of individual instances.
	// Default: - no instance endpoints.
	//
	InstanceEndpointAddresses *[]*string `field:"optional" json:"instanceEndpointAddresses" yaml:"instanceEndpointAddresses"`
	// Identifier for the instances.
	// Default: - no instance identifiers.
	//
	InstanceIdentifiers *[]*string `field:"optional" json:"instanceIdentifiers" yaml:"instanceIdentifiers"`
	// The database port.
	// Default: - none.
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// Reader endpoint address.
	// Default: - no reader address.
	//
	ReaderEndpointAddress *string `field:"optional" json:"readerEndpointAddress" yaml:"readerEndpointAddress"`
	// The security groups of the database cluster.
	// Default: - no security groups.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
}

Properties that describe an existing cluster instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var clusterEngine iClusterEngine
var securityGroup securityGroup

databaseClusterAttributes := &DatabaseClusterAttributes{
	ClusterIdentifier: jsii.String("clusterIdentifier"),

	// the properties below are optional
	ClusterEndpointAddress: jsii.String("clusterEndpointAddress"),
	ClusterResourceIdentifier: jsii.String("clusterResourceIdentifier"),
	Engine: clusterEngine,
	InstanceEndpointAddresses: []*string{
		jsii.String("instanceEndpointAddresses"),
	},
	InstanceIdentifiers: []*string{
		jsii.String("instanceIdentifiers"),
	},
	Port: jsii.Number(123),
	ReaderEndpointAddress: jsii.String("readerEndpointAddress"),
	SecurityGroups: []iSecurityGroup{
		securityGroup,
	},
}

type DatabaseClusterBase

type DatabaseClusterBase interface {
	awscdk.Resource
	IDatabaseCluster
	// The endpoint to use for read/write operations.
	ClusterEndpoint() Endpoint
	// Identifier of the cluster.
	ClusterIdentifier() *string
	// Endpoint to use for load-balanced read-only operations.
	ClusterReadEndpoint() Endpoint
	// The immutable identifier for the cluster; for example: cluster-ABCD1234EFGH5678IJKL90MNOP.
	//
	// This AWS Region-unique identifier is used in things like IAM authentication policies.
	ClusterResourceIdentifier() *string
	// Access to the network connections.
	Connections() awsec2.Connections
	// The engine of this Cluster.
	//
	// May be not known for imported Clusters if it wasn't provided explicitly.
	Engine() IClusterEngine
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// Endpoints which address each individual replica.
	InstanceEndpoints() *[]Endpoint
	// Identifiers of the replicas.
	InstanceIdentifiers() *[]*string
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// Add a new db proxy to this cluster.
	AddProxy(id *string, options *DatabaseProxyOptions) DatabaseProxy
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Renders the secret attachment target specifications.
	AsSecretAttachmentTarget() *awssecretsmanager.SecretAttachmentTargetProps
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Return the given named metric for this DBCluster.
	Metric(metricName *string, props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The percentage of CPU utilization.
	//
	// Average over 5 minutes.
	MetricCPUUtilization(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of database connections in use.
	//
	// Average over 5 minutes.
	MetricDatabaseConnections(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of deadlocks in the database per second.
	//
	// Average over 5 minutes.
	MetricDeadlocks(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of time that the instance has been running, in seconds.
	//
	// Average over 5 minutes.
	MetricEngineUptime(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available random access memory, in bytes.
	//
	// Average over 5 minutes.
	MetricFreeableMemory(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of local storage available, in bytes.
	//
	// Average over 5 minutes.
	MetricFreeLocalStorage(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput received from clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkReceiveThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput both received from and transmitted to clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput sent to clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkTransmitThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The total amount of backup storage in bytes consumed by all Aurora snapshots outside its backup retention window.
	//
	// Average over 5 minutes.
	MetricSnapshotStorageUsed(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The total amount of backup storage in bytes for which you are billed.
	//
	// Average over 5 minutes.
	MetricTotalBackupStorageBilled(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of storage used by your Aurora DB instance, in bytes.
	//
	// Average over 5 minutes.
	MetricVolumeBytesUsed(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of billed read I/O operations from a cluster volume, reported at 5-minute intervals.
	//
	// Average over 5 minutes.
	MetricVolumeReadIOPs(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of write disk I/O operations to the cluster volume, reported at 5-minute intervals.
	//
	// Average over 5 minutes.
	MetricVolumeWriteIOPs(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// Returns a string representation of this construct.
	ToString() *string
}

A new or imported clustered database.

type DatabaseClusterEngine

type DatabaseClusterEngine interface {
}

A database cluster engine.

Provides mapping to the serverless application used for secret rotation.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("clusteradmin")),
	 // Optional - will default to 'admin' username and generated password
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		PubliclyAccessible: jsii.Boolean(false),
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*Provisioned(jsii.String("reader1"), &ProvisionedClusterInstanceProps{
			PromotionTier: jsii.Number(1),
		}),
		rds.ClusterInstance_ServerlessV2(jsii.String("reader2")),
	},
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	Vpc: Vpc,
})

func NewDatabaseClusterEngine

func NewDatabaseClusterEngine() DatabaseClusterEngine

type DatabaseClusterFromSnapshot

type DatabaseClusterFromSnapshot interface {
	DatabaseClusterBase
	// The endpoint to use for read/write operations.
	ClusterEndpoint() Endpoint
	// Identifier of the cluster.
	ClusterIdentifier() *string
	// Endpoint to use for load-balanced read-only operations.
	ClusterReadEndpoint() Endpoint
	// The immutable identifier for the cluster; for example: cluster-ABCD1234EFGH5678IJKL90MNOP.
	//
	// This AWS Region-unique identifier is used in things like IAM authentication policies.
	ClusterResourceIdentifier() *string
	// Access to the network connections.
	Connections() awsec2.Connections
	// The engine for this Cluster.
	//
	// Never undefined.
	Engine() IClusterEngine
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	HasServerlessInstance() *bool
	SetHasServerlessInstance(val *bool)
	// Endpoints which address each individual replica.
	InstanceEndpoints() *[]Endpoint
	// Identifiers of the replicas.
	InstanceIdentifiers() *[]*string
	// Application for multi user rotation to this cluster.
	MultiUserRotationApplication() awssecretsmanager.SecretRotationApplication
	NewCfnProps() *CfnDBClusterProps
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The secret attached to this cluster.
	Secret() awssecretsmanager.ISecret
	SecurityGroups() *[]awsec2.ISecurityGroup
	ServerlessV2MaxCapacity() *float64
	ServerlessV2MinCapacity() *float64
	// Application for single user rotation of the master password to this cluster.
	SingleUserRotationApplication() awssecretsmanager.SecretRotationApplication
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	SubnetGroup() ISubnetGroup
	// The VPC network to place the cluster in.
	Vpc() awsec2.IVpc
	// The cluster's subnets.
	VpcSubnets() *awsec2.SubnetSelection
	// Add a new db proxy to this cluster.
	AddProxy(id *string, options *DatabaseProxyOptions) DatabaseProxy
	// Adds the multi user rotation to this cluster.
	//
	// See [Alternating users rotation strategy](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets_strategies.html#rotating-secrets-two-users)
	AddRotationMultiUser(id *string, options *RotationMultiUserOptions) awssecretsmanager.SecretRotation
	// Adds the single user rotation of the master password to this cluster.
	//
	// See [Single user rotation strategy](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets_strategies.html#rotating-secrets-one-user-one-password)
	AddRotationSingleUser(options *RotationSingleUserOptions) awssecretsmanager.SecretRotation
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Renders the secret attachment target specifications.
	AsSecretAttachmentTarget() *awssecretsmanager.SecretAttachmentTargetProps
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Return the given named metric for this DBCluster.
	Metric(metricName *string, props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// This value is represented as a percentage.
	//
	// It's calculated as the value of the
	// ServerlessDatabaseCapacity metric divided by the maximum ACU value of the DB cluster.
	//
	// If this metric approaches a value of 100.0, the DB instance has scaled up as high as it can.
	// Consider increasing the maximum ACU setting for the cluster.
	MetricACUUtilization(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The percentage of CPU utilization.
	//
	// Average over 5 minutes.
	MetricCPUUtilization(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of database connections in use.
	//
	// Average over 5 minutes.
	MetricDatabaseConnections(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of deadlocks in the database per second.
	//
	// Average over 5 minutes.
	MetricDeadlocks(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of time that the instance has been running, in seconds.
	//
	// Average over 5 minutes.
	MetricEngineUptime(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available random access memory, in bytes.
	//
	// Average over 5 minutes.
	MetricFreeableMemory(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of local storage available, in bytes.
	//
	// Average over 5 minutes.
	MetricFreeLocalStorage(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput received from clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkReceiveThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput both received from and transmitted to clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput sent to clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkTransmitThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// As a cluster-level metric, it represents the average of the ServerlessDatabaseCapacity values of all the Aurora Serverless v2 DB instances in the cluster.
	MetricServerlessDatabaseCapacity(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The total amount of backup storage in bytes consumed by all Aurora snapshots outside its backup retention window.
	//
	// Average over 5 minutes.
	MetricSnapshotStorageUsed(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The total amount of backup storage in bytes for which you are billed.
	//
	// Average over 5 minutes.
	MetricTotalBackupStorageBilled(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of storage used by your Aurora DB instance, in bytes.
	//
	// Average over 5 minutes.
	MetricVolumeBytesUsed(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of billed read I/O operations from a cluster volume, reported at 5-minute intervals.
	//
	// Average over 5 minutes.
	MetricVolumeReadIOPs(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of write disk I/O operations to the cluster volume, reported at 5-minute intervals.
	//
	// Average over 5 minutes.
	MetricVolumeWriteIOPs(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// Returns a string representation of this construct.
	ToString() *string
}

A database cluster restored from a snapshot.

Example:

var vpc vpc

rds.NewDatabaseClusterFromSnapshot(this, jsii.String("Database"), &DatabaseClusterFromSnapshotProps{
	Engine: rds.DatabaseClusterEngine_Aurora(&AuroraClusterEngineProps{
		Version: rds.AuroraEngineVersion_VER_1_22_2(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Vpc: Vpc,
	SnapshotIdentifier: jsii.String("mySnapshot"),
})

func NewDatabaseClusterFromSnapshot

func NewDatabaseClusterFromSnapshot(scope constructs.Construct, id *string, props *DatabaseClusterFromSnapshotProps) DatabaseClusterFromSnapshot

type DatabaseClusterFromSnapshotProps

type DatabaseClusterFromSnapshotProps struct {
	// What kind of database to start.
	Engine IClusterEngine `field:"required" json:"engine" yaml:"engine"`
	// The identifier for the DB instance snapshot or DB cluster snapshot to restore from.
	//
	// You can use either the name or the Amazon Resource Name (ARN) to specify a DB cluster snapshot.
	// However, you can use only the ARN to specify a DB instance snapshot.
	SnapshotIdentifier *string `field:"required" json:"snapshotIdentifier" yaml:"snapshotIdentifier"`
	// The number of seconds to set a cluster's target backtrack window to.
	//
	// This feature is only supported by the Aurora MySQL database engine and
	// cannot be enabled on existing clusters.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Managing.Backtrack.html
	//
	// Default: 0 seconds (no backtrack).
	//
	BacktrackWindow awscdk.Duration `field:"optional" json:"backtrackWindow" yaml:"backtrackWindow"`
	// Backup settings.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow
	//
	// Default: - Backup retention period for automated backups is 1 day.
	// Backup preferred window is set to a 30-minute window selected at random from an
	// 8-hour block of time for each AWS Region, occurring on a random day of the week.
	//
	Backup *BackupProps `field:"optional" json:"backup" yaml:"backup"`
	// The list of log types that need to be enabled for exporting to CloudWatch Logs.
	// Default: - no log exports.
	//
	CloudwatchLogsExports *[]*string `field:"optional" json:"cloudwatchLogsExports" yaml:"cloudwatchLogsExports"`
	// The number of days log events are kept in CloudWatch Logs.
	//
	// When updating
	// this property, unsetting it doesn't remove the log retention policy. To
	// remove the retention policy, set the value to `Infinity`.
	// Default: - logs never expire.
	//
	CloudwatchLogsRetention awslogs.RetentionDays `field:"optional" json:"cloudwatchLogsRetention" yaml:"cloudwatchLogsRetention"`
	// The IAM role for the Lambda function associated with the custom resource that sets the retention policy.
	// Default: - a new role is created.
	//
	CloudwatchLogsRetentionRole awsiam.IRole `field:"optional" json:"cloudwatchLogsRetentionRole" yaml:"cloudwatchLogsRetentionRole"`
	// An optional identifier for the cluster.
	// Default: - A name is automatically generated.
	//
	ClusterIdentifier *string `field:"optional" json:"clusterIdentifier" yaml:"clusterIdentifier"`
	// Whether to copy tags to the snapshot when a snapshot is created.
	// Default: - true.
	//
	CopyTagsToSnapshot *bool `field:"optional" json:"copyTagsToSnapshot" yaml:"copyTagsToSnapshot"`
	// Credentials for the administrative user.
	//
	// Note - using this prop only works with `Credentials.fromPassword()` with the
	// username of the snapshot, `Credentials.fromUsername()` with the username and
	// password of the snapshot or `Credentials.fromSecret()` with a secret containing
	// the username and password of the snapshot.
	// Default: - A username of 'admin' (or 'postgres' for PostgreSQL) and SecretsManager-generated password
	// that **will not be applied** to the cluster, use `snapshotCredentials` for the correct behavior.
	//
	// Deprecated: use `snapshotCredentials` which allows to generate a new password.
	Credentials Credentials `field:"optional" json:"credentials" yaml:"credentials"`
	// Name of a database which is automatically created inside the cluster.
	// Default: - Database is not created in cluster.
	//
	DefaultDatabaseName *string `field:"optional" json:"defaultDatabaseName" yaml:"defaultDatabaseName"`
	// Indicates whether the DB cluster should have deletion protection enabled.
	// Default: - true if `removalPolicy` is RETAIN, `undefined` otherwise, which will not enable deletion protection.
	// To disable deletion protection after it has been enabled, you must explicitly set this value to `false`.
	//
	DeletionProtection *bool `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// Whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts.
	// Default: false.
	//
	IamAuthentication *bool `field:"optional" json:"iamAuthentication" yaml:"iamAuthentication"`
	// Base identifier for instances.
	//
	// Every replica is named by appending the replica number to this string, 1-based.
	// Default: - clusterIdentifier is used with the word "Instance" appended.
	// If clusterIdentifier is not provided, the identifier is automatically generated.
	//
	InstanceIdentifierBase *string `field:"optional" json:"instanceIdentifierBase" yaml:"instanceIdentifierBase"`
	// Settings for the individual instances that are launched.
	// Deprecated: - use writer and readers instead.
	InstanceProps *InstanceProps `field:"optional" json:"instanceProps" yaml:"instanceProps"`
	// How many replicas/instances to create.
	//
	// Has to be at least 1.
	// Default: 2.
	//
	// Deprecated: - use writer and readers instead.
	Instances *float64 `field:"optional" json:"instances" yaml:"instances"`
	// The ordering of updates for instances.
	// Default: InstanceUpdateBehaviour.BULK
	//
	InstanceUpdateBehaviour InstanceUpdateBehaviour `field:"optional" json:"instanceUpdateBehaviour" yaml:"instanceUpdateBehaviour"`
	// The interval, in seconds, between points when Amazon RDS collects enhanced monitoring metrics for the DB instances.
	// Default: no enhanced monitoring.
	//
	MonitoringInterval awscdk.Duration `field:"optional" json:"monitoringInterval" yaml:"monitoringInterval"`
	// Role that will be used to manage DB instances monitoring.
	// Default: - A role is automatically created for you.
	//
	MonitoringRole awsiam.IRole `field:"optional" json:"monitoringRole" yaml:"monitoringRole"`
	// The network type of the DB instance.
	// Default: - IPV4.
	//
	NetworkType NetworkType `field:"optional" json:"networkType" yaml:"networkType"`
	// Additional parameters to pass to the database engine.
	// Default: - No parameter group.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The parameters in the DBClusterParameterGroup to create automatically.
	//
	// You can only specify parameterGroup or parameters but not both.
	// You need to use a versioned engine to auto-generate a DBClusterParameterGroup.
	// Default: - None.
	//
	Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"`
	// What port to listen on.
	// Default: - The default for the engine is used.
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// A preferred maintenance window day/time range. Should be specified as a range ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).
	//
	// Example: 'Sun:23:45-Mon:00:15'.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance
	//
	// Default: - 30-minute window selected at random from an 8-hour block of time for
	// each AWS Region, occurring on a random day of the week.
	//
	PreferredMaintenanceWindow *string `field:"optional" json:"preferredMaintenanceWindow" yaml:"preferredMaintenanceWindow"`
	// A list of instances to create as cluster reader instances.
	// Default: - no readers are created. The cluster will have a single writer/reader
	//
	Readers *[]IClusterInstance `field:"optional" json:"readers" yaml:"readers"`
	// The removal policy to apply when the cluster and its instances are removed from the stack or replaced during an update.
	// Default: - RemovalPolicy.SNAPSHOT (remove the cluster and instances, but retain a snapshot of the data)
	//
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// S3 buckets that you want to load data into. This feature is only supported by the Aurora database engine.
	//
	// This property must not be used if `s3ExportRole` is used.
	//
	// For MySQL:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-s3-export.html
	//
	// Default: - None.
	//
	S3ExportBuckets *[]awss3.IBucket `field:"optional" json:"s3ExportBuckets" yaml:"s3ExportBuckets"`
	// Role that will be associated with this DB cluster to enable S3 export.
	//
	// This feature is only supported by the Aurora database engine.
	//
	// This property must not be used if `s3ExportBuckets` is used.
	//
	// For MySQL:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-s3-export.html
	//
	// Default: - New role is created if `s3ExportBuckets` is set, no role is defined otherwise.
	//
	S3ExportRole awsiam.IRole `field:"optional" json:"s3ExportRole" yaml:"s3ExportRole"`
	// S3 buckets that you want to load data from. This feature is only supported by the Aurora database engine.
	//
	// This property must not be used if `s3ImportRole` is used.
	//
	// For MySQL:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Migrating.html
	//
	// Default: - None.
	//
	S3ImportBuckets *[]awss3.IBucket `field:"optional" json:"s3ImportBuckets" yaml:"s3ImportBuckets"`
	// Role that will be associated with this DB cluster to enable S3 import.
	//
	// This feature is only supported by the Aurora database engine.
	//
	// This property must not be used if `s3ImportBuckets` is used.
	//
	// For MySQL:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Migrating.html
	//
	// Default: - New role is created if `s3ImportBuckets` is set, no role is defined otherwise.
	//
	S3ImportRole awsiam.IRole `field:"optional" json:"s3ImportRole" yaml:"s3ImportRole"`
	// Security group.
	// Default: a new security group is created.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// The maximum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster.
	//
	// You can specify ACU values in half-step increments, such as 40, 40.5, 41, and so on.
	// The largest value that you can use is 128 (256GB).
	//
	// The maximum capacity must be higher than 0.5 ACUs.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html#aurora-serverless-v2.max_capacity_considerations
	//
	// Default: 2.
	//
	ServerlessV2MaxCapacity *float64 `field:"optional" json:"serverlessV2MaxCapacity" yaml:"serverlessV2MaxCapacity"`
	// The minimum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster.
	//
	// You can specify ACU values in half-step increments, such as 8, 8.5, 9, and so on.
	// The smallest value that you can use is 0.5.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html#aurora-serverless-v2.max_capacity_considerations
	//
	// Default: 0.5
	//
	ServerlessV2MinCapacity *float64 `field:"optional" json:"serverlessV2MinCapacity" yaml:"serverlessV2MinCapacity"`
	// Master user credentials.
	//
	// Note - It is not possible to change the master username for a snapshot;
	// however, it is possible to provide (or generate) a new password.
	// Default: - The existing username and password from the snapshot will be used.
	//
	SnapshotCredentials SnapshotCredentials `field:"optional" json:"snapshotCredentials" yaml:"snapshotCredentials"`
	// Whether to enable storage encryption.
	// Default: - true if storageEncryptionKey is provided, false otherwise.
	//
	StorageEncrypted *bool `field:"optional" json:"storageEncrypted" yaml:"storageEncrypted"`
	// The KMS key for storage encryption.
	//
	// If specified, `storageEncrypted` will be set to `true`.
	// Default: - if storageEncrypted is true then the default master key, no key otherwise.
	//
	StorageEncryptionKey awskms.IKey `field:"optional" json:"storageEncryptionKey" yaml:"storageEncryptionKey"`
	// The storage type to be associated with the DB cluster.
	// Default: - DBClusterStorageType.AURORA_IOPT1
	//
	StorageType DBClusterStorageType `field:"optional" json:"storageType" yaml:"storageType"`
	// Existing subnet group for the cluster.
	// Default: - a new subnet group will be created.
	//
	SubnetGroup ISubnetGroup `field:"optional" json:"subnetGroup" yaml:"subnetGroup"`
	// What subnets to run the RDS instances in.
	//
	// Must be at least 2 subnets in two different AZs.
	Vpc awsec2.IVpc `field:"optional" json:"vpc" yaml:"vpc"`
	// Where to place the instances within the VPC.
	// Default: - the Vpc default strategy if not specified.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
	// The instance to use for the cluster writer.
	// Default: required if instanceProps is not provided.
	//
	Writer IClusterInstance `field:"optional" json:"writer" yaml:"writer"`
}

Properties for “DatabaseClusterFromSnapshot“.

Example:

var vpc vpc

rds.NewDatabaseClusterFromSnapshot(this, jsii.String("Database"), &DatabaseClusterFromSnapshotProps{
	Engine: rds.DatabaseClusterEngine_Aurora(&AuroraClusterEngineProps{
		Version: rds.AuroraEngineVersion_VER_1_22_2(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Vpc: Vpc,
	SnapshotIdentifier: jsii.String("mySnapshot"),
})

type DatabaseClusterProps

type DatabaseClusterProps struct {
	// What kind of database to start.
	Engine IClusterEngine `field:"required" json:"engine" yaml:"engine"`
	// The number of seconds to set a cluster's target backtrack window to.
	//
	// This feature is only supported by the Aurora MySQL database engine and
	// cannot be enabled on existing clusters.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Managing.Backtrack.html
	//
	// Default: 0 seconds (no backtrack).
	//
	BacktrackWindow awscdk.Duration `field:"optional" json:"backtrackWindow" yaml:"backtrackWindow"`
	// Backup settings.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow
	//
	// Default: - Backup retention period for automated backups is 1 day.
	// Backup preferred window is set to a 30-minute window selected at random from an
	// 8-hour block of time for each AWS Region, occurring on a random day of the week.
	//
	Backup *BackupProps `field:"optional" json:"backup" yaml:"backup"`
	// The list of log types that need to be enabled for exporting to CloudWatch Logs.
	// Default: - no log exports.
	//
	CloudwatchLogsExports *[]*string `field:"optional" json:"cloudwatchLogsExports" yaml:"cloudwatchLogsExports"`
	// The number of days log events are kept in CloudWatch Logs.
	//
	// When updating
	// this property, unsetting it doesn't remove the log retention policy. To
	// remove the retention policy, set the value to `Infinity`.
	// Default: - logs never expire.
	//
	CloudwatchLogsRetention awslogs.RetentionDays `field:"optional" json:"cloudwatchLogsRetention" yaml:"cloudwatchLogsRetention"`
	// The IAM role for the Lambda function associated with the custom resource that sets the retention policy.
	// Default: - a new role is created.
	//
	CloudwatchLogsRetentionRole awsiam.IRole `field:"optional" json:"cloudwatchLogsRetentionRole" yaml:"cloudwatchLogsRetentionRole"`
	// An optional identifier for the cluster.
	// Default: - A name is automatically generated.
	//
	ClusterIdentifier *string `field:"optional" json:"clusterIdentifier" yaml:"clusterIdentifier"`
	// Whether to copy tags to the snapshot when a snapshot is created.
	// Default: - true.
	//
	CopyTagsToSnapshot *bool `field:"optional" json:"copyTagsToSnapshot" yaml:"copyTagsToSnapshot"`
	// Credentials for the administrative user.
	// Default: - A username of 'admin' (or 'postgres' for PostgreSQL) and SecretsManager-generated password.
	//
	Credentials Credentials `field:"optional" json:"credentials" yaml:"credentials"`
	// Name of a database which is automatically created inside the cluster.
	// Default: - Database is not created in cluster.
	//
	DefaultDatabaseName *string `field:"optional" json:"defaultDatabaseName" yaml:"defaultDatabaseName"`
	// Indicates whether the DB cluster should have deletion protection enabled.
	// Default: - true if `removalPolicy` is RETAIN, `undefined` otherwise, which will not enable deletion protection.
	// To disable deletion protection after it has been enabled, you must explicitly set this value to `false`.
	//
	DeletionProtection *bool `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// Whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts.
	// Default: false.
	//
	IamAuthentication *bool `field:"optional" json:"iamAuthentication" yaml:"iamAuthentication"`
	// Base identifier for instances.
	//
	// Every replica is named by appending the replica number to this string, 1-based.
	// Default: - clusterIdentifier is used with the word "Instance" appended.
	// If clusterIdentifier is not provided, the identifier is automatically generated.
	//
	InstanceIdentifierBase *string `field:"optional" json:"instanceIdentifierBase" yaml:"instanceIdentifierBase"`
	// Settings for the individual instances that are launched.
	// Deprecated: - use writer and readers instead.
	InstanceProps *InstanceProps `field:"optional" json:"instanceProps" yaml:"instanceProps"`
	// How many replicas/instances to create.
	//
	// Has to be at least 1.
	// Default: 2.
	//
	// Deprecated: - use writer and readers instead.
	Instances *float64 `field:"optional" json:"instances" yaml:"instances"`
	// The ordering of updates for instances.
	// Default: InstanceUpdateBehaviour.BULK
	//
	InstanceUpdateBehaviour InstanceUpdateBehaviour `field:"optional" json:"instanceUpdateBehaviour" yaml:"instanceUpdateBehaviour"`
	// The interval, in seconds, between points when Amazon RDS collects enhanced monitoring metrics for the DB instances.
	// Default: no enhanced monitoring.
	//
	MonitoringInterval awscdk.Duration `field:"optional" json:"monitoringInterval" yaml:"monitoringInterval"`
	// Role that will be used to manage DB instances monitoring.
	// Default: - A role is automatically created for you.
	//
	MonitoringRole awsiam.IRole `field:"optional" json:"monitoringRole" yaml:"monitoringRole"`
	// The network type of the DB instance.
	// Default: - IPV4.
	//
	NetworkType NetworkType `field:"optional" json:"networkType" yaml:"networkType"`
	// Additional parameters to pass to the database engine.
	// Default: - No parameter group.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The parameters in the DBClusterParameterGroup to create automatically.
	//
	// You can only specify parameterGroup or parameters but not both.
	// You need to use a versioned engine to auto-generate a DBClusterParameterGroup.
	// Default: - None.
	//
	Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"`
	// What port to listen on.
	// Default: - The default for the engine is used.
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// A preferred maintenance window day/time range. Should be specified as a range ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).
	//
	// Example: 'Sun:23:45-Mon:00:15'.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance
	//
	// Default: - 30-minute window selected at random from an 8-hour block of time for
	// each AWS Region, occurring on a random day of the week.
	//
	PreferredMaintenanceWindow *string `field:"optional" json:"preferredMaintenanceWindow" yaml:"preferredMaintenanceWindow"`
	// A list of instances to create as cluster reader instances.
	// Default: - no readers are created. The cluster will have a single writer/reader
	//
	Readers *[]IClusterInstance `field:"optional" json:"readers" yaml:"readers"`
	// The removal policy to apply when the cluster and its instances are removed from the stack or replaced during an update.
	// Default: - RemovalPolicy.SNAPSHOT (remove the cluster and instances, but retain a snapshot of the data)
	//
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// S3 buckets that you want to load data into. This feature is only supported by the Aurora database engine.
	//
	// This property must not be used if `s3ExportRole` is used.
	//
	// For MySQL:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-s3-export.html
	//
	// Default: - None.
	//
	S3ExportBuckets *[]awss3.IBucket `field:"optional" json:"s3ExportBuckets" yaml:"s3ExportBuckets"`
	// Role that will be associated with this DB cluster to enable S3 export.
	//
	// This feature is only supported by the Aurora database engine.
	//
	// This property must not be used if `s3ExportBuckets` is used.
	//
	// For MySQL:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-s3-export.html
	//
	// Default: - New role is created if `s3ExportBuckets` is set, no role is defined otherwise.
	//
	S3ExportRole awsiam.IRole `field:"optional" json:"s3ExportRole" yaml:"s3ExportRole"`
	// S3 buckets that you want to load data from. This feature is only supported by the Aurora database engine.
	//
	// This property must not be used if `s3ImportRole` is used.
	//
	// For MySQL:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Migrating.html
	//
	// Default: - None.
	//
	S3ImportBuckets *[]awss3.IBucket `field:"optional" json:"s3ImportBuckets" yaml:"s3ImportBuckets"`
	// Role that will be associated with this DB cluster to enable S3 import.
	//
	// This feature is only supported by the Aurora database engine.
	//
	// This property must not be used if `s3ImportBuckets` is used.
	//
	// For MySQL:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Migrating.html
	//
	// Default: - New role is created if `s3ImportBuckets` is set, no role is defined otherwise.
	//
	S3ImportRole awsiam.IRole `field:"optional" json:"s3ImportRole" yaml:"s3ImportRole"`
	// Security group.
	// Default: a new security group is created.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// The maximum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster.
	//
	// You can specify ACU values in half-step increments, such as 40, 40.5, 41, and so on.
	// The largest value that you can use is 128 (256GB).
	//
	// The maximum capacity must be higher than 0.5 ACUs.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html#aurora-serverless-v2.max_capacity_considerations
	//
	// Default: 2.
	//
	ServerlessV2MaxCapacity *float64 `field:"optional" json:"serverlessV2MaxCapacity" yaml:"serverlessV2MaxCapacity"`
	// The minimum number of Aurora capacity units (ACUs) for a DB instance in an Aurora Serverless v2 cluster.
	//
	// You can specify ACU values in half-step increments, such as 8, 8.5, 9, and so on.
	// The smallest value that you can use is 0.5.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html#aurora-serverless-v2.max_capacity_considerations
	//
	// Default: 0.5
	//
	ServerlessV2MinCapacity *float64 `field:"optional" json:"serverlessV2MinCapacity" yaml:"serverlessV2MinCapacity"`
	// Whether to enable storage encryption.
	// Default: - true if storageEncryptionKey is provided, false otherwise.
	//
	StorageEncrypted *bool `field:"optional" json:"storageEncrypted" yaml:"storageEncrypted"`
	// The KMS key for storage encryption.
	//
	// If specified, `storageEncrypted` will be set to `true`.
	// Default: - if storageEncrypted is true then the default master key, no key otherwise.
	//
	StorageEncryptionKey awskms.IKey `field:"optional" json:"storageEncryptionKey" yaml:"storageEncryptionKey"`
	// The storage type to be associated with the DB cluster.
	// Default: - DBClusterStorageType.AURORA_IOPT1
	//
	StorageType DBClusterStorageType `field:"optional" json:"storageType" yaml:"storageType"`
	// Existing subnet group for the cluster.
	// Default: - a new subnet group will be created.
	//
	SubnetGroup ISubnetGroup `field:"optional" json:"subnetGroup" yaml:"subnetGroup"`
	// What subnets to run the RDS instances in.
	//
	// Must be at least 2 subnets in two different AZs.
	Vpc awsec2.IVpc `field:"optional" json:"vpc" yaml:"vpc"`
	// Where to place the instances within the VPC.
	// Default: - the Vpc default strategy if not specified.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
	// The instance to use for the cluster writer.
	// Default: required if instanceProps is not provided.
	//
	Writer IClusterInstance `field:"optional" json:"writer" yaml:"writer"`
}

Properties for a new database cluster.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_R6G, ec2.InstanceSize_XLARGE4),
	}),
	ServerlessV2MinCapacity: jsii.Number(6.5),
	ServerlessV2MaxCapacity: jsii.Number(64),
	Readers: []iClusterInstance{
		rds.ClusterInstance_ServerlessV2(jsii.String("reader1"), &ServerlessV2ClusterInstanceProps{
			ScaleWithWriter: jsii.Boolean(true),
		}),
		rds.ClusterInstance_*ServerlessV2(jsii.String("reader2")),
	},
	Vpc: Vpc,
})

type DatabaseInstance

type DatabaseInstance interface {
	DatabaseInstanceBase
	IDatabaseInstance
	// Access to network connections.
	Connections() awsec2.Connections
	// The instance endpoint address.
	DbInstanceEndpointAddress() *string
	// The instance endpoint port.
	DbInstanceEndpointPort() *string
	EnableIamAuthentication() *bool
	SetEnableIamAuthentication(val *bool)
	// The engine of this database Instance.
	//
	// May be not known for imported Instances if it wasn't provided explicitly,
	// or for read replicas.
	Engine() IInstanceEngine
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The instance arn.
	InstanceArn() *string
	// The instance endpoint.
	InstanceEndpoint() Endpoint
	// The instance identifier.
	InstanceIdentifier() *string
	// The AWS Region-unique, immutable identifier for the DB instance.
	//
	// This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB instance is accessed.
	InstanceResourceId() *string
	InstanceType() awsec2.InstanceType
	NewCfnProps() *CfnDBInstanceProps
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The AWS Secrets Manager secret attached to the instance.
	Secret() awssecretsmanager.ISecret
	SourceCfnProps() *CfnDBInstanceProps
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// The VPC where this database instance is deployed.
	Vpc() awsec2.IVpc
	VpcPlacement() *awsec2.SubnetSelection
	// Add a new db proxy to this instance.
	AddProxy(id *string, options *DatabaseProxyOptions) DatabaseProxy
	// Adds the multi user rotation to this instance.
	AddRotationMultiUser(id *string, options *RotationMultiUserOptions) awssecretsmanager.SecretRotation
	// Adds the single user rotation of the master password to this instance.
	AddRotationSingleUser(options *RotationSingleUserOptions) awssecretsmanager.SecretRotation
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Renders the secret attachment target specifications.
	AsSecretAttachmentTarget() *awssecretsmanager.SecretAttachmentTargetProps
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Grant the given identity connection access to the database.
	GrantConnect(grantee awsiam.IGrantable, dbUser *string) awsiam.Grant
	// Return the given named metric for this DBInstance.
	Metric(metricName *string, props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The percentage of CPU utilization.
	//
	// Average over 5 minutes.
	MetricCPUUtilization(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of database connections in use.
	//
	// Average over 5 minutes.
	MetricDatabaseConnections(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available random access memory.
	//
	// Average over 5 minutes.
	MetricFreeableMemory(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available storage space.
	//
	// Average over 5 minutes.
	MetricFreeStorageSpace(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of disk write I/O operations per second.
	//
	// Average over 5 minutes.
	MetricReadIOPS(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of disk read I/O operations per second.
	//
	// Average over 5 minutes.
	MetricWriteIOPS(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// Defines a CloudWatch event rule which triggers for instance events.
	//
	// Use
	// `rule.addEventPattern(pattern)` to specify a filter.
	OnEvent(id *string, options *awsevents.OnEventOptions) awsevents.Rule
	SetLogRetention()
	// Returns a string representation of this construct.
	ToString() *string
}

A database instance.

Example:

var vpc iVpc

instance1 := rds.NewDatabaseInstance(this, jsii.String("PostgresInstance1"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_POSTGRES(),
	// Generate the secret with admin username `postgres` and random password
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("postgres")),
	Vpc: Vpc,
})
// Templated secret with username and password fields
templatedSecret := secretsmanager.NewSecret(this, jsii.String("TemplatedSecret"), &SecretProps{
	GenerateSecretString: &SecretStringGenerator{
		SecretStringTemplate: jSON.stringify(map[string]*string{
			"username": jsii.String("postgres"),
		}),
		GenerateStringKey: jsii.String("password"),
		ExcludeCharacters: jsii.String("/@\""),
	},
})
// Using the templated secret as credentials
instance2 := rds.NewDatabaseInstance(this, jsii.String("PostgresInstance2"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_POSTGRES(),
	Credentials: map[string]interface{}{
		"username": templatedSecret.secretValueFromJson(jsii.String("username")).toString(),
		"password": templatedSecret.secretValueFromJson(jsii.String("password")),
	},
	Vpc: Vpc,
})

func NewDatabaseInstance

func NewDatabaseInstance(scope constructs.Construct, id *string, props *DatabaseInstanceProps) DatabaseInstance

type DatabaseInstanceAttributes

type DatabaseInstanceAttributes struct {
	// The endpoint address.
	InstanceEndpointAddress *string `field:"required" json:"instanceEndpointAddress" yaml:"instanceEndpointAddress"`
	// The instance identifier.
	InstanceIdentifier *string `field:"required" json:"instanceIdentifier" yaml:"instanceIdentifier"`
	// The database port.
	Port *float64 `field:"required" json:"port" yaml:"port"`
	// The security groups of the instance.
	SecurityGroups *[]awsec2.ISecurityGroup `field:"required" json:"securityGroups" yaml:"securityGroups"`
	// The engine of the existing database Instance.
	// Default: - the imported Instance's engine is unknown.
	//
	Engine IInstanceEngine `field:"optional" json:"engine" yaml:"engine"`
	// The AWS Region-unique, immutable identifier for the DB instance.
	//
	// This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB instance is accessed.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#aws-resource-rds-dbinstance-return-values
	//
	InstanceResourceId *string `field:"optional" json:"instanceResourceId" yaml:"instanceResourceId"`
}

Properties that describe an existing instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var instanceEngine iInstanceEngine
var securityGroup securityGroup

databaseInstanceAttributes := &DatabaseInstanceAttributes{
	InstanceEndpointAddress: jsii.String("instanceEndpointAddress"),
	InstanceIdentifier: jsii.String("instanceIdentifier"),
	Port: jsii.Number(123),
	SecurityGroups: []iSecurityGroup{
		securityGroup,
	},

	// the properties below are optional
	Engine: instanceEngine,
	InstanceResourceId: jsii.String("instanceResourceId"),
}

type DatabaseInstanceBase

type DatabaseInstanceBase interface {
	awscdk.Resource
	IDatabaseInstance
	// Access to network connections.
	Connections() awsec2.Connections
	// The instance endpoint address.
	DbInstanceEndpointAddress() *string
	// The instance endpoint port.
	DbInstanceEndpointPort() *string
	EnableIamAuthentication() *bool
	SetEnableIamAuthentication(val *bool)
	// The engine of this database Instance.
	//
	// May be not known for imported Instances if it wasn't provided explicitly,
	// or for read replicas.
	Engine() IInstanceEngine
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The instance arn.
	InstanceArn() *string
	// The instance endpoint.
	InstanceEndpoint() Endpoint
	// The instance identifier.
	InstanceIdentifier() *string
	// The AWS Region-unique, immutable identifier for the DB instance.
	//
	// This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB instance is accessed.
	InstanceResourceId() *string
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// Add a new db proxy to this instance.
	AddProxy(id *string, options *DatabaseProxyOptions) DatabaseProxy
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Renders the secret attachment target specifications.
	AsSecretAttachmentTarget() *awssecretsmanager.SecretAttachmentTargetProps
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Grant the given identity connection access to the database.
	GrantConnect(grantee awsiam.IGrantable, dbUser *string) awsiam.Grant
	// Return the given named metric for this DBInstance.
	Metric(metricName *string, props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The percentage of CPU utilization.
	//
	// Average over 5 minutes.
	MetricCPUUtilization(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of database connections in use.
	//
	// Average over 5 minutes.
	MetricDatabaseConnections(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available random access memory.
	//
	// Average over 5 minutes.
	MetricFreeableMemory(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available storage space.
	//
	// Average over 5 minutes.
	MetricFreeStorageSpace(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of disk write I/O operations per second.
	//
	// Average over 5 minutes.
	MetricReadIOPS(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of disk read I/O operations per second.
	//
	// Average over 5 minutes.
	MetricWriteIOPS(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// Defines a CloudWatch event rule which triggers for instance events.
	//
	// Use
	// `rule.addEventPattern(pattern)` to specify a filter.
	OnEvent(id *string, options *awsevents.OnEventOptions) awsevents.Rule
	// Returns a string representation of this construct.
	ToString() *string
}

A new or imported database instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var instanceEngine iInstanceEngine
var securityGroup securityGroup

databaseInstanceBase := awscdk.Aws_rds.DatabaseInstanceBase_FromDatabaseInstanceAttributes(this, jsii.String("MyDatabaseInstanceBase"), &DatabaseInstanceAttributes{
	InstanceEndpointAddress: jsii.String("instanceEndpointAddress"),
	InstanceIdentifier: jsii.String("instanceIdentifier"),
	Port: jsii.Number(123),
	SecurityGroups: []iSecurityGroup{
		securityGroup,
	},

	// the properties below are optional
	Engine: instanceEngine,
	InstanceResourceId: jsii.String("instanceResourceId"),
})

type DatabaseInstanceEngine

type DatabaseInstanceEngine interface {
}

A database instance engine.

Provides mapping to DatabaseEngine used for secret rotation.

Example:

var vpc vpc

iopsInstance := rds.NewDatabaseInstance(this, jsii.String("IopsInstance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_30(),
	}),
	Vpc: Vpc,
	StorageType: rds.StorageType_IO1,
	Iops: jsii.Number(5000),
})

gp3Instance := rds.NewDatabaseInstance(this, jsii.String("Gp3Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_*Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_30(),
	}),
	Vpc: Vpc,
	AllocatedStorage: jsii.Number(500),
	StorageType: rds.StorageType_GP3,
	StorageThroughput: jsii.Number(500),
})

func NewDatabaseInstanceEngine

func NewDatabaseInstanceEngine() DatabaseInstanceEngine

type DatabaseInstanceFromSnapshot

type DatabaseInstanceFromSnapshot interface {
	DatabaseInstanceBase
	IDatabaseInstance
	// Access to network connections.
	Connections() awsec2.Connections
	// The instance endpoint address.
	DbInstanceEndpointAddress() *string
	// The instance endpoint port.
	DbInstanceEndpointPort() *string
	EnableIamAuthentication() *bool
	SetEnableIamAuthentication(val *bool)
	// The engine of this database Instance.
	//
	// May be not known for imported Instances if it wasn't provided explicitly,
	// or for read replicas.
	Engine() IInstanceEngine
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The instance arn.
	InstanceArn() *string
	// The instance endpoint.
	InstanceEndpoint() Endpoint
	// The instance identifier.
	InstanceIdentifier() *string
	// The AWS Region-unique, immutable identifier for the DB instance.
	//
	// This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB instance is accessed.
	InstanceResourceId() *string
	InstanceType() awsec2.InstanceType
	NewCfnProps() *CfnDBInstanceProps
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The AWS Secrets Manager secret attached to the instance.
	Secret() awssecretsmanager.ISecret
	SourceCfnProps() *CfnDBInstanceProps
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// The VPC where this database instance is deployed.
	Vpc() awsec2.IVpc
	VpcPlacement() *awsec2.SubnetSelection
	// Add a new db proxy to this instance.
	AddProxy(id *string, options *DatabaseProxyOptions) DatabaseProxy
	// Adds the multi user rotation to this instance.
	AddRotationMultiUser(id *string, options *RotationMultiUserOptions) awssecretsmanager.SecretRotation
	// Adds the single user rotation of the master password to this instance.
	AddRotationSingleUser(options *RotationSingleUserOptions) awssecretsmanager.SecretRotation
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Renders the secret attachment target specifications.
	AsSecretAttachmentTarget() *awssecretsmanager.SecretAttachmentTargetProps
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Grant the given identity connection access to the database.
	GrantConnect(grantee awsiam.IGrantable, dbUser *string) awsiam.Grant
	// Return the given named metric for this DBInstance.
	Metric(metricName *string, props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The percentage of CPU utilization.
	//
	// Average over 5 minutes.
	MetricCPUUtilization(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of database connections in use.
	//
	// Average over 5 minutes.
	MetricDatabaseConnections(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available random access memory.
	//
	// Average over 5 minutes.
	MetricFreeableMemory(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available storage space.
	//
	// Average over 5 minutes.
	MetricFreeStorageSpace(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of disk write I/O operations per second.
	//
	// Average over 5 minutes.
	MetricReadIOPS(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of disk read I/O operations per second.
	//
	// Average over 5 minutes.
	MetricWriteIOPS(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// Defines a CloudWatch event rule which triggers for instance events.
	//
	// Use
	// `rule.addEventPattern(pattern)` to specify a filter.
	OnEvent(id *string, options *awsevents.OnEventOptions) awsevents.Rule
	SetLogRetention()
	// Returns a string representation of this construct.
	ToString() *string
}

A database instance restored from a snapshot.

Example:

var vpc vpc

var sourceInstance databaseInstance

rds.NewDatabaseInstanceFromSnapshot(this, jsii.String("Instance"), &DatabaseInstanceFromSnapshotProps{
	SnapshotIdentifier: jsii.String("my-snapshot"),
	Engine: rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
		Version: rds.PostgresEngineVersion_VER_15_2(),
	}),
	// optional, defaults to m5.large
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_LARGE),
	Vpc: Vpc,
})
rds.NewDatabaseInstanceReadReplica(this, jsii.String("ReadReplica"), &DatabaseInstanceReadReplicaProps{
	SourceDatabaseInstance: sourceInstance,
	InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_LARGE),
	Vpc: Vpc,
})

func NewDatabaseInstanceFromSnapshot

func NewDatabaseInstanceFromSnapshot(scope constructs.Construct, id *string, props *DatabaseInstanceFromSnapshotProps) DatabaseInstanceFromSnapshot

type DatabaseInstanceFromSnapshotProps

type DatabaseInstanceFromSnapshotProps struct {
	// The VPC network where the DB subnet group should be created.
	Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// Indicates that minor engine upgrades are applied automatically to the DB instance during the maintenance window.
	// Default: true.
	//
	AutoMinorVersionUpgrade *bool `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// The name of the Availability Zone where the DB instance will be located.
	// Default: - no preference.
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// The number of days during which automatic DB snapshots are retained.
	//
	// Set to zero to disable backups.
	// When creating a read replica, you must enable automatic backups on the source
	// database instance by setting the backup retention to a value other than zero.
	// Default: - Duration.days(1) for source instances, disabled for read replicas
	//
	BackupRetention awscdk.Duration `field:"optional" json:"backupRetention" yaml:"backupRetention"`
	// The identifier of the CA certificate for this DB instance.
	//
	// Specifying or updating this property triggers a reboot.
	//
	// For RDS DB engines:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html
	//
	// Default: - RDS will choose a certificate authority.
	//
	CaCertificate CaCertificate `field:"optional" json:"caCertificate" yaml:"caCertificate"`
	// The list of log types that need to be enabled for exporting to CloudWatch Logs.
	// Default: - no log exports.
	//
	CloudwatchLogsExports *[]*string `field:"optional" json:"cloudwatchLogsExports" yaml:"cloudwatchLogsExports"`
	// The number of days log events are kept in CloudWatch Logs.
	//
	// When updating
	// this property, unsetting it doesn't remove the log retention policy. To
	// remove the retention policy, set the value to `Infinity`.
	// Default: - logs never expire.
	//
	CloudwatchLogsRetention awslogs.RetentionDays `field:"optional" json:"cloudwatchLogsRetention" yaml:"cloudwatchLogsRetention"`
	// The IAM role for the Lambda function associated with the custom resource that sets the retention policy.
	// Default: - a new role is created.
	//
	CloudwatchLogsRetentionRole awsiam.IRole `field:"optional" json:"cloudwatchLogsRetentionRole" yaml:"cloudwatchLogsRetentionRole"`
	// Indicates whether to copy all of the user-defined tags from the DB instance to snapshots of the DB instance.
	// Default: true.
	//
	CopyTagsToSnapshot *bool `field:"optional" json:"copyTagsToSnapshot" yaml:"copyTagsToSnapshot"`
	// Indicates whether automated backups should be deleted or retained when you delete a DB instance.
	// Default: true.
	//
	DeleteAutomatedBackups *bool `field:"optional" json:"deleteAutomatedBackups" yaml:"deleteAutomatedBackups"`
	// Indicates whether the DB instance should have deletion protection enabled.
	// Default: - true if “removalPolicy“ is RETAIN, false otherwise.
	//
	DeletionProtection *bool `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// The Active Directory directory ID to create the DB instance in.
	// Default: - Do not join domain.
	//
	Domain *string `field:"optional" json:"domain" yaml:"domain"`
	// The IAM role to be used when making API calls to the Directory Service.
	//
	// The role needs the AWS-managed policy
	// AmazonRDSDirectoryServiceAccess or equivalent.
	// Default: - The role will be created for you if `DatabaseInstanceNewProps#domain` is specified.
	//
	DomainRole awsiam.IRole `field:"optional" json:"domainRole" yaml:"domainRole"`
	// Whether to enable Performance Insights for the DB instance.
	// Default: - false, unless “performanceInsightRetention“ or “performanceInsightEncryptionKey“ is set.
	//
	EnablePerformanceInsights *bool `field:"optional" json:"enablePerformanceInsights" yaml:"enablePerformanceInsights"`
	// Whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts.
	// Default: false.
	//
	IamAuthentication *bool `field:"optional" json:"iamAuthentication" yaml:"iamAuthentication"`
	// A name for the DB instance.
	//
	// If you specify a name, AWS CloudFormation
	// converts it to lowercase.
	// Default: - a CloudFormation generated name.
	//
	InstanceIdentifier *string `field:"optional" json:"instanceIdentifier" yaml:"instanceIdentifier"`
	// The number of I/O operations per second (IOPS) that the database provisions.
	//
	// The value must be equal to or greater than 1000.
	// Default: - no provisioned iops if storage type is not specified. For GP3: 3,000 IOPS if allocated
	// storage is less than 400 GiB for MariaDB, MySQL, and PostgreSQL, less than 200 GiB for Oracle and
	// less than 20 GiB for SQL Server. 12,000 IOPS otherwise (except for SQL Server where the default is
	// always 3,000 IOPS).
	//
	Iops *float64 `field:"optional" json:"iops" yaml:"iops"`
	// Upper limit to which RDS can scale the storage in GiB(Gibibyte).
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling
	//
	// Default: - No autoscaling of RDS instance.
	//
	MaxAllocatedStorage *float64 `field:"optional" json:"maxAllocatedStorage" yaml:"maxAllocatedStorage"`
	// The interval, in seconds, between points when Amazon RDS collects enhanced monitoring metrics for the DB instance.
	// Default: - no enhanced monitoring.
	//
	MonitoringInterval awscdk.Duration `field:"optional" json:"monitoringInterval" yaml:"monitoringInterval"`
	// Role that will be used to manage DB instance monitoring.
	// Default: - A role is automatically created for you.
	//
	MonitoringRole awsiam.IRole `field:"optional" json:"monitoringRole" yaml:"monitoringRole"`
	// Specifies if the database instance is a multiple Availability Zone deployment.
	// Default: false.
	//
	MultiAz *bool `field:"optional" json:"multiAz" yaml:"multiAz"`
	// The network type of the DB instance.
	// Default: - IPV4.
	//
	NetworkType NetworkType `field:"optional" json:"networkType" yaml:"networkType"`
	// The option group to associate with the instance.
	// Default: - no option group.
	//
	OptionGroup IOptionGroup `field:"optional" json:"optionGroup" yaml:"optionGroup"`
	// The DB parameter group to associate with the instance.
	// Default: - no parameter group.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The AWS KMS key for encryption of Performance Insights data.
	// Default: - default master key.
	//
	PerformanceInsightEncryptionKey awskms.IKey `field:"optional" json:"performanceInsightEncryptionKey" yaml:"performanceInsightEncryptionKey"`
	// The amount of time, in days, to retain Performance Insights data.
	// Default: 7 this is the free tier.
	//
	PerformanceInsightRetention PerformanceInsightRetention `field:"optional" json:"performanceInsightRetention" yaml:"performanceInsightRetention"`
	// The port for the instance.
	// Default: - the default port for the chosen engine.
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// The daily time range during which automated backups are performed.
	//
	// 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.
	// Default: - a 30-minute window selected at random from an 8-hour block of
	// time for each AWS Region. To see the time blocks available, see
	// https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow
	//
	PreferredBackupWindow *string `field:"optional" json:"preferredBackupWindow" yaml:"preferredBackupWindow"`
	// The weekly time range (in UTC) during which system maintenance can occur.
	//
	// Format: `ddd:hh24:mi-ddd:hh24:mi`
	// Constraint: Minimum 30-minute window.
	// Default: - 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 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance
	//
	PreferredMaintenanceWindow *string `field:"optional" json:"preferredMaintenanceWindow" yaml:"preferredMaintenanceWindow"`
	// The number of CPU cores and the number of threads per core.
	// Default: - the default number of CPU cores and threads per core for the
	// chosen instance class.
	//
	// See https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#USER_ConfigureProcessor
	//
	ProcessorFeatures *ProcessorFeatures `field:"optional" json:"processorFeatures" yaml:"processorFeatures"`
	// Indicates whether the DB instance is an internet-facing instance.
	// Default: - `true` if `vpcSubnets` is `subnetType: SubnetType.PUBLIC`, `false` otherwise
	//
	PubliclyAccessible *bool `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
	// The CloudFormation policy to apply when the instance is removed from the stack or replaced during an update.
	// Default: - RemovalPolicy.SNAPSHOT (remove the resource, but retain a snapshot of the data)
	//
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// S3 buckets that you want to load data into.
	//
	// This property must not be used if `s3ExportRole` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
	//
	// Default: - None.
	//
	S3ExportBuckets *[]awss3.IBucket `field:"optional" json:"s3ExportBuckets" yaml:"s3ExportBuckets"`
	// Role that will be associated with this DB instance to enable S3 export.
	//
	// This property must not be used if `s3ExportBuckets` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
	//
	// Default: - New role is created if `s3ExportBuckets` is set, no role is defined otherwise.
	//
	S3ExportRole awsiam.IRole `field:"optional" json:"s3ExportRole" yaml:"s3ExportRole"`
	// S3 buckets that you want to load data from.
	//
	// This feature is only supported by the Microsoft SQL Server, Oracle, and PostgreSQL engines.
	//
	// This property must not be used if `s3ImportRole` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
	//
	// Default: - None.
	//
	S3ImportBuckets *[]awss3.IBucket `field:"optional" json:"s3ImportBuckets" yaml:"s3ImportBuckets"`
	// Role that will be associated with this DB instance to enable S3 import.
	//
	// This feature is only supported by the Microsoft SQL Server, Oracle, and PostgreSQL engines.
	//
	// This property must not be used if `s3ImportBuckets` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
	//
	// Default: - New role is created if `s3ImportBuckets` is set, no role is defined otherwise.
	//
	S3ImportRole awsiam.IRole `field:"optional" json:"s3ImportRole" yaml:"s3ImportRole"`
	// The security groups to assign to the DB instance.
	// Default: - a new security group is created.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// The storage throughput, specified in mebibytes per second (MiBps).
	//
	// Only applicable for GP3.
	// See: https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/CHAP_Storage.html#gp3-storage
	//
	// Default: - 125 MiBps if allocated storage is less than 400 GiB for MariaDB, MySQL, and PostgreSQL,
	// less than 200 GiB for Oracle and less than 20 GiB for SQL Server. 500 MiBps otherwise (except for
	// SQL Server where the default is always 125 MiBps).
	//
	StorageThroughput *float64 `field:"optional" json:"storageThroughput" yaml:"storageThroughput"`
	// The storage type.
	//
	// Storage types supported are gp2, io1, standard.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#Concepts.Storage.GeneralSSD
	//
	// Default: GP2.
	//
	StorageType StorageType `field:"optional" json:"storageType" yaml:"storageType"`
	// Existing subnet group for the instance.
	// Default: - a new subnet group will be created.
	//
	SubnetGroup ISubnetGroup `field:"optional" json:"subnetGroup" yaml:"subnetGroup"`
	// The type of subnets to add to the created DB subnet group.
	// Default: - private subnets.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
	// The database engine.
	Engine IInstanceEngine `field:"required" json:"engine" yaml:"engine"`
	// The allocated storage size, specified in gibibytes (GiB).
	// Default: 100.
	//
	AllocatedStorage *float64 `field:"optional" json:"allocatedStorage" yaml:"allocatedStorage"`
	// Whether to allow major version upgrades.
	// Default: false.
	//
	AllowMajorVersionUpgrade *bool `field:"optional" json:"allowMajorVersionUpgrade" yaml:"allowMajorVersionUpgrade"`
	// The name of the database.
	// Default: - no name.
	//
	DatabaseName *string `field:"optional" json:"databaseName" yaml:"databaseName"`
	// The name of the compute and memory capacity for the instance.
	// Default: - m5.large (or, more specifically, db.m5.large)
	//
	InstanceType awsec2.InstanceType `field:"optional" json:"instanceType" yaml:"instanceType"`
	// The license model.
	// Default: - RDS default license model.
	//
	LicenseModel LicenseModel `field:"optional" json:"licenseModel" yaml:"licenseModel"`
	// The parameters in the DBParameterGroup to create automatically.
	//
	// You can only specify parameterGroup or parameters but not both.
	// You need to use a versioned engine to auto-generate a DBParameterGroup.
	// Default: - None.
	//
	Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"`
	// The time zone of the instance.
	//
	// This is currently supported only by Microsoft Sql Server.
	// Default: - RDS default timezone.
	//
	Timezone *string `field:"optional" json:"timezone" yaml:"timezone"`
	// 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.
	SnapshotIdentifier *string `field:"required" json:"snapshotIdentifier" yaml:"snapshotIdentifier"`
	// Master user credentials.
	//
	// Note - It is not possible to change the master username for a snapshot;
	// however, it is possible to provide (or generate) a new password.
	// Default: - The existing username and password from the snapshot will be used.
	//
	Credentials SnapshotCredentials `field:"optional" json:"credentials" yaml:"credentials"`
}

Construction properties for a DatabaseInstanceFromSnapshot.

Example:

var vpc vpc

var sourceInstance databaseInstance

rds.NewDatabaseInstanceFromSnapshot(this, jsii.String("Instance"), &DatabaseInstanceFromSnapshotProps{
	SnapshotIdentifier: jsii.String("my-snapshot"),
	Engine: rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
		Version: rds.PostgresEngineVersion_VER_15_2(),
	}),
	// optional, defaults to m5.large
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_LARGE),
	Vpc: Vpc,
})
rds.NewDatabaseInstanceReadReplica(this, jsii.String("ReadReplica"), &DatabaseInstanceReadReplicaProps{
	SourceDatabaseInstance: sourceInstance,
	InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_LARGE),
	Vpc: Vpc,
})

type DatabaseInstanceNewProps

type DatabaseInstanceNewProps struct {
	// The VPC network where the DB subnet group should be created.
	Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// Indicates that minor engine upgrades are applied automatically to the DB instance during the maintenance window.
	// Default: true.
	//
	AutoMinorVersionUpgrade *bool `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// The name of the Availability Zone where the DB instance will be located.
	// Default: - no preference.
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// The number of days during which automatic DB snapshots are retained.
	//
	// Set to zero to disable backups.
	// When creating a read replica, you must enable automatic backups on the source
	// database instance by setting the backup retention to a value other than zero.
	// Default: - Duration.days(1) for source instances, disabled for read replicas
	//
	BackupRetention awscdk.Duration `field:"optional" json:"backupRetention" yaml:"backupRetention"`
	// The identifier of the CA certificate for this DB instance.
	//
	// Specifying or updating this property triggers a reboot.
	//
	// For RDS DB engines:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html
	//
	// Default: - RDS will choose a certificate authority.
	//
	CaCertificate CaCertificate `field:"optional" json:"caCertificate" yaml:"caCertificate"`
	// The list of log types that need to be enabled for exporting to CloudWatch Logs.
	// Default: - no log exports.
	//
	CloudwatchLogsExports *[]*string `field:"optional" json:"cloudwatchLogsExports" yaml:"cloudwatchLogsExports"`
	// The number of days log events are kept in CloudWatch Logs.
	//
	// When updating
	// this property, unsetting it doesn't remove the log retention policy. To
	// remove the retention policy, set the value to `Infinity`.
	// Default: - logs never expire.
	//
	CloudwatchLogsRetention awslogs.RetentionDays `field:"optional" json:"cloudwatchLogsRetention" yaml:"cloudwatchLogsRetention"`
	// The IAM role for the Lambda function associated with the custom resource that sets the retention policy.
	// Default: - a new role is created.
	//
	CloudwatchLogsRetentionRole awsiam.IRole `field:"optional" json:"cloudwatchLogsRetentionRole" yaml:"cloudwatchLogsRetentionRole"`
	// Indicates whether to copy all of the user-defined tags from the DB instance to snapshots of the DB instance.
	// Default: true.
	//
	CopyTagsToSnapshot *bool `field:"optional" json:"copyTagsToSnapshot" yaml:"copyTagsToSnapshot"`
	// Indicates whether automated backups should be deleted or retained when you delete a DB instance.
	// Default: true.
	//
	DeleteAutomatedBackups *bool `field:"optional" json:"deleteAutomatedBackups" yaml:"deleteAutomatedBackups"`
	// Indicates whether the DB instance should have deletion protection enabled.
	// Default: - true if “removalPolicy“ is RETAIN, false otherwise.
	//
	DeletionProtection *bool `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// The Active Directory directory ID to create the DB instance in.
	// Default: - Do not join domain.
	//
	Domain *string `field:"optional" json:"domain" yaml:"domain"`
	// The IAM role to be used when making API calls to the Directory Service.
	//
	// The role needs the AWS-managed policy
	// AmazonRDSDirectoryServiceAccess or equivalent.
	// Default: - The role will be created for you if `DatabaseInstanceNewProps#domain` is specified.
	//
	DomainRole awsiam.IRole `field:"optional" json:"domainRole" yaml:"domainRole"`
	// Whether to enable Performance Insights for the DB instance.
	// Default: - false, unless “performanceInsightRetention“ or “performanceInsightEncryptionKey“ is set.
	//
	EnablePerformanceInsights *bool `field:"optional" json:"enablePerformanceInsights" yaml:"enablePerformanceInsights"`
	// Whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts.
	// Default: false.
	//
	IamAuthentication *bool `field:"optional" json:"iamAuthentication" yaml:"iamAuthentication"`
	// A name for the DB instance.
	//
	// If you specify a name, AWS CloudFormation
	// converts it to lowercase.
	// Default: - a CloudFormation generated name.
	//
	InstanceIdentifier *string `field:"optional" json:"instanceIdentifier" yaml:"instanceIdentifier"`
	// The number of I/O operations per second (IOPS) that the database provisions.
	//
	// The value must be equal to or greater than 1000.
	// Default: - no provisioned iops if storage type is not specified. For GP3: 3,000 IOPS if allocated
	// storage is less than 400 GiB for MariaDB, MySQL, and PostgreSQL, less than 200 GiB for Oracle and
	// less than 20 GiB for SQL Server. 12,000 IOPS otherwise (except for SQL Server where the default is
	// always 3,000 IOPS).
	//
	Iops *float64 `field:"optional" json:"iops" yaml:"iops"`
	// Upper limit to which RDS can scale the storage in GiB(Gibibyte).
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling
	//
	// Default: - No autoscaling of RDS instance.
	//
	MaxAllocatedStorage *float64 `field:"optional" json:"maxAllocatedStorage" yaml:"maxAllocatedStorage"`
	// The interval, in seconds, between points when Amazon RDS collects enhanced monitoring metrics for the DB instance.
	// Default: - no enhanced monitoring.
	//
	MonitoringInterval awscdk.Duration `field:"optional" json:"monitoringInterval" yaml:"monitoringInterval"`
	// Role that will be used to manage DB instance monitoring.
	// Default: - A role is automatically created for you.
	//
	MonitoringRole awsiam.IRole `field:"optional" json:"monitoringRole" yaml:"monitoringRole"`
	// Specifies if the database instance is a multiple Availability Zone deployment.
	// Default: false.
	//
	MultiAz *bool `field:"optional" json:"multiAz" yaml:"multiAz"`
	// The network type of the DB instance.
	// Default: - IPV4.
	//
	NetworkType NetworkType `field:"optional" json:"networkType" yaml:"networkType"`
	// The option group to associate with the instance.
	// Default: - no option group.
	//
	OptionGroup IOptionGroup `field:"optional" json:"optionGroup" yaml:"optionGroup"`
	// The DB parameter group to associate with the instance.
	// Default: - no parameter group.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The AWS KMS key for encryption of Performance Insights data.
	// Default: - default master key.
	//
	PerformanceInsightEncryptionKey awskms.IKey `field:"optional" json:"performanceInsightEncryptionKey" yaml:"performanceInsightEncryptionKey"`
	// The amount of time, in days, to retain Performance Insights data.
	// Default: 7 this is the free tier.
	//
	PerformanceInsightRetention PerformanceInsightRetention `field:"optional" json:"performanceInsightRetention" yaml:"performanceInsightRetention"`
	// The port for the instance.
	// Default: - the default port for the chosen engine.
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// The daily time range during which automated backups are performed.
	//
	// 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.
	// Default: - a 30-minute window selected at random from an 8-hour block of
	// time for each AWS Region. To see the time blocks available, see
	// https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow
	//
	PreferredBackupWindow *string `field:"optional" json:"preferredBackupWindow" yaml:"preferredBackupWindow"`
	// The weekly time range (in UTC) during which system maintenance can occur.
	//
	// Format: `ddd:hh24:mi-ddd:hh24:mi`
	// Constraint: Minimum 30-minute window.
	// Default: - 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 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance
	//
	PreferredMaintenanceWindow *string `field:"optional" json:"preferredMaintenanceWindow" yaml:"preferredMaintenanceWindow"`
	// The number of CPU cores and the number of threads per core.
	// Default: - the default number of CPU cores and threads per core for the
	// chosen instance class.
	//
	// See https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#USER_ConfigureProcessor
	//
	ProcessorFeatures *ProcessorFeatures `field:"optional" json:"processorFeatures" yaml:"processorFeatures"`
	// Indicates whether the DB instance is an internet-facing instance.
	// Default: - `true` if `vpcSubnets` is `subnetType: SubnetType.PUBLIC`, `false` otherwise
	//
	PubliclyAccessible *bool `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
	// The CloudFormation policy to apply when the instance is removed from the stack or replaced during an update.
	// Default: - RemovalPolicy.SNAPSHOT (remove the resource, but retain a snapshot of the data)
	//
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// S3 buckets that you want to load data into.
	//
	// This property must not be used if `s3ExportRole` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
	//
	// Default: - None.
	//
	S3ExportBuckets *[]awss3.IBucket `field:"optional" json:"s3ExportBuckets" yaml:"s3ExportBuckets"`
	// Role that will be associated with this DB instance to enable S3 export.
	//
	// This property must not be used if `s3ExportBuckets` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
	//
	// Default: - New role is created if `s3ExportBuckets` is set, no role is defined otherwise.
	//
	S3ExportRole awsiam.IRole `field:"optional" json:"s3ExportRole" yaml:"s3ExportRole"`
	// S3 buckets that you want to load data from.
	//
	// This feature is only supported by the Microsoft SQL Server, Oracle, and PostgreSQL engines.
	//
	// This property must not be used if `s3ImportRole` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
	//
	// Default: - None.
	//
	S3ImportBuckets *[]awss3.IBucket `field:"optional" json:"s3ImportBuckets" yaml:"s3ImportBuckets"`
	// Role that will be associated with this DB instance to enable S3 import.
	//
	// This feature is only supported by the Microsoft SQL Server, Oracle, and PostgreSQL engines.
	//
	// This property must not be used if `s3ImportBuckets` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
	//
	// Default: - New role is created if `s3ImportBuckets` is set, no role is defined otherwise.
	//
	S3ImportRole awsiam.IRole `field:"optional" json:"s3ImportRole" yaml:"s3ImportRole"`
	// The security groups to assign to the DB instance.
	// Default: - a new security group is created.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// The storage throughput, specified in mebibytes per second (MiBps).
	//
	// Only applicable for GP3.
	// See: https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/CHAP_Storage.html#gp3-storage
	//
	// Default: - 125 MiBps if allocated storage is less than 400 GiB for MariaDB, MySQL, and PostgreSQL,
	// less than 200 GiB for Oracle and less than 20 GiB for SQL Server. 500 MiBps otherwise (except for
	// SQL Server where the default is always 125 MiBps).
	//
	StorageThroughput *float64 `field:"optional" json:"storageThroughput" yaml:"storageThroughput"`
	// The storage type.
	//
	// Storage types supported are gp2, io1, standard.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#Concepts.Storage.GeneralSSD
	//
	// Default: GP2.
	//
	StorageType StorageType `field:"optional" json:"storageType" yaml:"storageType"`
	// Existing subnet group for the instance.
	// Default: - a new subnet group will be created.
	//
	SubnetGroup ISubnetGroup `field:"optional" json:"subnetGroup" yaml:"subnetGroup"`
	// The type of subnets to add to the created DB subnet group.
	// Default: - private subnets.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
}

Construction properties for a DatabaseInstanceNew.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var bucket bucket
var caCertificate caCertificate
var key key
var optionGroup optionGroup
var parameterGroup parameterGroup
var role role
var securityGroup securityGroup
var subnet subnet
var subnetFilter subnetFilter
var subnetGroup subnetGroup
var vpc vpc

databaseInstanceNewProps := &DatabaseInstanceNewProps{
	Vpc: vpc,

	// the properties below are optional
	AutoMinorVersionUpgrade: jsii.Boolean(false),
	AvailabilityZone: jsii.String("availabilityZone"),
	BackupRetention: cdk.Duration_Minutes(jsii.Number(30)),
	CaCertificate: caCertificate,
	CloudwatchLogsExports: []*string{
		jsii.String("cloudwatchLogsExports"),
	},
	CloudwatchLogsRetention: awscdk.Aws_logs.RetentionDays_ONE_DAY,
	CloudwatchLogsRetentionRole: role,
	CopyTagsToSnapshot: jsii.Boolean(false),
	DeleteAutomatedBackups: jsii.Boolean(false),
	DeletionProtection: jsii.Boolean(false),
	Domain: jsii.String("domain"),
	DomainRole: role,
	EnablePerformanceInsights: jsii.Boolean(false),
	IamAuthentication: jsii.Boolean(false),
	InstanceIdentifier: jsii.String("instanceIdentifier"),
	Iops: jsii.Number(123),
	MaxAllocatedStorage: jsii.Number(123),
	MonitoringInterval: cdk.Duration_*Minutes(jsii.Number(30)),
	MonitoringRole: role,
	MultiAz: jsii.Boolean(false),
	NetworkType: awscdk.Aws_rds.NetworkType_IPV4,
	OptionGroup: optionGroup,
	ParameterGroup: parameterGroup,
	PerformanceInsightEncryptionKey: key,
	PerformanceInsightRetention: awscdk.*Aws_rds.PerformanceInsightRetention_DEFAULT,
	Port: jsii.Number(123),
	PreferredBackupWindow: jsii.String("preferredBackupWindow"),
	PreferredMaintenanceWindow: jsii.String("preferredMaintenanceWindow"),
	ProcessorFeatures: &ProcessorFeatures{
		CoreCount: jsii.Number(123),
		ThreadsPerCore: jsii.Number(123),
	},
	PubliclyAccessible: jsii.Boolean(false),
	RemovalPolicy: cdk.RemovalPolicy_DESTROY,
	S3ExportBuckets: []iBucket{
		bucket,
	},
	S3ExportRole: role,
	S3ImportBuckets: []*iBucket{
		bucket,
	},
	S3ImportRole: role,
	SecurityGroups: []iSecurityGroup{
		securityGroup,
	},
	StorageThroughput: jsii.Number(123),
	StorageType: awscdk.*Aws_rds.StorageType_STANDARD,
	SubnetGroup: subnetGroup,
	VpcSubnets: &SubnetSelection{
		AvailabilityZones: []*string{
			jsii.String("availabilityZones"),
		},
		OnePerAz: jsii.Boolean(false),
		SubnetFilters: []*subnetFilter{
			subnetFilter,
		},
		SubnetGroupName: jsii.String("subnetGroupName"),
		Subnets: []iSubnet{
			subnet,
		},
		SubnetType: awscdk.Aws_ec2.SubnetType_PRIVATE_ISOLATED,
	},
}

type DatabaseInstanceProps

type DatabaseInstanceProps struct {
	// The VPC network where the DB subnet group should be created.
	Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// Indicates that minor engine upgrades are applied automatically to the DB instance during the maintenance window.
	// Default: true.
	//
	AutoMinorVersionUpgrade *bool `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// The name of the Availability Zone where the DB instance will be located.
	// Default: - no preference.
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// The number of days during which automatic DB snapshots are retained.
	//
	// Set to zero to disable backups.
	// When creating a read replica, you must enable automatic backups on the source
	// database instance by setting the backup retention to a value other than zero.
	// Default: - Duration.days(1) for source instances, disabled for read replicas
	//
	BackupRetention awscdk.Duration `field:"optional" json:"backupRetention" yaml:"backupRetention"`
	// The identifier of the CA certificate for this DB instance.
	//
	// Specifying or updating this property triggers a reboot.
	//
	// For RDS DB engines:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html
	//
	// Default: - RDS will choose a certificate authority.
	//
	CaCertificate CaCertificate `field:"optional" json:"caCertificate" yaml:"caCertificate"`
	// The list of log types that need to be enabled for exporting to CloudWatch Logs.
	// Default: - no log exports.
	//
	CloudwatchLogsExports *[]*string `field:"optional" json:"cloudwatchLogsExports" yaml:"cloudwatchLogsExports"`
	// The number of days log events are kept in CloudWatch Logs.
	//
	// When updating
	// this property, unsetting it doesn't remove the log retention policy. To
	// remove the retention policy, set the value to `Infinity`.
	// Default: - logs never expire.
	//
	CloudwatchLogsRetention awslogs.RetentionDays `field:"optional" json:"cloudwatchLogsRetention" yaml:"cloudwatchLogsRetention"`
	// The IAM role for the Lambda function associated with the custom resource that sets the retention policy.
	// Default: - a new role is created.
	//
	CloudwatchLogsRetentionRole awsiam.IRole `field:"optional" json:"cloudwatchLogsRetentionRole" yaml:"cloudwatchLogsRetentionRole"`
	// Indicates whether to copy all of the user-defined tags from the DB instance to snapshots of the DB instance.
	// Default: true.
	//
	CopyTagsToSnapshot *bool `field:"optional" json:"copyTagsToSnapshot" yaml:"copyTagsToSnapshot"`
	// Indicates whether automated backups should be deleted or retained when you delete a DB instance.
	// Default: true.
	//
	DeleteAutomatedBackups *bool `field:"optional" json:"deleteAutomatedBackups" yaml:"deleteAutomatedBackups"`
	// Indicates whether the DB instance should have deletion protection enabled.
	// Default: - true if “removalPolicy“ is RETAIN, false otherwise.
	//
	DeletionProtection *bool `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// The Active Directory directory ID to create the DB instance in.
	// Default: - Do not join domain.
	//
	Domain *string `field:"optional" json:"domain" yaml:"domain"`
	// The IAM role to be used when making API calls to the Directory Service.
	//
	// The role needs the AWS-managed policy
	// AmazonRDSDirectoryServiceAccess or equivalent.
	// Default: - The role will be created for you if `DatabaseInstanceNewProps#domain` is specified.
	//
	DomainRole awsiam.IRole `field:"optional" json:"domainRole" yaml:"domainRole"`
	// Whether to enable Performance Insights for the DB instance.
	// Default: - false, unless “performanceInsightRetention“ or “performanceInsightEncryptionKey“ is set.
	//
	EnablePerformanceInsights *bool `field:"optional" json:"enablePerformanceInsights" yaml:"enablePerformanceInsights"`
	// Whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts.
	// Default: false.
	//
	IamAuthentication *bool `field:"optional" json:"iamAuthentication" yaml:"iamAuthentication"`
	// A name for the DB instance.
	//
	// If you specify a name, AWS CloudFormation
	// converts it to lowercase.
	// Default: - a CloudFormation generated name.
	//
	InstanceIdentifier *string `field:"optional" json:"instanceIdentifier" yaml:"instanceIdentifier"`
	// The number of I/O operations per second (IOPS) that the database provisions.
	//
	// The value must be equal to or greater than 1000.
	// Default: - no provisioned iops if storage type is not specified. For GP3: 3,000 IOPS if allocated
	// storage is less than 400 GiB for MariaDB, MySQL, and PostgreSQL, less than 200 GiB for Oracle and
	// less than 20 GiB for SQL Server. 12,000 IOPS otherwise (except for SQL Server where the default is
	// always 3,000 IOPS).
	//
	Iops *float64 `field:"optional" json:"iops" yaml:"iops"`
	// Upper limit to which RDS can scale the storage in GiB(Gibibyte).
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling
	//
	// Default: - No autoscaling of RDS instance.
	//
	MaxAllocatedStorage *float64 `field:"optional" json:"maxAllocatedStorage" yaml:"maxAllocatedStorage"`
	// The interval, in seconds, between points when Amazon RDS collects enhanced monitoring metrics for the DB instance.
	// Default: - no enhanced monitoring.
	//
	MonitoringInterval awscdk.Duration `field:"optional" json:"monitoringInterval" yaml:"monitoringInterval"`
	// Role that will be used to manage DB instance monitoring.
	// Default: - A role is automatically created for you.
	//
	MonitoringRole awsiam.IRole `field:"optional" json:"monitoringRole" yaml:"monitoringRole"`
	// Specifies if the database instance is a multiple Availability Zone deployment.
	// Default: false.
	//
	MultiAz *bool `field:"optional" json:"multiAz" yaml:"multiAz"`
	// The network type of the DB instance.
	// Default: - IPV4.
	//
	NetworkType NetworkType `field:"optional" json:"networkType" yaml:"networkType"`
	// The option group to associate with the instance.
	// Default: - no option group.
	//
	OptionGroup IOptionGroup `field:"optional" json:"optionGroup" yaml:"optionGroup"`
	// The DB parameter group to associate with the instance.
	// Default: - no parameter group.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The AWS KMS key for encryption of Performance Insights data.
	// Default: - default master key.
	//
	PerformanceInsightEncryptionKey awskms.IKey `field:"optional" json:"performanceInsightEncryptionKey" yaml:"performanceInsightEncryptionKey"`
	// The amount of time, in days, to retain Performance Insights data.
	// Default: 7 this is the free tier.
	//
	PerformanceInsightRetention PerformanceInsightRetention `field:"optional" json:"performanceInsightRetention" yaml:"performanceInsightRetention"`
	// The port for the instance.
	// Default: - the default port for the chosen engine.
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// The daily time range during which automated backups are performed.
	//
	// 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.
	// Default: - a 30-minute window selected at random from an 8-hour block of
	// time for each AWS Region. To see the time blocks available, see
	// https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow
	//
	PreferredBackupWindow *string `field:"optional" json:"preferredBackupWindow" yaml:"preferredBackupWindow"`
	// The weekly time range (in UTC) during which system maintenance can occur.
	//
	// Format: `ddd:hh24:mi-ddd:hh24:mi`
	// Constraint: Minimum 30-minute window.
	// Default: - 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 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance
	//
	PreferredMaintenanceWindow *string `field:"optional" json:"preferredMaintenanceWindow" yaml:"preferredMaintenanceWindow"`
	// The number of CPU cores and the number of threads per core.
	// Default: - the default number of CPU cores and threads per core for the
	// chosen instance class.
	//
	// See https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#USER_ConfigureProcessor
	//
	ProcessorFeatures *ProcessorFeatures `field:"optional" json:"processorFeatures" yaml:"processorFeatures"`
	// Indicates whether the DB instance is an internet-facing instance.
	// Default: - `true` if `vpcSubnets` is `subnetType: SubnetType.PUBLIC`, `false` otherwise
	//
	PubliclyAccessible *bool `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
	// The CloudFormation policy to apply when the instance is removed from the stack or replaced during an update.
	// Default: - RemovalPolicy.SNAPSHOT (remove the resource, but retain a snapshot of the data)
	//
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// S3 buckets that you want to load data into.
	//
	// This property must not be used if `s3ExportRole` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
	//
	// Default: - None.
	//
	S3ExportBuckets *[]awss3.IBucket `field:"optional" json:"s3ExportBuckets" yaml:"s3ExportBuckets"`
	// Role that will be associated with this DB instance to enable S3 export.
	//
	// This property must not be used if `s3ExportBuckets` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
	//
	// Default: - New role is created if `s3ExportBuckets` is set, no role is defined otherwise.
	//
	S3ExportRole awsiam.IRole `field:"optional" json:"s3ExportRole" yaml:"s3ExportRole"`
	// S3 buckets that you want to load data from.
	//
	// This feature is only supported by the Microsoft SQL Server, Oracle, and PostgreSQL engines.
	//
	// This property must not be used if `s3ImportRole` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
	//
	// Default: - None.
	//
	S3ImportBuckets *[]awss3.IBucket `field:"optional" json:"s3ImportBuckets" yaml:"s3ImportBuckets"`
	// Role that will be associated with this DB instance to enable S3 import.
	//
	// This feature is only supported by the Microsoft SQL Server, Oracle, and PostgreSQL engines.
	//
	// This property must not be used if `s3ImportBuckets` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
	//
	// Default: - New role is created if `s3ImportBuckets` is set, no role is defined otherwise.
	//
	S3ImportRole awsiam.IRole `field:"optional" json:"s3ImportRole" yaml:"s3ImportRole"`
	// The security groups to assign to the DB instance.
	// Default: - a new security group is created.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// The storage throughput, specified in mebibytes per second (MiBps).
	//
	// Only applicable for GP3.
	// See: https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/CHAP_Storage.html#gp3-storage
	//
	// Default: - 125 MiBps if allocated storage is less than 400 GiB for MariaDB, MySQL, and PostgreSQL,
	// less than 200 GiB for Oracle and less than 20 GiB for SQL Server. 500 MiBps otherwise (except for
	// SQL Server where the default is always 125 MiBps).
	//
	StorageThroughput *float64 `field:"optional" json:"storageThroughput" yaml:"storageThroughput"`
	// The storage type.
	//
	// Storage types supported are gp2, io1, standard.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#Concepts.Storage.GeneralSSD
	//
	// Default: GP2.
	//
	StorageType StorageType `field:"optional" json:"storageType" yaml:"storageType"`
	// Existing subnet group for the instance.
	// Default: - a new subnet group will be created.
	//
	SubnetGroup ISubnetGroup `field:"optional" json:"subnetGroup" yaml:"subnetGroup"`
	// The type of subnets to add to the created DB subnet group.
	// Default: - private subnets.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
	// The database engine.
	Engine IInstanceEngine `field:"required" json:"engine" yaml:"engine"`
	// The allocated storage size, specified in gibibytes (GiB).
	// Default: 100.
	//
	AllocatedStorage *float64 `field:"optional" json:"allocatedStorage" yaml:"allocatedStorage"`
	// Whether to allow major version upgrades.
	// Default: false.
	//
	AllowMajorVersionUpgrade *bool `field:"optional" json:"allowMajorVersionUpgrade" yaml:"allowMajorVersionUpgrade"`
	// The name of the database.
	// Default: - no name.
	//
	DatabaseName *string `field:"optional" json:"databaseName" yaml:"databaseName"`
	// The name of the compute and memory capacity for the instance.
	// Default: - m5.large (or, more specifically, db.m5.large)
	//
	InstanceType awsec2.InstanceType `field:"optional" json:"instanceType" yaml:"instanceType"`
	// The license model.
	// Default: - RDS default license model.
	//
	LicenseModel LicenseModel `field:"optional" json:"licenseModel" yaml:"licenseModel"`
	// The parameters in the DBParameterGroup to create automatically.
	//
	// You can only specify parameterGroup or parameters but not both.
	// You need to use a versioned engine to auto-generate a DBParameterGroup.
	// Default: - None.
	//
	Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"`
	// The time zone of the instance.
	//
	// This is currently supported only by Microsoft Sql Server.
	// Default: - RDS default timezone.
	//
	Timezone *string `field:"optional" json:"timezone" yaml:"timezone"`
	// For supported engines, specifies the character set to associate with the DB instance.
	// Default: - RDS default character set name.
	//
	CharacterSetName *string `field:"optional" json:"characterSetName" yaml:"characterSetName"`
	// Credentials for the administrative user.
	// Default: - A username of 'admin' (or 'postgres' for PostgreSQL) and SecretsManager-generated password.
	//
	Credentials Credentials `field:"optional" json:"credentials" yaml:"credentials"`
	// Indicates whether the DB instance is encrypted.
	// Default: - true if storageEncryptionKey has been provided, false otherwise.
	//
	StorageEncrypted *bool `field:"optional" json:"storageEncrypted" yaml:"storageEncrypted"`
	// The KMS key that's used to encrypt the DB instance.
	// Default: - default master key if storageEncrypted is true, no key otherwise.
	//
	StorageEncryptionKey awskms.IKey `field:"optional" json:"storageEncryptionKey" yaml:"storageEncryptionKey"`
}

Construction properties for a DatabaseInstance.

Example:

var vpc iVpc

instance1 := rds.NewDatabaseInstance(this, jsii.String("PostgresInstance1"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_POSTGRES(),
	// Generate the secret with admin username `postgres` and random password
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("postgres")),
	Vpc: Vpc,
})
// Templated secret with username and password fields
templatedSecret := secretsmanager.NewSecret(this, jsii.String("TemplatedSecret"), &SecretProps{
	GenerateSecretString: &SecretStringGenerator{
		SecretStringTemplate: jSON.stringify(map[string]*string{
			"username": jsii.String("postgres"),
		}),
		GenerateStringKey: jsii.String("password"),
		ExcludeCharacters: jsii.String("/@\""),
	},
})
// Using the templated secret as credentials
instance2 := rds.NewDatabaseInstance(this, jsii.String("PostgresInstance2"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_POSTGRES(),
	Credentials: map[string]interface{}{
		"username": templatedSecret.secretValueFromJson(jsii.String("username")).toString(),
		"password": templatedSecret.secretValueFromJson(jsii.String("password")),
	},
	Vpc: Vpc,
})

type DatabaseInstanceReadReplica

type DatabaseInstanceReadReplica interface {
	DatabaseInstanceBase
	IDatabaseInstance
	// Access to network connections.
	Connections() awsec2.Connections
	// The instance endpoint address.
	DbInstanceEndpointAddress() *string
	// The instance endpoint port.
	DbInstanceEndpointPort() *string
	EnableIamAuthentication() *bool
	SetEnableIamAuthentication(val *bool)
	// The engine of this database Instance.
	//
	// May be not known for imported Instances if it wasn't provided explicitly,
	// or for read replicas.
	Engine() IInstanceEngine
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The instance arn.
	InstanceArn() *string
	// The instance endpoint.
	InstanceEndpoint() Endpoint
	// The instance identifier.
	InstanceIdentifier() *string
	// The AWS Region-unique, immutable identifier for the DB instance.
	//
	// This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB instance is accessed.
	InstanceResourceId() *string
	InstanceType() awsec2.InstanceType
	NewCfnProps() *CfnDBInstanceProps
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// The VPC where this database instance is deployed.
	Vpc() awsec2.IVpc
	VpcPlacement() *awsec2.SubnetSelection
	// Add a new db proxy to this instance.
	AddProxy(id *string, options *DatabaseProxyOptions) DatabaseProxy
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Renders the secret attachment target specifications.
	AsSecretAttachmentTarget() *awssecretsmanager.SecretAttachmentTargetProps
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Grant the given identity connection access to the database.
	GrantConnect(grantee awsiam.IGrantable, dbUser *string) awsiam.Grant
	// Return the given named metric for this DBInstance.
	Metric(metricName *string, props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The percentage of CPU utilization.
	//
	// Average over 5 minutes.
	MetricCPUUtilization(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of database connections in use.
	//
	// Average over 5 minutes.
	MetricDatabaseConnections(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available random access memory.
	//
	// Average over 5 minutes.
	MetricFreeableMemory(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available storage space.
	//
	// Average over 5 minutes.
	MetricFreeStorageSpace(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of disk write I/O operations per second.
	//
	// Average over 5 minutes.
	MetricReadIOPS(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of disk read I/O operations per second.
	//
	// Average over 5 minutes.
	MetricWriteIOPS(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// Defines a CloudWatch event rule which triggers for instance events.
	//
	// Use
	// `rule.addEventPattern(pattern)` to specify a filter.
	OnEvent(id *string, options *awsevents.OnEventOptions) awsevents.Rule
	SetLogRetention()
	// Returns a string representation of this construct.
	ToString() *string
}

A read replica database instance.

Example:

var vpc vpc

var sourceInstance databaseInstance

rds.NewDatabaseInstanceFromSnapshot(this, jsii.String("Instance"), &DatabaseInstanceFromSnapshotProps{
	SnapshotIdentifier: jsii.String("my-snapshot"),
	Engine: rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
		Version: rds.PostgresEngineVersion_VER_15_2(),
	}),
	// optional, defaults to m5.large
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_LARGE),
	Vpc: Vpc,
})
rds.NewDatabaseInstanceReadReplica(this, jsii.String("ReadReplica"), &DatabaseInstanceReadReplicaProps{
	SourceDatabaseInstance: sourceInstance,
	InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_LARGE),
	Vpc: Vpc,
})

func NewDatabaseInstanceReadReplica

func NewDatabaseInstanceReadReplica(scope constructs.Construct, id *string, props *DatabaseInstanceReadReplicaProps) DatabaseInstanceReadReplica

type DatabaseInstanceReadReplicaProps

type DatabaseInstanceReadReplicaProps struct {
	// The VPC network where the DB subnet group should be created.
	Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// Indicates that minor engine upgrades are applied automatically to the DB instance during the maintenance window.
	// Default: true.
	//
	AutoMinorVersionUpgrade *bool `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// The name of the Availability Zone where the DB instance will be located.
	// Default: - no preference.
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// The number of days during which automatic DB snapshots are retained.
	//
	// Set to zero to disable backups.
	// When creating a read replica, you must enable automatic backups on the source
	// database instance by setting the backup retention to a value other than zero.
	// Default: - Duration.days(1) for source instances, disabled for read replicas
	//
	BackupRetention awscdk.Duration `field:"optional" json:"backupRetention" yaml:"backupRetention"`
	// The identifier of the CA certificate for this DB instance.
	//
	// Specifying or updating this property triggers a reboot.
	//
	// For RDS DB engines:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html
	//
	// Default: - RDS will choose a certificate authority.
	//
	CaCertificate CaCertificate `field:"optional" json:"caCertificate" yaml:"caCertificate"`
	// The list of log types that need to be enabled for exporting to CloudWatch Logs.
	// Default: - no log exports.
	//
	CloudwatchLogsExports *[]*string `field:"optional" json:"cloudwatchLogsExports" yaml:"cloudwatchLogsExports"`
	// The number of days log events are kept in CloudWatch Logs.
	//
	// When updating
	// this property, unsetting it doesn't remove the log retention policy. To
	// remove the retention policy, set the value to `Infinity`.
	// Default: - logs never expire.
	//
	CloudwatchLogsRetention awslogs.RetentionDays `field:"optional" json:"cloudwatchLogsRetention" yaml:"cloudwatchLogsRetention"`
	// The IAM role for the Lambda function associated with the custom resource that sets the retention policy.
	// Default: - a new role is created.
	//
	CloudwatchLogsRetentionRole awsiam.IRole `field:"optional" json:"cloudwatchLogsRetentionRole" yaml:"cloudwatchLogsRetentionRole"`
	// Indicates whether to copy all of the user-defined tags from the DB instance to snapshots of the DB instance.
	// Default: true.
	//
	CopyTagsToSnapshot *bool `field:"optional" json:"copyTagsToSnapshot" yaml:"copyTagsToSnapshot"`
	// Indicates whether automated backups should be deleted or retained when you delete a DB instance.
	// Default: true.
	//
	DeleteAutomatedBackups *bool `field:"optional" json:"deleteAutomatedBackups" yaml:"deleteAutomatedBackups"`
	// Indicates whether the DB instance should have deletion protection enabled.
	// Default: - true if “removalPolicy“ is RETAIN, false otherwise.
	//
	DeletionProtection *bool `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// The Active Directory directory ID to create the DB instance in.
	// Default: - Do not join domain.
	//
	Domain *string `field:"optional" json:"domain" yaml:"domain"`
	// The IAM role to be used when making API calls to the Directory Service.
	//
	// The role needs the AWS-managed policy
	// AmazonRDSDirectoryServiceAccess or equivalent.
	// Default: - The role will be created for you if `DatabaseInstanceNewProps#domain` is specified.
	//
	DomainRole awsiam.IRole `field:"optional" json:"domainRole" yaml:"domainRole"`
	// Whether to enable Performance Insights for the DB instance.
	// Default: - false, unless “performanceInsightRetention“ or “performanceInsightEncryptionKey“ is set.
	//
	EnablePerformanceInsights *bool `field:"optional" json:"enablePerformanceInsights" yaml:"enablePerformanceInsights"`
	// Whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts.
	// Default: false.
	//
	IamAuthentication *bool `field:"optional" json:"iamAuthentication" yaml:"iamAuthentication"`
	// A name for the DB instance.
	//
	// If you specify a name, AWS CloudFormation
	// converts it to lowercase.
	// Default: - a CloudFormation generated name.
	//
	InstanceIdentifier *string `field:"optional" json:"instanceIdentifier" yaml:"instanceIdentifier"`
	// The number of I/O operations per second (IOPS) that the database provisions.
	//
	// The value must be equal to or greater than 1000.
	// Default: - no provisioned iops if storage type is not specified. For GP3: 3,000 IOPS if allocated
	// storage is less than 400 GiB for MariaDB, MySQL, and PostgreSQL, less than 200 GiB for Oracle and
	// less than 20 GiB for SQL Server. 12,000 IOPS otherwise (except for SQL Server where the default is
	// always 3,000 IOPS).
	//
	Iops *float64 `field:"optional" json:"iops" yaml:"iops"`
	// Upper limit to which RDS can scale the storage in GiB(Gibibyte).
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling
	//
	// Default: - No autoscaling of RDS instance.
	//
	MaxAllocatedStorage *float64 `field:"optional" json:"maxAllocatedStorage" yaml:"maxAllocatedStorage"`
	// The interval, in seconds, between points when Amazon RDS collects enhanced monitoring metrics for the DB instance.
	// Default: - no enhanced monitoring.
	//
	MonitoringInterval awscdk.Duration `field:"optional" json:"monitoringInterval" yaml:"monitoringInterval"`
	// Role that will be used to manage DB instance monitoring.
	// Default: - A role is automatically created for you.
	//
	MonitoringRole awsiam.IRole `field:"optional" json:"monitoringRole" yaml:"monitoringRole"`
	// Specifies if the database instance is a multiple Availability Zone deployment.
	// Default: false.
	//
	MultiAz *bool `field:"optional" json:"multiAz" yaml:"multiAz"`
	// The network type of the DB instance.
	// Default: - IPV4.
	//
	NetworkType NetworkType `field:"optional" json:"networkType" yaml:"networkType"`
	// The option group to associate with the instance.
	// Default: - no option group.
	//
	OptionGroup IOptionGroup `field:"optional" json:"optionGroup" yaml:"optionGroup"`
	// The DB parameter group to associate with the instance.
	// Default: - no parameter group.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The AWS KMS key for encryption of Performance Insights data.
	// Default: - default master key.
	//
	PerformanceInsightEncryptionKey awskms.IKey `field:"optional" json:"performanceInsightEncryptionKey" yaml:"performanceInsightEncryptionKey"`
	// The amount of time, in days, to retain Performance Insights data.
	// Default: 7 this is the free tier.
	//
	PerformanceInsightRetention PerformanceInsightRetention `field:"optional" json:"performanceInsightRetention" yaml:"performanceInsightRetention"`
	// The port for the instance.
	// Default: - the default port for the chosen engine.
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// The daily time range during which automated backups are performed.
	//
	// 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.
	// Default: - a 30-minute window selected at random from an 8-hour block of
	// time for each AWS Region. To see the time blocks available, see
	// https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow
	//
	PreferredBackupWindow *string `field:"optional" json:"preferredBackupWindow" yaml:"preferredBackupWindow"`
	// The weekly time range (in UTC) during which system maintenance can occur.
	//
	// Format: `ddd:hh24:mi-ddd:hh24:mi`
	// Constraint: Minimum 30-minute window.
	// Default: - 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 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance
	//
	PreferredMaintenanceWindow *string `field:"optional" json:"preferredMaintenanceWindow" yaml:"preferredMaintenanceWindow"`
	// The number of CPU cores and the number of threads per core.
	// Default: - the default number of CPU cores and threads per core for the
	// chosen instance class.
	//
	// See https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#USER_ConfigureProcessor
	//
	ProcessorFeatures *ProcessorFeatures `field:"optional" json:"processorFeatures" yaml:"processorFeatures"`
	// Indicates whether the DB instance is an internet-facing instance.
	// Default: - `true` if `vpcSubnets` is `subnetType: SubnetType.PUBLIC`, `false` otherwise
	//
	PubliclyAccessible *bool `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
	// The CloudFormation policy to apply when the instance is removed from the stack or replaced during an update.
	// Default: - RemovalPolicy.SNAPSHOT (remove the resource, but retain a snapshot of the data)
	//
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// S3 buckets that you want to load data into.
	//
	// This property must not be used if `s3ExportRole` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
	//
	// Default: - None.
	//
	S3ExportBuckets *[]awss3.IBucket `field:"optional" json:"s3ExportBuckets" yaml:"s3ExportBuckets"`
	// Role that will be associated with this DB instance to enable S3 export.
	//
	// This property must not be used if `s3ExportBuckets` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
	//
	// Default: - New role is created if `s3ExportBuckets` is set, no role is defined otherwise.
	//
	S3ExportRole awsiam.IRole `field:"optional" json:"s3ExportRole" yaml:"s3ExportRole"`
	// S3 buckets that you want to load data from.
	//
	// This feature is only supported by the Microsoft SQL Server, Oracle, and PostgreSQL engines.
	//
	// This property must not be used if `s3ImportRole` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
	//
	// Default: - None.
	//
	S3ImportBuckets *[]awss3.IBucket `field:"optional" json:"s3ImportBuckets" yaml:"s3ImportBuckets"`
	// Role that will be associated with this DB instance to enable S3 import.
	//
	// This feature is only supported by the Microsoft SQL Server, Oracle, and PostgreSQL engines.
	//
	// This property must not be used if `s3ImportBuckets` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
	//
	// Default: - New role is created if `s3ImportBuckets` is set, no role is defined otherwise.
	//
	S3ImportRole awsiam.IRole `field:"optional" json:"s3ImportRole" yaml:"s3ImportRole"`
	// The security groups to assign to the DB instance.
	// Default: - a new security group is created.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// The storage throughput, specified in mebibytes per second (MiBps).
	//
	// Only applicable for GP3.
	// See: https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/CHAP_Storage.html#gp3-storage
	//
	// Default: - 125 MiBps if allocated storage is less than 400 GiB for MariaDB, MySQL, and PostgreSQL,
	// less than 200 GiB for Oracle and less than 20 GiB for SQL Server. 500 MiBps otherwise (except for
	// SQL Server where the default is always 125 MiBps).
	//
	StorageThroughput *float64 `field:"optional" json:"storageThroughput" yaml:"storageThroughput"`
	// The storage type.
	//
	// Storage types supported are gp2, io1, standard.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#Concepts.Storage.GeneralSSD
	//
	// Default: GP2.
	//
	StorageType StorageType `field:"optional" json:"storageType" yaml:"storageType"`
	// Existing subnet group for the instance.
	// Default: - a new subnet group will be created.
	//
	SubnetGroup ISubnetGroup `field:"optional" json:"subnetGroup" yaml:"subnetGroup"`
	// The type of subnets to add to the created DB subnet group.
	// Default: - private subnets.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
	// The name of the compute and memory capacity classes.
	InstanceType awsec2.InstanceType `field:"required" json:"instanceType" yaml:"instanceType"`
	// The source database instance.
	//
	// Each DB instance can have a limited number of read replicas. For more
	// information, see https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/USER_ReadRepl.html.
	SourceDatabaseInstance IDatabaseInstance `field:"required" json:"sourceDatabaseInstance" yaml:"sourceDatabaseInstance"`
	// Indicates whether the DB instance is encrypted.
	// Default: - true if storageEncryptionKey has been provided, false otherwise.
	//
	StorageEncrypted *bool `field:"optional" json:"storageEncrypted" yaml:"storageEncrypted"`
	// The KMS key that's used to encrypt the DB instance.
	// Default: - default master key if storageEncrypted is true, no key otherwise.
	//
	StorageEncryptionKey awskms.IKey `field:"optional" json:"storageEncryptionKey" yaml:"storageEncryptionKey"`
}

Construction properties for a DatabaseInstanceReadReplica.

Example:

var vpc vpc

var sourceInstance databaseInstance

rds.NewDatabaseInstanceFromSnapshot(this, jsii.String("Instance"), &DatabaseInstanceFromSnapshotProps{
	SnapshotIdentifier: jsii.String("my-snapshot"),
	Engine: rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
		Version: rds.PostgresEngineVersion_VER_15_2(),
	}),
	// optional, defaults to m5.large
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_LARGE),
	Vpc: Vpc,
})
rds.NewDatabaseInstanceReadReplica(this, jsii.String("ReadReplica"), &DatabaseInstanceReadReplicaProps{
	SourceDatabaseInstance: sourceInstance,
	InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_BURSTABLE2, ec2.InstanceSize_LARGE),
	Vpc: Vpc,
})

type DatabaseInstanceSourceProps

type DatabaseInstanceSourceProps struct {
	// The VPC network where the DB subnet group should be created.
	Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// Indicates that minor engine upgrades are applied automatically to the DB instance during the maintenance window.
	// Default: true.
	//
	AutoMinorVersionUpgrade *bool `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// The name of the Availability Zone where the DB instance will be located.
	// Default: - no preference.
	//
	AvailabilityZone *string `field:"optional" json:"availabilityZone" yaml:"availabilityZone"`
	// The number of days during which automatic DB snapshots are retained.
	//
	// Set to zero to disable backups.
	// When creating a read replica, you must enable automatic backups on the source
	// database instance by setting the backup retention to a value other than zero.
	// Default: - Duration.days(1) for source instances, disabled for read replicas
	//
	BackupRetention awscdk.Duration `field:"optional" json:"backupRetention" yaml:"backupRetention"`
	// The identifier of the CA certificate for this DB instance.
	//
	// Specifying or updating this property triggers a reboot.
	//
	// For RDS DB engines:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html
	//
	// Default: - RDS will choose a certificate authority.
	//
	CaCertificate CaCertificate `field:"optional" json:"caCertificate" yaml:"caCertificate"`
	// The list of log types that need to be enabled for exporting to CloudWatch Logs.
	// Default: - no log exports.
	//
	CloudwatchLogsExports *[]*string `field:"optional" json:"cloudwatchLogsExports" yaml:"cloudwatchLogsExports"`
	// The number of days log events are kept in CloudWatch Logs.
	//
	// When updating
	// this property, unsetting it doesn't remove the log retention policy. To
	// remove the retention policy, set the value to `Infinity`.
	// Default: - logs never expire.
	//
	CloudwatchLogsRetention awslogs.RetentionDays `field:"optional" json:"cloudwatchLogsRetention" yaml:"cloudwatchLogsRetention"`
	// The IAM role for the Lambda function associated with the custom resource that sets the retention policy.
	// Default: - a new role is created.
	//
	CloudwatchLogsRetentionRole awsiam.IRole `field:"optional" json:"cloudwatchLogsRetentionRole" yaml:"cloudwatchLogsRetentionRole"`
	// Indicates whether to copy all of the user-defined tags from the DB instance to snapshots of the DB instance.
	// Default: true.
	//
	CopyTagsToSnapshot *bool `field:"optional" json:"copyTagsToSnapshot" yaml:"copyTagsToSnapshot"`
	// Indicates whether automated backups should be deleted or retained when you delete a DB instance.
	// Default: true.
	//
	DeleteAutomatedBackups *bool `field:"optional" json:"deleteAutomatedBackups" yaml:"deleteAutomatedBackups"`
	// Indicates whether the DB instance should have deletion protection enabled.
	// Default: - true if “removalPolicy“ is RETAIN, false otherwise.
	//
	DeletionProtection *bool `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// The Active Directory directory ID to create the DB instance in.
	// Default: - Do not join domain.
	//
	Domain *string `field:"optional" json:"domain" yaml:"domain"`
	// The IAM role to be used when making API calls to the Directory Service.
	//
	// The role needs the AWS-managed policy
	// AmazonRDSDirectoryServiceAccess or equivalent.
	// Default: - The role will be created for you if `DatabaseInstanceNewProps#domain` is specified.
	//
	DomainRole awsiam.IRole `field:"optional" json:"domainRole" yaml:"domainRole"`
	// Whether to enable Performance Insights for the DB instance.
	// Default: - false, unless “performanceInsightRetention“ or “performanceInsightEncryptionKey“ is set.
	//
	EnablePerformanceInsights *bool `field:"optional" json:"enablePerformanceInsights" yaml:"enablePerformanceInsights"`
	// Whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts.
	// Default: false.
	//
	IamAuthentication *bool `field:"optional" json:"iamAuthentication" yaml:"iamAuthentication"`
	// A name for the DB instance.
	//
	// If you specify a name, AWS CloudFormation
	// converts it to lowercase.
	// Default: - a CloudFormation generated name.
	//
	InstanceIdentifier *string `field:"optional" json:"instanceIdentifier" yaml:"instanceIdentifier"`
	// The number of I/O operations per second (IOPS) that the database provisions.
	//
	// The value must be equal to or greater than 1000.
	// Default: - no provisioned iops if storage type is not specified. For GP3: 3,000 IOPS if allocated
	// storage is less than 400 GiB for MariaDB, MySQL, and PostgreSQL, less than 200 GiB for Oracle and
	// less than 20 GiB for SQL Server. 12,000 IOPS otherwise (except for SQL Server where the default is
	// always 3,000 IOPS).
	//
	Iops *float64 `field:"optional" json:"iops" yaml:"iops"`
	// Upper limit to which RDS can scale the storage in GiB(Gibibyte).
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling
	//
	// Default: - No autoscaling of RDS instance.
	//
	MaxAllocatedStorage *float64 `field:"optional" json:"maxAllocatedStorage" yaml:"maxAllocatedStorage"`
	// The interval, in seconds, between points when Amazon RDS collects enhanced monitoring metrics for the DB instance.
	// Default: - no enhanced monitoring.
	//
	MonitoringInterval awscdk.Duration `field:"optional" json:"monitoringInterval" yaml:"monitoringInterval"`
	// Role that will be used to manage DB instance monitoring.
	// Default: - A role is automatically created for you.
	//
	MonitoringRole awsiam.IRole `field:"optional" json:"monitoringRole" yaml:"monitoringRole"`
	// Specifies if the database instance is a multiple Availability Zone deployment.
	// Default: false.
	//
	MultiAz *bool `field:"optional" json:"multiAz" yaml:"multiAz"`
	// The network type of the DB instance.
	// Default: - IPV4.
	//
	NetworkType NetworkType `field:"optional" json:"networkType" yaml:"networkType"`
	// The option group to associate with the instance.
	// Default: - no option group.
	//
	OptionGroup IOptionGroup `field:"optional" json:"optionGroup" yaml:"optionGroup"`
	// The DB parameter group to associate with the instance.
	// Default: - no parameter group.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The AWS KMS key for encryption of Performance Insights data.
	// Default: - default master key.
	//
	PerformanceInsightEncryptionKey awskms.IKey `field:"optional" json:"performanceInsightEncryptionKey" yaml:"performanceInsightEncryptionKey"`
	// The amount of time, in days, to retain Performance Insights data.
	// Default: 7 this is the free tier.
	//
	PerformanceInsightRetention PerformanceInsightRetention `field:"optional" json:"performanceInsightRetention" yaml:"performanceInsightRetention"`
	// The port for the instance.
	// Default: - the default port for the chosen engine.
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// The daily time range during which automated backups are performed.
	//
	// 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.
	// Default: - a 30-minute window selected at random from an 8-hour block of
	// time for each AWS Region. To see the time blocks available, see
	// https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow
	//
	PreferredBackupWindow *string `field:"optional" json:"preferredBackupWindow" yaml:"preferredBackupWindow"`
	// The weekly time range (in UTC) during which system maintenance can occur.
	//
	// Format: `ddd:hh24:mi-ddd:hh24:mi`
	// Constraint: Minimum 30-minute window.
	// Default: - 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 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance
	//
	PreferredMaintenanceWindow *string `field:"optional" json:"preferredMaintenanceWindow" yaml:"preferredMaintenanceWindow"`
	// The number of CPU cores and the number of threads per core.
	// Default: - the default number of CPU cores and threads per core for the
	// chosen instance class.
	//
	// See https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#USER_ConfigureProcessor
	//
	ProcessorFeatures *ProcessorFeatures `field:"optional" json:"processorFeatures" yaml:"processorFeatures"`
	// Indicates whether the DB instance is an internet-facing instance.
	// Default: - `true` if `vpcSubnets` is `subnetType: SubnetType.PUBLIC`, `false` otherwise
	//
	PubliclyAccessible *bool `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
	// The CloudFormation policy to apply when the instance is removed from the stack or replaced during an update.
	// Default: - RemovalPolicy.SNAPSHOT (remove the resource, but retain a snapshot of the data)
	//
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// S3 buckets that you want to load data into.
	//
	// This property must not be used if `s3ExportRole` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
	//
	// Default: - None.
	//
	S3ExportBuckets *[]awss3.IBucket `field:"optional" json:"s3ExportBuckets" yaml:"s3ExportBuckets"`
	// Role that will be associated with this DB instance to enable S3 export.
	//
	// This property must not be used if `s3ExportBuckets` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html
	//
	// Default: - New role is created if `s3ExportBuckets` is set, no role is defined otherwise.
	//
	S3ExportRole awsiam.IRole `field:"optional" json:"s3ExportRole" yaml:"s3ExportRole"`
	// S3 buckets that you want to load data from.
	//
	// This feature is only supported by the Microsoft SQL Server, Oracle, and PostgreSQL engines.
	//
	// This property must not be used if `s3ImportRole` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
	//
	// Default: - None.
	//
	S3ImportBuckets *[]awss3.IBucket `field:"optional" json:"s3ImportBuckets" yaml:"s3ImportBuckets"`
	// Role that will be associated with this DB instance to enable S3 import.
	//
	// This feature is only supported by the Microsoft SQL Server, Oracle, and PostgreSQL engines.
	//
	// This property must not be used if `s3ImportBuckets` is used.
	//
	// For Microsoft SQL Server:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
	//
	// Default: - New role is created if `s3ImportBuckets` is set, no role is defined otherwise.
	//
	S3ImportRole awsiam.IRole `field:"optional" json:"s3ImportRole" yaml:"s3ImportRole"`
	// The security groups to assign to the DB instance.
	// Default: - a new security group is created.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// The storage throughput, specified in mebibytes per second (MiBps).
	//
	// Only applicable for GP3.
	// See: https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/CHAP_Storage.html#gp3-storage
	//
	// Default: - 125 MiBps if allocated storage is less than 400 GiB for MariaDB, MySQL, and PostgreSQL,
	// less than 200 GiB for Oracle and less than 20 GiB for SQL Server. 500 MiBps otherwise (except for
	// SQL Server where the default is always 125 MiBps).
	//
	StorageThroughput *float64 `field:"optional" json:"storageThroughput" yaml:"storageThroughput"`
	// The storage type.
	//
	// Storage types supported are gp2, io1, standard.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#Concepts.Storage.GeneralSSD
	//
	// Default: GP2.
	//
	StorageType StorageType `field:"optional" json:"storageType" yaml:"storageType"`
	// Existing subnet group for the instance.
	// Default: - a new subnet group will be created.
	//
	SubnetGroup ISubnetGroup `field:"optional" json:"subnetGroup" yaml:"subnetGroup"`
	// The type of subnets to add to the created DB subnet group.
	// Default: - private subnets.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
	// The database engine.
	Engine IInstanceEngine `field:"required" json:"engine" yaml:"engine"`
	// The allocated storage size, specified in gibibytes (GiB).
	// Default: 100.
	//
	AllocatedStorage *float64 `field:"optional" json:"allocatedStorage" yaml:"allocatedStorage"`
	// Whether to allow major version upgrades.
	// Default: false.
	//
	AllowMajorVersionUpgrade *bool `field:"optional" json:"allowMajorVersionUpgrade" yaml:"allowMajorVersionUpgrade"`
	// The name of the database.
	// Default: - no name.
	//
	DatabaseName *string `field:"optional" json:"databaseName" yaml:"databaseName"`
	// The name of the compute and memory capacity for the instance.
	// Default: - m5.large (or, more specifically, db.m5.large)
	//
	InstanceType awsec2.InstanceType `field:"optional" json:"instanceType" yaml:"instanceType"`
	// The license model.
	// Default: - RDS default license model.
	//
	LicenseModel LicenseModel `field:"optional" json:"licenseModel" yaml:"licenseModel"`
	// The parameters in the DBParameterGroup to create automatically.
	//
	// You can only specify parameterGroup or parameters but not both.
	// You need to use a versioned engine to auto-generate a DBParameterGroup.
	// Default: - None.
	//
	Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"`
	// The time zone of the instance.
	//
	// This is currently supported only by Microsoft Sql Server.
	// Default: - RDS default timezone.
	//
	Timezone *string `field:"optional" json:"timezone" yaml:"timezone"`
}

Construction properties for a DatabaseInstanceSource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var bucket bucket
var caCertificate caCertificate
var instanceEngine iInstanceEngine
var instanceType instanceType
var key key
var optionGroup optionGroup
var parameterGroup parameterGroup
var role role
var securityGroup securityGroup
var subnet subnet
var subnetFilter subnetFilter
var subnetGroup subnetGroup
var vpc vpc

databaseInstanceSourceProps := &DatabaseInstanceSourceProps{
	Engine: instanceEngine,
	Vpc: vpc,

	// the properties below are optional
	AllocatedStorage: jsii.Number(123),
	AllowMajorVersionUpgrade: jsii.Boolean(false),
	AutoMinorVersionUpgrade: jsii.Boolean(false),
	AvailabilityZone: jsii.String("availabilityZone"),
	BackupRetention: cdk.Duration_Minutes(jsii.Number(30)),
	CaCertificate: caCertificate,
	CloudwatchLogsExports: []*string{
		jsii.String("cloudwatchLogsExports"),
	},
	CloudwatchLogsRetention: awscdk.Aws_logs.RetentionDays_ONE_DAY,
	CloudwatchLogsRetentionRole: role,
	CopyTagsToSnapshot: jsii.Boolean(false),
	DatabaseName: jsii.String("databaseName"),
	DeleteAutomatedBackups: jsii.Boolean(false),
	DeletionProtection: jsii.Boolean(false),
	Domain: jsii.String("domain"),
	DomainRole: role,
	EnablePerformanceInsights: jsii.Boolean(false),
	IamAuthentication: jsii.Boolean(false),
	InstanceIdentifier: jsii.String("instanceIdentifier"),
	InstanceType: instanceType,
	Iops: jsii.Number(123),
	LicenseModel: awscdk.Aws_rds.LicenseModel_LICENSE_INCLUDED,
	MaxAllocatedStorage: jsii.Number(123),
	MonitoringInterval: cdk.Duration_*Minutes(jsii.Number(30)),
	MonitoringRole: role,
	MultiAz: jsii.Boolean(false),
	NetworkType: awscdk.*Aws_rds.NetworkType_IPV4,
	OptionGroup: optionGroup,
	ParameterGroup: parameterGroup,
	Parameters: map[string]*string{
		"parametersKey": jsii.String("parameters"),
	},
	PerformanceInsightEncryptionKey: key,
	PerformanceInsightRetention: awscdk.*Aws_rds.PerformanceInsightRetention_DEFAULT,
	Port: jsii.Number(123),
	PreferredBackupWindow: jsii.String("preferredBackupWindow"),
	PreferredMaintenanceWindow: jsii.String("preferredMaintenanceWindow"),
	ProcessorFeatures: &ProcessorFeatures{
		CoreCount: jsii.Number(123),
		ThreadsPerCore: jsii.Number(123),
	},
	PubliclyAccessible: jsii.Boolean(false),
	RemovalPolicy: cdk.RemovalPolicy_DESTROY,
	S3ExportBuckets: []iBucket{
		bucket,
	},
	S3ExportRole: role,
	S3ImportBuckets: []*iBucket{
		bucket,
	},
	S3ImportRole: role,
	SecurityGroups: []iSecurityGroup{
		securityGroup,
	},
	StorageThroughput: jsii.Number(123),
	StorageType: awscdk.*Aws_rds.StorageType_STANDARD,
	SubnetGroup: subnetGroup,
	Timezone: jsii.String("timezone"),
	VpcSubnets: &SubnetSelection{
		AvailabilityZones: []*string{
			jsii.String("availabilityZones"),
		},
		OnePerAz: jsii.Boolean(false),
		SubnetFilters: []*subnetFilter{
			subnetFilter,
		},
		SubnetGroupName: jsii.String("subnetGroupName"),
		Subnets: []iSubnet{
			subnet,
		},
		SubnetType: awscdk.Aws_ec2.SubnetType_PRIVATE_ISOLATED,
	},
}

type DatabaseProxy

type DatabaseProxy interface {
	awscdk.Resource
	awsec2.IConnectable
	IDatabaseProxy
	awssecretsmanager.ISecretAttachmentTarget
	// Access to network connections.
	Connections() awsec2.Connections
	// DB Proxy ARN.
	DbProxyArn() *string
	// DB Proxy Name.
	DbProxyName() *string
	// Endpoint.
	Endpoint() *string
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Renders the secret attachment target specifications.
	AsSecretAttachmentTarget() *awssecretsmanager.SecretAttachmentTargetProps
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Grant the given identity connection access to the proxy.
	GrantConnect(grantee awsiam.IGrantable, dbUser *string) awsiam.Grant
	// Returns a string representation of this construct.
	ToString() *string
}

RDS Database Proxy.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_03_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Vpc: Vpc,
})

proxy := rds.NewDatabaseProxy(this, jsii.String("Proxy"), &DatabaseProxyProps{
	ProxyTarget: rds.ProxyTarget_FromCluster(cluster),
	Secrets: []iSecret{
		cluster.Secret,
	},
	Vpc: Vpc,
})

role := iam.NewRole(this, jsii.String("DBProxyRole"), &RoleProps{
	AssumedBy: iam.NewAccountPrincipal(this.Account),
})
proxy.GrantConnect(role, jsii.String("admin"))

func NewDatabaseProxy

func NewDatabaseProxy(scope constructs.Construct, id *string, props *DatabaseProxyProps) DatabaseProxy

type DatabaseProxyAttributes

type DatabaseProxyAttributes struct {
	// DB Proxy ARN.
	DbProxyArn *string `field:"required" json:"dbProxyArn" yaml:"dbProxyArn"`
	// DB Proxy Name.
	DbProxyName *string `field:"required" json:"dbProxyName" yaml:"dbProxyName"`
	// Endpoint.
	Endpoint *string `field:"required" json:"endpoint" yaml:"endpoint"`
	// The security groups of the instance.
	SecurityGroups *[]awsec2.ISecurityGroup `field:"required" json:"securityGroups" yaml:"securityGroups"`
}

Properties that describe an existing DB Proxy.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var securityGroup securityGroup

databaseProxyAttributes := &DatabaseProxyAttributes{
	DbProxyArn: jsii.String("dbProxyArn"),
	DbProxyName: jsii.String("dbProxyName"),
	Endpoint: jsii.String("endpoint"),
	SecurityGroups: []iSecurityGroup{
		securityGroup,
	},
}

type DatabaseProxyOptions

type DatabaseProxyOptions struct {
	// The secret that the proxy uses to authenticate to the RDS DB instance or Aurora DB cluster.
	//
	// These secrets are stored within Amazon Secrets Manager.
	// One or more secrets are required.
	Secrets *[]awssecretsmanager.ISecret `field:"required" json:"secrets" yaml:"secrets"`
	// The VPC to associate with the new proxy.
	Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// The duration for a proxy to wait for a connection to become available in the connection pool.
	//
	// Only applies when the proxy has opened its maximum number of connections and all connections are busy with client
	// sessions.
	//
	// Value must be between 1 second and 1 hour, or `Duration.seconds(0)` to represent unlimited.
	// Default: cdk.Duration.seconds(120)
	//
	BorrowTimeout awscdk.Duration `field:"optional" json:"borrowTimeout" yaml:"borrowTimeout"`
	// The identifier for the proxy.
	//
	// This name must be unique for all proxies owned by your AWS account in the specified AWS Region.
	// An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens;
	// it can't end with a hyphen or contain two consecutive hyphens.
	// Default: - Generated by CloudFormation (recommended).
	//
	DbProxyName *string `field:"optional" json:"dbProxyName" yaml:"dbProxyName"`
	// Whether the proxy includes detailed information about SQL statements in its logs.
	//
	// This information helps you to debug issues involving SQL behavior or the performance and scalability of the proxy connections.
	// The debug information includes the text of SQL statements that you submit through the proxy.
	// Thus, only enable this setting when needed for debugging, and only when you have security measures in place to safeguard any sensitive
	// information that appears in the logs.
	// Default: false.
	//
	DebugLogging *bool `field:"optional" json:"debugLogging" yaml:"debugLogging"`
	// Whether to require or disallow AWS Identity and Access Management (IAM) authentication for connections to the proxy.
	// Default: false.
	//
	IamAuth *bool `field:"optional" json:"iamAuth" yaml:"iamAuth"`
	// The number of seconds that a connection to the proxy can be inactive before the proxy disconnects it.
	//
	// You can set this value higher or lower than the connection timeout limit for the associated database.
	// Default: cdk.Duration.minutes(30)
	//
	IdleClientTimeout awscdk.Duration `field:"optional" json:"idleClientTimeout" yaml:"idleClientTimeout"`
	// One or more SQL statements for the proxy to run when opening each new database connection.
	//
	// Typically used with SET statements to make sure that each connection has identical settings such as time zone
	// and character set.
	// For multiple statements, use semicolons as the separator.
	// You can also include multiple variables in a single SET statement, such as SET x=1, y=2.
	//
	// not currently supported for PostgreSQL.
	// Default: - no initialization query.
	//
	InitQuery *string `field:"optional" json:"initQuery" yaml:"initQuery"`
	// The maximum size of the connection pool for each target in a target group.
	//
	// For Aurora MySQL, it is expressed as a percentage of the max_connections setting for the RDS DB instance or Aurora DB
	// cluster used by the target group.
	//
	// 1-100.
	// Default: 100.
	//
	MaxConnectionsPercent *float64 `field:"optional" json:"maxConnectionsPercent" yaml:"maxConnectionsPercent"`
	// Controls how actively the proxy closes idle database connections in the connection pool.
	//
	// A high value enables the proxy to leave a high percentage of idle connections open.
	// A low value causes the proxy to close idle client connections and return the underlying database connections
	// to the connection pool.
	// For Aurora MySQL, it is expressed as a percentage of the max_connections setting for the RDS DB instance
	// or Aurora DB cluster used by the target group.
	//
	// between 0 and MaxConnectionsPercent.
	// Default: 50.
	//
	MaxIdleConnectionsPercent *float64 `field:"optional" json:"maxIdleConnectionsPercent" yaml:"maxIdleConnectionsPercent"`
	// A Boolean parameter that specifies whether Transport Layer Security (TLS) encryption is required for connections to the proxy.
	//
	// By enabling this setting, you can enforce encrypted TLS connections to the proxy.
	// Default: true.
	//
	RequireTLS *bool `field:"optional" json:"requireTLS" yaml:"requireTLS"`
	// IAM role that the proxy uses to access secrets in AWS Secrets Manager.
	// Default: - A role will automatically be created.
	//
	Role awsiam.IRole `field:"optional" json:"role" yaml:"role"`
	// One or more VPC security groups to associate with the new proxy.
	// Default: - No security groups.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// Each item in the list represents a class of SQL operations that normally cause all later statements in a session using a proxy to be pinned to the same underlying database connection.
	//
	// Including an item in the list exempts that class of SQL operations from the pinning behavior.
	// Default: - no session pinning filters.
	//
	SessionPinningFilters *[]SessionPinningFilter `field:"optional" json:"sessionPinningFilters" yaml:"sessionPinningFilters"`
	// The subnets used by the proxy.
	// Default: - the VPC default strategy if not specified.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
}

Options for a new DatabaseProxy.

Example:

var vpc vpc
var securityGroup securityGroup
var secrets []secret
var dbInstance databaseInstance

proxy := dbInstance.AddProxy(jsii.String("proxy"), &DatabaseProxyOptions{
	BorrowTimeout: awscdk.Duration_Seconds(jsii.Number(30)),
	MaxConnectionsPercent: jsii.Number(50),
	Secrets: Secrets,
	Vpc: Vpc,
})

type DatabaseProxyProps

type DatabaseProxyProps struct {
	// The secret that the proxy uses to authenticate to the RDS DB instance or Aurora DB cluster.
	//
	// These secrets are stored within Amazon Secrets Manager.
	// One or more secrets are required.
	Secrets *[]awssecretsmanager.ISecret `field:"required" json:"secrets" yaml:"secrets"`
	// The VPC to associate with the new proxy.
	Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// The duration for a proxy to wait for a connection to become available in the connection pool.
	//
	// Only applies when the proxy has opened its maximum number of connections and all connections are busy with client
	// sessions.
	//
	// Value must be between 1 second and 1 hour, or `Duration.seconds(0)` to represent unlimited.
	// Default: cdk.Duration.seconds(120)
	//
	BorrowTimeout awscdk.Duration `field:"optional" json:"borrowTimeout" yaml:"borrowTimeout"`
	// The identifier for the proxy.
	//
	// This name must be unique for all proxies owned by your AWS account in the specified AWS Region.
	// An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens;
	// it can't end with a hyphen or contain two consecutive hyphens.
	// Default: - Generated by CloudFormation (recommended).
	//
	DbProxyName *string `field:"optional" json:"dbProxyName" yaml:"dbProxyName"`
	// Whether the proxy includes detailed information about SQL statements in its logs.
	//
	// This information helps you to debug issues involving SQL behavior or the performance and scalability of the proxy connections.
	// The debug information includes the text of SQL statements that you submit through the proxy.
	// Thus, only enable this setting when needed for debugging, and only when you have security measures in place to safeguard any sensitive
	// information that appears in the logs.
	// Default: false.
	//
	DebugLogging *bool `field:"optional" json:"debugLogging" yaml:"debugLogging"`
	// Whether to require or disallow AWS Identity and Access Management (IAM) authentication for connections to the proxy.
	// Default: false.
	//
	IamAuth *bool `field:"optional" json:"iamAuth" yaml:"iamAuth"`
	// The number of seconds that a connection to the proxy can be inactive before the proxy disconnects it.
	//
	// You can set this value higher or lower than the connection timeout limit for the associated database.
	// Default: cdk.Duration.minutes(30)
	//
	IdleClientTimeout awscdk.Duration `field:"optional" json:"idleClientTimeout" yaml:"idleClientTimeout"`
	// One or more SQL statements for the proxy to run when opening each new database connection.
	//
	// Typically used with SET statements to make sure that each connection has identical settings such as time zone
	// and character set.
	// For multiple statements, use semicolons as the separator.
	// You can also include multiple variables in a single SET statement, such as SET x=1, y=2.
	//
	// not currently supported for PostgreSQL.
	// Default: - no initialization query.
	//
	InitQuery *string `field:"optional" json:"initQuery" yaml:"initQuery"`
	// The maximum size of the connection pool for each target in a target group.
	//
	// For Aurora MySQL, it is expressed as a percentage of the max_connections setting for the RDS DB instance or Aurora DB
	// cluster used by the target group.
	//
	// 1-100.
	// Default: 100.
	//
	MaxConnectionsPercent *float64 `field:"optional" json:"maxConnectionsPercent" yaml:"maxConnectionsPercent"`
	// Controls how actively the proxy closes idle database connections in the connection pool.
	//
	// A high value enables the proxy to leave a high percentage of idle connections open.
	// A low value causes the proxy to close idle client connections and return the underlying database connections
	// to the connection pool.
	// For Aurora MySQL, it is expressed as a percentage of the max_connections setting for the RDS DB instance
	// or Aurora DB cluster used by the target group.
	//
	// between 0 and MaxConnectionsPercent.
	// Default: 50.
	//
	MaxIdleConnectionsPercent *float64 `field:"optional" json:"maxIdleConnectionsPercent" yaml:"maxIdleConnectionsPercent"`
	// A Boolean parameter that specifies whether Transport Layer Security (TLS) encryption is required for connections to the proxy.
	//
	// By enabling this setting, you can enforce encrypted TLS connections to the proxy.
	// Default: true.
	//
	RequireTLS *bool `field:"optional" json:"requireTLS" yaml:"requireTLS"`
	// IAM role that the proxy uses to access secrets in AWS Secrets Manager.
	// Default: - A role will automatically be created.
	//
	Role awsiam.IRole `field:"optional" json:"role" yaml:"role"`
	// One or more VPC security groups to associate with the new proxy.
	// Default: - No security groups.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// Each item in the list represents a class of SQL operations that normally cause all later statements in a session using a proxy to be pinned to the same underlying database connection.
	//
	// Including an item in the list exempts that class of SQL operations from the pinning behavior.
	// Default: - no session pinning filters.
	//
	SessionPinningFilters *[]SessionPinningFilter `field:"optional" json:"sessionPinningFilters" yaml:"sessionPinningFilters"`
	// The subnets used by the proxy.
	// Default: - the VPC default strategy if not specified.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
	// DB proxy target: Instance or Cluster.
	ProxyTarget ProxyTarget `field:"required" json:"proxyTarget" yaml:"proxyTarget"`
}

Construction properties for a DatabaseProxy.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_03_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Vpc: Vpc,
})

proxy := rds.NewDatabaseProxy(this, jsii.String("Proxy"), &DatabaseProxyProps{
	ProxyTarget: rds.ProxyTarget_FromCluster(cluster),
	Secrets: []iSecret{
		cluster.Secret,
	},
	Vpc: Vpc,
})

role := iam.NewRole(this, jsii.String("DBProxyRole"), &RoleProps{
	AssumedBy: iam.NewAccountPrincipal(this.Account),
})
proxy.GrantConnect(role, jsii.String("admin"))

type DatabaseSecret

type DatabaseSecret interface {
	awssecretsmanager.Secret
	// Provides an identifier for this secret for use in IAM policies.
	//
	// If there is a full ARN, this is just the ARN;
	// if we have a partial ARN -- due to either importing by secret name or partial ARN --
	// then we need to add a suffix to capture the full ARN's format.
	ArnForPolicies() *string
	AutoCreatePolicy() *bool
	// The customer-managed encryption key that is used to encrypt this secret, if any.
	//
	// When not specified, the default
	// KMS key for the account and region is being used.
	EncryptionKey() awskms.IKey
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The string of the characters that are excluded in this secret when it is generated.
	ExcludeCharacters() *string
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The ARN of the secret in AWS Secrets Manager.
	//
	// Will return the full ARN if available, otherwise a partial arn.
	// For secrets imported by the deprecated `fromSecretName`, it will return the `secretName`.
	SecretArn() *string
	// The full ARN of the secret in AWS Secrets Manager, which is the ARN including the Secrets Manager-supplied 6-character suffix.
	//
	// This is equal to `secretArn` in most cases, but is undefined when a full ARN is not available (e.g., secrets imported by name).
	SecretFullArn() *string
	// The name of the secret.
	//
	// For "owned" secrets, this will be the full resource name (secret name + suffix), unless the
	// '@aws-cdk/aws-secretsmanager:parseOwnedSecretName' feature flag is set.
	SecretName() *string
	// Retrieve the value of the stored secret as a `SecretValue`.
	SecretValue() awscdk.SecretValue
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// Adds a replica region for the secret.
	AddReplicaRegion(region *string, encryptionKey awskms.IKey)
	// Adds a rotation schedule to the secret.
	AddRotationSchedule(id *string, options *awssecretsmanager.RotationScheduleOptions) awssecretsmanager.RotationSchedule
	// Adds a statement to the IAM resource policy associated with this secret.
	//
	// If this secret was created in this stack, a resource policy will be
	// automatically created upon the first call to `addToResourcePolicy`. If
	// the secret is imported, then this is a no-op.
	AddToResourcePolicy(statement awsiam.PolicyStatement) *awsiam.AddToResourcePolicyResult
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Attach a target to this secret.
	//
	// Returns: An attached secret.
	Attach(target awssecretsmanager.ISecretAttachmentTarget) awssecretsmanager.ISecret
	// Denies the `DeleteSecret` action to all principals within the current account.
	DenyAccountRootDelete()
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Grants reading the secret value to some role.
	GrantRead(grantee awsiam.IGrantable, versionStages *[]*string) awsiam.Grant
	// Grants writing and updating the secret value to some role.
	GrantWrite(grantee awsiam.IGrantable) awsiam.Grant
	// Interpret the secret as a JSON object and return a field's value from it as a `SecretValue`.
	SecretValueFromJson(jsonField *string) awscdk.SecretValue
	// Returns a string representation of this construct.
	ToString() *string
}

A database secret.

Example:

// Build a data source for AppSync to access the database.
var api graphqlApi
// Create username and password secret for DB Cluster
secret := rds.NewDatabaseSecret(this, jsii.String("AuroraSecret"), &DatabaseSecretProps{
	Username: jsii.String("clusteradmin"),
})

// The VPC to place the cluster in
vpc := ec2.NewVpc(this, jsii.String("AuroraVpc"))

// Create the serverless cluster, provide all values needed to customise the database.
cluster := rds.NewServerlessCluster(this, jsii.String("AuroraCluster"), &ServerlessClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA_MYSQL(),
	Vpc: Vpc,
	Credentials: map[string]*string{
		"username": jsii.String("clusteradmin"),
	},
	ClusterIdentifier: jsii.String("db-endpoint-test"),
	DefaultDatabaseName: jsii.String("demos"),
})
rdsDS := api.AddRdsDataSource(jsii.String("rds"), cluster, secret, jsii.String("demos"))

// Set up a resolver for an RDS query.
rdsDS.CreateResolver(jsii.String("QueryGetDemosRdsResolver"), &BaseResolverProps{
	TypeName: jsii.String("Query"),
	FieldName: jsii.String("getDemosRds"),
	RequestMappingTemplate: appsync.MappingTemplate_FromString(jsii.String(`
	  {
	    "version": "2018-05-29",
	    "statements": [
	      "SELECT * FROM demos"
	    ]
	  }
	  `)),
	ResponseMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	    $utils.toJson($utils.rds.toJsonObject($ctx.result)[0])
	  `)),
})

// Set up a resolver for an RDS mutation.
rdsDS.CreateResolver(jsii.String("MutationAddDemoRdsResolver"), &BaseResolverProps{
	TypeName: jsii.String("Mutation"),
	FieldName: jsii.String("addDemoRds"),
	RequestMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	  {
	    "version": "2018-05-29",
	    "statements": [
	      "INSERT INTO demos VALUES (:id, :version)",
	      "SELECT * WHERE id = :id"
	    ],
	    "variableMap": {
	      ":id": $util.toJson($util.autoId()),
	      ":version": $util.toJson($ctx.args.version)
	    }
	  }
	  `)),
	ResponseMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	    $utils.toJson($utils.rds.toJsonObject($ctx.result)[1][0])
	  `)),
})

func NewDatabaseSecret

func NewDatabaseSecret(scope constructs.Construct, id *string, props *DatabaseSecretProps) DatabaseSecret

type DatabaseSecretProps

type DatabaseSecretProps struct {
	// The username.
	Username *string `field:"required" json:"username" yaml:"username"`
	// The database name, if not using the default one.
	// Default: - whatever the secret generates after the attach method is run.
	//
	Dbname *string `field:"optional" json:"dbname" yaml:"dbname"`
	// The KMS key to use to encrypt the secret.
	// Default: default master key.
	//
	EncryptionKey awskms.IKey `field:"optional" json:"encryptionKey" yaml:"encryptionKey"`
	// Characters to not include in the generated password.
	// Default: " %+~`#$&*()|[]{}:;<>?!'/@\"\\"
	//
	ExcludeCharacters *string `field:"optional" json:"excludeCharacters" yaml:"excludeCharacters"`
	// The master secret which will be used to rotate this secret.
	// Default: - no master secret information will be included.
	//
	MasterSecret awssecretsmanager.ISecret `field:"optional" json:"masterSecret" yaml:"masterSecret"`
	// Whether to replace this secret when the criteria for the password change.
	//
	// This is achieved by overriding the logical id of the AWS::SecretsManager::Secret
	// with a hash of the options that influence the password generation. This
	// way a new secret will be created when the password is regenerated and the
	// cluster or instance consuming this secret will have its credentials updated.
	// Default: false.
	//
	ReplaceOnPasswordCriteriaChanges *bool `field:"optional" json:"replaceOnPasswordCriteriaChanges" yaml:"replaceOnPasswordCriteriaChanges"`
	// A list of regions where to replicate this secret.
	// Default: - Secret is not replicated.
	//
	ReplicaRegions *[]*awssecretsmanager.ReplicaRegion `field:"optional" json:"replicaRegions" yaml:"replicaRegions"`
	// A name for the secret.
	// Default: - A name is generated by CloudFormation.
	//
	SecretName *string `field:"optional" json:"secretName" yaml:"secretName"`
}

Construction properties for a DatabaseSecret.

Example:

// Build a data source for AppSync to access the database.
var api graphqlApi
// Create username and password secret for DB Cluster
secret := rds.NewDatabaseSecret(this, jsii.String("AuroraSecret"), &DatabaseSecretProps{
	Username: jsii.String("clusteradmin"),
})

// The VPC to place the cluster in
vpc := ec2.NewVpc(this, jsii.String("AuroraVpc"))

// Create the serverless cluster, provide all values needed to customise the database.
cluster := rds.NewServerlessCluster(this, jsii.String("AuroraCluster"), &ServerlessClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA_MYSQL(),
	Vpc: Vpc,
	Credentials: map[string]*string{
		"username": jsii.String("clusteradmin"),
	},
	ClusterIdentifier: jsii.String("db-endpoint-test"),
	DefaultDatabaseName: jsii.String("demos"),
})
rdsDS := api.AddRdsDataSource(jsii.String("rds"), cluster, secret, jsii.String("demos"))

// Set up a resolver for an RDS query.
rdsDS.CreateResolver(jsii.String("QueryGetDemosRdsResolver"), &BaseResolverProps{
	TypeName: jsii.String("Query"),
	FieldName: jsii.String("getDemosRds"),
	RequestMappingTemplate: appsync.MappingTemplate_FromString(jsii.String(`
	  {
	    "version": "2018-05-29",
	    "statements": [
	      "SELECT * FROM demos"
	    ]
	  }
	  `)),
	ResponseMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	    $utils.toJson($utils.rds.toJsonObject($ctx.result)[0])
	  `)),
})

// Set up a resolver for an RDS mutation.
rdsDS.CreateResolver(jsii.String("MutationAddDemoRdsResolver"), &BaseResolverProps{
	TypeName: jsii.String("Mutation"),
	FieldName: jsii.String("addDemoRds"),
	RequestMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	  {
	    "version": "2018-05-29",
	    "statements": [
	      "INSERT INTO demos VALUES (:id, :version)",
	      "SELECT * WHERE id = :id"
	    ],
	    "variableMap": {
	      ":id": $util.toJson($util.autoId()),
	      ":version": $util.toJson($ctx.args.version)
	    }
	  }
	  `)),
	ResponseMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	    $utils.toJson($utils.rds.toJsonObject($ctx.result)[1][0])
	  `)),
})

type Endpoint

type Endpoint interface {
	// The hostname of the endpoint.
	Hostname() *string
	// The port of the endpoint.
	Port() *float64
	// The combination of "HOSTNAME:PORT" for this endpoint.
	SocketAddress() *string
}

Connection endpoint of a database cluster or instance.

Consists of a combination of hostname and port.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

endpoint := awscdk.Aws_rds.NewEndpoint(jsii.String("address"), jsii.Number(123))

func NewEndpoint

func NewEndpoint(address *string, port *float64) Endpoint

type EngineVersion

type EngineVersion struct {
	// The major version of the engine, for example, "5.6". Used in specifying the ParameterGroup family and OptionGroup version for this engine.
	MajorVersion *string `field:"required" json:"majorVersion" yaml:"majorVersion"`
	// The full version string of the engine, for example, "5.6.mysql_aurora.1.22.1". It can be undefined, which means RDS should use whatever version it deems appropriate for the given engine type.
	// Default: - no version specified.
	//
	FullVersion *string `field:"optional" json:"fullVersion" yaml:"fullVersion"`
}

A version of an engine - for either a cluster, or instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

engineVersion := &EngineVersion{
	MajorVersion: jsii.String("majorVersion"),

	// the properties below are optional
	FullVersion: jsii.String("fullVersion"),
}

type IAuroraClusterInstance added in v2.82.0

type IAuroraClusterInstance interface {
	awscdk.IResource
	// The instance ARN.
	DbInstanceArn() *string
	// The instance endpoint address.
	DbInstanceEndpointAddress() *string
	// The instance resource ID.
	DbiResourceId() *string
	// The instance identifier.
	InstanceIdentifier() *string
	// The instance size if the instance is a provisioned type.
	InstanceSize() *string
	// Te promotion tier the instance was created in.
	Tier() *float64
	// The instance type (provisioned vs serverless v2).
	Type() InstanceType
}

An Aurora Cluster Instance.

type IClusterEngine

type IClusterEngine interface {
	IEngine
	// Method called when the engine is used to create a new cluster.
	BindToCluster(scope constructs.Construct, options *ClusterEngineBindOptions) *ClusterEngineConfig
	// Whether the IAM Roles used for data importing and exporting need to be combined for this Engine, or can they be kept separate.
	// Default: false.
	//
	CombineImportAndExportRoles() *bool
	// The application used by this engine to perform rotation for a multi-user scenario.
	MultiUserRotationApplication() awssecretsmanager.SecretRotationApplication
	// The application used by this engine to perform rotation for a single-user scenario.
	SingleUserRotationApplication() awssecretsmanager.SecretRotationApplication
	// The log types that are available with this engine type.
	SupportedLogTypes() *[]*string
}

The interface representing a database cluster (as opposed to instance) engine.

func DatabaseClusterEngine_AURORA

func DatabaseClusterEngine_AURORA() IClusterEngine

func DatabaseClusterEngine_AURORA_MYSQL

func DatabaseClusterEngine_AURORA_MYSQL() IClusterEngine

func DatabaseClusterEngine_AURORA_POSTGRESQL

func DatabaseClusterEngine_AURORA_POSTGRESQL() IClusterEngine

func DatabaseClusterEngine_Aurora

func DatabaseClusterEngine_Aurora(props *AuroraClusterEngineProps) IClusterEngine

Creates a new plain Aurora database cluster engine.

func DatabaseClusterEngine_AuroraMysql

func DatabaseClusterEngine_AuroraMysql(props *AuroraMysqlClusterEngineProps) IClusterEngine

Creates a new Aurora MySQL database cluster engine.

func DatabaseClusterEngine_AuroraPostgres

func DatabaseClusterEngine_AuroraPostgres(props *AuroraPostgresClusterEngineProps) IClusterEngine

Creates a new Aurora PostgreSQL database cluster engine.

type IClusterInstance added in v2.82.0

type IClusterInstance interface {
	// Create the database instance within the provided cluster.
	Bind(scope constructs.Construct, cluster IDatabaseCluster, options *ClusterInstanceBindOptions) IAuroraClusterInstance
}

Represents an Aurora cluster instance This can be either a provisioned instance or a serverless v2 instance.

func ClusterInstance_Provisioned added in v2.82.0

func ClusterInstance_Provisioned(id *string, props *ProvisionedClusterInstanceProps) IClusterInstance

Add a provisioned instance to the cluster.

Example:

rds.ClusterInstance_Provisioned(jsii.String("ClusterInstance"), &ProvisionedClusterInstanceProps{
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_R6G, ec2.InstanceSize_XLARGE4),
})

func ClusterInstance_ServerlessV2 added in v2.82.0

func ClusterInstance_ServerlessV2(id *string, props *ServerlessV2ClusterInstanceProps) IClusterInstance

Add a serverless v2 instance to the cluster.

Example:

rds.ClusterInstance_ServerlessV2(jsii.String("ClusterInstance"), &ServerlessV2ClusterInstanceProps{
	ScaleWithWriter: jsii.Boolean(true),
})

type IDatabaseCluster

type IDatabaseCluster interface {
	awsec2.IConnectable
	awscdk.IResource
	awssecretsmanager.ISecretAttachmentTarget
	// Add a new db proxy to this cluster.
	AddProxy(id *string, options *DatabaseProxyOptions) DatabaseProxy
	// Return the given named metric for this DBCluster.
	Metric(metricName *string, props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The percentage of CPU utilization.
	//
	// Average over 5 minutes.
	MetricCPUUtilization(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of database connections in use.
	//
	// Average over 5 minutes.
	MetricDatabaseConnections(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of deadlocks in the database per second.
	//
	// Average over 5 minutes.
	MetricDeadlocks(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of time that the instance has been running, in seconds.
	//
	// Average over 5 minutes.
	MetricEngineUptime(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available random access memory, in bytes.
	//
	// Average over 5 minutes.
	MetricFreeableMemory(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of local storage available, in bytes.
	//
	// Average over 5 minutes.
	MetricFreeLocalStorage(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput received from clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkReceiveThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput both received from and transmitted to clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of network throughput sent to clients by each instance, in bytes per second.
	//
	// Average over 5 minutes.
	MetricNetworkTransmitThroughput(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The total amount of backup storage in bytes consumed by all Aurora snapshots outside its backup retention window.
	//
	// Average over 5 minutes.
	MetricSnapshotStorageUsed(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The total amount of backup storage in bytes for which you are billed.
	//
	// Average over 5 minutes.
	MetricTotalBackupStorageBilled(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of storage used by your Aurora DB instance, in bytes.
	//
	// Average over 5 minutes.
	MetricVolumeBytesUsed(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of billed read I/O operations from a cluster volume, reported at 5-minute intervals.
	//
	// Average over 5 minutes.
	MetricVolumeReadIOPs(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of write disk I/O operations to the cluster volume, reported at 5-minute intervals.
	//
	// Average over 5 minutes.
	MetricVolumeWriteIOPs(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The endpoint to use for read/write operations.
	ClusterEndpoint() Endpoint
	// Identifier of the cluster.
	ClusterIdentifier() *string
	// Endpoint to use for load-balanced read-only operations.
	ClusterReadEndpoint() Endpoint
	// The immutable identifier for the cluster; for example: cluster-ABCD1234EFGH5678IJKL90MNOP.
	//
	// This AWS Region-unique identifier is used in things like IAM authentication policies.
	ClusterResourceIdentifier() *string
	// The engine of this Cluster.
	//
	// May be not known for imported Clusters if it wasn't provided explicitly.
	Engine() IClusterEngine
	// Endpoints which address each individual replica.
	InstanceEndpoints() *[]Endpoint
	// Identifiers of the replicas.
	InstanceIdentifiers() *[]*string
}

Create a clustered database with a given number of instances.

func DatabaseCluster_FromDatabaseClusterAttributes

func DatabaseCluster_FromDatabaseClusterAttributes(scope constructs.Construct, id *string, attrs *DatabaseClusterAttributes) IDatabaseCluster

Import an existing DatabaseCluster from properties.

type IDatabaseInstance

type IDatabaseInstance interface {
	awsec2.IConnectable
	awscdk.IResource
	awssecretsmanager.ISecretAttachmentTarget
	// Add a new db proxy to this instance.
	AddProxy(id *string, options *DatabaseProxyOptions) DatabaseProxy
	// Grant the given identity connection access to the database.
	GrantConnect(grantee awsiam.IGrantable, dbUser *string) awsiam.Grant
	// Return the given named metric for this DBInstance.
	Metric(metricName *string, props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The percentage of CPU utilization.
	//
	// Average over 5 minutes.
	MetricCPUUtilization(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The number of database connections in use.
	//
	// Average over 5 minutes.
	MetricDatabaseConnections(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available random access memory.
	//
	// Average over 5 minutes.
	MetricFreeableMemory(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The amount of available storage space.
	//
	// Average over 5 minutes.
	MetricFreeStorageSpace(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of disk write I/O operations per second.
	//
	// Average over 5 minutes.
	MetricReadIOPS(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// The average number of disk read I/O operations per second.
	//
	// Average over 5 minutes.
	MetricWriteIOPS(props *awscloudwatch.MetricOptions) awscloudwatch.Metric
	// Defines a CloudWatch event rule which triggers for instance events.
	//
	// Use
	// `rule.addEventPattern(pattern)` to specify a filter.
	OnEvent(id *string, options *awsevents.OnEventOptions) awsevents.Rule
	// The instance endpoint address.
	DbInstanceEndpointAddress() *string
	// The instance endpoint port.
	DbInstanceEndpointPort() *string
	// The engine of this database Instance.
	//
	// May be not known for imported Instances if it wasn't provided explicitly,
	// or for read replicas.
	Engine() IInstanceEngine
	// The instance arn.
	InstanceArn() *string
	// The instance endpoint.
	InstanceEndpoint() Endpoint
	// The instance identifier.
	InstanceIdentifier() *string
	// The AWS Region-unique, immutable identifier for the DB instance.
	//
	// This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB instance is accessed.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#aws-resource-rds-dbinstance-return-values
	//
	InstanceResourceId() *string
}

A database instance.

func DatabaseInstanceBase_FromDatabaseInstanceAttributes

func DatabaseInstanceBase_FromDatabaseInstanceAttributes(scope constructs.Construct, id *string, attrs *DatabaseInstanceAttributes) IDatabaseInstance

Import an existing database instance.

func DatabaseInstanceFromSnapshot_FromDatabaseInstanceAttributes

func DatabaseInstanceFromSnapshot_FromDatabaseInstanceAttributes(scope constructs.Construct, id *string, attrs *DatabaseInstanceAttributes) IDatabaseInstance

Import an existing database instance.

func DatabaseInstanceReadReplica_FromDatabaseInstanceAttributes

func DatabaseInstanceReadReplica_FromDatabaseInstanceAttributes(scope constructs.Construct, id *string, attrs *DatabaseInstanceAttributes) IDatabaseInstance

Import an existing database instance.

func DatabaseInstance_FromDatabaseInstanceAttributes

func DatabaseInstance_FromDatabaseInstanceAttributes(scope constructs.Construct, id *string, attrs *DatabaseInstanceAttributes) IDatabaseInstance

Import an existing database instance.

type IDatabaseProxy

type IDatabaseProxy interface {
	awscdk.IResource
	// Grant the given identity connection access to the proxy.
	// Default: - if the Proxy had been provided a single Secret value,
	// the user will be taken from that Secret.
	//
	GrantConnect(grantee awsiam.IGrantable, dbUser *string) awsiam.Grant
	// DB Proxy ARN.
	DbProxyArn() *string
	// DB Proxy Name.
	DbProxyName() *string
	// Endpoint.
	Endpoint() *string
}

DB Proxy.

func DatabaseProxy_FromDatabaseProxyAttributes

func DatabaseProxy_FromDatabaseProxyAttributes(scope constructs.Construct, id *string, attrs *DatabaseProxyAttributes) IDatabaseProxy

Import an existing database proxy.

type IEngine

type IEngine interface {
	// The default name of the master database user if one was not provided explicitly.
	//
	// The global default of 'admin' will be used if this is `undefined`.
	// Note that 'admin' is a reserved word in PostgreSQL and cannot be used.
	DefaultUsername() *string
	// The family this engine belongs to, like "MYSQL", or "POSTGRESQL".
	//
	// This property is used when creating a Database Proxy.
	// Most engines don't belong to any family
	// (and because of that, you can't create Database Proxies for their Clusters or Instances).
	// Default: - the engine doesn't belong to any family.
	//
	EngineFamily() *string
	// The type of the engine, for example "mysql".
	EngineType() *string
	// The exact version of the engine that is used, for example "5.1.42".
	// Default: - use the default version for this engine type.
	//
	EngineVersion() *EngineVersion
	// The family to use for ParameterGroups using this engine.
	//
	// This is usually equal to "<engineType><engineMajorVersion>",
	// but can sometimes be a variation of that.
	// You can pass this property when creating new ParameterGroup.
	// Default: - the ParameterGroup family is not known
	// (which means the major version of the engine is also not known).
	//
	ParameterGroupFamily() *string
}

A common interface for database engines.

Don't implement this interface directly, instead implement one of the known sub-interfaces, like IClusterEngine and IInstanceEngine.

type IInstanceEngine

type IInstanceEngine interface {
	IEngine
	// Method called when the engine is used to create a new instance.
	BindToInstance(scope constructs.Construct, options *InstanceEngineBindOptions) *InstanceEngineConfig
	// The application used by this engine to perform rotation for a multi-user scenario.
	MultiUserRotationApplication() awssecretsmanager.SecretRotationApplication
	// The application used by this engine to perform rotation for a single-user scenario.
	SingleUserRotationApplication() awssecretsmanager.SecretRotationApplication
	// Whether this engine supports automatic backups of a read replica instance.
	// Default: false.
	//
	SupportsReadReplicaBackups() *bool
}

Interface representing a database instance (as opposed to cluster) engine.

func DatabaseInstanceEngine_MARIADB added in v2.1.0

func DatabaseInstanceEngine_MARIADB() IInstanceEngine

func DatabaseInstanceEngine_MYSQL added in v2.1.0

func DatabaseInstanceEngine_MYSQL() IInstanceEngine

func DatabaseInstanceEngine_MariaDb

func DatabaseInstanceEngine_MariaDb(props *MariaDbInstanceEngineProps) IInstanceEngine

Creates a new MariaDB instance engine.

func DatabaseInstanceEngine_Mysql

func DatabaseInstanceEngine_Mysql(props *MySqlInstanceEngineProps) IInstanceEngine

Creates a new MySQL instance engine.

func DatabaseInstanceEngine_ORACLE_EE added in v2.1.0

func DatabaseInstanceEngine_ORACLE_EE() IInstanceEngine

func DatabaseInstanceEngine_ORACLE_EE_CDB added in v2.34.0

func DatabaseInstanceEngine_ORACLE_EE_CDB() IInstanceEngine

func DatabaseInstanceEngine_ORACLE_SE2 added in v2.1.0

func DatabaseInstanceEngine_ORACLE_SE2() IInstanceEngine

func DatabaseInstanceEngine_ORACLE_SE2_CDB added in v2.34.0

func DatabaseInstanceEngine_ORACLE_SE2_CDB() IInstanceEngine

func DatabaseInstanceEngine_OracleEe

func DatabaseInstanceEngine_OracleEe(props *OracleEeInstanceEngineProps) IInstanceEngine

Creates a new Oracle Enterprise Edition instance engine.

func DatabaseInstanceEngine_OracleEeCdb added in v2.34.0

func DatabaseInstanceEngine_OracleEeCdb(props *OracleEeCdbInstanceEngineProps) IInstanceEngine

Creates a new Oracle Enterprise Edition (CDB) instance engine.

func DatabaseInstanceEngine_OracleSe2

func DatabaseInstanceEngine_OracleSe2(props *OracleSe2InstanceEngineProps) IInstanceEngine

Creates a new Oracle Standard Edition 2 instance engine.

func DatabaseInstanceEngine_OracleSe2Cdb added in v2.34.0

func DatabaseInstanceEngine_OracleSe2Cdb(props *OracleSe2CdbInstanceEngineProps) IInstanceEngine

Creates a new Oracle Standard Edition 2 (CDB) instance engine.

func DatabaseInstanceEngine_POSTGRES added in v2.1.0

func DatabaseInstanceEngine_POSTGRES() IInstanceEngine

func DatabaseInstanceEngine_Postgres

func DatabaseInstanceEngine_Postgres(props *PostgresInstanceEngineProps) IInstanceEngine

Creates a new PostgreSQL instance engine.

func DatabaseInstanceEngine_SQL_SERVER_EE added in v2.1.0

func DatabaseInstanceEngine_SQL_SERVER_EE() IInstanceEngine

func DatabaseInstanceEngine_SQL_SERVER_EX added in v2.1.0

func DatabaseInstanceEngine_SQL_SERVER_EX() IInstanceEngine

func DatabaseInstanceEngine_SQL_SERVER_SE added in v2.1.0

func DatabaseInstanceEngine_SQL_SERVER_SE() IInstanceEngine

func DatabaseInstanceEngine_SQL_SERVER_WEB added in v2.1.0

func DatabaseInstanceEngine_SQL_SERVER_WEB() IInstanceEngine

func DatabaseInstanceEngine_SqlServerEe

func DatabaseInstanceEngine_SqlServerEe(props *SqlServerEeInstanceEngineProps) IInstanceEngine

Creates a new SQL Server Enterprise Edition instance engine.

func DatabaseInstanceEngine_SqlServerEx

func DatabaseInstanceEngine_SqlServerEx(props *SqlServerExInstanceEngineProps) IInstanceEngine

Creates a new SQL Server Express Edition instance engine.

func DatabaseInstanceEngine_SqlServerSe

func DatabaseInstanceEngine_SqlServerSe(props *SqlServerSeInstanceEngineProps) IInstanceEngine

Creates a new SQL Server Standard Edition instance engine.

func DatabaseInstanceEngine_SqlServerWeb

func DatabaseInstanceEngine_SqlServerWeb(props *SqlServerWebInstanceEngineProps) IInstanceEngine

Creates a new SQL Server Web Edition instance engine.

type IOptionGroup

type IOptionGroup interface {
	awscdk.IResource
	// Adds a configuration to this OptionGroup.
	//
	// This method is a no-op for an imported OptionGroup.
	//
	// Returns: true if the OptionConfiguration was successfully added.
	AddConfiguration(configuration *OptionConfiguration) *bool
	// The name of the option group.
	OptionGroupName() *string
}

An option group.

func OptionGroup_FromOptionGroupName

func OptionGroup_FromOptionGroupName(scope constructs.Construct, id *string, optionGroupName *string) IOptionGroup

Import an existing option group.

type IParameterGroup

type IParameterGroup interface {
	awscdk.IResource
	// Adds a parameter to this group.
	//
	// If this is an imported parameter group,
	// this method does nothing.
	//
	// Returns: true if the parameter was actually added
	// (i.e., this ParameterGroup is not imported),
	// false otherwise.
	AddParameter(key *string, value *string) *bool
	// Method called when this Parameter Group is used when defining a database cluster.
	BindToCluster(options *ParameterGroupClusterBindOptions) *ParameterGroupClusterConfig
	// Method called when this Parameter Group is used when defining a database instance.
	BindToInstance(options *ParameterGroupInstanceBindOptions) *ParameterGroupInstanceConfig
}

A parameter group.

Represents both a cluster parameter group, and an instance parameter group.

func ParameterGroup_FromParameterGroupName

func ParameterGroup_FromParameterGroupName(scope constructs.Construct, id *string, parameterGroupName *string) IParameterGroup

Imports a parameter group.

type IServerlessCluster

type IServerlessCluster interface {
	awsec2.IConnectable
	awscdk.IResource
	awssecretsmanager.ISecretAttachmentTarget
	// Grant the given identity to access to the Data API.
	GrantDataApiAccess(grantee awsiam.IGrantable) awsiam.Grant
	// The ARN of the cluster.
	ClusterArn() *string
	// The endpoint to use for read/write operations.
	ClusterEndpoint() Endpoint
	// Identifier of the cluster.
	ClusterIdentifier() *string
	// Endpoint to use for load-balanced read-only operations.
	ClusterReadEndpoint() Endpoint
}

Interface representing a serverless database cluster.

func ServerlessCluster_FromServerlessClusterAttributes

func ServerlessCluster_FromServerlessClusterAttributes(scope constructs.Construct, id *string, attrs *ServerlessClusterAttributes) IServerlessCluster

Import an existing DatabaseCluster from properties.

type ISubnetGroup

type ISubnetGroup interface {
	awscdk.IResource
	// The name of the subnet group.
	SubnetGroupName() *string
}

Interface for a subnet group.

func SubnetGroup_FromSubnetGroupName

func SubnetGroup_FromSubnetGroupName(scope constructs.Construct, id *string, subnetGroupName *string) ISubnetGroup

Imports an existing subnet group by name.

type InstanceEngineBindOptions

type InstanceEngineBindOptions struct {
	// The Active Directory directory ID to create the DB instance in.
	// Default: - none (it's an optional field).
	//
	Domain *string `field:"optional" json:"domain" yaml:"domain"`
	// The option group of the database.
	// Default: - none.
	//
	OptionGroup IOptionGroup `field:"optional" json:"optionGroup" yaml:"optionGroup"`
	// The role used for S3 exporting.
	// Default: - none.
	//
	S3ExportRole awsiam.IRole `field:"optional" json:"s3ExportRole" yaml:"s3ExportRole"`
	// The role used for S3 importing.
	// Default: - none.
	//
	S3ImportRole awsiam.IRole `field:"optional" json:"s3ImportRole" yaml:"s3ImportRole"`
	// The timezone of the database, set by the customer.
	// Default: - none (it's an optional field).
	//
	Timezone *string `field:"optional" json:"timezone" yaml:"timezone"`
}

The options passed to `IInstanceEngine.bind`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var optionGroup optionGroup
var role role

instanceEngineBindOptions := &InstanceEngineBindOptions{
	Domain: jsii.String("domain"),
	OptionGroup: optionGroup,
	S3ExportRole: role,
	S3ImportRole: role,
	Timezone: jsii.String("timezone"),
}

type InstanceEngineConfig

type InstanceEngineConfig struct {
	// Features supported by the database engine.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBEngineVersion.html
	//
	// Default: - no features.
	//
	Features *InstanceEngineFeatures `field:"optional" json:"features" yaml:"features"`
	// Option group of the database.
	// Default: - none.
	//
	OptionGroup IOptionGroup `field:"optional" json:"optionGroup" yaml:"optionGroup"`
}

The type returned from the `IInstanceEngine.bind` method.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var optionGroup optionGroup

instanceEngineConfig := &InstanceEngineConfig{
	Features: &InstanceEngineFeatures{
		S3Export: jsii.String("s3Export"),
		S3Import: jsii.String("s3Import"),
	},
	OptionGroup: optionGroup,
}

type InstanceEngineFeatures

type InstanceEngineFeatures struct {
	// Feature name for the DB instance that the IAM role to export to S3 bucket is to be associated with.
	// Default: - no s3Export feature name.
	//
	S3Export *string `field:"optional" json:"s3Export" yaml:"s3Export"`
	// Feature name for the DB instance that the IAM role to access the S3 bucket for import is to be associated with.
	// Default: - no s3Import feature name.
	//
	S3Import *string `field:"optional" json:"s3Import" yaml:"s3Import"`
}

Represents Database Engine features.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

instanceEngineFeatures := &InstanceEngineFeatures{
	S3Export: jsii.String("s3Export"),
	S3Import: jsii.String("s3Import"),
}

type InstanceProps

type InstanceProps struct {
	// What subnets to run the RDS instances in.
	//
	// Must be at least 2 subnets in two different AZs.
	Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// Whether to allow upgrade of major version for the DB instance.
	// Default: - false.
	//
	AllowMajorVersionUpgrade *bool `field:"optional" json:"allowMajorVersionUpgrade" yaml:"allowMajorVersionUpgrade"`
	// Whether to enable automatic upgrade of minor version for the DB instance.
	// Default: - true.
	//
	AutoMinorVersionUpgrade *bool `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// Whether to remove automated backups immediately after the DB instance is deleted for the DB instance.
	// Default: - true.
	//
	DeleteAutomatedBackups *bool `field:"optional" json:"deleteAutomatedBackups" yaml:"deleteAutomatedBackups"`
	// Whether to enable Performance Insights for the DB instance.
	// Default: - false, unless “performanceInsightRetention“ or “performanceInsightEncryptionKey“ is set.
	//
	EnablePerformanceInsights *bool `field:"optional" json:"enablePerformanceInsights" yaml:"enablePerformanceInsights"`
	// What type of instance to start for the replicas.
	// Default: - t3.medium (or, more precisely, db.t3.medium)
	//
	InstanceType awsec2.InstanceType `field:"optional" json:"instanceType" yaml:"instanceType"`
	// The DB parameter group to associate with the instance.
	// Default: no parameter group.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The parameters in the DBParameterGroup to create automatically.
	//
	// You can only specify parameterGroup or parameters but not both.
	// You need to use a versioned engine to auto-generate a DBParameterGroup.
	// Default: - None.
	//
	Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"`
	// The AWS KMS key for encryption of Performance Insights data.
	// Default: - default master key.
	//
	PerformanceInsightEncryptionKey awskms.IKey `field:"optional" json:"performanceInsightEncryptionKey" yaml:"performanceInsightEncryptionKey"`
	// The amount of time, in days, to retain Performance Insights data.
	// Default: 7.
	//
	PerformanceInsightRetention PerformanceInsightRetention `field:"optional" json:"performanceInsightRetention" yaml:"performanceInsightRetention"`
	// Indicates whether the DB instance is an internet-facing instance.
	// Default: - `true` if `vpcSubnets` is `subnetType: SubnetType.PUBLIC`, `false` otherwise
	//
	PubliclyAccessible *bool `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
	// Security group.
	// Default: a new security group is created.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// Where to place the instances within the VPC.
	// Default: - the Vpc default strategy if not specified.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
}

Instance properties for database instances.

Example:

cluster := rds.NewDatabaseCluster(stack, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA(),
	InstanceProps: &InstanceProps{
		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
		Vpc: *Vpc,
	},
})

cluster.addRotationSingleUser()

clusterWithCustomRotationOptions := rds.NewDatabaseCluster(stack, jsii.String("CustomRotationOptions"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA(),
	InstanceProps: &InstanceProps{
		InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
		Vpc: *Vpc,
	},
})
clusterWithCustomRotationOptions.addRotationSingleUser(&RotationSingleUserOptions{
	AutomaticallyAfter: cdk.Duration_Days(jsii.Number(7)),
	ExcludeCharacters: jsii.String("!@#$%^&*"),
	SecurityGroup: SecurityGroup,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
	Endpoint: endpoint,
})

type InstanceType added in v2.82.0

type InstanceType string
const (
	InstanceType_PROVISIONED   InstanceType = "PROVISIONED"
	InstanceType_SERVERLESS_V2 InstanceType = "SERVERLESS_V2"
)

type InstanceUpdateBehaviour added in v2.32.0

type InstanceUpdateBehaviour string

The orchestration of updates of multiple instances.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("Instance"), &ProvisionedClusterInstanceProps{
		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
	}),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*Provisioned(jsii.String("reader")),
	},
	InstanceUpdateBehaviour: rds.InstanceUpdateBehaviour_ROLLING,
	 // Optional - defaults to rds.InstanceUpdateBehaviour.BULK
	Vpc: Vpc,
})
const (
	// In a bulk update, all instances of the cluster are updated at the same time.
	//
	// This results in a faster update procedure.
	// During the update, however, all instances might be unavailable at the same time and thus a downtime might occur.
	InstanceUpdateBehaviour_BULK InstanceUpdateBehaviour = "BULK"
	// In a rolling update, one instance after another is updated.
	//
	// This results in at most one instance being unavailable during the update.
	// If your cluster consists of more than 1 instance, the downtime periods are limited to the time a primary switch needs.
	InstanceUpdateBehaviour_ROLLING InstanceUpdateBehaviour = "ROLLING"
)

type LicenseModel

type LicenseModel string

The license model.

Example:

// Set open cursors with parameter group
parameterGroup := rds.NewParameterGroup(this, jsii.String("ParameterGroup"), &ParameterGroupProps{
	Engine: rds.DatabaseInstanceEngine_OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Parameters: map[string]*string{
		"open_cursors": jsii.String("2500"),
	},
})

optionGroup := rds.NewOptionGroup(this, jsii.String("OptionGroup"), &OptionGroupProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Configurations: []optionConfiguration{
		&optionConfiguration{
			Name: jsii.String("LOCATOR"),
		},
		&optionConfiguration{
			Name: jsii.String("OEM"),
			Port: jsii.Number(1158),
			Vpc: *Vpc,
		},
	},
})

// Allow connections to OEM
optionGroup.OptionConnections.oEM.Connections.AllowDefaultPortFromAnyIpv4()

// Database instance with production values
instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	LicenseModel: rds.LicenseModel_BRING_YOUR_OWN_LICENSE,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_MEDIUM),
	MultiAz: jsii.Boolean(true),
	StorageType: rds.StorageType_IO1,
	Credentials: rds.Credentials_FromUsername(jsii.String("syscdk")),
	Vpc: Vpc,
	DatabaseName: jsii.String("ORCL"),
	StorageEncrypted: jsii.Boolean(true),
	BackupRetention: cdk.Duration_Days(jsii.Number(7)),
	MonitoringInterval: cdk.Duration_Seconds(jsii.Number(60)),
	EnablePerformanceInsights: jsii.Boolean(true),
	CloudwatchLogsExports: []*string{
		jsii.String("trace"),
		jsii.String("audit"),
		jsii.String("alert"),
		jsii.String("listener"),
	},
	CloudwatchLogsRetention: logs.RetentionDays_ONE_MONTH,
	AutoMinorVersionUpgrade: jsii.Boolean(true),
	 // required to be true if LOCATOR is used in the option group
	OptionGroup: OptionGroup,
	ParameterGroup: ParameterGroup,
	RemovalPolicy: awscdk.RemovalPolicy_DESTROY,
})

// Allow connections on default port from any IPV4
instance.connections.AllowDefaultPortFromAnyIpv4()

// Rotate the master user password every 30 days
instance.addRotationSingleUser()

// Add alarm for high CPU
// Add alarm for high CPU
cloudwatch.NewAlarm(this, jsii.String("HighCPU"), &AlarmProps{
	Metric: instance.metricCPUUtilization(),
	Threshold: jsii.Number(90),
	EvaluationPeriods: jsii.Number(1),
})

// Trigger Lambda function on instance availability events
fn := lambda.NewFunction(this, jsii.String("Function"), &FunctionProps{
	Code: lambda.Code_FromInline(jsii.String("exports.handler = (event) => console.log(event);")),
	Handler: jsii.String("index.handler"),
	Runtime: lambda.Runtime_NODEJS_18_X(),
})

availabilityRule := instance.OnEvent(jsii.String("Availability"), &OnEventOptions{
	Target: targets.NewLambdaFunction(fn),
})
availabilityRule.AddEventPattern(&EventPattern{
	Detail: map[string]interface{}{
		"EventCategories": []interface{}{
			jsii.String("availability"),
		},
	},
})
const (
	// License included.
	LicenseModel_LICENSE_INCLUDED LicenseModel = "LICENSE_INCLUDED"
	// Bring your own licencse.
	LicenseModel_BRING_YOUR_OWN_LICENSE LicenseModel = "BRING_YOUR_OWN_LICENSE"
	// General public license.
	LicenseModel_GENERAL_PUBLIC_LICENSE LicenseModel = "GENERAL_PUBLIC_LICENSE"
)

type MariaDbEngineVersion

type MariaDbEngineVersion interface {
	// The full version string, for example, "10.5.28".
	MariaDbFullVersion() *string
	// The major version of the engine, for example, "10.5".
	MariaDbMajorVersion() *string
}

The versions for the MariaDB instance engines (those returned by `DatabaseInstanceEngine.mariaDb`).

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

mariaDbEngineVersion := awscdk.Aws_rds.MariaDbEngineVersion_VER_10_11()

func MariaDbEngineVersion_Of

func MariaDbEngineVersion_Of(mariaDbFullVersion *string, mariaDbMajorVersion *string) MariaDbEngineVersion

Create a new MariaDbEngineVersion with an arbitrary version.

func MariaDbEngineVersion_VER_10_11 added in v2.100.0

func MariaDbEngineVersion_VER_10_11() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_11_4 added in v2.100.0

func MariaDbEngineVersion_VER_10_11_4() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_11_5 added in v2.100.0

func MariaDbEngineVersion_VER_10_11_5() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_2

func MariaDbEngineVersion_VER_10_2() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_2_11

func MariaDbEngineVersion_VER_10_2_11() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_2_12

func MariaDbEngineVersion_VER_10_2_12() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_2_15

func MariaDbEngineVersion_VER_10_2_15() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_2_21

func MariaDbEngineVersion_VER_10_2_21() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_2_32

func MariaDbEngineVersion_VER_10_2_32() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_2_37

func MariaDbEngineVersion_VER_10_2_37() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_2_39

func MariaDbEngineVersion_VER_10_2_39() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_2_40

func MariaDbEngineVersion_VER_10_2_40() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_2_41 added in v2.2.0

func MariaDbEngineVersion_VER_10_2_41() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3

func MariaDbEngineVersion_VER_10_3() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_13

func MariaDbEngineVersion_VER_10_3_13() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_20

func MariaDbEngineVersion_VER_10_3_20() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_23

func MariaDbEngineVersion_VER_10_3_23() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_28

func MariaDbEngineVersion_VER_10_3_28() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_31

func MariaDbEngineVersion_VER_10_3_31() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_32 added in v2.2.0

func MariaDbEngineVersion_VER_10_3_32() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_34 added in v2.37.0

func MariaDbEngineVersion_VER_10_3_34() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_35 added in v2.37.0

func MariaDbEngineVersion_VER_10_3_35() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_36 added in v2.47.0

func MariaDbEngineVersion_VER_10_3_36() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_37 added in v2.54.0

func MariaDbEngineVersion_VER_10_3_37() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_38 added in v2.68.0

func MariaDbEngineVersion_VER_10_3_38() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_39 added in v2.86.0

func MariaDbEngineVersion_VER_10_3_39() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_3_8

func MariaDbEngineVersion_VER_10_3_8() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4

func MariaDbEngineVersion_VER_10_4() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_13

func MariaDbEngineVersion_VER_10_4_13() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_18

func MariaDbEngineVersion_VER_10_4_18() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_21

func MariaDbEngineVersion_VER_10_4_21() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_22 added in v2.2.0

func MariaDbEngineVersion_VER_10_4_22() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_24 added in v2.37.0

func MariaDbEngineVersion_VER_10_4_24() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_25 added in v2.37.0

func MariaDbEngineVersion_VER_10_4_25() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_26 added in v2.47.0

func MariaDbEngineVersion_VER_10_4_26() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_27 added in v2.54.0

func MariaDbEngineVersion_VER_10_4_27() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_28 added in v2.68.0

func MariaDbEngineVersion_VER_10_4_28() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_29 added in v2.86.0

func MariaDbEngineVersion_VER_10_4_29() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_30 added in v2.86.0

func MariaDbEngineVersion_VER_10_4_30() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_31 added in v2.100.0

func MariaDbEngineVersion_VER_10_4_31() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_4_8

func MariaDbEngineVersion_VER_10_4_8() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5

func MariaDbEngineVersion_VER_10_5() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_12

func MariaDbEngineVersion_VER_10_5_12() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_13 added in v2.2.0

func MariaDbEngineVersion_VER_10_5_13() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_15 added in v2.37.0

func MariaDbEngineVersion_VER_10_5_15() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_16 added in v2.37.0

func MariaDbEngineVersion_VER_10_5_16() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_17 added in v2.47.0

func MariaDbEngineVersion_VER_10_5_17() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_18 added in v2.54.0

func MariaDbEngineVersion_VER_10_5_18() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_19 added in v2.68.0

func MariaDbEngineVersion_VER_10_5_19() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_20 added in v2.86.0

func MariaDbEngineVersion_VER_10_5_20() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_21 added in v2.86.0

func MariaDbEngineVersion_VER_10_5_21() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_22 added in v2.100.0

func MariaDbEngineVersion_VER_10_5_22() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_8

func MariaDbEngineVersion_VER_10_5_8() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_5_9

func MariaDbEngineVersion_VER_10_5_9() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_6 added in v2.37.0

func MariaDbEngineVersion_VER_10_6() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_6_10 added in v2.45.0

func MariaDbEngineVersion_VER_10_6_10() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_6_11 added in v2.54.0

func MariaDbEngineVersion_VER_10_6_11() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_6_12 added in v2.68.0

func MariaDbEngineVersion_VER_10_6_12() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_6_13 added in v2.86.0

func MariaDbEngineVersion_VER_10_6_13() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_6_14 added in v2.86.0

func MariaDbEngineVersion_VER_10_6_14() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_6_15 added in v2.100.0

func MariaDbEngineVersion_VER_10_6_15() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_6_5 added in v2.37.0

func MariaDbEngineVersion_VER_10_6_5() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_6_7 added in v2.37.0

func MariaDbEngineVersion_VER_10_6_7() MariaDbEngineVersion

func MariaDbEngineVersion_VER_10_6_8 added in v2.37.0

func MariaDbEngineVersion_VER_10_6_8() MariaDbEngineVersion

type MariaDbInstanceEngineProps

type MariaDbInstanceEngineProps struct {
	// The exact version of the engine to use.
	Version MariaDbEngineVersion `field:"required" json:"version" yaml:"version"`
}

Properties for MariaDB instance engines.

Used in `DatabaseInstanceEngine.mariaDb`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var mariaDbEngineVersion mariaDbEngineVersion

mariaDbInstanceEngineProps := &MariaDbInstanceEngineProps{
	Version: mariaDbEngineVersion,
}

type MySqlInstanceEngineProps

type MySqlInstanceEngineProps struct {
	// The exact version of the engine to use.
	Version MysqlEngineVersion `field:"required" json:"version" yaml:"version"`
}

Properties for MySQL instance engines.

Used in `DatabaseInstanceEngine.mysql`.

Example:

var vpc vpc

iopsInstance := rds.NewDatabaseInstance(this, jsii.String("IopsInstance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_30(),
	}),
	Vpc: Vpc,
	StorageType: rds.StorageType_IO1,
	Iops: jsii.Number(5000),
})

gp3Instance := rds.NewDatabaseInstance(this, jsii.String("Gp3Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_*Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_30(),
	}),
	Vpc: Vpc,
	AllocatedStorage: jsii.Number(500),
	StorageType: rds.StorageType_GP3,
	StorageThroughput: jsii.Number(500),
})

type MysqlEngineVersion

type MysqlEngineVersion interface {
	// The full version string, for example, "10.5.28".
	MysqlFullVersion() *string
	// The major version of the engine, for example, "10.5".
	MysqlMajorVersion() *string
}

The versions for the MySQL instance engines (those returned by `DatabaseInstanceEngine.mysql`).

Example:

var vpc vpc

iopsInstance := rds.NewDatabaseInstance(this, jsii.String("IopsInstance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_30(),
	}),
	Vpc: Vpc,
	StorageType: rds.StorageType_IO1,
	Iops: jsii.Number(5000),
})

gp3Instance := rds.NewDatabaseInstance(this, jsii.String("Gp3Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_*Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_30(),
	}),
	Vpc: Vpc,
	AllocatedStorage: jsii.Number(500),
	StorageType: rds.StorageType_GP3,
	StorageThroughput: jsii.Number(500),
})

func MysqlEngineVersion_Of

func MysqlEngineVersion_Of(mysqlFullVersion *string, mysqlMajorVersion *string) MysqlEngineVersion

Create a new MysqlEngineVersion with an arbitrary version.

func MysqlEngineVersion_VER_5_7

func MysqlEngineVersion_VER_5_7() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_16

func MysqlEngineVersion_VER_5_7_16() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_17

func MysqlEngineVersion_VER_5_7_17() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_19

func MysqlEngineVersion_VER_5_7_19() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_21

func MysqlEngineVersion_VER_5_7_21() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_22

func MysqlEngineVersion_VER_5_7_22() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_23

func MysqlEngineVersion_VER_5_7_23() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_24

func MysqlEngineVersion_VER_5_7_24() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_25

func MysqlEngineVersion_VER_5_7_25() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_26

func MysqlEngineVersion_VER_5_7_26() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_28

func MysqlEngineVersion_VER_5_7_28() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_30

func MysqlEngineVersion_VER_5_7_30() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_31

func MysqlEngineVersion_VER_5_7_31() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_33

func MysqlEngineVersion_VER_5_7_33() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_34

func MysqlEngineVersion_VER_5_7_34() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_35 added in v2.19.0

func MysqlEngineVersion_VER_5_7_35() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_36 added in v2.19.0

func MysqlEngineVersion_VER_5_7_36() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_37 added in v2.19.0

func MysqlEngineVersion_VER_5_7_37() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_38 added in v2.45.0

func MysqlEngineVersion_VER_5_7_38() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_39 added in v2.45.0

func MysqlEngineVersion_VER_5_7_39() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_40 added in v2.51.0

func MysqlEngineVersion_VER_5_7_40() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_41 added in v2.67.0

func MysqlEngineVersion_VER_5_7_41() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_42 added in v2.86.0

func MysqlEngineVersion_VER_5_7_42() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_43 added in v2.91.0

func MysqlEngineVersion_VER_5_7_43() MysqlEngineVersion

func MysqlEngineVersion_VER_5_7_44 added in v2.106.0

func MysqlEngineVersion_VER_5_7_44() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0

func MysqlEngineVersion_VER_8_0() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_11

func MysqlEngineVersion_VER_8_0_11() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_13

func MysqlEngineVersion_VER_8_0_13() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_15

func MysqlEngineVersion_VER_8_0_15() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_16

func MysqlEngineVersion_VER_8_0_16() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_17

func MysqlEngineVersion_VER_8_0_17() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_19

func MysqlEngineVersion_VER_8_0_19() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_20

func MysqlEngineVersion_VER_8_0_20() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_21

func MysqlEngineVersion_VER_8_0_21() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_23

func MysqlEngineVersion_VER_8_0_23() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_25

func MysqlEngineVersion_VER_8_0_25() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_26

func MysqlEngineVersion_VER_8_0_26() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_27 added in v2.19.0

func MysqlEngineVersion_VER_8_0_27() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_28 added in v2.19.0

func MysqlEngineVersion_VER_8_0_28() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_30 added in v2.43.0

func MysqlEngineVersion_VER_8_0_30() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_31 added in v2.54.0

func MysqlEngineVersion_VER_8_0_31() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_32 added in v2.67.0

func MysqlEngineVersion_VER_8_0_32() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_33 added in v2.86.0

func MysqlEngineVersion_VER_8_0_33() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_34 added in v2.91.0

func MysqlEngineVersion_VER_8_0_34() MysqlEngineVersion

func MysqlEngineVersion_VER_8_0_35 added in v2.106.0

func MysqlEngineVersion_VER_8_0_35() MysqlEngineVersion

type NetworkType added in v2.48.0

type NetworkType string

The network type of the DB instance.

Example:

var vpc vpc
// VPC and subnets must have IPv6 CIDR blocks
cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_02_1(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		PubliclyAccessible: jsii.Boolean(false),
	}),
	Vpc: Vpc,
	NetworkType: rds.NetworkType_DUAL,
})
const (
	// IPv4 only network type.
	NetworkType_IPV4 NetworkType = "IPV4"
	// Dual-stack network type.
	NetworkType_DUAL NetworkType = "DUAL"
)

type OptionConfiguration

type OptionConfiguration struct {
	// The name of the option.
	Name *string `field:"required" json:"name" yaml:"name"`
	// The port number that this option uses.
	//
	// If `port` is specified then `vpc`
	// must also be specified.
	// Default: - no port.
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// Optional list of security groups to use for this option, if `vpc` is specified.
	//
	// If no groups are provided, a default one will be created.
	// Default: - a default group will be created if `port` or `vpc` are specified.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// The settings for the option.
	// Default: - no settings.
	//
	Settings *map[string]*string `field:"optional" json:"settings" yaml:"settings"`
	// The version for the option.
	// Default: - no version.
	//
	Version *string `field:"optional" json:"version" yaml:"version"`
	// The VPC where a security group should be created for this option.
	//
	// If `vpc`
	// is specified then `port` must also be specified.
	// Default: - no VPC.
	//
	Vpc awsec2.IVpc `field:"optional" json:"vpc" yaml:"vpc"`
}

Configuration properties for an option.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var securityGroup securityGroup
var vpc vpc

optionConfiguration := &OptionConfiguration{
	Name: jsii.String("name"),

	// the properties below are optional
	Port: jsii.Number(123),
	SecurityGroups: []iSecurityGroup{
		securityGroup,
	},
	Settings: map[string]*string{
		"settingsKey": jsii.String("settings"),
	},
	Version: jsii.String("version"),
	Vpc: vpc,
}

type OptionGroup

type OptionGroup interface {
	awscdk.Resource
	IOptionGroup
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The tree node.
	Node() constructs.Node
	// The connections object for the options.
	OptionConnections() *map[string]awsec2.Connections
	// The name of the option group.
	OptionGroupName() *string
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// Adds a configuration to this OptionGroup.
	//
	// This method is a no-op for an imported OptionGroup.
	AddConfiguration(configuration *OptionConfiguration) *bool
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Returns a string representation of this construct.
	ToString() *string
}

An option group.

Example:

// Set open cursors with parameter group
parameterGroup := rds.NewParameterGroup(this, jsii.String("ParameterGroup"), &ParameterGroupProps{
	Engine: rds.DatabaseInstanceEngine_OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Parameters: map[string]*string{
		"open_cursors": jsii.String("2500"),
	},
})

optionGroup := rds.NewOptionGroup(this, jsii.String("OptionGroup"), &OptionGroupProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Configurations: []optionConfiguration{
		&optionConfiguration{
			Name: jsii.String("LOCATOR"),
		},
		&optionConfiguration{
			Name: jsii.String("OEM"),
			Port: jsii.Number(1158),
			Vpc: *Vpc,
		},
	},
})

// Allow connections to OEM
optionGroup.OptionConnections.oEM.Connections.AllowDefaultPortFromAnyIpv4()

// Database instance with production values
instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	LicenseModel: rds.LicenseModel_BRING_YOUR_OWN_LICENSE,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_MEDIUM),
	MultiAz: jsii.Boolean(true),
	StorageType: rds.StorageType_IO1,
	Credentials: rds.Credentials_FromUsername(jsii.String("syscdk")),
	Vpc: Vpc,
	DatabaseName: jsii.String("ORCL"),
	StorageEncrypted: jsii.Boolean(true),
	BackupRetention: cdk.Duration_Days(jsii.Number(7)),
	MonitoringInterval: cdk.Duration_Seconds(jsii.Number(60)),
	EnablePerformanceInsights: jsii.Boolean(true),
	CloudwatchLogsExports: []*string{
		jsii.String("trace"),
		jsii.String("audit"),
		jsii.String("alert"),
		jsii.String("listener"),
	},
	CloudwatchLogsRetention: logs.RetentionDays_ONE_MONTH,
	AutoMinorVersionUpgrade: jsii.Boolean(true),
	 // required to be true if LOCATOR is used in the option group
	OptionGroup: OptionGroup,
	ParameterGroup: ParameterGroup,
	RemovalPolicy: awscdk.RemovalPolicy_DESTROY,
})

// Allow connections on default port from any IPV4
instance.connections.AllowDefaultPortFromAnyIpv4()

// Rotate the master user password every 30 days
instance.addRotationSingleUser()

// Add alarm for high CPU
// Add alarm for high CPU
cloudwatch.NewAlarm(this, jsii.String("HighCPU"), &AlarmProps{
	Metric: instance.metricCPUUtilization(),
	Threshold: jsii.Number(90),
	EvaluationPeriods: jsii.Number(1),
})

// Trigger Lambda function on instance availability events
fn := lambda.NewFunction(this, jsii.String("Function"), &FunctionProps{
	Code: lambda.Code_FromInline(jsii.String("exports.handler = (event) => console.log(event);")),
	Handler: jsii.String("index.handler"),
	Runtime: lambda.Runtime_NODEJS_18_X(),
})

availabilityRule := instance.OnEvent(jsii.String("Availability"), &OnEventOptions{
	Target: targets.NewLambdaFunction(fn),
})
availabilityRule.AddEventPattern(&EventPattern{
	Detail: map[string]interface{}{
		"EventCategories": []interface{}{
			jsii.String("availability"),
		},
	},
})

func NewOptionGroup

func NewOptionGroup(scope constructs.Construct, id *string, props *OptionGroupProps) OptionGroup

type OptionGroupProps

type OptionGroupProps struct {
	// The configurations for this option group.
	Configurations *[]*OptionConfiguration `field:"required" json:"configurations" yaml:"configurations"`
	// The database engine that this option group is associated with.
	Engine IInstanceEngine `field:"required" json:"engine" yaml:"engine"`
	// A description of the option group.
	// Default: a CDK generated description.
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
}

Construction properties for an OptionGroup.

Example:

// Set open cursors with parameter group
parameterGroup := rds.NewParameterGroup(this, jsii.String("ParameterGroup"), &ParameterGroupProps{
	Engine: rds.DatabaseInstanceEngine_OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Parameters: map[string]*string{
		"open_cursors": jsii.String("2500"),
	},
})

optionGroup := rds.NewOptionGroup(this, jsii.String("OptionGroup"), &OptionGroupProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Configurations: []optionConfiguration{
		&optionConfiguration{
			Name: jsii.String("LOCATOR"),
		},
		&optionConfiguration{
			Name: jsii.String("OEM"),
			Port: jsii.Number(1158),
			Vpc: *Vpc,
		},
	},
})

// Allow connections to OEM
optionGroup.OptionConnections.oEM.Connections.AllowDefaultPortFromAnyIpv4()

// Database instance with production values
instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	LicenseModel: rds.LicenseModel_BRING_YOUR_OWN_LICENSE,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_MEDIUM),
	MultiAz: jsii.Boolean(true),
	StorageType: rds.StorageType_IO1,
	Credentials: rds.Credentials_FromUsername(jsii.String("syscdk")),
	Vpc: Vpc,
	DatabaseName: jsii.String("ORCL"),
	StorageEncrypted: jsii.Boolean(true),
	BackupRetention: cdk.Duration_Days(jsii.Number(7)),
	MonitoringInterval: cdk.Duration_Seconds(jsii.Number(60)),
	EnablePerformanceInsights: jsii.Boolean(true),
	CloudwatchLogsExports: []*string{
		jsii.String("trace"),
		jsii.String("audit"),
		jsii.String("alert"),
		jsii.String("listener"),
	},
	CloudwatchLogsRetention: logs.RetentionDays_ONE_MONTH,
	AutoMinorVersionUpgrade: jsii.Boolean(true),
	 // required to be true if LOCATOR is used in the option group
	OptionGroup: OptionGroup,
	ParameterGroup: ParameterGroup,
	RemovalPolicy: awscdk.RemovalPolicy_DESTROY,
})

// Allow connections on default port from any IPV4
instance.connections.AllowDefaultPortFromAnyIpv4()

// Rotate the master user password every 30 days
instance.addRotationSingleUser()

// Add alarm for high CPU
// Add alarm for high CPU
cloudwatch.NewAlarm(this, jsii.String("HighCPU"), &AlarmProps{
	Metric: instance.metricCPUUtilization(),
	Threshold: jsii.Number(90),
	EvaluationPeriods: jsii.Number(1),
})

// Trigger Lambda function on instance availability events
fn := lambda.NewFunction(this, jsii.String("Function"), &FunctionProps{
	Code: lambda.Code_FromInline(jsii.String("exports.handler = (event) => console.log(event);")),
	Handler: jsii.String("index.handler"),
	Runtime: lambda.Runtime_NODEJS_18_X(),
})

availabilityRule := instance.OnEvent(jsii.String("Availability"), &OnEventOptions{
	Target: targets.NewLambdaFunction(fn),
})
availabilityRule.AddEventPattern(&EventPattern{
	Detail: map[string]interface{}{
		"EventCategories": []interface{}{
			jsii.String("availability"),
		},
	},
})

type OracleEeCdbInstanceEngineProps added in v2.34.0

type OracleEeCdbInstanceEngineProps struct {
	// The exact version of the engine to use.
	Version OracleEngineVersion `field:"required" json:"version" yaml:"version"`
}

Properties for Oracle Enterprise Edition (CDB) instance engines.

Used in `DatabaseInstanceEngine.oracleEeCdb`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var oracleEngineVersion oracleEngineVersion

oracleEeCdbInstanceEngineProps := &OracleEeCdbInstanceEngineProps{
	Version: oracleEngineVersion,
}

type OracleEeInstanceEngineProps

type OracleEeInstanceEngineProps struct {
	// The exact version of the engine to use.
	Version OracleEngineVersion `field:"required" json:"version" yaml:"version"`
}

Properties for Oracle Enterprise Edition instance engines.

Used in `DatabaseInstanceEngine.oracleEe`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var oracleEngineVersion oracleEngineVersion

oracleEeInstanceEngineProps := &OracleEeInstanceEngineProps{
	Version: oracleEngineVersion,
}

type OracleEngineVersion

type OracleEngineVersion interface {
	// The full version string, for example, "19.0.0.0.ru-2019-10.rur-2019-10.r1".
	OracleFullVersion() *string
	// The major version of the engine, for example, "19".
	OracleMajorVersion() *string
}

The versions for the Oracle instance engines.

Those returned by the following list. - `DatabaseInstanceEngine.oracleSe2` - `DatabaseInstanceEngine.oracleSe2Cdb` - `DatabaseInstanceEngine.oracleEe` - `DatabaseInstanceEngine.oracleEeCdb`.

Example:

var vpc vpc

instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	// optional, defaults to m5.large
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("syscdk")),
	 // Optional - will default to 'admin' username and generated password
	Vpc: Vpc,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
})

func OracleEngineVersion_Of

func OracleEngineVersion_Of(oracleFullVersion *string, oracleMajorVersion *string) OracleEngineVersion

Creates a new OracleEngineVersion with an arbitrary version.

func OracleEngineVersion_VER_12_1

func OracleEngineVersion_VER_12_1() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V1

func OracleEngineVersion_VER_12_1_0_2_V1() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V10

func OracleEngineVersion_VER_12_1_0_2_V10() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V11

func OracleEngineVersion_VER_12_1_0_2_V11() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V12

func OracleEngineVersion_VER_12_1_0_2_V12() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V13

func OracleEngineVersion_VER_12_1_0_2_V13() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V14

func OracleEngineVersion_VER_12_1_0_2_V14() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V15

func OracleEngineVersion_VER_12_1_0_2_V15() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V16

func OracleEngineVersion_VER_12_1_0_2_V16() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V17

func OracleEngineVersion_VER_12_1_0_2_V17() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V18

func OracleEngineVersion_VER_12_1_0_2_V18() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V19

func OracleEngineVersion_VER_12_1_0_2_V19() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V2

func OracleEngineVersion_VER_12_1_0_2_V2() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V20

func OracleEngineVersion_VER_12_1_0_2_V20() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V21

func OracleEngineVersion_VER_12_1_0_2_V21() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V22

func OracleEngineVersion_VER_12_1_0_2_V22() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V23

func OracleEngineVersion_VER_12_1_0_2_V23() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V24

func OracleEngineVersion_VER_12_1_0_2_V24() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V25 added in v2.54.0

func OracleEngineVersion_VER_12_1_0_2_V25() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V26 added in v2.54.0

func OracleEngineVersion_VER_12_1_0_2_V26() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V27 added in v2.54.0

func OracleEngineVersion_VER_12_1_0_2_V27() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V28 added in v2.54.0

func OracleEngineVersion_VER_12_1_0_2_V28() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V29 added in v2.54.0

func OracleEngineVersion_VER_12_1_0_2_V29() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V3

func OracleEngineVersion_VER_12_1_0_2_V3() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V4

func OracleEngineVersion_VER_12_1_0_2_V4() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V5

func OracleEngineVersion_VER_12_1_0_2_V5() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V6

func OracleEngineVersion_VER_12_1_0_2_V6() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V7

func OracleEngineVersion_VER_12_1_0_2_V7() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V8

func OracleEngineVersion_VER_12_1_0_2_V8() OracleEngineVersion

func OracleEngineVersion_VER_12_1_0_2_V9

func OracleEngineVersion_VER_12_1_0_2_V9() OracleEngineVersion

func OracleEngineVersion_VER_12_2

func OracleEngineVersion_VER_12_2() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2018_10_R1

func OracleEngineVersion_VER_12_2_0_1_2018_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2019_01_R1

func OracleEngineVersion_VER_12_2_0_1_2019_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2019_04_R1

func OracleEngineVersion_VER_12_2_0_1_2019_04_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2019_07_R1

func OracleEngineVersion_VER_12_2_0_1_2019_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2019_10_R1

func OracleEngineVersion_VER_12_2_0_1_2019_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2020_01_R1

func OracleEngineVersion_VER_12_2_0_1_2020_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2020_04_R1

func OracleEngineVersion_VER_12_2_0_1_2020_04_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2020_07_R1

func OracleEngineVersion_VER_12_2_0_1_2020_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2020_10_R1

func OracleEngineVersion_VER_12_2_0_1_2020_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2021_01_R1

func OracleEngineVersion_VER_12_2_0_1_2021_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2021_04_R1

func OracleEngineVersion_VER_12_2_0_1_2021_04_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2021_07_R1 added in v2.54.0

func OracleEngineVersion_VER_12_2_0_1_2021_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2021_10_R1 added in v2.54.0

func OracleEngineVersion_VER_12_2_0_1_2021_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_12_2_0_1_2022_01_R1 added in v2.54.0

func OracleEngineVersion_VER_12_2_0_1_2022_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_18

func OracleEngineVersion_VER_18() OracleEngineVersion

func OracleEngineVersion_VER_18_0_0_0_2019_07_R1

func OracleEngineVersion_VER_18_0_0_0_2019_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_18_0_0_0_2019_10_R1

func OracleEngineVersion_VER_18_0_0_0_2019_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_18_0_0_0_2020_01_R1

func OracleEngineVersion_VER_18_0_0_0_2020_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_18_0_0_0_2020_04_R1

func OracleEngineVersion_VER_18_0_0_0_2020_04_R1() OracleEngineVersion

func OracleEngineVersion_VER_18_0_0_0_2020_07_R1

func OracleEngineVersion_VER_18_0_0_0_2020_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_18_0_0_0_2020_10_R1 added in v2.54.0

func OracleEngineVersion_VER_18_0_0_0_2020_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_18_0_0_0_2021_01_R1 added in v2.54.0

func OracleEngineVersion_VER_18_0_0_0_2021_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_18_0_0_0_2021_04_R1 added in v2.54.0

func OracleEngineVersion_VER_18_0_0_0_2021_04_R1() OracleEngineVersion

func OracleEngineVersion_VER_19

func OracleEngineVersion_VER_19() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2019_07_R1

func OracleEngineVersion_VER_19_0_0_0_2019_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2019_10_R1

func OracleEngineVersion_VER_19_0_0_0_2019_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2020_01_R1

func OracleEngineVersion_VER_19_0_0_0_2020_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2020_04_R1

func OracleEngineVersion_VER_19_0_0_0_2020_04_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2020_07_R1

func OracleEngineVersion_VER_19_0_0_0_2020_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2020_10_R1

func OracleEngineVersion_VER_19_0_0_0_2020_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2021_01_R1

func OracleEngineVersion_VER_19_0_0_0_2021_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2021_01_R2

func OracleEngineVersion_VER_19_0_0_0_2021_01_R2() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2021_04_R1

func OracleEngineVersion_VER_19_0_0_0_2021_04_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2021_07_R1 added in v2.34.0

func OracleEngineVersion_VER_19_0_0_0_2021_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2021_10_R1 added in v2.34.0

func OracleEngineVersion_VER_19_0_0_0_2021_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2022_01_R1 added in v2.34.0

func OracleEngineVersion_VER_19_0_0_0_2022_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2022_04_R1 added in v2.54.0

func OracleEngineVersion_VER_19_0_0_0_2022_04_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2022_07_R1 added in v2.54.0

func OracleEngineVersion_VER_19_0_0_0_2022_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2022_10_R1 added in v2.54.0

func OracleEngineVersion_VER_19_0_0_0_2022_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2023_01_R1 added in v2.67.0

func OracleEngineVersion_VER_19_0_0_0_2023_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2023_04_R1 added in v2.86.0

func OracleEngineVersion_VER_19_0_0_0_2023_04_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2023_07_R1 added in v2.106.0

func OracleEngineVersion_VER_19_0_0_0_2023_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_19_0_0_0_2023_10_R1 added in v2.106.0

func OracleEngineVersion_VER_19_0_0_0_2023_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_21 added in v2.34.0

func OracleEngineVersion_VER_21() OracleEngineVersion

func OracleEngineVersion_VER_21_0_0_0_2022_01_R1 added in v2.34.0

func OracleEngineVersion_VER_21_0_0_0_2022_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_21_0_0_0_2022_04_R1 added in v2.54.0

func OracleEngineVersion_VER_21_0_0_0_2022_04_R1() OracleEngineVersion

func OracleEngineVersion_VER_21_0_0_0_2022_07_R1 added in v2.54.0

func OracleEngineVersion_VER_21_0_0_0_2022_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_21_0_0_0_2022_10_R1 added in v2.54.0

func OracleEngineVersion_VER_21_0_0_0_2022_10_R1() OracleEngineVersion

func OracleEngineVersion_VER_21_0_0_0_2023_01_R1 added in v2.67.0

func OracleEngineVersion_VER_21_0_0_0_2023_01_R1() OracleEngineVersion

func OracleEngineVersion_VER_21_0_0_0_2023_04_R1 added in v2.86.0

func OracleEngineVersion_VER_21_0_0_0_2023_04_R1() OracleEngineVersion

func OracleEngineVersion_VER_21_0_0_0_2023_07_R1 added in v2.106.0

func OracleEngineVersion_VER_21_0_0_0_2023_07_R1() OracleEngineVersion

func OracleEngineVersion_VER_21_0_0_0_2023_10_R1 added in v2.106.0

func OracleEngineVersion_VER_21_0_0_0_2023_10_R1() OracleEngineVersion

type OracleSe2CdbInstanceEngineProps added in v2.34.0

type OracleSe2CdbInstanceEngineProps struct {
	// The exact version of the engine to use.
	Version OracleEngineVersion `field:"required" json:"version" yaml:"version"`
}

Properties for Oracle Standard Edition 2 (CDB) instance engines.

Used in `DatabaseInstanceEngine.oracleSe2Cdb`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var oracleEngineVersion oracleEngineVersion

oracleSe2CdbInstanceEngineProps := &OracleSe2CdbInstanceEngineProps{
	Version: oracleEngineVersion,
}

type OracleSe2InstanceEngineProps

type OracleSe2InstanceEngineProps struct {
	// The exact version of the engine to use.
	Version OracleEngineVersion `field:"required" json:"version" yaml:"version"`
}

Properties for Oracle Standard Edition 2 instance engines.

Used in `DatabaseInstanceEngine.oracleSe2`.

Example:

var vpc vpc

instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	// optional, defaults to m5.large
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_SMALL),
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("syscdk")),
	 // Optional - will default to 'admin' username and generated password
	Vpc: Vpc,
	VpcSubnets: &SubnetSelection{
		SubnetType: ec2.SubnetType_PRIVATE_WITH_EGRESS,
	},
})

type ParameterGroup

type ParameterGroup interface {
	awscdk.Resource
	IParameterGroup
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// Add a parameter to this parameter group.
	AddParameter(key *string, value *string) *bool
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Method called when this Parameter Group is used when defining a database cluster.
	BindToCluster(_options *ParameterGroupClusterBindOptions) *ParameterGroupClusterConfig
	// Method called when this Parameter Group is used when defining a database instance.
	BindToInstance(_options *ParameterGroupInstanceBindOptions) *ParameterGroupInstanceConfig
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Returns a string representation of this construct.
	ToString() *string
}

A parameter group.

Represents both a cluster parameter group, and an instance parameter group.

Example:

var plan backupPlan
var vpc vpc

myTable := dynamodb.Table_FromTableName(this, jsii.String("Table"), jsii.String("myTableName"))
myDatabaseInstance := rds.NewDatabaseInstance(this, jsii.String("DatabaseInstance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_Mysql(&MySqlInstanceEngineProps{
		Version: rds.MysqlEngineVersion_VER_8_0_26(),
	}),
	Vpc: Vpc,
})
myDatabaseCluster := rds.NewDatabaseCluster(this, jsii.String("DatabaseCluster"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_2_08_1(),
	}),
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("clusteradmin")),
	InstanceProps: &InstanceProps{
		Vpc: *Vpc,
	},
})
myServerlessCluster := rds.NewServerlessCluster(this, jsii.String("ServerlessCluster"), &ServerlessClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA_POSTGRESQL(),
	ParameterGroup: rds.ParameterGroup_FromParameterGroupName(this, jsii.String("ParameterGroup"), jsii.String("default.aurora-postgresql10")),
	Vpc: Vpc,
})
myCoolConstruct := constructs.NewConstruct(this, jsii.String("MyCoolConstruct"))

plan.AddSelection(jsii.String("Selection"), &BackupSelectionOptions{
	Resources: []backupResource{
		backup.*backupResource_FromDynamoDbTable(myTable),
		backup.*backupResource_FromRdsDatabaseInstance(myDatabaseInstance),
		backup.*backupResource_FromRdsDatabaseCluster(myDatabaseCluster),
		backup.*backupResource_FromRdsServerlessCluster(myServerlessCluster),
		backup.*backupResource_FromTag(jsii.String("stage"), jsii.String("prod")),
		backup.*backupResource_FromConstruct(myCoolConstruct),
	},
})

func NewParameterGroup

func NewParameterGroup(scope constructs.Construct, id *string, props *ParameterGroupProps) ParameterGroup

type ParameterGroupClusterBindOptions

type ParameterGroupClusterBindOptions struct {
}

Options for `IParameterGroup.bindToCluster`. Empty for now, but can be extended later.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

parameterGroupClusterBindOptions := &ParameterGroupClusterBindOptions{
}

type ParameterGroupClusterConfig

type ParameterGroupClusterConfig struct {
	// The name of this parameter group.
	ParameterGroupName *string `field:"required" json:"parameterGroupName" yaml:"parameterGroupName"`
}

The type returned from `IParameterGroup.bindToCluster`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

parameterGroupClusterConfig := &ParameterGroupClusterConfig{
	ParameterGroupName: jsii.String("parameterGroupName"),
}

type ParameterGroupInstanceBindOptions

type ParameterGroupInstanceBindOptions struct {
}

Options for `IParameterGroup.bindToInstance`. Empty for now, but can be extended later.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

parameterGroupInstanceBindOptions := &ParameterGroupInstanceBindOptions{
}

type ParameterGroupInstanceConfig

type ParameterGroupInstanceConfig struct {
	// The name of this parameter group.
	ParameterGroupName *string `field:"required" json:"parameterGroupName" yaml:"parameterGroupName"`
}

The type returned from `IParameterGroup.bindToInstance`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

parameterGroupInstanceConfig := &ParameterGroupInstanceConfig{
	ParameterGroupName: jsii.String("parameterGroupName"),
}

type ParameterGroupProps

type ParameterGroupProps struct {
	// The database engine for this parameter group.
	Engine IEngine `field:"required" json:"engine" yaml:"engine"`
	// Description for this parameter group.
	// Default: a CDK generated description.
	//
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The parameters in this parameter group.
	// Default: - None.
	//
	Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"`
}

Properties for a parameter group.

Example:

// Set open cursors with parameter group
parameterGroup := rds.NewParameterGroup(this, jsii.String("ParameterGroup"), &ParameterGroupProps{
	Engine: rds.DatabaseInstanceEngine_OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Parameters: map[string]*string{
		"open_cursors": jsii.String("2500"),
	},
})

optionGroup := rds.NewOptionGroup(this, jsii.String("OptionGroup"), &OptionGroupProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Configurations: []optionConfiguration{
		&optionConfiguration{
			Name: jsii.String("LOCATOR"),
		},
		&optionConfiguration{
			Name: jsii.String("OEM"),
			Port: jsii.Number(1158),
			Vpc: *Vpc,
		},
	},
})

// Allow connections to OEM
optionGroup.OptionConnections.oEM.Connections.AllowDefaultPortFromAnyIpv4()

// Database instance with production values
instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	LicenseModel: rds.LicenseModel_BRING_YOUR_OWN_LICENSE,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_MEDIUM),
	MultiAz: jsii.Boolean(true),
	StorageType: rds.StorageType_IO1,
	Credentials: rds.Credentials_FromUsername(jsii.String("syscdk")),
	Vpc: Vpc,
	DatabaseName: jsii.String("ORCL"),
	StorageEncrypted: jsii.Boolean(true),
	BackupRetention: cdk.Duration_Days(jsii.Number(7)),
	MonitoringInterval: cdk.Duration_Seconds(jsii.Number(60)),
	EnablePerformanceInsights: jsii.Boolean(true),
	CloudwatchLogsExports: []*string{
		jsii.String("trace"),
		jsii.String("audit"),
		jsii.String("alert"),
		jsii.String("listener"),
	},
	CloudwatchLogsRetention: logs.RetentionDays_ONE_MONTH,
	AutoMinorVersionUpgrade: jsii.Boolean(true),
	 // required to be true if LOCATOR is used in the option group
	OptionGroup: OptionGroup,
	ParameterGroup: ParameterGroup,
	RemovalPolicy: awscdk.RemovalPolicy_DESTROY,
})

// Allow connections on default port from any IPV4
instance.connections.AllowDefaultPortFromAnyIpv4()

// Rotate the master user password every 30 days
instance.addRotationSingleUser()

// Add alarm for high CPU
// Add alarm for high CPU
cloudwatch.NewAlarm(this, jsii.String("HighCPU"), &AlarmProps{
	Metric: instance.metricCPUUtilization(),
	Threshold: jsii.Number(90),
	EvaluationPeriods: jsii.Number(1),
})

// Trigger Lambda function on instance availability events
fn := lambda.NewFunction(this, jsii.String("Function"), &FunctionProps{
	Code: lambda.Code_FromInline(jsii.String("exports.handler = (event) => console.log(event);")),
	Handler: jsii.String("index.handler"),
	Runtime: lambda.Runtime_NODEJS_18_X(),
})

availabilityRule := instance.OnEvent(jsii.String("Availability"), &OnEventOptions{
	Target: targets.NewLambdaFunction(fn),
})
availabilityRule.AddEventPattern(&EventPattern{
	Detail: map[string]interface{}{
		"EventCategories": []interface{}{
			jsii.String("availability"),
		},
	},
})

type PerformanceInsightRetention

type PerformanceInsightRetention string

The retention period for Performance Insight data, in days.

Per https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html#cfn-rds-dbinstance-performanceinsightsretentionperiod This must be either - 7 days (the default, free tier) - month * 31, where month is a number of months from 1-23 - 731 (2 years).

const (
	// Default retention period of 7 days.
	PerformanceInsightRetention_DEFAULT   PerformanceInsightRetention = "DEFAULT"
	PerformanceInsightRetention_MONTHS_1  PerformanceInsightRetention = "MONTHS_1"
	PerformanceInsightRetention_MONTHS_2  PerformanceInsightRetention = "MONTHS_2"
	PerformanceInsightRetention_MONTHS_3  PerformanceInsightRetention = "MONTHS_3"
	PerformanceInsightRetention_MONTHS_4  PerformanceInsightRetention = "MONTHS_4"
	PerformanceInsightRetention_MONTHS_5  PerformanceInsightRetention = "MONTHS_5"
	PerformanceInsightRetention_MONTHS_6  PerformanceInsightRetention = "MONTHS_6"
	PerformanceInsightRetention_MONTHS_7  PerformanceInsightRetention = "MONTHS_7"
	PerformanceInsightRetention_MONTHS_8  PerformanceInsightRetention = "MONTHS_8"
	PerformanceInsightRetention_MONTHS_9  PerformanceInsightRetention = "MONTHS_9"
	PerformanceInsightRetention_MONTHS_10 PerformanceInsightRetention = "MONTHS_10"
	PerformanceInsightRetention_MONTHS_11 PerformanceInsightRetention = "MONTHS_11"
	PerformanceInsightRetention_MONTHS_12 PerformanceInsightRetention = "MONTHS_12"
	PerformanceInsightRetention_MONTHS_13 PerformanceInsightRetention = "MONTHS_13"
	PerformanceInsightRetention_MONTHS_14 PerformanceInsightRetention = "MONTHS_14"
	PerformanceInsightRetention_MONTHS_15 PerformanceInsightRetention = "MONTHS_15"
	PerformanceInsightRetention_MONTHS_16 PerformanceInsightRetention = "MONTHS_16"
	PerformanceInsightRetention_MONTHS_17 PerformanceInsightRetention = "MONTHS_17"
	PerformanceInsightRetention_MONTHS_18 PerformanceInsightRetention = "MONTHS_18"
	PerformanceInsightRetention_MONTHS_19 PerformanceInsightRetention = "MONTHS_19"
	PerformanceInsightRetention_MONTHS_20 PerformanceInsightRetention = "MONTHS_20"
	PerformanceInsightRetention_MONTHS_21 PerformanceInsightRetention = "MONTHS_21"
	PerformanceInsightRetention_MONTHS_22 PerformanceInsightRetention = "MONTHS_22"
	PerformanceInsightRetention_MONTHS_23 PerformanceInsightRetention = "MONTHS_23"
	// Long term retention period of 2 years.
	PerformanceInsightRetention_LONG_TERM PerformanceInsightRetention = "LONG_TERM"
)

type PostgresEngineFeatures

type PostgresEngineFeatures struct {
	// Whether this version of the Postgres engine supports the S3 data export feature.
	// Default: false.
	//
	S3Export *bool `field:"optional" json:"s3Export" yaml:"s3Export"`
	// Whether this version of the Postgres engine supports the S3 data import feature.
	// Default: false.
	//
	S3Import *bool `field:"optional" json:"s3Import" yaml:"s3Import"`
}

Features supported by the Postgres database engine.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

postgresEngineFeatures := &PostgresEngineFeatures{
	S3Export: jsii.Boolean(false),
	S3Import: jsii.Boolean(false),
}

type PostgresEngineVersion

type PostgresEngineVersion interface {
	// The full version string, for example, "13.11".
	PostgresFullVersion() *string
	// The major version of the engine, for example, "13".
	PostgresMajorVersion() *string
}

The versions for the PostgreSQL instance engines (those returned by `DatabaseInstanceEngine.postgres`).

Example:

var vpc vpc

engine := rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
	Version: rds.PostgresEngineVersion_VER_15_2(),
})
myKey := kms.NewKey(this, jsii.String("MyKey"))

rds.NewDatabaseInstance(this, jsii.String("InstanceWithCustomizedSecret"), &DatabaseInstanceProps{
	Engine: Engine,
	Vpc: Vpc,
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("postgres"), &CredentialsBaseOptions{
		SecretName: jsii.String("my-cool-name"),
		EncryptionKey: myKey,
		ExcludeCharacters: jsii.String("!&*^#@()"),
		ReplicaRegions: []replicaRegion{
			&replicaRegion{
				Region: jsii.String("eu-west-1"),
			},
			&replicaRegion{
				Region: jsii.String("eu-west-2"),
			},
		},
	}),
})

func PostgresEngineVersion_Of

func PostgresEngineVersion_Of(postgresFullVersion *string, postgresMajorVersion *string, postgresFeatures *PostgresEngineFeatures) PostgresEngineVersion

Create a new PostgresEngineVersion with an arbitrary version.

func PostgresEngineVersion_VER_10

func PostgresEngineVersion_VER_10() PostgresEngineVersion

func PostgresEngineVersion_VER_10_1

func PostgresEngineVersion_VER_10_1() PostgresEngineVersion

func PostgresEngineVersion_VER_10_10

func PostgresEngineVersion_VER_10_10() PostgresEngineVersion

func PostgresEngineVersion_VER_10_11

func PostgresEngineVersion_VER_10_11() PostgresEngineVersion

func PostgresEngineVersion_VER_10_12

func PostgresEngineVersion_VER_10_12() PostgresEngineVersion

func PostgresEngineVersion_VER_10_13

func PostgresEngineVersion_VER_10_13() PostgresEngineVersion

func PostgresEngineVersion_VER_10_14

func PostgresEngineVersion_VER_10_14() PostgresEngineVersion

func PostgresEngineVersion_VER_10_15

func PostgresEngineVersion_VER_10_15() PostgresEngineVersion

func PostgresEngineVersion_VER_10_16

func PostgresEngineVersion_VER_10_16() PostgresEngineVersion

func PostgresEngineVersion_VER_10_17

func PostgresEngineVersion_VER_10_17() PostgresEngineVersion

func PostgresEngineVersion_VER_10_18

func PostgresEngineVersion_VER_10_18() PostgresEngineVersion

func PostgresEngineVersion_VER_10_19 added in v2.10.0

func PostgresEngineVersion_VER_10_19() PostgresEngineVersion

func PostgresEngineVersion_VER_10_20 added in v2.19.0

func PostgresEngineVersion_VER_10_20() PostgresEngineVersion

func PostgresEngineVersion_VER_10_21 added in v2.54.0

func PostgresEngineVersion_VER_10_21() PostgresEngineVersion

func PostgresEngineVersion_VER_10_22 added in v2.54.0

func PostgresEngineVersion_VER_10_22() PostgresEngineVersion

func PostgresEngineVersion_VER_10_23 added in v2.64.0

func PostgresEngineVersion_VER_10_23() PostgresEngineVersion

func PostgresEngineVersion_VER_10_3

func PostgresEngineVersion_VER_10_3() PostgresEngineVersion

func PostgresEngineVersion_VER_10_4

func PostgresEngineVersion_VER_10_4() PostgresEngineVersion

func PostgresEngineVersion_VER_10_5

func PostgresEngineVersion_VER_10_5() PostgresEngineVersion

func PostgresEngineVersion_VER_10_6

func PostgresEngineVersion_VER_10_6() PostgresEngineVersion

func PostgresEngineVersion_VER_10_7

func PostgresEngineVersion_VER_10_7() PostgresEngineVersion

func PostgresEngineVersion_VER_10_9

func PostgresEngineVersion_VER_10_9() PostgresEngineVersion

func PostgresEngineVersion_VER_11

func PostgresEngineVersion_VER_11() PostgresEngineVersion

func PostgresEngineVersion_VER_11_1

func PostgresEngineVersion_VER_11_1() PostgresEngineVersion

func PostgresEngineVersion_VER_11_10

func PostgresEngineVersion_VER_11_10() PostgresEngineVersion

func PostgresEngineVersion_VER_11_11

func PostgresEngineVersion_VER_11_11() PostgresEngineVersion

func PostgresEngineVersion_VER_11_12

func PostgresEngineVersion_VER_11_12() PostgresEngineVersion

func PostgresEngineVersion_VER_11_13

func PostgresEngineVersion_VER_11_13() PostgresEngineVersion

func PostgresEngineVersion_VER_11_14 added in v2.10.0

func PostgresEngineVersion_VER_11_14() PostgresEngineVersion

func PostgresEngineVersion_VER_11_15 added in v2.19.0

func PostgresEngineVersion_VER_11_15() PostgresEngineVersion

func PostgresEngineVersion_VER_11_16 added in v2.44.0

func PostgresEngineVersion_VER_11_16() PostgresEngineVersion

func PostgresEngineVersion_VER_11_17 added in v2.54.0

func PostgresEngineVersion_VER_11_17() PostgresEngineVersion

func PostgresEngineVersion_VER_11_18 added in v2.64.0

func PostgresEngineVersion_VER_11_18() PostgresEngineVersion

func PostgresEngineVersion_VER_11_19 added in v2.69.0

func PostgresEngineVersion_VER_11_19() PostgresEngineVersion

func PostgresEngineVersion_VER_11_2

func PostgresEngineVersion_VER_11_2() PostgresEngineVersion

func PostgresEngineVersion_VER_11_20 added in v2.82.0

func PostgresEngineVersion_VER_11_20() PostgresEngineVersion

func PostgresEngineVersion_VER_11_21 added in v2.94.0

func PostgresEngineVersion_VER_11_21() PostgresEngineVersion

func PostgresEngineVersion_VER_11_22 added in v2.112.0

func PostgresEngineVersion_VER_11_22() PostgresEngineVersion

func PostgresEngineVersion_VER_11_4

func PostgresEngineVersion_VER_11_4() PostgresEngineVersion

func PostgresEngineVersion_VER_11_5

func PostgresEngineVersion_VER_11_5() PostgresEngineVersion

func PostgresEngineVersion_VER_11_6

func PostgresEngineVersion_VER_11_6() PostgresEngineVersion

func PostgresEngineVersion_VER_11_7

func PostgresEngineVersion_VER_11_7() PostgresEngineVersion

func PostgresEngineVersion_VER_11_8

func PostgresEngineVersion_VER_11_8() PostgresEngineVersion

func PostgresEngineVersion_VER_11_9

func PostgresEngineVersion_VER_11_9() PostgresEngineVersion

func PostgresEngineVersion_VER_12

func PostgresEngineVersion_VER_12() PostgresEngineVersion

func PostgresEngineVersion_VER_12_10 added in v2.19.0

func PostgresEngineVersion_VER_12_10() PostgresEngineVersion

func PostgresEngineVersion_VER_12_11 added in v2.37.0

func PostgresEngineVersion_VER_12_11() PostgresEngineVersion

func PostgresEngineVersion_VER_12_12 added in v2.54.0

func PostgresEngineVersion_VER_12_12() PostgresEngineVersion

func PostgresEngineVersion_VER_12_13 added in v2.64.0

func PostgresEngineVersion_VER_12_13() PostgresEngineVersion

func PostgresEngineVersion_VER_12_14 added in v2.69.0

func PostgresEngineVersion_VER_12_14() PostgresEngineVersion

func PostgresEngineVersion_VER_12_15 added in v2.82.0

func PostgresEngineVersion_VER_12_15() PostgresEngineVersion

func PostgresEngineVersion_VER_12_16 added in v2.94.0

func PostgresEngineVersion_VER_12_16() PostgresEngineVersion

func PostgresEngineVersion_VER_12_17 added in v2.112.0

func PostgresEngineVersion_VER_12_17() PostgresEngineVersion

func PostgresEngineVersion_VER_12_2

func PostgresEngineVersion_VER_12_2() PostgresEngineVersion

func PostgresEngineVersion_VER_12_3

func PostgresEngineVersion_VER_12_3() PostgresEngineVersion

func PostgresEngineVersion_VER_12_4

func PostgresEngineVersion_VER_12_4() PostgresEngineVersion

func PostgresEngineVersion_VER_12_5

func PostgresEngineVersion_VER_12_5() PostgresEngineVersion

func PostgresEngineVersion_VER_12_6

func PostgresEngineVersion_VER_12_6() PostgresEngineVersion

func PostgresEngineVersion_VER_12_7

func PostgresEngineVersion_VER_12_7() PostgresEngineVersion

func PostgresEngineVersion_VER_12_8

func PostgresEngineVersion_VER_12_8() PostgresEngineVersion

func PostgresEngineVersion_VER_12_9 added in v2.10.0

func PostgresEngineVersion_VER_12_9() PostgresEngineVersion

func PostgresEngineVersion_VER_13

func PostgresEngineVersion_VER_13() PostgresEngineVersion

func PostgresEngineVersion_VER_13_1

func PostgresEngineVersion_VER_13_1() PostgresEngineVersion

func PostgresEngineVersion_VER_13_10 added in v2.69.0

func PostgresEngineVersion_VER_13_10() PostgresEngineVersion

func PostgresEngineVersion_VER_13_11 added in v2.82.0

func PostgresEngineVersion_VER_13_11() PostgresEngineVersion

func PostgresEngineVersion_VER_13_12 added in v2.94.0

func PostgresEngineVersion_VER_13_12() PostgresEngineVersion

func PostgresEngineVersion_VER_13_13 added in v2.112.0

func PostgresEngineVersion_VER_13_13() PostgresEngineVersion

func PostgresEngineVersion_VER_13_2

func PostgresEngineVersion_VER_13_2() PostgresEngineVersion

func PostgresEngineVersion_VER_13_3

func PostgresEngineVersion_VER_13_3() PostgresEngineVersion

func PostgresEngineVersion_VER_13_4

func PostgresEngineVersion_VER_13_4() PostgresEngineVersion

func PostgresEngineVersion_VER_13_5 added in v2.10.0

func PostgresEngineVersion_VER_13_5() PostgresEngineVersion

func PostgresEngineVersion_VER_13_6 added in v2.19.0

func PostgresEngineVersion_VER_13_6() PostgresEngineVersion

func PostgresEngineVersion_VER_13_7 added in v2.37.0

func PostgresEngineVersion_VER_13_7() PostgresEngineVersion

func PostgresEngineVersion_VER_13_8 added in v2.54.0

func PostgresEngineVersion_VER_13_8() PostgresEngineVersion

func PostgresEngineVersion_VER_13_9 added in v2.64.0

func PostgresEngineVersion_VER_13_9() PostgresEngineVersion

func PostgresEngineVersion_VER_14 added in v2.11.0

func PostgresEngineVersion_VER_14() PostgresEngineVersion

func PostgresEngineVersion_VER_14_1 added in v2.11.0

func PostgresEngineVersion_VER_14_1() PostgresEngineVersion

func PostgresEngineVersion_VER_14_10 added in v2.112.0

func PostgresEngineVersion_VER_14_10() PostgresEngineVersion

func PostgresEngineVersion_VER_14_2 added in v2.19.0

func PostgresEngineVersion_VER_14_2() PostgresEngineVersion

func PostgresEngineVersion_VER_14_3 added in v2.37.0

func PostgresEngineVersion_VER_14_3() PostgresEngineVersion

func PostgresEngineVersion_VER_14_4 added in v2.47.0

func PostgresEngineVersion_VER_14_4() PostgresEngineVersion

func PostgresEngineVersion_VER_14_5 added in v2.54.0

func PostgresEngineVersion_VER_14_5() PostgresEngineVersion

func PostgresEngineVersion_VER_14_6 added in v2.64.0

func PostgresEngineVersion_VER_14_6() PostgresEngineVersion

func PostgresEngineVersion_VER_14_7 added in v2.69.0

func PostgresEngineVersion_VER_14_7() PostgresEngineVersion

func PostgresEngineVersion_VER_14_8 added in v2.82.0

func PostgresEngineVersion_VER_14_8() PostgresEngineVersion

func PostgresEngineVersion_VER_14_9 added in v2.94.0

func PostgresEngineVersion_VER_14_9() PostgresEngineVersion

func PostgresEngineVersion_VER_15 added in v2.68.0

func PostgresEngineVersion_VER_15() PostgresEngineVersion

func PostgresEngineVersion_VER_15_2 added in v2.69.0

func PostgresEngineVersion_VER_15_2() PostgresEngineVersion

func PostgresEngineVersion_VER_15_3 added in v2.82.0

func PostgresEngineVersion_VER_15_3() PostgresEngineVersion

func PostgresEngineVersion_VER_15_4 added in v2.94.0

func PostgresEngineVersion_VER_15_4() PostgresEngineVersion

func PostgresEngineVersion_VER_15_5 added in v2.112.0

func PostgresEngineVersion_VER_15_5() PostgresEngineVersion

func PostgresEngineVersion_VER_16 added in v2.112.0

func PostgresEngineVersion_VER_16() PostgresEngineVersion

func PostgresEngineVersion_VER_16_1 added in v2.112.0

func PostgresEngineVersion_VER_16_1() PostgresEngineVersion

func PostgresEngineVersion_VER_9_6_24 added in v2.10.0

func PostgresEngineVersion_VER_9_6_24() PostgresEngineVersion

type PostgresInstanceEngineProps

type PostgresInstanceEngineProps struct {
	// The exact version of the engine to use.
	Version PostgresEngineVersion `field:"required" json:"version" yaml:"version"`
}

Properties for PostgreSQL instance engines.

Used in `DatabaseInstanceEngine.postgres`.

Example:

var vpc vpc

engine := rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
	Version: rds.PostgresEngineVersion_VER_15_2(),
})
myKey := kms.NewKey(this, jsii.String("MyKey"))

rds.NewDatabaseInstance(this, jsii.String("InstanceWithCustomizedSecret"), &DatabaseInstanceProps{
	Engine: Engine,
	Vpc: Vpc,
	Credentials: rds.Credentials_FromGeneratedSecret(jsii.String("postgres"), &CredentialsBaseOptions{
		SecretName: jsii.String("my-cool-name"),
		EncryptionKey: myKey,
		ExcludeCharacters: jsii.String("!&*^#@()"),
		ReplicaRegions: []replicaRegion{
			&replicaRegion{
				Region: jsii.String("eu-west-1"),
			},
			&replicaRegion{
				Region: jsii.String("eu-west-2"),
			},
		},
	}),
})

type ProcessorFeatures

type ProcessorFeatures struct {
	// The number of CPU core.
	// Default: - the default number of CPU cores for the chosen instance class.
	//
	CoreCount *float64 `field:"optional" json:"coreCount" yaml:"coreCount"`
	// The number of threads per core.
	// Default: - the default number of threads per core for the chosen instance class.
	//
	ThreadsPerCore *float64 `field:"optional" json:"threadsPerCore" yaml:"threadsPerCore"`
}

The processor features.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

processorFeatures := &ProcessorFeatures{
	CoreCount: jsii.Number(123),
	ThreadsPerCore: jsii.Number(123),
}

type ProvisionedClusterInstanceProps added in v2.82.0

type ProvisionedClusterInstanceProps struct {
	// Whether to allow upgrade of major version for the DB instance.
	// Default: - false.
	//
	AllowMajorVersionUpgrade *bool `field:"optional" json:"allowMajorVersionUpgrade" yaml:"allowMajorVersionUpgrade"`
	// Whether to enable automatic upgrade of minor version for the DB instance.
	// Default: - true.
	//
	AutoMinorVersionUpgrade *bool `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// The identifier of the CA certificate for this DB cluster's instances.
	//
	// Specifying or updating this property triggers a reboot.
	//
	// For RDS DB engines:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html
	//
	// Default: - RDS will choose a certificate authority.
	//
	CaCertificate CaCertificate `field:"optional" json:"caCertificate" yaml:"caCertificate"`
	// Whether to enable Performance Insights for the DB instance.
	// Default: - false, unless “performanceInsightRetention“ or “performanceInsightEncryptionKey“ is set.
	//
	EnablePerformanceInsights *bool `field:"optional" json:"enablePerformanceInsights" yaml:"enablePerformanceInsights"`
	// The identifier for the database instance.
	// Default: - CloudFormation generated identifier.
	//
	InstanceIdentifier *string `field:"optional" json:"instanceIdentifier" yaml:"instanceIdentifier"`
	// Only used for migrating existing clusters from using `instanceProps` to `writer` and `readers`.
	//
	// Example:
	//   // existing cluster
	//   declare const vpc: ec2.Vpc;
	//   const cluster = new rds.DatabaseCluster(this, 'Database', {
	//     engine: rds.DatabaseClusterEngine.auroraMysql({
	//       version: rds.AuroraMysqlEngineVersion.VER_3_03_0,
	//     }),
	//     instances: 2,
	//     instanceProps: {
	//       instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.SMALL),
	//       vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC },
	//       vpc,
	//     },
	//   });
	//
	//   // migration
	//
	//   const instanceProps = {
	//     instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.SMALL),
	//     isFromLegacyInstanceProps: true,
	//   };
	//
	//   const myCluster = new rds.DatabaseCluster(this, 'Database', {
	//     engine: rds.DatabaseClusterEngine.auroraMysql({
	//       version: rds.AuroraMysqlEngineVersion.VER_3_03_0,
	//     }),
	//     vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC },
	//     vpc,
	//     writer: rds.ClusterInstance.provisioned('Instance1', {
	//       instanceType: instanceProps.instanceType,
	//       isFromLegacyInstanceProps: instanceProps.isFromLegacyInstanceProps,
	//     }),
	//     readers: [
	//       rds.ClusterInstance.provisioned('Instance2', {
	//         instanceType: instanceProps.instanceType,
	//         isFromLegacyInstanceProps: instanceProps.isFromLegacyInstanceProps,
	//       }),
	//     ],
	//   });
	//
	// Default: false.
	//
	IsFromLegacyInstanceProps *bool `field:"optional" json:"isFromLegacyInstanceProps" yaml:"isFromLegacyInstanceProps"`
	// The DB parameter group to associate with the instance.
	//
	// This is only needed if you need to configure different parameter
	// groups for each individual instance, otherwise you should not
	// provide this and just use the cluster parameter group.
	// Default: the cluster parameter group is used.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The parameters in the DBParameterGroup to create automatically.
	//
	// You can only specify parameterGroup or parameters but not both.
	// You need to use a versioned engine to auto-generate a DBParameterGroup.
	// Default: - None.
	//
	Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"`
	// The AWS KMS key for encryption of Performance Insights data.
	// Default: - default master key.
	//
	PerformanceInsightEncryptionKey awskms.IKey `field:"optional" json:"performanceInsightEncryptionKey" yaml:"performanceInsightEncryptionKey"`
	// The amount of time, in days, to retain Performance Insights data.
	// Default: 7.
	//
	PerformanceInsightRetention PerformanceInsightRetention `field:"optional" json:"performanceInsightRetention" yaml:"performanceInsightRetention"`
	// Indicates whether the DB instance is an internet-facing instance.
	// Default: - true if the instance is placed in a public subnet.
	//
	PubliclyAccessible *bool `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
	// The cluster instance type.
	// Default: db.t3.medium
	//
	InstanceType awsec2.InstanceType `field:"optional" json:"instanceType" yaml:"instanceType"`
	// The promotion tier of the cluster instance.
	//
	// Can be between 0-15
	//
	// For provisioned instances this just determines the failover priority.
	// If multiple instances have the same priority then one will be picked at random.
	// Default: 2.
	//
	PromotionTier *float64 `field:"optional" json:"promotionTier" yaml:"promotionTier"`
}

Options for creating a provisioned instance.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer"), &ProvisionedClusterInstanceProps{
		InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_R6G, ec2.InstanceSize_XLARGE4),
	}),
	ServerlessV2MinCapacity: jsii.Number(6.5),
	ServerlessV2MaxCapacity: jsii.Number(64),
	Readers: []iClusterInstance{
		rds.ClusterInstance_ServerlessV2(jsii.String("reader1"), &ServerlessV2ClusterInstanceProps{
			ScaleWithWriter: jsii.Boolean(true),
		}),
		rds.ClusterInstance_*ServerlessV2(jsii.String("reader2")),
	},
	Vpc: Vpc,
})

type ProxyTarget

type ProxyTarget interface {
	// Bind this target to the specified database proxy.
	Bind(proxy DatabaseProxy) *ProxyTargetConfig
}

Proxy target: Instance or Cluster.

A target group is a collection of databases that the proxy can connect to. Currently, you can specify only one RDS DB instance or Aurora DB cluster.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_03_0(),
	}),
	Writer: rds.ClusterInstance_Provisioned(jsii.String("writer")),
	Vpc: Vpc,
})

proxy := rds.NewDatabaseProxy(this, jsii.String("Proxy"), &DatabaseProxyProps{
	ProxyTarget: rds.ProxyTarget_FromCluster(cluster),
	Secrets: []iSecret{
		cluster.Secret,
	},
	Vpc: Vpc,
})

role := iam.NewRole(this, jsii.String("DBProxyRole"), &RoleProps{
	AssumedBy: iam.NewAccountPrincipal(this.Account),
})
proxy.GrantConnect(role, jsii.String("admin"))

func ProxyTarget_FromCluster

func ProxyTarget_FromCluster(cluster IDatabaseCluster) ProxyTarget

From cluster.

func ProxyTarget_FromInstance

func ProxyTarget_FromInstance(instance IDatabaseInstance) ProxyTarget

From instance.

type ProxyTargetConfig

type ProxyTargetConfig struct {
	// The engine family of the database instance or cluster this proxy connects with.
	EngineFamily *string `field:"required" json:"engineFamily" yaml:"engineFamily"`
	// The database clusters to which this proxy connects.
	//
	// Either this or `dbInstances` will be set and the other `undefined`.
	// Default: - `undefined` if `dbInstances` is set.
	//
	DbClusters *[]IDatabaseCluster `field:"optional" json:"dbClusters" yaml:"dbClusters"`
	// The database instances to which this proxy connects.
	//
	// Either this or `dbClusters` will be set and the other `undefined`.
	// Default: - `undefined` if `dbClusters` is set.
	//
	DbInstances *[]IDatabaseInstance `field:"optional" json:"dbInstances" yaml:"dbInstances"`
}

The result of binding a `ProxyTarget` to a `DatabaseProxy`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var databaseCluster databaseCluster
var databaseInstance databaseInstance

proxyTargetConfig := &ProxyTargetConfig{
	EngineFamily: jsii.String("engineFamily"),

	// the properties below are optional
	DbClusters: []iDatabaseCluster{
		databaseCluster,
	},
	DbInstances: []iDatabaseInstance{
		databaseInstance,
	},
}

type RotationMultiUserOptions

type RotationMultiUserOptions struct {
	// Specifies the number of days after the previous rotation before Secrets Manager triggers the next automatic rotation.
	// Default: - 30 days.
	//
	AutomaticallyAfter awscdk.Duration `field:"optional" json:"automaticallyAfter" yaml:"automaticallyAfter"`
	// The VPC interface endpoint to use for the Secrets Manager API.
	//
	// If you enable private DNS hostnames for your VPC private endpoint (the default), you don't
	// need to specify an endpoint. The standard Secrets Manager DNS hostname the Secrets Manager
	// CLI and SDKs use by default (https://secretsmanager.<region>.amazonaws.com) automatically
	// resolves to your VPC endpoint.
	// Default: https://secretsmanager.<region>.amazonaws.com
	//
	Endpoint awsec2.IInterfaceVpcEndpoint `field:"optional" json:"endpoint" yaml:"endpoint"`
	// Specifies characters to not include in generated passwords.
	// Default: " %+~`#$&*()|[]{}:;<>?!'/@\"\\"
	//
	ExcludeCharacters *string `field:"optional" json:"excludeCharacters" yaml:"excludeCharacters"`
	// Specifies whether to rotate the secret immediately or wait until the next scheduled rotation window.
	// Default: true.
	//
	RotateImmediatelyOnUpdate *bool `field:"optional" json:"rotateImmediatelyOnUpdate" yaml:"rotateImmediatelyOnUpdate"`
	// The security group for the Lambda rotation function.
	// Default: - a new security group is created.
	//
	SecurityGroup awsec2.ISecurityGroup `field:"optional" json:"securityGroup" yaml:"securityGroup"`
	// Where to place the rotation Lambda function.
	// Default: - same placement as instance or cluster.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
	// The secret to rotate.
	//
	// It must be a JSON string with the following format:
	// “`
	// {
	//   "engine": <required: database engine>,
	//   "host": <required: instance host name>,
	//   "username": <required: username>,
	//   "password": <required: password>,
	//   "dbname": <optional: database name>,
	//   "port": <optional: if not specified, default port will be used>,
	//   "masterarn": <required: the arn of the master secret which will be used to create users/change passwords>
	// }
	// “`.
	Secret awssecretsmanager.ISecret `field:"required" json:"secret" yaml:"secret"`
}

Options to add the multi user rotation.

Example:

var instance databaseInstance
var myImportedSecret databaseSecret

instance.addRotationMultiUser(jsii.String("MyUser"), &RotationMultiUserOptions{
	Secret: myImportedSecret,
})

type RotationSingleUserOptions

type RotationSingleUserOptions struct {
	// Specifies the number of days after the previous rotation before Secrets Manager triggers the next automatic rotation.
	// Default: - 30 days.
	//
	AutomaticallyAfter awscdk.Duration `field:"optional" json:"automaticallyAfter" yaml:"automaticallyAfter"`
	// The VPC interface endpoint to use for the Secrets Manager API.
	//
	// If you enable private DNS hostnames for your VPC private endpoint (the default), you don't
	// need to specify an endpoint. The standard Secrets Manager DNS hostname the Secrets Manager
	// CLI and SDKs use by default (https://secretsmanager.<region>.amazonaws.com) automatically
	// resolves to your VPC endpoint.
	// Default: https://secretsmanager.<region>.amazonaws.com
	//
	Endpoint awsec2.IInterfaceVpcEndpoint `field:"optional" json:"endpoint" yaml:"endpoint"`
	// Specifies characters to not include in generated passwords.
	// Default: " %+~`#$&*()|[]{}:;<>?!'/@\"\\"
	//
	ExcludeCharacters *string `field:"optional" json:"excludeCharacters" yaml:"excludeCharacters"`
	// Specifies whether to rotate the secret immediately or wait until the next scheduled rotation window.
	// Default: true.
	//
	RotateImmediatelyOnUpdate *bool `field:"optional" json:"rotateImmediatelyOnUpdate" yaml:"rotateImmediatelyOnUpdate"`
	// The security group for the Lambda rotation function.
	// Default: - a new security group is created.
	//
	SecurityGroup awsec2.ISecurityGroup `field:"optional" json:"securityGroup" yaml:"securityGroup"`
	// Where to place the rotation Lambda function.
	// Default: - same placement as instance or cluster.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
}

Options to add the multi user rotation.

Example:

var instance databaseInstance
var mySecurityGroup securityGroup

instance.addRotationSingleUser(&RotationSingleUserOptions{
	AutomaticallyAfter: awscdk.Duration_Days(jsii.Number(7)),
	 // defaults to 30 days
	ExcludeCharacters: jsii.String("!@#$%^&*"),
	 // defaults to the set " %+~`#/// here*()|[]{}:;<>?!'/@\"\\"
	SecurityGroup: mySecurityGroup,
	 // defaults to an auto-created security group
	RotateImmediatelyOnUpdate: jsii.Boolean(false),
})

type ServerlessCluster

type ServerlessCluster interface {
	awscdk.Resource
	IServerlessCluster
	// The ARN of the cluster.
	ClusterArn() *string
	// The endpoint to use for read/write operations.
	ClusterEndpoint() Endpoint
	// Identifier of the cluster.
	ClusterIdentifier() *string
	// The endpoint to use for read/write operations.
	ClusterReadEndpoint() Endpoint
	// Access to the network connections.
	Connections() awsec2.Connections
	EnableDataApi() *bool
	SetEnableDataApi(val *bool)
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	NewCfnProps() *CfnDBClusterProps
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The secret attached to this cluster.
	Secret() awssecretsmanager.ISecret
	SecurityGroups() *[]awsec2.ISecurityGroup
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// Adds the multi user rotation to this cluster.
	AddRotationMultiUser(id *string, options *RotationMultiUserOptions) awssecretsmanager.SecretRotation
	// Adds the single user rotation of the master password to this cluster.
	AddRotationSingleUser(options *RotationSingleUserOptions) awssecretsmanager.SecretRotation
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Renders the secret attachment target specifications.
	AsSecretAttachmentTarget() *awssecretsmanager.SecretAttachmentTargetProps
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Grant the given identity to access to the Data API, including read access to the secret attached to the cluster if present.
	GrantDataApiAccess(grantee awsiam.IGrantable) awsiam.Grant
	// Returns a string representation of this construct.
	ToString() *string
}

Create an Aurora Serverless Cluster.

Example:

// Build a data source for AppSync to access the database.
var api graphqlApi
// Create username and password secret for DB Cluster
secret := rds.NewDatabaseSecret(this, jsii.String("AuroraSecret"), &DatabaseSecretProps{
	Username: jsii.String("clusteradmin"),
})

// The VPC to place the cluster in
vpc := ec2.NewVpc(this, jsii.String("AuroraVpc"))

// Create the serverless cluster, provide all values needed to customise the database.
cluster := rds.NewServerlessCluster(this, jsii.String("AuroraCluster"), &ServerlessClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA_MYSQL(),
	Vpc: Vpc,
	Credentials: map[string]*string{
		"username": jsii.String("clusteradmin"),
	},
	ClusterIdentifier: jsii.String("db-endpoint-test"),
	DefaultDatabaseName: jsii.String("demos"),
})
rdsDS := api.AddRdsDataSource(jsii.String("rds"), cluster, secret, jsii.String("demos"))

// Set up a resolver for an RDS query.
rdsDS.CreateResolver(jsii.String("QueryGetDemosRdsResolver"), &BaseResolverProps{
	TypeName: jsii.String("Query"),
	FieldName: jsii.String("getDemosRds"),
	RequestMappingTemplate: appsync.MappingTemplate_FromString(jsii.String(`
	  {
	    "version": "2018-05-29",
	    "statements": [
	      "SELECT * FROM demos"
	    ]
	  }
	  `)),
	ResponseMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	    $utils.toJson($utils.rds.toJsonObject($ctx.result)[0])
	  `)),
})

// Set up a resolver for an RDS mutation.
rdsDS.CreateResolver(jsii.String("MutationAddDemoRdsResolver"), &BaseResolverProps{
	TypeName: jsii.String("Mutation"),
	FieldName: jsii.String("addDemoRds"),
	RequestMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	  {
	    "version": "2018-05-29",
	    "statements": [
	      "INSERT INTO demos VALUES (:id, :version)",
	      "SELECT * WHERE id = :id"
	    ],
	    "variableMap": {
	      ":id": $util.toJson($util.autoId()),
	      ":version": $util.toJson($ctx.args.version)
	    }
	  }
	  `)),
	ResponseMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	    $utils.toJson($utils.rds.toJsonObject($ctx.result)[1][0])
	  `)),
})

func NewServerlessCluster

func NewServerlessCluster(scope constructs.Construct, id *string, props *ServerlessClusterProps) ServerlessCluster

type ServerlessClusterAttributes

type ServerlessClusterAttributes struct {
	// Identifier for the cluster.
	ClusterIdentifier *string `field:"required" json:"clusterIdentifier" yaml:"clusterIdentifier"`
	// Cluster endpoint address.
	// Default: - no endpoint address.
	//
	ClusterEndpointAddress *string `field:"optional" json:"clusterEndpointAddress" yaml:"clusterEndpointAddress"`
	// The database port.
	// Default: - none.
	//
	Port *float64 `field:"optional" json:"port" yaml:"port"`
	// Reader endpoint address.
	// Default: - no reader address.
	//
	ReaderEndpointAddress *string `field:"optional" json:"readerEndpointAddress" yaml:"readerEndpointAddress"`
	// The secret attached to the database cluster.
	// Default: - no secret.
	//
	Secret awssecretsmanager.ISecret `field:"optional" json:"secret" yaml:"secret"`
	// The security groups of the database cluster.
	// Default: - no security groups.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
}

Properties that describe an existing cluster instance.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var secret secret
var securityGroup securityGroup

serverlessClusterAttributes := &ServerlessClusterAttributes{
	ClusterIdentifier: jsii.String("clusterIdentifier"),

	// the properties below are optional
	ClusterEndpointAddress: jsii.String("clusterEndpointAddress"),
	Port: jsii.Number(123),
	ReaderEndpointAddress: jsii.String("readerEndpointAddress"),
	Secret: secret,
	SecurityGroups: []iSecurityGroup{
		securityGroup,
	},
}

type ServerlessClusterFromSnapshot added in v2.4.0

type ServerlessClusterFromSnapshot interface {
	awscdk.Resource
	IServerlessCluster
	// The ARN of the cluster.
	ClusterArn() *string
	// The endpoint to use for read/write operations.
	ClusterEndpoint() Endpoint
	// Identifier of the cluster.
	ClusterIdentifier() *string
	// The endpoint to use for read/write operations.
	ClusterReadEndpoint() Endpoint
	// Access to the network connections.
	Connections() awsec2.Connections
	EnableDataApi() *bool
	SetEnableDataApi(val *bool)
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	NewCfnProps() *CfnDBClusterProps
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The secret attached to this cluster.
	Secret() awssecretsmanager.ISecret
	SecurityGroups() *[]awsec2.ISecurityGroup
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Renders the secret attachment target specifications.
	AsSecretAttachmentTarget() *awssecretsmanager.SecretAttachmentTargetProps
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Grant the given identity to access to the Data API, including read access to the secret attached to the cluster if present.
	GrantDataApiAccess(grantee awsiam.IGrantable) awsiam.Grant
	// Returns a string representation of this construct.
	ToString() *string
}

A Aurora Serverless Cluster restored from a snapshot.

Example:

var vpc vpc

rds.NewServerlessClusterFromSnapshot(this, jsii.String("Cluster"), &ServerlessClusterFromSnapshotProps{
	Engine: rds.DatabaseClusterEngine_AURORA_MYSQL(),
	Vpc: Vpc,
	SnapshotIdentifier: jsii.String("mySnapshot"),
})

func NewServerlessClusterFromSnapshot added in v2.4.0

func NewServerlessClusterFromSnapshot(scope constructs.Construct, id *string, props *ServerlessClusterFromSnapshotProps) ServerlessClusterFromSnapshot

type ServerlessClusterFromSnapshotProps added in v2.4.0

type ServerlessClusterFromSnapshotProps struct {
	// What kind of database to start.
	Engine IClusterEngine `field:"required" json:"engine" yaml:"engine"`
	// The identifier for the DB instance snapshot or DB cluster snapshot to restore from.
	//
	// You can use either the name or the Amazon Resource Name (ARN) to specify a DB cluster snapshot.
	// However, you can use only the ARN to specify a DB instance snapshot.
	SnapshotIdentifier *string `field:"required" json:"snapshotIdentifier" yaml:"snapshotIdentifier"`
	// The number of days during which automatic DB snapshots are retained.
	//
	// Automatic backup retention cannot be disabled on serverless clusters.
	// Must be a value from 1 day to 35 days.
	// Default: Duration.days(1)
	//
	BackupRetention awscdk.Duration `field:"optional" json:"backupRetention" yaml:"backupRetention"`
	// An optional identifier for the cluster.
	// Default: - A name is automatically generated.
	//
	ClusterIdentifier *string `field:"optional" json:"clusterIdentifier" yaml:"clusterIdentifier"`
	// Whether to copy tags to the snapshot when a snapshot is created.
	// Default: - true.
	//
	CopyTagsToSnapshot *bool `field:"optional" json:"copyTagsToSnapshot" yaml:"copyTagsToSnapshot"`
	// Master user credentials.
	//
	// Note - It is not possible to change the master username for a snapshot;
	// however, it is possible to provide (or generate) a new password.
	// Default: - The existing username and password from the snapshot will be used.
	//
	Credentials SnapshotCredentials `field:"optional" json:"credentials" yaml:"credentials"`
	// Name of a database which is automatically created inside the cluster.
	// Default: - Database is not created in cluster.
	//
	DefaultDatabaseName *string `field:"optional" json:"defaultDatabaseName" yaml:"defaultDatabaseName"`
	// Indicates whether the DB cluster should have deletion protection enabled.
	// Default: - true if removalPolicy is RETAIN, false otherwise.
	//
	DeletionProtection *bool `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// Whether to enable the Data API.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html
	//
	// Default: false.
	//
	EnableDataApi *bool `field:"optional" json:"enableDataApi" yaml:"enableDataApi"`
	// Additional parameters to pass to the database engine.
	// Default: - no parameter group.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The removal policy to apply when the cluster and its instances are removed from the stack or replaced during an update.
	// Default: - RemovalPolicy.SNAPSHOT (remove the cluster and instances, but retain a snapshot of the data)
	//
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// Scaling configuration of an Aurora Serverless database cluster.
	// Default: - Serverless cluster is automatically paused after 5 minutes of being idle.
	// minimum capacity: 2 ACU
	// maximum capacity: 16 ACU.
	//
	Scaling *ServerlessScalingOptions `field:"optional" json:"scaling" yaml:"scaling"`
	// Security group.
	// Default: - a new security group is created if `vpc` was provided.
	// If the `vpc` property was not provided, no VPC security groups will be associated with the DB cluster.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// Existing subnet group for the cluster.
	// Default: - a new subnet group is created if `vpc` was provided.
	// If the `vpc` property was not provided, no subnet group will be associated with the DB cluster.
	//
	SubnetGroup ISubnetGroup `field:"optional" json:"subnetGroup" yaml:"subnetGroup"`
	// The VPC that this Aurora Serverless cluster has been created in.
	// Default: - the default VPC in the account and region will be used.
	//
	Vpc awsec2.IVpc `field:"optional" json:"vpc" yaml:"vpc"`
	// Where to place the instances within the VPC.
	//
	// If provided, the `vpc` property must also be specified.
	// Default: - the VPC default strategy if not specified.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
}

Properties for “ServerlessClusterFromSnapshot“.

Example:

var vpc vpc

rds.NewServerlessClusterFromSnapshot(this, jsii.String("Cluster"), &ServerlessClusterFromSnapshotProps{
	Engine: rds.DatabaseClusterEngine_AURORA_MYSQL(),
	Vpc: Vpc,
	SnapshotIdentifier: jsii.String("mySnapshot"),
})

type ServerlessClusterProps

type ServerlessClusterProps struct {
	// What kind of database to start.
	Engine IClusterEngine `field:"required" json:"engine" yaml:"engine"`
	// The number of days during which automatic DB snapshots are retained.
	//
	// Automatic backup retention cannot be disabled on serverless clusters.
	// Must be a value from 1 day to 35 days.
	// Default: Duration.days(1)
	//
	BackupRetention awscdk.Duration `field:"optional" json:"backupRetention" yaml:"backupRetention"`
	// An optional identifier for the cluster.
	// Default: - A name is automatically generated.
	//
	ClusterIdentifier *string `field:"optional" json:"clusterIdentifier" yaml:"clusterIdentifier"`
	// Whether to copy tags to the snapshot when a snapshot is created.
	// Default: - true.
	//
	CopyTagsToSnapshot *bool `field:"optional" json:"copyTagsToSnapshot" yaml:"copyTagsToSnapshot"`
	// Credentials for the administrative user.
	// Default: - A username of 'admin' and SecretsManager-generated password.
	//
	Credentials Credentials `field:"optional" json:"credentials" yaml:"credentials"`
	// Name of a database which is automatically created inside the cluster.
	// Default: - Database is not created in cluster.
	//
	DefaultDatabaseName *string `field:"optional" json:"defaultDatabaseName" yaml:"defaultDatabaseName"`
	// Indicates whether the DB cluster should have deletion protection enabled.
	// Default: - true if removalPolicy is RETAIN, false otherwise.
	//
	DeletionProtection *bool `field:"optional" json:"deletionProtection" yaml:"deletionProtection"`
	// Whether to enable the Data API.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html
	//
	// Default: false.
	//
	EnableDataApi *bool `field:"optional" json:"enableDataApi" yaml:"enableDataApi"`
	// Additional parameters to pass to the database engine.
	// Default: - no parameter group.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The removal policy to apply when the cluster and its instances are removed from the stack or replaced during an update.
	// Default: - RemovalPolicy.SNAPSHOT (remove the cluster and instances, but retain a snapshot of the data)
	//
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// Scaling configuration of an Aurora Serverless database cluster.
	// Default: - Serverless cluster is automatically paused after 5 minutes of being idle.
	// minimum capacity: 2 ACU
	// maximum capacity: 16 ACU.
	//
	Scaling *ServerlessScalingOptions `field:"optional" json:"scaling" yaml:"scaling"`
	// Security group.
	// Default: - a new security group is created if `vpc` was provided.
	// If the `vpc` property was not provided, no VPC security groups will be associated with the DB cluster.
	//
	SecurityGroups *[]awsec2.ISecurityGroup `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// The KMS key for storage encryption.
	// Default: - the default master key will be used for storage encryption.
	//
	StorageEncryptionKey awskms.IKey `field:"optional" json:"storageEncryptionKey" yaml:"storageEncryptionKey"`
	// Existing subnet group for the cluster.
	// Default: - a new subnet group is created if `vpc` was provided.
	// If the `vpc` property was not provided, no subnet group will be associated with the DB cluster.
	//
	SubnetGroup ISubnetGroup `field:"optional" json:"subnetGroup" yaml:"subnetGroup"`
	// The VPC that this Aurora Serverless cluster has been created in.
	// Default: - the default VPC in the account and region will be used.
	//
	Vpc awsec2.IVpc `field:"optional" json:"vpc" yaml:"vpc"`
	// Where to place the instances within the VPC.
	//
	// If provided, the `vpc` property must also be specified.
	// Default: - the VPC default strategy if not specified.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
}

Properties for a new Aurora Serverless Cluster.

Example:

// Build a data source for AppSync to access the database.
var api graphqlApi
// Create username and password secret for DB Cluster
secret := rds.NewDatabaseSecret(this, jsii.String("AuroraSecret"), &DatabaseSecretProps{
	Username: jsii.String("clusteradmin"),
})

// The VPC to place the cluster in
vpc := ec2.NewVpc(this, jsii.String("AuroraVpc"))

// Create the serverless cluster, provide all values needed to customise the database.
cluster := rds.NewServerlessCluster(this, jsii.String("AuroraCluster"), &ServerlessClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA_MYSQL(),
	Vpc: Vpc,
	Credentials: map[string]*string{
		"username": jsii.String("clusteradmin"),
	},
	ClusterIdentifier: jsii.String("db-endpoint-test"),
	DefaultDatabaseName: jsii.String("demos"),
})
rdsDS := api.AddRdsDataSource(jsii.String("rds"), cluster, secret, jsii.String("demos"))

// Set up a resolver for an RDS query.
rdsDS.CreateResolver(jsii.String("QueryGetDemosRdsResolver"), &BaseResolverProps{
	TypeName: jsii.String("Query"),
	FieldName: jsii.String("getDemosRds"),
	RequestMappingTemplate: appsync.MappingTemplate_FromString(jsii.String(`
	  {
	    "version": "2018-05-29",
	    "statements": [
	      "SELECT * FROM demos"
	    ]
	  }
	  `)),
	ResponseMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	    $utils.toJson($utils.rds.toJsonObject($ctx.result)[0])
	  `)),
})

// Set up a resolver for an RDS mutation.
rdsDS.CreateResolver(jsii.String("MutationAddDemoRdsResolver"), &BaseResolverProps{
	TypeName: jsii.String("Mutation"),
	FieldName: jsii.String("addDemoRds"),
	RequestMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	  {
	    "version": "2018-05-29",
	    "statements": [
	      "INSERT INTO demos VALUES (:id, :version)",
	      "SELECT * WHERE id = :id"
	    ],
	    "variableMap": {
	      ":id": $util.toJson($util.autoId()),
	      ":version": $util.toJson($ctx.args.version)
	    }
	  }
	  `)),
	ResponseMappingTemplate: appsync.MappingTemplate_*FromString(jsii.String(`
	    $utils.toJson($utils.rds.toJsonObject($ctx.result)[1][0])
	  `)),
})

type ServerlessScalingOptions

type ServerlessScalingOptions struct {
	// The time before an Aurora Serverless database cluster is paused.
	//
	// A database cluster can be paused only when it is idle (it has no connections).
	// Auto pause time must be between 5 minutes and 1 day.
	//
	// If a DB cluster is paused for more than seven days, the DB cluster might be
	// backed up with a snapshot. In this case, the DB cluster is restored when there
	// is a request to connect to it.
	//
	// Set to 0 to disable.
	// Default: - automatic pause enabled after 5 minutes.
	//
	AutoPause awscdk.Duration `field:"optional" json:"autoPause" yaml:"autoPause"`
	// The maximum capacity for an Aurora Serverless database cluster.
	// Default: - determined by Aurora based on database engine.
	//
	MaxCapacity AuroraCapacityUnit `field:"optional" json:"maxCapacity" yaml:"maxCapacity"`
	// The minimum capacity for an Aurora Serverless database cluster.
	// Default: - determined by Aurora based on database engine.
	//
	MinCapacity AuroraCapacityUnit `field:"optional" json:"minCapacity" yaml:"minCapacity"`
}

Options for configuring scaling on an Aurora Serverless cluster.

Example:

var vpc vpc

cluster := rds.NewServerlessCluster(this, jsii.String("AnotherCluster"), &ServerlessClusterProps{
	Engine: rds.DatabaseClusterEngine_AURORA_POSTGRESQL(),
	CopyTagsToSnapshot: jsii.Boolean(true),
	 // whether to save the cluster tags when creating the snapshot. Default is 'true'
	ParameterGroup: rds.ParameterGroup_FromParameterGroupName(this, jsii.String("ParameterGroup"), jsii.String("default.aurora-postgresql10")),
	Vpc: Vpc,
	Scaling: &ServerlessScalingOptions{
		AutoPause: awscdk.Duration_Minutes(jsii.Number(10)),
		 // default is to pause after 5 minutes of idle time
		MinCapacity: rds.AuroraCapacityUnit_ACU_8,
		 // default is 2 Aurora capacity units (ACUs)
		MaxCapacity: rds.AuroraCapacityUnit_ACU_32,
	},
})

type ServerlessV2ClusterInstanceProps added in v2.82.0

type ServerlessV2ClusterInstanceProps struct {
	// Whether to allow upgrade of major version for the DB instance.
	// Default: - false.
	//
	AllowMajorVersionUpgrade *bool `field:"optional" json:"allowMajorVersionUpgrade" yaml:"allowMajorVersionUpgrade"`
	// Whether to enable automatic upgrade of minor version for the DB instance.
	// Default: - true.
	//
	AutoMinorVersionUpgrade *bool `field:"optional" json:"autoMinorVersionUpgrade" yaml:"autoMinorVersionUpgrade"`
	// The identifier of the CA certificate for this DB cluster's instances.
	//
	// Specifying or updating this property triggers a reboot.
	//
	// For RDS DB engines:.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html
	//
	// Default: - RDS will choose a certificate authority.
	//
	CaCertificate CaCertificate `field:"optional" json:"caCertificate" yaml:"caCertificate"`
	// Whether to enable Performance Insights for the DB instance.
	// Default: - false, unless “performanceInsightRetention“ or “performanceInsightEncryptionKey“ is set.
	//
	EnablePerformanceInsights *bool `field:"optional" json:"enablePerformanceInsights" yaml:"enablePerformanceInsights"`
	// The identifier for the database instance.
	// Default: - CloudFormation generated identifier.
	//
	InstanceIdentifier *string `field:"optional" json:"instanceIdentifier" yaml:"instanceIdentifier"`
	// Only used for migrating existing clusters from using `instanceProps` to `writer` and `readers`.
	//
	// Example:
	//   // existing cluster
	//   declare const vpc: ec2.Vpc;
	//   const cluster = new rds.DatabaseCluster(this, 'Database', {
	//     engine: rds.DatabaseClusterEngine.auroraMysql({
	//       version: rds.AuroraMysqlEngineVersion.VER_3_03_0,
	//     }),
	//     instances: 2,
	//     instanceProps: {
	//       instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.SMALL),
	//       vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC },
	//       vpc,
	//     },
	//   });
	//
	//   // migration
	//
	//   const instanceProps = {
	//     instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.SMALL),
	//     isFromLegacyInstanceProps: true,
	//   };
	//
	//   const myCluster = new rds.DatabaseCluster(this, 'Database', {
	//     engine: rds.DatabaseClusterEngine.auroraMysql({
	//       version: rds.AuroraMysqlEngineVersion.VER_3_03_0,
	//     }),
	//     vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC },
	//     vpc,
	//     writer: rds.ClusterInstance.provisioned('Instance1', {
	//       instanceType: instanceProps.instanceType,
	//       isFromLegacyInstanceProps: instanceProps.isFromLegacyInstanceProps,
	//     }),
	//     readers: [
	//       rds.ClusterInstance.provisioned('Instance2', {
	//         instanceType: instanceProps.instanceType,
	//         isFromLegacyInstanceProps: instanceProps.isFromLegacyInstanceProps,
	//       }),
	//     ],
	//   });
	//
	// Default: false.
	//
	IsFromLegacyInstanceProps *bool `field:"optional" json:"isFromLegacyInstanceProps" yaml:"isFromLegacyInstanceProps"`
	// The DB parameter group to associate with the instance.
	//
	// This is only needed if you need to configure different parameter
	// groups for each individual instance, otherwise you should not
	// provide this and just use the cluster parameter group.
	// Default: the cluster parameter group is used.
	//
	ParameterGroup IParameterGroup `field:"optional" json:"parameterGroup" yaml:"parameterGroup"`
	// The parameters in the DBParameterGroup to create automatically.
	//
	// You can only specify parameterGroup or parameters but not both.
	// You need to use a versioned engine to auto-generate a DBParameterGroup.
	// Default: - None.
	//
	Parameters *map[string]*string `field:"optional" json:"parameters" yaml:"parameters"`
	// The AWS KMS key for encryption of Performance Insights data.
	// Default: - default master key.
	//
	PerformanceInsightEncryptionKey awskms.IKey `field:"optional" json:"performanceInsightEncryptionKey" yaml:"performanceInsightEncryptionKey"`
	// The amount of time, in days, to retain Performance Insights data.
	// Default: 7.
	//
	PerformanceInsightRetention PerformanceInsightRetention `field:"optional" json:"performanceInsightRetention" yaml:"performanceInsightRetention"`
	// Indicates whether the DB instance is an internet-facing instance.
	// Default: - true if the instance is placed in a public subnet.
	//
	PubliclyAccessible *bool `field:"optional" json:"publiclyAccessible" yaml:"publiclyAccessible"`
	// Only applicable to reader instances.
	//
	// If this is true then the instance will be placed in promotion tier 1, otherwise
	// it will be placed in promotion tier 2.
	//
	// For serverless v2 instances this means:
	// - true: The serverless v2 reader will scale to match the writer instance (provisioned or serverless)
	// - false: The serverless v2 reader will scale with the read workfload on the instance.
	// Default: false.
	//
	ScaleWithWriter *bool `field:"optional" json:"scaleWithWriter" yaml:"scaleWithWriter"`
}

Options for creating a serverless v2 instance.

Example:

var vpc vpc

cluster := rds.NewDatabaseCluster(this, jsii.String("Database"), &DatabaseClusterProps{
	Engine: rds.DatabaseClusterEngine_AuroraMysql(&AuroraMysqlClusterEngineProps{
		Version: rds.AuroraMysqlEngineVersion_VER_3_01_0(),
	}),
	Writer: rds.ClusterInstance_ServerlessV2(jsii.String("writer")),
	Readers: []iClusterInstance{
		rds.ClusterInstance_*ServerlessV2(jsii.String("reader1"), &ServerlessV2ClusterInstanceProps{
			ScaleWithWriter: jsii.Boolean(true),
		}),
		rds.ClusterInstance_*ServerlessV2(jsii.String("reader2")),
	},
	Vpc: Vpc,
})

type SessionPinningFilter

type SessionPinningFilter interface {
	// Filter name.
	FilterName() *string
}

SessionPinningFilter.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

sessionPinningFilter := awscdk.Aws_rds.SessionPinningFilter_Of(jsii.String("filterName"))

See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.html#rds-proxy-pinning

func SessionPinningFilter_EXCLUDE_VARIABLE_SETS

func SessionPinningFilter_EXCLUDE_VARIABLE_SETS() SessionPinningFilter

func SessionPinningFilter_Of

func SessionPinningFilter_Of(filterName *string) SessionPinningFilter

custom filter.

type SnapshotCredentials

type SnapshotCredentials interface {
	// KMS encryption key to encrypt the generated secret.
	// Default: - default master key.
	//
	EncryptionKey() awskms.IKey
	// The characters to exclude from the generated password.
	//
	// Only used if `generatePassword` if true.
	// Default: - the DatabaseSecret default exclude character set (" %+~`#$&*()|[]{}:;<>?!'/@\"\\")
	//
	ExcludeCharacters() *string
	// Whether a new password should be generated.
	GeneratePassword() *bool
	// The master user password.
	//
	// Do not put passwords in your CDK code directly.
	// Default: - the existing password from the snapshot.
	//
	Password() awscdk.SecretValue
	// Whether to replace the generated secret when the criteria for the password change.
	// Default: false.
	//
	ReplaceOnPasswordCriteriaChanges() *bool
	// A list of regions where to replicate the generated secret.
	// Default: - Secret is not replicated.
	//
	ReplicaRegions() *[]*awssecretsmanager.ReplicaRegion
	// Secret used to instantiate this Login.
	// Default: - none.
	//
	Secret() awssecretsmanager.ISecret
	// The master user name.
	//
	// Must be the **current** master user name of the snapshot.
	// It is not possible to change the master user name of a RDS instance.
	// Default: - the existing username from the snapshot.
	//
	Username() *string
}

Credentials to update the password for a “DatabaseInstanceFromSnapshot“.

Example:

var vpc vpc

engine := rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
	Version: rds.PostgresEngineVersion_VER_15_2(),
})
myKey := kms.NewKey(this, jsii.String("MyKey"))

rds.NewDatabaseInstanceFromSnapshot(this, jsii.String("InstanceFromSnapshotWithCustomizedSecret"), &DatabaseInstanceFromSnapshotProps{
	Engine: Engine,
	Vpc: Vpc,
	SnapshotIdentifier: jsii.String("mySnapshot"),
	Credentials: rds.SnapshotCredentials_FromGeneratedSecret(jsii.String("username"), &SnapshotCredentialsFromGeneratedPasswordOptions{
		EncryptionKey: myKey,
		ExcludeCharacters: jsii.String("!&*^#@()"),
		ReplicaRegions: []replicaRegion{
			&replicaRegion{
				Region: jsii.String("eu-west-1"),
			},
			&replicaRegion{
				Region: jsii.String("eu-west-2"),
			},
		},
	}),
})

func SnapshotCredentials_FromGeneratedPassword added in v2.1.0

func SnapshotCredentials_FromGeneratedPassword(username *string, options *SnapshotCredentialsFromGeneratedPasswordOptions) SnapshotCredentials

Generate a new password for the snapshot, using the existing username and an optional encryption key.

Note - The username must match the existing master username of the snapshot.

NOTE: use `fromGeneratedSecret()` for new Clusters and Instances. Switching from `fromGeneratedPassword()` to `fromGeneratedSecret()` for already deployed Clusters or Instances will update their master password.

func SnapshotCredentials_FromGeneratedSecret

func SnapshotCredentials_FromGeneratedSecret(username *string, options *SnapshotCredentialsFromGeneratedPasswordOptions) SnapshotCredentials

Generate a new password for the snapshot, using the existing username and an optional encryption key.

The new credentials are stored in Secrets Manager.

Note - The username must match the existing master username of the snapshot.

func SnapshotCredentials_FromPassword

func SnapshotCredentials_FromPassword(password awscdk.SecretValue) SnapshotCredentials

Update the snapshot login with an existing password.

func SnapshotCredentials_FromSecret

func SnapshotCredentials_FromSecret(secret awssecretsmanager.ISecret) SnapshotCredentials

Update the snapshot login with an existing password from a Secret.

The Secret must be a JSON string with a “password“ field: ```

{
  ...
  "password": <required: password>,
}

```.

type SnapshotCredentialsFromGeneratedPasswordOptions

type SnapshotCredentialsFromGeneratedPasswordOptions struct {
	// KMS encryption key to encrypt the generated secret.
	// Default: - default master key.
	//
	EncryptionKey awskms.IKey `field:"optional" json:"encryptionKey" yaml:"encryptionKey"`
	// The characters to exclude from the generated password.
	// Default: - the DatabaseSecret default exclude character set (" %+~`#$&*()|[]{}:;<>?!'/@\"\\")
	//
	ExcludeCharacters *string `field:"optional" json:"excludeCharacters" yaml:"excludeCharacters"`
	// A list of regions where to replicate this secret.
	// Default: - Secret is not replicated.
	//
	ReplicaRegions *[]*awssecretsmanager.ReplicaRegion `field:"optional" json:"replicaRegions" yaml:"replicaRegions"`
}

Options used in the `SnapshotCredentials.fromGeneratedPassword` method.

Example:

var vpc vpc

engine := rds.DatabaseInstanceEngine_Postgres(&PostgresInstanceEngineProps{
	Version: rds.PostgresEngineVersion_VER_15_2(),
})
myKey := kms.NewKey(this, jsii.String("MyKey"))

rds.NewDatabaseInstanceFromSnapshot(this, jsii.String("InstanceFromSnapshotWithCustomizedSecret"), &DatabaseInstanceFromSnapshotProps{
	Engine: Engine,
	Vpc: Vpc,
	SnapshotIdentifier: jsii.String("mySnapshot"),
	Credentials: rds.SnapshotCredentials_FromGeneratedSecret(jsii.String("username"), &SnapshotCredentialsFromGeneratedPasswordOptions{
		EncryptionKey: myKey,
		ExcludeCharacters: jsii.String("!&*^#@()"),
		ReplicaRegions: []replicaRegion{
			&replicaRegion{
				Region: jsii.String("eu-west-1"),
			},
			&replicaRegion{
				Region: jsii.String("eu-west-2"),
			},
		},
	}),
})

type SqlServerEeInstanceEngineProps

type SqlServerEeInstanceEngineProps struct {
	// The exact version of the engine to use.
	Version SqlServerEngineVersion `field:"required" json:"version" yaml:"version"`
}

Properties for SQL Server Enterprise Edition instance engines.

Used in `DatabaseInstanceEngine.sqlServerEe`.

Example:

var vpc vpc

parameterGroup := rds.NewParameterGroup(this, jsii.String("ParameterGroup"), &ParameterGroupProps{
	Engine: rds.DatabaseInstanceEngine_SqlServerEe(&SqlServerEeInstanceEngineProps{
		Version: rds.SqlServerEngineVersion_VER_11(),
	}),
	Parameters: map[string]*string{
		"locks": jsii.String("100"),
	},
})

rds.NewDatabaseInstance(this, jsii.String("Database"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_SQL_SERVER_EE(),
	Vpc: Vpc,
	ParameterGroup: ParameterGroup,
})

type SqlServerEngineVersion

type SqlServerEngineVersion interface {
	// The full version string, for example, "15.00.3049.1.v1".
	SqlServerFullVersion() *string
	// The major version of the engine, for example, "15.00".
	SqlServerMajorVersion() *string
}

The versions for the SQL Server instance engines (those returned by `DatabaseInstanceEngine.sqlServerSe`, `DatabaseInstanceEngine.sqlServerEx`, `DatabaseInstanceEngine.sqlServerWeb` and `DatabaseInstanceEngine.sqlServerEe`).

Example:

var vpc vpc

parameterGroup := rds.NewParameterGroup(this, jsii.String("ParameterGroup"), &ParameterGroupProps{
	Engine: rds.DatabaseInstanceEngine_SqlServerEe(&SqlServerEeInstanceEngineProps{
		Version: rds.SqlServerEngineVersion_VER_11(),
	}),
	Parameters: map[string]*string{
		"locks": jsii.String("100"),
	},
})

rds.NewDatabaseInstance(this, jsii.String("Database"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_SQL_SERVER_EE(),
	Vpc: Vpc,
	ParameterGroup: ParameterGroup,
})

func SqlServerEngineVersion_Of

func SqlServerEngineVersion_Of(sqlServerFullVersion *string, sqlServerMajorVersion *string) SqlServerEngineVersion

Create a new SqlServerEngineVersion with an arbitrary version.

func SqlServerEngineVersion_VER_11

func SqlServerEngineVersion_VER_11() SqlServerEngineVersion

func SqlServerEngineVersion_VER_11_00_5058_0_V1

func SqlServerEngineVersion_VER_11_00_5058_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_11_00_6020_0_V1

func SqlServerEngineVersion_VER_11_00_6020_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_11_00_6594_0_V1

func SqlServerEngineVersion_VER_11_00_6594_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_11_00_7462_6_V1

func SqlServerEngineVersion_VER_11_00_7462_6_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_11_00_7493_4_V1

func SqlServerEngineVersion_VER_11_00_7493_4_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_12

func SqlServerEngineVersion_VER_12() SqlServerEngineVersion

func SqlServerEngineVersion_VER_12_00_5000_0_V1

func SqlServerEngineVersion_VER_12_00_5000_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_12_00_5546_0_V1

func SqlServerEngineVersion_VER_12_00_5546_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_12_00_5571_0_V1

func SqlServerEngineVersion_VER_12_00_5571_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_12_00_6293_0_V1

func SqlServerEngineVersion_VER_12_00_6293_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_12_00_6329_1_V1

func SqlServerEngineVersion_VER_12_00_6329_1_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_12_00_6433_1_V1 added in v2.48.0

func SqlServerEngineVersion_VER_12_00_6433_1_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_12_00_6439_10_V1 added in v2.48.0

func SqlServerEngineVersion_VER_12_00_6439_10_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_12_00_6444_4_V1 added in v2.86.0

func SqlServerEngineVersion_VER_12_00_6444_4_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_12_00_6449_1_V1 added in v2.112.0

func SqlServerEngineVersion_VER_12_00_6449_1_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13

func SqlServerEngineVersion_VER_13() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_2164_0_V1

func SqlServerEngineVersion_VER_13_00_2164_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_4422_0_V1

func SqlServerEngineVersion_VER_13_00_4422_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_4451_0_V1

func SqlServerEngineVersion_VER_13_00_4451_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_4466_4_V1

func SqlServerEngineVersion_VER_13_00_4466_4_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_4522_0_V1

func SqlServerEngineVersion_VER_13_00_4522_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_5216_0_V1

func SqlServerEngineVersion_VER_13_00_5216_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_5292_0_V1

func SqlServerEngineVersion_VER_13_00_5292_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_5366_0_V1

func SqlServerEngineVersion_VER_13_00_5366_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_5426_0_V1

func SqlServerEngineVersion_VER_13_00_5426_0_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_5598_27_V1

func SqlServerEngineVersion_VER_13_00_5598_27_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_5820_21_V1

func SqlServerEngineVersion_VER_13_00_5820_21_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_5850_14_V1

func SqlServerEngineVersion_VER_13_00_5850_14_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_5882_1_V1

func SqlServerEngineVersion_VER_13_00_5882_1_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_6300_2_V1 added in v2.48.0

func SqlServerEngineVersion_VER_13_00_6300_2_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_6419_1_V1 added in v2.48.0

func SqlServerEngineVersion_VER_13_00_6419_1_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_6430_49_V1 added in v2.86.0

func SqlServerEngineVersion_VER_13_00_6430_49_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_13_00_6435_1_V1 added in v2.112.0

func SqlServerEngineVersion_VER_13_00_6435_1_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14

func SqlServerEngineVersion_VER_14() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_1000_169_V1

func SqlServerEngineVersion_VER_14_00_1000_169_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3015_40_V1

func SqlServerEngineVersion_VER_14_00_3015_40_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3035_2_V1

func SqlServerEngineVersion_VER_14_00_3035_2_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3049_1_V1

func SqlServerEngineVersion_VER_14_00_3049_1_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3192_2_V1

func SqlServerEngineVersion_VER_14_00_3192_2_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3223_3_V1

func SqlServerEngineVersion_VER_14_00_3223_3_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3281_6_V1

func SqlServerEngineVersion_VER_14_00_3281_6_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3294_2_V1

func SqlServerEngineVersion_VER_14_00_3294_2_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3356_20_V1

func SqlServerEngineVersion_VER_14_00_3356_20_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3381_3_V1

func SqlServerEngineVersion_VER_14_00_3381_3_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3401_7_V1 added in v2.48.0

func SqlServerEngineVersion_VER_14_00_3401_7_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3421_10_V1 added in v2.48.0

func SqlServerEngineVersion_VER_14_00_3421_10_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3451_2_V1 added in v2.48.0

func SqlServerEngineVersion_VER_14_00_3451_2_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3460_9_V1 added in v2.86.0

func SqlServerEngineVersion_VER_14_00_3460_9_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_14_00_3465_1_V1 added in v2.112.0

func SqlServerEngineVersion_VER_14_00_3465_1_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_15

func SqlServerEngineVersion_VER_15() SqlServerEngineVersion

func SqlServerEngineVersion_VER_15_00_4043_16_V1

func SqlServerEngineVersion_VER_15_00_4043_16_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_15_00_4073_23_V1

func SqlServerEngineVersion_VER_15_00_4073_23_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_15_00_4153_1_V1 added in v2.48.0

func SqlServerEngineVersion_VER_15_00_4153_1_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_15_00_4198_2_V1 added in v2.48.0

func SqlServerEngineVersion_VER_15_00_4198_2_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_15_00_4236_7_V1 added in v2.48.0

func SqlServerEngineVersion_VER_15_00_4236_7_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_15_00_4312_2_V1 added in v2.86.0

func SqlServerEngineVersion_VER_15_00_4312_2_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_15_00_4316_3_V1 added in v2.100.0

func SqlServerEngineVersion_VER_15_00_4316_3_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_15_00_4322_2_V1 added in v2.106.0

func SqlServerEngineVersion_VER_15_00_4322_2_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_15_00_4335_1_V1 added in v2.106.0

func SqlServerEngineVersion_VER_15_00_4335_1_V1() SqlServerEngineVersion

func SqlServerEngineVersion_VER_16_00_4085_2_V1 added in v2.110.0

func SqlServerEngineVersion_VER_16_00_4085_2_V1() SqlServerEngineVersion

type SqlServerExInstanceEngineProps

type SqlServerExInstanceEngineProps struct {
	// The exact version of the engine to use.
	Version SqlServerEngineVersion `field:"required" json:"version" yaml:"version"`
}

Properties for SQL Server Express Edition instance engines.

Used in `DatabaseInstanceEngine.sqlServerEx`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var sqlServerEngineVersion sqlServerEngineVersion

sqlServerExInstanceEngineProps := &SqlServerExInstanceEngineProps{
	Version: sqlServerEngineVersion,
}

type SqlServerSeInstanceEngineProps

type SqlServerSeInstanceEngineProps struct {
	// The exact version of the engine to use.
	Version SqlServerEngineVersion `field:"required" json:"version" yaml:"version"`
}

Properties for SQL Server Standard Edition instance engines.

Used in `DatabaseInstanceEngine.sqlServerSe`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var sqlServerEngineVersion sqlServerEngineVersion

sqlServerSeInstanceEngineProps := &SqlServerSeInstanceEngineProps{
	Version: sqlServerEngineVersion,
}

type SqlServerWebInstanceEngineProps

type SqlServerWebInstanceEngineProps struct {
	// The exact version of the engine to use.
	Version SqlServerEngineVersion `field:"required" json:"version" yaml:"version"`
}

Properties for SQL Server Web Edition instance engines.

Used in `DatabaseInstanceEngine.sqlServerWeb`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var sqlServerEngineVersion sqlServerEngineVersion

sqlServerWebInstanceEngineProps := &SqlServerWebInstanceEngineProps{
	Version: sqlServerEngineVersion,
}

type StorageType

type StorageType string

The type of storage.

Example:

// Set open cursors with parameter group
parameterGroup := rds.NewParameterGroup(this, jsii.String("ParameterGroup"), &ParameterGroupProps{
	Engine: rds.DatabaseInstanceEngine_OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Parameters: map[string]*string{
		"open_cursors": jsii.String("2500"),
	},
})

optionGroup := rds.NewOptionGroup(this, jsii.String("OptionGroup"), &OptionGroupProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	Configurations: []optionConfiguration{
		&optionConfiguration{
			Name: jsii.String("LOCATOR"),
		},
		&optionConfiguration{
			Name: jsii.String("OEM"),
			Port: jsii.Number(1158),
			Vpc: *Vpc,
		},
	},
})

// Allow connections to OEM
optionGroup.OptionConnections.oEM.Connections.AllowDefaultPortFromAnyIpv4()

// Database instance with production values
instance := rds.NewDatabaseInstance(this, jsii.String("Instance"), &DatabaseInstanceProps{
	Engine: rds.DatabaseInstanceEngine_*OracleSe2(&OracleSe2InstanceEngineProps{
		Version: rds.OracleEngineVersion_VER_19_0_0_0_2020_04_R1(),
	}),
	LicenseModel: rds.LicenseModel_BRING_YOUR_OWN_LICENSE,
	InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_BURSTABLE3, ec2.InstanceSize_MEDIUM),
	MultiAz: jsii.Boolean(true),
	StorageType: rds.StorageType_IO1,
	Credentials: rds.Credentials_FromUsername(jsii.String("syscdk")),
	Vpc: Vpc,
	DatabaseName: jsii.String("ORCL"),
	StorageEncrypted: jsii.Boolean(true),
	BackupRetention: cdk.Duration_Days(jsii.Number(7)),
	MonitoringInterval: cdk.Duration_Seconds(jsii.Number(60)),
	EnablePerformanceInsights: jsii.Boolean(true),
	CloudwatchLogsExports: []*string{
		jsii.String("trace"),
		jsii.String("audit"),
		jsii.String("alert"),
		jsii.String("listener"),
	},
	CloudwatchLogsRetention: logs.RetentionDays_ONE_MONTH,
	AutoMinorVersionUpgrade: jsii.Boolean(true),
	 // required to be true if LOCATOR is used in the option group
	OptionGroup: OptionGroup,
	ParameterGroup: ParameterGroup,
	RemovalPolicy: awscdk.RemovalPolicy_DESTROY,
})

// Allow connections on default port from any IPV4
instance.connections.AllowDefaultPortFromAnyIpv4()

// Rotate the master user password every 30 days
instance.addRotationSingleUser()

// Add alarm for high CPU
// Add alarm for high CPU
cloudwatch.NewAlarm(this, jsii.String("HighCPU"), &AlarmProps{
	Metric: instance.metricCPUUtilization(),
	Threshold: jsii.Number(90),
	EvaluationPeriods: jsii.Number(1),
})

// Trigger Lambda function on instance availability events
fn := lambda.NewFunction(this, jsii.String("Function"), &FunctionProps{
	Code: lambda.Code_FromInline(jsii.String("exports.handler = (event) => console.log(event);")),
	Handler: jsii.String("index.handler"),
	Runtime: lambda.Runtime_NODEJS_18_X(),
})

availabilityRule := instance.OnEvent(jsii.String("Availability"), &OnEventOptions{
	Target: targets.NewLambdaFunction(fn),
})
availabilityRule.AddEventPattern(&EventPattern{
	Detail: map[string]interface{}{
		"EventCategories": []interface{}{
			jsii.String("availability"),
		},
	},
})

See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html

const (
	// Standard.
	//
	// Amazon RDS supports magnetic storage for backward compatibility. It is recommended to use
	// General Purpose SSD or Provisioned IOPS SSD for any new storage needs.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#CHAP_Storage.Magnetic
	//
	StorageType_STANDARD StorageType = "STANDARD"
	// General purpose SSD (gp2).
	//
	// Baseline performance determined by volume size.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#Concepts.Storage.GeneralSSD
	//
	StorageType_GP2 StorageType = "GP2"
	// General purpose SSD (gp3).
	//
	// Performance scales independently from storage.
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#Concepts.Storage.GeneralSSD
	//
	StorageType_GP3 StorageType = "GP3"
	// Provisioned IOPS (SSD).
	// See: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS
	//
	StorageType_IO1 StorageType = "IO1"
)

type SubnetGroup

type SubnetGroup interface {
	awscdk.Resource
	ISubnetGroup
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	Env() *awscdk.ResourceEnvironment
	// The tree node.
	Node() constructs.Node
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//   cross-environment scenarios.
	PhysicalName() *string
	// The stack in which this resource is defined.
	Stack() awscdk.Stack
	// The name of the subnet group.
	SubnetGroupName() *string
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	GetResourceNameAttribute(nameAttr *string) *string
	// Returns a string representation of this construct.
	ToString() *string
}

Class for creating a RDS DB subnet group.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import cdk "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var subnet subnet
var subnetFilter subnetFilter
var vpc vpc

subnetGroup := awscdk.Aws_rds.NewSubnetGroup(this, jsii.String("MySubnetGroup"), &SubnetGroupProps{
	Description: jsii.String("description"),
	Vpc: vpc,

	// the properties below are optional
	RemovalPolicy: cdk.RemovalPolicy_DESTROY,
	SubnetGroupName: jsii.String("subnetGroupName"),
	VpcSubnets: &SubnetSelection{
		AvailabilityZones: []*string{
			jsii.String("availabilityZones"),
		},
		OnePerAz: jsii.Boolean(false),
		SubnetFilters: []*subnetFilter{
			subnetFilter,
		},
		SubnetGroupName: jsii.String("subnetGroupName"),
		Subnets: []iSubnet{
			subnet,
		},
		SubnetType: awscdk.Aws_ec2.SubnetType_PRIVATE_ISOLATED,
	},
})

func NewSubnetGroup

func NewSubnetGroup(scope constructs.Construct, id *string, props *SubnetGroupProps) SubnetGroup

type SubnetGroupProps

type SubnetGroupProps struct {
	// Description of the subnet group.
	Description *string `field:"required" json:"description" yaml:"description"`
	// The VPC to place the subnet group in.
	Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"`
	// The removal policy to apply when the subnet group are removed from the stack or replaced during an update.
	// Default: RemovalPolicy.DESTROY
	//
	RemovalPolicy awscdk.RemovalPolicy `field:"optional" json:"removalPolicy" yaml:"removalPolicy"`
	// The name of the subnet group.
	// Default: - a name is generated.
	//
	SubnetGroupName *string `field:"optional" json:"subnetGroupName" yaml:"subnetGroupName"`
	// Which subnets within the VPC to associate with this group.
	// Default: - private subnets.
	//
	VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"`
}

Properties for creating a SubnetGroup.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import cdk "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"
import "github.com/aws/aws-cdk-go/awscdk"

var subnet subnet
var subnetFilter subnetFilter
var vpc vpc

subnetGroupProps := &SubnetGroupProps{
	Description: jsii.String("description"),
	Vpc: vpc,

	// the properties below are optional
	RemovalPolicy: cdk.RemovalPolicy_DESTROY,
	SubnetGroupName: jsii.String("subnetGroupName"),
	VpcSubnets: &SubnetSelection{
		AvailabilityZones: []*string{
			jsii.String("availabilityZones"),
		},
		OnePerAz: jsii.Boolean(false),
		SubnetFilters: []*subnetFilter{
			subnetFilter,
		},
		SubnetGroupName: jsii.String("subnetGroupName"),
		Subnets: []iSubnet{
			subnet,
		},
		SubnetType: awscdk.Aws_ec2.SubnetType_PRIVATE_ISOLATED,
	},
}

Source Files

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL