aws

package
v2.0.0-preview.2+incom... Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2018 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Overview

Package aws provides the core SDK's utilities and shared types. Use this package's utilities to simplify setting and reading API operations parameters.

Value and Pointer Conversion Utilities

This package includes a helper conversion utility for each scalar type the SDK's API use. These utilities make getting a pointer of the scalar, and dereferencing a pointer easier.

Each conversion utility comes in two forms. Value to Pointer and Pointer to Value. The Pointer to value will safely dereference the pointer and return its value. If the pointer was nil, the scalar's zero value will be returned.

The value to pointer functions will be named after the scalar type. So get a *string from a string value use the "String" function. This makes it easy to to get pointer of a literal string value, because getting the address of a literal requires assigning the value to a variable first.

var strPtr *string

// Without the SDK's conversion functions
str := "my string"
strPtr = &str

// With the SDK's conversion functions
strPtr = aws.String("my string")

// Convert *string to string value
str = aws.StringValue(strPtr)

In addition to scalars the aws package also includes conversion utilities for map and slice for commonly types used in API parameters. The map and slice conversion functions use similar naming pattern as the scalar conversion functions.

var strPtrs []*string
var strs []string = []string{"Go", "Gophers", "Go"}

// Convert []string to []*string
strPtrs = aws.StringSlice(strs)

// Convert []*string to []string
strs = aws.StringValueSlice(strPtrs)

SDK Default HTTP Client

The SDK will use the http.DefaultClient if a HTTP client is not provided to the SDK's Session, or service client constructor. This means that if the http.DefaultClient is modified by other components of your application the modifications will be picked up by the SDK as well.

In some cases this might be intended, but it is a better practice to create a custom HTTP Client to share explicitly through your application. You can configure the SDK to use the custom HTTP Client by setting the HTTPClient value of the SDK's Config type when creating a Session or service client.

Package aws provides core functionality for making requests to AWS services.

Index

Examples

Constants

View Source
const (
	// ErrCodeSerialization is the serialization error code that is received
	// during protocol unmarshaling.
	ErrCodeSerialization = "SerializationError"

	// ErrCodeRead is an error that is returned during HTTP reads.
	ErrCodeRead = "ReadError"

	// ErrCodeResponseTimeout is the connection timeout error that is received
	// during body reads.
	ErrCodeResponseTimeout = "ResponseTimeout"

	// CanceledErrorCode is the error code that will be returned by an
	// API request that was canceled. Requests given a Context may
	// return this error when canceled.
	CanceledErrorCode = "RequestCanceled"
)
View Source
const (
	// InvalidParameterErrCode is the error code for invalid parameters errors
	InvalidParameterErrCode = "InvalidParameter"
	// ParamRequiredErrCode is the error code for required parameter errors
	ParamRequiredErrCode = "ParamRequiredError"
	// ParamMinValueErrCode is the error code for fields with too low of a
	// number value.
	ParamMinValueErrCode = "ParamMinValueError"
	// ParamMinLenErrCode is the error code for fields without enough elements.
	ParamMinLenErrCode = "ParamMinLenError"
)
View Source
const (
	// HandlerResponseTimeout is what we use to signify the name of the
	// response timeout handler.
	HandlerResponseTimeout = "ResponseTimeoutHandler"
)
View Source
const SDKName = "aws-sdk-go"

SDKName is the name of this AWS SDK

View Source
const SDKVersion = "2.0.0-preview.2"

SDKVersion is the version of this SDK

View Source
const StaticCredentialsProviderName = "StaticCredentialsProvider"

StaticCredentialsProviderName provides a name of Static provider

View Source
const WaiterResourceNotReadyErrorCode = "ResourceNotReady"

WaiterResourceNotReadyErrorCode is the error code returned by a waiter when the waiter's max attempts have been exhausted.

Variables

View Source
var (
	// ErrMissingRegion is an error that is returned if region configuration is
	// not found.
	//
	// @readonly
	ErrMissingRegion = awserr.New("MissingRegion", "could not find region configuration", nil)

	// ErrMissingEndpoint is an error that is returned if an endpoint cannot be
	// resolved for a service.
	//
	// @readonly
	ErrMissingEndpoint = awserr.New("MissingEndpoint", "'Endpoint' configuration is required for this service", nil)
)
View Source
var AnonymousCredentials = StaticCredentialsProvider{
	Value: Credentials{Source: "AnonymousCredentials"},
}

AnonymousCredentials is an empty CredentialProvider that can be used as dummy placeholder credentials for requests that do not need signed.

This credentials can be used to configure a service to not sign requests when making service API calls. For example, when accessing public s3 buckets.

s3Cfg := cfg.Copy()
s3cfg.Credentials = AnonymousCredentials

svc := s3.New(s3Cfg)
View Source
var (
	// ErrStaticCredentialsEmpty is emitted when static credentials are empty.
	ErrStaticCredentialsEmpty = awserr.New("EmptyStaticCreds", "static credentials are empty", nil)
)
View Source
var NeverExpire = time.Unix(math.MaxInt64, 0)

NeverExpire is the time identifier used when a credential provider's credentials will not expire. This is used in cases where a non-expiring provider type cannot be used.

View Source
var NoBody = http.NoBody

NoBody is a http.NoBody reader instructing Go HTTP client to not include and body in the HTTP request.

Functions

func AddToUserAgent

func AddToUserAgent(r *Request, s string)

AddToUserAgent adds the string to the end of the request's current user agent.

func Bool

func Bool(v bool) *bool

Bool returns a pointer to the bool value passed in.

func BoolMap

func BoolMap(src map[string]bool) map[string]*bool

BoolMap converts a string map of bool values into a string map of bool pointers

func BoolSlice

func BoolSlice(src []bool) []*bool

BoolSlice converts a slice of bool values into a slice of bool pointers

func BoolValue

func BoolValue(v *bool) bool

BoolValue returns the value of the bool pointer passed in or false if the pointer is nil.

func BoolValueMap

func BoolValueMap(src map[string]*bool) map[string]bool

BoolValueMap converts a string map of bool pointers into a string map of bool values

func BoolValueSlice

func BoolValueSlice(src []*bool) []bool

BoolValueSlice converts a slice of bool pointers into a slice of bool values

func Float64

func Float64(v float64) *float64

Float64 returns a pointer to the float64 value passed in.

func Float64Map

func Float64Map(src map[string]float64) map[string]*float64

Float64Map converts a string map of float64 values into a string map of float64 pointers

func Float64Slice

func Float64Slice(src []float64) []*float64

Float64Slice converts a slice of float64 values into a slice of float64 pointers

func Float64Value

func Float64Value(v *float64) float64

Float64Value returns the value of the float64 pointer passed in or 0 if the pointer is nil.

func Float64ValueMap

func Float64ValueMap(src map[string]*float64) map[string]float64

Float64ValueMap converts a string map of float64 pointers into a string map of float64 values

func Float64ValueSlice

func Float64ValueSlice(src []*float64) []float64

Float64ValueSlice converts a slice of float64 pointers into a slice of float64 values

func HandlerListLogItem

func HandlerListLogItem(item HandlerListRunItem) bool

HandlerListLogItem logs the request handler and the state of the request's Error value. Always returns true to continue iterating request handlers in a HandlerList.

func HandlerListStopOnError

func HandlerListStopOnError(item HandlerListRunItem) bool

HandlerListStopOnError returns false to stop the HandlerList iterating over request handlers if Request.Error is not nil. True otherwise to continue iterating.

func Int

func Int(v int) *int

Int returns a pointer to the int value passed in.

func Int64

func Int64(v int64) *int64

