{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.RDS.CreateDBInstance
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a new 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 an Aurora DB cluster, you can call
-- this operation multiple times to add more than one DB instance to the
-- cluster.
--
-- For more information about creating an RDS DB instance, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html Creating an Amazon RDS DB instance>
-- in the /Amazon RDS User Guide/.
--
-- For more information about creating a DB instance in an Aurora DB
-- cluster, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html Creating an Amazon Aurora DB cluster>
-- in the /Amazon Aurora User Guide/.
module Amazonka.RDS.CreateDBInstance
  ( -- * Creating a Request
    CreateDBInstance (..),
    newCreateDBInstance,

    -- * Request Lenses
    createDBInstance_allocatedStorage,
    createDBInstance_autoMinorVersionUpgrade,
    createDBInstance_availabilityZone,
    createDBInstance_backupRetentionPeriod,
    createDBInstance_backupTarget,
    createDBInstance_cACertificateIdentifier,
    createDBInstance_characterSetName,
    createDBInstance_copyTagsToSnapshot,
    createDBInstance_customIamInstanceProfile,
    createDBInstance_dbClusterIdentifier,
    createDBInstance_dbName,
    createDBInstance_dbParameterGroupName,
    createDBInstance_dbSecurityGroups,
    createDBInstance_dbSubnetGroupName,
    createDBInstance_deletionProtection,
    createDBInstance_domain,
    createDBInstance_domainIAMRoleName,
    createDBInstance_enableCloudwatchLogsExports,
    createDBInstance_enableCustomerOwnedIp,
    createDBInstance_enableIAMDatabaseAuthentication,
    createDBInstance_enablePerformanceInsights,
    createDBInstance_engineVersion,
    createDBInstance_iops,
    createDBInstance_kmsKeyId,
    createDBInstance_licenseModel,
    createDBInstance_manageMasterUserPassword,
    createDBInstance_masterUserPassword,
    createDBInstance_masterUserSecretKmsKeyId,
    createDBInstance_masterUsername,
    createDBInstance_maxAllocatedStorage,
    createDBInstance_monitoringInterval,
    createDBInstance_monitoringRoleArn,
    createDBInstance_multiAZ,
    createDBInstance_ncharCharacterSetName,
    createDBInstance_networkType,
    createDBInstance_optionGroupName,
    createDBInstance_performanceInsightsKMSKeyId,
    createDBInstance_performanceInsightsRetentionPeriod,
    createDBInstance_port,
    createDBInstance_preferredBackupWindow,
    createDBInstance_preferredMaintenanceWindow,
    createDBInstance_processorFeatures,
    createDBInstance_promotionTier,
    createDBInstance_publiclyAccessible,
    createDBInstance_storageEncrypted,
    createDBInstance_storageThroughput,
    createDBInstance_storageType,
    createDBInstance_tags,
    createDBInstance_tdeCredentialArn,
    createDBInstance_tdeCredentialPassword,
    createDBInstance_timezone,
    createDBInstance_vpcSecurityGroupIds,
    createDBInstance_dbInstanceIdentifier,
    createDBInstance_dbInstanceClass,
    createDBInstance_engine,

    -- * Destructuring the Response
    CreateDBInstanceResponse (..),
    newCreateDBInstanceResponse,

    -- * Response Lenses
    createDBInstanceResponse_dbInstance,
    createDBInstanceResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.RDS.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- |
--
-- /See:/ 'newCreateDBInstance' smart constructor.
data CreateDBInstance = CreateDBInstance'
  { -- | The amount of storage in gibibytes (GiB) to allocate for the DB
    -- instance.
    --
    -- Type: Integer
    --
    -- __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.
    --
    -- __Amazon RDS Custom__
    --
    -- Constraints to the amount of storage for each storage type are the
    -- following:
    --
    -- -   General Purpose (SSD) storage (gp2, gp3): Must be an integer from 40
    --     to 65536 for RDS Custom for Oracle, 16384 for RDS Custom for SQL
    --     Server.
    --
    -- -   Provisioned IOPS storage (io1): Must be an integer from 40 to 65536
    --     for RDS Custom for Oracle, 16384 for RDS Custom for SQL Server.
    --
    -- __MySQL__
    --
    -- Constraints to the amount of storage for each storage type are the
    -- following:
    --
    -- -   General Purpose (SSD) storage (gp2, gp3): 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, gp3): 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, gp3): 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, gp3): 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, gp3):
    --
    --     -   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 100 to
    --         16384.
    --
    --     -   Web and Express editions: Must be an integer from 100 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.
    CreateDBInstance -> Maybe Int
allocatedStorage :: Prelude.Maybe Prelude.Int,
    -- | 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.
    --
    -- If you create an RDS Custom DB instance, you must set
    -- @AutoMinorVersionUpgrade@ to @false@.
    CreateDBInstance -> Maybe Bool
autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
    -- | The Availability Zone (AZ) where the database will be created. For
    -- information on Amazon Web Services Regions and Availability Zones, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html Regions and Availability Zones>.
    --
    -- __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
    -- Amazon Web Services Region.
    --
    -- Example: @us-east-1d@
    --
    -- Constraint: 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 Amazon Web Services Region as the current endpoint.
    CreateDBInstance -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | 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
    --
    -- -   Can\'t be set to 0 for an RDS Custom for Oracle DB instance
    CreateDBInstance -> Maybe Int
backupRetentionPeriod :: Prelude.Maybe Prelude.Int,
    -- | Specifies where automated backups and manual snapshots are stored.
    --
    -- Possible values are @outposts@ (Amazon Web Services Outposts) and
    -- @region@ (Amazon Web Services Region). The default is @region@.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html Working with Amazon RDS on Amazon Web Services Outposts>
    -- in the /Amazon RDS User Guide/.
    CreateDBInstance -> Maybe Text
backupTarget :: Prelude.Maybe Prelude.Text,
    -- | Specifies the CA certificate identifier to use for the DB instance’s
    -- server certificate.
    --
    -- This setting doesn\'t apply to RDS Custom.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html Using SSL\/TLS to encrypt a connection to a DB instance>
    -- in the /Amazon RDS User Guide/ and
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html Using SSL\/TLS to encrypt a connection to a DB cluster>
    -- in the /Amazon Aurora User Guide/.
    CreateDBInstance -> Maybe Text
cACertificateIdentifier :: Prelude.Maybe Prelude.Text,
    -- | For supported engines, this value indicates that the DB instance should
    -- be associated with the specified @CharacterSet@.
    --
    -- This setting doesn\'t apply to RDS Custom. However, if you need to
    -- change the character set, you can change it on the database itself.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. The character set is managed by the DB cluster. For more
    -- information, see @CreateDBCluster@.
    CreateDBInstance -> Maybe Text
characterSetName :: Prelude.Maybe Prelude.Text,
    -- | A value that indicates whether to copy tags from the DB instance to
    -- snapshots of the DB instance. By default, tags are not copied.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. 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.
    CreateDBInstance -> Maybe Bool
copyTagsToSnapshot :: Prelude.Maybe Prelude.Bool,
    -- | The instance profile associated with the underlying Amazon EC2 instance
    -- of an RDS Custom DB instance. The instance profile must meet the
    -- following requirements:
    --
    -- -   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
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc Configure IAM and your VPC>
    -- in the /Amazon RDS User Guide/.
    --
    -- This setting is required for RDS Custom.
    CreateDBInstance -> Maybe Text
customIamInstanceProfile :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the DB cluster that the instance will belong to.
    --
    -- This setting doesn\'t apply to RDS Custom.
    CreateDBInstance -> Maybe Text
dbClusterIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The meaning of this parameter differs according to the database engine
    -- you use.
    --
    -- __MySQL__
    --
    -- The name of the database to create when the DB instance is created. If
    -- this parameter isn\'t specified, no database is created in the DB
    -- instance.
    --
    -- Constraints:
    --
    -- -   Must contain 1 to 64 letters or numbers.
    --
    -- -   Must begin with a letter. Subsequent characters can be letters,
    --     underscores, or digits (0-9).
    --
    -- -   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 isn\'t specified, no database is created in the DB
    -- instance.
    --
    -- Constraints:
    --
    -- -   Must contain 1 to 64 letters or numbers.
    --
    -- -   Must begin with a letter. Subsequent characters can be letters,
    --     underscores, or digits (0-9).
    --
    -- -   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 isn\'t specified, a database named @postgres@ is created
    -- in the DB instance.
    --
    -- Constraints:
    --
    -- -   Must contain 1 to 63 letters, numbers, or underscores.
    --
    -- -   Must begin with a letter. Subsequent characters can be letters,
    --     underscores, or digits (0-9).
    --
    -- -   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
    --
    -- __Amazon RDS Custom for Oracle__
    --
    -- The Oracle System ID (SID) of the created RDS Custom DB instance. If you
    -- don\'t specify a value, the default value is @ORCL@.
    --
    -- Default: @ORCL@
    --
    -- Constraints:
    --
    -- -   It must contain 1 to 8 alphanumeric characters.
    --
    -- -   It must contain a letter.
    --
    -- -   It can\'t be a word reserved by the database engine.
    --
    -- __Amazon RDS Custom for SQL Server__
    --
    -- Not applicable. Must be null.
    --
    -- __SQL Server__
    --
    -- Not applicable. Must be null.
    --
    -- __Amazon Aurora MySQL__
    --
    -- The name of the database to create when the primary DB instance of the
    -- Aurora MySQL DB cluster is created. If this parameter isn\'t specified
    -- for an Aurora MySQL DB cluster, no database is created in the DB
    -- cluster.
    --
    -- Constraints:
    --
    -- -   It must contain 1 to 64 alphanumeric characters.
    --
    -- -   It can\'t be a word reserved by the database engine.
    --
    -- __Amazon Aurora PostgreSQL__
    --
    -- The name of the database to create when the primary DB instance of the
    -- Aurora PostgreSQL DB cluster is created. If this parameter isn\'t
    -- specified for an Aurora PostgreSQL DB cluster, a database named
    -- @postgres@ is created in the DB cluster.
    --
    -- Constraints:
    --
    -- -   It must contain 1 to 63 alphanumeric characters.
    --
    -- -   It must begin with a letter. Subsequent characters can be letters,
    --     underscores, or digits (0 to 9).
    --
    -- -   It can\'t be a word reserved by the database engine.
    CreateDBInstance -> Maybe Text
dbName :: Prelude.Maybe Prelude.Text,
    -- | The name of the DB parameter group to associate with this DB instance.
    -- If you do not specify a value, then the default DB parameter group for
    -- the specified DB engine and version is used.
    --
    -- This setting doesn\'t apply to RDS Custom.
    --
    -- Constraints:
    --
    -- -   It must be 1 to 255 letters, numbers, or hyphens.
    --
    -- -   The first character must be a letter.
    --
    -- -   It can\'t end with a hyphen or contain two consecutive hyphens.
    CreateDBInstance -> Maybe Text
dbParameterGroupName :: Prelude.Maybe Prelude.Text,
    -- | A list of DB security groups to associate with this DB instance.
    --
    -- This setting applies to the legacy EC2-Classic platform, which is no
    -- longer used to create new DB instances. Use the @VpcSecurityGroupIds@
    -- setting instead.
    CreateDBInstance -> Maybe [Text]
dbSecurityGroups :: Prelude.Maybe [Prelude.Text],
    -- | A DB subnet group to associate with this DB instance.
    --
    -- Constraints: Must match the name of an existing DBSubnetGroup. Must not
    -- be default.
    --
    -- Example: @mydbsubnetgroup@
    CreateDBInstance -> Maybe Text
dbSubnetGroupName :: Prelude.Maybe Prelude.Text,
    -- | 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 isn\'t enabled. For more
    -- information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html Deleting a DB Instance>.
    --
    -- __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.
    CreateDBInstance -> Maybe Bool
deletionProtection :: Prelude.Maybe Prelude.Bool,
    -- | The Active Directory directory ID to create the DB instance in.
    -- Currently, only MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB
    -- instances can be created in an Active Directory Domain.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html Kerberos Authentication>
    -- in the /Amazon RDS User Guide/.
    --
    -- This setting doesn\'t apply to RDS Custom.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. The domain is managed by the DB cluster.
    CreateDBInstance -> Maybe Text
domain :: Prelude.Maybe Prelude.Text,
    -- | Specify the name of the IAM role to be used when making API calls to the
    -- Directory Service.
    --
    -- This setting doesn\'t apply to RDS Custom.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. The domain is managed by the DB cluster.
    CreateDBInstance -> Maybe Text
domainIAMRoleName :: Prelude.Maybe Prelude.Text,
    -- | 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. For
    -- more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch Publishing Database Logs to Amazon CloudWatch Logs>
    -- in the /Amazon RDS User Guide/.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. CloudWatch Logs exports are managed by the DB cluster.
    --
    -- __RDS Custom__
    --
    -- Not applicable.
    --
    -- __MariaDB__
    --
    -- Possible values are @audit@, @error@, @general@, and @slowquery@.
    --
    -- __Microsoft SQL Server__
    --
    -- Possible values are @agent@ and @error@.
    --
    -- __MySQL__
    --
    -- Possible values are @audit@, @error@, @general@, and @slowquery@.
    --
    -- __Oracle__
    --
    -- Possible values are @alert@, @audit@, @listener@, @trace@, and
    -- @oemagent@.
    --
    -- __PostgreSQL__
    --
    -- Possible values are @postgresql@ and @upgrade@.
    CreateDBInstance -> Maybe [Text]
enableCloudwatchLogsExports :: Prelude.Maybe [Prelude.Text],
    -- | A value that indicates whether to enable a customer-owned IP address
    -- (CoIP) for an RDS on Outposts DB instance.
    --
    -- A /CoIP/ provides local or external connectivity to resources in your
    -- Outpost subnets through your on-premises network. For some use cases, a
    -- CoIP can provide lower latency for connections to the DB instance from
    -- outside of its virtual private cloud (VPC) on your local network.
    --
    -- For more information about RDS on Outposts, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html Working with Amazon RDS on Amazon Web Services Outposts>
    -- in the /Amazon RDS User Guide/.
    --
    -- For more information about CoIPs, see
    -- <https://docs.aws.amazon.com/outposts/latest/userguide/routing.html#ip-addressing Customer-owned IP addresses>
    -- in the /Amazon Web Services Outposts User Guide/.
    CreateDBInstance -> Maybe Bool
enableCustomerOwnedIp :: Prelude.Maybe Prelude.Bool,
    -- | A value that indicates whether to enable mapping of Amazon Web Services
    -- Identity and Access Management (IAM) accounts to database accounts. By
    -- default, mapping isn\'t enabled.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html IAM Database Authentication for MySQL and PostgreSQL>
    -- in the /Amazon RDS User Guide/.
    --
    -- This setting doesn\'t apply to RDS Custom.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. Mapping Amazon Web Services IAM accounts to database
    -- accounts is managed by the DB cluster.
    CreateDBInstance -> Maybe Bool
enableIAMDatabaseAuthentication :: Prelude.Maybe Prelude.Bool,
    -- | A value that indicates whether to enable Performance Insights for the DB
    -- instance. For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html Using Amazon Performance Insights>
    -- in the /Amazon RDS User Guide/.
    --
    -- This setting doesn\'t apply to RDS Custom.
    CreateDBInstance -> Maybe Bool
enablePerformanceInsights :: Prelude.Maybe Prelude.Bool,
    -- | The version number of the database engine to use.
    --
    -- For a list of valid engine versions, use the @DescribeDBEngineVersions@
    -- operation.
    --
    -- 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 Amazon Web Services 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.
    --
    -- __Amazon RDS Custom for Oracle__
    --
    -- A custom engine version (CEV) that you have previously created. This
    -- setting is required for RDS Custom for Oracle. The CEV name has the
    -- following format: 19./customized_string/. A valid CEV name is
    -- @19.my_cev1@. For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.create Creating an RDS Custom for Oracle DB instance>
    -- in the /Amazon RDS User Guide/.
    --
    -- __Amazon RDS Custom for SQL Server__
    --
    -- See
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-reqs-limits-MS.html RDS Custom for SQL Server general requirements>
    -- in the /Amazon RDS User Guide/.
    --
    -- __MariaDB__
    --
    -- For information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt MariaDB on Amazon RDS Versions>
    -- in the /Amazon RDS User Guide/.
    --
    -- __Microsoft SQL Server__
    --
    -- For information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport Microsoft SQL Server Versions on Amazon RDS>
    -- in the /Amazon RDS User Guide/.
    --
    -- __MySQL__
    --
    -- For information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt MySQL on Amazon RDS Versions>
    -- in the /Amazon RDS User Guide/.
    --
    -- __Oracle__
    --
    -- For information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html Oracle Database Engine Release Notes>
    -- in the /Amazon RDS User Guide/.
    --
    -- __PostgreSQL__
    --
    -- For information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts Amazon RDS for PostgreSQL versions and extensions>
    -- in the /Amazon RDS User Guide/.
    CreateDBInstance -> Maybe Text
engineVersion :: Prelude.Maybe Prelude.Text,
    -- | The amount of Provisioned IOPS (input\/output operations per second) to
    -- be initially allocated for the DB instance. For information about valid
    -- IOPS values, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html Amazon RDS DB instance storage>
    -- in the /Amazon RDS User Guide/.
    --
    -- Constraints: For MariaDB, MySQL, Oracle, and PostgreSQL DB instances,
    -- must be a multiple between .5 and 50 of the storage amount for the DB
    -- instance. For SQL Server DB instances, must be a multiple between 1 and
    -- 50 of the storage amount for the DB instance.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. Storage is managed by the DB cluster.
    CreateDBInstance -> Maybe Int
