-- | Example of creating a Nearline bucket on Google Cloud Storage. {-# LANGUAGE OverloadedStrings #-} import qualified Aws import qualified Aws.Core as Aws import qualified Aws.S3 as S3 import Data.Conduit.Binary (sinkFile) import Control.Monad.Trans.Resource import Network.HTTP.Conduit (newManager, tlsManagerSettings, RequestBody(..)) import Control.Monad.IO.Class import Control.Concurrent import System.IO import Control.Applicative import qualified Data.Text as T import System.Environment sc :: S3.StorageClass sc = S3.OtherStorageClass (T.pack "NEARLINE") main :: IO () main = do [bucket] <- fmap (map T.pack) getArgs {- Set up AWS credentials and S3 configuration using the Google Cloud - Storage endpoint. -} Just creds <- Aws.loadCredentialsFromEnv let cfg = Aws.Configuration Aws.Timestamp creds (Aws.defaultLog Aws.Debug) Nothing let s3cfg = S3.s3 Aws.HTTP "storage.googleapis.com" False {- Set up a ResourceT region with an available HTTP manager. -} mgr <- newManager tlsManagerSettings runResourceT $ do {- Create a request object with S3.PutBucket and run the request with pureAws. -} rsp <- Aws.pureAws cfg s3cfg mgr $ S3.PutBucket bucket Nothing "US" (Just sc) liftIO $ print rsp