Int64 returns a pointer to the int64 value passed in.

func Int64Map

func Int64Map(src map[string]int64) map[string]*int64

Int64Map converts a string map of int64 values into a string map of int64 pointers

func Int64Slice

func Int64Slice(src []int64) []*int64

Int64Slice converts a slice of int64 values into a slice of int64 pointers

func Int64Value

func Int64Value(v *int64) int64

Int64Value returns the value of the int64 pointer passed in or 0 if the pointer is nil.

func Int64ValueMap

func Int64ValueMap(src map[string]*int64) map[string]int64

Int64ValueMap converts a string map of int64 pointers into a string map of int64 values

func Int64ValueSlice

func Int64ValueSlice(src []*int64) []int64

Int64ValueSlice converts a slice of int64 pointers into a slice of int64 values

func IntMap

func IntMap(src map[string]int) map[string]*int

IntMap converts a string map of int values into a string map of int pointers

func IntSlice

func IntSlice(src []int) []*int

IntSlice converts a slice of int values into a slice of int pointers

func IntValue

func IntValue(v *int) int

IntValue returns the value of the int pointer passed in or 0 if the pointer is nil.

func IntValueMap

func IntValueMap(src map[string]*int) map[string]int

IntValueMap converts a string map of int pointers into a string map of int values

func IntValueSlice

func IntValueSlice(src []*int) []int

IntValueSlice converts a slice of int pointers into a slice of int values

func IsErrorExpiredCreds

func IsErrorExpiredCreds(err error) bool

IsErrorExpiredCreds returns whether the error code is a credential expiry error. Returns false if error is nil.

func IsErrorRetryable

func IsErrorRetryable(err error) bool

IsErrorRetryable returns whether the error is retryable, based on its Code. Returns false if error is nil.

func IsErrorThrottle

func IsErrorThrottle(err error) bool

IsErrorThrottle returns whether the error is to be throttled based on its code. Returns false if error is nil.

func MakeAddToUserAgentFreeFormHandler

func MakeAddToUserAgentFreeFormHandler(s string) func(*Request)

MakeAddToUserAgentFreeFormHandler adds the input to the User-Agent request header. The input string will be concatenated with the current request's user agent string.

func MakeAddToUserAgentHandler

func MakeAddToUserAgentHandler(name, version string, extra ...string) func(*Request)

MakeAddToUserAgentHandler will add the name/version pair to the User-Agent request header. If the extra parameters are provided they will be added as metadata to the name/version pair resulting in the following format. "name/version (extra0; extra1; ...)" The user agent part will be concatenated with this current request's user agent string.

func MillisecondsTimeValue

func MillisecondsTimeValue(v *int64) time.Time

MillisecondsTimeValue converts an int64 pointer to a time.Time value representing milliseconds sinch Epoch or time.Time{} if the pointer is nil.

func SecondsTimeValue

func SecondsTimeValue(v *int64) time.Time

SecondsTimeValue converts an int64 pointer to a time.Time value representing seconds since Epoch or time.Time{} if the pointer is nil.

func SleepWithContext

func SleepWithContext(ctx Context, dur time.Duration) error

SleepWithContext will wait for the timer duration to expire, or the context is canceled. Which ever happens first. If the context is canceled the Context's error will be returned.

Expects Context to always return a non-nil error if the Done channel is closed.

func String

func String(v string) *string

String returns a pointer to the string value passed in.

func StringMap

func StringMap(src map[string]string) map[string]*string

StringMap converts a string map of string values into a string map of string pointers

func StringSlice

func StringSlice(src []string) []*string

StringSlice converts a slice of string values into a slice of string pointers

func StringValue

func StringValue(v *string) string

StringValue returns the value of the string pointer passed in or "" if the pointer is nil.

func StringValueMap

func StringValueMap(src map[string]*string) map[string]string

StringValueMap converts a string map of string pointers into a string map of string values

func StringValueSlice

func StringValueSlice(src []*string) []string

StringValueSlice converts a slice of string pointers into a slice of string values

func Time

func Time(v time.Time) *time.Time

Time returns a pointer to the time.Time value passed in.

func TimeMap

func TimeMap(src map[string]time.Time) map[string]*time.Time

TimeMap converts a string map of time.Time values into a string map of time.Time pointers

func TimeSlice

func TimeSlice(src []time.Time) []*time.Time

TimeSlice converts a slice of time.Time values into a slice of time.Time pointers

func TimeUnixMilli

func TimeUnixMilli(t time.Time) int64

TimeUnixMilli returns a Unix timestamp in milliseconds from "January 1, 1970 UTC". The result is undefined if the Unix time cannot be represented by an int64. Which includes calling TimeUnixMilli on a zero Time is undefined.

This utility is useful for service API's such as CloudWatch Logs which require their unix time values to be in milliseconds.

See Go stdlib https://golang.org/pkg/time/#Time.UnixNano for more information.

func TimeValue

func TimeValue(v *time.Time) time.Time

TimeValue returns the value of the time.Time pointer passed in or time.Time{} if the pointer is nil.

func TimeValueMap

func TimeValueMap(src map[string]*time.Time) map[string]time.Time

TimeValueMap converts a string map of time.Time pointers into a string map of time.Time values

func TimeValueSlice

func TimeValueSlice(src []*time.Time) []time.Time

TimeValueSlice converts a slice of time.Time pointers into a slice of time.Time values

func URLHostname

func URLHostname(url *url.URL) string

URLHostname will extract the Hostname without port from the URL value.

Wrapper of net/url#URL.Hostname for backwards Go version compatibility.

Types

type ChainProvider

type ChainProvider struct {
	SafeCredentialsProvider

	Providers []CredentialsProvider
}

A ChainProvider will search for a provider which returns credentials and cache that provider until Retrieve is called again.

The ChainProvider provides a way of chaining multiple providers together which will pick the first available using priority order of the Providers in the list.

If none of the Providers retrieve valid credentials Credentials, ChainProvider's Retrieve() will return the error ErrNoValidProvidersFoundInChain.

If a CredentialsProvider is found which returns valid credentials Credentials ChainProvider will cache that CredentialsProvider for all calls to IsExpired(), until Retrieve is called again.

Example of ChainProvider to be used with an EnvProvider and EC2RoleProvider. In this example EnvProvider will first check if any credentials are available via the environment variables. If there are none ChainProvider will check the next CredentialsProvider in the list, EC2RoleProvider in this case. If EC2RoleProvider does not return any credentials ChainProvider will return the error ErrNoValidProvidersFoundInChain

creds := aws.NewChainCredentials(
    []aws.CredentialsProvider{
        &credentials.EnvProvider{},
        &ec2rolecreds.EC2RoleProvider{
            Client: ec2metadata.New(cfg),
        },
    })

// Usage of ChainCredentials with aws.Config
cfg := cfg.Copy()
cfg.Credentials = creds
svc := ec2.New(cfg)

func NewChainProvider

func NewChainProvider(providers []CredentialsProvider) *ChainProvider

NewChainProvider returns a pointer to a new ChainProvider value wrapping a chain of credentials providers.

type Client

type Client struct {
	Metadata Metadata

	Config Config

	Region           string
	Credentials      CredentialsProvider
	EndpointResolver EndpointResolver
	Handlers         Handlers
	Retryer          Retryer

	// TODO replace with value not pointer
	LogLevel LogLevel
	Logger   Logger

	HTTPClient *http.Client
}

A Client implements the base client request and response handling used by all service clients.

func NewClient

func NewClient(cfg Config, metadata Metadata) *Client

NewClient will return a pointer to a new initialized service client.

func (*Client) AddDebugHandlers