iops :: Prelude.Maybe Prelude.Int,
    -- | The Amazon Web Services KMS key identifier for an encrypted DB instance.
    --
    -- The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
    -- ARN, or alias name for the KMS key. To use a KMS key in a different
    -- Amazon Web Services account, specify the key ARN or alias ARN.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. The Amazon Web Services KMS key identifier is managed by
    -- the DB cluster. For more information, see @CreateDBCluster@.
    --
    -- If @StorageEncrypted@ is enabled, and you do not specify a value for the
    -- @KmsKeyId@ parameter, then Amazon RDS uses your default KMS key. There
    -- is a default KMS key for your Amazon Web Services account. Your Amazon
    -- Web Services account has a different default KMS key for each Amazon Web
    -- Services Region.
    --
    -- __Amazon RDS Custom__
    --
    -- A KMS key is required for RDS Custom instances. For most RDS engines, if
    -- you leave this parameter empty while enabling @StorageEncrypted@, the
    -- engine uses the default KMS key. However, RDS Custom doesn\'t use the
    -- default key when this parameter is empty. You must explicitly specify a
    -- key.
    CreateDBInstance -> Maybe Text
kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | License model information for this DB instance.
    --
    -- Valid values: @license-included@ | @bring-your-own-license@ |
    -- @general-public-license@
    --
    -- This setting doesn\'t apply to RDS Custom.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable.
    CreateDBInstance -> Maybe Text
licenseModel :: Prelude.Maybe Prelude.Text,
    -- | A value that indicates whether to manage the master user password with
    -- Amazon Web Services Secrets Manager.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html Password management with Amazon Web Services Secrets Manager>
    -- in the /Amazon RDS User Guide./
    --
    -- Constraints:
    --
    -- -   Can\'t manage the master user password with Amazon Web Services
    --     Secrets Manager if @MasterUserPassword@ is specified.
    CreateDBInstance -> Maybe Bool
manageMasterUserPassword :: Prelude.Maybe Prelude.Bool,
    -- | 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.
    --
    -- Constraints: Can\'t be specified if @ManageMasterUserPassword@ is turned
    -- on.
    --
    -- __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.
    CreateDBInstance -> Maybe Text
masterUserPassword :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services KMS key identifier to encrypt a secret that is
    -- automatically generated and managed in Amazon Web Services Secrets
    -- Manager.
    --
    -- This setting is valid only if the master user password is managed by RDS
    -- in Amazon Web Services Secrets Manager for the DB instance.
    --
    -- The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
    -- ARN, or alias name for the KMS key. To use a KMS key in a different
    -- Amazon Web Services account, specify the key ARN or alias ARN.
    --
    -- If you don\'t specify @MasterUserSecretKmsKeyId@, then the
    -- @aws\/secretsmanager@ KMS key is used to encrypt the secret. If the
    -- secret is in a different Amazon Web Services account, then you can\'t
    -- use the @aws\/secretsmanager@ KMS key to encrypt the secret, and you
    -- must use a customer managed KMS key.
    --
    -- There is a default KMS key for your Amazon Web Services account. Your
    -- Amazon Web Services account has a different default KMS key for each
    -- Amazon Web Services Region.
    CreateDBInstance -> Maybe Text
masterUserSecretKmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | The name for the master user.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. The name for the master user is managed by the DB
    -- cluster.
    --
    -- __Amazon RDS__
    --
    -- Constraints:
    --
    -- -   Required.
    --
    -- -   Must be 1 to 16 letters, numbers, or underscores.
    --
    -- -   First character must be a letter.
    --
    -- -   Can\'t be a reserved word for the chosen database engine.
    CreateDBInstance -> Maybe Text
masterUsername :: Prelude.Maybe Prelude.Text,
    -- | 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
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling Managing capacity automatically with Amazon RDS storage autoscaling>
    -- in the /Amazon RDS User Guide/.
    --
    -- This setting doesn\'t apply to RDS Custom.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. Storage is managed by the DB cluster.
    CreateDBInstance -> Maybe Int
maxAllocatedStorage :: Prelude.Maybe Prelude.Int,
    -- | 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@
    CreateDBInstance -> Maybe Int
monitoringInterval :: Prelude.Maybe Prelude.Int,
    -- | 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
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling Setting Up and Enabling Enhanced Monitoring>
    -- 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.
    CreateDBInstance -> Maybe Text
monitoringRoleArn :: Prelude.Maybe Prelude.Text,
    -- | A value that indicates whether the DB instance is a Multi-AZ deployment.
    -- You can\'t set the @AvailabilityZone@ parameter if the DB instance is a
    -- Multi-AZ deployment.
    --
    -- This setting doesn\'t apply to RDS Custom.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. DB instance Availability Zones (AZs) are managed by the
    -- DB cluster.
    CreateDBInstance -> Maybe Bool
multiAZ :: Prelude.Maybe Prelude.Bool,
    -- | The name of the NCHAR character set for the Oracle DB instance.
    --
    -- This parameter doesn\'t apply to RDS Custom.
    CreateDBInstance -> Maybe Text
ncharCharacterSetName :: Prelude.Maybe Prelude.Text,
    -- | 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 the IPv6 protocols (@DUAL@).
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html Working with a DB instance in a VPC>
    -- in the /Amazon RDS User Guide./
    CreateDBInstance -> Maybe Text
networkType :: Prelude.Maybe Prelude.Text,
    -- | A value that 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 after it is associated with a DB
    -- instance.
    --
    -- This setting doesn\'t apply to RDS Custom.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable.
    CreateDBInstance -> Maybe Text
optionGroupName :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services KMS key identifier for encryption of Performance
    -- Insights data.
    --
    -- The Amazon Web Services 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 Amazon Web Services account. Your Amazon Web Services account has a
    -- different default KMS key for each Amazon Web Services Region.
    --
    -- This setting doesn\'t apply to RDS Custom.
    CreateDBInstance -> Maybe Text
performanceInsightsKMSKeyId :: Prelude.Maybe Prelude.Text,
    -- | The number of days to retain Performance Insights data. The default is 7
    -- days. The following values are valid:
    --
    -- -   7
    --
    -- -   /month/ * 31, where /month/ is a number of months from 1-23
    --
    -- -   731
    --
    -- For example, the following values are valid:
    --
    -- -   93 (3 months * 31)
    --
    -- -   341 (11 months * 31)
    --
    -- -   589 (19 months * 31)
    --
    -- -   731
    --
    -- If you specify a retention period such as 94, which isn\'t a valid
    -- value, RDS issues an error.
    --
    -- This setting doesn\'t apply to RDS Custom.
    CreateDBInstance -> Maybe Int
performanceInsightsRetentionPeriod :: Prelude.Maybe Prelude.Int,
    -- | The port number on which the database accepts connections.
    --
    -- __MySQL__
    --
    -- Default: @3306@
    --
    -- Valid values: @1150-65535@
    --
    -- Type: Integer
    --
    -- __MariaDB__
    --
    -- 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 @1234@, @1434@, @3260@, @3343@,
    -- @3389@, @47001@, and @49152-49156@.
    --
    -- __Amazon Aurora__
    --
    -- Default: @3306@
    --
    -- Valid values: @1150-65535@
    --
    -- Type: Integer
    CreateDBInstance -> Maybe Int
port :: Prelude.Maybe Prelude.Int,
    -- | The daily time range during which automated backups are created if
    -- automated backups are enabled, using the @BackupRetentionPeriod@
    -- parameter. The default is a 30-minute window selected at random from an
    -- 8-hour block of time for each Amazon Web Services Region. For more
    -- information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow Backup window>
    -- in the /Amazon RDS User Guide/.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. The daily time range for creating automated backups is
    -- managed by the DB cluster.
    --
    -- 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.
    CreateDBInstance -> Maybe Text
preferredBackupWindow :: Prelude.Maybe Prelude.Text,
    -- | The time range each week during which system maintenance can occur, in
    -- Universal Coordinated Time (UTC). For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance Amazon RDS Maintenance Window>.
    --
    -- 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 Amazon Web Services Region, occurring on a random
    -- day of the week.
    --
    -- Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
    --
    -- Constraints: Minimum 30-minute window.
    CreateDBInstance -> Maybe Text
preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
    -- | 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 RDS Custom.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable.
    CreateDBInstance -> Maybe [ProcessorFeature]
processorFeatures :: Prelude.Maybe [ProcessorFeature],
    -- | A value that specifies the order in which an Aurora Replica is promoted
    -- to the primary instance after a failure of the existing primary
    -- instance. For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.FaultTolerance Fault Tolerance for an Aurora DB Cluster>
    -- in the /Amazon Aurora User Guide/.
    --
    -- This setting doesn\'t apply to RDS Custom.
    --
    -- Default: 1
    --
    -- Valid Values: 0 - 15
    CreateDBInstance -> Maybe Int
promotionTier :: Prelude.Maybe Prelude.Int,
    -- | A value that indicates whether the DB instance is publicly accessible.
    --
    -- When the DB instance is publicly accessible, its Domain Name System
    -- (DNS) endpoint resolves to the private IP address from within the DB
    -- instance\'s virtual private cloud (VPC). It resolves to the public IP
    -- address from outside of the DB instance\'s VPC. Access to the DB
    -- instance is ultimately controlled by the security group it uses. That
    -- public access is not permitted if the security group assigned to the DB
    -- instance doesn\'t permit it.
    --
    -- When the DB instance isn\'t publicly accessible, it is an internal DB
    -- instance with a DNS name that resolves to a private IP address.
    --
    -- 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 instance is private.
    --
    -- -   If the default VPC in the target Region has an internet gateway
    --     attached to it, the DB instance 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 instance is private.
    --
    -- -   If the subnets are part of a VPC that has an internet gateway
    --     attached to it, the DB instance is public.
    CreateDBInstance -> Maybe Bool
publiclyAccessible :: Prelude.Maybe Prelude.Bool,
    -- | A value that indicates whether the DB instance is encrypted. By default,
    -- it isn\'t encrypted.
    --
    -- For RDS Custom instances, either set this parameter to @true@ or leave
    -- it unset. If you set this parameter to @false@, RDS reports an error.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. The encryption for DB instances is managed by the DB
    -- cluster.
    CreateDBInstance -> Maybe Bool
storageEncrypted :: Prelude.Maybe Prelude.Bool,
    -- | 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.
    CreateDBInstance -> Maybe Int
storageThroughput :: Prelude.Maybe Prelude.Int,
    -- | Specifies the storage type to be associated with the DB instance.
    --
    -- Valid values: @gp2 | gp3 | io1 | standard@
    --
    -- 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@
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. Storage is managed by the DB cluster.
    CreateDBInstance -> Maybe Text
storageType :: Prelude.Maybe Prelude.Text,
    -- | Tags to assign to the DB instance.
    CreateDBInstance -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The ARN from the key store with which to associate the instance for TDE
    -- encryption.
    --
    -- This setting doesn\'t apply to RDS Custom.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable.
    CreateDBInstance -> Maybe Text
tdeCredentialArn :: Prelude.Maybe Prelude.Text,
    -- | The password for the given ARN from the key store in order to access the
    -- device.
    --
    -- This setting doesn\'t apply to RDS Custom.
    CreateDBInstance -> Maybe Text
tdeCredentialPassword :: Prelude.Maybe Prelude.Text,
    -- | The time zone of the DB instance. The time zone parameter is currently
    -- supported only by
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone Microsoft SQL Server>.
    CreateDBInstance -> Maybe Text
timezone :: Prelude.Maybe Prelude.Text,
    -- | A list of Amazon EC2 VPC security groups to associate with this DB
    -- instance.
    --
    -- __Amazon Aurora__
    --
    -- Not applicable. The associated list of EC2 VPC security groups is
    -- managed by the DB cluster.
    --
    -- Default: The default EC2 VPC security group for the DB subnet group\'s
    -- VPC.
    CreateDBInstance -> Maybe [Text]
vpcSecurityGroupIds :: Prelude.Maybe [Prelude.Text],
    -- | The DB instance 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: @mydbinstance@
    CreateDBInstance -> Text
dbInstanceIdentifier :: Prelude.Text,
    -- | The compute and memory capacity of the DB instance, for example
    -- db.m5.large. Not all DB instance classes are available in all Amazon Web
    -- Services Regions, or for all database engines. For the full list of DB
    -- instance classes, and availability for your engine, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html DB instance classes>
    -- in the /Amazon RDS User Guide/ or
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html Aurora DB instance classes>
    -- in the /Amazon Aurora User Guide/.
    CreateDBInstance -> Text
dbInstanceClass :: Prelude.Text,
    -- | The name of the database engine to be used for this instance.
    --
    -- Not every database engine is available for every Amazon Web Services
    -- Region.
    --
    -- Valid Values:
    --
    -- -   @aurora@ (for MySQL 5.6-compatible Aurora)
    --
    -- -   @aurora-mysql@ (for MySQL 5.7-compatible and MySQL 8.0-compatible
    --     Aurora)
    --
    -- -   @aurora-postgresql@
    --
    -- -   @custom-oracle-ee (for RDS Custom for Oracle instances)@
    --
    -- -   @custom-sqlserver-ee (for RDS Custom for SQL Server instances)@
    --
    -- -   @custom-sqlserver-se (for RDS Custom for SQL Server instances)@
    --
    -- -   @custom-sqlserver-web (for RDS Custom for SQL Server instances)@
    --
    -- -   @mariadb@
    --
    -- -   @mysql@
    --
    -- -   @oracle-ee@
    --
    -- -   @oracle-ee-cdb@
    --
    -- -   @oracle-se2@
    --
    -- -   @oracle-se2-cdb@
    --
    -- -   @postgres@
    --
    -- -   @sqlserver-ee@
    --
    -- -   @sqlserver-se@
    --
    -- -   @sqlserver-ex@
    --
    -- -   @sqlserver-web@
    CreateDBInstance -> Text
engine :: Prelude.Text
  }
  deriving (CreateDBInstance -> CreateDBInstance -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateDBInstance -> CreateDBInstance -> Bool
$c/= :: CreateDBInstance -> CreateDBInstance -> Bool
== :: CreateDBInstance -> CreateDBInstance -> Bool
$c== :: CreateDBInstance -> CreateDBInstance -> Bool
Prelude.Eq, ReadPrec [CreateDBInstance]
ReadPrec CreateDBInstance
Int -> ReadS CreateDBInstance
ReadS [CreateDBInstance]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateDBInstance]
$creadListPrec :: ReadPrec [CreateDBInstance]
readPrec :: ReadPrec CreateDBInstance
$creadPrec :: ReadPrec CreateDBInstance
readList :: ReadS [CreateDBInstance]
$creadList :: ReadS [CreateDBInstance]
readsPrec :: Int -> ReadS CreateDBInstance
$creadsPrec :: Int -> ReadS CreateDBInstance
Prelude.Read, Int -> CreateDBInstance -> ShowS
[CreateDBInstance] -> ShowS
CreateDBInstance -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateDBInstance] -> ShowS
$cshowList :: [CreateDBInstance] -> ShowS
show :: CreateDBInstance -> String
$cshow :: CreateDBInstance -> String
showsPrec :: Int -> CreateDBInstance -> ShowS
$cshowsPrec :: Int -> CreateDBInstance -> ShowS
Prelude.Show, forall x. Rep CreateDBInstance x -> CreateDBInstance
forall x. CreateDBInstance -> Rep CreateDBInstance x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateDBInstance x -> CreateDBInstance
$cfrom :: forall x. CreateDBInstance -> Rep CreateDBInstance x
Prelude.Generic)

