Table of Contents

Module Members



Create a new SQLServerEX DBInstance.

To learn more about how to use this functionality take a look at our hands-on example at http://docs.fugue.co/fugue-by-example-encrypted-password.html

Note: RDS operations, such as starting a new RDS instance, occasionally exceed Fugue’s timeout period. This can result in an error, stating the “Database instance is not in available state”, temporarily reported by the Fugue CLI until the RDS Instance is in an appropriate state to continue. If the error persists indefinitely, further troubleshooting may be required.


import Fugue.AWS as AWS
import Fugue.AWS.EC2 as EC2
import Fugue.AWS.Pattern.Network as Network
import Fugue.AWS.RDS as RDS
import Fugue.Core.Vars as Vars

net: Network.new {
  name: "EXAMPLE",
  cidr: "",
  region: AWS.Us-east-1,
  publicSubnets: [
    (AWS.B, ""),
    (AWS.C, "")
  privateSubnets: [
    (AWS.B, ""),
    (AWS.C, "")

dbSubnetGroup: RDS.DBSubnetGroup.new {
  name: "private",
  description: "private subnets",
  subnets: net.privateSubnets,
  tags: None,

dbSecurityGroup: EC2.SecurityGroup.new {
  description: "My Database",
  ipPermissions: [
    # add rules here...
  ipPermissionsEgress: None,
  vpc: net.vpc,
  tags: None

dbInstance: RDS.DBInstance.SQLServerEX.new {
  dbInstanceIdentifier: "myDB",
  dbInstanceClass: RDS.DB_R4_LARGE,
  masterUsername: "master",
  allocatedStorage: 2048,
  securityGroups: [dbSecurityGroup],
  dbSubnetGroup: dbSubnetGroup,
  storageType: EC2.Gp2,
  masterUserPassword: Vars.PlainText {password: "12345678"},

Type Signature

 fun { dbInstanceIdentifier: String,
       dbInstanceClass: DBInstanceClass,
       masterUsername: Optional<String>,
       allocatedStorage: Optional<Int>,
       securityGroups: Optional<List<SecurityGroup>>,
       availabilityZone: Optional<AvailabilityZone>,
       dbSubnetGroup: DBSubnetGroup,
       storageType: Optional<VolumeType>,
       port: Optional<Int>,
       masterUserPassword: Optional<Password>,
       tags: Optional<List<Tag>>,
       optionGroup: Optional<OptionGroup>,
       preferredBackupWindow: Optional<String>,
       backupRetentionPeriod: Optional<Int>,
       preferredMaintenanceWindow: Optional<String>,
       engineVersion: Optional<String>,
       autoMinorVersionUpgrade: Optional<Bool>,
       licenseModel: Optional<LicenseModel>,
       iops: Optional<Int>,
       characterSetName: Optional<String>,
       publiclyAccessible: Optional<Bool>,
       storageEncrypted: Optional<Bool>,
       caCertificateIdentifier: Optional<String>,
       copyTagsToSnapshot: Optional<Bool>,
       monitoringInterval: Optional<Int>,
       dbParameterGroup: Optional<DBParameterGroup>,
       domain: Optional<String>,
       domainRole: Optional<Role>,
       monitoringRole: Optional<Role>,
       kmsKey: Optional<Key>,
       allowMajorVersionUpgrade: Optional<Bool>,
       dbSnapshotIdentifier: Optional<String> } -> DBInstance
Argument: dbInstanceIdentifier

Must be a lowercase string of alphanumeric characters and hyphens between 1 and 63 characters in length. Mutable.

Type: String

Argument: dbInstanceClass

The instance type to run the DB on. Mutable.

Type: DBInstanceClass

Argument: masterUsername

The name of the database master user.

Type: Optional<String>

Argument: allocatedStorage

The amount of storage to allocate in GB. See Engine. Must be 20-4096. Mutable.

Type: Optional<Int>

Argument: securityGroups

The list of security groups to attach to the instance. This list must not be empty. Mutable.

Type: Optional<List<SecurityGroup>>

Argument: availabilityZone

The AZ to deploy the instance in. Must be None if multiAZ is True. Mutable.

Type: Optional<AvailabilityZone>

Argument: dbSubnetGroup

The DBSubnetGroup to deploy the instance in. Mutable.

Type: DBSubnetGroup

Argument: storageType

The type of storage to use. Mutable.

Type: Optional<VolumeType>

Argument: port

The port the DB listens on. Valid ports are between 1150 and 65535, except 1434, 3389, 47001, and 49152-49156. Mutable.

Type: Optional<Int>

Argument: masterUserPassword

The password for the master database user. Mutable.

Type: Optional<Password>

Argument: tags

An optional list of tags to attach to the DB instance. Mutable.

Type: Optional<List<Tag>>

Argument: optionGroup

Associate the DBInstance with the provided Fugue.AWS.RDS.OptionGroup. Mutable.

Type: Optional<OptionGroup>

Argument: preferredBackupWindow

The daily window where backups are performed. Window is specified in UTC using the following format: ‘hh24:mi-hh24:mi’. The provided window must be at least 30 minutes. Defaults to a randomly selected 30 minute window appropriate for the region. Mutable.

Type: Optional<String>

Argument: backupRetentionPeriod

The number of days that backups will be retained. Specifying 0 will disable backups. Defaults to 1. Mutable.

Type: Optional<Int>

Argument: preferredMaintenanceWindow

The weekly window where maintenance can be performed by AWS. Window is specified in UTC using the following format: ‘ddd:hh24:mi-ddd:hh24:mi’. The provided window must be at least 30 minutes. Defaults to a randomly selected day and 30 minute window appropriate for the region. Mutable.

Type: Optional<String>

Argument: engineVersion

The version of the database engine to use. See RDS documentation for a list of supported versions. Mutable.

Type: Optional<String>

Argument: autoMinorVersionUpgrade

If True allows AWS to apply minor version upgrades to your database during the monthly maintenance window. Default to True. Mutable.

Type: Optional<Bool>

Argument: licenseModel

The license model used in the DBInstance. Mutable.

Type: Optional<LicenseModel>

Argument: iops

Provisioned IOPS to allocate for the DBInstance. Must be 3-10 times the size of the allocated storage for your DBInstance, rounded up to the nearest 1000. Mutable.

Type: Optional<Int>

Argument: characterSetName

The character set to associate with the DBInstance. Not supported by all engines.

Type: Optional<String>

Argument: publiclyAccessible

If True the DBInstance has a public IP and DNS name. If False the DBInstance will only be accessible from within your VPC. Defaults to False. Mutable.

Type: Optional<Bool>

Argument: storageEncrypted

If True the DBInstance‘s will use encrypted storage. Defaults to False.

Type: Optional<Bool>

Argument: caCertificateIdentifier


Type: Optional<String>

Argument: copyTagsToSnapshot

If True all Tags from the DBInstance will be copied to any snapshots taken of the instance. Defaults to False. Mutable.

Type: Optional<Bool>

Argument: monitoringInterval

Interval in seconds that enhanced monitoring metrics are collected. Set to 0 to disable enhanced monitoring. Must be one of: 0, 1, 5, 10, 15, 30, or 60. Defaults to 0. Mutable.

Type: Optional<Int>

Argument: dbParameterGroup

The DBParameterGroup to associate with this DBInstance. Mutable.

Type: Optional<DBParameterGroup>

Argument: domain

The Active Directory domain to create the DBInstance in. Mutable.

Type: Optional<String>

Argument: domainRole

The Fugue.AWS.IAM.Role to use for domain authentication.

Type: Optional<Role>

Argument: monitoringRole

The Fugue.AWS.IAM.Role to use when sending enhanced metrics to CloudWatch Logs. Required if enhanced metrics are enabled (monitoringInterval is non-zero). Mutable.

Type: Optional<Role>

Argument: kmsKey

The KMS key to use when encrypting DBInstance storage. Defaults to the default KMS key for your account.

Type: Optional<Key>

Argument: allowMajorVersionUpgrade

Set to True to enable changes to the major version of the engine. If False attempts to change the engine version, it will result in a runtime error. Defaults to False. Mutable.

Type: Optional<Bool>

Argument: dbSnapshotIdentifier

The snapshot to provision the DBInstance from.

Type: Optional<String>


The DBInstance.

Type: DBInstance