func (c *Client) AddDebugHandlers()

AddDebugHandlers injects debug logging handlers into the service to log request debug information.

func (*Client) NewRequest

func (c *Client) NewRequest(operation *Operation, params interface{}, data interface{}) *Request

NewRequest returns a new Request pointer for the service API operation and parameters.

type Config

type Config struct {
	// The region to send requests to. This parameter is required and must
	// be configured globally or on a per-client basis unless otherwise
	// noted. A full list of regions is found in the "Regions and Endpoints"
	// document.
	//
	// See http://docs.aws.amazon.com/general/latest/gr/rande.html for
	// information on AWS regions.
	Region string

	// The credentials object to use when signing requests. Defaults to a
	// chain of credential providers to search for credentials in environment
	// variables, shared credential file, and EC2 Instance Roles.
	Credentials CredentialsProvider

	// The resolver to use for looking up endpoints for AWS service clients
	// to use based on region.
	EndpointResolver EndpointResolver

	// The HTTP client to use when sending requests. Defaults to
	// `http.DefaultClient`.
	HTTPClient *http.Client

	// TODO document
	Handlers Handlers

	// Retryer guides how HTTP requests should be retried in case of
	// recoverable failures.
	//
	// When nil or the value does not implement the request.Retryer interface,
	// the client.DefaultRetryer will be used.
	//
	// When both Retryer and MaxRetries are non-nil, the former is used and
	// the latter ignored.
	//
	// To set the Retryer field in a type-safe manner and with chaining, use
	// the request.WithRetryer helper function:
	//
	//   cfg := request.WithRetryer(aws.NewConfig(), myRetryer)
	Retryer Retryer

	// An integer value representing the logging level. The default log level
	// is zero (LogOff), which represents no logging. To enable logging set
	// to a LogLevel Value.
	LogLevel LogLevel

	// The logger writer interface to write logging messages to. Defaults to
	// standard out.
	Logger Logger

	// EnforceShouldRetryCheck is used in the AfterRetryHandler to always call
	// ShouldRetry regardless of whether or not if request.Retryable is set.
	// This will utilize ShouldRetry method of custom retryers. If EnforceShouldRetryCheck
	// is not set, then ShouldRetry will only be called if request.Retryable is nil.
	// Proper handling of the request.Retryable field is important when setting this field.
	//
	// TODO this config field is depercated and needs removed.
	EnforceShouldRetryCheck bool

	// DisableRestProtocolURICleaning will not clean the URL path when making
	// rest protocol requests.  Will default to false. This would only be used
	// for empty directory names in s3 requests.
	//
	// Example:
	//    cfg, err := external.LoadDefaultAWSConfig()
	//    cfg.DisableRestProtocolURICleaning = true
	//
	//    svc := s3.New(cfg)
	//    out, err := svc.GetObject(&s3.GetObjectInput {
	//    	Bucket: aws.String("bucketname"),
	//    	Key: aws.String("//foo//bar//moo"),
	//    })
	//
	// TODO need better way of representing support for this concept. Not on Config.
	DisableRestProtocolURICleaning bool
}

A Config provides service configuration for service clients.

func NewConfig

func NewConfig() *Config

NewConfig returns a new Config pointer that can be chained with builder methods to set multiple configuration values inline without using pointers.

func WithRetryer

func WithRetryer(cfg *Config, retryer Retryer) *Config

WithRetryer sets a config Retryer value to the given Config returning it for chaining.

func (Config) Copy

func (c Config) Copy() Config

Copy will return a shallow copy of the Config object. If any additional configurations are provided they will be merged into the new config returned.

type Context

type Context interface {
	// Deadline returns the time when work done on behalf of this context
	// should be canceled. Deadline returns ok==false when no deadline is
	// set. Successive calls to Deadline return the same results.
	Deadline() (deadline time.Time, ok bool)

	// Done returns a channel that's closed when work done on behalf of this
	// context should be canceled. Done may return nil if this context can
	// never be canceled. Successive calls to Done return the same value.
	Done() <-chan struct{}

	// Err returns a non-nil error value after Done is closed. Err returns
	// Canceled if the context was canceled or DeadlineExceeded if the
	// context's deadline passed. No other values for Err are defined.
	// After Done is closed, successive calls to Err return the same value.
	Err() error

	// Value returns the value associated with this context for key, or nil
	// if no value is associated with key. Successive calls to Value with
	// the same key returns the same result.
	//
	// Use context values only for request-scoped data that transits
	// processes and API boundaries, not for passing optional parameters to
	// functions.
	Value(key interface{}) interface{}
}

Context is an copy of the Go v1.7 stdlib's context.Context interface. It is represented as a SDK interface to enable you to use the "WithContext" API methods with Go v1.6 and a Context type such as golang.org/x/net/context.

See https://golang.org/pkg/context on how to use contexts.

func BackgroundContext

func BackgroundContext() Context

BackgroundContext returns a context that will never be canceled, has no values, and no deadline. This context is used by the SDK to provide backwards compatibility with non-context API operations and functionality.

Go 1.6 and before: This context function is equivalent to context.Background in the Go stdlib.

Go 1.7 and later: The context returned will be the value returned by context.Background()

See https://golang.org/pkg/context for more information on Contexts.

type Credentials

type Credentials struct {
	// AWS Access key ID
	AccessKeyID string

	// AWS Secret Access Key
	SecretAccessKey string

	// AWS Session Token
	SessionToken string

	// Source of the credentials
	Source string

	// Time the credentials will expire.
	CanExpire bool
	Expires   time.Time
}

A Credentials is the AWS credentials value for individual credential fields.

func (Credentials) Expired

func (v Credentials) Expired() bool

Expired returns if the credetials have expired.

func (Credentials) HasKeys

func (v Credentials) HasKeys() bool

HasKeys returns if the credentials keys are set.

type CredentialsProvider

type CredentialsProvider interface {
	// Retrieve returns nil if it successfully retrieved the value.
	// Error is returned if the value were not obtainable, or empty.
	Retrieve() (Credentials, error)
}

A CredentialsProvider is the interface for any component which will provide credentials Credentials. A CredentialsProvider is required to manage its own Expired state, and what to be expired means.

The CredentialsProvider should not need to implement its own mutexes, because that will be managed by CredentialsLoader.

type DefaultRetryer

type DefaultRetryer struct {
	NumMaxRetries int
}

DefaultRetryer implements basic retry logic using exponential backoff for most services. If you want to implement custom retry logic, implement the Retryer interface or create a structure type that composes this struct and override the specific methods. For example, to override only the MaxRetries method:

		type retryer struct {
     client.DefaultRetryer
   }

   // This implementation always has 100 max retries
   func (d retryer) MaxRetries() int { return 100 }

func (DefaultRetryer) MaxRetries

func (d DefaultRetryer) MaxRetries() int

MaxRetries returns the number of maximum returns the service will use to make an individual API

func (DefaultRetryer) RetryRules

func (d DefaultRetryer) RetryRules(r *Request) time.Duration

RetryRules returns the delay duration before retrying this request again

func (DefaultRetryer) ShouldRetry

func (d DefaultRetryer) ShouldRetry(r *Request) bool

ShouldRetry returns true if the request should be retried.

type Endpoint

type Endpoint struct {
	URL           string
	SigningName   string
	SigningRegion string
	SigningMethod string
}

Endpoint represents the endpoint a service client should make requests to.

type EndpointResolver

type EndpointResolver interface {
	ResolveEndpoint(service, region string) (Endpoint, error)
}

EndpointResolver resolves an endpoint for a service endpoint id and region.

type EndpointResolverFunc

type EndpointResolverFunc func(service, region string) (Endpoint, error)

