{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Module : Network.AWS.RDS.CreateDBInstance -- Copyright : (c) 2013-2014 Brendan Hay -- License : This Source Code Form is subject to the terms of -- the Mozilla Public License, v. 2.0. -- A copy of the MPL can be found in the LICENSE file or -- you can obtain it at http://mozilla.org/MPL/2.0/. -- Maintainer : Brendan Hay -- Stability : experimental -- Portability : non-portable (GHC extensions) -- | Creates a new DB instance. -- -- module Network.AWS.RDS.CreateDBInstance ( -- * Request CreateDBInstance -- ** Request constructor , createDBInstance -- ** Request lenses , cdbiAllocatedStorage , cdbiAutoMinorVersionUpgrade , cdbiAvailabilityZone , cdbiBackupRetentionPeriod , cdbiCharacterSetName , cdbiDBInstanceClass , cdbiDBInstanceIdentifier , cdbiDBName , cdbiDBParameterGroupName , cdbiDBSecurityGroups , cdbiDBSubnetGroupName , cdbiEngine , cdbiEngineVersion , cdbiIops , cdbiLicenseModel , cdbiMasterUserPassword , cdbiMasterUsername , cdbiMultiAZ , cdbiOptionGroupName , cdbiPort , cdbiPreferredBackupWindow , cdbiPreferredMaintenanceWindow , cdbiPubliclyAccessible , cdbiStorageType , cdbiTags , cdbiTdeCredentialArn , cdbiTdeCredentialPassword , cdbiVpcSecurityGroupIds -- * Response , CreateDBInstanceResponse -- ** Response constructor , createDBInstanceResponse -- ** Response lenses , cdbirDBInstance ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.RDS.Types import qualified GHC.Exts data CreateDBInstance = CreateDBInstance { _cdbiAllocatedStorage :: Int , _cdbiAutoMinorVersionUpgrade :: Maybe Bool , _cdbiAvailabilityZone :: Maybe Text , _cdbiBackupRetentionPeriod :: Maybe Int , _cdbiCharacterSetName :: Maybe Text , _cdbiDBInstanceClass :: Text , _cdbiDBInstanceIdentifier :: Text , _cdbiDBName :: Maybe Text , _cdbiDBParameterGroupName :: Maybe Text , _cdbiDBSecurityGroups :: List "DBSecurityGroupName" Text , _cdbiDBSubnetGroupName :: Maybe Text , _cdbiEngine :: Text , _cdbiEngineVersion :: Maybe Text , _cdbiIops :: Maybe Int , _cdbiLicenseModel :: Maybe Text , _cdbiMasterUserPassword :: Text , _cdbiMasterUsername :: Text , _cdbiMultiAZ :: Maybe Bool , _cdbiOptionGroupName :: Maybe Text , _cdbiPort :: Maybe Int , _cdbiPreferredBackupWindow :: Maybe Text , _cdbiPreferredMaintenanceWindow :: Maybe Text , _cdbiPubliclyAccessible :: Maybe Bool , _cdbiStorageType :: Maybe Text , _cdbiTags :: List "Tag" Tag , _cdbiTdeCredentialArn :: Maybe Text , _cdbiTdeCredentialPassword :: Maybe Text , _cdbiVpcSecurityGroupIds :: List "VpcSecurityGroupId" Text } deriving (Eq, Show) -- | 'CreateDBInstance' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cdbiAllocatedStorage' @::@ 'Int' -- -- * 'cdbiAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool' -- -- * 'cdbiAvailabilityZone' @::@ 'Maybe' 'Text' -- -- * 'cdbiBackupRetentionPeriod' @::@ 'Maybe' 'Int' -- -- * 'cdbiCharacterSetName' @::@ 'Maybe' 'Text' -- -- * 'cdbiDBInstanceClass' @::@ 'Text' -- -- * 'cdbiDBInstanceIdentifier' @::@ 'Text' -- -- * 'cdbiDBName' @::@ 'Maybe' 'Text' -- -- * 'cdbiDBParameterGroupName' @::@ 'Maybe' 'Text' -- -- * 'cdbiDBSecurityGroups' @::@ ['Text'] -- -- * 'cdbiDBSubnetGroupName' @::@ 'Maybe' 'Text' -- -- * 'cdbiEngine' @::@ 'Text' -- -- * 'cdbiEngineVersion' @::@ 'Maybe' 'Text' -- -- * 'cdbiIops' @::@ 'Maybe' 'Int' -- -- * 'cdbiLicenseModel' @::@ 'Maybe' 'Text' -- -- * 'cdbiMasterUserPassword' @::@ 'Text' -- -- * 'cdbiMasterUsername' @::@ 'Text' -- -- * 'cdbiMultiAZ' @::@ 'Maybe' 'Bool' -- -- * 'cdbiOptionGroupName' @::@ 'Maybe' 'Text' -- -- * 'cdbiPort' @::@ 'Maybe' 'Int' -- -- * 'cdbiPreferredBackupWindow' @::@ 'Maybe' 'Text' -- -- * 'cdbiPreferredMaintenanceWindow' @::@ 'Maybe' 'Text' -- -- * 'cdbiPubliclyAccessible' @::@ 'Maybe' 'Bool' -- -- * 'cdbiStorageType' @::@ 'Maybe' 'Text' -- -- * 'cdbiTags' @::@ ['Tag'] -- -- * 'cdbiTdeCredentialArn' @::@ 'Maybe' 'Text' -- -- * 'cdbiTdeCredentialPassword' @::@ 'Maybe' 'Text' -- -- * 'cdbiVpcSecurityGroupIds' @::@ ['Text'] -- createDBInstance :: Text -- ^ 'cdbiDBInstanceIdentifier' -> Int -- ^ 'cdbiAllocatedStorage' -> Text -- ^ 'cdbiDBInstanceClass' -> Text -- ^ 'cdbiEngine' -> Text -- ^ 'cdbiMasterUsername' -> Text -- ^ 'cdbiMasterUserPassword' -> CreateDBInstance createDBInstance p1 p2 p3 p4 p5 p6 = CreateDBInstance { _cdbiDBInstanceIdentifier = p1 , _cdbiAllocatedStorage = p2 , _cdbiDBInstanceClass = p3 , _cdbiEngine = p4 , _cdbiMasterUsername = p5 , _cdbiMasterUserPassword = p6 , _cdbiDBName = Nothing , _cdbiDBSecurityGroups = mempty , _cdbiVpcSecurityGroupIds = mempty , _cdbiAvailabilityZone = Nothing , _cdbiDBSubnetGroupName = Nothing , _cdbiPreferredMaintenanceWindow = Nothing , _cdbiDBParameterGroupName = Nothing , _cdbiBackupRetentionPeriod = Nothing , _cdbiPreferredBackupWindow = Nothing , _cdbiPort = Nothing , _cdbiMultiAZ = Nothing , _cdbiEngineVersion = Nothing , _cdbiAutoMinorVersionUpgrade = Nothing , _cdbiLicenseModel = Nothing , _cdbiIops = Nothing , _cdbiOptionGroupName = Nothing , _cdbiCharacterSetName = Nothing , _cdbiPubliclyAccessible = Nothing , _cdbiTags = mempty , _cdbiStorageType = Nothing , _cdbiTdeCredentialArn = Nothing , _cdbiTdeCredentialPassword = Nothing } -- | The amount of storage (in gigabytes) to be initially allocated for the -- database instance. Type: Integer MySQL Constraints: Must be an integer -- from 5 to 3072. PostgreSQL Constraints: Must be an integer from 5 to -- 3072. Oracle Constraints: Must be an integer from 10 to 3072. SQL Server -- Constraints: Must be an integer from 200 to 1024 (Standard Edition and -- Enterprise Edition) or from 30 to 1024 (Express Edition and Web Edition). cdbiAllocatedStorage :: Lens' CreateDBInstance Int cdbiAllocatedStorage = lens _cdbiAllocatedStorage (\s a -> s { _cdbiAllocatedStorage = a }) -- | Indicates that minor engine upgrades will be applied automatically to the -- DB instance during the maintenance window. Default: true. cdbiAutoMinorVersionUpgrade :: Lens' CreateDBInstance (Maybe Bool) cdbiAutoMinorVersionUpgrade = lens _cdbiAutoMinorVersionUpgrade (\s a -> s { _cdbiAutoMinorVersionUpgrade = a }) -- | The EC2 Availability Zone that the database instance will be created in. -- Default: A random, system-chosen Availability Zone in the endpoint's -- region. Example: us-east-1d Constraint: The AvailabilityZone parameter -- cannot be specified if the MultiAZ parameter is set to true. The -- specified Availability Zone must be in the same region as the current -- endpoint. cdbiAvailabilityZone :: Lens' CreateDBInstance (Maybe Text) cdbiAvailabilityZone = lens _cdbiAvailabilityZone (\s a -> s { _cdbiAvailabilityZone = a }) -- | 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. Default: 1 Constraints: Must be a value -- from 0 to 35 Cannot be set to 0 if the DB instance is a source to read -- replicas. cdbiBackupRetentionPeriod :: Lens' CreateDBInstance (Maybe Int) cdbiBackupRetentionPeriod = lens _cdbiBackupRetentionPeriod (\s a -> s { _cdbiBackupRetentionPeriod = a }) -- | For supported engines, indicates that the DB instance should be -- associated with the specified CharacterSet. cdbiCharacterSetName :: Lens' CreateDBInstance (Maybe Text) cdbiCharacterSetName = lens _cdbiCharacterSetName (\s a -> s { _cdbiCharacterSetName = a }) -- | The compute and memory capacity of the DB instance. Valid Values: -- db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | -- db.m2.xlarge |db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large -- | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | -- db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small -- | db.t2.medium. cdbiDBInstanceClass :: Lens' CreateDBInstance Text cdbiDBInstanceClass = lens _cdbiDBInstanceClass (\s a -> s { _cdbiDBInstanceClass = a }) -- | The DB instance identifier. This parameter is stored as a lowercase -- string. Constraints: Must contain from 1 to 63 alphanumeric characters or -- hyphens (1 to 15 for SQL Server). First character must be a letter. -- Cannot end with a hyphen or contain two consecutive hyphens. Example: -- mydbinstance. cdbiDBInstanceIdentifier :: Lens' CreateDBInstance Text cdbiDBInstanceIdentifier = lens _cdbiDBInstanceIdentifier (\s a -> s { _cdbiDBInstanceIdentifier = a }) -- | The meaning of this parameter differs according to the database engine -- you use. Type: String 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 -- alphanumeric characters Cannot 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, no database is -- created in the DB instance. Constraints: Must contain 1 to 63 -- alphanumeric characters Must begin with a letter or an underscore. -- Subsequent characters can be letters, underscores, or digits (0-9). -- Cannot be a word reserved by the specified database engine Oracle The -- Oracle System ID (SID) of the created DB instance. Default: ORCL -- Constraints: Cannot be longer than 8 characters SQL Server Not -- applicable. Must be null. cdbiDBName :: Lens' CreateDBInstance (Maybe Text) cdbiDBName = lens _cdbiDBName (\s a -> s { _cdbiDBName = a }) -- | The name of the DB parameter group to associate with this DB instance. If -- this argument is omitted, the default DBParameterGroup for the specified -- engine will be used. Constraints: Must be 1 to 255 alphanumeric -- characters First character must be a letter Cannot end with a hyphen or -- contain two consecutive hyphens. cdbiDBParameterGroupName :: Lens' CreateDBInstance (Maybe Text) cdbiDBParameterGroupName = lens _cdbiDBParameterGroupName (\s a -> s { _cdbiDBParameterGroupName = a }) -- | A list of DB security groups to associate with this DB instance. Default: -- The default DB security group for the database engine. cdbiDBSecurityGroups :: Lens' CreateDBInstance [Text] cdbiDBSecurityGroups = lens _cdbiDBSecurityGroups (\s a -> s { _cdbiDBSecurityGroups = a }) . _List -- | A DB subnet group to associate with this DB instance. If there is no DB -- subnet group, then it is a non-VPC DB instance. cdbiDBSubnetGroupName :: Lens' CreateDBInstance (Maybe Text) cdbiDBSubnetGroupName = lens _cdbiDBSubnetGroupName (\s a -> s { _cdbiDBSubnetGroupName = a }) -- | The name of the database engine to be used for this instance. Valid -- Values: MySQL | oracle-se1 | oracle-se | oracle-ee | sqlserver-ee | -- sqlserver-se | sqlserver-ex | sqlserver-web | postgres. cdbiEngine :: Lens' CreateDBInstance Text cdbiEngine = lens _cdbiEngine (\s a -> s { _cdbiEngine = a }) -- | The version number of the database engine to use. MySQL Example: 5.1.42 -- Type: String PostgreSQL Example: 9.3 Type: String Oracle Example: -- 11.2.0.2.v2 Type: String SQL Server Example: 10.50.2789.0.v1. cdbiEngineVersion :: Lens' CreateDBInstance (Maybe Text) cdbiEngineVersion = lens _cdbiEngineVersion (\s a -> s { _cdbiEngineVersion = a }) -- | The amount of Provisioned IOPS (input/output operations per second) to be -- initially allocated for the DB instance. Constraints: To use PIOPS, this -- value must be an integer greater than 1000. cdbiIops :: Lens' CreateDBInstance (Maybe Int) cdbiIops = lens _cdbiIops (\s a -> s { _cdbiIops = a }) -- | License model information for this DB instance. Valid values: -- license-included | bring-your-own-license | general-public-license. cdbiLicenseModel :: Lens' CreateDBInstance (Maybe Text) cdbiLicenseModel = lens _cdbiLicenseModel (\s a -> s { _cdbiLicenseModel = a }) -- | The password for the master database user. Can be any printable ASCII -- character except "/", """, or "@". Type: String MySQL Constraints: Must -- contain from 8 to 41 characters. Oracle Constraints: Must contain from 8 -- to 30 characters. SQL Server Constraints: Must contain from 8 to 128 -- characters. cdbiMasterUserPassword :: Lens' CreateDBInstance Text cdbiMasterUserPassword = lens _cdbiMasterUserPassword (\s a -> s { _cdbiMasterUserPassword = a }) -- | The name of master user for the client DB instance. MySQL Constraints: -- Must be 1 to 16 alphanumeric characters. First character must be a -- letter. Cannot be a reserved word for the chosen database engine. Type: -- String Oracle Constraints: Must be 1 to 30 alphanumeric characters. First -- character must be a letter. Cannot be a reserved word for the chosen -- database engine. SQL Server Constraints: Must be 1 to 128 alphanumeric -- characters. First character must be a letter. Cannot be a reserved word -- for the chosen database engine. cdbiMasterUsername :: Lens' CreateDBInstance Text cdbiMasterUsername = lens _cdbiMasterUsername (\s a -> s { _cdbiMasterUsername = a }) -- | Specifies if the DB instance is a Multi-AZ deployment. You cannot set the -- AvailabilityZone parameter if the MultiAZ parameter is set to true. cdbiMultiAZ :: Lens' CreateDBInstance (Maybe Bool) cdbiMultiAZ = lens _cdbiMultiAZ (\s a -> s { _cdbiMultiAZ = a }) -- | 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, cannot be removed from an option group, and that -- option group cannot be removed from a DB instance once it is associated -- with a DB instance. cdbiOptionGroupName :: Lens' CreateDBInstance (Maybe Text) cdbiOptionGroupName = lens _cdbiOptionGroupName (\s a -> s { _cdbiOptionGroupName = a }) -- | The port number on which the database accepts connections. MySQL Default: -- 3306 Valid Values: 1150-65535 Type: Integer PostgreSQL Default: 5432 -- Valid Values: 1150-65535 Type: Integer Oracle Default: 1521 Valid Values: -- 1150-65535 SQL Server Default: 1433 Valid Values: 1150-65535 except for -- 1434, 3389, 47001, 49152, and 49152 through 49156. cdbiPort :: Lens' CreateDBInstance (Maybe Int) cdbiPort = lens _cdbiPort (\s a -> s { _cdbiPort = a }) -- | The daily time range during which automated backups are created if -- automated backups are enabled, using the BackupRetentionPeriod parameter. -- Default: A 30-minute window selected at random from an 8-hour block of -- time per region. See the Amazon RDS User Guide for the time blocks for -- each region from which the default backup windows are assigned. -- Constraints: Must be in the format hh24:mi-hh24:mi. Times should be -- Universal Time Coordinated (UTC). Must not conflict with the preferred -- maintenance window. Must be at least 30 minutes. cdbiPreferredBackupWindow :: Lens' CreateDBInstance (Maybe Text) cdbiPreferredBackupWindow = lens _cdbiPreferredBackupWindow (\s a -> s { _cdbiPreferredBackupWindow = a }) -- | The weekly time range (in UTC) during which system maintenance can occur. -- Format: ddd:hh24:mi-ddd:hh24:mi Default: A 30-minute window selected at -- random from an 8-hour block of time per region, occurring on a random day -- of the week. To see the time blocks available, see Adjusting the -- Preferred Maintenance Window in the Amazon RDS User Guide. Valid Days: -- Mon, Tue, Wed, Thu, Fri, Sat, Sun Constraints: Minimum 30-minute window. cdbiPreferredMaintenanceWindow :: Lens' CreateDBInstance (Maybe Text) cdbiPreferredMaintenanceWindow = lens _cdbiPreferredMaintenanceWindow (\s a -> s { _cdbiPreferredMaintenanceWindow = a }) -- | Specifies the accessibility options for the DB instance. A value of true -- specifies an Internet-facing instance with a publicly resolvable DNS -- name, which resolves to a public IP address. A value of false specifies -- an internal instance with a DNS name that resolves to a private IP -- address. Default: The default behavior varies depending on whether a VPC -- has been requested or not. The following list shows the default behavior -- in each case. Default VPC:true VPC:false If no DB subnet group has been -- specified as part of the request and the PubliclyAccessible value has not -- been set, the DB instance will be publicly accessible. If a specific DB -- subnet group has been specified as part of the request and the -- PubliclyAccessible value has not been set, the DB instance will be -- private. cdbiPubliclyAccessible :: Lens' CreateDBInstance (Maybe Bool) cdbiPubliclyAccessible = lens _cdbiPubliclyAccessible (\s a -> s { _cdbiPubliclyAccessible = a }) -- | Specifies storage type to be associated with the DB Instance. Valid -- values: standard | gp2 | io1 If you specify io1, you must also include a -- value for the Iops parameter. cdbiStorageType :: Lens' CreateDBInstance (Maybe Text) cdbiStorageType = lens _cdbiStorageType (\s a -> s { _cdbiStorageType = a }) cdbiTags :: Lens' CreateDBInstance [Tag] cdbiTags = lens _cdbiTags (\s a -> s { _cdbiTags = a }) . _List -- | The ARN from the Key Store with which to associate the instance for TDE -- encryption. cdbiTdeCredentialArn :: Lens' CreateDBInstance (Maybe Text) cdbiTdeCredentialArn = lens _cdbiTdeCredentialArn (\s a -> s { _cdbiTdeCredentialArn = a }) -- | The password for the given ARN from the Key Store in order to access the -- device. cdbiTdeCredentialPassword :: Lens' CreateDBInstance (Maybe Text) cdbiTdeCredentialPassword = lens _cdbiTdeCredentialPassword (\s a -> s { _cdbiTdeCredentialPassword = a }) -- | A list of EC2 VPC security groups to associate with this DB instance. -- Default: The default EC2 VPC security group for the DB subnet group's -- VPC. cdbiVpcSecurityGroupIds :: Lens' CreateDBInstance [Text] cdbiVpcSecurityGroupIds = lens _cdbiVpcSecurityGroupIds (\s a -> s { _cdbiVpcSecurityGroupIds = a }) . _List newtype CreateDBInstanceResponse = CreateDBInstanceResponse { _cdbirDBInstance :: Maybe DBInstance } deriving (Eq, Show) -- | 'CreateDBInstanceResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cdbirDBInstance' @::@ 'Maybe' 'DBInstance' -- createDBInstanceResponse :: CreateDBInstanceResponse createDBInstanceResponse = CreateDBInstanceResponse { _cdbirDBInstance = Nothing } cdbirDBInstance :: Lens' CreateDBInstanceResponse (Maybe DBInstance) cdbirDBInstance = lens _cdbirDBInstance (\s a -> s { _cdbirDBInstance = a }) instance ToPath CreateDBInstance where toPath = const "/" instance ToQuery CreateDBInstance where toQuery CreateDBInstance{..} = mconcat [ "AllocatedStorage" =? _cdbiAllocatedStorage , "AutoMinorVersionUpgrade" =? _cdbiAutoMinorVersionUpgrade , "AvailabilityZone" =? _cdbiAvailabilityZone , "BackupRetentionPeriod" =? _cdbiBackupRetentionPeriod , "CharacterSetName" =? _cdbiCharacterSetName , "DBInstanceClass" =? _cdbiDBInstanceClass , "DBInstanceIdentifier" =? _cdbiDBInstanceIdentifier , "DBName" =? _cdbiDBName , "DBParameterGroupName" =? _cdbiDBParameterGroupName , "DBSecurityGroups" =? _cdbiDBSecurityGroups , "DBSubnetGroupName" =? _cdbiDBSubnetGroupName , "Engine" =? _cdbiEngine , "EngineVersion" =? _cdbiEngineVersion , "Iops" =? _cdbiIops , "LicenseModel" =? _cdbiLicenseModel , "MasterUserPassword" =? _cdbiMasterUserPassword , "MasterUsername" =? _cdbiMasterUsername , "MultiAZ" =? _cdbiMultiAZ , "OptionGroupName" =? _cdbiOptionGroupName , "Port" =? _cdbiPort , "PreferredBackupWindow" =? _cdbiPreferredBackupWindow , "PreferredMaintenanceWindow" =? _cdbiPreferredMaintenanceWindow , "PubliclyAccessible" =? _cdbiPubliclyAccessible , "StorageType" =? _cdbiStorageType , "Tags" =? _cdbiTags , "TdeCredentialArn" =? _cdbiTdeCredentialArn , "TdeCredentialPassword" =? _cdbiTdeCredentialPassword , "VpcSecurityGroupIds" =? _cdbiVpcSecurityGroupIds ] instance ToHeaders CreateDBInstance instance AWSRequest CreateDBInstance where type Sv CreateDBInstance = RDS type Rs CreateDBInstance = CreateDBInstanceResponse request = post "CreateDBInstance" response = xmlResponse instance FromXML CreateDBInstanceResponse where parseXML = withElement "CreateDBInstanceResult" $ \x -> CreateDBInstanceResponse <$> x .@? "DBInstance"