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

Safe HaskellNone
LanguageHaskell2010

Aws.Core

Contents

Synopsis

Logging

Response

Metadata in responses

data Response m a Source #

A response with metadata. Can also contain an error response, or an internal error, via Attempt.

Response forms a Writer-like monad.

Instances

Monoid m => Monad (Response m) Source # 

Methods

(>>=) :: Response m a -> (a -> Response m b) -> Response m b #

(>>) :: Response m a -> Response m b -> Response m b #

return :: a -> Response m a #

fail :: String -> Response m a #

Functor (Response m) Source # 

Methods

fmap :: (a -> b) -> Response m a -> Response m b #

(<$) :: a -> Response m b -> Response m a #

Monoid m => Applicative (Response m) Source # 

Methods

pure :: a -> Response m a #

(<*>) :: Response m (a -> b) -> Response m a -> Response m b #

liftA2 :: (a -> b -> c) -> Response m a -> Response m b -> Response m c #

(*>) :: Response m a -> Response m b -> Response m b #

(<*) :: Response m a -> Response m b -> Response m a #

Monoid m => MonadThrow (Response m) Source # 

Methods

throwM :: Exception e => e -> Response m a #

(Show a, Show m) => Show (Response m a) Source # 

Methods

showsPrec :: Int -> Response m a -> ShowS #

show :: Response m a -> String #

showList :: [Response m a] -> ShowS #

readResponse :: MonadThrow n => Response m a -> n a Source #

Read a response result (if it's a success response, fail otherwise).

readResponseIO :: MonadIO io => Response m a -> io a Source #

Read a response result (if it's a success response, fail otherwise). In MonadIO.

tellMetadata :: m -> Response m () Source #

An empty response with some metadata.

tellMetadataRef :: Monoid m => IORef m -> m -> IO () Source #

Add metadata to an IORef (using mappend).

mapMetadata :: (m -> n) -> Response m a -> Response n a Source #

Apply a function to the metadata.

Response data consumers

type HTTPResponseConsumer a = Response (ConduitM () ByteString (ResourceT IO) ()) -> ResourceT IO a Source #

A full HTTP response parser. Takes HTTP status, response headers, and response body.

class Monoid (ResponseMetadata resp) => ResponseConsumer req resp where Source #

Class for types that AWS HTTP responses can be parsed into.

The request is also passed for possibly required additional metadata.

Note that for debugging, there is an instance for ByteString.

Minimal complete definition

responseConsumer

Associated Types

type ResponseMetadata resp Source #

Metadata associated with a response. Typically there is one metadata type for each AWS service.

Methods

responseConsumer :: Request -> req -> IORef (ResponseMetadata resp) -> HTTPResponseConsumer resp Source #

Response parser. Takes the corresponding AWS request, the derived http-client request (for error reporting), an IORef for metadata, and HTTP response data.

Instances

ResponseConsumer r UpdateItemResponse Source # 
ResponseConsumer r ListTablesResult Source # 
ResponseConsumer r DeleteTableResult Source # 
ResponseConsumer r UpdateTableResult Source # 
ResponseConsumer r DescribeTableResult Source # 
ResponseConsumer r CreateTableResult Source # 
ResponseConsumer r ScanResponse Source # 
ResponseConsumer r QueryResponse Source # 
ResponseConsumer r PutItemResponse Source # 
ResponseConsumer r GetItemResponse Source # 
ResponseConsumer r DeleteItemResponse Source # 
ResponseConsumer r BatchWriteItemResponse Source # 
ResponseConsumer r BatchGetItemResponse Source # 
ResponseConsumer r PutBucketResponse Source # 
ResponseConsumer r AbortMultipartUploadResponse Source # 
ResponseConsumer r CompleteMultipartUploadResponse Source # 
ResponseConsumer r InitiateMultipartUploadResponse Source # 
ResponseConsumer r GetServiceResponse Source # 
ResponseConsumer r GetBucketObjectVersionsResponse Source # 
ResponseConsumer r GetBucketLocationResponse Source # 
ResponseConsumer r GetBucketResponse Source # 
ResponseConsumer r SelectResponse Source # 
ResponseConsumer r ListDomainsResponse Source # 
ResponseConsumer r DomainMetadataResponse Source # 
ResponseConsumer r DeleteDomainResponse Source # 
ResponseConsumer r CreateDomainResponse Source # 
ResponseConsumer r BatchDeleteAttributesResponse Source # 
ResponseConsumer r BatchPutAttributesResponse Source # 
ResponseConsumer r DeleteAttributesResponse Source # 
ResponseConsumer r PutAttributesResponse Source # 
ResponseConsumer r GetAttributesResponse Source # 
ResponseConsumer r SetQueueAttributesResponse Source # 
ResponseConsumer r GetQueueAttributesResponse Source # 
ResponseConsumer r ListQueuesResponse Source # 
ResponseConsumer r DeleteQueueResponse Source # 
ResponseConsumer r CreateQueueResponse Source # 
ResponseConsumer r RemovePermissionResponse Source # 
ResponseConsumer r AddPermissionResponse Source # 
ResponseConsumer r ChangeMessageVisibilityResponse Source # 
ResponseConsumer r ReceiveMessageResponse Source # 
ResponseConsumer r DeleteMessageResponse Source # 
ResponseConsumer r SendMessageResponse Source # 
ResponseConsumer UpdateUser UpdateUserResponse Source # 
ResponseConsumer UpdateAccessKey UpdateAccessKeyResponse Source # 
ResponseConsumer PutUserPolicy PutUserPolicyResponse Source # 
ResponseConsumer ListUsers ListUsersResponse Source # 
ResponseConsumer ListUserPolicies ListUserPoliciesResponse Source # 
ResponseConsumer ListMfaDevices ListMfaDevicesResponse Source # 
ResponseConsumer ListAccessKeys ListAccessKeysResponse Source # 
ResponseConsumer GetUserPolicy GetUserPolicyResponse Source # 
ResponseConsumer GetUser GetUserResponse Source # 
ResponseConsumer DeleteUserPolicy DeleteUserPolicyResponse Source # 
ResponseConsumer DeleteUser DeleteUserResponse Source # 
ResponseConsumer DeleteAccessKey DeleteAccessKeyResponse Source # 
ResponseConsumer CreateUser CreateUserResponse Source # 
ResponseConsumer CreateAccessKey CreateAccessKeyResponse Source # 
ResponseConsumer PutObject PutObjectResponse Source # 
ResponseConsumer UploadPart UploadPartResponse Source # 
ResponseConsumer HeadObject HeadObjectResponse Source # 
ResponseConsumer GetObject GetObjectResponse Source # 
ResponseConsumer DeleteObjects DeleteObjectsResponse Source # 
ResponseConsumer DeleteObjectVersion DeleteObjectVersionResponse Source # 
ResponseConsumer DeleteObject DeleteObjectResponse Source # 
ResponseConsumer DeleteBucket DeleteBucketResponse Source # 
ResponseConsumer CopyObject CopyObjectResponse Source # 
ResponseConsumer VerifyEmailIdentity VerifyEmailIdentityResponse Source # 
ResponseConsumer VerifyDomainIdentity VerifyDomainIdentityResponse Source # 
ResponseConsumer VerifyDomainDkim VerifyDomainDkimResponse Source # 
ResponseConsumer SetIdentityNotificationTopic SetIdentityNotificationTopicResponse Source # 
ResponseConsumer SetIdentityFeedbackForwardingEnabled SetIdentityFeedbackForwardingEnabledResponse Source # 
ResponseConsumer SetIdentityDkimEnabled SetIdentityDkimEnabledResponse Source # 
ResponseConsumer SendRawEmail SendRawEmailResponse Source # 
ResponseConsumer ListIdentities ListIdentitiesResponse Source # 
ResponseConsumer GetIdentityVerificationAttributes GetIdentityVerificationAttributesResponse Source # 
ResponseConsumer GetIdentityNotificationAttributes GetIdentityNotificationAttributesResponse Source # 
ResponseConsumer GetIdentityDkimAttributes GetIdentityDkimAttributesResponse Source # 
ResponseConsumer DeleteIdentity DeleteIdentityResponse Source # 
ResponseConsumer r (Response ByteString) Source #

Does not parse response. For debugging.

Memory response

class AsMemoryResponse resp where Source #

Class for responses that are fully loaded into memory

Minimal complete definition

loadToMemory

Associated Types

type MemoryResponse resp :: * Source #

Methods

loadToMemory :: resp -> ResourceT IO (MemoryResponse resp) Source #

Instances

AsMemoryResponse UpdateUserResponse Source # 
AsMemoryResponse UpdateAccessKeyResponse Source # 
AsMemoryResponse PutUserPolicyResponse Source # 
AsMemoryResponse ListUsersResponse Source # 
AsMemoryResponse ListUserPoliciesResponse Source # 
AsMemoryResponse ListMfaDevicesResponse Source # 
AsMemoryResponse ListAccessKeysResponse Source # 
AsMemoryResponse GetUserPolicyResponse Source # 
AsMemoryResponse GetUserResponse Source # 
AsMemoryResponse DeleteUserPolicyResponse Source # 
AsMemoryResponse DeleteUserResponse Source # 
AsMemoryResponse DeleteAccessKeyResponse Source # 
AsMemoryResponse CreateUserResponse Source # 
AsMemoryResponse CreateAccessKeyResponse Source # 
AsMemoryResponse UpdateItemResponse Source # 
AsMemoryResponse ListTablesResult Source # 
AsMemoryResponse DeleteTableResult Source # 
AsMemoryResponse UpdateTableResult Source # 
AsMemoryResponse DescribeTableResult Source # 
AsMemoryResponse CreateTableResult Source # 
AsMemoryResponse ScanResponse Source # 
AsMemoryResponse QueryResponse Source # 
AsMemoryResponse PutItemResponse Source # 
AsMemoryResponse GetItemResponse Source # 
AsMemoryResponse DeleteItemResponse Source # 
AsMemoryResponse BatchWriteItemResponse Source # 
AsMemoryResponse BatchGetItemResponse Source # 
AsMemoryResponse PutObjectResponse Source # 
AsMemoryResponse PutBucketResponse Source # 
AsMemoryResponse AbortMultipartUploadResponse Source # 
AsMemoryResponse CompleteMultipartUploadResponse Source # 
AsMemoryResponse UploadPartResponse Source # 
AsMemoryResponse InitiateMultipartUploadResponse Source # 
AsMemoryResponse HeadObjectResponse Source # 
AsMemoryResponse GetServiceResponse Source # 
AsMemoryResponse GetObjectResponse Source # 
AsMemoryResponse GetBucketObjectVersionsResponse Source # 
AsMemoryResponse GetBucketLocationResponse Source # 
AsMemoryResponse GetBucketResponse Source # 
AsMemoryResponse DeleteObjectsResponse Source # 
AsMemoryResponse DeleteObjectVersionResponse Source # 
AsMemoryResponse DeleteObjectResponse Source # 
AsMemoryResponse DeleteBucketResponse Source # 
AsMemoryResponse CopyObjectResponse Source # 
AsMemoryResponse VerifyEmailIdentityResponse Source # 
AsMemoryResponse VerifyDomainIdentityResponse Source # 
AsMemoryResponse VerifyDomainDkimResponse Source # 
AsMemoryResponse SetIdentityNotificationTopicResponse Source # 
AsMemoryResponse SetIdentityFeedbackForwardingEnabledResponse Source # 
AsMemoryResponse SetIdentityDkimEnabledResponse Source # 
AsMemoryResponse SendRawEmailResponse Source # 
AsMemoryResponse ListIdentitiesResponse Source # 
AsMemoryResponse GetIdentityVerificationAttributesResponse Source # 
AsMemoryResponse GetIdentityNotificationAttributesResponse Source # 
AsMemoryResponse GetIdentityDkimAttributesResponse Source # 
AsMemoryResponse DeleteIdentityResponse Source # 
AsMemoryResponse SelectResponse Source # 
AsMemoryResponse ListDomainsResponse Source # 
AsMemoryResponse DomainMetadataResponse Source # 
AsMemoryResponse DeleteDomainResponse Source # 
AsMemoryResponse CreateDomainResponse Source # 
AsMemoryResponse BatchDeleteAttributesResponse Source # 
AsMemoryResponse BatchPutAttributesResponse Source # 
AsMemoryResponse DeleteAttributesResponse Source # 
AsMemoryResponse PutAttributesResponse Source # 
AsMemoryResponse GetAttributesResponse Source # 
AsMemoryResponse SetQueueAttributesResponse Source # 
AsMemoryResponse GetQueueAttributesResponse Source # 
AsMemoryResponse ListQueuesResponse Source # 
AsMemoryResponse DeleteQueueResponse Source # 
AsMemoryResponse CreateQueueResponse Source # 
AsMemoryResponse RemovePermissionResponse Source # 
AsMemoryResponse AddPermissionResponse Source # 
AsMemoryResponse ChangeMessageVisibilityResponse Source # 
AsMemoryResponse ReceiveMessageResponse Source # 
AsMemoryResponse DeleteMessageResponse Source # 
AsMemoryResponse SendMessageResponse Source # 

List response

Exception types

Response deconstruction helpers

readHex2 :: [Char] -> Maybe Word8 Source #

Parse a two-digit hex number.

XML

elContent :: Text -> Cursor -> [Text] Source #

A specific element (case-insensitive, ignoring namespace - sadly necessary), extracting only the textual contents.

elCont :: Text -> Cursor -> [String] Source #

Like elContent, but extracts Strings instead of Text.

force :: MonadThrow m => String -> [a] -> m a Source #

Extract the first element from a parser result list, and throw an XmlException if the list is empty.

forceM :: MonadThrow m => String -> [m a] -> m a Source #

Extract the first element from a monadic parser result list, and throw an XmlException if the list is empty.

textReadBool :: MonadThrow m => Text -> m Bool Source #

Read a boolean from a Text, throwing an XmlException on failure.

textReadInt :: (MonadThrow m, Num a) => Text -> m a Source #

Read an integer from a Text, throwing an XmlException on failure.

readInt :: (MonadThrow m, Num a) => String -> m a Source #

Read an integer from a String, throwing an XmlException on failure.

xmlCursorConsumer :: Monoid m => (Cursor -> Response m a) -> IORef m -> HTTPResponseConsumer a Source #

Create a complete HTTPResponseConsumer from a simple function that takes a Cursor to XML in the response body.

This function is highly recommended for any services that parse relatively short XML responses. (If status and response headers are required, simply take them as function parameters, and pass them through to this function.)

Query

data SignedQuery Source #

A pre-signed medium-level request object.

Constructors

SignedQuery 

Fields

queryToHttpRequest :: SignedQuery -> IO Request Source #

Create a HTTP request from a SignedQuery object.

queryToUri :: SignedQuery -> ByteString Source #

Create a URI fro a SignedQuery object.

Unused / incompatible fields will be silently ignored.

Expiration

data TimeInfo Source #

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

Constructors

Timestamp

Use a simple timestamp to let AWS check the request validity.

ExpiresAt

Let requests expire at a specific fixed time.

ExpiresIn

Let requests expire a specific number of seconds after they were generated.

data AbsoluteTimeInfo Source #

Like TimeInfo, but with all relative times replaced by absolute UTC.

fromAbsoluteTimeInfo :: AbsoluteTimeInfo -> UTCTime Source #

Just the UTC time value.

Signature

data SignatureData Source #

Data that is always required for signing requests.

Constructors

SignatureData 

Fields

signatureData :: TimeInfo -> Credentials -> IO SignatureData Source #

Create signature data using the current system time.

class SignQuery request where Source #

A "signable" request object. Assembles together the Query, and signs it in one go.

Minimal complete definition

signQuery

Associated Types

type ServiceConfiguration request :: * -> * Source #

Additional information, like API endpoints and service-specific preferences.

Methods

signQuery :: request -> ServiceConfiguration request queryType -> SignatureData -> SignedQuery Source #

Create a SignedQuery from a request, additional Info, and SignatureData.

Instances

SignQuery UpdateUser Source # 
SignQuery UpdateAccessKey Source # 
SignQuery PutUserPolicy Source # 
SignQuery ListUsers Source # 
SignQuery ListUserPolicies Source # 
SignQuery ListMfaDevices Source # 
SignQuery ListAccessKeys Source # 
SignQuery GetUserPolicy Source # 
SignQuery GetUser Source # 
SignQuery DeleteUserPolicy Source # 
SignQuery DeleteUser Source # 
SignQuery DeleteAccessKey Source # 
SignQuery CreateUser Source # 
SignQuery CreateAccessKey Source # 
SignQuery UpdateItem Source # 
SignQuery ListTables Source #

ServiceConfiguration: DdbConfiguration

SignQuery DeleteTable Source #

ServiceConfiguration: DdbConfiguration

SignQuery UpdateTable Source #

ServiceConfiguration: DdbConfiguration

SignQuery DescribeTable Source #

ServiceConfiguration: DdbConfiguration

SignQuery CreateTable Source #

ServiceConfiguration: DdbConfiguration

SignQuery Scan Source # 

Associated Types

type ServiceConfiguration Scan :: * -> * Source #

SignQuery Query Source # 
SignQuery PutItem Source # 
SignQuery GetItem Source # 
SignQuery DeleteItem Source # 
SignQuery BatchWriteItem Source # 
SignQuery BatchGetItem Source # 
SignQuery PutObject Source #

ServiceConfiguration: S3Configuration

SignQuery PutBucket Source #

ServiceConfiguration: S3Configuration

SignQuery AbortMultipartUpload Source #

ServiceConfiguration: S3Configuration

SignQuery CompleteMultipartUpload Source #

ServiceConfiguration: S3Configuration

SignQuery UploadPart Source #

ServiceConfiguration: S3Configuration

SignQuery InitiateMultipartUpload Source #

ServiceConfiguration: S3Configuration

SignQuery HeadObject Source #

ServiceConfiguration: S3Configuration

SignQuery GetService Source #

ServiceConfiguration: S3Configuration

SignQuery GetObject Source #

ServiceConfiguration: S3Configuration

SignQuery GetBucketObjectVersions Source #

ServiceConfiguration: S3Configuration

SignQuery GetBucketLocation Source # 
SignQuery GetBucket Source #

ServiceConfiguration: S3Configuration

SignQuery DeleteObjects Source #

ServiceConfiguration: S3Configuration

SignQuery DeleteObjectVersion Source #

ServiceConfiguration: S3Configuration

SignQuery DeleteObject Source #

ServiceConfiguration: S3Configuration

SignQuery DeleteBucket Source #

ServiceConfiguration: S3Configuration

SignQuery CopyObject Source #

ServiceConfiguration: S3Configuration

SignQuery VerifyEmailIdentity Source #

ServiceConfiguration: SesConfiguration

SignQuery VerifyDomainIdentity Source #

ServiceConfiguration: SesConfiguration

SignQuery VerifyDomainDkim Source #

ServiceConfiguration: SesConfiguration

SignQuery SetIdentityNotificationTopic Source #

ServiceConfiguration: SesConfiguration

SignQuery SetIdentityFeedbackForwardingEnabled Source #

ServiceConfiguration: SesConfiguration

SignQuery SetIdentityDkimEnabled Source #

ServiceConfiguration: SesConfiguration

SignQuery SendRawEmail Source #

ServiceConfiguration: SesConfiguration

SignQuery ListIdentities Source #

ServiceConfiguration: SesConfiguration

SignQuery GetIdentityVerificationAttributes Source #

ServiceConfiguration: SesConfiguration

SignQuery GetIdentityNotificationAttributes Source #

ServiceConfiguration: SesConfiguration

SignQuery GetIdentityDkimAttributes Source #

ServiceConfiguration: SesConfiguration

SignQuery DeleteIdentity Source #

ServiceConfiguration: SesConfiguration

SignQuery Select Source #

ServiceConfiguration: SdbConfiguration

SignQuery ListDomains Source #

ServiceConfiguration: SdbConfiguration

SignQuery DomainMetadata Source #

ServiceConfiguration: SdbConfiguration

SignQuery DeleteDomain Source #

ServiceConfiguration: SdbConfiguration

SignQuery CreateDomain Source #

ServiceConfiguration: SdbConfiguration

SignQuery BatchDeleteAttributes Source #

ServiceConfiguration: SdbConfiguration

SignQuery BatchPutAttributes Source #

ServiceConfiguration: SdbConfiguration

SignQuery DeleteAttributes Source #

ServiceConfiguration: SdbConfiguration

SignQuery PutAttributes Source #

ServiceConfiguration: SdbConfiguration

SignQuery GetAttributes Source #

ServiceConfiguration: SdbConfiguration

SignQuery SetQueueAttributes Source #

ServiceConfiguration: SqsConfiguration

SignQuery GetQueueAttributes Source #

ServiceConfiguration: SqsConfiguration

SignQuery ListQueues Source #

ServiceConfiguration: SqsConfiguration

SignQuery DeleteQueue Source #

ServiceConfiguration: SqsConfiguration

SignQuery CreateQueue Source #

ServiceConfiguration: SqsConfiguration

SignQuery RemovePermission Source #

ServiceConfiguration: SqsConfiguration

SignQuery AddPermission Source #

ServiceConfiguration: SqsConfiguration

SignQuery ChangeMessageVisibility Source #

ServiceConfiguration: SqsConfiguration

SignQuery ReceiveMessage Source # 
SignQuery DeleteMessage Source # 
SignQuery SendMessage Source # 

data AuthorizationHash Source #

Supported crypto hashes for the signature.

Constructors

HmacSHA1 
HmacSHA256 

amzHash :: AuthorizationHash -> ByteString Source #

Authorization hash identifier as expected by Amazon.

signature :: Credentials -> AuthorizationHash -> ByteString -> ByteString Source #

Create a signature. Usually, AWS wants a specifically constructed string to be signed.

The signature is a HMAC-based hash of the string and the secret access key.

credentialV4 Source #

Arguments

:: SignatureData 
-> ByteString

region, e.g. us-east-1

-> ByteString

service, e.g. dynamodb

-> ByteString 

Generates the Credential string, required for V4 signatures.

authorizationV4 Source #

Arguments

:: SignatureData 
-> AuthorizationHash 
-> ByteString

region, e.g. us-east-1

-> ByteString

service, e.g. dynamodb

-> ByteString

SignedHeaders, e.g. content-type;host;x-amz-date;x-amz-target

-> ByteString

canonicalRequest (before hashing)

-> IO ByteString 

Use this to create the Authorization header to set into sqAuthorization. See http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html: you must create the canonical request as explained by Step 1 and this function takes care of Steps 2 and 3.

authorizationV4' Source #

Arguments

:: SignatureData 
-> AuthorizationHash 
-> ByteString

region, e.g. us-east-1

-> ByteString

service, e.g. dynamodb

-> ByteString

SignedHeaders, e.g. content-type;host;x-amz-date;x-amz-target

-> ByteString

canonicalRequest (before hashing)

-> ByteString 

IO free version of authorizationV4, use this if you need to compute the signature outside of IO.

signatureV4 Source #

Arguments

:: SignatureData 
-> AuthorizationHash 
-> ByteString

region, e.g. us-east-1

-> ByteString

service, e.g. dynamodb

-> ByteString

canonicalRequest (before hashing)

-> ByteString 

Query construction helpers

queryList :: (a -> [(ByteString, ByteString)]) -> ByteString -> [a] -> [(ByteString, ByteString)] Source #

queryList f prefix xs constructs a query list from a list of elements xs, using a common prefix prefix, and a transformer function f.

A dot (.) is interspersed between prefix and generated key.

Example:

queryList swap "pfx" [("a", "b"), ("c", "d")] evaluates to [("pfx.b", "a"), ("pfx.d", "c")] (except with ByteString instead of String, of course).

awsBool :: Bool -> ByteString Source #

A "true"/"false" boolean as requested by some services.

fmtTime :: String -> UTCTime -> ByteString Source #

Format time according to a format string, as a ByteString.

fmtRfc822Time :: UTCTime -> ByteString Source #

Format time in RFC 822 format.

fmtAmzTime :: UTCTime -> ByteString Source #

Format time in yyyy-mm-ddThh-mm-ss format.

fmtTimeEpochSeconds :: UTCTime -> ByteString Source #

Format time as seconds since the Unix epoch.

parseHttpDate :: String -> Maybe UTCTime Source #

Parse HTTP-date (section 3.3.1 of RFC 2616)

httpDate1 :: String Source #

HTTP-date (section 3.3.1 of RFC 2616, first type - RFC1123-style)

textHttpDate :: UTCTime -> Text Source #

Format (as Text) HTTP-date (section 3.3.1 of RFC 2616, first type - RFC1123-style)

Transactions

class (SignQuery r, ResponseConsumer r a, Loggable (ResponseMetadata a)) => Transaction r a | r -> a Source #

Associates a request type and a response type in a bi-directional way.

This allows the type-checker to infer the response type when given the request type and vice versa.

Note that the actual request generation and response parsing resides in SignQuery and ResponseConsumer respectively.

Instances

Transaction UpdateUser UpdateUserResponse Source # 
Transaction UpdateAccessKey UpdateAccessKeyResponse Source # 
Transaction PutUserPolicy PutUserPolicyResponse Source # 
Transaction ListUsers ListUsersResponse Source # 
Transaction ListUserPolicies ListUserPoliciesResponse Source # 
Transaction ListMfaDevices ListMfaDevicesResponse Source # 
Transaction ListAccessKeys ListAccessKeysResponse Source # 
Transaction GetUserPolicy GetUserPolicyResponse Source # 
Transaction GetUser GetUserResponse Source # 
Transaction DeleteUserPolicy DeleteUserPolicyResponse Source # 
Transaction DeleteUser DeleteUserResponse Source # 
Transaction DeleteAccessKey DeleteAccessKeyResponse Source # 
Transaction CreateUser CreateUserResponse Source # 
Transaction CreateAccessKey CreateAccessKeyResponse Source # 
Transaction UpdateItem UpdateItemResponse Source # 
Transaction ListTables ListTablesResult Source # 
Transaction DeleteTable DeleteTableResult Source # 
Transaction UpdateTable UpdateTableResult Source # 
Transaction DescribeTable DescribeTableResult Source # 
Transaction CreateTable CreateTableResult Source # 
Transaction Scan ScanResponse Source # 
Transaction Query QueryResponse Source # 
Transaction PutItem PutItemResponse Source # 
Transaction GetItem GetItemResponse Source # 
Transaction DeleteItem DeleteItemResponse Source # 
Transaction BatchWriteItem BatchWriteItemResponse Source # 
Transaction BatchGetItem BatchGetItemResponse Source # 
Transaction PutObject PutObjectResponse Source # 
Transaction PutBucket PutBucketResponse Source # 
Transaction AbortMultipartUpload AbortMultipartUploadResponse Source # 
Transaction CompleteMultipartUpload CompleteMultipartUploadResponse Source # 
Transaction UploadPart UploadPartResponse Source # 
Transaction InitiateMultipartUpload InitiateMultipartUploadResponse Source # 
Transaction HeadObject HeadObjectResponse Source # 
Transaction GetService GetServiceResponse Source # 
Transaction GetObject GetObjectResponse Source # 
Transaction GetBucketObjectVersions GetBucketObjectVersionsResponse Source # 
Transaction GetBucketLocation GetBucketLocationResponse Source # 
Transaction GetBucket GetBucketResponse Source # 
Transaction DeleteObjects DeleteObjectsResponse Source # 
Transaction DeleteObjectVersion DeleteObjectVersionResponse Source # 
Transaction DeleteObject DeleteObjectResponse Source # 
Transaction DeleteBucket DeleteBucketResponse Source # 
Transaction CopyObject CopyObjectResponse Source # 
Transaction VerifyEmailIdentity VerifyEmailIdentityResponse Source # 
Transaction VerifyDomainIdentity VerifyDomainIdentityResponse Source # 
Transaction VerifyDomainDkim VerifyDomainDkimResponse Source # 
Transaction SetIdentityNotificationTopic SetIdentityNotificationTopicResponse Source # 
Transaction SetIdentityFeedbackForwardingEnabled SetIdentityFeedbackForwardingEnabledResponse Source # 
Transaction SetIdentityDkimEnabled SetIdentityDkimEnabledResponse Source # 
Transaction SendRawEmail SendRawEmailResponse Source # 
Transaction ListIdentities ListIdentitiesResponse Source # 
Transaction GetIdentityVerificationAttributes GetIdentityVerificationAttributesResponse Source # 
Transaction GetIdentityNotificationAttributes GetIdentityNotificationAttributesResponse Source # 
Transaction GetIdentityDkimAttributes GetIdentityDkimAttributesResponse Source # 
Transaction DeleteIdentity DeleteIdentityResponse Source # 
Transaction Select SelectResponse Source # 
Transaction ListDomains ListDomainsResponse Source # 
Transaction DomainMetadata DomainMetadataResponse Source # 
Transaction DeleteDomain DeleteDomainResponse Source # 
Transaction CreateDomain CreateDomainResponse Source # 
Transaction BatchDeleteAttributes BatchDeleteAttributesResponse Source # 
Transaction BatchPutAttributes BatchPutAttributesResponse Source # 
Transaction DeleteAttributes DeleteAttributesResponse Source # 
Transaction PutAttributes PutAttributesResponse Source # 
Transaction GetAttributes GetAttributesResponse Source # 
Transaction SetQueueAttributes SetQueueAttributesResponse Source # 
Transaction GetQueueAttributes GetQueueAttributesResponse Source # 
Transaction ListQueues ListQueuesResponse Source # 
Transaction DeleteQueue DeleteQueueResponse Source # 
Transaction CreateQueue CreateQueueResponse Source # 
Transaction RemovePermission RemovePermissionResponse Source # 
Transaction AddPermission AddPermissionResponse Source # 
Transaction ChangeMessageVisibility ChangeMessageVisibilityResponse Source # 
Transaction ReceiveMessage ReceiveMessageResponse Source # 
Transaction DeleteMessage DeleteMessageResponse Source # 
Transaction SendMessage SendMessageResponse Source # 

class Transaction r a => IteratedTransaction r a | r -> a where Source #

A transaction that may need to be split over multiple requests, for example because of upstream response size limits.

Minimal complete definition

nextIteratedRequest

Methods

nextIteratedRequest :: r -> a -> Maybe r Source #

Instances

IteratedTransaction ListUsers ListUsersResponse Source # 
IteratedTransaction ListUserPolicies ListUserPoliciesResponse Source # 
IteratedTransaction ListMfaDevices ListMfaDevicesResponse Source # 
IteratedTransaction ListAccessKeys ListAccessKeysResponse Source # 
IteratedTransaction Scan ScanResponse Source # 
IteratedTransaction Query QueryResponse Source # 
IteratedTransaction GetBucketObjectVersions GetBucketObjectVersionsResponse Source # 
IteratedTransaction GetBucket GetBucketResponse Source # 
IteratedTransaction Select SelectResponse Source # 
IteratedTransaction ListDomains ListDomainsResponse Source # 

Credentials

data Credentials Source #

AWS access credentials.

Constructors

Credentials 

Fields

makeCredentials Source #

Arguments

:: MonadIO io 
=> ByteString

AWS Access Key ID

-> ByteString

AWS Secret Access Key

-> io Credentials 

credentialsDefaultFile :: MonadIO io => io (Maybe FilePath) Source #

The file where access credentials are loaded, when using loadCredentialsDefault. May return Nothing if HOME is unset.

Value: directory/.aws-keys

credentialsDefaultKey :: Text Source #

The key to be used in the access credential file that is loaded, when using loadCredentialsDefault.

Value: default

loadCredentialsFromFile :: MonadIO io => FilePath -> Text -> io (Maybe Credentials) Source #

Load credentials from a (text) file given a key name.

The file consists of a sequence of lines, each in the following format:

keyName awsKeyID awsKeySecret

loadCredentialsFromEnv :: MonadIO io => io (Maybe Credentials) Source #

Load credentials from the environment variables AWS_ACCESS_KEY_ID and AWS_ACCESS_KEY_SECRET (or AWS_SECRET_ACCESS_KEY), if possible.

loadCredentialsFromEnvOrFile :: MonadIO io => FilePath -> Text -> io (Maybe Credentials) Source #

Load credentials from environment variables if possible, or alternatively from a file with a given key name.

See loadCredentialsFromEnv and loadCredentialsFromFile for details.

loadCredentialsFromEnvOrFileOrInstanceMetadata :: MonadIO io => FilePath -> Text -> io (Maybe Credentials) Source #

Load credentials from environment variables if possible, or alternatively from the instance metadata store, or alternatively from a file with a given key name.

See loadCredentialsFromEnv, loadCredentialsFromFile and loadCredentialsFromInstanceMetadata for details.

loadCredentialsDefault :: MonadIO io => io (Maybe Credentials) Source #

Load credentials from environment variables if possible, or alternative from the default file with the default key name.

Default file: directory/.aws-keys Default key name: default

See loadCredentialsFromEnv and loadCredentialsFromFile for details.

Service configuration

class DefaultServiceConfiguration config where Source #

Default configuration for a specific service.

Minimal complete definition

defServiceConfig

Methods

defServiceConfig :: config Source #

Default service configuration.

debugServiceConfig :: config Source #

Default debugging-only configuration. (Normally using HTTP instead of HTTPS for easier debugging.)

Instances

DefaultServiceConfiguration (IamConfiguration UriOnlyQuery) Source # 
DefaultServiceConfiguration (IamConfiguration NormalQuery) Source # 
DefaultServiceConfiguration (DdbConfiguration NormalQuery) Source # 
DefaultServiceConfiguration (S3Configuration UriOnlyQuery) Source # 
DefaultServiceConfiguration (S3Configuration NormalQuery) Source # 
DefaultServiceConfiguration (SesConfiguration UriOnlyQuery) Source # 
DefaultServiceConfiguration (SesConfiguration NormalQuery) Source # 
DefaultServiceConfiguration (SdbConfiguration UriOnlyQuery) Source # 
DefaultServiceConfiguration (SdbConfiguration NormalQuery) Source # 
DefaultServiceConfiguration (SqsConfiguration UriOnlyQuery) Source # 
DefaultServiceConfiguration (SqsConfiguration NormalQuery) Source # 

HTTP types

data Protocol Source #

Protocols supported by AWS. Currently, all AWS services use the HTTP or HTTPS protocols.

Constructors

HTTP 
HTTPS 

defaultPort :: Protocol -> Int Source #

The default port to be used for a protocol if no specific port is specified.

data Method Source #

Request method. Not all request methods are supported by all services.

Constructors

Head

HEAD method. Put all request parameters in a query string and HTTP headers.

Get

GET method. Put all request parameters in a query string and HTTP headers.

PostQuery

POST method. Put all request parameters in a query string and HTTP headers, but send the query string as a POST payload

Post

POST method. Sends a service- and request-specific request body.

Put

PUT method.

Delete

DELETE method.

httpMethod :: Method -> Method Source #

HTTP method associated with a request method.