EndpointResolverFunc is a helper utility that wraps a function so it satisfies the Resolver interface. This is useful when you want to add additional endpoint resolving logic, or stub out specific endpoints with custom values.

Example
package main

import (
	"fmt"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/aws/defaults"
	"github.com/aws/aws-sdk-go-v2/aws/endpoints"
	"github.com/aws/aws-sdk-go-v2/service/s3"
	"github.com/aws/aws-sdk-go-v2/service/sqs"
)

func main() {
	defaultResolver := endpoints.NewDefaultResolver()
	myCustomResolver := func(service, region string) (aws.Endpoint, error) {
		if service == endpoints.S3ServiceID {
			return aws.Endpoint{
				URL:           "s3.custom.endpoint.com",
				SigningRegion: "custom-signing-region",
			}, nil
		}

		return defaultResolver.ResolveEndpoint(service, region)
	}

	cfg := defaults.Config()
	cfg.Region = endpoints.UsWest2RegionID
	cfg.EndpointResolver = aws.EndpointResolverFunc(myCustomResolver)

	// Create the S3 service client with the shared config. This will
	// automatically use the S3 custom endpoint configured in the custom
	// endpoint resolver wrapping the default endpoint resolver.
	s3Svc := s3.New(cfg)
	// Operation calls will be made to the custom endpoint.
	objReq := s3Svc.GetObjectRequest(&s3.GetObjectInput{
		Bucket: aws.String("myBucket"),
		Key:    aws.String("myObjectKey"),
	})
	objResp, err := objReq.Send()
	if err != nil {
		panic("S3 Get Object error, " + err.Error())
	}
	fmt.Println("S3 Get object", objResp)

	// Create the SQS service client with the shared cfg. This will
	// fallback to the default endpoint resolver because the customization
	// passes any non S3 service endpoint resolve to the default resolver.
	sqsSvc := sqs.New(cfg)
	// Operation calls will be made to the default endpoint for SQS for the
	// region configured.
	msgReq := sqsSvc.ReceiveMessageRequest(&sqs.ReceiveMessageInput{
		QueueUrl: aws.String("my-queue-url"),
	})
	msgResp, err := msgReq.Send()
	if err != nil {
		panic("SQS Receive Message error, " + err.Error())
	}
	fmt.Println("SQS Receive Message", msgResp)
}
Output:

func (EndpointResolverFunc) ResolveEndpoint

func (fn EndpointResolverFunc) ResolveEndpoint(service, region string) (Endpoint, error)

ResolveEndpoint calls EndpointResolverFunc returning the endpoint, or error.

type ErrInvalidParam

type ErrInvalidParam interface {
	awserr.Error

	// Field name the error occurred on.
	Field() string

	// SetContext updates the context of the error.
	SetContext(string)

	// AddNestedContext updates the error's context to include a nested level.
	AddNestedContext(string)
}

An ErrInvalidParam represents an invalid parameter error type.

type ErrInvalidParams

type ErrInvalidParams struct {
	// Context is the base context of the invalid parameter group.
	Context string
	// contains filtered or unexported fields
}

An ErrInvalidParams provides wrapping of invalid parameter errors found when validating API operation input parameters.

func (*ErrInvalidParams) Add

func (e *ErrInvalidParams) Add(err ErrInvalidParam)

Add adds a new invalid parameter error to the collection of invalid parameters. The context of the invalid parameter will be updated to reflect this collection.

func (*ErrInvalidParams) AddNested

func (e *ErrInvalidParams) AddNested(nestedCtx string, nested ErrInvalidParams)

AddNested adds the invalid parameter errors from another ErrInvalidParams value into this collection. The nested errors will have their nested context updated and base context to reflect the merging.

Use for nested validations errors.

func (ErrInvalidParams) Code

func (e ErrInvalidParams) Code() string

Code returns the code of the error

func (ErrInvalidParams) Error

func (e ErrInvalidParams) Error() string

Error returns the string formatted form of the invalid parameters.

func (ErrInvalidParams) Len

func (e ErrInvalidParams) Len() int

Len returns the number of invalid parameter errors

func (ErrInvalidParams) Message

func (e ErrInvalidParams) Message() string

Message returns the message of the error

func (ErrInvalidParams) OrigErr

func (e ErrInvalidParams) OrigErr() error

OrigErr returns the invalid parameters as a awserr.BatchedErrors value

func (ErrInvalidParams) OrigErrs

func (e ErrInvalidParams) OrigErrs() []error

OrigErrs returns a slice of the invalid parameters

type ErrParamMinLen

type ErrParamMinLen struct {
	// contains filtered or unexported fields
}

An ErrParamMinLen represents a minimum length parameter error.

func NewErrParamMinLen

func NewErrParamMinLen(field string, min int) *ErrParamMinLen

NewErrParamMinLen creates a new minimum length parameter error.

func (*ErrParamMinLen) AddNestedContext

func (e *ErrParamMinLen) AddNestedContext(ctx string)

AddNestedContext prepends a context to the field's path.

func (*ErrParamMinLen) Code

func (e *ErrParamMinLen) Code() string

Code returns the error code for the type of invalid parameter.

func (*ErrParamMinLen) Error

func (e *ErrParamMinLen) Error() string

Error returns the string version of the invalid parameter error.

func (*ErrParamMinLen) Field

func (e *ErrParamMinLen) Field() string

Field Returns the field and context the error occurred.

func (*ErrParamMinLen) Message

func (e *ErrParamMinLen) Message() string

Message returns the reason the parameter was invalid, and its context.

func (*ErrParamMinLen) MinLen

func (e *ErrParamMinLen) MinLen() int

MinLen returns the field's required minimum length.

func (*ErrParamMinLen) OrigErr

func (e *ErrParamMinLen) OrigErr() error

OrigErr returns nil, Implemented for awserr.Error interface.

func (*ErrParamMinLen) SetContext

func (e *ErrParamMinLen) SetContext(ctx string)

SetContext updates the base context of the error.

type ErrParamMinValue

type ErrParamMinValue struct {
	// contains filtered or unexported fields
}

An ErrParamMinValue represents a minimum value parameter error.

func NewErrParamMinValue

func NewErrParamMinValue(field string, min float64) *ErrParamMinValue

NewErrParamMinValue creates a new minimum value parameter error.

func (*ErrParamMinValue) AddNestedContext

func (e *ErrParamMinValue) AddNestedContext(ctx string)

AddNestedContext prepends a context to the field's path.

func (*ErrParamMinValue) Code

func (e *ErrParamMinValue) Code() string

Code returns the error code for the type of invalid parameter.

func (*ErrParamMinValue) Error

func (e *ErrParamMinValue) Error() string

Error returns the string version of the invalid parameter error.

func (*ErrParamMinValue) Field

func (e *ErrParamMinValue) Field() string

Field Returns the field and context the error occurred.

func (*ErrParamMinValue) Message

func (e *ErrParamMinValue) Message() string

Message returns the reason the parameter was invalid, and its context.

func (*ErrParamMinValue) MinValue

func (e *ErrParamMinValue) MinValue() float64

MinValue returns the field's require minimum value.

float64 is returned for both int and float min values.

func (*ErrParamMinValue) OrigErr

func (e *ErrParamMinValue) OrigErr() error

OrigErr returns nil, Implemented for awserr.Error interface.

func (*ErrParamMinValue) SetContext

func (e *ErrParamMinValue) SetContext(ctx string)

SetContext updates the base context of the error.

type ErrParamRequired

type ErrParamRequired struct {
	// contains filtered or unexported fields
}

An ErrParamRequired represents an required parameter error.

