diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+# 0.6.0.1
+
+- add compatibility with amazonka > 1.6.0
+
 # 0.6.0.0
 
 - add dDecodeEither method to DynamoEncodable for better error reporting
diff --git a/dynamodb-simple.cabal b/dynamodb-simple.cabal
--- a/dynamodb-simple.cabal
+++ b/dynamodb-simple.cabal
@@ -1,5 +1,5 @@
 name:                dynamodb-simple
-version:             0.6.0.0
+version:             0.6.0.1
 synopsis:            Typesafe library for working with DynamoDB database
 description:         Framework for accessing DynamoDB database. The majority of AWS API
                      is available to the user in a convenient, simple and typesafe manner.
@@ -27,7 +27,7 @@
                        Database.DynamoDB.Internal, Database.DynamoDB.BatchRequest,
                        Database.DynamoDB.QueryRequest, Database.DynamoDB.THLens,
                        Database.DynamoDB.THContains, Database.DynamoDB.THConvert
-  build-depends:       base >=4.9 && <5, amazonka-dynamodb >= 1.5.0, generics-sop,
+  build-depends:       base >=4.9 && <5, amazonka-dynamodb >= 1.6.0, generics-sop,
                        unordered-containers, text, lens, double-conversion,
                        semigroups, bytestring >= 0.10.8.0, containers, monad-supply,
                        template-haskell, transformers, exceptions,
@@ -44,7 +44,7 @@
   main-is:             Spec.hs
   other-modules:       BaseSpec, NestedSpec
   build-depends:       base, dynamodb-simple, hspec, text, lens, transformers,
-                       safe-exceptions, amazonka-dynamodb >= 1.4.5, amazonka, conduit,
+                       safe-exceptions, amazonka-dynamodb >= 1.6.0, amazonka, conduit,
                        semigroups, hashable, containers, unordered-containers,
                        tagged
   default-language:    Haskell2010
diff --git a/src/Database/DynamoDB/Class.hs b/src/Database/DynamoDB/Class.hs
--- a/src/Database/DynamoDB/Class.hs
+++ b/src/Database/DynamoDB/Class.hs
@@ -312,9 +312,9 @@
     attrdefs = [D.attributeDefinition hashname (dType (Proxy :: Proxy hash))]
     keyschema = keySchemaElement hashname D.Hash :| []
     proj | Just lst <- nonEmpty attrlist =
-                    D.projection & D.pProjectionType .~ Just D.Include
+                    D.projection & D.pProjectionType .~ Just D.PTInclude
                                  & D.pNonKeyAttributes .~ Just lst
-         | otherwise = D.projection & D.pProjectionType .~ Just D.KeysOnly
+         | otherwise = D.projection & D.pProjectionType .~ Just D.PTKeysOnly
     parentKey = primaryFields (Proxy :: Proxy parent)
     attrlist = filter (`notElem` (parentKey ++ [hashname])) $ allFieldNames (Proxy :: Proxy a)
 
@@ -331,9 +331,9 @@
     keyschema = keySchemaElement hashname D.Hash :| [keySchemaElement rangename D.Range]
     --
     proj | Just lst <- nonEmpty attrlist =
-                    D.projection & D.pProjectionType .~ Just D.Include
+                    D.projection & D.pProjectionType .~ Just D.PTInclude
                                  & D.pNonKeyAttributes .~ Just lst
-         | otherwise = D.projection & D.pProjectionType .~ Just D.KeysOnly
+         | otherwise = D.projection & D.pProjectionType .~ Just D.PTKeysOnly
     parentKey = primaryFields (Proxy :: Proxy parent)
     attrlist = filter (`notElem` (parentKey ++ [hashname, rangename])) $ allFieldNames (Proxy :: Proxy a)
 
diff --git a/src/Database/DynamoDB/Migration.hs b/src/Database/DynamoDB/Migration.hs
--- a/src/Database/DynamoDB/Migration.hs
+++ b/src/Database/DynamoDB/Migration.hs
@@ -1,11 +1,11 @@
+{-# LANGUAGE DataKinds           #-}
 {-# LANGUAGE FlexibleContexts    #-}
 {-# LANGUAGE MultiWayIf          #-}
 {-# LANGUAGE OverloadedStrings   #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TupleSections       #-}
-{-# LANGUAGE DataKinds       #-}
+{-# LANGUAGE TypeFamilies        #-}
 {-# LANGUAGE TypeOperators       #-}
-{-# LANGUAGE TypeFamilies       #-}
 
 module Database.DynamoDB.Migration (
   runMigration
@@ -13,8 +13,9 @@
 
 import           Control.Arrow                      (first)
 import           Control.Concurrent                 (threadDelay)
-import           Control.Lens                       (_1, set, view, (%~), (.~),
-                                                     (^.), (^..), (^?), _Just)
+import           Control.Lens                       (set, view, (%~), (.~),
+                                                     (^.), (^..), (^?), _1,
+                                                     _Just)
 import           Control.Monad                      (unless, void, when)
 import           Control.Monad.Catch                (throwM)
 import           Control.Monad.IO.Class             (liftIO)
@@ -25,7 +26,7 @@
 import           Data.Function                      ((&))
 import qualified Data.HashMap.Strict                as HMap
 import           Data.List                          (nub, (\\))
-import           Data.Maybe                         (mapMaybe, fromMaybe)
+import           Data.Maybe                         (fromMaybe, mapMaybe)
 import           Data.Monoid                        ((<>))
 import           Data.Proxy
 import qualified Data.Set                           as Set
@@ -60,8 +61,8 @@
         descr <- getTableDescription name
         status <- maybe (throwM (DynamoException "Missing table status")) return (descr ^. D.tdTableStatus)
         let idxstatus = descr ^.. D.tdGlobalSecondaryIndexes . traverse . D.gsidIndexStatus . _Just
-        if | checkindex -> return (status /= D.Active || any (/= D.ISActive) idxstatus)
-           | otherwise -> return (status /= D.Active)
+        if | checkindex -> return (status /= D.TSActive || any (/= D.ISActive) idxstatus)
+           | otherwise -> return (status /= D.TSActive)
 
 -- | Delete specified indices from the database
 deleteIndices :: forall m. MonadAWS m => T.Text -> [T.Text] -> m ()
@@ -96,7 +97,7 @@
     -- Assume the indices were created by this module and we want them exactly the same
     projectionOk newidx oldidx =
        -- Allow the index to have more fields than we know about
-        newprojtype == Just D.KeysOnly || (newprojtype == oldprojtype && newkeys `Set.isSubsetOf` oldkeys)
+        newprojtype == Just D.PTKeysOnly || (newprojtype == oldprojtype && newkeys `Set.isSubsetOf` oldkeys)
       where
           newprojtype = newidx ^? D.gsiProjection . D.pProjectionType . _Just
           oldprojtype = oldidx ^? D.gsidProjection . _Just . D.pProjectionType . _Just
@@ -115,7 +116,7 @@
     keysOk newidx oldidx = Just (newidx ^. D.lsiKeySchema) == oldidx ^. D.lsidKeySchema
     -- Assume the indices were created by this module and we want them exactly the same
     projectionOk newidx oldidx =
-        newprojtype == Just D.KeysOnly || (newprojtype == oldprojtype && newkeys `Set.isSubsetOf` oldkeys)
+        newprojtype == Just D.PTKeysOnly || (newprojtype == oldprojtype && newkeys `Set.isSubsetOf` oldkeys)
       where
           newprojtype = newidx ^? D.lsiProjection . D.pProjectionType . _Just
           oldprojtype = oldidx ^? D.lsidProjection . _Just . D.pProjectionType . _Just
@@ -230,7 +231,7 @@
     tblname = tblinfo ^. D.ctTableName
     tkeys = T.intercalate "," $ tblinfo ^.. (D.ctKeySchema . traverse . D.kseAttributeName)
     idxlist = tblinfo ^. D.ctGlobalSecondaryIndexes
-    indexinfo [] = ""
+    indexinfo []  = ""
     indexinfo lst = " with indexes: " <> T.intercalate ", " (map printidx lst)
     printidx idx = idx ^. D.gsiIndexName <> "(" <> ikeys idx <> ")"
     ikeys idx = T.intercalate "," $ idx ^.. (D.gsiKeySchema . traverse . D.kseAttributeName)
