amazonka-rds-1.3.3: gen/Network/AWS/RDS/CreateDBInstanceReadReplica.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.RDS.CreateDBInstanceReadReplica
-- Copyright : (c) 2013-2015 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a DB instance for a DB instance running MySQL or PostgreSQL that
-- acts as a Read Replica of a source DB instance.
--
-- All Read Replica DB instances are created as Single-AZ deployments with
-- backups disabled. All other DB instance attributes (including DB
-- security groups and DB parameter groups) are inherited from the source
-- DB instance, except as specified below.
--
-- The source DB instance must have backup retention enabled.
--
-- /See:/ <http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html AWS API Reference> for CreateDBInstanceReadReplica.
module Network.AWS.RDS.CreateDBInstanceReadReplica
(
-- * Creating a Request
createDBInstanceReadReplica
, CreateDBInstanceReadReplica
-- * Request Lenses
, cdirrPubliclyAccessible
, cdirrAutoMinorVersionUpgrade
, cdirrDBSubnetGroupName
, cdirrIOPS
, cdirrDBInstanceClass
, cdirrAvailabilityZone
, cdirrOptionGroupName
, cdirrCopyTagsToSnapshot
, cdirrTags
, cdirrPort
, cdirrStorageType
, cdirrDBInstanceIdentifier
, cdirrSourceDBInstanceIdentifier
-- * Destructuring the Response
, createDBInstanceReadReplicaResponse
, CreateDBInstanceReadReplicaResponse
-- * Response Lenses
, cdirrrsDBInstance
, cdirrrsResponseStatus
) where
import Network.AWS.Prelude
import Network.AWS.RDS.Types
import Network.AWS.RDS.Types.Product
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'createDBInstanceReadReplica' smart constructor.
data CreateDBInstanceReadReplica = CreateDBInstanceReadReplica'
{ _cdirrPubliclyAccessible :: !(Maybe Bool)
, _cdirrAutoMinorVersionUpgrade :: !(Maybe Bool)
, _cdirrDBSubnetGroupName :: !(Maybe Text)
, _cdirrIOPS :: !(Maybe Int)
, _cdirrDBInstanceClass :: !(Maybe Text)
, _cdirrAvailabilityZone :: !(Maybe Text)
, _cdirrOptionGroupName :: !(Maybe Text)
, _cdirrCopyTagsToSnapshot :: !(Maybe Bool)
, _cdirrTags :: !(Maybe [Tag])
, _cdirrPort :: !(Maybe Int)
, _cdirrStorageType :: !(Maybe Text)
, _cdirrDBInstanceIdentifier :: !Text
, _cdirrSourceDBInstanceIdentifier :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'CreateDBInstanceReadReplica' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'cdirrPubliclyAccessible'
--
-- * 'cdirrAutoMinorVersionUpgrade'
--
-- * 'cdirrDBSubnetGroupName'
--
-- * 'cdirrIOPS'
--
-- * 'cdirrDBInstanceClass'
--
-- * 'cdirrAvailabilityZone'
--
-- * 'cdirrOptionGroupName'
--
-- * 'cdirrCopyTagsToSnapshot'
--
-- * 'cdirrTags'
--
-- * 'cdirrPort'
--
-- * 'cdirrStorageType'
--
-- * 'cdirrDBInstanceIdentifier'
--
-- * 'cdirrSourceDBInstanceIdentifier'
createDBInstanceReadReplica
:: Text -- ^ 'cdirrDBInstanceIdentifier'
-> Text -- ^ 'cdirrSourceDBInstanceIdentifier'
-> CreateDBInstanceReadReplica
createDBInstanceReadReplica pDBInstanceIdentifier_ pSourceDBInstanceIdentifier_ =
CreateDBInstanceReadReplica'
{ _cdirrPubliclyAccessible = Nothing
, _cdirrAutoMinorVersionUpgrade = Nothing
, _cdirrDBSubnetGroupName = Nothing
, _cdirrIOPS = Nothing
, _cdirrDBInstanceClass = Nothing
, _cdirrAvailabilityZone = Nothing
, _cdirrOptionGroupName = Nothing
, _cdirrCopyTagsToSnapshot = Nothing
, _cdirrTags = Nothing
, _cdirrPort = Nothing
, _cdirrStorageType = Nothing
, _cdirrDBInstanceIdentifier = pDBInstanceIdentifier_
, _cdirrSourceDBInstanceIdentifier = pSourceDBInstanceIdentifier_
}
-- | 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.
cdirrPubliclyAccessible :: Lens' CreateDBInstanceReadReplica (Maybe Bool)
cdirrPubliclyAccessible = lens _cdirrPubliclyAccessible (\ s a -> s{_cdirrPubliclyAccessible = a});
-- | Indicates that minor engine upgrades will be applied automatically to
-- the Read Replica during the maintenance window.
--
-- Default: Inherits from the source DB instance
cdirrAutoMinorVersionUpgrade :: Lens' CreateDBInstanceReadReplica (Maybe Bool)
cdirrAutoMinorVersionUpgrade = lens _cdirrAutoMinorVersionUpgrade (\ s a -> s{_cdirrAutoMinorVersionUpgrade = a});
-- | Specifies a DB subnet group for the DB instance. The new DB instance
-- will be created in the VPC associated with the DB subnet group. If no DB
-- subnet group is specified, then the new DB instance is not created in a
-- VPC.
--
-- Constraints:
--
-- - Can only be specified if the source DB instance identifier specifies
-- a DB instance in another region.
-- - The specified DB subnet group must be in the same region in which
-- the operation is running.
-- - All Read Replicas in one region that are created from the same
-- source DB instance must either:
-- - Specify DB subnet groups from the same VPC. All these Read
-- Replicas will be created in the same VPC.
-- - Not specify a DB subnet group. All these Read Replicas will be
-- created outside of any VPC.
cdirrDBSubnetGroupName :: Lens' CreateDBInstanceReadReplica (Maybe Text)
cdirrDBSubnetGroupName = lens _cdirrDBSubnetGroupName (\ s a -> s{_cdirrDBSubnetGroupName = a});
-- | The amount of Provisioned IOPS (input\/output operations per second) to
-- be initially allocated for the DB instance.
cdirrIOPS :: Lens' CreateDBInstanceReadReplica (Maybe Int)
cdirrIOPS = lens _cdirrIOPS (\ s a -> s{_cdirrIOPS = a});
-- | The compute and memory capacity of the Read Replica.
--
-- Valid Values:
-- '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 | db.t2.large'
--
-- Default: Inherits from the source DB instance.
cdirrDBInstanceClass :: Lens' CreateDBInstanceReadReplica (Maybe Text)
cdirrDBInstanceClass = lens _cdirrDBInstanceClass (\ s a -> s{_cdirrDBInstanceClass = a});
-- | The Amazon EC2 Availability Zone that the Read Replica will be created
-- in.
--
-- Default: A random, system-chosen Availability Zone in the endpoint\'s
-- region.
--
-- Example: 'us-east-1d'
cdirrAvailabilityZone :: Lens' CreateDBInstanceReadReplica (Maybe Text)
cdirrAvailabilityZone = lens _cdirrAvailabilityZone (\ s a -> s{_cdirrAvailabilityZone = a});
-- | The option group the DB instance will be associated with. If omitted,
-- the default option group for the engine specified will be used.
cdirrOptionGroupName :: Lens' CreateDBInstanceReadReplica (Maybe Text)
cdirrOptionGroupName = lens _cdirrOptionGroupName (\ s a -> s{_cdirrOptionGroupName = a});
-- | True to copy all tags from the Read Replica to snapshots of the Read
-- Replica; otherwise false. The default is false.
cdirrCopyTagsToSnapshot :: Lens' CreateDBInstanceReadReplica (Maybe Bool)
cdirrCopyTagsToSnapshot = lens _cdirrCopyTagsToSnapshot (\ s a -> s{_cdirrCopyTagsToSnapshot = a});
-- | Undocumented member.
cdirrTags :: Lens' CreateDBInstanceReadReplica [Tag]
cdirrTags = lens _cdirrTags (\ s a -> s{_cdirrTags = a}) . _Default . _Coerce;
-- | The port number that the DB instance uses for connections.
--
-- Default: Inherits from the source DB instance
--
-- Valid Values: '1150-65535'
cdirrPort :: Lens' CreateDBInstanceReadReplica (Maybe Int)
cdirrPort = lens _cdirrPort (\ s a -> s{_cdirrPort = a});
-- | Specifies the storage type to be associated with the Read Replica.
--
-- 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'
cdirrStorageType :: Lens' CreateDBInstanceReadReplica (Maybe Text)
cdirrStorageType = lens _cdirrStorageType (\ s a -> s{_cdirrStorageType = a});
-- | The DB instance identifier of the Read Replica. This identifier is the
-- unique key that identifies a DB instance. This parameter is stored as a
-- lowercase string.
cdirrDBInstanceIdentifier :: Lens' CreateDBInstanceReadReplica Text
cdirrDBInstanceIdentifier = lens _cdirrDBInstanceIdentifier (\ s a -> s{_cdirrDBInstanceIdentifier = a});
-- | The identifier of the DB instance that will act as the source for the
-- Read Replica. Each DB instance can have up to five Read Replicas.
--
-- Constraints:
--
-- - Must be the identifier of an existing DB instance.
-- - Can specify a DB instance that is a MySQL Read Replica only if the
-- source is running MySQL 5.6.
-- - Can specify a DB instance that is a PostgreSQL Read Replica only if
-- the source is running PostgreSQL 9.3.5.
-- - The specified DB instance must have automatic backups enabled, its
-- backup retention period must be greater than 0.
-- - If the source DB instance is in the same region as the Read Replica,
-- specify a valid DB instance identifier.
-- - If the source DB instance is in a different region than the Read
-- Replica, specify a valid DB instance ARN. For more information, go
-- to
-- <http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.ARN Constructing a Amazon RDS Amazon Resource Name (ARN)>.
cdirrSourceDBInstanceIdentifier :: Lens' CreateDBInstanceReadReplica Text
cdirrSourceDBInstanceIdentifier = lens _cdirrSourceDBInstanceIdentifier (\ s a -> s{_cdirrSourceDBInstanceIdentifier = a});
instance AWSRequest CreateDBInstanceReadReplica where
type Rs CreateDBInstanceReadReplica =
CreateDBInstanceReadReplicaResponse
request = postQuery rDS
response
= receiveXMLWrapper
"CreateDBInstanceReadReplicaResult"
(\ s h x ->
CreateDBInstanceReadReplicaResponse' <$>
(x .@? "DBInstance") <*> (pure (fromEnum s)))
instance ToHeaders CreateDBInstanceReadReplica where
toHeaders = const mempty
instance ToPath CreateDBInstanceReadReplica where
toPath = const "/"
instance ToQuery CreateDBInstanceReadReplica where
toQuery CreateDBInstanceReadReplica'{..}
= mconcat
["Action" =:
("CreateDBInstanceReadReplica" :: ByteString),
"Version" =: ("2014-10-31" :: ByteString),
"PubliclyAccessible" =: _cdirrPubliclyAccessible,
"AutoMinorVersionUpgrade" =:
_cdirrAutoMinorVersionUpgrade,
"DBSubnetGroupName" =: _cdirrDBSubnetGroupName,
"Iops" =: _cdirrIOPS,
"DBInstanceClass" =: _cdirrDBInstanceClass,
"AvailabilityZone" =: _cdirrAvailabilityZone,
"OptionGroupName" =: _cdirrOptionGroupName,
"CopyTagsToSnapshot" =: _cdirrCopyTagsToSnapshot,
"Tags" =: toQuery (toQueryList "Tag" <$> _cdirrTags),
"Port" =: _cdirrPort,
"StorageType" =: _cdirrStorageType,
"DBInstanceIdentifier" =: _cdirrDBInstanceIdentifier,
"SourceDBInstanceIdentifier" =:
_cdirrSourceDBInstanceIdentifier]
-- | /See:/ 'createDBInstanceReadReplicaResponse' smart constructor.
data CreateDBInstanceReadReplicaResponse = CreateDBInstanceReadReplicaResponse'
{ _cdirrrsDBInstance :: !(Maybe DBInstance)
, _cdirrrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'CreateDBInstanceReadReplicaResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'cdirrrsDBInstance'
--
-- * 'cdirrrsResponseStatus'
createDBInstanceReadReplicaResponse
:: Int -- ^ 'cdirrrsResponseStatus'
-> CreateDBInstanceReadReplicaResponse
createDBInstanceReadReplicaResponse pResponseStatus_ =
CreateDBInstanceReadReplicaResponse'
{ _cdirrrsDBInstance = Nothing
, _cdirrrsResponseStatus = pResponseStatus_
}
-- | Undocumented member.
cdirrrsDBInstance :: Lens' CreateDBInstanceReadReplicaResponse (Maybe DBInstance)
cdirrrsDBInstance = lens _cdirrrsDBInstance (\ s a -> s{_cdirrrsDBInstance = a});
-- | The response status code.
cdirrrsResponseStatus :: Lens' CreateDBInstanceReadReplicaResponse Int
cdirrrsResponseStatus = lens _cdirrrsResponseStatus (\ s a -> s{_cdirrrsResponseStatus = a});