src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

config.go (8873B)


      1 package aws
      2 
      3 import (
      4 	"net/http"
      5 
      6 	smithybearer "github.com/aws/smithy-go/auth/bearer"
      7 	"github.com/aws/smithy-go/logging"
      8 	"github.com/aws/smithy-go/middleware"
      9 )
     10 
     11 // HTTPClient provides the interface to provide custom HTTPClients. Generally
     12 // *http.Client is sufficient for most use cases. The HTTPClient should not
     13 // follow 301 or 302 redirects.
     14 type HTTPClient interface {
     15 	Do(*http.Request) (*http.Response, error)
     16 }
     17 
     18 // A Config provides service configuration for service clients.
     19 type Config struct {
     20 	// The region to send requests to. This parameter is required and must
     21 	// be configured globally or on a per-client basis unless otherwise
     22 	// noted. A full list of regions is found in the "Regions and Endpoints"
     23 	// document.
     24 	//
     25 	// See http://docs.aws.amazon.com/general/latest/gr/rande.html for
     26 	// information on AWS regions.
     27 	Region string
     28 
     29 	// The credentials object to use when signing requests.
     30 	// Use the LoadDefaultConfig to load configuration from all the SDK's supported
     31 	// sources, and resolve credentials using the SDK's default credential chain.
     32 	Credentials CredentialsProvider
     33 
     34 	// The Bearer Authentication token provider to use for authenticating API
     35 	// operation calls with a Bearer Authentication token. The API clients and
     36 	// operation must support Bearer Authentication scheme in order for the
     37 	// token provider to be used. API clients created with NewFromConfig will
     38 	// automatically be configured with this option, if the API client support
     39 	// Bearer Authentication.
     40 	//
     41 	// The SDK's config.LoadDefaultConfig can automatically populate this
     42 	// option for external configuration options such as SSO session.
     43 	// https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html
     44 	BearerAuthTokenProvider smithybearer.TokenProvider
     45 
     46 	// The HTTP Client the SDK's API clients will use to invoke HTTP requests.
     47 	// The SDK defaults to a BuildableClient allowing API clients to create
     48 	// copies of the HTTP Client for service specific customizations.
     49 	//
     50 	// Use a (*http.Client) for custom behavior. Using a custom http.Client
     51 	// will prevent the SDK from modifying the HTTP client.
     52 	HTTPClient HTTPClient
     53 
     54 	// An endpoint resolver that can be used to provide or override an endpoint
     55 	// for the given service and region.
     56 	//
     57 	// See the `aws.EndpointResolver` documentation for additional usage
     58 	// information.
     59 	//
     60 	// Deprecated: See Config.EndpointResolverWithOptions
     61 	EndpointResolver EndpointResolver
     62 
     63 	// An endpoint resolver that can be used to provide or override an endpoint
     64 	// for the given service and region.
     65 	//
     66 	// When EndpointResolverWithOptions is specified, it will be used by a
     67 	// service client rather than using EndpointResolver if also specified.
     68 	//
     69 	// See the `aws.EndpointResolverWithOptions` documentation for additional
     70 	// usage information.
     71 	//
     72 	// Deprecated: with the release of endpoint resolution v2 in API clients,
     73 	// EndpointResolver and EndpointResolverWithOptions are deprecated.
     74 	// Providing a value for this field will likely prevent you from using
     75 	// newer endpoint-related service features. See API client options
     76 	// EndpointResolverV2 and BaseEndpoint.
     77 	EndpointResolverWithOptions EndpointResolverWithOptions
     78 
     79 	// RetryMaxAttempts specifies the maximum number attempts an API client
     80 	// will call an operation that fails with a retryable error.
     81 	//
     82 	// API Clients will only use this value to construct a retryer if the
     83 	// Config.Retryer member is not nil. This value will be ignored if
     84 	// Retryer is not nil.
     85 	RetryMaxAttempts int
     86 
     87 	// RetryMode specifies the retry model the API client will be created with.
     88 	//
     89 	// API Clients will only use this value to construct a retryer if the
     90 	// Config.Retryer member is not nil. This value will be ignored if
     91 	// Retryer is not nil.
     92 	RetryMode RetryMode
     93 
     94 	// Retryer is a function that provides a Retryer implementation. A Retryer
     95 	// guides how HTTP requests should be retried in case of recoverable
     96 	// failures. When nil the API client will use a default retryer.
     97 	//
     98 	// In general, the provider function should return a new instance of a
     99 	// Retryer if you are attempting to provide a consistent Retryer
    100 	// configuration across all clients. This will ensure that each client will
    101 	// be provided a new instance of the Retryer implementation, and will avoid
    102 	// issues such as sharing the same retry token bucket across services.
    103 	//
    104 	// If not nil, RetryMaxAttempts, and RetryMode will be ignored by API
    105 	// clients.
    106 	Retryer func() Retryer
    107 
    108 	// ConfigSources are the sources that were used to construct the Config.
    109 	// Allows for additional configuration to be loaded by clients.
    110 	ConfigSources []interface{}
    111 
    112 	// APIOptions provides the set of middleware mutations modify how the API
    113 	// client requests will be handled. This is useful for adding additional
    114 	// tracing data to a request, or changing behavior of the SDK's client.
    115 	APIOptions []func(*middleware.Stack) error
    116 
    117 	// The logger writer interface to write logging messages to. Defaults to
    118 	// standard error.
    119 	Logger logging.Logger
    120 
    121 	// Configures the events that will be sent to the configured logger. This
    122 	// can be used to configure the logging of signing, retries, request, and
    123 	// responses of the SDK clients.
    124 	//
    125 	// See the ClientLogMode type documentation for the complete set of logging
    126 	// modes and available configuration.
    127 	ClientLogMode ClientLogMode
    128 
    129 	// The configured DefaultsMode. If not specified, service clients will
    130 	// default to legacy.
    131 	//
    132 	// Supported modes are: auto, cross-region, in-region, legacy, mobile,
    133 	// standard
    134 	DefaultsMode DefaultsMode
    135 
    136 	// The RuntimeEnvironment configuration, only populated if the DefaultsMode
    137 	// is set to DefaultsModeAuto and is initialized by
    138 	// `config.LoadDefaultConfig`. You should not populate this structure
    139 	// programmatically, or rely on the values here within your applications.
    140 	RuntimeEnvironment RuntimeEnvironment
    141 
    142 	// AppId is an optional application specific identifier that can be set.
    143 	// When set it will be appended to the User-Agent header of every request
    144 	// in the form of App/{AppId}. This variable is sourced from environment
    145 	// variable AWS_SDK_UA_APP_ID or the shared config profile attribute sdk_ua_app_id.
    146 	// See https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html for
    147 	// more information on environment variables and shared config settings.
    148 	AppID string
    149 
    150 	// BaseEndpoint is an intermediary transfer location to a service specific
    151 	// BaseEndpoint on a service's Options.
    152 	BaseEndpoint *string
    153 
    154 	// DisableRequestCompression toggles if an operation request could be
    155 	// compressed or not. Will be set to false by default. This variable is sourced from
    156 	// environment variable AWS_DISABLE_REQUEST_COMPRESSION or the shared config profile attribute
    157 	// disable_request_compression
    158 	DisableRequestCompression bool
    159 
    160 	// RequestMinCompressSizeBytes sets the inclusive min bytes of a request body that could be
    161 	// compressed. Will be set to 10240 by default and must be within 0 and 10485760 bytes inclusively.
    162 	// This variable is sourced from environment variable AWS_REQUEST_MIN_COMPRESSION_SIZE_BYTES or
    163 	// the shared config profile attribute request_min_compression_size_bytes
    164 	RequestMinCompressSizeBytes int64
    165 }
    166 
    167 // NewConfig returns a new Config pointer that can be chained with builder
    168 // methods to set multiple configuration values inline without using pointers.
    169 func NewConfig() *Config {
    170 	return &Config{}
    171 }
    172 
    173 // Copy will return a shallow copy of the Config object.
    174 func (c Config) Copy() Config {
    175 	cp := c
    176 	return cp
    177 }
    178 
    179 // EndpointDiscoveryEnableState indicates if endpoint discovery is
    180 // enabled, disabled, auto or unset state.
    181 //
    182 // Default behavior (Auto or Unset) indicates operations that require endpoint
    183 // discovery will use Endpoint Discovery by default. Operations that
    184 // optionally use Endpoint Discovery will not use Endpoint Discovery
    185 // unless EndpointDiscovery is explicitly enabled.
    186 type EndpointDiscoveryEnableState uint
    187 
    188 // Enumeration values for EndpointDiscoveryEnableState
    189 const (
    190 	// EndpointDiscoveryUnset represents EndpointDiscoveryEnableState is unset.
    191 	// Users do not need to use this value explicitly. The behavior for unset
    192 	// is the same as for EndpointDiscoveryAuto.
    193 	EndpointDiscoveryUnset EndpointDiscoveryEnableState = iota
    194 
    195 	// EndpointDiscoveryAuto represents an AUTO state that allows endpoint
    196 	// discovery only when required by the api. This is the default
    197 	// configuration resolved by the client if endpoint discovery is neither
    198 	// enabled or disabled.
    199 	EndpointDiscoveryAuto // default state
    200 
    201 	// EndpointDiscoveryDisabled indicates client MUST not perform endpoint
    202 	// discovery even when required.
    203 	EndpointDiscoveryDisabled
    204 
    205 	// EndpointDiscoveryEnabled indicates client MUST always perform endpoint
    206 	// discovery if supported for the operation.
    207 	EndpointDiscoveryEnabled
    208 )