-- |
-- Create a value of 'CreateDBInstance' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'allocatedStorage', 'createDBInstance_allocatedStorage' - The amount of storage in gibibytes (GiB) to allocate for the DB
-- instance.
--
-- Type: Integer
--
-- __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.
--
-- __Amazon RDS Custom__
--
-- Constraints to the amount of storage for each storage type are the
-- following:
--
-- -   General Purpose (SSD) storage (gp2, gp3): Must be an integer from 40
--     to 65536 for RDS Custom for Oracle, 16384 for RDS Custom for SQL
--     Server.
--
-- -   Provisioned IOPS storage (io1): Must be an integer from 40 to 65536
--     for RDS Custom for Oracle, 16384 for RDS Custom for SQL Server.
--
-- __MySQL__
--
-- Constraints to the amount of storage for each storage type are the
-- following:
--
-- -   General Purpose (SSD) storage (gp2, gp3): 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, gp3): 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, gp3): 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, gp3): 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, gp3):
--
--     -   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 100 to
--         16384.
--
--     -   Web and Express editions: Must be an integer from 100 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.
--
-- 'autoMinorVersionUpgrade', 'createDBInstance_autoMinorVersionUpgrade' - 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.
--
-- If you create an RDS Custom DB instance, you must set
-- @AutoMinorVersionUpgrade@ to @false@.
--
-- 'availabilityZone', 'createDBInstance_availabilityZone' - The Availability Zone (AZ) where the database will be created. For
-- information on Amazon Web Services Regions and Availability Zones, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html Regions and Availability Zones>.
--
-- __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
-- Amazon Web Services Region.
--
-- Example: @us-east-1d@
--
-- Constraint: 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 Amazon Web Services Region as the current endpoint.
--
-- 'backupRetentionPeriod', 'createDBInstance_backupRetentionPeriod' - 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
--
-- -   Can\'t be set to 0 for an RDS Custom for Oracle DB instance
--
-- 'backupTarget', 'createDBInstance_backupTarget' - Specifies where automated backups and manual snapshots are stored.
--
-- Possible values are @outposts@ (Amazon Web Services Outposts) and
-- @region@ (Amazon Web Services Region). The default is @region@.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html Working with Amazon RDS on Amazon Web Services Outposts>
-- in the /Amazon RDS User Guide/.
--
-- 'cACertificateIdentifier', 'createDBInstance_cACertificateIdentifier' - Specifies the CA certificate identifier to use for the DB instance’s
-- server certificate.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html Using SSL\/TLS to encrypt a connection to a DB instance>
-- in the /Amazon RDS User Guide/ and
-- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html Using SSL\/TLS to encrypt a connection to a DB cluster>
-- in the /Amazon Aurora User Guide/.
--
-- 'characterSetName', 'createDBInstance_characterSetName' - For supported engines, this value indicates that the DB instance should
-- be associated with the specified @CharacterSet@.
--
-- This setting doesn\'t apply to RDS Custom. However, if you need to
-- change the character set, you can change it on the database itself.
--
-- __Amazon Aurora__
--
-- Not applicable. The character set is managed by the DB cluster. For more
-- information, see @CreateDBCluster@.
--
-- 'copyTagsToSnapshot', 'createDBInstance_copyTagsToSnapshot' - A value that indicates whether to copy tags from the DB instance to
-- snapshots of the DB instance. By default, tags are not copied.
--
-- __Amazon Aurora__
--
-- Not applicable. 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.
--
-- 'customIamInstanceProfile', 'createDBInstance_customIamInstanceProfile' - The instance profile associated with the underlying Amazon EC2 instance
-- of an RDS Custom DB instance. The instance profile must meet the
-- following requirements:
--
-- -   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
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc Configure IAM and your VPC>
-- in the /Amazon RDS User Guide/.
--
-- This setting is required for RDS Custom.
--
-- 'dbClusterIdentifier', 'createDBInstance_dbClusterIdentifier' - The identifier of the DB cluster that the instance will belong to.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- 'dbName', 'createDBInstance_dbName' - The meaning of this parameter differs according to the database engine
-- you use.
--
-- __MySQL__
--
-- The name of the database to create when the DB instance is created. If
-- this parameter isn\'t specified, no database is created in the DB
-- instance.
--
-- Constraints:
--
-- -   Must contain 1 to 64 letters or numbers.
--
-- -   Must begin with a letter. Subsequent characters can be letters,
--     underscores, or digits (0-9).
--
-- -   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 isn\'t specified, no database is created in the DB
-- instance.
--
-- Constraints:
--
-- -   Must contain 1 to 64 letters or numbers.
--
-- -   Must begin with a letter. Subsequent characters can be letters,
--     underscores, or digits (0-9).
--
-- -   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 isn\'t specified, a database named @postgres@ is created
-- in the DB instance.
--
-- Constraints:
--
-- -   Must contain 1 to 63 letters, numbers, or underscores.
--
-- -   Must begin with a letter. Subsequent characters can be letters,
--     underscores, or digits (0-9).
--
-- -   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
--
-- __Amazon RDS Custom for Oracle__
--
-- The Oracle System ID (SID) of the created RDS Custom DB instance. If you
-- don\'t specify a value, the default value is @ORCL@.
--
-- Default: @ORCL@
--
-- Constraints:
--
-- -   It must contain 1 to 8 alphanumeric characters.
--
-- -   It must contain a letter.
--
-- -   It can\'t be a word reserved by the database engine.
--
-- __Amazon RDS Custom for SQL Server__
--
-- Not applicable. Must be null.
--
-- __SQL Server__
--
-- Not applicable. Must be null.
--
-- __Amazon Aurora MySQL__
--
-- The name of the database to create when the primary DB instance of the
-- Aurora MySQL DB cluster is created. If this parameter isn\'t specified
-- for an Aurora MySQL DB cluster, no database is created in the DB
-- cluster.
--
-- Constraints:
--
-- -   It must contain 1 to 64 alphanumeric characters.
--
-- -   It can\'t be a word reserved by the database engine.
--
-- __Amazon Aurora PostgreSQL__
--
-- The name of the database to create when the primary DB instance of the
-- Aurora PostgreSQL DB cluster is created. If this parameter isn\'t
-- specified for an Aurora PostgreSQL DB cluster, a database named
-- @postgres@ is created in the DB cluster.
--
-- Constraints:
--
-- -   It must contain 1 to 63 alphanumeric characters.
--
-- -   It must begin with a letter. Subsequent characters can be letters,
--     underscores, or digits (0 to 9).
--
-- -   It can\'t be a word reserved by the database engine.
--
-- 'dbParameterGroupName', 'createDBInstance_dbParameterGroupName' - The name of the DB parameter group to associate with this DB instance.
-- If you do not specify a value, then the default DB parameter group for
-- the specified DB engine and version is used.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- Constraints:
--
-- -   It must be 1 to 255 letters, numbers, or hyphens.
--
-- -   The first character must be a letter.
--
-- -   It can\'t end with a hyphen or contain two consecutive hyphens.
--
-- 'dbSecurityGroups', 'createDBInstance_dbSecurityGroups' - A list of DB security groups to associate with this DB instance.
--
-- This setting applies to the legacy EC2-Classic platform, which is no
-- longer used to create new DB instances. Use the @VpcSecurityGroupIds@
-- setting instead.
--
-- 'dbSubnetGroupName', 'createDBInstance_dbSubnetGroupName' - A DB subnet group to associate with this DB instance.
--
-- Constraints: Must match the name of an existing DBSubnetGroup. Must not
-- be default.
--
-- Example: @mydbsubnetgroup@
--
-- 'deletionProtection', 'createDBInstance_deletionProtection' - 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 isn\'t enabled. For more
-- information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html Deleting a DB Instance>.
--
-- __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.
--
-- 'domain', 'createDBInstance_domain' - The Active Directory directory ID to create the DB instance in.
-- Currently, only MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB
-- instances can be created in an Active Directory Domain.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html Kerberos Authentication>
-- in the /Amazon RDS User Guide/.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable. The domain is managed by the DB cluster.
--
-- 'domainIAMRoleName', 'createDBInstance_domainIAMRoleName' - Specify the name of the IAM role to be used when making API calls to the
-- Directory Service.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable. The domain is managed by the DB cluster.
--
-- 'enableCloudwatchLogsExports', 'createDBInstance_enableCloudwatchLogsExports' - 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. For
-- more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch Publishing Database Logs to Amazon CloudWatch Logs>
-- in the /Amazon RDS User Guide/.
--
-- __Amazon Aurora__
--
-- Not applicable. CloudWatch Logs exports are managed by the DB cluster.
--
-- __RDS Custom__
--
-- Not applicable.
--
-- __MariaDB__
--
-- Possible values are @audit@, @error@, @general@, and @slowquery@.
--
-- __Microsoft SQL Server__
--
-- Possible values are @agent@ and @error@.
--
-- __MySQL__
--
-- Possible values are @audit@, @error@, @general@, and @slowquery@.
--
-- __Oracle__
--
-- Possible values are @alert@, @audit@, @listener@, @trace@, and
-- @oemagent@.
--
-- __PostgreSQL__
--
-- Possible values are @postgresql@ and @upgrade@.
--
-- 'enableCustomerOwnedIp', 'createDBInstance_enableCustomerOwnedIp' - A value that indicates whether to enable a customer-owned IP address
-- (CoIP) for an RDS on Outposts DB instance.
--
-- A /CoIP/ provides local or external connectivity to resources in your
-- Outpost subnets through your on-premises network. For some use cases, a
-- CoIP can provide lower latency for connections to the DB instance from
-- outside of its virtual private cloud (VPC) on your local network.
--
-- For more information about RDS on Outposts, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html Working with Amazon RDS on Amazon Web Services Outposts>
-- in the /Amazon RDS User Guide/.
--
-- For more information about CoIPs, see
-- <https://docs.aws.amazon.com/outposts/latest/userguide/routing.html#ip-addressing Customer-owned IP addresses>
-- in the /Amazon Web Services Outposts User Guide/.
--
-- 'enableIAMDatabaseAuthentication', 'createDBInstance_enableIAMDatabaseAuthentication' - A value that indicates whether to enable mapping of Amazon Web Services
-- Identity and Access Management (IAM) accounts to database accounts. By
-- default, mapping isn\'t enabled.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html IAM Database Authentication for MySQL and PostgreSQL>
-- in the /Amazon RDS User Guide/.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable. Mapping Amazon Web Services IAM accounts to database
-- accounts is managed by the DB cluster.
--
-- 'enablePerformanceInsights', 'createDBInstance_enablePerformanceInsights' - A value that indicates whether to enable Performance Insights for the DB
-- instance. For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html Using Amazon Performance Insights>
-- in the /Amazon RDS User Guide/.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- 'engineVersion', 'createDBInstance_engineVersion' - The version number of the database engine to use.
--
-- For a list of valid engine versions, use the @DescribeDBEngineVersions@
-- operation.
--
-- 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 Amazon Web Services 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.
--
-- __Amazon RDS Custom for Oracle__
--
-- A custom engine version (CEV) that you have previously created. This
-- setting is required for RDS Custom for Oracle. The CEV name has the
-- following format: 19./customized_string/. A valid CEV name is
-- @19.my_cev1@. For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.create Creating an RDS Custom for Oracle DB instance>
-- in the /Amazon RDS User Guide/.
--
-- __Amazon RDS Custom for SQL Server__
--
-- See
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-reqs-limits-MS.html RDS Custom for SQL Server general requirements>
-- in the /Amazon RDS User Guide/.
--
-- __MariaDB__
--
-- For information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt MariaDB on Amazon RDS Versions>
-- in the /Amazon RDS User Guide/.
--
-- __Microsoft SQL Server__
--
-- For information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport Microsoft SQL Server Versions on Amazon RDS>
-- in the /Amazon RDS User Guide/.
--
-- __MySQL__
--
-- For information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt MySQL on Amazon RDS Versions>
-- in the /Amazon RDS User Guide/.
--
-- __Oracle__
--
-- For information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html Oracle Database Engine Release Notes>
-- in the /Amazon RDS User Guide/.
--
-- __PostgreSQL__
--
-- For information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts Amazon RDS for PostgreSQL versions and extensions>
-- in the /Amazon RDS User Guide/.
--
-- 'iops', 'createDBInstance_iops' - The amount of Provisioned IOPS (input\/output operations per second) to
-- be initially allocated for the DB instance. For information about valid
-- IOPS values, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html Amazon RDS DB instance storage>
-- in the /Amazon RDS User Guide/.
--
-- Constraints: For MariaDB, MySQL, Oracle, and PostgreSQL DB instances,
-- must be a multiple between .5 and 50 of the storage amount for the DB
-- instance. For SQL Server DB instances, must be a multiple between 1 and
-- 50 of the storage amount for the DB instance.
--
-- __Amazon Aurora__
--
-- Not applicable. Storage is managed by the DB cluster.
--
-- 'kmsKeyId', 'createDBInstance_kmsKeyId' - The Amazon Web Services KMS key identifier for an encrypted DB instance.
--
-- The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
-- ARN, or alias name for the KMS key. To use a KMS key in a different
-- Amazon Web Services account, specify the key ARN or alias ARN.
--
-- __Amazon Aurora__
--
-- Not applicable. The Amazon Web Services KMS key identifier is managed by
-- the DB cluster. For more information, see @CreateDBCluster@.
--
-- If @StorageEncrypted@ is enabled, and you do not specify a value for the
-- @KmsKeyId@ parameter, then Amazon RDS uses your default KMS key. There
-- is a default KMS key for your Amazon Web Services account. Your Amazon
-- Web Services account has a different default KMS key for each Amazon Web
-- Services Region.
--
-- __Amazon RDS Custom__
--
-- A KMS key is required for RDS Custom instances. For most RDS engines, if
-- you leave this parameter empty while enabling @StorageEncrypted@, the
-- engine uses the default KMS key. However, RDS Custom doesn\'t use the
-- default key when this parameter is empty. You must explicitly specify a
-- key.
--
-- 'licenseModel', 'createDBInstance_licenseModel' - License model information for this DB instance.
--
-- Valid values: @license-included@ | @bring-your-own-license@ |
-- @general-public-license@
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable.
--
-- 'manageMasterUserPassword', 'createDBInstance_manageMasterUserPassword' - A value that indicates whether to manage the master user password with
-- Amazon Web Services Secrets Manager.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html Password management with Amazon Web Services Secrets Manager>
-- in the /Amazon RDS User Guide./
--
-- Constraints:
--
-- -   Can\'t manage the master user password with Amazon Web Services
--     Secrets Manager if @MasterUserPassword@ is specified.
--
-- 'masterUserPassword', 'createDBInstance_masterUserPassword' - 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.
--
-- Constraints: Can\'t be specified if @ManageMasterUserPassword@ is turned
-- on.
--
-- __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.
--
-- 'masterUserSecretKmsKeyId', 'createDBInstance_masterUserSecretKmsKeyId' - The Amazon Web Services KMS key identifier to encrypt a secret that is
-- automatically generated and managed in Amazon Web Services Secrets
-- Manager.
--
-- This setting is valid only if the master user password is managed by RDS
-- in Amazon Web Services Secrets Manager for the DB instance.
--
-- The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
-- ARN, or alias name for the KMS key. To use a KMS key in a different
-- Amazon Web Services account, specify the key ARN or alias ARN.
--
-- If you don\'t specify @MasterUserSecretKmsKeyId@, then the
-- @aws\/secretsmanager@ KMS key is used to encrypt the secret. If the
-- secret is in a different Amazon Web Services account, then you can\'t
-- use the @aws\/secretsmanager@ KMS key to encrypt the secret, and you
-- must use a customer managed KMS key.
--
-- There is a default KMS key for your Amazon Web Services account. Your
-- Amazon Web Services account has a different default KMS key for each
-- Amazon Web Services Region.
--
-- 'masterUsername', 'createDBInstance_masterUsername' - The name for the master user.
--
-- __Amazon Aurora__
--
-- Not applicable. The name for the master user is managed by the DB
-- cluster.
--
-- __Amazon RDS__
--
-- Constraints:
--
-- -   Required.
--
-- -   Must be 1 to 16 letters, numbers, or underscores.
--
-- -   First character must be a letter.
--
-- -   Can\'t be a reserved word for the chosen database engine.
--
-- 'maxAllocatedStorage', 'createDBInstance_maxAllocatedStorage' - 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
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling Managing capacity automatically with Amazon RDS storage autoscaling>
-- in the /Amazon RDS User Guide/.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable. Storage is managed by the DB cluster.
--
-- 'monitoringInterval', 'createDBInstance_monitoringInterval' - 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@
--
-- 'monitoringRoleArn', 'createDBInstance_monitoringRoleArn' - 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
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling Setting Up and Enabling Enhanced Monitoring>
-- 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.
--
-- 'multiAZ', 'createDBInstance_multiAZ' - A value that indicates whether the DB instance is a Multi-AZ deployment.
-- You can\'t set the @AvailabilityZone@ parameter if the DB instance is a
-- Multi-AZ deployment.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable. DB instance Availability Zones (AZs) are managed by the
-- DB cluster.
--
-- 'ncharCharacterSetName', 'createDBInstance_ncharCharacterSetName' - The name of the NCHAR character set for the Oracle DB instance.
--
-- This parameter doesn\'t apply to RDS Custom.
--
-- 'networkType', 'createDBInstance_networkType' - 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 the IPv6 protocols (@DUAL@).
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html Working with a DB instance in a VPC>
-- in the /Amazon RDS User Guide./
--
-- 'optionGroupName', 'createDBInstance_optionGroupName' - A value that 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 after it is associated with a DB
-- instance.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable.
--
-- 'performanceInsightsKMSKeyId', 'createDBInstance_performanceInsightsKMSKeyId' - The Amazon Web Services KMS key identifier for encryption of Performance
-- Insights data.
--
-- The Amazon Web Services 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 Amazon Web Services account. Your Amazon Web Services account has a
-- different default KMS key for each Amazon Web Services Region.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- 'performanceInsightsRetentionPeriod', 'createDBInstance_performanceInsightsRetentionPeriod' - The number of days to retain Performance Insights data. The default is 7
-- days. The following values are valid:
--
-- -   7
--
-- -   /month/ * 31, where /month/ is a number of months from 1-23
--
-- -   731
--
-- For example, the following values are valid:
--
-- -   93 (3 months * 31)
--
-- -   341 (11 months * 31)
--
-- -   589 (19 months * 31)
--
-- -   731
--
-- If you specify a retention period such as 94, which isn\'t a valid
-- value, RDS issues an error.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- 'port', 'createDBInstance_port' - The port number on which the database accepts connections.
--
-- __MySQL__
--
-- Default: @3306@
--
-- Valid values: @1150-65535@
--
-- Type: Integer
--
-- __MariaDB__
--
-- 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 @1234@, @1434@, @3260@, @3343@,
-- @3389@, @47001@, and @49152-49156@.
--
-- __Amazon Aurora__
--
-- Default: @3306@
--
-- Valid values: @1150-65535@
--
-- Type: Integer
--
-- 'preferredBackupWindow', 'createDBInstance_preferredBackupWindow' - The daily time range during which automated backups are created if
-- automated backups are enabled, using the @BackupRetentionPeriod@
-- parameter. The default is a 30-minute window selected at random from an
-- 8-hour block of time for each Amazon Web Services Region. For more
-- information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow Backup window>
-- in the /Amazon RDS User Guide/.
--
-- __Amazon Aurora__
--
-- Not applicable. The daily time range for creating automated backups is
-- managed by the DB cluster.
--
-- 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.
--
-- 'preferredMaintenanceWindow', 'createDBInstance_preferredMaintenanceWindow' - The time range each week during which system maintenance can occur, in
-- Universal Coordinated Time (UTC). For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance Amazon RDS Maintenance Window>.
--
-- 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 Amazon Web Services Region, occurring on a random
-- day of the week.
--
-- Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
--
-- Constraints: Minimum 30-minute window.
--
-- 'processorFeatures', 'createDBInstance_processorFeatures' - 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 RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable.
--
-- 'promotionTier', 'createDBInstance_promotionTier' - A value that specifies the order in which an Aurora Replica is promoted
-- to the primary instance after a failure of the existing primary
-- instance. For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.FaultTolerance Fault Tolerance for an Aurora DB Cluster>
-- in the /Amazon Aurora User Guide/.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- Default: 1
--
-- Valid Values: 0 - 15
--
-- 'publiclyAccessible', 'createDBInstance_publiclyAccessible' - A value that indicates whether the DB instance is publicly accessible.
--
-- When the DB instance is publicly accessible, its Domain Name System
-- (DNS) endpoint resolves to the private IP address from within the DB
-- instance\'s virtual private cloud (VPC). It resolves to the public IP
-- address from outside of the DB instance\'s VPC. Access to the DB
-- instance is ultimately controlled by the security group it uses. That
-- public access is not permitted if the security group assigned to the DB
-- instance doesn\'t permit it.
--
-- When the DB instance isn\'t publicly accessible, it is an internal DB
-- instance with a DNS name that resolves to a private IP address.
--
-- 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 instance is private.
--
-- -   If the default VPC in the target Region has an internet gateway
--     attached to it, the DB instance 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 instance is private.
--
-- -   If the subnets are part of a VPC that has an internet gateway
--     attached to it, the DB instance is public.
--
-- 'storageEncrypted', 'createDBInstance_storageEncrypted' - A value that indicates whether the DB instance is encrypted. By default,
-- it isn\'t encrypted.
--
-- For RDS Custom instances, either set this parameter to @true@ or leave
-- it unset. If you set this parameter to @false@, RDS reports an error.
--
-- __Amazon Aurora__
--
-- Not applicable. The encryption for DB instances is managed by the DB
-- cluster.
--
-- 'storageThroughput', 'createDBInstance_storageThroughput' - 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.
--
-- 'storageType', 'createDBInstance_storageType' - Specifies the storage type to be associated with the DB instance.
--
-- Valid values: @gp2 | gp3 | io1 | standard@
--
-- 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@
--
-- __Amazon Aurora__
--
-- Not applicable. Storage is managed by the DB cluster.
--
-- 'tags', 'createDBInstance_tags' - Tags to assign to the DB instance.
--
-- 'tdeCredentialArn', 'createDBInstance_tdeCredentialArn' - The ARN from the key store with which to associate the instance for TDE
-- encryption.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable.
--
-- 'tdeCredentialPassword', 'createDBInstance_tdeCredentialPassword' - The password for the given ARN from the key store in order to access the
-- device.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- 'timezone', 'createDBInstance_timezone' - The time zone of the DB instance. The time zone parameter is currently
-- supported only by
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone Microsoft SQL Server>.
--
-- 'vpcSecurityGroupIds', 'createDBInstance_vpcSecurityGroupIds' - A list of Amazon EC2 VPC security groups to associate with this DB
-- instance.
--
-- __Amazon Aurora__
--
-- Not applicable. The associated list of EC2 VPC security groups is
-- managed by the DB cluster.
--
-- Default: The default EC2 VPC security group for the DB subnet group\'s
-- VPC.
--
-- 'dbInstanceIdentifier', 'createDBInstance_dbInstanceIdentifier' - The DB instance 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: @mydbinstance@
--
-- 'dbInstanceClass', 'createDBInstance_dbInstanceClass' - The compute and memory capacity of the DB instance, for example
-- db.m5.large. Not all DB instance classes are available in all Amazon Web
-- Services Regions, or for all database engines. For the full list of DB
-- instance classes, and availability for your engine, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html DB instance classes>
-- in the /Amazon RDS User Guide/ or
-- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html Aurora DB instance classes>
-- in the /Amazon Aurora User Guide/.
--
-- 'engine', 'createDBInstance_engine' - The name of the database engine to be used for this instance.
--
-- Not every database engine is available for every Amazon Web Services
-- Region.
--
-- Valid Values:
--
-- -   @aurora@ (for MySQL 5.6-compatible Aurora)
--
-- -   @aurora-mysql@ (for MySQL 5.7-compatible and MySQL 8.0-compatible
--     Aurora)
--
-- -   @aurora-postgresql@
--
-- -   @custom-oracle-ee (for RDS Custom for Oracle instances)@
--
-- -   @custom-sqlserver-ee (for RDS Custom for SQL Server instances)@
--
-- -   @custom-sqlserver-se (for RDS Custom for SQL Server instances)@
--
-- -   @custom-sqlserver-web (for RDS Custom for SQL Server instances)@
--
-- -   @mariadb@
--
-- -   @mysql@
--
-- -   @oracle-ee@
--
-- -   @oracle-ee-cdb@
--
-- -   @oracle-se2@
--
-- -   @oracle-se2-cdb@
--
-- -   @postgres@
--
-- -   @sqlserver-ee@
--
-- -   @sqlserver-se@
--
-- -   @sqlserver-ex@
--
-- -   @sqlserver-web@
newCreateDBInstance ::
  -- | 'dbInstanceIdentifier'
  Prelude.Text ->
  -- | 'dbInstanceClass'
  Prelude.Text ->
  -- | 'engine'
  Prelude.Text ->
  CreateDBInstance
