diff --git a/amazonka/HaskellWorks/Polysemy/Amazonka.hs b/amazonka/HaskellWorks/Polysemy/Amazonka.hs
--- a/amazonka/HaskellWorks/Polysemy/Amazonka.hs
+++ b/amazonka/HaskellWorks/Polysemy/Amazonka.hs
@@ -2,6 +2,8 @@
 {-# LANGUAGE GADTs            #-}
 {-# LANGUAGE TypeApplications #-}
 
+{- HLINT ignore "Use let" -}
+
 module HaskellWorks.Polysemy.Amazonka
   ( AwsLogEntry(..),
     runReaderAwsEnvDiscover,
@@ -26,6 +28,7 @@
 import qualified Data.Text.Lazy                                    as LT
 import qualified Data.Text.Lazy.Encoding                           as LT
 import           HaskellWorks.Polysemy.Control.Concurrent.STM.TVar
+import           HaskellWorks.Polysemy.System.Environment
 import           HaskellWorks.Prelude
 import           Polysemy
 import           Polysemy.Error
@@ -35,6 +38,9 @@
 import           Polysemy.Reader
 import           Polysemy.Resource
 import qualified System.IO                                         as IO
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import Text.Read
 
 data AwsLogEntry = AwsLogEntry
   { logLevel :: AWS.LogLevel
@@ -42,14 +48,37 @@
   }
   deriving (Generic, Show, Typeable)
 
+maybeSetEndpoint :: ()
+  => Maybe (String, String)
+  -> (AWS.Service -> AWS.Service)
+  -> AWS.Service
+  -> AWS.Service
+maybeSetEndpoint = \case
+  Just (host, portString) ->
+    case readMaybe portString of
+      Just port -> (. AWS.setEndpoint False (T.encodeUtf8 (T.pack host)) port)
+      Nothing -> id
+  Nothing           -> id
+
 runReaderAwsEnvDiscover :: ()
   => Member (Embed IO) r
   => Sem (Reader AWS.Env : r) a
   -> Sem r a
 runReaderAwsEnvDiscover f = do
   logger' <- embed $ AWS.newLogger AWS.Debug IO.stdout
+
+  mLocalStackHost <- lookupEnv "AWS_LOCALSTACK_HOST"
+  mLocalStackPort <- lookupEnv "AWS_LOCALSTACK_PORT"
+  mLocalStackEndpoint <- pure $ (,)
+    <$> mLocalStackHost
+    <*> mLocalStackPort
+
   discoveredAwsEnv <- embed $ AWS.newEnv AWS.discover
-  let awsEnv = discoveredAwsEnv { AWS.logger = logger' }
+
+  awsEnv <- pure $ discoveredAwsEnv
+    & the @"logger" .~ logger'
+    & the @"overrides" %~ maybeSetEndpoint mLocalStackEndpoint
+
   runReader awsEnv f
 
 sendAws :: ()
diff --git a/hw-polysemy.cabal b/hw-polysemy.cabal
--- a/hw-polysemy.cabal
+++ b/hw-polysemy.cabal
@@ -1,6 +1,6 @@
 cabal-version:          3.4
 name:                   hw-polysemy
-version:                0.2.14.0
+version:                0.2.14.1
 synopsis:               Opinionated polysemy library
 description:            Opinionated polysemy library.
 license:                Apache-2.0
@@ -39,9 +39,9 @@
 common lens                       { build-depends: lens                                        < 5.4    }
 common mtl                        { build-depends: mtl                                         < 5.4    }
 common polysemy                   { build-depends: polysemy                                    < 2      }
-common polysemy-log               { build-depends: polysemy-log                                < 0.11   }
+common polysemy-log               { build-depends: polysemy-log               >= 0.11       && < 1      }
 common polysemy-plugin            { build-depends: polysemy-plugin                             < 0.5    }
-common polysemy-time              { build-depends: polysemy-time                               < 0.7    }
+common polysemy-time              { build-depends: polysemy-time                               < 1      }
 common prettyprinter              { build-depends: prettyprinter                               < 1.8    }
 common process                    { build-depends: process                                     < 1.7    }
 common resourcet                  { build-depends: resourcet                                   < 1.4    }
