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 )