func NewErrParamRequired

func NewErrParamRequired(field string) *ErrParamRequired

NewErrParamRequired creates a new required parameter error.

func (*ErrParamRequired) AddNestedContext

func (e *ErrParamRequired) AddNestedContext(ctx string)

AddNestedContext prepends a context to the field's path.

func (*ErrParamRequired) Code

func (e *ErrParamRequired) Code() string

Code returns the error code for the type of invalid parameter.

func (*ErrParamRequired) Error

func (e *ErrParamRequired) Error() string

Error returns the string version of the invalid parameter error.

func (*ErrParamRequired) Field

func (e *ErrParamRequired) Field() string

Field Returns the field and context the error occurred.

func (*ErrParamRequired) Message

func (e *ErrParamRequired) Message() string

Message returns the reason the parameter was invalid, and its context.

func (*ErrParamRequired) OrigErr

func (e *ErrParamRequired) OrigErr() error

OrigErr returns nil, Implemented for awserr.Error interface.

func (*ErrParamRequired) SetContext

func (e *ErrParamRequired) SetContext(ctx string)

SetContext updates the base context of the error.

type Expiration

type Expiration time.Time

An Expiration provides wrapper around time with expiration related methods.

type HandlerList

type HandlerList struct {

	// Called after each request handler in the list is called. If set
	// and the func returns true the HandlerList will continue to iterate
	// over the request handlers. If false is returned the HandlerList
	// will stop iterating.
	//
	// Should be used if extra logic to be performed between each handler
	// in the list. This can be used to terminate a list's iteration
	// based on a condition such as error like, HandlerListStopOnError.
	// Or for logging like HandlerListLogItem.
	AfterEachFn func(item HandlerListRunItem) bool
	// contains filtered or unexported fields
}

A HandlerList manages zero or more handlers in a list.

func (*HandlerList) Clear

func (l *HandlerList) Clear()

Clear clears the handler list.

func (*HandlerList) Len

func (l *HandlerList) Len() int

Len returns the number of handlers in the list.

func (*HandlerList) PushBack

func (l *HandlerList) PushBack(f func(*Request))

PushBack pushes handler f to the back of the handler list.

func (*HandlerList) PushBackNamed

func (l *HandlerList) PushBackNamed(n NamedHandler)

PushBackNamed pushes named handler f to the back of the handler list.

func (*HandlerList) PushFront

func (l *HandlerList) PushFront(f func(*Request))

PushFront pushes handler f to the front of the handler list.

func (*HandlerList) PushFrontNamed

func (l *HandlerList) PushFrontNamed(n NamedHandler)

PushFrontNamed pushes named handler f to the front of the handler list.

func (*HandlerList) Remove

func (l *HandlerList) Remove(n NamedHandler)

Remove removes a NamedHandler n

func (*HandlerList) RemoveByName

func (l *HandlerList) RemoveByName(name string)

RemoveByName removes a NamedHandler by name.

func (*HandlerList) Run

func (l *HandlerList) Run(r *Request)

Run executes all handlers in the list with a given request object.

func (*HandlerList) SetBackNamed

func (l *HandlerList) SetBackNamed(n NamedHandler)

SetBackNamed will replace the named handler if it exists in the handler list. If the handler does not exist the handler will be added to the end of the list.

func (*HandlerList) SetFrontNamed

func (l *HandlerList) SetFrontNamed(n NamedHandler)

SetFrontNamed will replace the named handler if it exists in the handler list. If the handler does not exist the handler will be added to the beginning of the list.

func (*HandlerList) SwapNamed

func (l *HandlerList) SwapNamed(n NamedHandler) (swapped bool)

SwapNamed will swap out any existing handlers with the same name as the passed in NamedHandler returning true if handlers were swapped. False is returned otherwise.

type HandlerListRunItem

type HandlerListRunItem struct {
	Index   int
	Handler NamedHandler
	Request *Request
}

A HandlerListRunItem represents an entry in the HandlerList which is being run.

type Handlers

type Handlers struct {
	Validate         HandlerList
	Build            HandlerList
	Sign             HandlerList
	Send             HandlerList
	ValidateResponse HandlerList
	Unmarshal        HandlerList
	UnmarshalMeta    HandlerList
	UnmarshalError   HandlerList
	Retry            HandlerList
	AfterRetry       HandlerList
	Complete         HandlerList
}

A Handlers provides a collection of request handlers for various stages of handling requests.

func (*Handlers) Clear

func (h *Handlers) Clear()

Clear removes callback functions for all handlers

func (*Handlers) Copy

func (h *Handlers) Copy() Handlers

Copy returns of this handler's lists.

type JSONValue

type JSONValue map[string]interface{}

JSONValue is a representation of a grab bag type that will be marshaled into a json string. This type can be used just like any other map.

Example:

values := aws.JSONValue{
	"Foo": "Bar",
}
values["Baz"] = "Qux"

type LogLevel

type LogLevel uint

A LogLevel defines the level logging should be performed at. Used to instruct the SDK which statements should be logged.

const (
	// LogOff states that no logging should be performed by the SDK. This is the
	// default state of the SDK, and should be use to disable all logging.
	LogOff LogLevel = iota * 0x1000

	// LogDebug state that debug output should be logged by the SDK. This should
	// be used to inspect request made and responses received.
	LogDebug
)
const (
	// LogDebugWithSigning states that the SDK should log request signing and
	// presigning events. This should be used to log the signing details of
	// requests for debugging. Will also enable LogDebug.
	LogDebugWithSigning LogLevel = LogDebug | (1 << iota)

	// LogDebugWithHTTPBody states the SDK should log HTTP request and response
	// HTTP bodys in addition to the headers and path. This should be used to
	// see the body content of requests and responses made while using the SDK
	// Will also enable LogDebug.
	LogDebugWithHTTPBody

	// LogDebugWithRequestRetries states the SDK should log when service requests will
	// be retried. This should be used to log when you want to log when service
	// requests are being retried. Will also enable LogDebug.
	LogDebugWithRequestRetries

	// LogDebugWithRequestErrors states the SDK should log when service requests fail
	// to build, send, validate, or unmarshal.
	LogDebugWithRequestErrors
)

Debug Logging Sub Levels

func (LogLevel) AtLeast

func (l LogLevel) AtLeast(v LogLevel) bool

AtLeast returns true if this LogLevel is at least high enough to satisfies v. Is safe to use on nil value LogLevelTypes. If LogLevel is nil, will default to LogOff comparison.

func (LogLevel) Matches

func (l LogLevel) Matches(v LogLevel) bool

Matches returns true if the v LogLevel is enabled by this LogLevel. Should be used with logging sub levels. Is safe to use on nil value LogLevelTypes. If LogLevel is nil, will default to LogOff comparison.

type Logger

type Logger interface {
	Log(...interface{})
}

A Logger is a minimalistic interface for the SDK to log messages to. Should be used to provide custom logging writers for the SDK to use.

func NewDefaultLogger

func NewDefaultLogger() Logger

NewDefaultLogger returns a Logger which will write log messages to stdout, and use same formatting runes as the stdlib log.Logger

TODO remove, moved to default pkg

type LoggerFunc

type LoggerFunc func(...interface{})

A LoggerFunc is a convenience type to convert a function taking a variadic list of arguments and wrap it so the Logger interface can be used.

Example:

s3.New(sess, &aws.Config{Logger: aws.LoggerFunc(func(args ...interface{}) {
    fmt.Fprintln(os.Stdout, args...)
})})

func (LoggerFunc) Log

func (f LoggerFunc) Log(args ...interface{})

Log calls the wrapped function with the arguments provided