newCreateDBInstance :: Text -> Text -> Text -> CreateDBInstance
newCreateDBInstance
  Text
pDBInstanceIdentifier_
  Text
pDBInstanceClass_
  Text
pEngine_ =
    CreateDBInstance'
      { $sel:allocatedStorage:CreateDBInstance' :: Maybe Int
allocatedStorage =
          forall a. Maybe a
Prelude.Nothing,
        $sel:autoMinorVersionUpgrade:CreateDBInstance' :: Maybe Bool
autoMinorVersionUpgrade = forall a. Maybe a
Prelude.Nothing,
        $sel:availabilityZone:CreateDBInstance' :: Maybe Text
availabilityZone = forall a. Maybe a
Prelude.Nothing,
        $sel:backupRetentionPeriod:CreateDBInstance' :: Maybe Int
backupRetentionPeriod = forall a. Maybe a
Prelude.Nothing,
        $sel:backupTarget:CreateDBInstance' :: Maybe Text
backupTarget = forall a. Maybe a
Prelude.Nothing,
        $sel:cACertificateIdentifier:CreateDBInstance' :: Maybe Text
cACertificateIdentifier = forall a. Maybe a
Prelude.Nothing,
        $sel:characterSetName:CreateDBInstance' :: Maybe Text
characterSetName = forall a. Maybe a
Prelude.Nothing,
        $sel:copyTagsToSnapshot:CreateDBInstance' :: Maybe Bool
copyTagsToSnapshot = forall a. Maybe a
Prelude.Nothing,
        $sel:customIamInstanceProfile:CreateDBInstance' :: Maybe Text
customIamInstanceProfile = forall a. Maybe a
Prelude.Nothing,
        $sel:dbClusterIdentifier:CreateDBInstance' :: Maybe Text
dbClusterIdentifier = forall a. Maybe a
Prelude.Nothing,
        $sel:dbName:CreateDBInstance' :: Maybe Text
dbName = forall a. Maybe a
Prelude.Nothing,
        $sel:dbParameterGroupName:CreateDBInstance' :: Maybe Text
dbParameterGroupName = forall a. Maybe a
Prelude.Nothing,
        $sel:dbSecurityGroups:CreateDBInstance' :: Maybe [Text]
dbSecurityGroups = forall a. Maybe a
Prelude.Nothing,
        $sel:dbSubnetGroupName:CreateDBInstance' :: Maybe Text
dbSubnetGroupName = forall a. Maybe a
Prelude.Nothing,
        $sel:deletionProtection:CreateDBInstance' :: Maybe Bool
deletionProtection = forall a. Maybe a
Prelude.Nothing,
        $sel:domain:CreateDBInstance' :: Maybe Text
domain = forall a. Maybe a
Prelude.Nothing,
        $sel:domainIAMRoleName:CreateDBInstance' :: Maybe Text
domainIAMRoleName = forall a. Maybe a
Prelude.Nothing,
        $sel:enableCloudwatchLogsExports:CreateDBInstance' :: Maybe [Text]
enableCloudwatchLogsExports = forall a. Maybe a
Prelude.Nothing,
        $sel:enableCustomerOwnedIp:CreateDBInstance' :: Maybe Bool
enableCustomerOwnedIp = forall a. Maybe a
Prelude.Nothing,
        $sel:enableIAMDatabaseAuthentication:CreateDBInstance' :: Maybe Bool
enableIAMDatabaseAuthentication = forall a. Maybe a
Prelude.Nothing,
        $sel:enablePerformanceInsights:CreateDBInstance' :: Maybe Bool
enablePerformanceInsights = forall a. Maybe a
Prelude.Nothing,
        $sel:engineVersion:CreateDBInstance' :: Maybe Text
engineVersion = forall a. Maybe a
Prelude.Nothing,
        $sel:iops:CreateDBInstance' :: Maybe Int
iops = forall a. Maybe a
Prelude.Nothing,
        $sel:kmsKeyId:CreateDBInstance' :: Maybe Text
kmsKeyId = forall a. Maybe a
Prelude.Nothing,
        $sel:licenseModel:CreateDBInstance' :: Maybe Text
licenseModel = forall a. Maybe a
Prelude.Nothing,
        $sel:manageMasterUserPassword:CreateDBInstance' :: Maybe Bool
manageMasterUserPassword = forall a. Maybe a
Prelude.Nothing,
        $sel:masterUserPassword:CreateDBInstance' :: Maybe Text
masterUserPassword = forall a. Maybe a
Prelude.Nothing,
        $sel:masterUserSecretKmsKeyId:CreateDBInstance' :: Maybe Text
masterUserSecretKmsKeyId = forall a. Maybe a
Prelude.Nothing,
        $sel:masterUsername:CreateDBInstance' :: Maybe Text
masterUsername = forall a. Maybe a
Prelude.Nothing,
        $sel:maxAllocatedStorage:CreateDBInstance' :: Maybe Int
maxAllocatedStorage = forall a. Maybe a
Prelude.Nothing,
        $sel:monitoringInterval:CreateDBInstance' :: Maybe Int
monitoringInterval = forall a. Maybe a
Prelude.Nothing,
        $sel:monitoringRoleArn:CreateDBInstance' :: Maybe Text
monitoringRoleArn = forall a. Maybe a
Prelude.Nothing,
        $sel:multiAZ:CreateDBInstance' :: Maybe Bool
multiAZ = forall a. Maybe a
Prelude.Nothing,
        $sel:ncharCharacterSetName:CreateDBInstance' :: Maybe Text
ncharCharacterSetName = forall a. Maybe a
Prelude.Nothing,
        $sel:networkType:CreateDBInstance' :: Maybe Text
networkType = forall a. Maybe a
Prelude.Nothing,
        $sel:optionGroupName:CreateDBInstance' :: Maybe Text
optionGroupName = forall a. Maybe a
Prelude.Nothing,
        $sel:performanceInsightsKMSKeyId:CreateDBInstance' :: Maybe Text
performanceInsightsKMSKeyId = forall a. Maybe a
Prelude.Nothing,
        $sel:performanceInsightsRetentionPeriod:CreateDBInstance' :: Maybe Int
performanceInsightsRetentionPeriod = forall a. Maybe a
Prelude.Nothing,
        $sel:port:CreateDBInstance' :: Maybe Int
port = forall a. Maybe a
Prelude.Nothing,
        $sel:preferredBackupWindow:CreateDBInstance' :: Maybe Text
preferredBackupWindow = forall a. Maybe a
Prelude.Nothing,
        $sel:preferredMaintenanceWindow:CreateDBInstance' :: Maybe Text
preferredMaintenanceWindow = forall a. Maybe a
Prelude.Nothing,
        $sel:processorFeatures:CreateDBInstance' :: Maybe [ProcessorFeature]
processorFeatures = forall a. Maybe a
Prelude.Nothing,
        $sel:promotionTier:CreateDBInstance' :: Maybe Int
promotionTier = forall a. Maybe a
Prelude.Nothing,
        $sel:publiclyAccessible:CreateDBInstance' :: Maybe Bool
publiclyAccessible = forall a. Maybe a
Prelude.Nothing,
        $sel:storageEncrypted:CreateDBInstance' :: Maybe Bool
storageEncrypted = forall a. Maybe a
Prelude.Nothing,
        $sel:storageThroughput:CreateDBInstance' :: Maybe Int
storageThroughput = forall a. Maybe a
Prelude.Nothing,
        $sel:storageType:CreateDBInstance' :: Maybe Text
storageType = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateDBInstance' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:tdeCredentialArn:CreateDBInstance' :: Maybe Text
tdeCredentialArn = forall a. Maybe a
Prelude.Nothing,
        $sel:tdeCredentialPassword:CreateDBInstance' :: Maybe Text
tdeCredentialPassword = forall a. Maybe a
Prelude.Nothing,
        $sel:timezone:CreateDBInstance' :: Maybe Text
timezone = forall a. Maybe a
Prelude.Nothing,
        $sel:vpcSecurityGroupIds:CreateDBInstance' :: Maybe [Text]
vpcSecurityGroupIds = forall a. Maybe a
Prelude.Nothing,
        $sel:dbInstanceIdentifier:CreateDBInstance' :: Text
dbInstanceIdentifier = Text
pDBInstanceIdentifier_,
        $sel:dbInstanceClass:CreateDBInstance' :: Text
dbInstanceClass = Text
pDBInstanceClass_,
        $sel:engine:CreateDBInstance' :: Text
engine = Text
pEngine_
      }

-- | The amount of storage in gibibytes (GiB) to allocate for the DB
-- instance.
--
-- Type: Integer
--
-- __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.
--
-- __Amazon RDS Custom__
--
-- Constraints to the amount of storage for each storage type are the
-- following:
--
-- -   General Purpose (SSD) storage (gp2, gp3): Must be an integer from 40
--     to 65536 for RDS Custom for Oracle, 16384 for RDS Custom for SQL
--     Server.
--
-- -   Provisioned IOPS storage (io1): Must be an integer from 40 to 65536
--     for RDS Custom for Oracle, 16384 for RDS Custom for SQL Server.
--
-- __MySQL__
--
-- Constraints to the amount of storage for each storage type are the
-- following:
--
-- -   General Purpose (SSD) storage (gp2, gp3): 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, gp3): 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, gp3): 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, gp3): 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, gp3):
--
--     -   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 100 to
--         16384.
--
--     -   Web and Express editions: Must be an integer from 100 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.
createDBInstance_allocatedStorage :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Int)
createDBInstance_allocatedStorage :: Lens' CreateDBInstance (Maybe Int)
createDBInstance_allocatedStorage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Int
allocatedStorage :: Maybe Int
$sel:allocatedStorage:CreateDBInstance' :: CreateDBInstance -> Maybe Int
allocatedStorage} -> Maybe Int
allocatedStorage) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Int
a -> CreateDBInstance
s {$sel:allocatedStorage:CreateDBInstance' :: Maybe Int
allocatedStorage = Maybe Int
a} :: CreateDBInstance)

-- | 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.
--
-- If you create an RDS Custom DB instance, you must set
-- @AutoMinorVersionUpgrade@ to @false@.
createDBInstance_autoMinorVersionUpgrade :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
createDBInstance_autoMinorVersionUpgrade :: Lens' CreateDBInstance (Maybe Bool)
createDBInstance_autoMinorVersionUpgrade = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Bool
autoMinorVersionUpgrade :: Maybe Bool
$sel:autoMinorVersionUpgrade:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
autoMinorVersionUpgrade} -> Maybe Bool
autoMinorVersionUpgrade) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Bool
a -> CreateDBInstance
s {$sel:autoMinorVersionUpgrade:CreateDBInstance' :: Maybe Bool
autoMinorVersionUpgrade = Maybe Bool
a} :: CreateDBInstance)

-- | The Availability Zone (AZ) where the database will be created. For
-- information on Amazon Web Services Regions and Availability Zones, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html Regions and Availability Zones>.
--
-- __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
-- Amazon Web Services Region.
--
-- Example: @us-east-1d@
--
-- Constraint: 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 Amazon Web Services Region as the current endpoint.
createDBInstance_availabilityZone :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_availabilityZone :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_availabilityZone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:CreateDBInstance' :: CreateDBInstance -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:availabilityZone:CreateDBInstance' :: Maybe Text
availabilityZone = Maybe Text
a} :: CreateDBInstance)

-- | 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
--
-- -   Can\'t be set to 0 for an RDS Custom for Oracle DB instance
createDBInstance_backupRetentionPeriod :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Int)
createDBInstance_backupRetentionPeriod :: Lens' CreateDBInstance (Maybe Int)
createDBInstance_backupRetentionPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Int
backupRetentionPeriod :: Maybe Int
$sel:backupRetentionPeriod:CreateDBInstance' :: CreateDBInstance -> Maybe Int
backupRetentionPeriod} -> Maybe Int
backupRetentionPeriod) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Int
a -> CreateDBInstance
s {$sel:backupRetentionPeriod:CreateDBInstance' :: Maybe Int
backupRetentionPeriod = Maybe Int
a} :: CreateDBInstance)

