1002c9448d
This is basically all I need to convert git-annex from hS3 to aws. In particular, both GetObject and PutObject stream content w/o buffering it in memory at all. \o/
24 lines
935 B
Haskell
24 lines
935 B
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
import qualified Aws
|
|
import qualified Aws.S3 as S3
|
|
import Data.Conduit (($$+-))
|
|
import Data.Conduit.Binary (sinkFile)
|
|
import Network.HTTP.Conduit (withManager, responseBody)
|
|
|
|
main :: IO ()
|
|
main = do
|
|
{- Set up AWS credentials and the default configuration. -}
|
|
Just creds <- Aws.loadCredentialsFromEnv
|
|
let cfg = Aws.Configuration Aws.Timestamp creds (Aws.defaultLog Aws.Debug)
|
|
let s3cfg = Aws.defServiceConfig :: S3.S3Configuration Aws.NormalQuery
|
|
|
|
{- Set up a ResourceT region with an available HTTP manager. -}
|
|
withManager $ \mgr -> do
|
|
{- Create a request object with S3.getObject and run the request with pureAws. -}
|
|
S3.GetObjectResponse { S3.gorResponse = rsp } <-
|
|
Aws.pureAws cfg s3cfg mgr $
|
|
S3.getObject "joeyh-test" "cloud-remote.pdf"
|
|
|
|
{- Save the response to a file. -}
|
|
responseBody rsp $$+- sinkFile "cloud-remote2.pdf"
|