type Metadata

type Metadata struct {
	ServiceName string
	APIVersion  string

	Endpoint      string
	SigningName   string
	SigningRegion string

	JSONVersion  string
	TargetPrefix string
}

Metadata wraps immutable data from the Client structure.

type NamedHandler

type NamedHandler struct {
	Name string
	Fn   func(*Request)
}

A NamedHandler is a struct that contains a name and function callback.

type Operation

type Operation struct {
	Name       string
	HTTPMethod string
	HTTPPath   string
	*Paginator

	BeforePresignFn func(r *Request) error
}

An Operation is the service API operation to be made.

type Option

type Option func(*Request)

A Option is a functional option that can augment or modify a request when using a WithContext API operation method.

func WithAppendUserAgent

func WithAppendUserAgent(s string) Option

WithAppendUserAgent will add a string to the user agent prefixed with a single white space.

func WithGetResponseHeader

func WithGetResponseHeader(key string, val *string) Option

WithGetResponseHeader builds a request Option which will retrieve a single header value from the HTTP Response. If there are multiple values for the header key use WithGetResponseHeaders instead to access the http.Header map directly. The passed in val pointer must be non-nil.

This Option can be used multiple times with a single API operation.

var id2, versionID string
svc.PutObjectWithContext(ctx, params,
    request.WithGetResponseHeader("x-amz-id-2", &id2),
    request.WithGetResponseHeader("x-amz-version-id", &versionID),
)

func WithGetResponseHeaders

func WithGetResponseHeaders(headers *http.Header) Option

WithGetResponseHeaders builds a request Option which will retrieve the headers from the HTTP response and assign them to the passed in headers variable. The passed in headers pointer must be non-nil.

var headers http.Header
svc.PutObjectWithContext(ctx, params, request.WithGetResponseHeaders(&headers))

func WithLogLevel

func WithLogLevel(l LogLevel) Option

WithLogLevel is a request option that will set the request to use a specific log level when the request is made.

