aws-0.6.2: Amazon Web Services (AWS) for Haskell

Safe HaskellSafe-Infered

Aws.Aws

Contents

Synopsis

Logging

data LogLevel Source

The severity of a log message, in rising order.

Constructors

Debug 
Info 
Warning 
Error 

type Logger = LogLevel -> Text -> IO ()Source

The interface for any logging function. Takes log level and a log message, and can perform an arbitrary IO action.

defaultLog :: LogLevel -> LoggerSource

The default logger defaultLog minLevel, which prints log messages above level minLevel to stderr.

Configuration

data Configuration Source

The configuration for an AWS request. You can use multiple configurations in parallel, even over the same HTTP connection manager.

Constructors

Configuration 

Fields

timeInfo :: TimeInfo

Whether to restrict the signature validity with a plain timestamp, or with explicit expiration (absolute or relative).

credentials :: Credentials

AWS access credentials.

logger :: Logger

The error / message logger.

baseConfiguration :: MonadIO io => io ConfigurationSource

The default configuration, with credentials loaded from environment variable or configuration file (see loadCredentialsDefault).

dbgConfiguration :: MonadIO io => io ConfigurationSource

Debug configuration, which avoids using HTTPS for some queries. DO NOT USE THIS IN PRODUCTION!

Transaction runners

Safe runners

aws :: (Transaction r a, MonadIO io) => Configuration -> ServiceConfiguration r -> Manager -> r -> io (Response (ResponseMetadata a) a)Source

Run an AWS transaction, with HTTP manager and metadata wrapped in a Response.

All errors are caught and wrapped in the Response value.

Usage (with existing Manager): resp <- aws cfg serviceCfg manager request

awsRef :: (Transaction r a, MonadIO io) => Configuration -> ServiceConfiguration r -> Manager -> IORef (ResponseMetadata a) -> r -> io aSource

Run an AWS transaction, with HTTP manager and metadata returned in an IORef.

Errors are not caught, and need to be handled with exception handlers.

Usage (with existing Manager): ref <- newIORef mempty; resp <- awsRef cfg serviceCfg manager request

simpleAws :: (Transaction r a, MonadIO io) => Configuration -> ServiceConfiguration r -> r -> io (Response (ResponseMetadata a) a)Source

Run an AWS transaction, without HTTP manager and with metadata wrapped in a Response.

Note that this is potentially less efficient than using aws, because HTTP connections cannot be re-used.

All errors are caught and wrapped in the Response value.

Usage: resp <- simpleAws cfg serviceCfg request

simpleAwsRef :: (Transaction r a, MonadIO io) => Configuration -> ServiceConfiguration r -> IORef (ResponseMetadata a) -> r -> io aSource

Run an AWS transaction, without HTTP manager and with metadata returned in an IORef.

Errors are not caught, and need to be handled with exception handlers.

Usage: ref <- newIORef mempty; resp <- simpleAwsRef cfg serviceCfg request

Unsafe runners

unsafeAws :: (ResponseConsumer r a, Monoid (ResponseMetadata a), SignQuery r, MonadIO io) => Configuration -> ServiceConfiguration r -> Manager -> r -> io (Response (ResponseMetadata a) a)Source

Run an AWS transaction, without enforcing that response and request type form a valid transaction pair.

This is especially useful for debugging and development, you should not have to use it in production.

All errors are caught and wrapped in the Response value.

unsafeAwsRef :: (ResponseConsumer r a, Monoid (ResponseMetadata a), SignQuery r, MonadIO io) => Configuration -> ServiceConfiguration r -> Manager -> IORef (ResponseMetadata a) -> r -> io aSource

Run an AWS transaction, without enforcing that response and request type form a valid transaction pair.

This is especially useful for debugging and development, you should not have to use it in production.

Errors are not caught, and need to be handled with exception handlers.

URI runners

awsUri :: (SignQuery request, MonadIO io) => Configuration -> ServiceConfiguration request -> request -> io ByteStringSource

Run a URI-only AWS transaction. Returns a URI that can be sent anywhere. Does not work with all requests.

Usage: uri <- awsUri cfg request