diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,14 +8,14 @@
 
 ## Version
 
-`1.4.3`
+`1.4.4`
 
 
 ## Description
 
 AWS Database Migration Service
 
-AWS Database Migration Service (AWS DMS) can migrate your data to and from the most widely used commercial and open-source databases such as Oracle, PostgreSQL, Microsoft SQL Server, MariaDB, Amazon Aurora, and MySQL. The service supports homogeneous migrations such as Oracle to Oracle, as well as heterogeneous migrations between different database platforms, such as Oracle to MySQL or SQL Server to PostgreSQL.
+AWS Database Migration Service (AWS DMS) can migrate your data to and from the most widely used commercial and open-source databases such as Oracle, PostgreSQL, Microsoft SQL Server, Amazon Redshift, MariaDB, Amazon Aurora, and MySQL. The service supports homogeneous migrations such as Oracle to Oracle, as well as heterogeneous migrations between different database platforms, such as Oracle to MySQL or SQL Server to PostgreSQL.
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-dms)
 and the [AWS API Reference](https://aws.amazon.com/documentation/).
diff --git a/amazonka-dms.cabal b/amazonka-dms.cabal
--- a/amazonka-dms.cabal
+++ b/amazonka-dms.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-dms
-version:               1.4.3
+version:               1.4.4
 synopsis:              Amazon Database Migration Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -11,11 +11,11 @@
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto
+extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
 description:
     AWS Database Migration Service
 
-    AWS Database Migration Service (AWS DMS) can migrate your data to and from the most widely used commercial and open-source databases such as Oracle, PostgreSQL, Microsoft SQL Server, MariaDB, Amazon Aurora, and MySQL. The service supports homogeneous migrations such as Oracle to Oracle, as well as heterogeneous migrations between different database platforms, such as Oracle to MySQL or SQL Server to PostgreSQL.
+    AWS Database Migration Service (AWS DMS) can migrate your data to and from the most widely used commercial and open-source databases such as Oracle, PostgreSQL, Microsoft SQL Server, Amazon Redshift, MariaDB, Amazon Aurora, and MySQL. The service supports homogeneous migrations such as Oracle to Oracle, as well as heterogeneous migrations between different database platforms, such as Oracle to MySQL or SQL Server to PostgreSQL.
     .
     The types from this library are intended to be used with
     <http://hackage.haskell.org/package/amazonka amazonka>, which provides
@@ -48,11 +48,13 @@
         , Network.AWS.DMS.CreateReplicationInstance
         , Network.AWS.DMS.CreateReplicationSubnetGroup
         , Network.AWS.DMS.CreateReplicationTask
+        , Network.AWS.DMS.DeleteCertificate
         , Network.AWS.DMS.DeleteEndpoint
         , Network.AWS.DMS.DeleteReplicationInstance
         , Network.AWS.DMS.DeleteReplicationSubnetGroup
         , Network.AWS.DMS.DeleteReplicationTask
         , Network.AWS.DMS.DescribeAccountAttributes
+        , Network.AWS.DMS.DescribeCertificates
         , Network.AWS.DMS.DescribeConnections
         , Network.AWS.DMS.DescribeEndpointTypes
         , Network.AWS.DMS.DescribeEndpoints
@@ -63,6 +65,7 @@
         , Network.AWS.DMS.DescribeReplicationTasks
         , Network.AWS.DMS.DescribeSchemas
         , Network.AWS.DMS.DescribeTableStatistics
+        , Network.AWS.DMS.ImportCertificate
         , Network.AWS.DMS.ListTagsForResource
         , Network.AWS.DMS.ModifyEndpoint
         , Network.AWS.DMS.ModifyReplicationInstance
@@ -80,7 +83,7 @@
         , Network.AWS.DMS.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.3.*
+          amazonka-core == 1.4.4.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-dms-test
@@ -100,9 +103,9 @@
         , Test.AWS.DMS.Internal
 
     build-depends:
-          amazonka-core == 1.4.3.*
-        , amazonka-test == 1.4.3.*
-        , amazonka-dms == 1.4.3.*
+          amazonka-core == 1.4.4.*
+        , amazonka-test == 1.4.4.*
+        , amazonka-dms == 1.4.4.*
         , base
         , bytestring
         , tasty
diff --git a/fixture/DeleteCertificate.yaml b/fixture/DeleteCertificate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteCertificate.yaml
diff --git a/fixture/DeleteCertificateResponse.proto b/fixture/DeleteCertificateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteCertificateResponse.proto
diff --git a/fixture/DescribeCertificates.yaml b/fixture/DescribeCertificates.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCertificates.yaml
diff --git a/fixture/DescribeCertificatesResponse.proto b/fixture/DescribeCertificatesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCertificatesResponse.proto
diff --git a/fixture/ImportCertificate.yaml b/fixture/ImportCertificate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ImportCertificate.yaml
diff --git a/fixture/ImportCertificateResponse.proto b/fixture/ImportCertificateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ImportCertificateResponse.proto
diff --git a/gen/Network/AWS/DMS.hs b/gen/Network/AWS/DMS.hs
--- a/gen/Network/AWS/DMS.hs
+++ b/gen/Network/AWS/DMS.hs
@@ -13,7 +13,7 @@
 --
 -- AWS Database Migration Service
 --
--- AWS Database Migration Service (AWS DMS) can migrate your data to and from the most widely used commercial and open-source databases such as Oracle, PostgreSQL, Microsoft SQL Server, MariaDB, Amazon Aurora, and MySQL. The service supports homogeneous migrations such as Oracle to Oracle, as well as heterogeneous migrations between different database platforms, such as Oracle to MySQL or SQL Server to PostgreSQL.
+-- AWS Database Migration Service (AWS DMS) can migrate your data to and from the most widely used commercial and open-source databases such as Oracle, PostgreSQL, Microsoft SQL Server, Amazon Redshift, MariaDB, Amazon Aurora, and MySQL. The service supports homogeneous migrations such as Oracle to Oracle, as well as heterogeneous migrations between different database platforms, such as Oracle to MySQL or SQL Server to PostgreSQL.
 module Network.AWS.DMS
     (
     -- * Service Configuration
@@ -34,6 +34,9 @@
     -- ** InvalidResourceStateFault
     , _InvalidResourceStateFault
 
+    -- ** InvalidCertificateFault
+    , _InvalidCertificateFault
+
     -- ** ResourceAlreadyExistsFault
     , _ResourceAlreadyExistsFault
 
@@ -97,6 +100,9 @@
     -- ** ModifyEndpoint
     , module Network.AWS.DMS.ModifyEndpoint
 
+    -- ** DescribeCertificates
+    , module Network.AWS.DMS.DescribeCertificates
+
     -- ** DescribeTableStatistics
     , module Network.AWS.DMS.DescribeTableStatistics
 
@@ -112,6 +118,9 @@
     -- ** CreateReplicationSubnetGroup
     , module Network.AWS.DMS.CreateReplicationSubnetGroup
 
+    -- ** DeleteCertificate
+    , module Network.AWS.DMS.DeleteCertificate
+
     -- ** RefreshSchemas
     , module Network.AWS.DMS.RefreshSchemas
 
@@ -130,6 +139,9 @@
     -- ** ModifyReplicationInstance
     , module Network.AWS.DMS.ModifyReplicationInstance
 
+    -- ** ImportCertificate
+    , module Network.AWS.DMS.ImportCertificate
+
     -- ** ModifyReplicationSubnetGroup
     , module Network.AWS.DMS.ModifyReplicationSubnetGroup
 
@@ -153,6 +165,9 @@
 
     -- * Types
 
+    -- ** DmsSSLModeValue
+    , DmsSSLModeValue (..)
+
     -- ** MigrationTypeValue
     , MigrationTypeValue (..)
 
@@ -177,6 +192,19 @@
     , availabilityZone
     , azName
 
+    -- ** Certificate
+    , Certificate
+    , certificate
+    , cCertificateOwner
+    , cSigningAlgorithm
+    , cValidFromDate
+    , cCertificatePem
+    , cCertificateARN
+    , cCertificateCreationDate
+    , cCertificateIdentifier
+    , cKeyLength
+    , cValidToDate
+
     -- ** Connection
     , Connection
     , connection
@@ -192,11 +220,13 @@
     , endpoint
     , eStatus
     , eServerName
+    , eCertificateARN
     , eExtraConnectionAttributes
     , eEndpointType
     , eUsername
     , eEngineName
     , eKMSKeyId
+    , eSSLMode
     , eDatabaseName
     , eEndpointIdentifier
     , eEndpointARN
@@ -234,13 +264,17 @@
     , riEngineVersion
     , riPubliclyAccessible
     , riAutoMinorVersionUpgrade
+    , riReplicationInstancePublicIPAddresses
     , riReplicationSubnetGroup
     , riInstanceCreateTime
     , riReplicationInstanceStatus
+    , riReplicationInstancePrivateIPAddresses
     , riPreferredMaintenanceWindow
     , riReplicationInstancePrivateIPAddress
     , riKMSKeyId
     , riAvailabilityZone
+    , riVPCSecurityGroups
+    , riMultiAZ
     , riReplicationInstanceARN
     , riAllocatedStorage
     , riReplicationInstancePublicIPAddress
@@ -252,6 +286,7 @@
     , ReplicationPendingModifiedValues
     , replicationPendingModifiedValues
     , rpmvEngineVersion
+    , rpmvMultiAZ
     , rpmvAllocatedStorage
     , rpmvReplicationInstanceClass
 
@@ -323,6 +358,12 @@
     , tag
     , tagValue
     , tagKey
+
+    -- ** VPCSecurityGroupMembership
+    , VPCSecurityGroupMembership
+    , vpcSecurityGroupMembership
+    , vsgmStatus
+    , vsgmVPCSecurityGroupId
     ) where
 
 import           Network.AWS.DMS.AddTagsToResource
@@ -330,11 +371,13 @@
 import           Network.AWS.DMS.CreateReplicationInstance
 import           Network.AWS.DMS.CreateReplicationSubnetGroup
 import           Network.AWS.DMS.CreateReplicationTask
+import           Network.AWS.DMS.DeleteCertificate
 import           Network.AWS.DMS.DeleteEndpoint
 import           Network.AWS.DMS.DeleteReplicationInstance
 import           Network.AWS.DMS.DeleteReplicationSubnetGroup
 import           Network.AWS.DMS.DeleteReplicationTask
 import           Network.AWS.DMS.DescribeAccountAttributes
+import           Network.AWS.DMS.DescribeCertificates
 import           Network.AWS.DMS.DescribeConnections
 import           Network.AWS.DMS.DescribeEndpoints
 import           Network.AWS.DMS.DescribeEndpointTypes
@@ -345,6 +388,7 @@
 import           Network.AWS.DMS.DescribeReplicationTasks
 import           Network.AWS.DMS.DescribeSchemas
 import           Network.AWS.DMS.DescribeTableStatistics
+import           Network.AWS.DMS.ImportCertificate
 import           Network.AWS.DMS.ListTagsForResource
 import           Network.AWS.DMS.ModifyEndpoint
 import           Network.AWS.DMS.ModifyReplicationInstance
diff --git a/gen/Network/AWS/DMS/AddTagsToResource.hs b/gen/Network/AWS/DMS/AddTagsToResource.hs
--- a/gen/Network/AWS/DMS/AddTagsToResource.hs
+++ b/gen/Network/AWS/DMS/AddTagsToResource.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Adds metadata tags to a DMS resource, including replication instance, endpoint, security group, and migration task. These tags can also be used with cost allocation reporting to track cost associated with DMS resources, or used in a Condition statement in an IAM policy for DMS.
---
 module Network.AWS.DMS.AddTagsToResource
     (
     -- * Creating a Request
@@ -43,7 +42,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'addTagsToResource' smart constructor.
+-- |
+--
+-- /See:/ 'addTagsToResource' smart constructor.
 data AddTagsToResource = AddTagsToResource'
     { _attrResourceARN :: !Text
     , _attrTags        :: ![Tag]
@@ -108,7 +109,9 @@
 instance ToQuery AddTagsToResource where
         toQuery = const mempty
 
--- | /See:/ 'addTagsToResourceResponse' smart constructor.
+-- |
+--
+-- /See:/ 'addTagsToResourceResponse' smart constructor.
 newtype AddTagsToResourceResponse = AddTagsToResourceResponse'
     { _attrrsResponseStatus :: Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
diff --git a/gen/Network/AWS/DMS/CreateEndpoint.hs b/gen/Network/AWS/DMS/CreateEndpoint.hs
--- a/gen/Network/AWS/DMS/CreateEndpoint.hs
+++ b/gen/Network/AWS/DMS/CreateEndpoint.hs
@@ -19,15 +19,16 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Creates an endpoint using the provided settings.
---
 module Network.AWS.DMS.CreateEndpoint
     (
     -- * Creating a Request
       createEndpoint
     , CreateEndpoint
     -- * Request Lenses
+    , ceCertificateARN
     , ceExtraConnectionAttributes
     , ceKMSKeyId
+    , ceSSLMode
     , ceDatabaseName
     , ceTags
     , ceEndpointIdentifier
@@ -53,10 +54,14 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'createEndpoint' smart constructor.
+-- |
+--
+-- /See:/ 'createEndpoint' smart constructor.
 data CreateEndpoint = CreateEndpoint'
-    { _ceExtraConnectionAttributes :: !(Maybe Text)
+    { _ceCertificateARN            :: !(Maybe Text)
+    , _ceExtraConnectionAttributes :: !(Maybe Text)
     , _ceKMSKeyId                  :: !(Maybe Text)
+    , _ceSSLMode                   :: !(Maybe DmsSSLModeValue)
     , _ceDatabaseName              :: !(Maybe Text)
     , _ceTags                      :: !(Maybe [Tag])
     , _ceEndpointIdentifier        :: !Text
@@ -72,10 +77,14 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'ceCertificateARN'
+--
 -- * 'ceExtraConnectionAttributes'
 --
 -- * 'ceKMSKeyId'
 --
+-- * 'ceSSLMode'
+--
 -- * 'ceDatabaseName'
 --
 -- * 'ceTags'
@@ -104,8 +113,10 @@
     -> CreateEndpoint
 createEndpoint pEndpointIdentifier_ pEndpointType_ pEngineName_ pUsername_ pPassword_ pServerName_ pPort_ =
     CreateEndpoint'
-    { _ceExtraConnectionAttributes = Nothing
+    { _ceCertificateARN = Nothing
+    , _ceExtraConnectionAttributes = Nothing
     , _ceKMSKeyId = Nothing
+    , _ceSSLMode = Nothing
     , _ceDatabaseName = Nothing
     , _ceTags = Nothing
     , _ceEndpointIdentifier = pEndpointIdentifier_
@@ -117,6 +128,10 @@
     , _cePort = pPort_
     }
 
+-- | The Amazon Resource Number (ARN) for the certificate.
+ceCertificateARN :: Lens' CreateEndpoint (Maybe Text)
+ceCertificateARN = lens _ceCertificateARN (\ s a -> s{_ceCertificateARN = a});
+
 -- | Additional attributes associated with the connection.
 ceExtraConnectionAttributes :: Lens' CreateEndpoint (Maybe Text)
 ceExtraConnectionAttributes = lens _ceExtraConnectionAttributes (\ s a -> s{_ceExtraConnectionAttributes = a});
@@ -125,6 +140,14 @@
 ceKMSKeyId :: Lens' CreateEndpoint (Maybe Text)
 ceKMSKeyId = lens _ceKMSKeyId (\ s a -> s{_ceKMSKeyId = a});
 
+-- | The SSL mode to use for the SSL connection.
+--
+-- SSL mode can be one of four values: none, require, verify-ca, verify-full.
+--
+-- The default value is none.
+ceSSLMode :: Lens' CreateEndpoint (Maybe DmsSSLModeValue)
+ceSSLMode = lens _ceSSLMode (\ s a -> s{_ceSSLMode = a});
+
 -- | The name of the endpoint database.
 ceDatabaseName :: Lens' CreateEndpoint (Maybe Text)
 ceDatabaseName = lens _ceDatabaseName (\ s a -> s{_ceDatabaseName = a});
@@ -141,7 +164,7 @@
 ceEndpointType :: Lens' CreateEndpoint ReplicationEndpointTypeValue
 ceEndpointType = lens _ceEndpointType (\ s a -> s{_ceEndpointType = a});
 
--- | The type of engine for the endpoint. Valid values include MYSQL, ORACLE, POSTGRES, MARIADB, AURORA, SQLSERVER.
+-- | The type of engine for the endpoint. Valid values include MYSQL, ORACLE, POSTGRES, MARIADB, AURORA, REDSHIFT, and SQLSERVER.
 ceEngineName :: Lens' CreateEndpoint Text
 ceEngineName = lens _ceEngineName (\ s a -> s{_ceEngineName = a});
 
@@ -187,9 +210,11 @@
         toJSON CreateEndpoint'{..}
           = object
               (catMaybes
-                 [("ExtraConnectionAttributes" .=) <$>
+                 [("CertificateArn" .=) <$> _ceCertificateARN,
+                  ("ExtraConnectionAttributes" .=) <$>
                     _ceExtraConnectionAttributes,
                   ("KmsKeyId" .=) <$> _ceKMSKeyId,
+                  ("SslMode" .=) <$> _ceSSLMode,
                   ("DatabaseName" .=) <$> _ceDatabaseName,
                   ("Tags" .=) <$> _ceTags,
                   Just ("EndpointIdentifier" .= _ceEndpointIdentifier),
@@ -206,7 +231,9 @@
 instance ToQuery CreateEndpoint where
         toQuery = const mempty
 
--- | /See:/ 'createEndpointResponse' smart constructor.
+-- |
+--
+-- /See:/ 'createEndpointResponse' smart constructor.
 data CreateEndpointResponse = CreateEndpointResponse'
     { _cersEndpoint       :: !(Maybe Endpoint)
     , _cersResponseStatus :: !Int
diff --git a/gen/Network/AWS/DMS/CreateReplicationInstance.hs b/gen/Network/AWS/DMS/CreateReplicationInstance.hs
--- a/gen/Network/AWS/DMS/CreateReplicationInstance.hs
+++ b/gen/Network/AWS/DMS/CreateReplicationInstance.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Creates the replication instance using the specified parameters.
---
 module Network.AWS.DMS.CreateReplicationInstance
     (
     -- * Creating a Request
@@ -33,6 +32,8 @@
     , criPreferredMaintenanceWindow
     , criKMSKeyId
     , criAvailabilityZone
+    , criVPCSecurityGroupIds
+    , criMultiAZ
     , criAllocatedStorage
     , criTags
     , criReplicationInstanceIdentifier
@@ -64,6 +65,8 @@
     , _criPreferredMaintenanceWindow       :: !(Maybe Text)
     , _criKMSKeyId                         :: !(Maybe Text)
     , _criAvailabilityZone                 :: !(Maybe Text)
+    , _criVPCSecurityGroupIds              :: !(Maybe [Text])
+    , _criMultiAZ                          :: !(Maybe Bool)
     , _criAllocatedStorage                 :: !(Maybe Int)
     , _criTags                             :: !(Maybe [Tag])
     , _criReplicationInstanceIdentifier    :: !Text
@@ -88,6 +91,10 @@
 --
 -- * 'criAvailabilityZone'
 --
+-- * 'criVPCSecurityGroupIds'
+--
+-- * 'criMultiAZ'
+--
 -- * 'criAllocatedStorage'
 --
 -- * 'criTags'
@@ -108,6 +115,8 @@
     , _criPreferredMaintenanceWindow = Nothing
     , _criKMSKeyId = Nothing
     , _criAvailabilityZone = Nothing
+    , _criVPCSecurityGroupIds = Nothing
+    , _criMultiAZ = Nothing
     , _criAllocatedStorage = Nothing
     , _criTags = Nothing
     , _criReplicationInstanceIdentifier = pReplicationInstanceIdentifier_
@@ -156,6 +165,14 @@
 criAvailabilityZone :: Lens' CreateReplicationInstance (Maybe Text)
 criAvailabilityZone = lens _criAvailabilityZone (\ s a -> s{_criAvailabilityZone = a});
 
+-- | Specifies the VPC security group to be used with the replication instance. The VPC security group must work with the VPC containing the replication instance.
+criVPCSecurityGroupIds :: Lens' CreateReplicationInstance [Text]
+criVPCSecurityGroupIds = lens _criVPCSecurityGroupIds (\ s a -> s{_criVPCSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | Specifies if the replication instance is a Multi-AZ deployment. You cannot set the 'AvailabilityZone' parameter if the Multi-AZ parameter is set to 'true'.
+criMultiAZ :: Lens' CreateReplicationInstance (Maybe Bool)
+criMultiAZ = lens _criMultiAZ (\ s a -> s{_criMultiAZ = a});
+
 -- | The amount of storage (in gigabytes) to be initially allocated for the replication instance.
 criAllocatedStorage :: Lens' CreateReplicationInstance (Maybe Int)
 criAllocatedStorage = lens _criAllocatedStorage (\ s a -> s{_criAllocatedStorage = a});
@@ -169,7 +186,9 @@
 -- Constraints:
 --
 -- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
+--
 -- -   First character must be a letter.
+--
 -- -   Cannot end with a hyphen or contain two consecutive hyphens.
 --
 -- Example: 'myrepinstance'
@@ -221,6 +240,9 @@
                     _criPreferredMaintenanceWindow,
                   ("KmsKeyId" .=) <$> _criKMSKeyId,
                   ("AvailabilityZone" .=) <$> _criAvailabilityZone,
+                  ("VpcSecurityGroupIds" .=) <$>
+                    _criVPCSecurityGroupIds,
+                  ("MultiAZ" .=) <$> _criMultiAZ,
                   ("AllocatedStorage" .=) <$> _criAllocatedStorage,
                   ("Tags" .=) <$> _criTags,
                   Just
@@ -236,7 +258,9 @@
 instance ToQuery CreateReplicationInstance where
         toQuery = const mempty
 
--- | /See:/ 'createReplicationInstanceResponse' smart constructor.
+-- |
+--
+-- /See:/ 'createReplicationInstanceResponse' smart constructor.
 data CreateReplicationInstanceResponse = CreateReplicationInstanceResponse'
     { _crirsReplicationInstance :: !(Maybe ReplicationInstance)
     , _crirsResponseStatus      :: !Int
diff --git a/gen/Network/AWS/DMS/CreateReplicationSubnetGroup.hs b/gen/Network/AWS/DMS/CreateReplicationSubnetGroup.hs
--- a/gen/Network/AWS/DMS/CreateReplicationSubnetGroup.hs
+++ b/gen/Network/AWS/DMS/CreateReplicationSubnetGroup.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Creates a replication subnet group given a list of the subnet IDs in a VPC.
---
 module Network.AWS.DMS.CreateReplicationSubnetGroup
     (
     -- * Creating a Request
@@ -46,7 +45,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'createReplicationSubnetGroup' smart constructor.
+-- |
+--
+-- /See:/ 'createReplicationSubnetGroup' smart constructor.
 data CreateReplicationSubnetGroup = CreateReplicationSubnetGroup'
     { _crsgTags                              :: !(Maybe [Tag])
     , _crsgReplicationSubnetGroupIdentifier  :: !Text
@@ -142,7 +143,9 @@
 instance ToQuery CreateReplicationSubnetGroup where
         toQuery = const mempty
 
--- | /See:/ 'createReplicationSubnetGroupResponse' smart constructor.
+-- |
+--
+-- /See:/ 'createReplicationSubnetGroupResponse' smart constructor.
 data CreateReplicationSubnetGroupResponse = CreateReplicationSubnetGroupResponse'
     { _crsgrsReplicationSubnetGroup :: !(Maybe ReplicationSubnetGroup)
     , _crsgrsResponseStatus         :: !Int
diff --git a/gen/Network/AWS/DMS/CreateReplicationTask.hs b/gen/Network/AWS/DMS/CreateReplicationTask.hs
--- a/gen/Network/AWS/DMS/CreateReplicationTask.hs
+++ b/gen/Network/AWS/DMS/CreateReplicationTask.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Creates a replication task using the specified parameters.
---
 module Network.AWS.DMS.CreateReplicationTask
     (
     -- * Creating a Request
@@ -51,7 +50,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'createReplicationTask' smart constructor.
+-- |
+--
+-- /See:/ 'createReplicationTask' smart constructor.
 data CreateReplicationTask = CreateReplicationTask'
     { _crtReplicationTaskSettings   :: !(Maybe Text)
     , _crtTags                      :: !(Maybe [Tag])
@@ -123,8 +124,11 @@
 -- Constraints:
 --
 -- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
+--
 -- -   First character must be a letter.
+--
 -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
 crtReplicationTaskIdentifier :: Lens' CreateReplicationTask Text
 crtReplicationTaskIdentifier = lens _crtReplicationTaskIdentifier (\ s a -> s{_crtReplicationTaskIdentifier = a});
 
@@ -144,7 +148,9 @@
 crtMigrationType :: Lens' CreateReplicationTask MigrationTypeValue
 crtMigrationType = lens _crtMigrationType (\ s a -> s{_crtMigrationType = a});
 
--- | The path of the JSON file that contains the table mappings.
+-- | The path of the JSON file that contains the table mappings. Preceed the path with \"file:\/\/\".
+--
+-- For example, --table-mappings file:\/\/mappingfile.json
 crtTableMappings :: Lens' CreateReplicationTask Text
 crtTableMappings = lens _crtTableMappings (\ s a -> s{_crtTableMappings = a});
 
@@ -197,7 +203,9 @@
 instance ToQuery CreateReplicationTask where
         toQuery = const mempty
 
--- | /See:/ 'createReplicationTaskResponse' smart constructor.
+-- |
+--
+-- /See:/ 'createReplicationTaskResponse' smart constructor.
 data CreateReplicationTaskResponse = CreateReplicationTaskResponse'
     { _crtrsReplicationTask :: !(Maybe ReplicationTask)
     , _crtrsResponseStatus  :: !Int
diff --git a/gen/Network/AWS/DMS/DeleteCertificate.hs b/gen/Network/AWS/DMS/DeleteCertificate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DMS/DeleteCertificate.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DMS.DeleteCertificate
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified certificate.
+module Network.AWS.DMS.DeleteCertificate
+    (
+    -- * Creating a Request
+      deleteCertificate
+    , DeleteCertificate
+    -- * Request Lenses
+    , dcCertificateARN
+
+    -- * Destructuring the Response
+    , deleteCertificateResponse
+    , DeleteCertificateResponse
+    -- * Response Lenses
+    , dccrsCertificate
+    , dccrsResponseStatus
+    ) where
+
+import           Network.AWS.DMS.Types
+import           Network.AWS.DMS.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'deleteCertificate' smart constructor.
+newtype DeleteCertificate = DeleteCertificate'
+    { _dcCertificateARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcCertificateARN'
+deleteCertificate
+    :: Text -- ^ 'dcCertificateARN'
+    -> DeleteCertificate
+deleteCertificate pCertificateARN_ =
+    DeleteCertificate'
+    { _dcCertificateARN = pCertificateARN_
+    }
+
+-- | the Amazon Resource Name (ARN) of the deleted certificate.
+dcCertificateARN :: Lens' DeleteCertificate Text
+dcCertificateARN = lens _dcCertificateARN (\ s a -> s{_dcCertificateARN = a});
+
+instance AWSRequest DeleteCertificate where
+        type Rs DeleteCertificate = DeleteCertificateResponse
+        request = postJSON dms
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteCertificateResponse' <$>
+                   (x .?> "Certificate") <*> (pure (fromEnum s)))
+
+instance Hashable DeleteCertificate
+
+instance NFData DeleteCertificate
+
+instance ToHeaders DeleteCertificate where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonDMSv20160101.DeleteCertificate" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteCertificate where
+        toJSON DeleteCertificate'{..}
+          = object
+              (catMaybes
+                 [Just ("CertificateArn" .= _dcCertificateARN)])
+
+instance ToPath DeleteCertificate where
+        toPath = const "/"
+
+instance ToQuery DeleteCertificate where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteCertificateResponse' smart constructor.
+data DeleteCertificateResponse = DeleteCertificateResponse'
+    { _dccrsCertificate    :: !(Maybe Certificate)
+    , _dccrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteCertificateResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dccrsCertificate'
+--
+-- * 'dccrsResponseStatus'
+deleteCertificateResponse
+    :: Int -- ^ 'dccrsResponseStatus'
+    -> DeleteCertificateResponse
+deleteCertificateResponse pResponseStatus_ =
+    DeleteCertificateResponse'
+    { _dccrsCertificate = Nothing
+    , _dccrsResponseStatus = pResponseStatus_
+    }
+
+-- | The SSL certificate.
+dccrsCertificate :: Lens' DeleteCertificateResponse (Maybe Certificate)
+dccrsCertificate = lens _dccrsCertificate (\ s a -> s{_dccrsCertificate = a});
+
+-- | The response status code.
+dccrsResponseStatus :: Lens' DeleteCertificateResponse Int
+dccrsResponseStatus = lens _dccrsResponseStatus (\ s a -> s{_dccrsResponseStatus = a});
+
+instance NFData DeleteCertificateResponse
diff --git a/gen/Network/AWS/DMS/DeleteEndpoint.hs b/gen/Network/AWS/DMS/DeleteEndpoint.hs
--- a/gen/Network/AWS/DMS/DeleteEndpoint.hs
+++ b/gen/Network/AWS/DMS/DeleteEndpoint.hs
@@ -34,8 +34,8 @@
     , deleteEndpointResponse
     , DeleteEndpointResponse
     -- * Response Lenses
-    , drsEndpoint
-    , drsResponseStatus
+    , delrsEndpoint
+    , delrsResponseStatus
     ) where
 
 import           Network.AWS.DMS.Types
@@ -45,7 +45,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'deleteEndpoint' smart constructor.
+-- |
+--
+-- /See:/ 'deleteEndpoint' smart constructor.
 newtype DeleteEndpoint = DeleteEndpoint'
     { _deEndpointARN :: Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -100,34 +102,36 @@
 instance ToQuery DeleteEndpoint where
         toQuery = const mempty
 
--- | /See:/ 'deleteEndpointResponse' smart constructor.
+-- |
+--
+-- /See:/ 'deleteEndpointResponse' smart constructor.
 data DeleteEndpointResponse = DeleteEndpointResponse'
-    { _drsEndpoint       :: !(Maybe Endpoint)
-    , _drsResponseStatus :: !Int
+    { _delrsEndpoint       :: !(Maybe Endpoint)
+    , _delrsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DeleteEndpointResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drsEndpoint'
+-- * 'delrsEndpoint'
 --
--- * 'drsResponseStatus'
+-- * 'delrsResponseStatus'
 deleteEndpointResponse
-    :: Int -- ^ 'drsResponseStatus'
+    :: Int -- ^ 'delrsResponseStatus'
     -> DeleteEndpointResponse
 deleteEndpointResponse pResponseStatus_ =
     DeleteEndpointResponse'
-    { _drsEndpoint = Nothing
-    , _drsResponseStatus = pResponseStatus_
+    { _delrsEndpoint = Nothing
+    , _delrsResponseStatus = pResponseStatus_
     }
 
 -- | The endpoint that was deleted.
-drsEndpoint :: Lens' DeleteEndpointResponse (Maybe Endpoint)
-drsEndpoint = lens _drsEndpoint (\ s a -> s{_drsEndpoint = a});
+delrsEndpoint :: Lens' DeleteEndpointResponse (Maybe Endpoint)
+delrsEndpoint = lens _delrsEndpoint (\ s a -> s{_delrsEndpoint = a});
 
 -- | The response status code.
-drsResponseStatus :: Lens' DeleteEndpointResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+delrsResponseStatus :: Lens' DeleteEndpointResponse Int
+delrsResponseStatus = lens _delrsResponseStatus (\ s a -> s{_delrsResponseStatus = a});
 
 instance NFData DeleteEndpointResponse
diff --git a/gen/Network/AWS/DMS/DeleteReplicationInstance.hs b/gen/Network/AWS/DMS/DeleteReplicationInstance.hs
--- a/gen/Network/AWS/DMS/DeleteReplicationInstance.hs
+++ b/gen/Network/AWS/DMS/DeleteReplicationInstance.hs
@@ -45,7 +45,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'deleteReplicationInstance' smart constructor.
+-- |
+--
+-- /See:/ 'deleteReplicationInstance' smart constructor.
 newtype DeleteReplicationInstance = DeleteReplicationInstance'
     { _driReplicationInstanceARN :: Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -106,7 +108,9 @@
 instance ToQuery DeleteReplicationInstance where
         toQuery = const mempty
 
--- | /See:/ 'deleteReplicationInstanceResponse' smart constructor.
+-- |
+--
+-- /See:/ 'deleteReplicationInstanceResponse' smart constructor.
 data DeleteReplicationInstanceResponse = DeleteReplicationInstanceResponse'
     { _drirsReplicationInstance :: !(Maybe ReplicationInstance)
     , _drirsResponseStatus      :: !Int
diff --git a/gen/Network/AWS/DMS/DeleteReplicationSubnetGroup.hs b/gen/Network/AWS/DMS/DeleteReplicationSubnetGroup.hs
--- a/gen/Network/AWS/DMS/DeleteReplicationSubnetGroup.hs
+++ b/gen/Network/AWS/DMS/DeleteReplicationSubnetGroup.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Deletes a subnet group.
---
 module Network.AWS.DMS.DeleteReplicationSubnetGroup
     (
     -- * Creating a Request
@@ -42,7 +41,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'deleteReplicationSubnetGroup' smart constructor.
+-- |
+--
+-- /See:/ 'deleteReplicationSubnetGroup' smart constructor.
 newtype DeleteReplicationSubnetGroup = DeleteReplicationSubnetGroup'
     { _drsgReplicationSubnetGroupIdentifier :: Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -103,7 +104,9 @@
 instance ToQuery DeleteReplicationSubnetGroup where
         toQuery = const mempty
 
--- | /See:/ 'deleteReplicationSubnetGroupResponse' smart constructor.
+-- |
+--
+-- /See:/ 'deleteReplicationSubnetGroupResponse' smart constructor.
 newtype DeleteReplicationSubnetGroupResponse = DeleteReplicationSubnetGroupResponse'
     { _drsgrsResponseStatus :: Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
diff --git a/gen/Network/AWS/DMS/DeleteReplicationTask.hs b/gen/Network/AWS/DMS/DeleteReplicationTask.hs
--- a/gen/Network/AWS/DMS/DeleteReplicationTask.hs
+++ b/gen/Network/AWS/DMS/DeleteReplicationTask.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Deletes the specified replication task.
---
 module Network.AWS.DMS.DeleteReplicationTask
     (
     -- * Creating a Request
@@ -43,7 +42,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'deleteReplicationTask' smart constructor.
+-- |
+--
+-- /See:/ 'deleteReplicationTask' smart constructor.
 newtype DeleteReplicationTask = DeleteReplicationTask'
     { _drtReplicationTaskARN :: Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -102,7 +103,9 @@
 instance ToQuery DeleteReplicationTask where
         toQuery = const mempty
 
--- | /See:/ 'deleteReplicationTaskResponse' smart constructor.
+-- |
+--
+-- /See:/ 'deleteReplicationTaskResponse' smart constructor.
 data DeleteReplicationTaskResponse = DeleteReplicationTaskResponse'
     { _drtrsReplicationTask :: !(Maybe ReplicationTask)
     , _drtrsResponseStatus  :: !Int
diff --git a/gen/Network/AWS/DMS/DescribeAccountAttributes.hs b/gen/Network/AWS/DMS/DescribeAccountAttributes.hs
--- a/gen/Network/AWS/DMS/DescribeAccountAttributes.hs
+++ b/gen/Network/AWS/DMS/DescribeAccountAttributes.hs
@@ -21,7 +21,6 @@
 -- Lists all of the AWS DMS attributes for a customer account. The attributes include AWS DMS quotas for the account, such as the number of replication instances allowed. The description for a quota includes the quota name, current usage toward that quota, and the quota\'s maximum value.
 --
 -- This command does not take any parameters.
---
 module Network.AWS.DMS.DescribeAccountAttributes
     (
     -- * Creating a Request
@@ -43,7 +42,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'describeAccountAttributes' smart constructor.
+-- |
+--
+-- /See:/ 'describeAccountAttributes' smart constructor.
 data DescribeAccountAttributes =
     DescribeAccountAttributes'
     deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -88,7 +89,9 @@
 instance ToQuery DescribeAccountAttributes where
         toQuery = const mempty
 
--- | /See:/ 'describeAccountAttributesResponse' smart constructor.
+-- |
+--
+-- /See:/ 'describeAccountAttributesResponse' smart constructor.
 data DescribeAccountAttributesResponse = DescribeAccountAttributesResponse'
     { _daarsAccountQuotas  :: !(Maybe [AccountQuota])
     , _daarsResponseStatus :: !Int
diff --git a/gen/Network/AWS/DMS/DescribeCertificates.hs b/gen/Network/AWS/DMS/DescribeCertificates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DMS/DescribeCertificates.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DMS.DescribeCertificates
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a description of the certificate.
+module Network.AWS.DMS.DescribeCertificates
+    (
+    -- * Creating a Request
+      describeCertificates
+    , DescribeCertificates
+    -- * Request Lenses
+    , dFilters
+    , dMarker
+    , dMaxRecords
+
+    -- * Destructuring the Response
+    , describeCertificatesResponse
+    , DescribeCertificatesResponse
+    -- * Response Lenses
+    , dcrsCertificates
+    , dcrsMarker
+    , dcrsResponseStatus
+    ) where
+
+import           Network.AWS.DMS.Types
+import           Network.AWS.DMS.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeCertificates' smart constructor.
+data DescribeCertificates = DescribeCertificates'
+    { _dFilters    :: !(Maybe [Filter])
+    , _dMarker     :: !(Maybe Text)
+    , _dMaxRecords :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeCertificates' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dFilters'
+--
+-- * 'dMarker'
+--
+-- * 'dMaxRecords'
+describeCertificates
+    :: DescribeCertificates
+describeCertificates =
+    DescribeCertificates'
+    { _dFilters = Nothing
+    , _dMarker = Nothing
+    , _dMaxRecords = Nothing
+    }
+
+-- | Filters applied to the certificate described in the form of key-value pairs.
+dFilters :: Lens' DescribeCertificates [Filter]
+dFilters = lens _dFilters (\ s a -> s{_dFilters = a}) . _Default . _Coerce;
+
+-- | An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by 'MaxRecords'.
+dMarker :: Lens' DescribeCertificates (Maybe Text)
+dMarker = lens _dMarker (\ s a -> s{_dMarker = a});
+
+-- | The maximum number of records to include in the response. If more records exist than the specified 'MaxRecords' value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.
+--
+-- Default: 10
+dMaxRecords :: Lens' DescribeCertificates (Maybe Int)
+dMaxRecords = lens _dMaxRecords (\ s a -> s{_dMaxRecords = a});
+
+instance AWSRequest DescribeCertificates where
+        type Rs DescribeCertificates =
+             DescribeCertificatesResponse
+        request = postJSON dms
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeCertificatesResponse' <$>
+                   (x .?> "Certificates" .!@ mempty) <*>
+                     (x .?> "Marker")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DescribeCertificates
+
+instance NFData DescribeCertificates
+
+instance ToHeaders DescribeCertificates where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonDMSv20160101.DescribeCertificates" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeCertificates where
+        toJSON DescribeCertificates'{..}
+          = object
+              (catMaybes
+                 [("Filters" .=) <$> _dFilters,
+                  ("Marker" .=) <$> _dMarker,
+                  ("MaxRecords" .=) <$> _dMaxRecords])
+
+instance ToPath DescribeCertificates where
+        toPath = const "/"
+
+instance ToQuery DescribeCertificates where
+        toQuery = const mempty
+
+-- | /See:/ 'describeCertificatesResponse' smart constructor.
+data DescribeCertificatesResponse = DescribeCertificatesResponse'
+    { _dcrsCertificates   :: !(Maybe [Certificate])
+    , _dcrsMarker         :: !(Maybe Text)
+    , _dcrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeCertificatesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcrsCertificates'
+--
+-- * 'dcrsMarker'
+--
+-- * 'dcrsResponseStatus'
+describeCertificatesResponse
+    :: Int -- ^ 'dcrsResponseStatus'
+    -> DescribeCertificatesResponse
+describeCertificatesResponse pResponseStatus_ =
+    DescribeCertificatesResponse'
+    { _dcrsCertificates = Nothing
+    , _dcrsMarker = Nothing
+    , _dcrsResponseStatus = pResponseStatus_
+    }
+
+-- | The SSL certificates associated with the replication instance.
+dcrsCertificates :: Lens' DescribeCertificatesResponse [Certificate]
+dcrsCertificates = lens _dcrsCertificates (\ s a -> s{_dcrsCertificates = a}) . _Default . _Coerce;
+
+-- | The pagination token.
+dcrsMarker :: Lens' DescribeCertificatesResponse (Maybe Text)
+dcrsMarker = lens _dcrsMarker (\ s a -> s{_dcrsMarker = a});
+
+-- | The response status code.
+dcrsResponseStatus :: Lens' DescribeCertificatesResponse Int
+dcrsResponseStatus = lens _dcrsResponseStatus (\ s a -> s{_dcrsResponseStatus = a});
+
+instance NFData DescribeCertificatesResponse
diff --git a/gen/Network/AWS/DMS/DescribeConnections.hs b/gen/Network/AWS/DMS/DescribeConnections.hs
--- a/gen/Network/AWS/DMS/DescribeConnections.hs
+++ b/gen/Network/AWS/DMS/DescribeConnections.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Describes the status of the connections that have been made between the replication instance and an endpoint. Connections are created when you test an endpoint.
---
 module Network.AWS.DMS.DescribeConnections
     (
     -- * Creating a Request
@@ -34,9 +33,9 @@
     , describeConnectionsResponse
     , DescribeConnectionsResponse
     -- * Response Lenses
-    , dcrsConnections
-    , dcrsMarker
-    , dcrsResponseStatus
+    , drsConnections
+    , drsMarker
+    , drsResponseStatus
     ) where
 
 import           Network.AWS.DMS.Types
@@ -46,7 +45,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'describeConnections' smart constructor.
+-- |
+--
+-- /See:/ 'describeConnections' smart constructor.
 data DescribeConnections = DescribeConnections'
     { _dcFilters    :: !(Maybe [Filter])
     , _dcMarker     :: !(Maybe Text)
@@ -128,42 +129,44 @@
 instance ToQuery DescribeConnections where
         toQuery = const mempty
 
--- | /See:/ 'describeConnectionsResponse' smart constructor.
+-- |
+--
+-- /See:/ 'describeConnectionsResponse' smart constructor.
 data DescribeConnectionsResponse = DescribeConnectionsResponse'
-    { _dcrsConnections    :: !(Maybe [Connection])
-    , _dcrsMarker         :: !(Maybe Text)
-    , _dcrsResponseStatus :: !Int
+    { _drsConnections    :: !(Maybe [Connection])
+    , _drsMarker         :: !(Maybe Text)
+    , _drsResponseStatus :: !Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DescribeConnectionsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcrsConnections'
+-- * 'drsConnections'
 --
--- * 'dcrsMarker'
+-- * 'drsMarker'
 --
--- * 'dcrsResponseStatus'
+-- * 'drsResponseStatus'
 describeConnectionsResponse
-    :: Int -- ^ 'dcrsResponseStatus'
+    :: Int -- ^ 'drsResponseStatus'
     -> DescribeConnectionsResponse
 describeConnectionsResponse pResponseStatus_ =
     DescribeConnectionsResponse'
-    { _dcrsConnections = Nothing
-    , _dcrsMarker = Nothing
-    , _dcrsResponseStatus = pResponseStatus_
+    { _drsConnections = Nothing
+    , _drsMarker = Nothing
+    , _drsResponseStatus = pResponseStatus_
     }
 
 -- | A description of the connections.
-dcrsConnections :: Lens' DescribeConnectionsResponse [Connection]
-dcrsConnections = lens _dcrsConnections (\ s a -> s{_dcrsConnections = a}) . _Default . _Coerce;
+drsConnections :: Lens' DescribeConnectionsResponse [Connection]
+drsConnections = lens _drsConnections (\ s a -> s{_drsConnections = a}) . _Default . _Coerce;
 
 -- | An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by 'MaxRecords'.
-dcrsMarker :: Lens' DescribeConnectionsResponse (Maybe Text)
-dcrsMarker = lens _dcrsMarker (\ s a -> s{_dcrsMarker = a});
+drsMarker :: Lens' DescribeConnectionsResponse (Maybe Text)
+drsMarker = lens _drsMarker (\ s a -> s{_drsMarker = a});
 
 -- | The response status code.
-dcrsResponseStatus :: Lens' DescribeConnectionsResponse Int
-dcrsResponseStatus = lens _dcrsResponseStatus (\ s a -> s{_dcrsResponseStatus = a});
+drsResponseStatus :: Lens' DescribeConnectionsResponse Int
+drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
 
 instance NFData DescribeConnectionsResponse
diff --git a/gen/Network/AWS/DMS/DescribeEndpointTypes.hs b/gen/Network/AWS/DMS/DescribeEndpointTypes.hs
--- a/gen/Network/AWS/DMS/DescribeEndpointTypes.hs
+++ b/gen/Network/AWS/DMS/DescribeEndpointTypes.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns information about the type of endpoints available.
---
 module Network.AWS.DMS.DescribeEndpointTypes
     (
     -- * Creating a Request
@@ -46,7 +45,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'describeEndpointTypes' smart constructor.
+-- |
+--
+-- /See:/ 'describeEndpointTypes' smart constructor.
 data DescribeEndpointTypes = DescribeEndpointTypes'
     { _detFilters    :: !(Maybe [Filter])
     , _detMarker     :: !(Maybe Text)
@@ -129,7 +130,9 @@
 instance ToQuery DescribeEndpointTypes where
         toQuery = const mempty
 
--- | /See:/ 'describeEndpointTypesResponse' smart constructor.
+-- |
+--
+-- /See:/ 'describeEndpointTypesResponse' smart constructor.
 data DescribeEndpointTypesResponse = DescribeEndpointTypesResponse'
     { _detrsSupportedEndpointTypes :: !(Maybe [SupportedEndpointType])
     , _detrsMarker                 :: !(Maybe Text)
diff --git a/gen/Network/AWS/DMS/DescribeEndpoints.hs b/gen/Network/AWS/DMS/DescribeEndpoints.hs
--- a/gen/Network/AWS/DMS/DescribeEndpoints.hs
+++ b/gen/Network/AWS/DMS/DescribeEndpoints.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns information about the endpoints for your account in the current region.
---
 module Network.AWS.DMS.DescribeEndpoints
     (
     -- * Creating a Request
@@ -46,7 +45,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'describeEndpoints' smart constructor.
+-- |
+--
+-- /See:/ 'describeEndpoints' smart constructor.
 data DescribeEndpoints = DescribeEndpoints'
     { _deFilters    :: !(Maybe [Filter])
     , _deMarker     :: !(Maybe Text)
@@ -127,7 +128,9 @@
 instance ToQuery DescribeEndpoints where
         toQuery = const mempty
 
--- | /See:/ 'describeEndpointsResponse' smart constructor.
+-- |
+--
+-- /See:/ 'describeEndpointsResponse' smart constructor.
 data DescribeEndpointsResponse = DescribeEndpointsResponse'
     { _dersMarker         :: !(Maybe Text)
     , _dersEndpoints      :: !(Maybe [Endpoint])
diff --git a/gen/Network/AWS/DMS/DescribeOrderableReplicationInstances.hs b/gen/Network/AWS/DMS/DescribeOrderableReplicationInstances.hs
--- a/gen/Network/AWS/DMS/DescribeOrderableReplicationInstances.hs
+++ b/gen/Network/AWS/DMS/DescribeOrderableReplicationInstances.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns information about the replication instance types that can be created in the specified region.
---
 module Network.AWS.DMS.DescribeOrderableReplicationInstances
     (
     -- * Creating a Request
@@ -45,7 +44,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'describeOrderableReplicationInstances' smart constructor.
+-- |
+--
+-- /See:/ 'describeOrderableReplicationInstances' smart constructor.
 data DescribeOrderableReplicationInstances = DescribeOrderableReplicationInstances'
     { _doriMarker     :: !(Maybe Text)
     , _doriMaxRecords :: !(Maybe Int)
@@ -123,7 +124,9 @@
          DescribeOrderableReplicationInstances where
         toQuery = const mempty
 
--- | /See:/ 'describeOrderableReplicationInstancesResponse' smart constructor.
+-- |
+--
+-- /See:/ 'describeOrderableReplicationInstancesResponse' smart constructor.
 data DescribeOrderableReplicationInstancesResponse = DescribeOrderableReplicationInstancesResponse'
     { _dorirsMarker                        :: !(Maybe Text)
     , _dorirsOrderableReplicationInstances :: !(Maybe [OrderableReplicationInstance])
diff --git a/gen/Network/AWS/DMS/DescribeRefreshSchemasStatus.hs b/gen/Network/AWS/DMS/DescribeRefreshSchemasStatus.hs
--- a/gen/Network/AWS/DMS/DescribeRefreshSchemasStatus.hs
+++ b/gen/Network/AWS/DMS/DescribeRefreshSchemasStatus.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns the status of the RefreshSchemas operation.
---
 module Network.AWS.DMS.DescribeRefreshSchemasStatus
     (
     -- * Creating a Request
@@ -43,7 +42,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'describeRefreshSchemasStatus' smart constructor.
+-- |
+--
+-- /See:/ 'describeRefreshSchemasStatus' smart constructor.
 newtype DescribeRefreshSchemasStatus = DescribeRefreshSchemasStatus'
     { _drssEndpointARN :: Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -103,7 +104,9 @@
 instance ToQuery DescribeRefreshSchemasStatus where
         toQuery = const mempty
 
--- | /See:/ 'describeRefreshSchemasStatusResponse' smart constructor.
+-- |
+--
+-- /See:/ 'describeRefreshSchemasStatusResponse' smart constructor.
 data DescribeRefreshSchemasStatusResponse = DescribeRefreshSchemasStatusResponse'
     { _drssrsRefreshSchemasStatus :: !(Maybe RefreshSchemasStatus)
     , _drssrsResponseStatus       :: !Int
diff --git a/gen/Network/AWS/DMS/DescribeReplicationInstances.hs b/gen/Network/AWS/DMS/DescribeReplicationInstances.hs
--- a/gen/Network/AWS/DMS/DescribeReplicationInstances.hs
+++ b/gen/Network/AWS/DMS/DescribeReplicationInstances.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns information about replication instances for your account in the current region.
---
 module Network.AWS.DMS.DescribeReplicationInstances
     (
     -- * Creating a Request
@@ -46,7 +45,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'describeReplicationInstances' smart constructor.
+-- |
+--
+-- /See:/ 'describeReplicationInstances' smart constructor.
 data DescribeReplicationInstances = DescribeReplicationInstances'
     { _driFilters    :: !(Maybe [Filter])
     , _driMarker     :: !(Maybe Text)
@@ -130,7 +131,9 @@
 instance ToQuery DescribeReplicationInstances where
         toQuery = const mempty
 
--- | /See:/ 'describeReplicationInstancesResponse' smart constructor.
+-- |
+--
+-- /See:/ 'describeReplicationInstancesResponse' smart constructor.
 data DescribeReplicationInstancesResponse = DescribeReplicationInstancesResponse'
     { _drisrsMarker               :: !(Maybe Text)
     , _drisrsReplicationInstances :: !(Maybe [ReplicationInstance])
diff --git a/gen/Network/AWS/DMS/DescribeReplicationSubnetGroups.hs b/gen/Network/AWS/DMS/DescribeReplicationSubnetGroups.hs
--- a/gen/Network/AWS/DMS/DescribeReplicationSubnetGroups.hs
+++ b/gen/Network/AWS/DMS/DescribeReplicationSubnetGroups.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns information about the replication subnet groups.
---
 module Network.AWS.DMS.DescribeReplicationSubnetGroups
     (
     -- * Creating a Request
@@ -46,7 +45,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'describeReplicationSubnetGroups' smart constructor.
+-- |
+--
+-- /See:/ 'describeReplicationSubnetGroups' smart constructor.
 data DescribeReplicationSubnetGroups = DescribeReplicationSubnetGroups'
     { _drsgFilters    :: !(Maybe [Filter])
     , _drsgMarker     :: !(Maybe Text)
@@ -130,7 +131,9 @@
          where
         toQuery = const mempty
 
--- | /See:/ 'describeReplicationSubnetGroupsResponse' smart constructor.
+-- |
+--
+-- /See:/ 'describeReplicationSubnetGroupsResponse' smart constructor.
 data DescribeReplicationSubnetGroupsResponse = DescribeReplicationSubnetGroupsResponse'
     { _drsgsrsMarker                  :: !(Maybe Text)
     , _drsgsrsReplicationSubnetGroups :: !(Maybe [ReplicationSubnetGroup])
diff --git a/gen/Network/AWS/DMS/DescribeReplicationTasks.hs b/gen/Network/AWS/DMS/DescribeReplicationTasks.hs
--- a/gen/Network/AWS/DMS/DescribeReplicationTasks.hs
+++ b/gen/Network/AWS/DMS/DescribeReplicationTasks.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns information about replication tasks for your account in the current region.
---
 module Network.AWS.DMS.DescribeReplicationTasks
     (
     -- * Creating a Request
@@ -46,7 +45,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'describeReplicationTasks' smart constructor.
+-- |
+--
+-- /See:/ 'describeReplicationTasks' smart constructor.
 data DescribeReplicationTasks = DescribeReplicationTasks'
     { _drtFilters    :: !(Maybe [Filter])
     , _drtMarker     :: !(Maybe Text)
@@ -129,7 +130,9 @@
 instance ToQuery DescribeReplicationTasks where
         toQuery = const mempty
 
--- | /See:/ 'describeReplicationTasksResponse' smart constructor.
+-- |
+--
+-- /See:/ 'describeReplicationTasksResponse' smart constructor.
 data DescribeReplicationTasksResponse = DescribeReplicationTasksResponse'
     { _drtsrsReplicationTasks :: !(Maybe [ReplicationTask])
     , _drtsrsMarker           :: !(Maybe Text)
diff --git a/gen/Network/AWS/DMS/DescribeSchemas.hs b/gen/Network/AWS/DMS/DescribeSchemas.hs
--- a/gen/Network/AWS/DMS/DescribeSchemas.hs
+++ b/gen/Network/AWS/DMS/DescribeSchemas.hs
@@ -46,7 +46,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'describeSchemas' smart constructor.
+-- |
+--
+-- /See:/ 'describeSchemas' smart constructor.
 data DescribeSchemas = DescribeSchemas'
     { _dsMarker      :: !(Maybe Text)
     , _dsMaxRecords  :: !(Maybe Int)
@@ -125,7 +127,9 @@
 instance ToQuery DescribeSchemas where
         toQuery = const mempty
 
--- | /See:/ 'describeSchemasResponse' smart constructor.
+-- |
+--
+-- /See:/ 'describeSchemasResponse' smart constructor.
 data DescribeSchemasResponse = DescribeSchemasResponse'
     { _dsrsSchemas        :: !(Maybe [Text])
     , _dsrsMarker         :: !(Maybe Text)
diff --git a/gen/Network/AWS/DMS/DescribeTableStatistics.hs b/gen/Network/AWS/DMS/DescribeTableStatistics.hs
--- a/gen/Network/AWS/DMS/DescribeTableStatistics.hs
+++ b/gen/Network/AWS/DMS/DescribeTableStatistics.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns table statistics on the database migration task, including table name, rows inserted, rows updated, and rows deleted.
---
 module Network.AWS.DMS.DescribeTableStatistics
     (
     -- * Creating a Request
@@ -47,7 +46,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'describeTableStatistics' smart constructor.
+-- |
+--
+-- /See:/ 'describeTableStatistics' smart constructor.
 data DescribeTableStatistics = DescribeTableStatistics'
     { _dtsMarker             :: !(Maybe Text)
     , _dtsMaxRecords         :: !(Maybe Int)
@@ -130,7 +131,9 @@
 instance ToQuery DescribeTableStatistics where
         toQuery = const mempty
 
--- | /See:/ 'describeTableStatisticsResponse' smart constructor.
+-- |
+--
+-- /See:/ 'describeTableStatisticsResponse' smart constructor.
 data DescribeTableStatisticsResponse = DescribeTableStatisticsResponse'
     { _dtsrsReplicationTaskARN :: !(Maybe Text)
     , _dtsrsMarker             :: !(Maybe Text)
diff --git a/gen/Network/AWS/DMS/ImportCertificate.hs b/gen/Network/AWS/DMS/ImportCertificate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DMS/ImportCertificate.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DMS.ImportCertificate
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Uploads the specified certificate.
+module Network.AWS.DMS.ImportCertificate
+    (
+    -- * Creating a Request
+      importCertificate
+    , ImportCertificate
+    -- * Request Lenses
+    , icCertificatePem
+    , icCertificateIdentifier
+
+    -- * Destructuring the Response
+    , importCertificateResponse
+    , ImportCertificateResponse
+    -- * Response Lenses
+    , icrsCertificate
+    , icrsResponseStatus
+    ) where
+
+import           Network.AWS.DMS.Types
+import           Network.AWS.DMS.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'importCertificate' smart constructor.
+data ImportCertificate = ImportCertificate'
+    { _icCertificatePem        :: !(Maybe Text)
+    , _icCertificateIdentifier :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImportCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'icCertificatePem'
+--
+-- * 'icCertificateIdentifier'
+importCertificate
+    :: Text -- ^ 'icCertificateIdentifier'
+    -> ImportCertificate
+importCertificate pCertificateIdentifier_ =
+    ImportCertificate'
+    { _icCertificatePem = Nothing
+    , _icCertificateIdentifier = pCertificateIdentifier_
+    }
+
+-- | The contents of the .pem X.509 certificate file.
+icCertificatePem :: Lens' ImportCertificate (Maybe Text)
+icCertificatePem = lens _icCertificatePem (\ s a -> s{_icCertificatePem = a});
+
+-- | The customer-assigned name of the certificate. Valid characters are [A-z_0-9].
+icCertificateIdentifier :: Lens' ImportCertificate Text
+icCertificateIdentifier = lens _icCertificateIdentifier (\ s a -> s{_icCertificateIdentifier = a});
+
+instance AWSRequest ImportCertificate where
+        type Rs ImportCertificate = ImportCertificateResponse
+        request = postJSON dms
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ImportCertificateResponse' <$>
+                   (x .?> "Certificate") <*> (pure (fromEnum s)))
+
+instance Hashable ImportCertificate
+
+instance NFData ImportCertificate
+
+instance ToHeaders ImportCertificate where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonDMSv20160101.ImportCertificate" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ImportCertificate where
+        toJSON ImportCertificate'{..}
+          = object
+              (catMaybes
+                 [("CertificatePem" .=) <$> _icCertificatePem,
+                  Just
+                    ("CertificateIdentifier" .=
+                       _icCertificateIdentifier)])
+
+instance ToPath ImportCertificate where
+        toPath = const "/"
+
+instance ToQuery ImportCertificate where
+        toQuery = const mempty
+
+-- | /See:/ 'importCertificateResponse' smart constructor.
+data ImportCertificateResponse = ImportCertificateResponse'
+    { _icrsCertificate    :: !(Maybe Certificate)
+    , _icrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImportCertificateResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'icrsCertificate'
+--
+-- * 'icrsResponseStatus'
+importCertificateResponse
+    :: Int -- ^ 'icrsResponseStatus'
+    -> ImportCertificateResponse
+importCertificateResponse pResponseStatus_ =
+    ImportCertificateResponse'
+    { _icrsCertificate = Nothing
+    , _icrsResponseStatus = pResponseStatus_
+    }
+
+-- | The certificate to be uploaded.
+icrsCertificate :: Lens' ImportCertificateResponse (Maybe Certificate)
+icrsCertificate = lens _icrsCertificate (\ s a -> s{_icrsCertificate = a});
+
+-- | The response status code.
+icrsResponseStatus :: Lens' ImportCertificateResponse Int
+icrsResponseStatus = lens _icrsResponseStatus (\ s a -> s{_icrsResponseStatus = a});
+
+instance NFData ImportCertificateResponse
diff --git a/gen/Network/AWS/DMS/ListTagsForResource.hs b/gen/Network/AWS/DMS/ListTagsForResource.hs
--- a/gen/Network/AWS/DMS/ListTagsForResource.hs
+++ b/gen/Network/AWS/DMS/ListTagsForResource.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Lists all tags for an AWS DMS resource.
---
 module Network.AWS.DMS.ListTagsForResource
     (
     -- * Creating a Request
@@ -43,7 +42,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'listTagsForResource' smart constructor.
+-- |
+--
+-- /See:/ 'listTagsForResource' smart constructor.
 newtype ListTagsForResource = ListTagsForResource'
     { _ltfrResourceARN :: Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -101,7 +102,9 @@
 instance ToQuery ListTagsForResource where
         toQuery = const mempty
 
--- | /See:/ 'listTagsForResourceResponse' smart constructor.
+-- |
+--
+-- /See:/ 'listTagsForResourceResponse' smart constructor.
 data ListTagsForResourceResponse = ListTagsForResourceResponse'
     { _ltfrrsTagList        :: !(Maybe [Tag])
     , _ltfrrsResponseStatus :: !Int
diff --git a/gen/Network/AWS/DMS/ModifyEndpoint.hs b/gen/Network/AWS/DMS/ModifyEndpoint.hs
--- a/gen/Network/AWS/DMS/ModifyEndpoint.hs
+++ b/gen/Network/AWS/DMS/ModifyEndpoint.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Modifies the specified endpoint.
---
 module Network.AWS.DMS.ModifyEndpoint
     (
     -- * Creating a Request
@@ -27,10 +26,12 @@
     , ModifyEndpoint
     -- * Request Lenses
     , meServerName
+    , meCertificateARN
     , meExtraConnectionAttributes
     , meEndpointType
     , meUsername
     , meEngineName
+    , meSSLMode
     , mePassword
     , meDatabaseName
     , meEndpointIdentifier
@@ -52,13 +53,17 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'modifyEndpoint' smart constructor.
+-- |
+--
+-- /See:/ 'modifyEndpoint' smart constructor.
 data ModifyEndpoint = ModifyEndpoint'
     { _meServerName                :: !(Maybe Text)
+    , _meCertificateARN            :: !(Maybe Text)
     , _meExtraConnectionAttributes :: !(Maybe Text)
     , _meEndpointType              :: !(Maybe ReplicationEndpointTypeValue)
     , _meUsername                  :: !(Maybe Text)
     , _meEngineName                :: !(Maybe Text)
+    , _meSSLMode                   :: !(Maybe DmsSSLModeValue)
     , _mePassword                  :: !(Maybe (Sensitive Text))
     , _meDatabaseName              :: !(Maybe Text)
     , _meEndpointIdentifier        :: !(Maybe Text)
@@ -72,6 +77,8 @@
 --
 -- * 'meServerName'
 --
+-- * 'meCertificateARN'
+--
 -- * 'meExtraConnectionAttributes'
 --
 -- * 'meEndpointType'
@@ -80,6 +87,8 @@
 --
 -- * 'meEngineName'
 --
+-- * 'meSSLMode'
+--
 -- * 'mePassword'
 --
 -- * 'meDatabaseName'
@@ -95,10 +104,12 @@
 modifyEndpoint pEndpointARN_ =
     ModifyEndpoint'
     { _meServerName = Nothing
+    , _meCertificateARN = Nothing
     , _meExtraConnectionAttributes = Nothing
     , _meEndpointType = Nothing
     , _meUsername = Nothing
     , _meEngineName = Nothing
+    , _meSSLMode = Nothing
     , _mePassword = Nothing
     , _meDatabaseName = Nothing
     , _meEndpointIdentifier = Nothing
@@ -110,6 +121,10 @@
 meServerName :: Lens' ModifyEndpoint (Maybe Text)
 meServerName = lens _meServerName (\ s a -> s{_meServerName = a});
 
+-- | The Amazon Resource Name (ARN) of the certificate used for SSL connection.
+meCertificateARN :: Lens' ModifyEndpoint (Maybe Text)
+meCertificateARN = lens _meCertificateARN (\ s a -> s{_meCertificateARN = a});
+
 -- | Additional attributes associated with the connection.
 meExtraConnectionAttributes :: Lens' ModifyEndpoint (Maybe Text)
 meExtraConnectionAttributes = lens _meExtraConnectionAttributes (\ s a -> s{_meExtraConnectionAttributes = a});
@@ -122,10 +137,18 @@
 meUsername :: Lens' ModifyEndpoint (Maybe Text)
 meUsername = lens _meUsername (\ s a -> s{_meUsername = a});
 
--- | The type of engine for the endpoint. Valid values include MYSQL, ORACLE, POSTGRES.
+-- | The type of engine for the endpoint. Valid values include MYSQL, ORACLE, POSTGRES, MARIADB, AURORA, REDSHIFT, and SQLSERVER.
 meEngineName :: Lens' ModifyEndpoint (Maybe Text)
 meEngineName = lens _meEngineName (\ s a -> s{_meEngineName = a});
 
+-- | The SSL mode to be used.
+--
+-- SSL mode can be one of four values: none, require, verify-ca, verify-full.
+--
+-- The default value is none.
+meSSLMode :: Lens' ModifyEndpoint (Maybe DmsSSLModeValue)
+meSSLMode = lens _meSSLMode (\ s a -> s{_meSSLMode = a});
+
 -- | The password to be used to login to the endpoint database.
 mePassword :: Lens' ModifyEndpoint (Maybe Text)
 mePassword = lens _mePassword (\ s a -> s{_mePassword = a}) . mapping _Sensitive;
@@ -173,11 +196,13 @@
           = object
               (catMaybes
                  [("ServerName" .=) <$> _meServerName,
+                  ("CertificateArn" .=) <$> _meCertificateARN,
                   ("ExtraConnectionAttributes" .=) <$>
                     _meExtraConnectionAttributes,
                   ("EndpointType" .=) <$> _meEndpointType,
                   ("Username" .=) <$> _meUsername,
                   ("EngineName" .=) <$> _meEngineName,
+                  ("SslMode" .=) <$> _meSSLMode,
                   ("Password" .=) <$> _mePassword,
                   ("DatabaseName" .=) <$> _meDatabaseName,
                   ("EndpointIdentifier" .=) <$> _meEndpointIdentifier,
@@ -190,7 +215,9 @@
 instance ToQuery ModifyEndpoint where
         toQuery = const mempty
 
--- | /See:/ 'modifyEndpointResponse' smart constructor.
+-- |
+--
+-- /See:/ 'modifyEndpointResponse' smart constructor.
 data ModifyEndpointResponse = ModifyEndpointResponse'
     { _mersEndpoint       :: !(Maybe Endpoint)
     , _mersResponseStatus :: !Int
diff --git a/gen/Network/AWS/DMS/ModifyReplicationInstance.hs b/gen/Network/AWS/DMS/ModifyReplicationInstance.hs
--- a/gen/Network/AWS/DMS/ModifyReplicationInstance.hs
+++ b/gen/Network/AWS/DMS/ModifyReplicationInstance.hs
@@ -32,6 +32,8 @@
     , mriAutoMinorVersionUpgrade
     , mriAllowMajorVersionUpgrade
     , mriPreferredMaintenanceWindow
+    , mriVPCSecurityGroupIds
+    , mriMultiAZ
     , mriAllocatedStorage
     , mriApplyImmediately
     , mriReplicationInstanceClass
@@ -53,12 +55,16 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'modifyReplicationInstance' smart constructor.
+-- |
+--
+-- /See:/ 'modifyReplicationInstance' smart constructor.
 data ModifyReplicationInstance = ModifyReplicationInstance'
     { _mriEngineVersion                 :: !(Maybe Text)
     , _mriAutoMinorVersionUpgrade       :: !(Maybe Bool)
     , _mriAllowMajorVersionUpgrade      :: !(Maybe Bool)
     , _mriPreferredMaintenanceWindow    :: !(Maybe Text)
+    , _mriVPCSecurityGroupIds           :: !(Maybe [Text])
+    , _mriMultiAZ                       :: !(Maybe Bool)
     , _mriAllocatedStorage              :: !(Maybe Int)
     , _mriApplyImmediately              :: !(Maybe Bool)
     , _mriReplicationInstanceClass      :: !(Maybe Text)
@@ -78,6 +84,10 @@
 --
 -- * 'mriPreferredMaintenanceWindow'
 --
+-- * 'mriVPCSecurityGroupIds'
+--
+-- * 'mriMultiAZ'
+--
 -- * 'mriAllocatedStorage'
 --
 -- * 'mriApplyImmediately'
@@ -96,6 +106,8 @@
     , _mriAutoMinorVersionUpgrade = Nothing
     , _mriAllowMajorVersionUpgrade = Nothing
     , _mriPreferredMaintenanceWindow = Nothing
+    , _mriVPCSecurityGroupIds = Nothing
+    , _mriMultiAZ = Nothing
     , _mriAllocatedStorage = Nothing
     , _mriApplyImmediately = Nothing
     , _mriReplicationInstanceClass = Nothing
@@ -129,6 +141,14 @@
 mriPreferredMaintenanceWindow :: Lens' ModifyReplicationInstance (Maybe Text)
 mriPreferredMaintenanceWindow = lens _mriPreferredMaintenanceWindow (\ s a -> s{_mriPreferredMaintenanceWindow = a});
 
+-- | Specifies the VPC security group to be used with the replication instance. The VPC security group must work with the VPC containing the replication instance.
+mriVPCSecurityGroupIds :: Lens' ModifyReplicationInstance [Text]
+mriVPCSecurityGroupIds = lens _mriVPCSecurityGroupIds (\ s a -> s{_mriVPCSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | Specifies if the replication instance is a Multi-AZ deployment. You cannot set the 'AvailabilityZone' parameter if the Multi-AZ parameter is set to 'true'.
+mriMultiAZ :: Lens' ModifyReplicationInstance (Maybe Bool)
+mriMultiAZ = lens _mriMultiAZ (\ s a -> s{_mriMultiAZ = a});
+
 -- | The amount of storage (in gigabytes) to be allocated for the replication instance.
 mriAllocatedStorage :: Lens' ModifyReplicationInstance (Maybe Int)
 mriAllocatedStorage = lens _mriAllocatedStorage (\ s a -> s{_mriAllocatedStorage = a});
@@ -187,6 +207,9 @@
                     _mriAllowMajorVersionUpgrade,
                   ("PreferredMaintenanceWindow" .=) <$>
                     _mriPreferredMaintenanceWindow,
+                  ("VpcSecurityGroupIds" .=) <$>
+                    _mriVPCSecurityGroupIds,
+                  ("MultiAZ" .=) <$> _mriMultiAZ,
                   ("AllocatedStorage" .=) <$> _mriAllocatedStorage,
                   ("ApplyImmediately" .=) <$> _mriApplyImmediately,
                   ("ReplicationInstanceClass" .=) <$>
@@ -203,7 +226,9 @@
 instance ToQuery ModifyReplicationInstance where
         toQuery = const mempty
 
--- | /See:/ 'modifyReplicationInstanceResponse' smart constructor.
+-- |
+--
+-- /See:/ 'modifyReplicationInstanceResponse' smart constructor.
 data ModifyReplicationInstanceResponse = ModifyReplicationInstanceResponse'
     { _mrirsReplicationInstance :: !(Maybe ReplicationInstance)
     , _mrirsResponseStatus      :: !Int
diff --git a/gen/Network/AWS/DMS/ModifyReplicationSubnetGroup.hs b/gen/Network/AWS/DMS/ModifyReplicationSubnetGroup.hs
--- a/gen/Network/AWS/DMS/ModifyReplicationSubnetGroup.hs
+++ b/gen/Network/AWS/DMS/ModifyReplicationSubnetGroup.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Modifies the settings for the specified replication subnet group.
---
 module Network.AWS.DMS.ModifyReplicationSubnetGroup
     (
     -- * Creating a Request
@@ -45,7 +44,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'modifyReplicationSubnetGroup' smart constructor.
+-- |
+--
+-- /See:/ 'modifyReplicationSubnetGroup' smart constructor.
 data ModifyReplicationSubnetGroup = ModifyReplicationSubnetGroup'
     { _mrsgReplicationSubnetGroupDescription :: !(Maybe Text)
     , _mrsgReplicationSubnetGroupIdentifier  :: !Text
@@ -126,7 +127,9 @@
 instance ToQuery ModifyReplicationSubnetGroup where
         toQuery = const mempty
 
--- | /See:/ 'modifyReplicationSubnetGroupResponse' smart constructor.
+-- |
+--
+-- /See:/ 'modifyReplicationSubnetGroupResponse' smart constructor.
 data ModifyReplicationSubnetGroupResponse = ModifyReplicationSubnetGroupResponse'
     { _mrsgrsReplicationSubnetGroup :: !(Maybe ReplicationSubnetGroup)
     , _mrsgrsResponseStatus         :: !Int
diff --git a/gen/Network/AWS/DMS/RefreshSchemas.hs b/gen/Network/AWS/DMS/RefreshSchemas.hs
--- a/gen/Network/AWS/DMS/RefreshSchemas.hs
+++ b/gen/Network/AWS/DMS/RefreshSchemas.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Populates the schema for the specified endpoint. This is an asynchronous operation and can take several minutes. You can check the status of this operation by calling the DescribeRefreshSchemasStatus operation.
---
 module Network.AWS.DMS.RefreshSchemas
     (
     -- * Creating a Request
@@ -44,7 +43,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'refreshSchemas' smart constructor.
+-- |
+--
+-- /See:/ 'refreshSchemas' smart constructor.
 data RefreshSchemas = RefreshSchemas'
     { _rsEndpointARN            :: !Text
     , _rsReplicationInstanceARN :: !Text
@@ -113,7 +114,9 @@
 instance ToQuery RefreshSchemas where
         toQuery = const mempty
 
--- | /See:/ 'refreshSchemasResponse' smart constructor.
+-- |
+--
+-- /See:/ 'refreshSchemasResponse' smart constructor.
 data RefreshSchemasResponse = RefreshSchemasResponse'
     { _rsrsRefreshSchemasStatus :: !(Maybe RefreshSchemasStatus)
     , _rsrsResponseStatus       :: !Int
diff --git a/gen/Network/AWS/DMS/RemoveTagsFromResource.hs b/gen/Network/AWS/DMS/RemoveTagsFromResource.hs
--- a/gen/Network/AWS/DMS/RemoveTagsFromResource.hs
+++ b/gen/Network/AWS/DMS/RemoveTagsFromResource.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Removes metadata tags from a DMS resource.
---
 module Network.AWS.DMS.RemoveTagsFromResource
     (
     -- * Creating a Request
@@ -43,7 +42,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'removeTagsFromResource' smart constructor.
+-- |
+--
+-- /See:/ 'removeTagsFromResource' smart constructor.
 data RemoveTagsFromResource = RemoveTagsFromResource'
     { _rtfrResourceARN :: !Text
     , _rtfrTagKeys     :: ![Text]
@@ -110,7 +111,9 @@
 instance ToQuery RemoveTagsFromResource where
         toQuery = const mempty
 
--- | /See:/ 'removeTagsFromResourceResponse' smart constructor.
+-- |
+--
+-- /See:/ 'removeTagsFromResourceResponse' smart constructor.
 newtype RemoveTagsFromResourceResponse = RemoveTagsFromResourceResponse'
     { _rtfrrsResponseStatus :: Int
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
diff --git a/gen/Network/AWS/DMS/StartReplicationTask.hs b/gen/Network/AWS/DMS/StartReplicationTask.hs
--- a/gen/Network/AWS/DMS/StartReplicationTask.hs
+++ b/gen/Network/AWS/DMS/StartReplicationTask.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Starts the replication task.
---
 module Network.AWS.DMS.StartReplicationTask
     (
     -- * Creating a Request
@@ -45,7 +44,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'startReplicationTask' smart constructor.
+-- |
+--
+-- /See:/ 'startReplicationTask' smart constructor.
 data StartReplicationTask = StartReplicationTask'
     { _srtCdcStartTime             :: !(Maybe POSIX)
     , _srtReplicationTaskARN       :: !Text
@@ -125,7 +126,9 @@
 instance ToQuery StartReplicationTask where
         toQuery = const mempty
 
--- | /See:/ 'startReplicationTaskResponse' smart constructor.
+-- |
+--
+-- /See:/ 'startReplicationTaskResponse' smart constructor.
 data StartReplicationTaskResponse = StartReplicationTaskResponse'
     { _srtrsReplicationTask :: !(Maybe ReplicationTask)
     , _srtrsResponseStatus  :: !Int
diff --git a/gen/Network/AWS/DMS/StopReplicationTask.hs b/gen/Network/AWS/DMS/StopReplicationTask.hs
--- a/gen/Network/AWS/DMS/StopReplicationTask.hs
+++ b/gen/Network/AWS/DMS/StopReplicationTask.hs
@@ -43,7 +43,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'stopReplicationTask' smart constructor.
+-- |
+--
+-- /See:/ 'stopReplicationTask' smart constructor.
 newtype StopReplicationTask = StopReplicationTask'
     { _sReplicationTaskARN :: Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -102,7 +104,9 @@
 instance ToQuery StopReplicationTask where
         toQuery = const mempty
 
--- | /See:/ 'stopReplicationTaskResponse' smart constructor.
+-- |
+--
+-- /See:/ 'stopReplicationTaskResponse' smart constructor.
 data StopReplicationTaskResponse = StopReplicationTaskResponse'
     { _srsReplicationTask :: !(Maybe ReplicationTask)
     , _srsResponseStatus  :: !Int
diff --git a/gen/Network/AWS/DMS/TestConnection.hs b/gen/Network/AWS/DMS/TestConnection.hs
--- a/gen/Network/AWS/DMS/TestConnection.hs
+++ b/gen/Network/AWS/DMS/TestConnection.hs
@@ -19,7 +19,6 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Tests the connection between the replication instance and the endpoint.
---
 module Network.AWS.DMS.TestConnection
     (
     -- * Creating a Request
@@ -44,7 +43,9 @@
 import           Network.AWS.Request
 import           Network.AWS.Response
 
--- | /See:/ 'testConnection' smart constructor.
+-- |
+--
+-- /See:/ 'testConnection' smart constructor.
 data TestConnection = TestConnection'
     { _tcReplicationInstanceARN :: !Text
     , _tcEndpointARN            :: !Text
@@ -67,7 +68,7 @@
     , _tcEndpointARN = pEndpointARN_
     }
 
--- | The Amazon Resource Number (ARN) of the replication instance.
+-- | The Amazon Resource Name (ARN) of the replication instance.
 tcReplicationInstanceARN :: Lens' TestConnection Text
 tcReplicationInstanceARN = lens _tcReplicationInstanceARN (\ s a -> s{_tcReplicationInstanceARN = a});
 
@@ -112,7 +113,9 @@
 instance ToQuery TestConnection where
         toQuery = const mempty
 
--- | /See:/ 'testConnectionResponse' smart constructor.
+-- |
+--
+-- /See:/ 'testConnectionResponse' smart constructor.
 data TestConnectionResponse = TestConnectionResponse'
     { _tcrsConnection     :: !(Maybe Connection)
     , _tcrsResponseStatus :: !Int
diff --git a/gen/Network/AWS/DMS/Types.hs b/gen/Network/AWS/DMS/Types.hs
--- a/gen/Network/AWS/DMS/Types.hs
+++ b/gen/Network/AWS/DMS/Types.hs
@@ -20,6 +20,7 @@
     , _KMSKeyNotAccessibleFault
     , _ReplicationSubnetGroupDoesNotCoverEnoughAZs
     , _InvalidResourceStateFault
+    , _InvalidCertificateFault
     , _ResourceAlreadyExistsFault
     , _InsufficientResourceCapacityFault
     , _ResourceQuotaExceededFault
@@ -29,6 +30,9 @@
     , _AccessDeniedFault
     , _SubnetAlreadyInUse
 
+    -- * DmsSSLModeValue
+    , DmsSSLModeValue (..)
+
     -- * MigrationTypeValue
     , MigrationTypeValue (..)
 
@@ -53,6 +57,19 @@
     , availabilityZone
     , azName
 
+    -- * Certificate
+    , Certificate
+    , certificate
+    , cCertificateOwner
+    , cSigningAlgorithm
+    , cValidFromDate
+    , cCertificatePem
+    , cCertificateARN
+    , cCertificateCreationDate
+    , cCertificateIdentifier
+    , cKeyLength
+    , cValidToDate
+
     -- * Connection
     , Connection
     , connection
@@ -68,11 +85,13 @@
     , endpoint
     , eStatus
     , eServerName
+    , eCertificateARN
     , eExtraConnectionAttributes
     , eEndpointType
     , eUsername
     , eEngineName
     , eKMSKeyId
+    , eSSLMode
     , eDatabaseName
     , eEndpointIdentifier
     , eEndpointARN
@@ -110,13 +129,17 @@
     , riEngineVersion
     , riPubliclyAccessible
     , riAutoMinorVersionUpgrade
+    , riReplicationInstancePublicIPAddresses
     , riReplicationSubnetGroup
     , riInstanceCreateTime
     , riReplicationInstanceStatus
+    , riReplicationInstancePrivateIPAddresses
     , riPreferredMaintenanceWindow
     , riReplicationInstancePrivateIPAddress
     , riKMSKeyId
     , riAvailabilityZone
+    , riVPCSecurityGroups
+    , riMultiAZ
     , riReplicationInstanceARN
     , riAllocatedStorage
     , riReplicationInstancePublicIPAddress
@@ -128,6 +151,7 @@
     , ReplicationPendingModifiedValues
     , replicationPendingModifiedValues
     , rpmvEngineVersion
+    , rpmvMultiAZ
     , rpmvAllocatedStorage
     , rpmvReplicationInstanceClass
 
@@ -199,6 +223,12 @@
     , tag
     , tagValue
     , tagKey
+
+    -- * VPCSecurityGroupMembership
+    , VPCSecurityGroupMembership
+    , vpcSecurityGroupMembership
+    , vsgmStatus
+    , vsgmVPCSecurityGroupId
     ) where
 
 import           Network.AWS.DMS.Types.Product
@@ -258,6 +288,10 @@
 _InvalidResourceStateFault :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidResourceStateFault =
     _ServiceError . hasCode "InvalidResourceStateFault"
+
+-- | The certificate was not valid.
+_InvalidCertificateFault :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidCertificateFault = _ServiceError . hasCode "InvalidCertificateFault"
 
 -- | The resource you are attempting to create already exists.
 _ResourceAlreadyExistsFault :: AsError a => Getting (First ServiceError) a ServiceError
diff --git a/gen/Network/AWS/DMS/Types/Product.hs b/gen/Network/AWS/DMS/Types/Product.hs
--- a/gen/Network/AWS/DMS/Types/Product.hs
+++ b/gen/Network/AWS/DMS/Types/Product.hs
@@ -72,7 +72,9 @@
 
 instance NFData AccountQuota
 
--- | /See:/ 'availabilityZone' smart constructor.
+-- |
+--
+-- /See:/ 'availabilityZone' smart constructor.
 newtype AvailabilityZone = AvailabilityZone'
     { _azName :: Maybe Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -102,7 +104,115 @@
 
 instance NFData AvailabilityZone
 
--- | /See:/ 'connection' smart constructor.
+-- | The SSL certificate that can be used to encrypt connections between the endpoints and the replication instance.
+--
+-- /See:/ 'certificate' smart constructor.
+data Certificate = Certificate'
+    { _cCertificateOwner        :: !(Maybe Text)
+    , _cSigningAlgorithm        :: !(Maybe Text)
+    , _cValidFromDate           :: !(Maybe POSIX)
+    , _cCertificatePem          :: !(Maybe Text)
+    , _cCertificateARN          :: !(Maybe Text)
+    , _cCertificateCreationDate :: !(Maybe POSIX)
+    , _cCertificateIdentifier   :: !(Maybe Text)
+    , _cKeyLength               :: !(Maybe Int)
+    , _cValidToDate             :: !(Maybe POSIX)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Certificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cCertificateOwner'
+--
+-- * 'cSigningAlgorithm'
+--
+-- * 'cValidFromDate'
+--
+-- * 'cCertificatePem'
+--
+-- * 'cCertificateARN'
+--
+-- * 'cCertificateCreationDate'
+--
+-- * 'cCertificateIdentifier'
+--
+-- * 'cKeyLength'
+--
+-- * 'cValidToDate'
+certificate
+    :: Certificate
+certificate =
+    Certificate'
+    { _cCertificateOwner = Nothing
+    , _cSigningAlgorithm = Nothing
+    , _cValidFromDate = Nothing
+    , _cCertificatePem = Nothing
+    , _cCertificateARN = Nothing
+    , _cCertificateCreationDate = Nothing
+    , _cCertificateIdentifier = Nothing
+    , _cKeyLength = Nothing
+    , _cValidToDate = Nothing
+    }
+
+-- | The owner of the certificate.
+cCertificateOwner :: Lens' Certificate (Maybe Text)
+cCertificateOwner = lens _cCertificateOwner (\ s a -> s{_cCertificateOwner = a});
+
+-- | The signing algorithm for the certificate.
+cSigningAlgorithm :: Lens' Certificate (Maybe Text)
+cSigningAlgorithm = lens _cSigningAlgorithm (\ s a -> s{_cSigningAlgorithm = a});
+
+-- | The beginning date the certificate is valid.
+cValidFromDate :: Lens' Certificate (Maybe UTCTime)
+cValidFromDate = lens _cValidFromDate (\ s a -> s{_cValidFromDate = a}) . mapping _Time;
+
+-- | The contents of the .pem X.509 certificate file.
+cCertificatePem :: Lens' Certificate (Maybe Text)
+cCertificatePem = lens _cCertificatePem (\ s a -> s{_cCertificatePem = a});
+
+-- | The Amazon Resource Name (ARN) for the certificate.
+cCertificateARN :: Lens' Certificate (Maybe Text)
+cCertificateARN = lens _cCertificateARN (\ s a -> s{_cCertificateARN = a});
+
+-- | the date the certificate was created.
+cCertificateCreationDate :: Lens' Certificate (Maybe UTCTime)
+cCertificateCreationDate = lens _cCertificateCreationDate (\ s a -> s{_cCertificateCreationDate = a}) . mapping _Time;
+
+-- | The customer-assigned name of the certificate. Valid characters are [A-z_0-9].
+cCertificateIdentifier :: Lens' Certificate (Maybe Text)
+cCertificateIdentifier = lens _cCertificateIdentifier (\ s a -> s{_cCertificateIdentifier = a});
+
+-- | The key length of the cryptographic algorithm being used.
+cKeyLength :: Lens' Certificate (Maybe Int)
+cKeyLength = lens _cKeyLength (\ s a -> s{_cKeyLength = a});
+
+-- | the final date the certificate is valid.
+cValidToDate :: Lens' Certificate (Maybe UTCTime)
+cValidToDate = lens _cValidToDate (\ s a -> s{_cValidToDate = a}) . mapping _Time;
+
+instance FromJSON Certificate where
+        parseJSON
+          = withObject "Certificate"
+              (\ x ->
+                 Certificate' <$>
+                   (x .:? "CertificateOwner") <*>
+                     (x .:? "SigningAlgorithm")
+                     <*> (x .:? "ValidFromDate")
+                     <*> (x .:? "CertificatePem")
+                     <*> (x .:? "CertificateArn")
+                     <*> (x .:? "CertificateCreationDate")
+                     <*> (x .:? "CertificateIdentifier")
+                     <*> (x .:? "KeyLength")
+                     <*> (x .:? "ValidToDate"))
+
+instance Hashable Certificate
+
+instance NFData Certificate
+
+-- |
+--
+-- /See:/ 'connection' smart constructor.
 data Connection = Connection'
     { _cStatus                        :: !(Maybe Text)
     , _cReplicationInstanceARN        :: !(Maybe Text)
@@ -178,15 +288,19 @@
 
 instance NFData Connection
 
--- | /See:/ 'endpoint' smart constructor.
+-- |
+--
+-- /See:/ 'endpoint' smart constructor.
 data Endpoint = Endpoint'
     { _eStatus                    :: !(Maybe Text)
     , _eServerName                :: !(Maybe Text)
+    , _eCertificateARN            :: !(Maybe Text)
     , _eExtraConnectionAttributes :: !(Maybe Text)
     , _eEndpointType              :: !(Maybe ReplicationEndpointTypeValue)
     , _eUsername                  :: !(Maybe Text)
     , _eEngineName                :: !(Maybe Text)
     , _eKMSKeyId                  :: !(Maybe Text)
+    , _eSSLMode                   :: !(Maybe DmsSSLModeValue)
     , _eDatabaseName              :: !(Maybe Text)
     , _eEndpointIdentifier        :: !(Maybe Text)
     , _eEndpointARN               :: !(Maybe Text)
@@ -201,6 +315,8 @@
 --
 -- * 'eServerName'
 --
+-- * 'eCertificateARN'
+--
 -- * 'eExtraConnectionAttributes'
 --
 -- * 'eEndpointType'
@@ -211,6 +327,8 @@
 --
 -- * 'eKMSKeyId'
 --
+-- * 'eSSLMode'
+--
 -- * 'eDatabaseName'
 --
 -- * 'eEndpointIdentifier'
@@ -224,11 +342,13 @@
     Endpoint'
     { _eStatus = Nothing
     , _eServerName = Nothing
+    , _eCertificateARN = Nothing
     , _eExtraConnectionAttributes = Nothing
     , _eEndpointType = Nothing
     , _eUsername = Nothing
     , _eEngineName = Nothing
     , _eKMSKeyId = Nothing
+    , _eSSLMode = Nothing
     , _eDatabaseName = Nothing
     , _eEndpointIdentifier = Nothing
     , _eEndpointARN = Nothing
@@ -243,6 +363,10 @@
 eServerName :: Lens' Endpoint (Maybe Text)
 eServerName = lens _eServerName (\ s a -> s{_eServerName = a});
 
+-- | The Amazon Resource Name (ARN) used for SSL connection to the endpoint.
+eCertificateARN :: Lens' Endpoint (Maybe Text)
+eCertificateARN = lens _eCertificateARN (\ s a -> s{_eCertificateARN = a});
+
 -- | Additional connection attributes used to connect to the endpoint.
 eExtraConnectionAttributes :: Lens' Endpoint (Maybe Text)
 eExtraConnectionAttributes = lens _eExtraConnectionAttributes (\ s a -> s{_eExtraConnectionAttributes = a});
@@ -263,6 +387,14 @@
 eKMSKeyId :: Lens' Endpoint (Maybe Text)
 eKMSKeyId = lens _eKMSKeyId (\ s a -> s{_eKMSKeyId = a});
 
+-- | The SSL mode used to connect to the endpoint.
+--
+-- SSL mode can be one of four values: none, require, verify-ca, verify-full.
+--
+-- The default value is none.
+eSSLMode :: Lens' Endpoint (Maybe DmsSSLModeValue)
+eSSLMode = lens _eSSLMode (\ s a -> s{_eSSLMode = a});
+
 -- | The name of the database at the endpoint.
 eDatabaseName :: Lens' Endpoint (Maybe Text)
 eDatabaseName = lens _eDatabaseName (\ s a -> s{_eDatabaseName = a});
@@ -285,11 +417,13 @@
               (\ x ->
                  Endpoint' <$>
                    (x .:? "Status") <*> (x .:? "ServerName") <*>
-                     (x .:? "ExtraConnectionAttributes")
+                     (x .:? "CertificateArn")
+                     <*> (x .:? "ExtraConnectionAttributes")
                      <*> (x .:? "EndpointType")
                      <*> (x .:? "Username")
                      <*> (x .:? "EngineName")
                      <*> (x .:? "KmsKeyId")
+                     <*> (x .:? "SslMode")
                      <*> (x .:? "DatabaseName")
                      <*> (x .:? "EndpointIdentifier")
                      <*> (x .:? "EndpointArn")
@@ -299,7 +433,9 @@
 
 instance NFData Endpoint
 
--- | /See:/ 'filter'' smart constructor.
+-- |
+--
+-- /See:/ 'filter'' smart constructor.
 data Filter = Filter'
     { _fName   :: !Text
     , _fValues :: ![Text]
@@ -340,7 +476,9 @@
                  [Just ("Name" .= _fName),
                   Just ("Values" .= _fValues)])
 
--- | /See:/ 'orderableReplicationInstance' smart constructor.
+-- |
+--
+-- /See:/ 'orderableReplicationInstance' smart constructor.
 data OrderableReplicationInstance = OrderableReplicationInstance'
     { _oriEngineVersion            :: !(Maybe Text)
     , _oriMinAllocatedStorage      :: !(Maybe Int)
@@ -428,7 +566,9 @@
 
 instance NFData OrderableReplicationInstance
 
--- | /See:/ 'refreshSchemasStatus' smart constructor.
+-- |
+--
+-- /See:/ 'refreshSchemasStatus' smart constructor.
 data RefreshSchemasStatus = RefreshSchemasStatus'
     { _rssStatus                 :: !(Maybe RefreshSchemasStatusTypeValue)
     , _rssLastRefreshDate        :: !(Maybe POSIX)
@@ -495,24 +635,30 @@
 
 instance NFData RefreshSchemasStatus
 
--- | /See:/ 'replicationInstance' smart constructor.
+-- |
+--
+-- /See:/ 'replicationInstance' smart constructor.
 data ReplicationInstance = ReplicationInstance'
-    { _riEngineVersion                       :: !(Maybe Text)
-    , _riPubliclyAccessible                  :: !(Maybe Bool)
-    , _riAutoMinorVersionUpgrade             :: !(Maybe Bool)
-    , _riReplicationSubnetGroup              :: !(Maybe ReplicationSubnetGroup)
-    , _riInstanceCreateTime                  :: !(Maybe POSIX)
-    , _riReplicationInstanceStatus           :: !(Maybe Text)
-    , _riPreferredMaintenanceWindow          :: !(Maybe Text)
-    , _riReplicationInstancePrivateIPAddress :: !(Maybe Text)
-    , _riKMSKeyId                            :: !(Maybe Text)
-    , _riAvailabilityZone                    :: !(Maybe Text)
-    , _riReplicationInstanceARN              :: !(Maybe Text)
-    , _riAllocatedStorage                    :: !(Maybe Int)
-    , _riReplicationInstancePublicIPAddress  :: !(Maybe Text)
-    , _riReplicationInstanceClass            :: !(Maybe Text)
-    , _riReplicationInstanceIdentifier       :: !(Maybe Text)
-    , _riPendingModifiedValues               :: !(Maybe ReplicationPendingModifiedValues)
+    { _riEngineVersion                         :: !(Maybe Text)
+    , _riPubliclyAccessible                    :: !(Maybe Bool)
+    , _riAutoMinorVersionUpgrade               :: !(Maybe Bool)
+    , _riReplicationInstancePublicIPAddresses  :: !(Maybe [Text])
+    , _riReplicationSubnetGroup                :: !(Maybe ReplicationSubnetGroup)
+    , _riInstanceCreateTime                    :: !(Maybe POSIX)
+    , _riReplicationInstanceStatus             :: !(Maybe Text)
+    , _riReplicationInstancePrivateIPAddresses :: !(Maybe [Text])
+    , _riPreferredMaintenanceWindow            :: !(Maybe Text)
+    , _riReplicationInstancePrivateIPAddress   :: !(Maybe Text)
+    , _riKMSKeyId                              :: !(Maybe Text)
+    , _riAvailabilityZone                      :: !(Maybe Text)
+    , _riVPCSecurityGroups                     :: !(Maybe [VPCSecurityGroupMembership])
+    , _riMultiAZ                               :: !(Maybe Bool)
+    , _riReplicationInstanceARN                :: !(Maybe Text)
+    , _riAllocatedStorage                      :: !(Maybe Int)
+    , _riReplicationInstancePublicIPAddress    :: !(Maybe Text)
+    , _riReplicationInstanceClass              :: !(Maybe Text)
+    , _riReplicationInstanceIdentifier         :: !(Maybe Text)
+    , _riPendingModifiedValues                 :: !(Maybe ReplicationPendingModifiedValues)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ReplicationInstance' with the minimum fields required to make a request.
@@ -525,12 +671,16 @@
 --
 -- * 'riAutoMinorVersionUpgrade'
 --
+-- * 'riReplicationInstancePublicIPAddresses'
+--
 -- * 'riReplicationSubnetGroup'
 --
 -- * 'riInstanceCreateTime'
 --
 -- * 'riReplicationInstanceStatus'
 --
+-- * 'riReplicationInstancePrivateIPAddresses'
+--
 -- * 'riPreferredMaintenanceWindow'
 --
 -- * 'riReplicationInstancePrivateIPAddress'
@@ -539,6 +689,10 @@
 --
 -- * 'riAvailabilityZone'
 --
+-- * 'riVPCSecurityGroups'
+--
+-- * 'riMultiAZ'
+--
 -- * 'riReplicationInstanceARN'
 --
 -- * 'riAllocatedStorage'
@@ -557,13 +711,17 @@
     { _riEngineVersion = Nothing
     , _riPubliclyAccessible = Nothing
     , _riAutoMinorVersionUpgrade = Nothing
+    , _riReplicationInstancePublicIPAddresses = Nothing
     , _riReplicationSubnetGroup = Nothing
     , _riInstanceCreateTime = Nothing
     , _riReplicationInstanceStatus = Nothing
+    , _riReplicationInstancePrivateIPAddresses = Nothing
     , _riPreferredMaintenanceWindow = Nothing
     , _riReplicationInstancePrivateIPAddress = Nothing
     , _riKMSKeyId = Nothing
     , _riAvailabilityZone = Nothing
+    , _riVPCSecurityGroups = Nothing
+    , _riMultiAZ = Nothing
     , _riReplicationInstanceARN = Nothing
     , _riAllocatedStorage = Nothing
     , _riReplicationInstancePublicIPAddress = Nothing
@@ -584,6 +742,10 @@
 riAutoMinorVersionUpgrade :: Lens' ReplicationInstance (Maybe Bool)
 riAutoMinorVersionUpgrade = lens _riAutoMinorVersionUpgrade (\ s a -> s{_riAutoMinorVersionUpgrade = a});
 
+-- | The public IP address of the replication instance.
+riReplicationInstancePublicIPAddresses :: Lens' ReplicationInstance [Text]
+riReplicationInstancePublicIPAddresses = lens _riReplicationInstancePublicIPAddresses (\ s a -> s{_riReplicationInstancePublicIPAddresses = a}) . _Default . _Coerce;
+
 -- | The subnet group for the replication instance.
 riReplicationSubnetGroup :: Lens' ReplicationInstance (Maybe ReplicationSubnetGroup)
 riReplicationSubnetGroup = lens _riReplicationSubnetGroup (\ s a -> s{_riReplicationSubnetGroup = a});
@@ -596,6 +758,10 @@
 riReplicationInstanceStatus :: Lens' ReplicationInstance (Maybe Text)
 riReplicationInstanceStatus = lens _riReplicationInstanceStatus (\ s a -> s{_riReplicationInstanceStatus = a});
 
+-- | The private IP address of the replication instance.
+riReplicationInstancePrivateIPAddresses :: Lens' ReplicationInstance [Text]
+riReplicationInstancePrivateIPAddresses = lens _riReplicationInstancePrivateIPAddresses (\ s a -> s{_riReplicationInstancePrivateIPAddresses = a}) . _Default . _Coerce;
+
 -- | The maintenance window times for the replication instance.
 riPreferredMaintenanceWindow :: Lens' ReplicationInstance (Maybe Text)
 riPreferredMaintenanceWindow = lens _riPreferredMaintenanceWindow (\ s a -> s{_riPreferredMaintenanceWindow = a});
@@ -612,6 +778,14 @@
 riAvailabilityZone :: Lens' ReplicationInstance (Maybe Text)
 riAvailabilityZone = lens _riAvailabilityZone (\ s a -> s{_riAvailabilityZone = a});
 
+-- | The VPC security group for the instance.
+riVPCSecurityGroups :: Lens' ReplicationInstance [VPCSecurityGroupMembership]
+riVPCSecurityGroups = lens _riVPCSecurityGroups (\ s a -> s{_riVPCSecurityGroups = a}) . _Default . _Coerce;
+
+-- | Specifies if the replication instance is a Multi-AZ deployment. You cannot set the 'AvailabilityZone' parameter if the Multi-AZ parameter is set to 'true'.
+riMultiAZ :: Lens' ReplicationInstance (Maybe Bool)
+riMultiAZ = lens _riMultiAZ (\ s a -> s{_riMultiAZ = a});
+
 -- | The Amazon Resource Name (ARN) of the replication instance.
 riReplicationInstanceARN :: Lens' ReplicationInstance (Maybe Text)
 riReplicationInstanceARN = lens _riReplicationInstanceARN (\ s a -> s{_riReplicationInstanceARN = a});
@@ -635,7 +809,9 @@
 -- Constraints:
 --
 -- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
+--
 -- -   First character must be a letter.
+--
 -- -   Cannot end with a hyphen or contain two consecutive hyphens.
 --
 -- Example: 'myrepinstance'
@@ -654,13 +830,21 @@
                    (x .:? "EngineVersion") <*>
                      (x .:? "PubliclyAccessible")
                      <*> (x .:? "AutoMinorVersionUpgrade")
+                     <*>
+                     (x .:? "ReplicationInstancePublicIpAddresses" .!=
+                        mempty)
                      <*> (x .:? "ReplicationSubnetGroup")
                      <*> (x .:? "InstanceCreateTime")
                      <*> (x .:? "ReplicationInstanceStatus")
+                     <*>
+                     (x .:? "ReplicationInstancePrivateIpAddresses" .!=
+                        mempty)
                      <*> (x .:? "PreferredMaintenanceWindow")
                      <*> (x .:? "ReplicationInstancePrivateIpAddress")
                      <*> (x .:? "KmsKeyId")
                      <*> (x .:? "AvailabilityZone")
+                     <*> (x .:? "VpcSecurityGroups" .!= mempty)
+                     <*> (x .:? "MultiAZ")
                      <*> (x .:? "ReplicationInstanceArn")
                      <*> (x .:? "AllocatedStorage")
                      <*> (x .:? "ReplicationInstancePublicIpAddress")
@@ -672,9 +856,12 @@
 
 instance NFData ReplicationInstance
 
--- | /See:/ 'replicationPendingModifiedValues' smart constructor.
+-- |
+--
+-- /See:/ 'replicationPendingModifiedValues' smart constructor.
 data ReplicationPendingModifiedValues = ReplicationPendingModifiedValues'
     { _rpmvEngineVersion            :: !(Maybe Text)
+    , _rpmvMultiAZ                  :: !(Maybe Bool)
     , _rpmvAllocatedStorage         :: !(Maybe Int)
     , _rpmvReplicationInstanceClass :: !(Maybe Text)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
@@ -685,6 +872,8 @@
 --
 -- * 'rpmvEngineVersion'
 --
+-- * 'rpmvMultiAZ'
+--
 -- * 'rpmvAllocatedStorage'
 --
 -- * 'rpmvReplicationInstanceClass'
@@ -693,6 +882,7 @@
 replicationPendingModifiedValues =
     ReplicationPendingModifiedValues'
     { _rpmvEngineVersion = Nothing
+    , _rpmvMultiAZ = Nothing
     , _rpmvAllocatedStorage = Nothing
     , _rpmvReplicationInstanceClass = Nothing
     }
@@ -701,6 +891,10 @@
 rpmvEngineVersion :: Lens' ReplicationPendingModifiedValues (Maybe Text)
 rpmvEngineVersion = lens _rpmvEngineVersion (\ s a -> s{_rpmvEngineVersion = a});
 
+-- | Specifies if the replication instance is a Multi-AZ deployment. You cannot set the 'AvailabilityZone' parameter if the Multi-AZ parameter is set to 'true'.
+rpmvMultiAZ :: Lens' ReplicationPendingModifiedValues (Maybe Bool)
+rpmvMultiAZ = lens _rpmvMultiAZ (\ s a -> s{_rpmvMultiAZ = a});
+
 -- | The amount of storage (in gigabytes) that is allocated for the replication instance.
 rpmvAllocatedStorage :: Lens' ReplicationPendingModifiedValues (Maybe Int)
 rpmvAllocatedStorage = lens _rpmvAllocatedStorage (\ s a -> s{_rpmvAllocatedStorage = a});
@@ -717,7 +911,7 @@
           = withObject "ReplicationPendingModifiedValues"
               (\ x ->
                  ReplicationPendingModifiedValues' <$>
-                   (x .:? "EngineVersion") <*>
+                   (x .:? "EngineVersion") <*> (x .:? "MultiAZ") <*>
                      (x .:? "AllocatedStorage")
                      <*> (x .:? "ReplicationInstanceClass"))
 
@@ -725,7 +919,9 @@
 
 instance NFData ReplicationPendingModifiedValues
 
--- | /See:/ 'replicationSubnetGroup' smart constructor.
+-- |
+--
+-- /See:/ 'replicationSubnetGroup' smart constructor.
 data ReplicationSubnetGroup = ReplicationSubnetGroup'
     { _rsgVPCId                             :: !(Maybe Text)
     , _rsgSubnets                           :: !(Maybe [Subnet])
@@ -792,7 +988,9 @@
 
 instance NFData ReplicationSubnetGroup
 
--- | /See:/ 'replicationTask' smart constructor.
+-- |
+--
+-- /See:/ 'replicationTask' smart constructor.
 data ReplicationTask = ReplicationTask'
     { _rtReplicationTaskSettings     :: !(Maybe Text)
     , _rtStatus                      :: !(Maybe Text)
@@ -874,8 +1072,11 @@
 -- Constraints:
 --
 -- -   Must contain from 1 to 63 alphanumeric characters or hyphens.
+--
 -- -   First character must be a letter.
+--
 -- -   Cannot end with a hyphen or contain two consecutive hyphens.
+--
 rtReplicationTaskIdentifier :: Lens' ReplicationTask (Maybe Text)
 rtReplicationTaskIdentifier = lens _rtReplicationTaskIdentifier (\ s a -> s{_rtReplicationTaskIdentifier = a});
 
@@ -938,7 +1139,9 @@
 
 instance NFData ReplicationTask
 
--- | /See:/ 'replicationTaskStats' smart constructor.
+-- |
+--
+-- /See:/ 'replicationTaskStats' smart constructor.
 data ReplicationTaskStats = ReplicationTaskStats'
     { _rtsFullLoadProgressPercent :: !(Maybe Int)
     , _rtsElapsedTimeMillis       :: !(Maybe Integer)
@@ -1015,7 +1218,9 @@
 
 instance NFData ReplicationTaskStats
 
--- | /See:/ 'subnet' smart constructor.
+-- |
+--
+-- /See:/ 'subnet' smart constructor.
 data Subnet = Subnet'
     { _sSubnetStatus           :: !(Maybe Text)
     , _sSubnetIdentifier       :: !(Maybe Text)
@@ -1064,7 +1269,9 @@
 
 instance NFData Subnet
 
--- | /See:/ 'supportedEndpointType' smart constructor.
+-- |
+--
+-- /See:/ 'supportedEndpointType' smart constructor.
 data SupportedEndpointType = SupportedEndpointType'
     { _setEndpointType :: !(Maybe ReplicationEndpointTypeValue)
     , _setEngineName   :: !(Maybe Text)
@@ -1113,7 +1320,9 @@
 
 instance NFData SupportedEndpointType
 
--- | /See:/ 'tableStatistics' smart constructor.
+-- |
+--
+-- /See:/ 'tableStatistics' smart constructor.
 data TableStatistics = TableStatistics'
     { _tsFullLoadRows   :: !(Maybe Integer)
     , _tsInserts        :: !(Maybe Integer)
@@ -1216,7 +1425,9 @@
 
 instance NFData TableStatistics
 
--- | /See:/ 'tag' smart constructor.
+-- |
+--
+-- /See:/ 'tag' smart constructor.
 data Tag = Tag'
     { _tagValue :: !(Maybe Text)
     , _tagKey   :: !(Maybe Text)
@@ -1259,3 +1470,45 @@
           = object
               (catMaybes
                  [("Value" .=) <$> _tagValue, ("Key" .=) <$> _tagKey])
+
+-- |
+--
+-- /See:/ 'vpcSecurityGroupMembership' smart constructor.
+data VPCSecurityGroupMembership = VPCSecurityGroupMembership'
+    { _vsgmStatus             :: !(Maybe Text)
+    , _vsgmVPCSecurityGroupId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPCSecurityGroupMembership' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vsgmStatus'
+--
+-- * 'vsgmVPCSecurityGroupId'
+vpcSecurityGroupMembership
+    :: VPCSecurityGroupMembership
+vpcSecurityGroupMembership =
+    VPCSecurityGroupMembership'
+    { _vsgmStatus = Nothing
+    , _vsgmVPCSecurityGroupId = Nothing
+    }
+
+-- | The status of the VPC security group.
+vsgmStatus :: Lens' VPCSecurityGroupMembership (Maybe Text)
+vsgmStatus = lens _vsgmStatus (\ s a -> s{_vsgmStatus = a});
+
+-- | The VPC security group Id.
+vsgmVPCSecurityGroupId :: Lens' VPCSecurityGroupMembership (Maybe Text)
+vsgmVPCSecurityGroupId = lens _vsgmVPCSecurityGroupId (\ s a -> s{_vsgmVPCSecurityGroupId = a});
+
+instance FromJSON VPCSecurityGroupMembership where
+        parseJSON
+          = withObject "VPCSecurityGroupMembership"
+              (\ x ->
+                 VPCSecurityGroupMembership' <$>
+                   (x .:? "Status") <*> (x .:? "VpcSecurityGroupId"))
+
+instance Hashable VPCSecurityGroupMembership
+
+instance NFData VPCSecurityGroupMembership
diff --git a/gen/Network/AWS/DMS/Types/Sum.hs b/gen/Network/AWS/DMS/Types/Sum.hs
--- a/gen/Network/AWS/DMS/Types/Sum.hs
+++ b/gen/Network/AWS/DMS/Types/Sum.hs
@@ -19,6 +19,41 @@
 
 import           Network.AWS.Prelude
 
+data DmsSSLModeValue
+    = None
+    | Require
+    | VerifyCa
+    | VerifyFull
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText DmsSSLModeValue where
+    parser = takeLowerText >>= \case
+        "none" -> pure None
+        "require" -> pure Require
+        "verify-ca" -> pure VerifyCa
+        "verify-full" -> pure VerifyFull
+        e -> fromTextError $ "Failure parsing DmsSSLModeValue from value: '" <> e
+           <> "'. Accepted values: none, require, verify-ca, verify-full"
+
+instance ToText DmsSSLModeValue where
+    toText = \case
+        None -> "none"
+        Require -> "require"
+        VerifyCa -> "verify-ca"
+        VerifyFull -> "verify-full"
+
+instance Hashable     DmsSSLModeValue
+instance NFData       DmsSSLModeValue
+instance ToByteString DmsSSLModeValue
+instance ToQuery      DmsSSLModeValue
+instance ToHeader     DmsSSLModeValue
+
+instance ToJSON DmsSSLModeValue where
+    toJSON = toJSONText
+
+instance FromJSON DmsSSLModeValue where
+    parseJSON = parseJSONText "DmsSSLModeValue"
+
 data MigrationTypeValue
     = Cdc
     | FullLoad
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Test/AWS/Gen/DMS.hs b/test/Test/AWS/Gen/DMS.hs
--- a/test/Test/AWS/Gen/DMS.hs
+++ b/test/Test/AWS/Gen/DMS.hs
@@ -61,6 +61,9 @@
 --         , requestModifyEndpoint $
 --             modifyEndpoint
 --
+--         , requestDescribeCertificates $
+--             describeCertificates
+--
 --         , requestDescribeTableStatistics $
 --             describeTableStatistics
 --
@@ -76,6 +79,9 @@
 --         , requestCreateReplicationSubnetGroup $
 --             createReplicationSubnetGroup
 --
+--         , requestDeleteCertificate $
+--             deleteCertificate
+--
 --         , requestRefreshSchemas $
 --             refreshSchemas
 --
@@ -94,6 +100,9 @@
 --         , requestModifyReplicationInstance $
 --             modifyReplicationInstance
 --
+--         , requestImportCertificate $
+--             importCertificate
+--
 --         , requestModifyReplicationSubnetGroup $
 --             modifyReplicationSubnetGroup
 --
@@ -151,6 +160,9 @@
 --         , responseModifyEndpoint $
 --             modifyEndpointResponse
 --
+--         , responseDescribeCertificates $
+--             describeCertificatesResponse
+--
 --         , responseDescribeTableStatistics $
 --             describeTableStatisticsResponse
 --
@@ -166,6 +178,9 @@
 --         , responseCreateReplicationSubnetGroup $
 --             createReplicationSubnetGroupResponse
 --
+--         , responseDeleteCertificate $
+--             deleteCertificateResponse
+--
 --         , responseRefreshSchemas $
 --             refreshSchemasResponse
 --
@@ -184,6 +199,9 @@
 --         , responseModifyReplicationInstance $
 --             modifyReplicationInstanceResponse
 --
+--         , responseImportCertificate $
+--             importCertificateResponse
+--
 --         , responseModifyReplicationSubnetGroup $
 --             modifyReplicationSubnetGroupResponse
 --
@@ -265,6 +283,11 @@
     "ModifyEndpoint"
     "fixture/ModifyEndpoint.yaml"
 
+requestDescribeCertificates :: DescribeCertificates -> TestTree
+requestDescribeCertificates = req
+    "DescribeCertificates"
+    "fixture/DescribeCertificates.yaml"
+
 requestDescribeTableStatistics :: DescribeTableStatistics -> TestTree
 requestDescribeTableStatistics = req
     "DescribeTableStatistics"
@@ -290,6 +313,11 @@
     "CreateReplicationSubnetGroup"
     "fixture/CreateReplicationSubnetGroup.yaml"
 
+requestDeleteCertificate :: DeleteCertificate -> TestTree
+requestDeleteCertificate = req
+    "DeleteCertificate"
+    "fixture/DeleteCertificate.yaml"
+
 requestRefreshSchemas :: RefreshSchemas -> TestTree
 requestRefreshSchemas = req
     "RefreshSchemas"
@@ -320,6 +348,11 @@
     "ModifyReplicationInstance"
     "fixture/ModifyReplicationInstance.yaml"
 
+requestImportCertificate :: ImportCertificate -> TestTree
+requestImportCertificate = req
+    "ImportCertificate"
+    "fixture/ImportCertificate.yaml"
+
 requestModifyReplicationSubnetGroup :: ModifyReplicationSubnetGroup -> TestTree
 requestModifyReplicationSubnetGroup = req
     "ModifyReplicationSubnetGroup"
@@ -434,6 +467,13 @@
     dms
     (Proxy :: Proxy ModifyEndpoint)
 
+responseDescribeCertificates :: DescribeCertificatesResponse -> TestTree
+responseDescribeCertificates = res
+    "DescribeCertificatesResponse"
+    "fixture/DescribeCertificatesResponse.proto"
+    dms
+    (Proxy :: Proxy DescribeCertificates)
+
 responseDescribeTableStatistics :: DescribeTableStatisticsResponse -> TestTree
 responseDescribeTableStatistics = res
     "DescribeTableStatisticsResponse"
@@ -469,6 +509,13 @@
     dms
     (Proxy :: Proxy CreateReplicationSubnetGroup)
 
+responseDeleteCertificate :: DeleteCertificateResponse -> TestTree
+responseDeleteCertificate = res
+    "DeleteCertificateResponse"
+    "fixture/DeleteCertificateResponse.proto"
+    dms
+    (Proxy :: Proxy DeleteCertificate)
+
 responseRefreshSchemas :: RefreshSchemasResponse -> TestTree
 responseRefreshSchemas = res
     "RefreshSchemasResponse"
@@ -510,6 +557,13 @@
     "fixture/ModifyReplicationInstanceResponse.proto"
     dms
     (Proxy :: Proxy ModifyReplicationInstance)
+
+responseImportCertificate :: ImportCertificateResponse -> TestTree
+responseImportCertificate = res
+    "ImportCertificateResponse"
+    "fixture/ImportCertificateResponse.proto"
+    dms
+    (Proxy :: Proxy ImportCertificate)
 
 responseModifyReplicationSubnetGroup :: ModifyReplicationSubnetGroupResponse -> TestTree
 responseModifyReplicationSubnetGroup = res