svc.PutObjectWithContext(ctx, params, request.WithLogLevel(LogDebugWithHTTPBody)

func WithResponseReadTimeout

func WithResponseReadTimeout(duration time.Duration) Option

WithResponseReadTimeout is a request option that will wrap the body in a timeout read closer. This will allow for per read timeouts. If a timeout occurred, we will return the ErrCodeResponseTimeout.

svc.PutObjectWithContext(ctx, params, request.WithTimeoutReadCloser(30 * time.Second)

type Pagination

type Pagination struct {
	// Function to return a Request value for each pagination request.
	// Any configuration or handlers that need to be applied to the request
	// prior to getting the next page should be done here before the request
	// returned.
	//
	// NewRequest should always be built from the same API operations. It is
	// undefined if different API operations are returned on subsequent calls.
	NewRequest func() (*Request, error)
	// contains filtered or unexported fields
}

A Pagination provides paginating of SDK API operations which are paginatable. Generally you should not use this type directly, but use the "Pages" API operations method to automatically perform pagination for you. Such as, "S3.ListObjectsPages", and "S3.ListObjectsPagesWithContext" methods.

Pagination differs from a Paginator type in that pagination is the type that does the pagination between API operations, and Paginator defines the configuration that will be used per page request.

cont := true
for p.Next() && cont {
    data := p.Page().(*s3.ListObjectsOutput)
    // process the page's data
}
return p.Err()

See service client API operation Pages methods for examples how the SDK will use the Pagination type.

func (*Pagination) Err

func (p *Pagination) Err() error

Err returns the error Pagination encountered when retrieving the next page.

func (*Pagination) HasNextPage

func (p *Pagination) HasNextPage() bool

HasNextPage will return true if Pagination is able to determine that the API operation has additional pages. False will be returned if there are no more pages remaining.

Will always return true if Next has not been called yet.

func (*Pagination) Next

func (p *Pagination) Next() bool

Next will attempt to retrieve the next page for the API operation. When a page is retrieved true will be returned. If the page cannot be retrieved, or there are no more pages false will be returned.

Use the Page method to retrieve the current page data. The data will need to be cast to the API operation's output type.

Use the Err method to determine if an error occurred if Page returns false.

func (*Pagination) Page

func (p *Pagination) Page() interface{}

Page returns the current page. Page should only be called after a successful call to Next. It is undefined what Page will return if Page is called after Next returns false.

type Paginator

type Paginator struct {
	InputTokens     []string
	OutputTokens    []string
	LimitToken      string
	TruncationToken string
}

A Paginator is the configuration data that defines how an API operation should be paginated. This type is used by the API service models to define the generated pagination config for service APIs.

The Pagination type is what provides iterating between pages of an API. It is only used to store the token metadata the SDK should use for performing pagination.

type ReaderSeekerCloser

type ReaderSeekerCloser struct {
	// contains filtered or unexported fields
}

ReaderSeekerCloser represents a reader that can also delegate io.Seeker and io.Closer interfaces to the underlying object if they are available.

func ReadSeekCloser deprecated

func ReadSeekCloser(r io.Reader) ReaderSeekerCloser

ReadSeekCloser wraps a io.Reader returning a ReaderSeekerCloser. Should only be used with an io.Reader that is also an io.Seeker. Doing so may cause request signature errors, or request body's not sent for GET, HEAD and DELETE HTTP methods.

Deprecated: Should only be used with io.ReadSeeker. If using for S3 PutObject to stream content use s3manager.Uploader instead.

func (ReaderSeekerCloser) Close

func (r ReaderSeekerCloser) Close() error

Close closes the ReaderSeekerCloser.

If the ReaderSeekerCloser is not an io.Closer nothing will be done.

func (ReaderSeekerCloser) IsSeeker

func (r ReaderSeekerCloser) IsSeeker() bool

IsSeeker returns if the underlying reader is also a seeker.

func (ReaderSeekerCloser) Read

func (r ReaderSeekerCloser) Read(p []byte) (int, error)

Read reads from the reader up to size of p. The number of bytes read, and error if it occurred will be returned.

If the reader is not an io.Reader zero bytes read, and nil error will be returned.

Performs the same functionality as io.Reader Read

func (ReaderSeekerCloser) Seek

func (r ReaderSeekerCloser) Seek(offset int64, whence int) (int64, error)

Seek sets the offset for the next Read to offset, interpreted according to whence: 0 means relative to the origin of the file, 1 means relative to the current offset, and 2 means relative to the end. Seek returns the new offset and an error, if any.

If the ReaderSeekerCloser is not an io.Seeker nothing will be done.

type Request

type Request struct {
	Config   Config
	Metadata Metadata
	Handlers Handlers

	Retryer
	Time                   time.Time
	ExpireTime             time.Duration
	Operation              *Operation
	HTTPRequest            *http.Request
	HTTPResponse           *http.Response
	Body                   io.ReadSeeker
	BodyStart              int64 // offset from beginning of Body that the request body starts
	Params                 interface{}
	Error                  error
	Data                   interface{}
	RequestID              string
	RetryCount             int
	Retryable              *bool
	RetryDelay             time.Duration
	NotHoist               bool
	SignedHeaderVals       http.Header
	LastSignedAt           time.Time
	DisableFollowRedirects bool
	// contains filtered or unexported fields
}

A Request is the service request to be made.

func New

func New(cfg Config, metadata Metadata, handlers Handlers,
	retryer Retryer, operation *Operation, params interface{}, data interface{}) *Request

New returns a new Request pointer for the service API operation and parameters.

Params is any value of input parameters to be the request payload. Data is pointer value to an object which the request's response payload will be deserialized to.

func (*Request) ApplyOptions

func (r *Request) ApplyOptions(opts ...Option)

ApplyOptions will apply each option to the request calling them in the order the were provided.

func (*Request) Build

func (r *Request) Build() error

Build will build the request's object so it can be signed and sent to the service. Build will also validate all the request's parameters. Anny additional build Handlers set on this request will be run in the order they were set.

The request will only be built once. Multiple calls to build will have no effect.

If any Validate or Build errors occur the build will stop and the error which occurred will be returned.

func (*Request) Context

func (r *Request) Context() Context

Context will always returns a non-nil context. If Request does not have a context BackgroundContext will be returned.

func (*Request) EachPage

func (r *Request) EachPage(fn func(data interface{}, isLastPage bool) (shouldContinue bool)) error

EachPage iterates over each page of a paginated request object. The fn parameter should be a function with the following sample signature:

func(page *T, lastPage bool) bool {
    return true // return false to stop iterating
}

Where "T" is the structure type matching the output structure of the given operation. For example, a request object generated by DynamoDB.ListTablesRequest() would expect to see dynamodb.ListTablesOutput as the structure "T". The lastPage value represents whether the page is the last page of data or not. The return value of this function should return true to keep iterating or false to stop.

Deprecated Use Pagination type for configurable pagination of API operations

func (*Request) GetBody

func (r *Request) GetBody() io.ReadSeeker

GetBody will return an io.ReadSeeker of the Request's underlying input body with a concurrency safe wrapper.

func (*Request) HasNextPage

func (r *Request) HasNextPage() bool

HasNextPage returns true if this request has more pages of data available.

Deprecated Use Pagination type for configurable pagination of API operations

func (*Request) IsErrorExpired

func (r *Request) IsErrorExpired() bool

IsErrorExpired returns whether the error code is a credential expiry error. Returns false if the request has no Error set.

Alias for the utility function IsErrorExpiredCreds

func (*Request) IsErrorRetryable

func (r *Request) IsErrorRetryable() bool

IsErrorRetryable returns whether the error is retryable, based on its Code. Returns false if the request has no Error set.

Alias for the utility function IsErrorRetryable

func (*Request) IsErrorThrottle

func (r *Request) IsErrorThrottle() bool

IsErrorThrottle returns whether the error is to be throttled based on its code. Returns false if the request has no Error set

Alias for the utility function IsErrorThrottle

func (*Request) NextPage

func (r *Request) NextPage() *Request

NextPage returns a new Request that can be executed to return the next page of result data. Call .Send() on this request to execute it.

Deprecated Use Pagination type for configurable pagination of API operations

func (*Request) ParamsFilled

func (r *Request) ParamsFilled() bool

ParamsFilled returns if the request's parameters have been populated and the parameters are valid. False is returned if no parameters are provided or invalid.

func (*Request) Presign

func (r *Request) Presign(expireTime time.Duration) (string, error)

Presign returns the request's signed URL. Error will be returned if the signing fails.

func (*Request) PresignRequest

func (r *Request) PresignRequest(expireTime time.Duration) (string, http.Header, error)

PresignRequest behaves just like presign, with the addition of returning a set of headers that were signed.

Returns the URL string for the API operation with signature in the query string, and the HTTP headers that were included in the signature. These headers must be included in any HTTP request made with the presigned URL.

To prevent hoisting any headers to the query string set NotHoist to true on this Request value prior to calling PresignRequest.

func (*Request) ResetBody

func (r *Request) ResetBody()

ResetBody rewinds the request body back to its starting position, and set's the HTTP Request body reference. When the body is read prior to being sent in the HTTP request it will need to be rewound.

ResetBody will automatically be called by the SDK's build handler, but if the request is being used directly ResetBody must be called before the request is Sent. SetStringBody, SetBufferBody, and SetReaderBody will automatically call ResetBody.

Will also set the Go 1.8's http.Request.GetBody member to allow retrying PUT/POST redirects.

func (*Request) Send

func (r *Request) Send() error

Send will send the request returning error if errors are encountered.

Send will sign the request prior to sending. All Send Handlers will be executed in the order they were set.

Canceling a request is non-deterministic. If a request has been canceled, then the transport will choose, randomly, one of the state channels during reads or getting the connection.

readLoop() and getConn(req *Request, cm connectMethod) https://github.com/golang/go/blob/master/src/net/http/transport.go

Send will not close the request.Request's body.

func (*Request) SetBufferBody

func (r *Request) SetBufferBody(buf []byte)

SetBufferBody will set the request's body bytes that will be sent to the service API.

func (*Request) SetContext

func (r *Request) SetContext(ctx Context)

SetContext adds a Context to the current request that can be used to cancel a in-flight request. The Context value must not be nil, or this method will panic.

Unlike http.Request.WithContext, SetContext does not return a copy of the Request. It is not safe to use use a single Request value for multiple requests. A new Request should be created for each API operation request.

Go 1.6 and below: The http.Request's Cancel field will be set to the Done() value of the context. This will overwrite the Cancel field's value.

Go 1.7 and above: The http.Request.WithContext will be used to set the context on the underlying http.Request. This will create a shallow copy of the http.Request. The SDK may create sub contexts in the future for nested requests such as retries.

func (*Request) SetReaderBody

func (r *Request) SetReaderBody(reader io.ReadSeeker)

SetReaderBody will set the request's body reader.

func (*Request) SetStringBody

func (r *Request) SetStringBody(s string)

SetStringBody sets the body of the request to be backed by a string.

func (*Request) Sign

func (r *Request) Sign() error

Sign will sign the request returning error if errors are encountered.

Send will build the request prior to signing. All Sign Handlers will be executed in the order they were set.

func (*Request) WillRetry

func (r *Request) WillRetry() bool

WillRetry returns if the request's can be retried.

type ResolveWithEndpoint

type ResolveWithEndpoint Endpoint

ResolveWithEndpoint allows a static Resolved Endpoint to be used as an endpoint resolver

func ResolveWithEndpointURL

func ResolveWithEndpointURL(url string) ResolveWithEndpoint

ResolveWithEndpointURL allows a static URL to be used as a endpoint resolver.

func (ResolveWithEndpoint) ResolveEndpoint

func (v ResolveWithEndpoint) ResolveEndpoint(service, region string) (Endpoint, error)

ResolveEndpoint returns the static endpoint.

type Response

type Response struct {
	// TODO these fields should be focused on response, not just embedded request value.
	// Need refactor of request for this to be better.
	Request *Request
}

Response provides the response meta data for a SDK API request's response.

type Retryer

type Retryer interface {
	RetryRules(*Request) time.Duration
	ShouldRetry(*Request) bool
	MaxRetries() int
}

Retryer is an interface to control retry logic for a given service. The default implementation used by most services is the client.DefaultRetryer structure, which contains basic retry logic using exponential backoff.

type SafeCredentialsProvider

type SafeCredentialsProvider struct {
	RetrieveFn func() (Credentials, error)
	// contains filtered or unexported fields
}

SafeCredentialsProvider provides caching and concurrency safe credentials retrieval via the RetrieveFn.

func (*SafeCredentialsProvider) Invalidate

func (p *SafeCredentialsProvider) Invalidate()

Invalidate will invalidate the cached credentials. The next call to Retrieve will cause RetrieveFn to be called.

func (*SafeCredentialsProvider) Retrieve

func (p *SafeCredentialsProvider) Retrieve() (Credentials, error)

Retrieve returns the credentials. If the credentials have already been retrieved, and not expired the cached credentials will be returned. If the credentails have not been retrieved yet, or expired RetrieveFn will be called.

Retruns and error if RetrieveFn returns an error.

type StaticCredentialsProvider

type StaticCredentialsProvider struct {
	Value Credentials
}

A StaticCredentialsProvider is a set of credentials which are set programmatically, and will never expire.

func NewStaticCredentialsProvider

func NewStaticCredentialsProvider(key, secret, session string) StaticCredentialsProvider

NewStaticCredentialsProvider return a StaticCredentialsProvider initialized with the AWS credentials passed in.

func (StaticCredentialsProvider) IsExpired

func (s StaticCredentialsProvider) IsExpired() bool

IsExpired returns if the credentials are expired.

For StaticCredentialsProvider, the credentials never expired.

func (StaticCredentialsProvider) Retrieve

Retrieve returns the credentials or error if the credentials are invalid.

type Validator

type Validator interface {
	Validate() error
}

Validator provides a way for types to perform validation logic on their input values that external code can use to determine if a type's values are valid.

type Waiter

type Waiter struct {
	Name      string
	Acceptors []WaiterAcceptor
	Logger    Logger

	MaxAttempts int
	Delay       WaiterDelay

	RequestOptions   []Option
	NewRequest       func([]Option) (*Request, error)
	SleepWithContext func(Context, time.Duration) error
}

A Waiter provides the functionality to perform a blocking call which will wait for a resource state to be satisfied by a service.

This type should not be used directly. The API operations provided in the service packages prefixed with "WaitUntil" should be used instead.

func (*Waiter) ApplyOptions

func (w *Waiter) ApplyOptions(opts ...WaiterOption)

ApplyOptions updates the waiter with the list of waiter options provided.

func (Waiter) WaitWithContext

func (w Waiter) WaitWithContext(ctx Context) error

WaitWithContext will make requests for the API operation using NewRequest to build API requests. The request's response will be compared against the Waiter's Acceptors to determine the successful state of the resource the waiter is inspecting.

The passed in context must not be nil. If it is nil a panic will occur. The Context will be used to cancel the waiter's pending requests and retry delays. Use BackgroundContext if no context is available.

The waiter will continue until the target state defined by the Acceptors, or the max attempts expires.

Will return the WaiterResourceNotReadyErrorCode error code if the waiter's retryer ShouldRetry returns false. This normally will happen when the max wait attempts expires.

type WaiterAcceptor

type WaiterAcceptor struct {
	State    WaiterState
	Matcher  WaiterMatchMode
	Argument string
	Expected interface{}
}

A WaiterAcceptor provides the information needed to wait for an API operation to complete.

type WaiterDelay

type WaiterDelay func(attempt int) time.Duration

WaiterDelay will return a delay the waiter should pause between attempts to check the resource state. The passed in attempt is the number of times the Waiter has checked the resource state.

Attempt is the number of attempts the Waiter has made checking the resource state.

func ConstantWaiterDelay

func ConstantWaiterDelay(delay time.Duration) WaiterDelay

ConstantWaiterDelay returns a WaiterDelay that will always return a constant delay the waiter should use between attempts. It ignores the number of attempts made.

type WaiterMatchMode

type WaiterMatchMode int

WaiterMatchMode is the mode that the waiter will use to match the WaiterAcceptor definition's Expected attribute.

const (
	PathAllWaiterMatch  WaiterMatchMode = iota // match on all paths
	PathWaiterMatch                            // match on specific path
	PathAnyWaiterMatch                         // match on any path
	PathListWaiterMatch                        // match on list of paths
	StatusWaiterMatch                          // match on status code
	ErrorWaiterMatch                           // match on error
)

Modes the waiter will use when inspecting API response to identify target resource states.

func (WaiterMatchMode) String

func (m WaiterMatchMode) String() string

String returns the string representation of the waiter match mode.

type WaiterOption

type WaiterOption func(*Waiter)

A WaiterOption is a function that will update the Waiter value's fields to configure the waiter.

func WithWaiterDelay

func WithWaiterDelay(delayer WaiterDelay) WaiterOption

WithWaiterDelay will set the Waiter to use the WaiterDelay passed in.

func WithWaiterLogger

func WithWaiterLogger(logger Logger) WaiterOption

WithWaiterLogger returns a waiter option to set the logger a waiter should use to log warnings and errors to.

func WithWaiterMaxAttempts

func WithWaiterMaxAttempts(max int) WaiterOption

WithWaiterMaxAttempts returns the maximum number of times the waiter should attempt to check the resource for the target state.

func WithWaiterRequestOptions

func WithWaiterRequestOptions(opts ...Option) WaiterOption

WithWaiterRequestOptions returns a waiter option setting the request options for each request the waiter makes. Appends to waiter's request options already set.

type WaiterState

type WaiterState int

WaiterState are states the waiter uses based on WaiterAcceptor definitions to identify if the resource state the waiter is waiting on has occurred.

const (
	SuccessWaiterState WaiterState = iota // waiter successful
	FailureWaiterState                    // waiter failed
	RetryWaiterState                      // waiter needs to be retried
)

States the waiter acceptors will use to identify target resource states.

func (WaiterState) String

func (s WaiterState) String() string

String returns the string representation of the waiter state.

type WriteAtBuffer

type WriteAtBuffer struct {

	// GrowthCoeff defines the growth rate of the internal buffer. By
	// default, the growth rate is 1, where expanding the internal
	// buffer will allocate only enough capacity to fit the new expected
	// length.
	GrowthCoeff float64
	// contains filtered or unexported fields
}

A WriteAtBuffer provides a in memory buffer supporting the io.WriterAt interface Can be used with the s3manager.Downloader to download content to a buffer in memory. Safe to use concurrently.

func NewWriteAtBuffer

func NewWriteAtBuffer(buf []byte) *WriteAtBuffer

NewWriteAtBuffer creates a WriteAtBuffer with an internal buffer provided by buf.

func (*WriteAtBuffer) Bytes

func (b *WriteAtBuffer) Bytes() []byte

Bytes returns a slice of bytes written to the buffer.

func (*WriteAtBuffer) WriteAt

func (b *WriteAtBuffer) WriteAt(p []byte, pos int64) (n int, err error)

WriteAt writes a slice of bytes to a buffer starting at the position provided The number of bytes written will be returned, or error. Can overwrite previous written slices if the write ats overlap.

Directories

Path Synopsis
Package arn provides a parser for interacting with Amazon Resource Names.
Package arn provides a parser for interacting with Amazon Resource Names.
Package awserr represents API error interface accessors for the SDK.
Package awserr represents API error interface accessors for the SDK.
Package defaults is a collection of helpers to retrieve the SDK's default configuration and handlers.
Package defaults is a collection of helpers to retrieve the SDK's default configuration and handlers.
Package ec2metadata provides the client for making API calls to the EC2 Metadata service.
Package ec2metadata provides the client for making API calls to the EC2 Metadata service.
Package endpointcreds provides support for retrieving credentials from an arbitrary HTTP endpoint.
Package endpointcreds provides support for retrieving credentials from an arbitrary HTTP endpoint.
Package endpoints provides the types and functionality for defining regions and endpoints, as well as querying those definitions.
Package endpoints provides the types and functionality for defining regions and endpoints, as well as querying those definitions.
Package plugincreds implements a credentials provider sourced from a Go plugin.
Package plugincreds implements a credentials provider sourced from a Go plugin.
signer
v2
v4
Package v4 implements signing for AWS V4 signer Provides request signing for request that need to be signed with AWS V4 Signatures.
Package v4 implements signing for AWS V4 signer Provides request signing for request that need to be signed with AWS V4 Signatures.
Package stscreds are credential Providers to retrieve STS AWS credentials.
Package stscreds are credential Providers to retrieve STS AWS credentials.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL