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

Safe HaskellNone
LanguageHaskell2010

Aws.Core

Contents

Synopsis

Logging

class Loggable a where #

Types that can be logged (textually).

Minimal complete definition

toLogText

Methods

toLogText :: a -> Text #

Response

Metadata in responses

data Response m a #

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) # 

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) # 

Methods

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

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

Monoid m => Applicative (Response m) # 

Methods

pure :: a -> Response m a #

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

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

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

Monoid m => MonadThrow (Response m) # 

Methods

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

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

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 #

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

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

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

tellMetadata :: m -> Response m () #

An empty response with some metadata.

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

Add metadata to an IORef (using mappend).

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

Apply a function to the metadata.

Response data consumers

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

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

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

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 #

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

Methods

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

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

Does not parse response. For debugging.

Memory response

class AsMemoryResponse resp where #

Class for responses that are fully loaded into memory

Minimal complete definition

loadToMemory

Associated Types

type MemoryResponse resp :: * #

Methods

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

Instances

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

List response

Exception types

Response deconstruction helpers

readHex2 :: [Char] -> Maybe Word8 #

Parse a two-digit hex number.

XML

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

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

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

Like elContent, but extracts Strings instead of Text.

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

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 #

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 #

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

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

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

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

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

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

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 #

A pre-signed medium-level request object.

Constructors

SignedQuery 

Fields

queryToHttpRequest :: SignedQuery -> IO Request #

Create a HTTP request from a SignedQuery object.

queryToUri :: SignedQuery -> ByteString #

Create a URI fro a SignedQuery object.

Unused / incompatible fields will be silently ignored.

Expiration

data TimeInfo #

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.

Instances

data AbsoluteTimeInfo #

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

fromAbsoluteTimeInfo :: AbsoluteTimeInfo -> UTCTime #

Just the UTC time value.

makeAbsoluteTimeInfo :: TimeInfo -> UTCTime -> AbsoluteTimeInfo #

Convert TimeInfo to AbsoluteTimeInfo given the current UTC time.

Signature

data SignatureData #

Data that is always required for signing requests.

Constructors

SignatureData 

Fields

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

Create signature data using the current system time.

class SignQuery request where #

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

Minimal complete definition

signQuery

Associated Types

type ServiceConfiguration request :: * -> * #

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

Methods

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

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

Instances

SignQuery DeleteItem # 
SignQuery GetItem # 

Associated Types

type ServiceConfiguration GetItem :: * -> * #

SignQuery PutItem # 

Associated Types

type ServiceConfiguration PutItem :: * -> * #

SignQuery Query # 

Associated Types

type ServiceConfiguration Query :: * -> * #

SignQuery Scan # 

Associated Types

type ServiceConfiguration Scan :: * -> * #

SignQuery ListTables #

ServiceConfiguration: DdbConfiguration

SignQuery DeleteTable #

ServiceConfiguration: DdbConfiguration

SignQuery UpdateTable #

ServiceConfiguration: DdbConfiguration

SignQuery DescribeTable #

ServiceConfiguration: DdbConfiguration

SignQuery CreateTable #

ServiceConfiguration: DdbConfiguration

SignQuery UpdateItem # 
SignQuery CreateAccessKey # 
SignQuery CreateUser # 
SignQuery DeleteAccessKey # 
SignQuery DeleteUser # 
SignQuery DeleteUserPolicy # 
SignQuery GetUser # 

Associated Types

type ServiceConfiguration GetUser :: * -> * #

SignQuery GetUserPolicy # 
SignQuery ListAccessKeys # 
SignQuery ListMfaDevices # 
SignQuery ListUserPolicies # 
SignQuery ListUsers # 
SignQuery PutUserPolicy # 
SignQuery UpdateAccessKey # 
SignQuery UpdateUser # 
SignQuery CopyObject #

ServiceConfiguration: S3Configuration

SignQuery DeleteBucket #

ServiceConfiguration: S3Configuration

SignQuery DeleteObject #

ServiceConfiguration: S3Configuration

SignQuery DeleteObjectVersion #

ServiceConfiguration: S3Configuration

SignQuery DeleteObjects #

ServiceConfiguration: S3Configuration

SignQuery GetBucket #

ServiceConfiguration: S3Configuration

SignQuery GetBucketLocation # 
SignQuery GetBucketObjectVersions #

ServiceConfiguration: S3Configuration

SignQuery GetObject #

ServiceConfiguration: S3Configuration

SignQuery GetService #

ServiceConfiguration: S3Configuration

SignQuery HeadObject #

ServiceConfiguration: S3Configuration

SignQuery PutBucket #

ServiceConfiguration: S3Configuration

SignQuery PutObject #

ServiceConfiguration: S3Configuration

SignQuery SendRawEmail #

ServiceConfiguration: SesConfiguration

SignQuery ListIdentities #

ServiceConfiguration: SesConfiguration

SignQuery VerifyEmailIdentity #

ServiceConfiguration: SesConfiguration

SignQuery VerifyDomainIdentity #

ServiceConfiguration: SesConfiguration

SignQuery VerifyDomainDkim #

ServiceConfiguration: SesConfiguration

SignQuery DeleteIdentity #

ServiceConfiguration: SesConfiguration

SignQuery GetIdentityDkimAttributes #

ServiceConfiguration: SesConfiguration

SignQuery GetIdentityNotificationAttributes #

ServiceConfiguration: SesConfiguration

SignQuery GetIdentityVerificationAttributes #

ServiceConfiguration: SesConfiguration

SignQuery SetIdentityNotificationTopic #

ServiceConfiguration: SesConfiguration

SignQuery SetIdentityDkimEnabled #

ServiceConfiguration: SesConfiguration

SignQuery SetIdentityFeedbackForwardingEnabled #

ServiceConfiguration: SesConfiguration

SignQuery BatchDeleteAttributes #

ServiceConfiguration: SdbConfiguration

SignQuery BatchPutAttributes #

ServiceConfiguration: SdbConfiguration

SignQuery DeleteAttributes #

ServiceConfiguration: SdbConfiguration

SignQuery PutAttributes #

ServiceConfiguration: SdbConfiguration

SignQuery GetAttributes #

ServiceConfiguration: SdbConfiguration

SignQuery ListDomains #

ServiceConfiguration: SdbConfiguration

SignQuery DomainMetadata #

ServiceConfiguration: SdbConfiguration

SignQuery DeleteDomain #

ServiceConfiguration: SdbConfiguration

SignQuery CreateDomain #

ServiceConfiguration: SdbConfiguration

SignQuery Select #

ServiceConfiguration: SdbConfiguration

Associated Types

type ServiceConfiguration Select :: * -> * #

SignQuery ChangeMessageVisibility #

ServiceConfiguration: SqsConfiguration

SignQuery ReceiveMessage # 
SignQuery DeleteMessage # 
SignQuery SendMessage # 
SignQuery RemovePermission #

ServiceConfiguration: SqsConfiguration

SignQuery AddPermission #

ServiceConfiguration: SqsConfiguration

SignQuery ListQueues #

ServiceConfiguration: SqsConfiguration

SignQuery DeleteQueue #

ServiceConfiguration: SqsConfiguration

SignQuery CreateQueue #

ServiceConfiguration: SqsConfiguration

SignQuery SetQueueAttributes #

ServiceConfiguration: SqsConfiguration

SignQuery GetQueueAttributes #

ServiceConfiguration: SqsConfiguration

SignQuery AbortMultipartUpload #

ServiceConfiguration: S3Configuration

SignQuery CompleteMultipartUpload #

ServiceConfiguration: S3Configuration

SignQuery UploadPart #

ServiceConfiguration: S3Configuration

SignQuery InitiateMultipartUpload #

ServiceConfiguration: S3Configuration

data AuthorizationHash #

Supported crypto hashes for the signature.

Constructors

HmacSHA1 
HmacSHA256 

amzHash :: AuthorizationHash -> ByteString #

Authorization hash identifier as expected by Amazon.

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

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.

authorizationV4 #

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.

Query construction helpers

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

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 #

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

fmtTime :: String -> UTCTime -> ByteString #

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

fmtRfc822Time :: UTCTime -> ByteString #

Format time in RFC 822 format.

fmtAmzTime :: UTCTime -> ByteString #

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

fmtTimeEpochSeconds :: UTCTime -> ByteString #

Format time as seconds since the Unix epoch.

parseHttpDate :: String -> Maybe UTCTime #

Parse HTTP-date (section 3.3.1 of RFC 2616)

httpDate1 :: String #

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

textHttpDate :: UTCTime -> Text #

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 #

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

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

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 #

Credentials

data Credentials #

AWS access credentials.

Constructors

Credentials 

Fields

makeCredentials #

Arguments

:: MonadIO io 
=> ByteString

AWS Access Key ID

-> ByteString

AWS Secret Access Key

-> io Credentials 

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

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

Value: directory/.aws-keys

credentialsDefaultKey :: Text #

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) #

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) #

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) #

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) #

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) #

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 #

Default configuration for a specific service.

Minimal complete definition

defServiceConfig

Methods

defServiceConfig :: config #

Default service configuration.

debugServiceConfig :: config #

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

Instances

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

HTTP types

data Protocol #

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

Constructors

HTTP 
HTTPS 

defaultPort :: Protocol -> Int #

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

data Method #

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.

Instances

httpMethod :: Method -> Method #

HTTP method associated with a request method.