-- | Specifies where automated backups and manual snapshots are stored.
--
-- Possible values are @outposts@ (Amazon Web Services Outposts) and
-- @region@ (Amazon Web Services Region). The default is @region@.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html Working with Amazon RDS on Amazon Web Services Outposts>
-- in the /Amazon RDS User Guide/.
createDBInstance_backupTarget :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_backupTarget :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_backupTarget = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
backupTarget :: Maybe Text
$sel:backupTarget:CreateDBInstance' :: CreateDBInstance -> Maybe Text
backupTarget} -> Maybe Text
backupTarget) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:backupTarget:CreateDBInstance' :: Maybe Text
backupTarget = Maybe Text
a} :: CreateDBInstance)

-- | Specifies the CA certificate identifier to use for the DB instance’s
-- server certificate.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html Using SSL\/TLS to encrypt a connection to a DB instance>
-- in the /Amazon RDS User Guide/ and
-- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html Using SSL\/TLS to encrypt a connection to a DB cluster>
-- in the /Amazon Aurora User Guide/.
createDBInstance_cACertificateIdentifier :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_cACertificateIdentifier :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_cACertificateIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
cACertificateIdentifier :: Maybe Text
$sel:cACertificateIdentifier:CreateDBInstance' :: CreateDBInstance -> Maybe Text
cACertificateIdentifier} -> Maybe Text
cACertificateIdentifier) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:cACertificateIdentifier:CreateDBInstance' :: Maybe Text
cACertificateIdentifier = Maybe Text
a} :: CreateDBInstance)

-- | For supported engines, this value indicates that the DB instance should
-- be associated with the specified @CharacterSet@.
--
-- This setting doesn\'t apply to RDS Custom. However, if you need to
-- change the character set, you can change it on the database itself.
--
-- __Amazon Aurora__
--
-- Not applicable. The character set is managed by the DB cluster. For more
-- information, see @CreateDBCluster@.
createDBInstance_characterSetName :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_characterSetName :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_characterSetName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
characterSetName :: Maybe Text
$sel:characterSetName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
characterSetName} -> Maybe Text
characterSetName) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:characterSetName:CreateDBInstance' :: Maybe Text
characterSetName = Maybe Text
a} :: CreateDBInstance)

-- | A value that indicates whether to copy tags from the DB instance to
-- snapshots of the DB instance. By default, tags are not copied.
--
-- __Amazon Aurora__
--
-- Not applicable. 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.
createDBInstance_copyTagsToSnapshot :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
createDBInstance_copyTagsToSnapshot :: Lens' CreateDBInstance (Maybe Bool)
createDBInstance_copyTagsToSnapshot = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Bool
copyTagsToSnapshot :: Maybe Bool
$sel:copyTagsToSnapshot:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
copyTagsToSnapshot} -> Maybe Bool
copyTagsToSnapshot) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Bool
a -> CreateDBInstance
s {$sel:copyTagsToSnapshot:CreateDBInstance' :: Maybe Bool
copyTagsToSnapshot = Maybe Bool
a} :: CreateDBInstance)

-- | The instance profile associated with the underlying Amazon EC2 instance
-- of an RDS Custom DB instance. The instance profile must meet the
-- following requirements:
--
-- -   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
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc Configure IAM and your VPC>
-- in the /Amazon RDS User Guide/.
--
-- This setting is required for RDS Custom.
createDBInstance_customIamInstanceProfile :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_customIamInstanceProfile :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_customIamInstanceProfile = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
customIamInstanceProfile :: Maybe Text
$sel:customIamInstanceProfile:CreateDBInstance' :: CreateDBInstance -> Maybe Text
customIamInstanceProfile} -> Maybe Text
customIamInstanceProfile) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:customIamInstanceProfile:CreateDBInstance' :: Maybe Text
customIamInstanceProfile = Maybe Text
a} :: CreateDBInstance)

-- | The identifier of the DB cluster that the instance will belong to.
--
-- This setting doesn\'t apply to RDS Custom.
createDBInstance_dbClusterIdentifier :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_dbClusterIdentifier :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_dbClusterIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
dbClusterIdentifier :: Maybe Text
$sel:dbClusterIdentifier:CreateDBInstance' :: CreateDBInstance -> Maybe Text
dbClusterIdentifier} -> Maybe Text
dbClusterIdentifier) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:dbClusterIdentifier:CreateDBInstance' :: Maybe Text
dbClusterIdentifier = Maybe Text
a} :: CreateDBInstance)

-- | The meaning of this parameter differs according to the database engine
-- you use.
--
-- __MySQL__
--
-- The name of the database to create when the DB instance is created. If
-- this parameter isn\'t specified, no database is created in the DB
-- instance.
--
-- Constraints:
--
-- -   Must contain 1 to 64 letters or numbers.
--
-- -   Must begin with a letter. Subsequent characters can be letters,
--     underscores, or digits (0-9).
--
-- -   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 isn\'t specified, no database is created in the DB
-- instance.
--
-- Constraints:
--
-- -   Must contain 1 to 64 letters or numbers.
--
-- -   Must begin with a letter. Subsequent characters can be letters,
--     underscores, or digits (0-9).
--
-- -   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 isn\'t specified, a database named @postgres@ is created
-- in the DB instance.
--
-- Constraints:
--
-- -   Must contain 1 to 63 letters, numbers, or underscores.
--
-- -   Must begin with a letter. Subsequent characters can be letters,
--     underscores, or digits (0-9).
--
-- -   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
--
-- __Amazon RDS Custom for Oracle__
--
-- The Oracle System ID (SID) of the created RDS Custom DB instance. If you
-- don\'t specify a value, the default value is @ORCL@.
--
-- Default: @ORCL@
--
-- Constraints:
--
-- -   It must contain 1 to 8 alphanumeric characters.
--
-- -   It must contain a letter.
--
-- -   It can\'t be a word reserved by the database engine.
--
-- __Amazon RDS Custom for SQL Server__
--
-- Not applicable. Must be null.
--
-- __SQL Server__
--
-- Not applicable. Must be null.
--
-- __Amazon Aurora MySQL__
--
-- The name of the database to create when the primary DB instance of the
-- Aurora MySQL DB cluster is created. If this parameter isn\'t specified
-- for an Aurora MySQL DB cluster, no database is created in the DB
-- cluster.
--
-- Constraints:
--
-- -   It must contain 1 to 64 alphanumeric characters.
--
-- -   It can\'t be a word reserved by the database engine.
--
-- __Amazon Aurora PostgreSQL__
--
-- The name of the database to create when the primary DB instance of the
-- Aurora PostgreSQL DB cluster is created. If this parameter isn\'t
-- specified for an Aurora PostgreSQL DB cluster, a database named
-- @postgres@ is created in the DB cluster.
--
-- Constraints:
--
-- -   It must contain 1 to 63 alphanumeric characters.
--
-- -   It must begin with a letter. Subsequent characters can be letters,
--     underscores, or digits (0 to 9).
--
-- -   It can\'t be a word reserved by the database engine.
createDBInstance_dbName :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_dbName :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_dbName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
dbName :: Maybe Text
$sel:dbName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
dbName} -> Maybe Text
dbName) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:dbName:CreateDBInstance' :: Maybe Text
dbName = Maybe Text
a} :: CreateDBInstance)

-- | The name of the DB parameter group to associate with this DB instance.
-- If you do not specify a value, then the default DB parameter group for
-- the specified DB engine and version is used.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- Constraints:
--
-- -   It must be 1 to 255 letters, numbers, or hyphens.
--
-- -   The first character must be a letter.
--
-- -   It can\'t end with a hyphen or contain two consecutive hyphens.
createDBInstance_dbParameterGroupName :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_dbParameterGroupName :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_dbParameterGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
dbParameterGroupName :: Maybe Text
$sel:dbParameterGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
dbParameterGroupName} -> Maybe Text
dbParameterGroupName) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:dbParameterGroupName:CreateDBInstance' :: Maybe Text
dbParameterGroupName = Maybe Text
a} :: CreateDBInstance)

-- | A list of DB security groups to associate with this DB instance.
--
-- This setting applies to the legacy EC2-Classic platform, which is no
-- longer used to create new DB instances. Use the @VpcSecurityGroupIds@
-- setting instead.
createDBInstance_dbSecurityGroups :: Lens.Lens' CreateDBInstance (Prelude.Maybe [Prelude.Text])
createDBInstance_dbSecurityGroups :: Lens' CreateDBInstance (Maybe [Text])
createDBInstance_dbSecurityGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe [Text]
dbSecurityGroups :: Maybe [Text]
$sel:dbSecurityGroups:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
dbSecurityGroups} -> Maybe [Text]
dbSecurityGroups) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe [Text]
a -> CreateDBInstance
s {$sel:dbSecurityGroups:CreateDBInstance' :: Maybe [Text]
dbSecurityGroups = Maybe [Text]
a} :: CreateDBInstance) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A DB subnet group to associate with this DB instance.
--
-- Constraints: Must match the name of an existing DBSubnetGroup. Must not
-- be default.
--
-- Example: @mydbsubnetgroup@
createDBInstance_dbSubnetGroupName :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_dbSubnetGroupName :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_dbSubnetGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
dbSubnetGroupName :: Maybe Text
$sel:dbSubnetGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
dbSubnetGroupName} -> Maybe Text
dbSubnetGroupName) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:dbSubnetGroupName:CreateDBInstance' :: Maybe Text
dbSubnetGroupName = Maybe Text
a} :: CreateDBInstance)

-- | 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 isn\'t enabled. For more
-- information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html Deleting a DB Instance>.
--
-- __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.
createDBInstance_deletionProtection :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
createDBInstance_deletionProtection :: Lens' CreateDBInstance (Maybe Bool)
createDBInstance_deletionProtection = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Bool
deletionProtection :: Maybe Bool
$sel:deletionProtection:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
deletionProtection} -> Maybe Bool
deletionProtection) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Bool
a -> CreateDBInstance
s {$sel:deletionProtection:CreateDBInstance' :: Maybe Bool
deletionProtection = Maybe Bool
a} :: CreateDBInstance)

-- | The Active Directory directory ID to create the DB instance in.
-- Currently, only MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB
-- instances can be created in an Active Directory Domain.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html Kerberos Authentication>
-- in the /Amazon RDS User Guide/.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable. The domain is managed by the DB cluster.
createDBInstance_domain :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_domain :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_domain = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
domain :: Maybe Text
$sel:domain:CreateDBInstance' :: CreateDBInstance -> Maybe Text
domain} -> Maybe Text
domain) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:domain:CreateDBInstance' :: Maybe Text
domain = Maybe Text
a} :: CreateDBInstance)

-- | Specify the name of the IAM role to be used when making API calls to the
-- Directory Service.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable. The domain is managed by the DB cluster.
createDBInstance_domainIAMRoleName :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_domainIAMRoleName :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_domainIAMRoleName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
domainIAMRoleName :: Maybe Text
$sel:domainIAMRoleName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
domainIAMRoleName} -> Maybe Text
domainIAMRoleName) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:domainIAMRoleName:CreateDBInstance' :: Maybe Text
domainIAMRoleName = Maybe Text
a} :: CreateDBInstance)

-- | 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. For
-- more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch Publishing Database Logs to Amazon CloudWatch Logs>
-- in the /Amazon RDS User Guide/.
--
-- __Amazon Aurora__
--
-- Not applicable. CloudWatch Logs exports are managed by the DB cluster.
--
-- __RDS Custom__
--
-- Not applicable.
--
-- __MariaDB__
--
-- Possible values are @audit@, @error@, @general@, and @slowquery@.
--
-- __Microsoft SQL Server__
--
-- Possible values are @agent@ and @error@.
--
-- __MySQL__
--
-- Possible values are @audit@, @error@, @general@, and @slowquery@.
--
-- __Oracle__
--
-- Possible values are @alert@, @audit@, @listener@, @trace@, and
-- @oemagent@.
--
-- __PostgreSQL__
--
-- Possible values are @postgresql@ and @upgrade@.
createDBInstance_enableCloudwatchLogsExports :: Lens.Lens' CreateDBInstance (Prelude.Maybe [Prelude.Text])
createDBInstance_enableCloudwatchLogsExports :: Lens' CreateDBInstance (Maybe [Text])
createDBInstance_enableCloudwatchLogsExports = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe [Text]
enableCloudwatchLogsExports :: Maybe [Text]
$sel:enableCloudwatchLogsExports:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
enableCloudwatchLogsExports} -> Maybe [Text]
enableCloudwatchLogsExports) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe [Text]
a -> CreateDBInstance
s {$sel:enableCloudwatchLogsExports:CreateDBInstance' :: Maybe [Text]
enableCloudwatchLogsExports = Maybe [Text]
a} :: CreateDBInstance) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A value that indicates whether to enable a customer-owned IP address
-- (CoIP) for an RDS on Outposts DB instance.
--
-- A /CoIP/ provides local or external connectivity to resources in your
-- Outpost subnets through your on-premises network. For some use cases, a
-- CoIP can provide lower latency for connections to the DB instance from
-- outside of its virtual private cloud (VPC) on your local network.
--
-- For more information about RDS on Outposts, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html Working with Amazon RDS on Amazon Web Services Outposts>
-- in the /Amazon RDS User Guide/.
--
-- For more information about CoIPs, see
-- <https://docs.aws.amazon.com/outposts/latest/userguide/routing.html#ip-addressing Customer-owned IP addresses>
-- in the /Amazon Web Services Outposts User Guide/.
createDBInstance_enableCustomerOwnedIp :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
createDBInstance_enableCustomerOwnedIp :: Lens' CreateDBInstance (Maybe Bool)
createDBInstance_enableCustomerOwnedIp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Bool
enableCustomerOwnedIp :: Maybe Bool
$sel:enableCustomerOwnedIp:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
enableCustomerOwnedIp} -> Maybe Bool
enableCustomerOwnedIp) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Bool
a -> CreateDBInstance
s {$sel:enableCustomerOwnedIp:CreateDBInstance' :: Maybe Bool
enableCustomerOwnedIp = Maybe Bool
a} :: CreateDBInstance)

-- | A value that indicates whether to enable mapping of Amazon Web Services
-- Identity and Access Management (IAM) accounts to database accounts. By
-- default, mapping isn\'t enabled.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html IAM Database Authentication for MySQL and PostgreSQL>
-- in the /Amazon RDS User Guide/.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable. Mapping Amazon Web Services IAM accounts to database
-- accounts is managed by the DB cluster.
createDBInstance_enableIAMDatabaseAuthentication :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
createDBInstance_enableIAMDatabaseAuthentication :: Lens' CreateDBInstance (Maybe Bool)
createDBInstance_enableIAMDatabaseAuthentication = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Bool
enableIAMDatabaseAuthentication :: Maybe Bool
$sel:enableIAMDatabaseAuthentication:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
enableIAMDatabaseAuthentication} -> Maybe Bool
enableIAMDatabaseAuthentication) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Bool
a -> CreateDBInstance
s {$sel:enableIAMDatabaseAuthentication:CreateDBInstance' :: Maybe Bool
enableIAMDatabaseAuthentication = Maybe Bool
a} :: CreateDBInstance)

-- | A value that indicates whether to enable Performance Insights for the DB
-- instance. For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html Using Amazon Performance Insights>
-- in the /Amazon RDS User Guide/.
--
-- This setting doesn\'t apply to RDS Custom.
createDBInstance_enablePerformanceInsights :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
createDBInstance_enablePerformanceInsights :: Lens' CreateDBInstance (Maybe Bool)
createDBInstance_enablePerformanceInsights = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Bool
enablePerformanceInsights :: Maybe Bool
$sel:enablePerformanceInsights:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
enablePerformanceInsights} -> Maybe Bool
enablePerformanceInsights) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Bool
a -> CreateDBInstance
s {$sel:enablePerformanceInsights:CreateDBInstance' :: Maybe Bool
enablePerformanceInsights = Maybe Bool
a} :: CreateDBInstance)

-- | The version number of the database engine to use.
--
-- For a list of valid engine versions, use the @DescribeDBEngineVersions@
-- operation.
--
-- 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 Amazon Web Services 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.
--
-- __Amazon RDS Custom for Oracle__
--
-- A custom engine version (CEV) that you have previously created. This
-- setting is required for RDS Custom for Oracle. The CEV name has the
-- following format: 19./customized_string/. A valid CEV name is
-- @19.my_cev1@. For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.create Creating an RDS Custom for Oracle DB instance>
-- in the /Amazon RDS User Guide/.
--
-- __Amazon RDS Custom for SQL Server__
--
-- See
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-reqs-limits-MS.html RDS Custom for SQL Server general requirements>
-- in the /Amazon RDS User Guide/.
--
-- __MariaDB__
--
-- For information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt MariaDB on Amazon RDS Versions>
-- in the /Amazon RDS User Guide/.
--
-- __Microsoft SQL Server__
--
-- For information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport Microsoft SQL Server Versions on Amazon RDS>
-- in the /Amazon RDS User Guide/.
--
-- __MySQL__
--
-- For information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt MySQL on Amazon RDS Versions>
-- in the /Amazon RDS User Guide/.
--
-- __Oracle__
--
-- For information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html Oracle Database Engine Release Notes>
-- in the /Amazon RDS User Guide/.
--
-- __PostgreSQL__
--
-- For information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts Amazon RDS for PostgreSQL versions and extensions>
-- in the /Amazon RDS User Guide/.
createDBInstance_engineVersion :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_engineVersion :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_engineVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
engineVersion :: Maybe Text
$sel:engineVersion:CreateDBInstance' :: CreateDBInstance -> Maybe Text
engineVersion} -> Maybe Text
engineVersion) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:engineVersion:CreateDBInstance' :: Maybe Text
engineVersion = Maybe Text
a} :: CreateDBInstance)

-- | The amount of Provisioned IOPS (input\/output operations per second) to
-- be initially allocated for the DB instance. For information about valid
-- IOPS values, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html Amazon RDS DB instance storage>
-- in the /Amazon RDS User Guide/.
--
-- Constraints: For MariaDB, MySQL, Oracle, and PostgreSQL DB instances,
-- must be a multiple between .5 and 50 of the storage amount for the DB
-- instance. For SQL Server DB instances, must be a multiple between 1 and
-- 50 of the storage amount for the DB instance.
--
-- __Amazon Aurora__
--
-- Not applicable. Storage is managed by the DB cluster.
createDBInstance_iops :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Int)
createDBInstance_iops :: Lens' CreateDBInstance (Maybe Int)
createDBInstance_iops = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Int
iops :: Maybe Int
$sel:iops:CreateDBInstance' :: CreateDBInstance -> Maybe Int
iops} -> Maybe Int
iops) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Int
a -> CreateDBInstance
s {$sel:iops:CreateDBInstance' :: Maybe Int
iops = Maybe Int
a} :: CreateDBInstance)

-- | The Amazon Web Services KMS key identifier for an encrypted DB instance.
--
-- The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
-- ARN, or alias name for the KMS key. To use a KMS key in a different
-- Amazon Web Services account, specify the key ARN or alias ARN.
--
-- __Amazon Aurora__
--
-- Not applicable. The Amazon Web Services KMS key identifier is managed by
-- the DB cluster. For more information, see @CreateDBCluster@.
--
-- If @StorageEncrypted@ is enabled, and you do not specify a value for the
-- @KmsKeyId@ parameter, then Amazon RDS uses your default KMS key. There
-- is a default KMS key for your Amazon Web Services account. Your Amazon
-- Web Services account has a different default KMS key for each Amazon Web
-- Services Region.
--
-- __Amazon RDS Custom__
--
-- A KMS key is required for RDS Custom instances. For most RDS engines, if
-- you leave this parameter empty while enabling @StorageEncrypted@, the
-- engine uses the default KMS key. However, RDS Custom doesn\'t use the
-- default key when this parameter is empty. You must explicitly specify a
-- key.
createDBInstance_kmsKeyId :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_kmsKeyId :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_kmsKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
kmsKeyId :: Maybe Text
$sel:kmsKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
kmsKeyId} -> Maybe Text
kmsKeyId) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:kmsKeyId:CreateDBInstance' :: Maybe Text
kmsKeyId = Maybe Text
a} :: CreateDBInstance)

-- | License model information for this DB instance.
--
-- Valid values: @license-included@ | @bring-your-own-license@ |
-- @general-public-license@
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable.
createDBInstance_licenseModel :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_licenseModel :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_licenseModel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
licenseModel :: Maybe Text
$sel:licenseModel:CreateDBInstance' :: CreateDBInstance -> Maybe Text
licenseModel} -> Maybe Text
licenseModel) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:licenseModel:CreateDBInstance' :: Maybe Text
licenseModel = Maybe Text
a} :: CreateDBInstance)

-- | A value that indicates whether to manage the master user password with
-- Amazon Web Services Secrets Manager.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html Password management with Amazon Web Services Secrets Manager>
-- in the /Amazon RDS User Guide./
--
-- Constraints:
--
-- -   Can\'t manage the master user password with Amazon Web Services
--     Secrets Manager if @MasterUserPassword@ is specified.
createDBInstance_manageMasterUserPassword :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
createDBInstance_manageMasterUserPassword :: Lens' CreateDBInstance (Maybe Bool)
createDBInstance_manageMasterUserPassword = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Bool
manageMasterUserPassword :: Maybe Bool
$sel:manageMasterUserPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
manageMasterUserPassword} -> Maybe Bool
manageMasterUserPassword) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Bool
a -> CreateDBInstance
s {$sel:manageMasterUserPassword:CreateDBInstance' :: Maybe Bool
manageMasterUserPassword = Maybe Bool
a} :: CreateDBInstance)

-- | 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.
--
-- Constraints: Can\'t be specified if @ManageMasterUserPassword@ is turned
-- on.
--
-- __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.
createDBInstance_masterUserPassword :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_masterUserPassword :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_masterUserPassword = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
masterUserPassword :: Maybe Text
$sel:masterUserPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Text
masterUserPassword} -> Maybe Text
masterUserPassword) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:masterUserPassword:CreateDBInstance' :: Maybe Text
masterUserPassword = Maybe Text
a} :: CreateDBInstance)

-- | The Amazon Web Services KMS key identifier to encrypt a secret that is
-- automatically generated and managed in Amazon Web Services Secrets
-- Manager.
--
-- This setting is valid only if the master user password is managed by RDS
-- in Amazon Web Services Secrets Manager for the DB instance.
--
-- The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
-- ARN, or alias name for the KMS key. To use a KMS key in a different
-- Amazon Web Services account, specify the key ARN or alias ARN.
--
-- If you don\'t specify @MasterUserSecretKmsKeyId@, then the
-- @aws\/secretsmanager@ KMS key is used to encrypt the secret. If the
-- secret is in a different Amazon Web Services account, then you can\'t
-- use the @aws\/secretsmanager@ KMS key to encrypt the secret, and you
-- must use a customer managed KMS key.
--
-- There is a default KMS key for your Amazon Web Services account. Your
-- Amazon Web Services account has a different default KMS key for each
-- Amazon Web Services Region.
createDBInstance_masterUserSecretKmsKeyId :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_masterUserSecretKmsKeyId :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_masterUserSecretKmsKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
masterUserSecretKmsKeyId :: Maybe Text
$sel:masterUserSecretKmsKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
masterUserSecretKmsKeyId} -> Maybe Text
masterUserSecretKmsKeyId) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:masterUserSecretKmsKeyId:CreateDBInstance' :: Maybe Text
masterUserSecretKmsKeyId = Maybe Text
a} :: CreateDBInstance)

-- | The name for the master user.
--
-- __Amazon Aurora__
--
-- Not applicable. The name for the master user is managed by the DB
-- cluster.
--
-- __Amazon RDS__
--
-- Constraints:
--
-- -   Required.
--
-- -   Must be 1 to 16 letters, numbers, or underscores.
--
-- -   First character must be a letter.
--
-- -   Can\'t be a reserved word for the chosen database engine.
createDBInstance_masterUsername :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_masterUsername :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_masterUsername = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
masterUsername :: Maybe Text
$sel:masterUsername:CreateDBInstance' :: CreateDBInstance -> Maybe Text
masterUsername} -> Maybe Text
masterUsername) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:masterUsername:CreateDBInstance' :: Maybe Text
masterUsername = Maybe Text
a} :: CreateDBInstance)

-- | 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
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling Managing capacity automatically with Amazon RDS storage autoscaling>
-- in the /Amazon RDS User Guide/.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable. Storage is managed by the DB cluster.
createDBInstance_maxAllocatedStorage :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Int)
createDBInstance_maxAllocatedStorage :: Lens' CreateDBInstance (Maybe Int)
createDBInstance_maxAllocatedStorage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Int
maxAllocatedStorage :: Maybe Int
$sel:maxAllocatedStorage:CreateDBInstance' :: CreateDBInstance -> Maybe Int
maxAllocatedStorage} -> Maybe Int
maxAllocatedStorage) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Int
a -> CreateDBInstance
s {$sel:maxAllocatedStorage:CreateDBInstance' :: Maybe Int
maxAllocatedStorage = Maybe Int
a} :: CreateDBInstance)

-- | 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@
createDBInstance_monitoringInterval :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Int)
createDBInstance_monitoringInterval :: Lens' CreateDBInstance (Maybe Int)
createDBInstance_monitoringInterval = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Int
monitoringInterval :: Maybe Int
$sel:monitoringInterval:CreateDBInstance' :: CreateDBInstance -> Maybe Int
monitoringInterval} -> Maybe Int
monitoringInterval) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Int
a -> CreateDBInstance
s {$sel:monitoringInterval:CreateDBInstance' :: Maybe Int
monitoringInterval = Maybe Int
a} :: CreateDBInstance)

-- | 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
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling Setting Up and Enabling Enhanced Monitoring>
-- 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.
createDBInstance_monitoringRoleArn :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_monitoringRoleArn :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_monitoringRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
monitoringRoleArn :: Maybe Text
$sel:monitoringRoleArn:CreateDBInstance' :: CreateDBInstance -> Maybe Text
monitoringRoleArn} -> Maybe Text
monitoringRoleArn) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:monitoringRoleArn:CreateDBInstance' :: Maybe Text
monitoringRoleArn = Maybe Text
a} :: CreateDBInstance)

-- | A value that indicates whether the DB instance is a Multi-AZ deployment.
-- You can\'t set the @AvailabilityZone@ parameter if the DB instance is a
-- Multi-AZ deployment.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable. DB instance Availability Zones (AZs) are managed by the
-- DB cluster.
createDBInstance_multiAZ :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
createDBInstance_multiAZ :: Lens' CreateDBInstance (Maybe Bool)
createDBInstance_multiAZ = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Bool
multiAZ :: Maybe Bool
$sel:multiAZ:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
multiAZ} -> Maybe Bool
multiAZ) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Bool
a -> CreateDBInstance
s {$sel:multiAZ:CreateDBInstance' :: Maybe Bool
multiAZ = Maybe Bool
a} :: CreateDBInstance)

-- | The name of the NCHAR character set for the Oracle DB instance.
--
-- This parameter doesn\'t apply to RDS Custom.
createDBInstance_ncharCharacterSetName :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_ncharCharacterSetName :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_ncharCharacterSetName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
ncharCharacterSetName :: Maybe Text
$sel:ncharCharacterSetName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
ncharCharacterSetName} -> Maybe Text
ncharCharacterSetName) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:ncharCharacterSetName:CreateDBInstance' :: Maybe Text
ncharCharacterSetName = Maybe Text
a} :: CreateDBInstance)

-- | 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 the IPv6 protocols (@DUAL@).
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html Working with a DB instance in a VPC>
-- in the /Amazon RDS User Guide./
createDBInstance_networkType :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_networkType :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_networkType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
networkType :: Maybe Text
$sel:networkType:CreateDBInstance' :: CreateDBInstance -> Maybe Text
networkType} -> Maybe Text
networkType) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:networkType:CreateDBInstance' :: Maybe Text
networkType = Maybe Text
a} :: CreateDBInstance)

-- | A value that 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 after it is associated with a DB
-- instance.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable.
createDBInstance_optionGroupName :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_optionGroupName :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_optionGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
optionGroupName :: Maybe Text
$sel:optionGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
optionGroupName} -> Maybe Text
optionGroupName) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:optionGroupName:CreateDBInstance' :: Maybe Text
optionGroupName = Maybe Text
a} :: CreateDBInstance)

-- | The Amazon Web Services KMS key identifier for encryption of Performance
-- Insights data.
--
-- The Amazon Web Services 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 Amazon Web Services account. Your Amazon Web Services account has a
-- different default KMS key for each Amazon Web Services Region.
--
-- This setting doesn\'t apply to RDS Custom.
createDBInstance_performanceInsightsKMSKeyId :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_performanceInsightsKMSKeyId :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_performanceInsightsKMSKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
performanceInsightsKMSKeyId :: Maybe Text
$sel:performanceInsightsKMSKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
performanceInsightsKMSKeyId} -> Maybe Text
performanceInsightsKMSKeyId) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:performanceInsightsKMSKeyId:CreateDBInstance' :: Maybe Text
performanceInsightsKMSKeyId = Maybe Text
a} :: CreateDBInstance)

-- | The number of days to retain Performance Insights data. The default is 7
-- days. The following values are valid:
--
-- -   7
--
-- -   /month/ * 31, where /month/ is a number of months from 1-23
--
-- -   731
--
-- For example, the following values are valid:
--
-- -   93 (3 months * 31)
--
-- -   341 (11 months * 31)
--
-- -   589 (19 months * 31)
--
-- -   731
--
-- If you specify a retention period such as 94, which isn\'t a valid
-- value, RDS issues an error.
--
-- This setting doesn\'t apply to RDS Custom.
createDBInstance_performanceInsightsRetentionPeriod :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Int)
createDBInstance_performanceInsightsRetentionPeriod :: Lens' CreateDBInstance (Maybe Int)
createDBInstance_performanceInsightsRetentionPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Int
performanceInsightsRetentionPeriod :: Maybe Int
$sel:performanceInsightsRetentionPeriod:CreateDBInstance' :: CreateDBInstance -> Maybe Int
performanceInsightsRetentionPeriod} -> Maybe Int
performanceInsightsRetentionPeriod) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Int
a -> CreateDBInstance
s {$sel:performanceInsightsRetentionPeriod:CreateDBInstance' :: Maybe Int
performanceInsightsRetentionPeriod = Maybe Int
a} :: CreateDBInstance)

-- | The port number on which the database accepts connections.
--
-- __MySQL__
--
-- Default: @3306@
--
-- Valid values: @1150-65535@
--
-- Type: Integer
--
-- __MariaDB__
--
-- 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 @1234@, @1434@, @3260@, @3343@,
-- @3389@, @47001@, and @49152-49156@.
--
-- __Amazon Aurora__
--
-- Default: @3306@
--
-- Valid values: @1150-65535@
--
-- Type: Integer
createDBInstance_port :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Int)
createDBInstance_port :: Lens' CreateDBInstance (Maybe Int)
createDBInstance_port = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Int
port :: Maybe Int
$sel:port:CreateDBInstance' :: CreateDBInstance -> Maybe Int
port} -> Maybe Int
port) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Int
a -> CreateDBInstance
s {$sel:port:CreateDBInstance' :: Maybe Int
port = Maybe Int
a} :: CreateDBInstance)

-- | The daily time range during which automated backups are created if
-- automated backups are enabled, using the @BackupRetentionPeriod@
-- parameter. The default is a 30-minute window selected at random from an
-- 8-hour block of time for each Amazon Web Services Region. For more
-- information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow Backup window>
-- in the /Amazon RDS User Guide/.
--
-- __Amazon Aurora__
--
-- Not applicable. The daily time range for creating automated backups is
-- managed by the DB cluster.
--
-- 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.
createDBInstance_preferredBackupWindow :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_preferredBackupWindow :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_preferredBackupWindow = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
preferredBackupWindow :: Maybe Text
$sel:preferredBackupWindow:CreateDBInstance' :: CreateDBInstance -> Maybe Text
preferredBackupWindow} -> Maybe Text
preferredBackupWindow) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:preferredBackupWindow:CreateDBInstance' :: Maybe Text
preferredBackupWindow = Maybe Text
a} :: CreateDBInstance)

-- | The time range each week during which system maintenance can occur, in
-- Universal Coordinated Time (UTC). For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance Amazon RDS Maintenance Window>.
--
-- 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 Amazon Web Services Region, occurring on a random
-- day of the week.
--
-- Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
--
-- Constraints: Minimum 30-minute window.
createDBInstance_preferredMaintenanceWindow :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_preferredMaintenanceWindow :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_preferredMaintenanceWindow = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
preferredMaintenanceWindow :: Maybe Text
$sel:preferredMaintenanceWindow:CreateDBInstance' :: CreateDBInstance -> Maybe Text
preferredMaintenanceWindow} -> Maybe Text
preferredMaintenanceWindow) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:preferredMaintenanceWindow:CreateDBInstance' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
a} :: CreateDBInstance)

-- | 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 RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable.
createDBInstance_processorFeatures :: Lens.Lens' CreateDBInstance (Prelude.Maybe [ProcessorFeature])
createDBInstance_processorFeatures :: Lens' CreateDBInstance (Maybe [ProcessorFeature])
createDBInstance_processorFeatures = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe [ProcessorFeature]
processorFeatures :: Maybe [ProcessorFeature]
$sel:processorFeatures:CreateDBInstance' :: CreateDBInstance -> Maybe [ProcessorFeature]
processorFeatures} -> Maybe [ProcessorFeature]
processorFeatures) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe [ProcessorFeature]
a -> CreateDBInstance
s {$sel:processorFeatures:CreateDBInstance' :: Maybe [ProcessorFeature]
processorFeatures = Maybe [ProcessorFeature]
a} :: CreateDBInstance) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A value that specifies the order in which an Aurora Replica is promoted
-- to the primary instance after a failure of the existing primary
-- instance. For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.FaultTolerance Fault Tolerance for an Aurora DB Cluster>
-- in the /Amazon Aurora User Guide/.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- Default: 1
--
-- Valid Values: 0 - 15
createDBInstance_promotionTier :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Int)
createDBInstance_promotionTier :: Lens' CreateDBInstance (Maybe Int)
createDBInstance_promotionTier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Int
promotionTier :: Maybe Int
$sel:promotionTier:CreateDBInstance' :: CreateDBInstance -> Maybe Int
promotionTier} -> Maybe Int
promotionTier) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Int
a -> CreateDBInstance
s {$sel:promotionTier:CreateDBInstance' :: Maybe Int
promotionTier = Maybe Int
a} :: CreateDBInstance)

