amazonka-rds-0.2.1: gen/Network/AWS/RDS/RestoreDBInstanceToPointInTime.hs
{-# 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.RestoreDBInstanceToPointInTime
-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
-- 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 <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
--
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- | Restores a DB instance to an arbitrary point-in-time. Users can restore to
-- any point in time before the LatestRestorableTime for up to
-- BackupRetentionPeriod days. The target database is created from the source
-- database with the same configuration as the original database except that the
-- DB instance is created with the default DB security group.
--
-- <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html>
module Network.AWS.RDS.RestoreDBInstanceToPointInTime
(
-- * Request
RestoreDBInstanceToPointInTime
-- ** Request constructor
, restoreDBInstanceToPointInTime
-- ** Request lenses
, rdbitpitAutoMinorVersionUpgrade
, rdbitpitAvailabilityZone
, rdbitpitDBInstanceClass
, rdbitpitDBName
, rdbitpitDBSubnetGroupName
, rdbitpitEngine
, rdbitpitIops
, rdbitpitLicenseModel
, rdbitpitMultiAZ
, rdbitpitOptionGroupName
, rdbitpitPort
, rdbitpitPubliclyAccessible
, rdbitpitRestoreTime
, rdbitpitSourceDBInstanceIdentifier
, rdbitpitStorageType
, rdbitpitTags
, rdbitpitTargetDBInstanceIdentifier
, rdbitpitTdeCredentialArn
, rdbitpitTdeCredentialPassword
, rdbitpitUseLatestRestorableTime
-- * Response
, RestoreDBInstanceToPointInTimeResponse
-- ** Response constructor
, restoreDBInstanceToPointInTimeResponse
-- ** Response lenses
, rdbitpitrDBInstance
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.RDS.Types
import qualified GHC.Exts
data RestoreDBInstanceToPointInTime = RestoreDBInstanceToPointInTime
{ _rdbitpitAutoMinorVersionUpgrade :: Maybe Bool
, _rdbitpitAvailabilityZone :: Maybe Text
, _rdbitpitDBInstanceClass :: Maybe Text
, _rdbitpitDBName :: Maybe Text
, _rdbitpitDBSubnetGroupName :: Maybe Text
, _rdbitpitEngine :: Maybe Text
, _rdbitpitIops :: Maybe Int
, _rdbitpitLicenseModel :: Maybe Text
, _rdbitpitMultiAZ :: Maybe Bool
, _rdbitpitOptionGroupName :: Maybe Text
, _rdbitpitPort :: Maybe Int
, _rdbitpitPubliclyAccessible :: Maybe Bool
, _rdbitpitRestoreTime :: Maybe ISO8601
, _rdbitpitSourceDBInstanceIdentifier :: Text
, _rdbitpitStorageType :: Maybe Text
, _rdbitpitTags :: List "member" Tag
, _rdbitpitTargetDBInstanceIdentifier :: Text
, _rdbitpitTdeCredentialArn :: Maybe Text
, _rdbitpitTdeCredentialPassword :: Maybe Text
, _rdbitpitUseLatestRestorableTime :: Maybe Bool
} deriving (Eq, Show)
-- | 'RestoreDBInstanceToPointInTime' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'rdbitpitAutoMinorVersionUpgrade' @::@ 'Maybe' 'Bool'
--
-- * 'rdbitpitAvailabilityZone' @::@ 'Maybe' 'Text'
--
-- * 'rdbitpitDBInstanceClass' @::@ 'Maybe' 'Text'
--
-- * 'rdbitpitDBName' @::@ 'Maybe' 'Text'
--
-- * 'rdbitpitDBSubnetGroupName' @::@ 'Maybe' 'Text'
--
-- * 'rdbitpitEngine' @::@ 'Maybe' 'Text'
--
-- * 'rdbitpitIops' @::@ 'Maybe' 'Int'
--
-- * 'rdbitpitLicenseModel' @::@ 'Maybe' 'Text'
--
-- * 'rdbitpitMultiAZ' @::@ 'Maybe' 'Bool'
--
-- * 'rdbitpitOptionGroupName' @::@ 'Maybe' 'Text'
--
-- * 'rdbitpitPort' @::@ 'Maybe' 'Int'
--
-- * 'rdbitpitPubliclyAccessible' @::@ 'Maybe' 'Bool'
--
-- * 'rdbitpitRestoreTime' @::@ 'Maybe' 'UTCTime'
--
-- * 'rdbitpitSourceDBInstanceIdentifier' @::@ 'Text'
--
-- * 'rdbitpitStorageType' @::@ 'Maybe' 'Text'
--
-- * 'rdbitpitTags' @::@ ['Tag']
--
-- * 'rdbitpitTargetDBInstanceIdentifier' @::@ 'Text'
--
-- * 'rdbitpitTdeCredentialArn' @::@ 'Maybe' 'Text'
--
-- * 'rdbitpitTdeCredentialPassword' @::@ 'Maybe' 'Text'
--
-- * 'rdbitpitUseLatestRestorableTime' @::@ 'Maybe' 'Bool'
--
restoreDBInstanceToPointInTime :: Text -- ^ 'rdbitpitSourceDBInstanceIdentifier'
-> Text -- ^ 'rdbitpitTargetDBInstanceIdentifier'
-> RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime p1 p2 = RestoreDBInstanceToPointInTime
{ _rdbitpitSourceDBInstanceIdentifier = p1
, _rdbitpitTargetDBInstanceIdentifier = p2
, _rdbitpitRestoreTime = Nothing
, _rdbitpitUseLatestRestorableTime = Nothing
, _rdbitpitDBInstanceClass = Nothing
, _rdbitpitPort = Nothing
, _rdbitpitAvailabilityZone = Nothing
, _rdbitpitDBSubnetGroupName = Nothing
, _rdbitpitMultiAZ = Nothing
, _rdbitpitPubliclyAccessible = Nothing
, _rdbitpitAutoMinorVersionUpgrade = Nothing
, _rdbitpitLicenseModel = Nothing
, _rdbitpitDBName = Nothing
, _rdbitpitEngine = Nothing
, _rdbitpitIops = Nothing
, _rdbitpitOptionGroupName = Nothing
, _rdbitpitTags = mempty
, _rdbitpitStorageType = Nothing
, _rdbitpitTdeCredentialArn = Nothing
, _rdbitpitTdeCredentialPassword = Nothing
}
-- | Indicates that minor version upgrades will be applied automatically to the
-- DB instance during the maintenance window.
rdbitpitAutoMinorVersionUpgrade :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
rdbitpitAutoMinorVersionUpgrade =
lens _rdbitpitAutoMinorVersionUpgrade
(\s a -> s { _rdbitpitAutoMinorVersionUpgrade = a })
-- | The EC2 Availability Zone that the database instance will be created in.
--
-- Default: A random, system-chosen Availability Zone.
--
-- Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ
-- parameter is set to true.
--
-- Example: 'us-east-1a'
rdbitpitAvailabilityZone :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
rdbitpitAvailabilityZone =
lens _rdbitpitAvailabilityZone
(\s a -> s { _rdbitpitAvailabilityZone = a })
-- | The compute and memory capacity of the Amazon RDS DB instance.
--
-- Valid Values: 'db.t1.micro | db.m1.small | db.m1.medium | db.m1.large |db.m1.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'
--
-- Default: The same DBInstanceClass as the original DB instance.
rdbitpitDBInstanceClass :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
rdbitpitDBInstanceClass =
lens _rdbitpitDBInstanceClass (\s a -> s { _rdbitpitDBInstanceClass = a })
-- | The database name for the restored DB instance.
--
-- This parameter is not used for the MySQL engine.
--
--
rdbitpitDBName :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
rdbitpitDBName = lens _rdbitpitDBName (\s a -> s { _rdbitpitDBName = a })
-- | The DB subnet group name to use for the new instance.
rdbitpitDBSubnetGroupName :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
rdbitpitDBSubnetGroupName =
lens _rdbitpitDBSubnetGroupName
(\s a -> s { _rdbitpitDBSubnetGroupName = a })
-- | The database engine to use for the new instance.
--
-- Default: The same as source
--
-- Constraint: Must be compatible with the engine of the source
--
-- Valid Values: 'MySQL' | 'oracle-se1' | 'oracle-se' | 'oracle-ee' | 'sqlserver-ee' | 'sqlserver-se' | 'sqlserver-ex' | 'sqlserver-web' | 'postgres'
rdbitpitEngine :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
rdbitpitEngine = lens _rdbitpitEngine (\s a -> s { _rdbitpitEngine = a })
-- | The amount of Provisioned IOPS (input/output operations per second) to be
-- initially allocated for the DB instance.
--
-- Constraints: Must be an integer greater than 1000.
--
-- SQL Server
--
-- Setting the IOPS value for the SQL Server database engine is not supported.
rdbitpitIops :: Lens' RestoreDBInstanceToPointInTime (Maybe Int)
rdbitpitIops = lens _rdbitpitIops (\s a -> s { _rdbitpitIops = a })
-- | License model information for the restored DB instance.
--
-- Default: Same as source.
--
-- Valid values: 'license-included' | 'bring-your-own-license' | 'general-public-license'
rdbitpitLicenseModel :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
rdbitpitLicenseModel =
lens _rdbitpitLicenseModel (\s a -> s { _rdbitpitLicenseModel = a })
-- | Specifies if the DB instance is a Multi-AZ deployment.
--
-- Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ
-- parameter is set to 'true'.
rdbitpitMultiAZ :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
rdbitpitMultiAZ = lens _rdbitpitMultiAZ (\s a -> s { _rdbitpitMultiAZ = a })
-- | The name of the option group to be used for the restored DB instance.
--
-- 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
rdbitpitOptionGroupName :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
rdbitpitOptionGroupName =
lens _rdbitpitOptionGroupName (\s a -> s { _rdbitpitOptionGroupName = a })
-- | The port number on which the database accepts connections.
--
-- Constraints: Value must be '1150-65535'
--
-- Default: The same port as the original DB instance.
rdbitpitPort :: Lens' RestoreDBInstanceToPointInTime (Maybe Int)
rdbitpitPort = lens _rdbitpitPort (\s a -> s { _rdbitpitPort = 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.
rdbitpitPubliclyAccessible :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
rdbitpitPubliclyAccessible =
lens _rdbitpitPubliclyAccessible
(\s a -> s { _rdbitpitPubliclyAccessible = a })
-- | The date and time to restore from.
--
-- Valid Values: Value must be a UTC time
--
-- Constraints:
--
-- Must be before the latest restorable time for the DB instance Cannot be
-- specified if UseLatestRestorableTime parameter is true Example: '2009-09-07T23:45:00Z'
rdbitpitRestoreTime :: Lens' RestoreDBInstanceToPointInTime (Maybe UTCTime)
rdbitpitRestoreTime =
lens _rdbitpitRestoreTime (\s a -> s { _rdbitpitRestoreTime = a })
. mapping _Time
-- | The identifier of the source DB instance from which to restore.
--
-- Constraints:
--
-- Must be the identifier of an existing database instance Must contain from 1
-- to 63 alphanumeric characters or hyphens First character must be a letter Cannot end with a hyphen or contain two consecutive hyphens
--
rdbitpitSourceDBInstanceIdentifier :: Lens' RestoreDBInstanceToPointInTime Text
rdbitpitSourceDBInstanceIdentifier =
lens _rdbitpitSourceDBInstanceIdentifier
(\s a -> s { _rdbitpitSourceDBInstanceIdentifier = a })
-- | Specifies the 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.
--
-- Default: 'io1' if the 'Iops' parameter is specified; otherwise 'standard'
rdbitpitStorageType :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
rdbitpitStorageType =
lens _rdbitpitStorageType (\s a -> s { _rdbitpitStorageType = a })
rdbitpitTags :: Lens' RestoreDBInstanceToPointInTime [Tag]
rdbitpitTags = lens _rdbitpitTags (\s a -> s { _rdbitpitTags = a }) . _List
-- | The name of the new database instance to be created.
--
-- Constraints:
--
-- Must contain from 1 to 63 alphanumeric characters or hyphens First
-- character must be a letter Cannot end with a hyphen or contain two
-- consecutive hyphens
rdbitpitTargetDBInstanceIdentifier :: Lens' RestoreDBInstanceToPointInTime Text
rdbitpitTargetDBInstanceIdentifier =
lens _rdbitpitTargetDBInstanceIdentifier
(\s a -> s { _rdbitpitTargetDBInstanceIdentifier = a })
-- | The ARN from the Key Store with which to associate the instance for TDE
-- encryption.
rdbitpitTdeCredentialArn :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
rdbitpitTdeCredentialArn =
lens _rdbitpitTdeCredentialArn
(\s a -> s { _rdbitpitTdeCredentialArn = a })
-- | The password for the given ARN from the Key Store in order to access the
-- device.
rdbitpitTdeCredentialPassword :: Lens' RestoreDBInstanceToPointInTime (Maybe Text)
rdbitpitTdeCredentialPassword =
lens _rdbitpitTdeCredentialPassword
(\s a -> s { _rdbitpitTdeCredentialPassword = a })
-- | Specifies whether ('true') or not ('false') the DB instance is restored from the
-- latest backup time.
--
-- Default: 'false'
--
-- Constraints: Cannot be specified if RestoreTime parameter is provided.
rdbitpitUseLatestRestorableTime :: Lens' RestoreDBInstanceToPointInTime (Maybe Bool)
rdbitpitUseLatestRestorableTime =
lens _rdbitpitUseLatestRestorableTime
(\s a -> s { _rdbitpitUseLatestRestorableTime = a })
newtype RestoreDBInstanceToPointInTimeResponse = RestoreDBInstanceToPointInTimeResponse
{ _rdbitpitrDBInstance :: Maybe DBInstance
} deriving (Eq, Show)
-- | 'RestoreDBInstanceToPointInTimeResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'rdbitpitrDBInstance' @::@ 'Maybe' 'DBInstance'
--
restoreDBInstanceToPointInTimeResponse :: RestoreDBInstanceToPointInTimeResponse
restoreDBInstanceToPointInTimeResponse = RestoreDBInstanceToPointInTimeResponse
{ _rdbitpitrDBInstance = Nothing
}
rdbitpitrDBInstance :: Lens' RestoreDBInstanceToPointInTimeResponse (Maybe DBInstance)
rdbitpitrDBInstance =
lens _rdbitpitrDBInstance (\s a -> s { _rdbitpitrDBInstance = a })
instance ToPath RestoreDBInstanceToPointInTime where
toPath = const "/"
instance ToQuery RestoreDBInstanceToPointInTime where
toQuery RestoreDBInstanceToPointInTime{..} = mconcat
[ "AutoMinorVersionUpgrade" =? _rdbitpitAutoMinorVersionUpgrade
, "AvailabilityZone" =? _rdbitpitAvailabilityZone
, "DBInstanceClass" =? _rdbitpitDBInstanceClass
, "DBName" =? _rdbitpitDBName
, "DBSubnetGroupName" =? _rdbitpitDBSubnetGroupName
, "Engine" =? _rdbitpitEngine
, "Iops" =? _rdbitpitIops
, "LicenseModel" =? _rdbitpitLicenseModel
, "MultiAZ" =? _rdbitpitMultiAZ
, "OptionGroupName" =? _rdbitpitOptionGroupName
, "Port" =? _rdbitpitPort
, "PubliclyAccessible" =? _rdbitpitPubliclyAccessible
, "RestoreTime" =? _rdbitpitRestoreTime
, "SourceDBInstanceIdentifier" =? _rdbitpitSourceDBInstanceIdentifier
, "StorageType" =? _rdbitpitStorageType
, "Tags" =? _rdbitpitTags
, "TargetDBInstanceIdentifier" =? _rdbitpitTargetDBInstanceIdentifier
, "TdeCredentialArn" =? _rdbitpitTdeCredentialArn
, "TdeCredentialPassword" =? _rdbitpitTdeCredentialPassword
, "UseLatestRestorableTime" =? _rdbitpitUseLatestRestorableTime
]
instance ToHeaders RestoreDBInstanceToPointInTime
instance AWSRequest RestoreDBInstanceToPointInTime where
type Sv RestoreDBInstanceToPointInTime = RDS
type Rs RestoreDBInstanceToPointInTime = RestoreDBInstanceToPointInTimeResponse
request = post "RestoreDBInstanceToPointInTime"
response = xmlResponse
instance FromXML RestoreDBInstanceToPointInTimeResponse where
parseXML = withElement "RestoreDBInstanceToPointInTimeResult" $ \x -> RestoreDBInstanceToPointInTimeResponse
<$> x .@? "DBInstance"