type AWSService interface {
// Queries the AWS service at a given method/path with the params and
// returns an http.Response and errorQuery(method, path string, params map[string]string) (*http.Response, error)
// Builds an error given an XML payload in the http.Response, can be used
// to process an error if the status code is not 200 for example.BuildError(r *http.Response) error
}

type Region struct {
Namestring// the canonical name of this region.EC2EndpointstringS3EndpointstringS3BucketEndpointstring// Not needed by AWS S3. Use ${bucket} for bucket name.S3LocationConstraintbool// true if this region requires a LocationConstraint declaration.S3LowercaseBucketbool// true if the region requires bucket names to be lower case.SDBEndpointstringSNSEndpointstringSQSEndpointstringSESEndpointstringIAMEndpointstringELBEndpointstringDynamoDBEndpointstringCloudWatchServicepointServiceInfoAutoScalingEndpointstringRDSEndpointServiceInfoKinesisEndpointstringSTSEndpointstringCloudFormationEndpointstringElastiCacheEndpointstring
}

type ResilientTransport struct {
// Timeout is the maximum amount of time a dial will wait for
// a connect to complete.
//
// The default is no timeout.
//
// With or without a timeout, the operating system may impose
// its own earlier timeout. For instance, TCP timeouts are
// often around 3 minutes.DialTimeouttime.Duration// MaxTries, if non-zero, specifies the number of times we will retry on
// failure. Retries are only attempted for temporary network errors or known
// safe failures.MaxTriesintDeadlineDeadlineFuncShouldRetryRetryableFuncWaitWaitFunc// contains filtered or unexported fields
}

The signed request will include an "x-amz-date" header with a current timestamp if a valid "x-amz-date"
or "date" header was not available in the original request. In addition, AWS Signature Version 4 requires
the "host" header to be a signed header, therefor the Sign method will manually set a "host" header from
the request.Host.

The signed request will include a new "Authorization" header indicating that the request has been signed.

Any changes to the request after signing the request will invalidate the signature.