-- | A value that indicates whether the DB instance is publicly accessible.
--
-- When the DB instance is publicly accessible, its Domain Name System
-- (DNS) endpoint resolves to the private IP address from within the DB
-- instance\'s virtual private cloud (VPC). It resolves to the public IP
-- address from outside of the DB instance\'s VPC. Access to the DB
-- instance is ultimately controlled by the security group it uses. That
-- public access is not permitted if the security group assigned to the DB
-- instance doesn\'t permit it.
--
-- When the DB instance isn\'t publicly accessible, it is an internal DB
-- instance with a DNS name that resolves to a private IP address.
--
-- 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 instance is private.
--
-- -   If the default VPC in the target Region has an internet gateway
--     attached to it, the DB instance 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 instance is private.
--
-- -   If the subnets are part of a VPC that has an internet gateway
--     attached to it, the DB instance is public.
createDBInstance_publiclyAccessible :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
createDBInstance_publiclyAccessible :: Lens' CreateDBInstance (Maybe Bool)
createDBInstance_publiclyAccessible = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Bool
publiclyAccessible :: Maybe Bool
$sel:publiclyAccessible:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
publiclyAccessible} -> Maybe Bool
publiclyAccessible) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Bool
a -> CreateDBInstance
s {$sel:publiclyAccessible:CreateDBInstance' :: Maybe Bool
publiclyAccessible = Maybe Bool
a} :: CreateDBInstance)

-- | A value that indicates whether the DB instance is encrypted. By default,
-- it isn\'t encrypted.
--
-- For RDS Custom instances, either set this parameter to @true@ or leave
-- it unset. If you set this parameter to @false@, RDS reports an error.
--
-- __Amazon Aurora__
--
-- Not applicable. The encryption for DB instances is managed by the DB
-- cluster.
createDBInstance_storageEncrypted :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Bool)
createDBInstance_storageEncrypted :: Lens' CreateDBInstance (Maybe Bool)
createDBInstance_storageEncrypted = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Bool
storageEncrypted :: Maybe Bool
$sel:storageEncrypted:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
storageEncrypted} -> Maybe Bool
storageEncrypted) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Bool
a -> CreateDBInstance
s {$sel:storageEncrypted:CreateDBInstance' :: Maybe Bool
storageEncrypted = Maybe Bool
a} :: CreateDBInstance)

-- | 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.
createDBInstance_storageThroughput :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Int)
createDBInstance_storageThroughput :: Lens' CreateDBInstance (Maybe Int)
createDBInstance_storageThroughput = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Int
storageThroughput :: Maybe Int
$sel:storageThroughput:CreateDBInstance' :: CreateDBInstance -> Maybe Int
storageThroughput} -> Maybe Int
storageThroughput) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Int
a -> CreateDBInstance
s {$sel:storageThroughput:CreateDBInstance' :: Maybe Int
storageThroughput = Maybe Int
a} :: CreateDBInstance)

-- | Specifies the storage type to be associated with the DB instance.
--
-- Valid values: @gp2 | gp3 | io1 | standard@
--
-- 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@
--
-- __Amazon Aurora__
--
-- Not applicable. Storage is managed by the DB cluster.
createDBInstance_storageType :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_storageType :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_storageType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
storageType :: Maybe Text
$sel:storageType:CreateDBInstance' :: CreateDBInstance -> Maybe Text
storageType} -> Maybe Text
storageType) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:storageType:CreateDBInstance' :: Maybe Text
storageType = Maybe Text
a} :: CreateDBInstance)

-- | Tags to assign to the DB instance.
createDBInstance_tags :: Lens.Lens' CreateDBInstance (Prelude.Maybe [Tag])
createDBInstance_tags :: Lens' CreateDBInstance (Maybe [Tag])
createDBInstance_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateDBInstance' :: CreateDBInstance -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe [Tag]
a -> CreateDBInstance
s {$sel:tags:CreateDBInstance' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateDBInstance) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The ARN from the key store with which to associate the instance for TDE
-- encryption.
--
-- This setting doesn\'t apply to RDS Custom.
--
-- __Amazon Aurora__
--
-- Not applicable.
createDBInstance_tdeCredentialArn :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_tdeCredentialArn :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_tdeCredentialArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
tdeCredentialArn :: Maybe Text
$sel:tdeCredentialArn:CreateDBInstance' :: CreateDBInstance -> Maybe Text
tdeCredentialArn} -> Maybe Text
tdeCredentialArn) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:tdeCredentialArn:CreateDBInstance' :: Maybe Text
tdeCredentialArn = Maybe Text
a} :: CreateDBInstance)

-- | The password for the given ARN from the key store in order to access the
-- device.
--
-- This setting doesn\'t apply to RDS Custom.
createDBInstance_tdeCredentialPassword :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_tdeCredentialPassword :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_tdeCredentialPassword = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
tdeCredentialPassword :: Maybe Text
$sel:tdeCredentialPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Text
tdeCredentialPassword} -> Maybe Text
tdeCredentialPassword) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:tdeCredentialPassword:CreateDBInstance' :: Maybe Text
tdeCredentialPassword = Maybe Text
a} :: CreateDBInstance)

-- | The time zone of the DB instance. The time zone parameter is currently
-- supported only by
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone Microsoft SQL Server>.
createDBInstance_timezone :: Lens.Lens' CreateDBInstance (Prelude.Maybe Prelude.Text)
createDBInstance_timezone :: Lens' CreateDBInstance (Maybe Text)
createDBInstance_timezone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe Text
timezone :: Maybe Text
$sel:timezone:CreateDBInstance' :: CreateDBInstance -> Maybe Text
timezone} -> Maybe Text
timezone) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe Text
a -> CreateDBInstance
s {$sel:timezone:CreateDBInstance' :: Maybe Text
timezone = Maybe Text
a} :: CreateDBInstance)

-- | A list of Amazon EC2 VPC security groups to associate with this DB
-- instance.
--
-- __Amazon Aurora__
--
-- Not applicable. The associated list of EC2 VPC security groups is
-- managed by the DB cluster.
--
-- Default: The default EC2 VPC security group for the DB subnet group\'s
-- VPC.
createDBInstance_vpcSecurityGroupIds :: Lens.Lens' CreateDBInstance (Prelude.Maybe [Prelude.Text])
createDBInstance_vpcSecurityGroupIds :: Lens' CreateDBInstance (Maybe [Text])
createDBInstance_vpcSecurityGroupIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Maybe [Text]
vpcSecurityGroupIds :: Maybe [Text]
$sel:vpcSecurityGroupIds:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
vpcSecurityGroupIds} -> Maybe [Text]
vpcSecurityGroupIds) (\s :: CreateDBInstance
s@CreateDBInstance' {} Maybe [Text]
a -> CreateDBInstance
s {$sel:vpcSecurityGroupIds:CreateDBInstance' :: Maybe [Text]
vpcSecurityGroupIds = Maybe [Text]
a} :: CreateDBInstance) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The DB instance 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: @mydbinstance@
createDBInstance_dbInstanceIdentifier :: Lens.Lens' CreateDBInstance Prelude.Text
createDBInstance_dbInstanceIdentifier :: Lens' CreateDBInstance Text
createDBInstance_dbInstanceIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Text
dbInstanceIdentifier :: Text
$sel:dbInstanceIdentifier:CreateDBInstance' :: CreateDBInstance -> Text
dbInstanceIdentifier} -> Text
dbInstanceIdentifier) (\s :: CreateDBInstance
s@CreateDBInstance' {} Text
a -> CreateDBInstance
s {$sel:dbInstanceIdentifier:CreateDBInstance' :: Text
dbInstanceIdentifier = Text
a} :: CreateDBInstance)

-- | The compute and memory capacity of the DB instance, for example
-- db.m5.large. Not all DB instance classes are available in all Amazon Web
-- Services Regions, or for all database engines. For the full list of DB
-- instance classes, and availability for your engine, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html DB instance classes>
-- in the /Amazon RDS User Guide/ or
-- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html Aurora DB instance classes>
-- in the /Amazon Aurora User Guide/.
createDBInstance_dbInstanceClass :: Lens.Lens' CreateDBInstance Prelude.Text
createDBInstance_dbInstanceClass :: Lens' CreateDBInstance Text
createDBInstance_dbInstanceClass = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Text
dbInstanceClass :: Text
$sel:dbInstanceClass:CreateDBInstance' :: CreateDBInstance -> Text
dbInstanceClass} -> Text
dbInstanceClass) (\s :: CreateDBInstance
s@CreateDBInstance' {} Text
a -> CreateDBInstance
s {$sel:dbInstanceClass:CreateDBInstance' :: Text
dbInstanceClass = Text
a} :: CreateDBInstance)

-- | The name of the database engine to be used for this instance.
--
-- Not every database engine is available for every Amazon Web Services
-- Region.
--
-- Valid Values:
--
-- -   @aurora@ (for MySQL 5.6-compatible Aurora)
--
-- -   @aurora-mysql@ (for MySQL 5.7-compatible and MySQL 8.0-compatible
--     Aurora)
--
-- -   @aurora-postgresql@
--
-- -   @custom-oracle-ee (for RDS Custom for Oracle instances)@
--
-- -   @custom-sqlserver-ee (for RDS Custom for SQL Server instances)@
--
-- -   @custom-sqlserver-se (for RDS Custom for SQL Server instances)@
--
-- -   @custom-sqlserver-web (for RDS Custom for SQL Server instances)@
--
-- -   @mariadb@
--
-- -   @mysql@
--
-- -   @oracle-ee@
--
-- -   @oracle-ee-cdb@
--
-- -   @oracle-se2@
--
-- -   @oracle-se2-cdb@
--
-- -   @postgres@
--
-- -   @sqlserver-ee@
--
-- -   @sqlserver-se@
--
-- -   @sqlserver-ex@
--
-- -   @sqlserver-web@
createDBInstance_engine :: Lens.Lens' CreateDBInstance Prelude.Text
createDBInstance_engine :: Lens' CreateDBInstance Text
createDBInstance_engine = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstance' {Text
engine :: Text
$sel:engine:CreateDBInstance' :: CreateDBInstance -> Text
engine} -> Text
engine) (\s :: CreateDBInstance
s@CreateDBInstance' {} Text
a -> CreateDBInstance
s {$sel:engine:CreateDBInstance' :: Text
engine = Text
a} :: CreateDBInstance)

instance Core.AWSRequest CreateDBInstance where
  type
    AWSResponse CreateDBInstance =
      CreateDBInstanceResponse
  request :: (Service -> Service)
-> CreateDBInstance -> Request CreateDBInstance
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateDBInstance
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateDBInstance)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"CreateDBInstanceResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe DBInstance -> Int -> CreateDBInstanceResponse
CreateDBInstanceResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DBInstance")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable CreateDBInstance where
  hashWithSalt :: Int -> CreateDBInstance -> Int
hashWithSalt Int
_salt CreateDBInstance' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [ProcessorFeature]
Maybe [Tag]
Maybe Text
Text
engine :: Text
dbInstanceClass :: Text
dbInstanceIdentifier :: Text
vpcSecurityGroupIds :: Maybe [Text]
timezone :: Maybe Text
tdeCredentialPassword :: Maybe Text
tdeCredentialArn :: Maybe Text
tags :: Maybe [Tag]
storageType :: Maybe Text
storageThroughput :: Maybe Int
storageEncrypted :: Maybe Bool
publiclyAccessible :: Maybe Bool
promotionTier :: Maybe Int
processorFeatures :: Maybe [ProcessorFeature]
preferredMaintenanceWindow :: Maybe Text
preferredBackupWindow :: Maybe Text
port :: Maybe Int
performanceInsightsRetentionPeriod :: Maybe Int
performanceInsightsKMSKeyId :: Maybe Text
optionGroupName :: Maybe Text
networkType :: Maybe Text
ncharCharacterSetName :: Maybe Text
multiAZ :: Maybe Bool
monitoringRoleArn :: Maybe Text
monitoringInterval :: Maybe Int
maxAllocatedStorage :: Maybe Int
masterUsername :: Maybe Text
masterUserSecretKmsKeyId :: Maybe Text
masterUserPassword :: Maybe Text
manageMasterUserPassword :: Maybe Bool
licenseModel :: Maybe Text
kmsKeyId :: Maybe Text
iops :: Maybe Int
engineVersion :: Maybe Text
enablePerformanceInsights :: Maybe Bool
enableIAMDatabaseAuthentication :: Maybe Bool
enableCustomerOwnedIp :: Maybe Bool
enableCloudwatchLogsExports :: Maybe [Text]
domainIAMRoleName :: Maybe Text
domain :: Maybe Text
deletionProtection :: Maybe Bool
dbSubnetGroupName :: Maybe Text
dbSecurityGroups :: Maybe [Text]
dbParameterGroupName :: Maybe Text
dbName :: Maybe Text
dbClusterIdentifier :: Maybe Text
customIamInstanceProfile :: Maybe Text
copyTagsToSnapshot :: Maybe Bool
characterSetName :: Maybe Text
cACertificateIdentifier :: Maybe Text
backupTarget :: Maybe Text
backupRetentionPeriod :: Maybe Int
availabilityZone :: Maybe Text
autoMinorVersionUpgrade :: Maybe Bool
allocatedStorage :: Maybe Int
$sel:engine:CreateDBInstance' :: CreateDBInstance -> Text
$sel:dbInstanceClass:CreateDBInstance' :: CreateDBInstance -> Text
$sel:dbInstanceIdentifier:CreateDBInstance' :: CreateDBInstance -> Text
$sel:vpcSecurityGroupIds:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
$sel:timezone:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:tdeCredentialPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:tdeCredentialArn:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:tags:CreateDBInstance' :: CreateDBInstance -> Maybe [Tag]
$sel:storageType:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:storageThroughput:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:storageEncrypted:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:publiclyAccessible:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:promotionTier:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:processorFeatures:CreateDBInstance' :: CreateDBInstance -> Maybe [ProcessorFeature]
$sel:preferredMaintenanceWindow:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:preferredBackupWindow:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:port:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:performanceInsightsRetentionPeriod:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:performanceInsightsKMSKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:optionGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:networkType:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:ncharCharacterSetName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:multiAZ:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:monitoringRoleArn:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:monitoringInterval:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:maxAllocatedStorage:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:masterUsername:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:masterUserSecretKmsKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:masterUserPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:manageMasterUserPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:licenseModel:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:kmsKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:iops:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:engineVersion:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:enablePerformanceInsights:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:enableIAMDatabaseAuthentication:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:enableCustomerOwnedIp:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:enableCloudwatchLogsExports:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
$sel:domainIAMRoleName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:domain:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:deletionProtection:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:dbSubnetGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:dbSecurityGroups:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
$sel:dbParameterGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:dbName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:dbClusterIdentifier:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:customIamInstanceProfile:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:copyTagsToSnapshot:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:characterSetName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:cACertificateIdentifier:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:backupTarget:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:backupRetentionPeriod:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:availabilityZone:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:autoMinorVersionUpgrade:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:allocatedStorage:CreateDBInstance' :: CreateDBInstance -> Maybe Int
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
allocatedStorage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
autoMinorVersionUpgrade
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
availabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
backupRetentionPeriod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
backupTarget
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
cACertificateIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
characterSetName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
copyTagsToSnapshot
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
customIamInstanceProfile
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dbClusterIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dbName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dbParameterGroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
dbSecurityGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dbSubnetGroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
deletionProtection
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
domain
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
domainIAMRoleName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
enableCloudwatchLogsExports
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enableCustomerOwnedIp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enableIAMDatabaseAuthentication
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enablePerformanceInsights
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
engineVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
iops
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
kmsKeyId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
licenseModel
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
manageMasterUserPassword
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
masterUserPassword
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
masterUserSecretKmsKeyId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
masterUsername
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxAllocatedStorage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
monitoringInterval
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
monitoringRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
multiAZ
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ncharCharacterSetName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
networkType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
optionGroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
performanceInsightsKMSKeyId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
performanceInsightsRetentionPeriod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
port
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredBackupWindow
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredMaintenanceWindow
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ProcessorFeature]
processorFeatures
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
promotionTier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
publiclyAccessible
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
storageEncrypted
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
storageThroughput
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
storageType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
tdeCredentialArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
tdeCredentialPassword
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
timezone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
vpcSecurityGroupIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
dbInstanceIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
dbInstanceClass
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
engine

instance Prelude.NFData CreateDBInstance where
  rnf :: CreateDBInstance -> ()
rnf CreateDBInstance' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [ProcessorFeature]
Maybe [Tag]
Maybe Text
Text
engine :: Text
dbInstanceClass :: Text
dbInstanceIdentifier :: Text
vpcSecurityGroupIds :: Maybe [Text]
timezone :: Maybe Text
tdeCredentialPassword :: Maybe Text
tdeCredentialArn :: Maybe Text
tags :: Maybe [Tag]
storageType :: Maybe Text
storageThroughput :: Maybe Int
storageEncrypted :: Maybe Bool
publiclyAccessible :: Maybe Bool
promotionTier :: Maybe Int
processorFeatures :: Maybe [ProcessorFeature]
preferredMaintenanceWindow :: Maybe Text
preferredBackupWindow :: Maybe Text
port :: Maybe Int
performanceInsightsRetentionPeriod :: Maybe Int
performanceInsightsKMSKeyId :: Maybe Text
optionGroupName :: Maybe Text
networkType :: Maybe Text
ncharCharacterSetName :: Maybe Text
multiAZ :: Maybe Bool
monitoringRoleArn :: Maybe Text
monitoringInterval :: Maybe Int
maxAllocatedStorage :: Maybe Int
masterUsername :: Maybe Text
masterUserSecretKmsKeyId :: Maybe Text
masterUserPassword :: Maybe Text
manageMasterUserPassword :: Maybe Bool
licenseModel :: Maybe Text
kmsKeyId :: Maybe Text
iops :: Maybe Int
engineVersion :: Maybe Text
enablePerformanceInsights :: Maybe Bool
enableIAMDatabaseAuthentication :: Maybe Bool
enableCustomerOwnedIp :: Maybe Bool
enableCloudwatchLogsExports :: Maybe [Text]
domainIAMRoleName :: Maybe Text
domain :: Maybe Text
deletionProtection :: Maybe Bool
dbSubnetGroupName :: Maybe Text
dbSecurityGroups :: Maybe [Text]
dbParameterGroupName :: Maybe Text
dbName :: Maybe Text
dbClusterIdentifier :: Maybe Text
customIamInstanceProfile :: Maybe Text
copyTagsToSnapshot :: Maybe Bool
characterSetName :: Maybe Text
cACertificateIdentifier :: Maybe Text
backupTarget :: Maybe Text
backupRetentionPeriod :: Maybe Int
availabilityZone :: Maybe Text
autoMinorVersionUpgrade :: Maybe Bool
allocatedStorage :: Maybe Int
$sel:engine:CreateDBInstance' :: CreateDBInstance -> Text
$sel:dbInstanceClass:CreateDBInstance' :: CreateDBInstance -> Text
$sel:dbInstanceIdentifier:CreateDBInstance' :: CreateDBInstance -> Text
$sel:vpcSecurityGroupIds:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
$sel:timezone:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:tdeCredentialPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:tdeCredentialArn:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:tags:CreateDBInstance' :: CreateDBInstance -> Maybe [Tag]
$sel:storageType:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:storageThroughput:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:storageEncrypted:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:publiclyAccessible:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:promotionTier:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:processorFeatures:CreateDBInstance' :: CreateDBInstance -> Maybe [ProcessorFeature]
$sel:preferredMaintenanceWindow:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:preferredBackupWindow:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:port:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:performanceInsightsRetentionPeriod:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:performanceInsightsKMSKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:optionGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:networkType:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:ncharCharacterSetName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:multiAZ:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:monitoringRoleArn:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:monitoringInterval:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:maxAllocatedStorage:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:masterUsername:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:masterUserSecretKmsKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:masterUserPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:manageMasterUserPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:licenseModel:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:kmsKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:iops:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:engineVersion:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:enablePerformanceInsights:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:enableIAMDatabaseAuthentication:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:enableCustomerOwnedIp:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:enableCloudwatchLogsExports:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
$sel:domainIAMRoleName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:domain:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:deletionProtection:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:dbSubnetGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:dbSecurityGroups:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
$sel:dbParameterGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:dbName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:dbClusterIdentifier:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:customIamInstanceProfile:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:copyTagsToSnapshot:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:characterSetName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:cACertificateIdentifier:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:backupTarget:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:backupRetentionPeriod:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:availabilityZone:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:autoMinorVersionUpgrade:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:allocatedStorage:CreateDBInstance' :: CreateDBInstance -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
allocatedStorage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
autoMinorVersionUpgrade
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
availabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
backupRetentionPeriod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
backupTarget
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
cACertificateIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
characterSetName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
copyTagsToSnapshot
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
customIamInstanceProfile
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dbClusterIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dbName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dbParameterGroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
dbSecurityGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dbSubnetGroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
deletionProtection
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
domain
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
domainIAMRoleName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Text]
enableCloudwatchLogsExports
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
enableCustomerOwnedIp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
enableIAMDatabaseAuthentication
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
enablePerformanceInsights
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
engineVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
iops
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
kmsKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
licenseModel
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
manageMasterUserPassword
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
masterUserPassword
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
masterUserSecretKmsKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
masterUsername
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
maxAllocatedStorage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
monitoringInterval
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
monitoringRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
multiAZ
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
ncharCharacterSetName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
networkType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
optionGroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
performanceInsightsKMSKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
performanceInsightsRetentionPeriod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
port
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
preferredBackupWindow
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
preferredMaintenanceWindow
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [ProcessorFeature]
processorFeatures
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
promotionTier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
publiclyAccessible
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
storageEncrypted
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
storageThroughput
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
storageType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
tdeCredentialArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
tdeCredentialPassword
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
timezone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Text]
vpcSecurityGroupIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Text
dbInstanceIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Text
dbInstanceClass
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Text
engine

instance Data.ToHeaders CreateDBInstance where
  toHeaders :: CreateDBInstance -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath CreateDBInstance where
  toPath :: CreateDBInstance -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery CreateDBInstance where
  toQuery :: CreateDBInstance -> QueryString
toQuery CreateDBInstance' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [ProcessorFeature]
Maybe [Tag]
Maybe Text
Text
engine :: Text
dbInstanceClass :: Text
dbInstanceIdentifier :: Text
vpcSecurityGroupIds :: Maybe [Text]
timezone :: Maybe Text
tdeCredentialPassword :: Maybe Text
tdeCredentialArn :: Maybe Text
tags :: Maybe [Tag]
storageType :: Maybe Text
storageThroughput :: Maybe Int
storageEncrypted :: Maybe Bool
publiclyAccessible :: Maybe Bool
promotionTier :: Maybe Int
processorFeatures :: Maybe [ProcessorFeature]
preferredMaintenanceWindow :: Maybe Text
preferredBackupWindow :: Maybe Text
port :: Maybe Int
performanceInsightsRetentionPeriod :: Maybe Int
performanceInsightsKMSKeyId :: Maybe Text
optionGroupName :: Maybe Text
networkType :: Maybe Text
ncharCharacterSetName :: Maybe Text
multiAZ :: Maybe Bool
monitoringRoleArn :: Maybe Text
monitoringInterval :: Maybe Int
maxAllocatedStorage :: Maybe Int
masterUsername :: Maybe Text
masterUserSecretKmsKeyId :: Maybe Text
masterUserPassword :: Maybe Text
manageMasterUserPassword :: Maybe Bool
licenseModel :: Maybe Text
kmsKeyId :: Maybe Text
iops :: Maybe Int
engineVersion :: Maybe Text
enablePerformanceInsights :: Maybe Bool
enableIAMDatabaseAuthentication :: Maybe Bool
enableCustomerOwnedIp :: Maybe Bool
enableCloudwatchLogsExports :: Maybe [Text]
domainIAMRoleName :: Maybe Text
domain :: Maybe Text
deletionProtection :: Maybe Bool
dbSubnetGroupName :: Maybe Text
dbSecurityGroups :: Maybe [Text]
dbParameterGroupName :: Maybe Text
dbName :: Maybe Text
dbClusterIdentifier :: Maybe Text
customIamInstanceProfile :: Maybe Text
copyTagsToSnapshot :: Maybe Bool
characterSetName :: Maybe Text
cACertificateIdentifier :: Maybe Text
backupTarget :: Maybe Text
backupRetentionPeriod :: Maybe Int
availabilityZone :: Maybe Text
autoMinorVersionUpgrade :: Maybe Bool
allocatedStorage :: Maybe Int
$sel:engine:CreateDBInstance' :: CreateDBInstance -> Text
$sel:dbInstanceClass:CreateDBInstance' :: CreateDBInstance -> Text
$sel:dbInstanceIdentifier:CreateDBInstance' :: CreateDBInstance -> Text
$sel:vpcSecurityGroupIds:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
$sel:timezone:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:tdeCredentialPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:tdeCredentialArn:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:tags:CreateDBInstance' :: CreateDBInstance -> Maybe [Tag]
$sel:storageType:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:storageThroughput:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:storageEncrypted:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:publiclyAccessible:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:promotionTier:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:processorFeatures:CreateDBInstance' :: CreateDBInstance -> Maybe [ProcessorFeature]
$sel:preferredMaintenanceWindow:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:preferredBackupWindow:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:port:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:performanceInsightsRetentionPeriod:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:performanceInsightsKMSKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:optionGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:networkType:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:ncharCharacterSetName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:multiAZ:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:monitoringRoleArn:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:monitoringInterval:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:maxAllocatedStorage:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:masterUsername:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:masterUserSecretKmsKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:masterUserPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:manageMasterUserPassword:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:licenseModel:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:kmsKeyId:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:iops:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:engineVersion:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:enablePerformanceInsights:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:enableIAMDatabaseAuthentication:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:enableCustomerOwnedIp:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:enableCloudwatchLogsExports:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
$sel:domainIAMRoleName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:domain:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:deletionProtection:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:dbSubnetGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:dbSecurityGroups:CreateDBInstance' :: CreateDBInstance -> Maybe [Text]
$sel:dbParameterGroupName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:dbName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:dbClusterIdentifier:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:customIamInstanceProfile:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:copyTagsToSnapshot:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:characterSetName:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:cACertificateIdentifier:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:backupTarget:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:backupRetentionPeriod:CreateDBInstance' :: CreateDBInstance -> Maybe Int
$sel:availabilityZone:CreateDBInstance' :: CreateDBInstance -> Maybe Text
$sel:autoMinorVersionUpgrade:CreateDBInstance' :: CreateDBInstance -> Maybe Bool
$sel:allocatedStorage:CreateDBInstance' :: CreateDBInstance -> Maybe Int
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"CreateDBInstance" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2014-10-31" :: Prelude.ByteString),
        ByteString
"AllocatedStorage" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
allocatedStorage,
        ByteString
"AutoMinorVersionUpgrade"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
autoMinorVersionUpgrade,
        ByteString
"AvailabilityZone" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
availabilityZone,
        ByteString
"BackupRetentionPeriod"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
backupRetentionPeriod,
        ByteString
"BackupTarget" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
backupTarget,
        ByteString
"CACertificateIdentifier"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
cACertificateIdentifier,
        ByteString
"CharacterSetName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
characterSetName,
        ByteString
"CopyTagsToSnapshot" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
copyTagsToSnapshot,
        ByteString
"CustomIamInstanceProfile"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
customIamInstanceProfile,
        ByteString
"DBClusterIdentifier" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
dbClusterIdentifier,
        ByteString
"DBName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
dbName,
        ByteString
"DBParameterGroupName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
dbParameterGroupName,
        ByteString
"DBSecurityGroups"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"DBSecurityGroupName"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
dbSecurityGroups
            ),
        ByteString
"DBSubnetGroupName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
dbSubnetGroupName,
        ByteString
"DeletionProtection" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
deletionProtection,
        ByteString
"Domain" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
domain,
        ByteString
"DomainIAMRoleName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
domainIAMRoleName,
        ByteString
"EnableCloudwatchLogsExports"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
enableCloudwatchLogsExports
            ),
        ByteString
"EnableCustomerOwnedIp"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
enableCustomerOwnedIp,
        ByteString
"EnableIAMDatabaseAuthentication"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
enableIAMDatabaseAuthentication,
        ByteString
"EnablePerformanceInsights"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
enablePerformanceInsights,
        ByteString
"EngineVersion" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
engineVersion,
        ByteString
"Iops" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
iops,
        ByteString
"KmsKeyId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
kmsKeyId,
        ByteString
"LicenseModel" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
licenseModel,
        ByteString
"ManageMasterUserPassword"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
manageMasterUserPassword,
        ByteString
"MasterUserPassword" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
masterUserPassword,
        ByteString
"MasterUserSecretKmsKeyId"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
masterUserSecretKmsKeyId,
        ByteString
"MasterUsername" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
masterUsername,
        ByteString
"MaxAllocatedStorage" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
maxAllocatedStorage,
        ByteString
"MonitoringInterval" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
monitoringInterval,
        ByteString
"MonitoringRoleArn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
monitoringRoleArn,
        ByteString
"MultiAZ" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
multiAZ,
        ByteString
"NcharCharacterSetName"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
ncharCharacterSetName,
        ByteString
"NetworkType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
networkType,
        ByteString
"OptionGroupName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
optionGroupName,
        ByteString
"PerformanceInsightsKMSKeyId"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
performanceInsightsKMSKeyId,
        ByteString
"PerformanceInsightsRetentionPeriod"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
performanceInsightsRetentionPeriod,
        ByteString
"Port" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
port,
        ByteString
"PreferredBackupWindow"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
preferredBackupWindow,
        ByteString
"PreferredMaintenanceWindow"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
preferredMaintenanceWindow,
        ByteString
"ProcessorFeatures"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"ProcessorFeature"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [ProcessorFeature]
processorFeatures
            ),
        ByteString
"PromotionTier" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
promotionTier,
        ByteString
"PubliclyAccessible" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
publiclyAccessible,
        ByteString
"StorageEncrypted" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
storageEncrypted,
        ByteString
"StorageThroughput" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
storageThroughput,
        ByteString
"StorageType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
storageType,
        ByteString
"Tags"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"Tag" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Tag]
tags),
        ByteString
"TdeCredentialArn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
tdeCredentialArn,
        ByteString
"TdeCredentialPassword"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
tdeCredentialPassword,
        ByteString
"Timezone" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
timezone,
        ByteString
"VpcSecurityGroupIds"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"VpcSecurityGroupId"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
vpcSecurityGroupIds
            ),
        ByteString
"DBInstanceIdentifier" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
dbInstanceIdentifier,
        ByteString
"DBInstanceClass" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
dbInstanceClass,
        ByteString
"Engine" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
engine
      ]

-- | /See:/ 'newCreateDBInstanceResponse' smart constructor.
data CreateDBInstanceResponse = CreateDBInstanceResponse'
  { CreateDBInstanceResponse -> Maybe DBInstance
dbInstance :: Prelude.Maybe DBInstance,
    -- | The response's http status code.
    CreateDBInstanceResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateDBInstanceResponse -> CreateDBInstanceResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateDBInstanceResponse -> CreateDBInstanceResponse -> Bool
$c/= :: CreateDBInstanceResponse -> CreateDBInstanceResponse -> Bool
== :: CreateDBInstanceResponse -> CreateDBInstanceResponse -> Bool
$c== :: CreateDBInstanceResponse -> CreateDBInstanceResponse -> Bool
Prelude.Eq, ReadPrec [CreateDBInstanceResponse]
ReadPrec CreateDBInstanceResponse
Int -> ReadS CreateDBInstanceResponse
ReadS [CreateDBInstanceResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateDBInstanceResponse]
$creadListPrec :: ReadPrec [CreateDBInstanceResponse]
readPrec :: ReadPrec CreateDBInstanceResponse
$creadPrec :: ReadPrec CreateDBInstanceResponse
readList :: ReadS [CreateDBInstanceResponse]
$creadList :: ReadS [CreateDBInstanceResponse]
readsPrec :: Int -> ReadS CreateDBInstanceResponse
$creadsPrec :: Int -> ReadS CreateDBInstanceResponse
Prelude.Read, Int -> CreateDBInstanceResponse -> ShowS
[CreateDBInstanceResponse] -> ShowS
CreateDBInstanceResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateDBInstanceResponse] -> ShowS
$cshowList :: [CreateDBInstanceResponse] -> ShowS
show :: CreateDBInstanceResponse -> String
$cshow :: CreateDBInstanceResponse -> String
showsPrec :: Int -> CreateDBInstanceResponse -> ShowS
$cshowsPrec :: Int -> CreateDBInstanceResponse -> ShowS
Prelude.Show, forall x.
Rep CreateDBInstanceResponse x -> CreateDBInstanceResponse
forall x.
CreateDBInstanceResponse -> Rep CreateDBInstanceResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateDBInstanceResponse x -> CreateDBInstanceResponse
$cfrom :: forall x.
CreateDBInstanceResponse -> Rep CreateDBInstanceResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateDBInstanceResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'dbInstance', 'createDBInstanceResponse_dbInstance' - Undocumented member.
--
-- 'httpStatus', 'createDBInstanceResponse_httpStatus' - The response's http status code.
newCreateDBInstanceResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateDBInstanceResponse
newCreateDBInstanceResponse :: Int -> CreateDBInstanceResponse
newCreateDBInstanceResponse Int
pHttpStatus_ =
  CreateDBInstanceResponse'
    { $sel:dbInstance:CreateDBInstanceResponse' :: Maybe DBInstance
dbInstance =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateDBInstanceResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Undocumented member.
createDBInstanceResponse_dbInstance :: Lens.Lens' CreateDBInstanceResponse (Prelude.Maybe DBInstance)
createDBInstanceResponse_dbInstance :: Lens' CreateDBInstanceResponse (Maybe DBInstance)
createDBInstanceResponse_dbInstance = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstanceResponse' {Maybe DBInstance
dbInstance :: Maybe DBInstance
$sel:dbInstance:CreateDBInstanceResponse' :: CreateDBInstanceResponse -> Maybe DBInstance
dbInstance} -> Maybe DBInstance
dbInstance) (\s :: CreateDBInstanceResponse
s@CreateDBInstanceResponse' {} Maybe DBInstance
a -> CreateDBInstanceResponse
s {$sel:dbInstance:CreateDBInstanceResponse' :: Maybe DBInstance
dbInstance = Maybe DBInstance
a} :: CreateDBInstanceResponse)

-- | The response's http status code.
createDBInstanceResponse_httpStatus :: Lens.Lens' CreateDBInstanceResponse Prelude.Int
createDBInstanceResponse_httpStatus :: Lens' CreateDBInstanceResponse Int
createDBInstanceResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDBInstanceResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateDBInstanceResponse' :: CreateDBInstanceResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateDBInstanceResponse
s@CreateDBInstanceResponse' {} Int
a -> CreateDBInstanceResponse
s {$sel:httpStatus:CreateDBInstanceResponse' :: Int
httpStatus = Int
a} :: CreateDBInstanceResponse)

instance Prelude.NFData CreateDBInstanceResponse where
  rnf :: CreateDBInstanceResponse -> ()
rnf CreateDBInstanceResponse' {Int
Maybe DBInstance
httpStatus :: Int
dbInstance :: Maybe DBInstance
$sel:httpStatus:CreateDBInstanceResponse' :: CreateDBInstanceResponse -> Int
$sel:dbInstance:CreateDBInstanceResponse' :: CreateDBInstanceResponse -> Maybe DBInstance
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DBInstance
dbInstance
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus