src

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

load_options.go (39972B)


      1 package config
      2 
      3 import (
      4 	"context"
      5 	"io"
      6 
      7 	"github.com/aws/aws-sdk-go-v2/aws"
      8 	"github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds"
      9 	"github.com/aws/aws-sdk-go-v2/credentials/endpointcreds"
     10 	"github.com/aws/aws-sdk-go-v2/credentials/processcreds"
     11 	"github.com/aws/aws-sdk-go-v2/credentials/ssocreds"
     12 	"github.com/aws/aws-sdk-go-v2/credentials/stscreds"
     13 	"github.com/aws/aws-sdk-go-v2/feature/ec2/imds"
     14 	smithybearer "github.com/aws/smithy-go/auth/bearer"
     15 	"github.com/aws/smithy-go/logging"
     16 	"github.com/aws/smithy-go/middleware"
     17 )
     18 
     19 // LoadOptionsFunc is a type alias for LoadOptions functional option
     20 type LoadOptionsFunc func(*LoadOptions) error
     21 
     22 // LoadOptions are discrete set of options that are valid for loading the
     23 // configuration
     24 type LoadOptions struct {
     25 
     26 	// Region is the region to send requests to.
     27 	Region string
     28 
     29 	// Credentials object to use when signing requests.
     30 	Credentials aws.CredentialsProvider
     31 
     32 	// Token provider for authentication operations with bearer authentication.
     33 	BearerAuthTokenProvider smithybearer.TokenProvider
     34 
     35 	// HTTPClient the SDK's API clients will use to invoke HTTP requests.
     36 	HTTPClient HTTPClient
     37 
     38 	// EndpointResolver that can be used to provide or override an endpoint for
     39 	// the given service and region.
     40 	//
     41 	// See the `aws.EndpointResolver` documentation on usage.
     42 	//
     43 	// Deprecated: See EndpointResolverWithOptions
     44 	EndpointResolver aws.EndpointResolver
     45 
     46 	// EndpointResolverWithOptions that can be used to provide or override an
     47 	// endpoint for the given service and region.
     48 	//
     49 	// See the `aws.EndpointResolverWithOptions` documentation on usage.
     50 	EndpointResolverWithOptions aws.EndpointResolverWithOptions
     51 
     52 	// RetryMaxAttempts specifies the maximum number attempts an API client
     53 	// will call an operation that fails with a retryable error.
     54 	//
     55 	// This value will only be used if Retryer option is nil.
     56 	RetryMaxAttempts int
     57 
     58 	// RetryMode specifies the retry model the API client will be created with.
     59 	//
     60 	// This value will only be used if Retryer option is nil.
     61 	RetryMode aws.RetryMode
     62 
     63 	// Retryer is a function that provides a Retryer implementation. A Retryer
     64 	// guides how HTTP requests should be retried in case of recoverable
     65 	// failures.
     66 	//
     67 	// If not nil, RetryMaxAttempts, and RetryMode will be ignored.
     68 	Retryer func() aws.Retryer
     69 
     70 	// APIOptions provides the set of middleware mutations modify how the API
     71 	// client requests will be handled. This is useful for adding additional
     72 	// tracing data to a request, or changing behavior of the SDK's client.
     73 	APIOptions []func(*middleware.Stack) error
     74 
     75 	// Logger writer interface to write logging messages to.
     76 	Logger logging.Logger
     77 
     78 	// ClientLogMode is used to configure the events that will be sent to the
     79 	// configured logger. This can be used to configure the logging of signing,
     80 	// retries, request, and responses of the SDK clients.
     81 	//
     82 	// See the ClientLogMode type documentation for the complete set of logging
     83 	// modes and available configuration.
     84 	ClientLogMode *aws.ClientLogMode
     85 
     86 	// SharedConfigProfile is the profile to be used when loading the SharedConfig
     87 	SharedConfigProfile string
     88 
     89 	// SharedConfigFiles is the slice of custom shared config files to use when
     90 	// loading the SharedConfig. A non-default profile used within config file
     91 	// must have name defined with prefix 'profile '. eg [profile xyz]
     92 	// indicates a profile with name 'xyz'. To read more on the format of the
     93 	// config file, please refer the documentation at
     94 	// https://docs.aws.amazon.com/credref/latest/refdocs/file-format.html#file-format-config
     95 	//
     96 	// If duplicate profiles are provided within the same, or across multiple
     97 	// shared config files, the next parsed profile will override only the
     98 	// properties that conflict with the previously defined profile. Note that
     99 	// if duplicate profiles are provided within the SharedCredentialsFiles and
    100 	// SharedConfigFiles, the properties defined in shared credentials file
    101 	// take precedence.
    102 	SharedConfigFiles []string
    103 
    104 	// SharedCredentialsFile is the slice of custom shared credentials files to
    105 	// use when loading the SharedConfig. The profile name used within
    106 	// credentials file must not prefix 'profile '. eg [xyz] indicates a
    107 	// profile with name 'xyz'. Profile declared as [profile xyz] will be
    108 	// ignored. To read more on the format of the credentials file, please
    109 	// refer the documentation at
    110 	// https://docs.aws.amazon.com/credref/latest/refdocs/file-format.html#file-format-creds
    111 	//
    112 	// If duplicate profiles are provided with a same, or across multiple
    113 	// shared credentials files, the next parsed profile will override only
    114 	// properties that conflict with the previously defined profile. Note that
    115 	// if duplicate profiles are provided within the SharedCredentialsFiles and
    116 	// SharedConfigFiles, the properties defined in shared credentials file
    117 	// take precedence.
    118 	SharedCredentialsFiles []string
    119 
    120 	// CustomCABundle is CA bundle PEM bytes reader
    121 	CustomCABundle io.Reader
    122 
    123 	// DefaultRegion is the fall back region, used if a region was not resolved
    124 	// from other sources
    125 	DefaultRegion string
    126 
    127 	// UseEC2IMDSRegion indicates if SDK should retrieve the region
    128 	// from the EC2 Metadata service
    129 	UseEC2IMDSRegion *UseEC2IMDSRegion
    130 
    131 	// CredentialsCacheOptions is a function for setting the
    132 	// aws.CredentialsCacheOptions
    133 	CredentialsCacheOptions func(*aws.CredentialsCacheOptions)
    134 
    135 	// BearerAuthTokenCacheOptions is a function for setting the smithy-go
    136 	// auth/bearer#TokenCacheOptions
    137 	BearerAuthTokenCacheOptions func(*smithybearer.TokenCacheOptions)
    138 
    139 	// SSOTokenProviderOptions is a function for setting the
    140 	// credentials/ssocreds.SSOTokenProviderOptions
    141 	SSOTokenProviderOptions func(*ssocreds.SSOTokenProviderOptions)
    142 
    143 	// ProcessCredentialOptions is a function for setting
    144 	// the processcreds.Options
    145 	ProcessCredentialOptions func(*processcreds.Options)
    146 
    147 	// EC2RoleCredentialOptions is a function for setting
    148 	// the ec2rolecreds.Options
    149 	EC2RoleCredentialOptions func(*ec2rolecreds.Options)
    150 
    151 	// EndpointCredentialOptions is a function for setting
    152 	// the endpointcreds.Options
    153 	EndpointCredentialOptions func(*endpointcreds.Options)
    154 
    155 	// WebIdentityRoleCredentialOptions is a function for setting
    156 	// the stscreds.WebIdentityRoleOptions
    157 	WebIdentityRoleCredentialOptions func(*stscreds.WebIdentityRoleOptions)
    158 
    159 	// AssumeRoleCredentialOptions is a function for setting the
    160 	// stscreds.AssumeRoleOptions
    161 	AssumeRoleCredentialOptions func(*stscreds.AssumeRoleOptions)
    162 
    163 	// SSOProviderOptions is a function for setting
    164 	// the ssocreds.Options
    165 	SSOProviderOptions func(options *ssocreds.Options)
    166 
    167 	// LogConfigurationWarnings when set to true, enables logging
    168 	// configuration warnings
    169 	LogConfigurationWarnings *bool
    170 
    171 	// S3UseARNRegion specifies if the S3 service should allow ARNs to direct
    172 	// the region, the client's requests are sent to.
    173 	S3UseARNRegion *bool
    174 
    175 	// S3DisableMultiRegionAccessPoints specifies if the S3 service should disable
    176 	// the S3 Multi-Region access points feature.
    177 	S3DisableMultiRegionAccessPoints *bool
    178 
    179 	// EnableEndpointDiscovery specifies if endpoint discovery is enable for
    180 	// the client.
    181 	EnableEndpointDiscovery aws.EndpointDiscoveryEnableState
    182 
    183 	// Specifies if the EC2 IMDS service client is enabled.
    184 	//
    185 	// AWS_EC2_METADATA_DISABLED=true
    186 	EC2IMDSClientEnableState imds.ClientEnableState
    187 
    188 	// Specifies the EC2 Instance Metadata Service default endpoint selection
    189 	// mode (IPv4 or IPv6)
    190 	EC2IMDSEndpointMode imds.EndpointModeState
    191 
    192 	// Specifies the EC2 Instance Metadata Service endpoint to use. If
    193 	// specified it overrides EC2IMDSEndpointMode.
    194 	EC2IMDSEndpoint string
    195 
    196 	// Specifies that SDK clients must resolve a dual-stack endpoint for
    197 	// services.
    198 	UseDualStackEndpoint aws.DualStackEndpointState
    199 
    200 	// Specifies that SDK clients must resolve a FIPS endpoint for
    201 	// services.
    202 	UseFIPSEndpoint aws.FIPSEndpointState
    203 
    204 	// Specifies the SDK configuration mode for defaults.
    205 	DefaultsModeOptions DefaultsModeOptions
    206 
    207 	// The sdk app ID retrieved from env var or shared config to be added to request user agent header
    208 	AppID string
    209 
    210 	// Specifies whether an operation request could be compressed
    211 	DisableRequestCompression *bool
    212 
    213 	// The inclusive min bytes of a request body that could be compressed
    214 	RequestMinCompressSizeBytes *int64
    215 
    216 	// Whether S3 Express auth is disabled.
    217 	S3DisableExpressAuth *bool
    218 }
    219 
    220 func (o LoadOptions) getDefaultsMode(ctx context.Context) (aws.DefaultsMode, bool, error) {
    221 	if len(o.DefaultsModeOptions.Mode) == 0 {
    222 		return "", false, nil
    223 	}
    224 	return o.DefaultsModeOptions.Mode, true, nil
    225 }
    226 
    227 // GetRetryMaxAttempts returns the RetryMaxAttempts if specified in the
    228 // LoadOptions and not 0.
    229 func (o LoadOptions) GetRetryMaxAttempts(ctx context.Context) (int, bool, error) {
    230 	if o.RetryMaxAttempts == 0 {
    231 		return 0, false, nil
    232 	}
    233 	return o.RetryMaxAttempts, true, nil
    234 }
    235 
    236 // GetRetryMode returns the RetryMode specified in the LoadOptions.
    237 func (o LoadOptions) GetRetryMode(ctx context.Context) (aws.RetryMode, bool, error) {
    238 	if len(o.RetryMode) == 0 {
    239 		return "", false, nil
    240 	}
    241 	return o.RetryMode, true, nil
    242 }
    243 
    244 func (o LoadOptions) getDefaultsModeIMDSClient(ctx context.Context) (*imds.Client, bool, error) {
    245 	if o.DefaultsModeOptions.IMDSClient == nil {
    246 		return nil, false, nil
    247 	}
    248 	return o.DefaultsModeOptions.IMDSClient, true, nil
    249 }
    250 
    251 // getRegion returns Region from config's LoadOptions
    252 func (o LoadOptions) getRegion(ctx context.Context) (string, bool, error) {
    253 	if len(o.Region) == 0 {
    254 		return "", false, nil
    255 	}
    256 
    257 	return o.Region, true, nil
    258 }
    259 
    260 // getAppID returns AppID from config's LoadOptions
    261 func (o LoadOptions) getAppID(ctx context.Context) (string, bool, error) {
    262 	return o.AppID, len(o.AppID) > 0, nil
    263 }
    264 
    265 // getDisableRequestCompression returns DisableRequestCompression from config's LoadOptions
    266 func (o LoadOptions) getDisableRequestCompression(ctx context.Context) (bool, bool, error) {
    267 	if o.DisableRequestCompression == nil {
    268 		return false, false, nil
    269 	}
    270 	return *o.DisableRequestCompression, true, nil
    271 }
    272 
    273 // getRequestMinCompressSizeBytes returns RequestMinCompressSizeBytes from config's LoadOptions
    274 func (o LoadOptions) getRequestMinCompressSizeBytes(ctx context.Context) (int64, bool, error) {
    275 	if o.RequestMinCompressSizeBytes == nil {
    276 		return 0, false, nil
    277 	}
    278 	return *o.RequestMinCompressSizeBytes, true, nil
    279 }
    280 
    281 // WithRegion is a helper function to construct functional options
    282 // that sets Region on config's LoadOptions. Setting the region to
    283 // an empty string, will result in the region value being ignored.
    284 // If multiple WithRegion calls are made, the last call overrides
    285 // the previous call values.
    286 func WithRegion(v string) LoadOptionsFunc {
    287 	return func(o *LoadOptions) error {
    288 		o.Region = v
    289 		return nil
    290 	}
    291 }
    292 
    293 // WithAppID is a helper function to construct functional options
    294 // that sets AppID on config's LoadOptions.
    295 func WithAppID(ID string) LoadOptionsFunc {
    296 	return func(o *LoadOptions) error {
    297 		o.AppID = ID
    298 		return nil
    299 	}
    300 }
    301 
    302 // WithDisableRequestCompression is a helper function to construct functional options
    303 // that sets DisableRequestCompression on config's LoadOptions.
    304 func WithDisableRequestCompression(DisableRequestCompression *bool) LoadOptionsFunc {
    305 	return func(o *LoadOptions) error {
    306 		if DisableRequestCompression == nil {
    307 			return nil
    308 		}
    309 		o.DisableRequestCompression = DisableRequestCompression
    310 		return nil
    311 	}
    312 }
    313 
    314 // WithRequestMinCompressSizeBytes is a helper function to construct functional options
    315 // that sets RequestMinCompressSizeBytes on config's LoadOptions.
    316 func WithRequestMinCompressSizeBytes(RequestMinCompressSizeBytes *int64) LoadOptionsFunc {
    317 	return func(o *LoadOptions) error {
    318 		if RequestMinCompressSizeBytes == nil {
    319 			return nil
    320 		}
    321 		o.RequestMinCompressSizeBytes = RequestMinCompressSizeBytes
    322 		return nil
    323 	}
    324 }
    325 
    326 // getDefaultRegion returns DefaultRegion from config's LoadOptions
    327 func (o LoadOptions) getDefaultRegion(ctx context.Context) (string, bool, error) {
    328 	if len(o.DefaultRegion) == 0 {
    329 		return "", false, nil
    330 	}
    331 
    332 	return o.DefaultRegion, true, nil
    333 }
    334 
    335 // WithDefaultRegion is a helper function to construct functional options
    336 // that sets a DefaultRegion on config's LoadOptions. Setting the default
    337 // region to an empty string, will result in the default region value
    338 // being ignored. If multiple WithDefaultRegion calls are made, the last
    339 // call overrides the previous call values. Note that both WithRegion and
    340 // WithEC2IMDSRegion call takes precedence over WithDefaultRegion call
    341 // when resolving region.
    342 func WithDefaultRegion(v string) LoadOptionsFunc {
    343 	return func(o *LoadOptions) error {
    344 		o.DefaultRegion = v
    345 		return nil
    346 	}
    347 }
    348 
    349 // getSharedConfigProfile returns SharedConfigProfile from config's LoadOptions
    350 func (o LoadOptions) getSharedConfigProfile(ctx context.Context) (string, bool, error) {
    351 	if len(o.SharedConfigProfile) == 0 {
    352 		return "", false, nil
    353 	}
    354 
    355 	return o.SharedConfigProfile, true, nil
    356 }
    357 
    358 // WithSharedConfigProfile is a helper function to construct functional options
    359 // that sets SharedConfigProfile on config's LoadOptions. Setting the shared
    360 // config profile to an empty string, will result in the shared config profile
    361 // value being ignored.
    362 // If multiple WithSharedConfigProfile calls are made, the last call overrides
    363 // the previous call values.
    364 func WithSharedConfigProfile(v string) LoadOptionsFunc {
    365 	return func(o *LoadOptions) error {
    366 		o.SharedConfigProfile = v
    367 		return nil
    368 	}
    369 }
    370 
    371 // getSharedConfigFiles returns SharedConfigFiles set on config's LoadOptions
    372 func (o LoadOptions) getSharedConfigFiles(ctx context.Context) ([]string, bool, error) {
    373 	if o.SharedConfigFiles == nil {
    374 		return nil, false, nil
    375 	}
    376 
    377 	return o.SharedConfigFiles, true, nil
    378 }
    379 
    380 // WithSharedConfigFiles is a helper function to construct functional options
    381 // that sets slice of SharedConfigFiles on config's LoadOptions.
    382 // Setting the shared config files to an nil string slice, will result in the
    383 // shared config files value being ignored.
    384 // If multiple WithSharedConfigFiles calls are made, the last call overrides
    385 // the previous call values.
    386 func WithSharedConfigFiles(v []string) LoadOptionsFunc {
    387 	return func(o *LoadOptions) error {
    388 		o.SharedConfigFiles = v
    389 		return nil
    390 	}
    391 }
    392 
    393 // getSharedCredentialsFiles returns SharedCredentialsFiles set on config's LoadOptions
    394 func (o LoadOptions) getSharedCredentialsFiles(ctx context.Context) ([]string, bool, error) {
    395 	if o.SharedCredentialsFiles == nil {
    396 		return nil, false, nil
    397 	}
    398 
    399 	return o.SharedCredentialsFiles, true, nil
    400 }
    401 
    402 // WithSharedCredentialsFiles is a helper function to construct functional options
    403 // that sets slice of SharedCredentialsFiles on config's LoadOptions.
    404 // Setting the shared credentials files to an nil string slice, will result in the
    405 // shared credentials files value being ignored.
    406 // If multiple WithSharedCredentialsFiles calls are made, the last call overrides
    407 // the previous call values.
    408 func WithSharedCredentialsFiles(v []string) LoadOptionsFunc {
    409 	return func(o *LoadOptions) error {
    410 		o.SharedCredentialsFiles = v
    411 		return nil
    412 	}
    413 }
    414 
    415 // getCustomCABundle returns CustomCABundle from LoadOptions
    416 func (o LoadOptions) getCustomCABundle(ctx context.Context) (io.Reader, bool, error) {
    417 	if o.CustomCABundle == nil {
    418 		return nil, false, nil
    419 	}
    420 
    421 	return o.CustomCABundle, true, nil
    422 }
    423 
    424 // WithCustomCABundle is a helper function to construct functional options
    425 // that sets CustomCABundle on config's LoadOptions. Setting the custom CA Bundle
    426 // to nil will result in custom CA Bundle value being ignored.
    427 // If multiple WithCustomCABundle calls are made, the last call overrides the
    428 // previous call values.
    429 func WithCustomCABundle(v io.Reader) LoadOptionsFunc {
    430 	return func(o *LoadOptions) error {
    431 		o.CustomCABundle = v
    432 		return nil
    433 	}
    434 }
    435 
    436 // UseEC2IMDSRegion provides a regionProvider that retrieves the region
    437 // from the EC2 Metadata service.
    438 type UseEC2IMDSRegion struct {
    439 	// If unset will default to generic EC2 IMDS client.
    440 	Client *imds.Client
    441 }
    442 
    443 // getRegion attempts to retrieve the region from EC2 Metadata service.
    444 func (p *UseEC2IMDSRegion) getRegion(ctx context.Context) (string, bool, error) {
    445 	if ctx == nil {
    446 		ctx = context.Background()
    447 	}
    448 
    449 	client := p.Client
    450 	if client == nil {
    451 		client = imds.New(imds.Options{})
    452 	}
    453 
    454 	result, err := client.GetRegion(ctx, nil)
    455 	if err != nil {
    456 		return "", false, err
    457 	}
    458 	if len(result.Region) != 0 {
    459 		return result.Region, true, nil
    460 	}
    461 	return "", false, nil
    462 }
    463 
    464 // getEC2IMDSRegion returns the value of EC2 IMDS region.
    465 func (o LoadOptions) getEC2IMDSRegion(ctx context.Context) (string, bool, error) {
    466 	if o.UseEC2IMDSRegion == nil {
    467 		return "", false, nil
    468 	}
    469 
    470 	return o.UseEC2IMDSRegion.getRegion(ctx)
    471 }
    472 
    473 // WithEC2IMDSRegion is a helper function to construct functional options
    474 // that enables resolving EC2IMDS region. The function takes
    475 // in a UseEC2IMDSRegion functional option, and can be used to set the
    476 // EC2IMDS client which will be used to resolve EC2IMDSRegion.
    477 // If no functional option is provided, an EC2IMDS client is built and used
    478 // by the resolver. If multiple WithEC2IMDSRegion calls are made, the last
    479 // call overrides the previous call values. Note that the WithRegion calls takes
    480 // precedence over WithEC2IMDSRegion when resolving region.
    481 func WithEC2IMDSRegion(fnOpts ...func(o *UseEC2IMDSRegion)) LoadOptionsFunc {
    482 	return func(o *LoadOptions) error {
    483 		o.UseEC2IMDSRegion = &UseEC2IMDSRegion{}
    484 
    485 		for _, fn := range fnOpts {
    486 			fn(o.UseEC2IMDSRegion)
    487 		}
    488 		return nil
    489 	}
    490 }
    491 
    492 // getCredentialsProvider returns the credentials value
    493 func (o LoadOptions) getCredentialsProvider(ctx context.Context) (aws.CredentialsProvider, bool, error) {
    494 	if o.Credentials == nil {
    495 		return nil, false, nil
    496 	}
    497 
    498 	return o.Credentials, true, nil
    499 }
    500 
    501 // WithCredentialsProvider is a helper function to construct functional options
    502 // that sets Credential provider value on config's LoadOptions. If credentials
    503 // provider is set to nil, the credentials provider value will be ignored.
    504 // If multiple WithCredentialsProvider calls are made, the last call overrides
    505 // the previous call values.
    506 func WithCredentialsProvider(v aws.CredentialsProvider) LoadOptionsFunc {
    507 	return func(o *LoadOptions) error {
    508 		o.Credentials = v
    509 		return nil
    510 	}
    511 }
    512 
    513 // getCredentialsCacheOptionsProvider returns the wrapped function to set aws.CredentialsCacheOptions
    514 func (o LoadOptions) getCredentialsCacheOptions(ctx context.Context) (func(*aws.CredentialsCacheOptions), bool, error) {
    515 	if o.CredentialsCacheOptions == nil {
    516 		return nil, false, nil
    517 	}
    518 
    519 	return o.CredentialsCacheOptions, true, nil
    520 }
    521 
    522 // WithCredentialsCacheOptions is a helper function to construct functional
    523 // options that sets a function to modify the aws.CredentialsCacheOptions the
    524 // aws.CredentialsCache will be configured with, if the CredentialsCache is used
    525 // by the configuration loader.
    526 //
    527 // If multiple WithCredentialsCacheOptions calls are made, the last call
    528 // overrides the previous call values.
    529 func WithCredentialsCacheOptions(v func(*aws.CredentialsCacheOptions)) LoadOptionsFunc {
    530 	return func(o *LoadOptions) error {
    531 		o.CredentialsCacheOptions = v
    532 		return nil
    533 	}
    534 }
    535 
    536 // getBearerAuthTokenProvider returns the credentials value
    537 func (o LoadOptions) getBearerAuthTokenProvider(ctx context.Context) (smithybearer.TokenProvider, bool, error) {
    538 	if o.BearerAuthTokenProvider == nil {
    539 		return nil, false, nil
    540 	}
    541 
    542 	return o.BearerAuthTokenProvider, true, nil
    543 }
    544 
    545 // WithBearerAuthTokenProvider is a helper function to construct functional options
    546 // that sets Credential provider value on config's LoadOptions. If credentials
    547 // provider is set to nil, the credentials provider value will be ignored.
    548 // If multiple WithBearerAuthTokenProvider calls are made, the last call overrides
    549 // the previous call values.
    550 func WithBearerAuthTokenProvider(v smithybearer.TokenProvider) LoadOptionsFunc {
    551 	return func(o *LoadOptions) error {
    552 		o.BearerAuthTokenProvider = v
    553 		return nil
    554 	}
    555 }
    556 
    557 // getBearerAuthTokenCacheOptionsProvider returns the wrapped function to set smithybearer.TokenCacheOptions
    558 func (o LoadOptions) getBearerAuthTokenCacheOptions(ctx context.Context) (func(*smithybearer.TokenCacheOptions), bool, error) {
    559 	if o.BearerAuthTokenCacheOptions == nil {
    560 		return nil, false, nil
    561 	}
    562 
    563 	return o.BearerAuthTokenCacheOptions, true, nil
    564 }
    565 
    566 // WithBearerAuthTokenCacheOptions is a helper function to construct functional options
    567 // that sets a function to modify the TokenCacheOptions the smithy-go
    568 // auth/bearer#TokenCache will be configured with, if the TokenCache is used by
    569 // the configuration loader.
    570 //
    571 // If multiple WithBearerAuthTokenCacheOptions calls are made, the last call overrides
    572 // the previous call values.
    573 func WithBearerAuthTokenCacheOptions(v func(*smithybearer.TokenCacheOptions)) LoadOptionsFunc {
    574 	return func(o *LoadOptions) error {
    575 		o.BearerAuthTokenCacheOptions = v
    576 		return nil
    577 	}
    578 }
    579 
    580 // getSSOTokenProviderOptionsProvider returns the wrapped function to set smithybearer.TokenCacheOptions
    581 func (o LoadOptions) getSSOTokenProviderOptions(ctx context.Context) (func(*ssocreds.SSOTokenProviderOptions), bool, error) {
    582 	if o.SSOTokenProviderOptions == nil {
    583 		return nil, false, nil
    584 	}
    585 
    586 	return o.SSOTokenProviderOptions, true, nil
    587 }
    588 
    589 // WithSSOTokenProviderOptions is a helper function to construct functional
    590 // options that sets a function to modify the SSOtokenProviderOptions the SDK's
    591 // credentials/ssocreds#SSOProvider will be configured with, if the
    592 // SSOTokenProvider is used by the configuration loader.
    593 //
    594 // If multiple WithSSOTokenProviderOptions calls are made, the last call overrides
    595 // the previous call values.
    596 func WithSSOTokenProviderOptions(v func(*ssocreds.SSOTokenProviderOptions)) LoadOptionsFunc {
    597 	return func(o *LoadOptions) error {
    598 		o.SSOTokenProviderOptions = v
    599 		return nil
    600 	}
    601 }
    602 
    603 // getProcessCredentialOptions returns the wrapped function to set processcreds.Options
    604 func (o LoadOptions) getProcessCredentialOptions(ctx context.Context) (func(*processcreds.Options), bool, error) {
    605 	if o.ProcessCredentialOptions == nil {
    606 		return nil, false, nil
    607 	}
    608 
    609 	return o.ProcessCredentialOptions, true, nil
    610 }
    611 
    612 // WithProcessCredentialOptions is a helper function to construct functional options
    613 // that sets a function to use processcreds.Options on config's LoadOptions.
    614 // If process credential options is set to nil, the process credential value will
    615 // be ignored. If multiple WithProcessCredentialOptions calls are made, the last call
    616 // overrides the previous call values.
    617 func WithProcessCredentialOptions(v func(*processcreds.Options)) LoadOptionsFunc {
    618 	return func(o *LoadOptions) error {
    619 		o.ProcessCredentialOptions = v
    620 		return nil
    621 	}
    622 }
    623 
    624 // getEC2RoleCredentialOptions returns the wrapped function to set the ec2rolecreds.Options
    625 func (o LoadOptions) getEC2RoleCredentialOptions(ctx context.Context) (func(*ec2rolecreds.Options), bool, error) {
    626 	if o.EC2RoleCredentialOptions == nil {
    627 		return nil, false, nil
    628 	}
    629 
    630 	return o.EC2RoleCredentialOptions, true, nil
    631 }
    632 
    633 // WithEC2RoleCredentialOptions is a helper function to construct functional options
    634 // that sets a function to use ec2rolecreds.Options on config's LoadOptions. If
    635 // EC2 role credential options is set to nil, the EC2 role credential options value
    636 // will be ignored. If multiple WithEC2RoleCredentialOptions calls are made,
    637 // the last call overrides the previous call values.
    638 func WithEC2RoleCredentialOptions(v func(*ec2rolecreds.Options)) LoadOptionsFunc {
    639 	return func(o *LoadOptions) error {
    640 		o.EC2RoleCredentialOptions = v
    641 		return nil
    642 	}
    643 }
    644 
    645 // getEndpointCredentialOptions returns the wrapped function to set endpointcreds.Options
    646 func (o LoadOptions) getEndpointCredentialOptions(context.Context) (func(*endpointcreds.Options), bool, error) {
    647 	if o.EndpointCredentialOptions == nil {
    648 		return nil, false, nil
    649 	}
    650 
    651 	return o.EndpointCredentialOptions, true, nil
    652 }
    653 
    654 // WithEndpointCredentialOptions is a helper function to construct functional options
    655 // that sets a function to use endpointcreds.Options on config's LoadOptions. If
    656 // endpoint credential options is set to nil, the endpoint credential options
    657 // value will be ignored. If multiple WithEndpointCredentialOptions calls are made,
    658 // the last call overrides the previous call values.
    659 func WithEndpointCredentialOptions(v func(*endpointcreds.Options)) LoadOptionsFunc {
    660 	return func(o *LoadOptions) error {
    661 		o.EndpointCredentialOptions = v
    662 		return nil
    663 	}
    664 }
    665 
    666 // getWebIdentityRoleCredentialOptions returns the wrapped function
    667 func (o LoadOptions) getWebIdentityRoleCredentialOptions(context.Context) (func(*stscreds.WebIdentityRoleOptions), bool, error) {
    668 	if o.WebIdentityRoleCredentialOptions == nil {
    669 		return nil, false, nil
    670 	}
    671 
    672 	return o.WebIdentityRoleCredentialOptions, true, nil
    673 }
    674 
    675 // WithWebIdentityRoleCredentialOptions is a helper function to construct
    676 // functional options that sets a function to use stscreds.WebIdentityRoleOptions
    677 // on config's LoadOptions. If web identity role credentials options is set to nil,
    678 // the web identity role credentials value will be ignored. If multiple
    679 // WithWebIdentityRoleCredentialOptions calls are made, the last call
    680 // overrides the previous call values.
    681 func WithWebIdentityRoleCredentialOptions(v func(*stscreds.WebIdentityRoleOptions)) LoadOptionsFunc {
    682 	return func(o *LoadOptions) error {
    683 		o.WebIdentityRoleCredentialOptions = v
    684 		return nil
    685 	}
    686 }
    687 
    688 // getAssumeRoleCredentialOptions returns AssumeRoleCredentialOptions from LoadOptions
    689 func (o LoadOptions) getAssumeRoleCredentialOptions(context.Context) (func(options *stscreds.AssumeRoleOptions), bool, error) {
    690 	if o.AssumeRoleCredentialOptions == nil {
    691 		return nil, false, nil
    692 	}
    693 
    694 	return o.AssumeRoleCredentialOptions, true, nil
    695 }
    696 
    697 // WithAssumeRoleCredentialOptions  is a helper function to construct
    698 // functional options that sets a function to use stscreds.AssumeRoleOptions
    699 // on config's LoadOptions. If assume role credentials options is set to nil,
    700 // the assume role credentials value will be ignored. If multiple
    701 // WithAssumeRoleCredentialOptions calls are made, the last call overrides
    702 // the previous call values.
    703 func WithAssumeRoleCredentialOptions(v func(*stscreds.AssumeRoleOptions)) LoadOptionsFunc {
    704 	return func(o *LoadOptions) error {
    705 		o.AssumeRoleCredentialOptions = v
    706 		return nil
    707 	}
    708 }
    709 
    710 func (o LoadOptions) getHTTPClient(ctx context.Context) (HTTPClient, bool, error) {
    711 	if o.HTTPClient == nil {
    712 		return nil, false, nil
    713 	}
    714 
    715 	return o.HTTPClient, true, nil
    716 }
    717 
    718 // WithHTTPClient is a helper function to construct functional options
    719 // that sets HTTPClient on LoadOptions. If HTTPClient is set to nil,
    720 // the HTTPClient value will be ignored.
    721 // If multiple WithHTTPClient calls are made, the last call overrides
    722 // the previous call values.
    723 func WithHTTPClient(v HTTPClient) LoadOptionsFunc {
    724 	return func(o *LoadOptions) error {
    725 		o.HTTPClient = v
    726 		return nil
    727 	}
    728 }
    729 
    730 func (o LoadOptions) getAPIOptions(ctx context.Context) ([]func(*middleware.Stack) error, bool, error) {
    731 	if o.APIOptions == nil {
    732 		return nil, false, nil
    733 	}
    734 
    735 	return o.APIOptions, true, nil
    736 }
    737 
    738 // WithAPIOptions is a helper function to construct functional options
    739 // that sets APIOptions on LoadOptions. If APIOptions is set to nil, the
    740 // APIOptions value is ignored. If multiple WithAPIOptions calls are
    741 // made, the last call overrides the previous call values.
    742 func WithAPIOptions(v []func(*middleware.Stack) error) LoadOptionsFunc {
    743 	return func(o *LoadOptions) error {
    744 		if v == nil {
    745 			return nil
    746 		}
    747 
    748 		o.APIOptions = append(o.APIOptions, v...)
    749 		return nil
    750 	}
    751 }
    752 
    753 func (o LoadOptions) getRetryMaxAttempts(ctx context.Context) (int, bool, error) {
    754 	if o.RetryMaxAttempts == 0 {
    755 		return 0, false, nil
    756 	}
    757 
    758 	return o.RetryMaxAttempts, true, nil
    759 }
    760 
    761 // WithRetryMaxAttempts is a helper function to construct functional options that sets
    762 // RetryMaxAttempts on LoadOptions. If RetryMaxAttempts is unset, the RetryMaxAttempts value is
    763 // ignored. If multiple WithRetryMaxAttempts calls are made, the last call overrides
    764 // the previous call values.
    765 //
    766 // Will be ignored of LoadOptions.Retryer or WithRetryer are used.
    767 func WithRetryMaxAttempts(v int) LoadOptionsFunc {
    768 	return func(o *LoadOptions) error {
    769 		o.RetryMaxAttempts = v
    770 		return nil
    771 	}
    772 }
    773 
    774 func (o LoadOptions) getRetryMode(ctx context.Context) (aws.RetryMode, bool, error) {
    775 	if o.RetryMode == "" {
    776 		return "", false, nil
    777 	}
    778 
    779 	return o.RetryMode, true, nil
    780 }
    781 
    782 // WithRetryMode is a helper function to construct functional options that sets
    783 // RetryMode on LoadOptions. If RetryMode is unset, the RetryMode value is
    784 // ignored. If multiple WithRetryMode calls are made, the last call overrides
    785 // the previous call values.
    786 //
    787 // Will be ignored of LoadOptions.Retryer or WithRetryer are used.
    788 func WithRetryMode(v aws.RetryMode) LoadOptionsFunc {
    789 	return func(o *LoadOptions) error {
    790 		o.RetryMode = v
    791 		return nil
    792 	}
    793 }
    794 
    795 func (o LoadOptions) getRetryer(ctx context.Context) (func() aws.Retryer, bool, error) {
    796 	if o.Retryer == nil {
    797 		return nil, false, nil
    798 	}
    799 
    800 	return o.Retryer, true, nil
    801 }
    802 
    803 // WithRetryer is a helper function to construct functional options
    804 // that sets Retryer on LoadOptions. If Retryer is set to nil, the
    805 // Retryer value is ignored. If multiple WithRetryer calls are
    806 // made, the last call overrides the previous call values.
    807 func WithRetryer(v func() aws.Retryer) LoadOptionsFunc {
    808 	return func(o *LoadOptions) error {
    809 		o.Retryer = v
    810 		return nil
    811 	}
    812 }
    813 
    814 func (o LoadOptions) getEndpointResolver(ctx context.Context) (aws.EndpointResolver, bool, error) {
    815 	if o.EndpointResolver == nil {
    816 		return nil, false, nil
    817 	}
    818 
    819 	return o.EndpointResolver, true, nil
    820 }
    821 
    822 // WithEndpointResolver is a helper function to construct functional options
    823 // that sets the EndpointResolver on LoadOptions. If the EndpointResolver is set to nil,
    824 // the EndpointResolver value is ignored. If multiple WithEndpointResolver calls
    825 // are made, the last call overrides the previous call values.
    826 //
    827 // Deprecated: See WithEndpointResolverWithOptions
    828 func WithEndpointResolver(v aws.EndpointResolver) LoadOptionsFunc {
    829 	return func(o *LoadOptions) error {
    830 		o.EndpointResolver = v
    831 		return nil
    832 	}
    833 }
    834 
    835 func (o LoadOptions) getEndpointResolverWithOptions(ctx context.Context) (aws.EndpointResolverWithOptions, bool, error) {
    836 	if o.EndpointResolverWithOptions == nil {
    837 		return nil, false, nil
    838 	}
    839 
    840 	return o.EndpointResolverWithOptions, true, nil
    841 }
    842 
    843 // WithEndpointResolverWithOptions is a helper function to construct functional options
    844 // that sets the EndpointResolverWithOptions on LoadOptions. If the EndpointResolverWithOptions is set to nil,
    845 // the EndpointResolver value is ignored. If multiple WithEndpointResolver calls
    846 // are made, the last call overrides the previous call values.
    847 func WithEndpointResolverWithOptions(v aws.EndpointResolverWithOptions) LoadOptionsFunc {
    848 	return func(o *LoadOptions) error {
    849 		o.EndpointResolverWithOptions = v
    850 		return nil
    851 	}
    852 }
    853 
    854 func (o LoadOptions) getLogger(ctx context.Context) (logging.Logger, bool, error) {
    855 	if o.Logger == nil {
    856 		return nil, false, nil
    857 	}
    858 
    859 	return o.Logger, true, nil
    860 }
    861 
    862 // WithLogger is a helper function to construct functional options
    863 // that sets Logger on LoadOptions. If Logger is set to nil, the
    864 // Logger value will be ignored. If multiple WithLogger calls are made,
    865 // the last call overrides the previous call values.
    866 func WithLogger(v logging.Logger) LoadOptionsFunc {
    867 	return func(o *LoadOptions) error {
    868 		o.Logger = v
    869 		return nil
    870 	}
    871 }
    872 
    873 func (o LoadOptions) getClientLogMode(ctx context.Context) (aws.ClientLogMode, bool, error) {
    874 	if o.ClientLogMode == nil {
    875 		return 0, false, nil
    876 	}
    877 
    878 	return *o.ClientLogMode, true, nil
    879 }
    880 
    881 // WithClientLogMode is a helper function to construct functional options
    882 // that sets client log mode on LoadOptions. If client log mode is set to nil,
    883 // the client log mode value will be ignored. If multiple WithClientLogMode calls are made,
    884 // the last call overrides the previous call values.
    885 func WithClientLogMode(v aws.ClientLogMode) LoadOptionsFunc {
    886 	return func(o *LoadOptions) error {
    887 		o.ClientLogMode = &v
    888 		return nil
    889 	}
    890 }
    891 
    892 func (o LoadOptions) getLogConfigurationWarnings(ctx context.Context) (v bool, found bool, err error) {
    893 	if o.LogConfigurationWarnings == nil {
    894 		return false, false, nil
    895 	}
    896 	return *o.LogConfigurationWarnings, true, nil
    897 }
    898 
    899 // WithLogConfigurationWarnings is a helper function to construct
    900 // functional options that can be used to set LogConfigurationWarnings
    901 // on LoadOptions.
    902 //
    903 // If multiple WithLogConfigurationWarnings calls are made, the last call
    904 // overrides the previous call values.
    905 func WithLogConfigurationWarnings(v bool) LoadOptionsFunc {
    906 	return func(o *LoadOptions) error {
    907 		o.LogConfigurationWarnings = &v
    908 		return nil
    909 	}
    910 }
    911 
    912 // GetS3UseARNRegion returns whether to allow ARNs to direct the region
    913 // the S3 client's requests are sent to.
    914 func (o LoadOptions) GetS3UseARNRegion(ctx context.Context) (v bool, found bool, err error) {
    915 	if o.S3UseARNRegion == nil {
    916 		return false, false, nil
    917 	}
    918 	return *o.S3UseARNRegion, true, nil
    919 }
    920 
    921 // WithS3UseARNRegion is a helper function to construct functional options
    922 // that can be used to set S3UseARNRegion on LoadOptions.
    923 // If multiple WithS3UseARNRegion calls are made, the last call overrides
    924 // the previous call values.
    925 func WithS3UseARNRegion(v bool) LoadOptionsFunc {
    926 	return func(o *LoadOptions) error {
    927 		o.S3UseARNRegion = &v
    928 		return nil
    929 	}
    930 }
    931 
    932 // GetS3DisableMultiRegionAccessPoints returns whether to disable
    933 // the S3 multi-region access points feature.
    934 func (o LoadOptions) GetS3DisableMultiRegionAccessPoints(ctx context.Context) (v bool, found bool, err error) {
    935 	if o.S3DisableMultiRegionAccessPoints == nil {
    936 		return false, false, nil
    937 	}
    938 	return *o.S3DisableMultiRegionAccessPoints, true, nil
    939 }
    940 
    941 // WithS3DisableMultiRegionAccessPoints is a helper function to construct functional options
    942 // that can be used to set S3DisableMultiRegionAccessPoints on LoadOptions.
    943 // If multiple WithS3DisableMultiRegionAccessPoints calls are made, the last call overrides
    944 // the previous call values.
    945 func WithS3DisableMultiRegionAccessPoints(v bool) LoadOptionsFunc {
    946 	return func(o *LoadOptions) error {
    947 		o.S3DisableMultiRegionAccessPoints = &v
    948 		return nil
    949 	}
    950 }
    951 
    952 // GetEnableEndpointDiscovery returns if the EnableEndpointDiscovery flag is set.
    953 func (o LoadOptions) GetEnableEndpointDiscovery(ctx context.Context) (value aws.EndpointDiscoveryEnableState, ok bool, err error) {
    954 	if o.EnableEndpointDiscovery == aws.EndpointDiscoveryUnset {
    955 		return aws.EndpointDiscoveryUnset, false, nil
    956 	}
    957 	return o.EnableEndpointDiscovery, true, nil
    958 }
    959 
    960 // WithEndpointDiscovery is a helper function to construct functional options
    961 // that can be used to enable endpoint discovery on LoadOptions for supported clients.
    962 // If multiple WithEndpointDiscovery calls are made, the last call overrides
    963 // the previous call values.
    964 func WithEndpointDiscovery(v aws.EndpointDiscoveryEnableState) LoadOptionsFunc {
    965 	return func(o *LoadOptions) error {
    966 		o.EnableEndpointDiscovery = v
    967 		return nil
    968 	}
    969 }
    970 
    971 // getSSOProviderOptions returns AssumeRoleCredentialOptions from LoadOptions
    972 func (o LoadOptions) getSSOProviderOptions(context.Context) (func(options *ssocreds.Options), bool, error) {
    973 	if o.SSOProviderOptions == nil {
    974 		return nil, false, nil
    975 	}
    976 
    977 	return o.SSOProviderOptions, true, nil
    978 }
    979 
    980 // WithSSOProviderOptions is a helper function to construct
    981 // functional options that sets a function to use ssocreds.Options
    982 // on config's LoadOptions. If the SSO credential provider options is set to nil,
    983 // the sso provider options value will be ignored. If multiple
    984 // WithSSOProviderOptions calls are made, the last call overrides
    985 // the previous call values.
    986 func WithSSOProviderOptions(v func(*ssocreds.Options)) LoadOptionsFunc {
    987 	return func(o *LoadOptions) error {
    988 		o.SSOProviderOptions = v
    989 		return nil
    990 	}
    991 }
    992 
    993 // GetEC2IMDSClientEnableState implements a EC2IMDSClientEnableState options resolver interface.
    994 func (o LoadOptions) GetEC2IMDSClientEnableState() (imds.ClientEnableState, bool, error) {
    995 	if o.EC2IMDSClientEnableState == imds.ClientDefaultEnableState {
    996 		return imds.ClientDefaultEnableState, false, nil
    997 	}
    998 
    999 	return o.EC2IMDSClientEnableState, true, nil
   1000 }
   1001 
   1002 // GetEC2IMDSEndpointMode implements a EC2IMDSEndpointMode option resolver interface.
   1003 func (o LoadOptions) GetEC2IMDSEndpointMode() (imds.EndpointModeState, bool, error) {
   1004 	if o.EC2IMDSEndpointMode == imds.EndpointModeStateUnset {
   1005 		return imds.EndpointModeStateUnset, false, nil
   1006 	}
   1007 
   1008 	return o.EC2IMDSEndpointMode, true, nil
   1009 }
   1010 
   1011 // GetEC2IMDSEndpoint implements a EC2IMDSEndpoint option resolver interface.
   1012 func (o LoadOptions) GetEC2IMDSEndpoint() (string, bool, error) {
   1013 	if len(o.EC2IMDSEndpoint) == 0 {
   1014 		return "", false, nil
   1015 	}
   1016 
   1017 	return o.EC2IMDSEndpoint, true, nil
   1018 }
   1019 
   1020 // WithEC2IMDSClientEnableState is a helper function to construct functional options that sets the EC2IMDSClientEnableState.
   1021 func WithEC2IMDSClientEnableState(v imds.ClientEnableState) LoadOptionsFunc {
   1022 	return func(o *LoadOptions) error {
   1023 		o.EC2IMDSClientEnableState = v
   1024 		return nil
   1025 	}
   1026 }
   1027 
   1028 // WithEC2IMDSEndpointMode is a helper function to construct functional options that sets the EC2IMDSEndpointMode.
   1029 func WithEC2IMDSEndpointMode(v imds.EndpointModeState) LoadOptionsFunc {
   1030 	return func(o *LoadOptions) error {
   1031 		o.EC2IMDSEndpointMode = v
   1032 		return nil
   1033 	}
   1034 }
   1035 
   1036 // WithEC2IMDSEndpoint is a helper function to construct functional options that sets the EC2IMDSEndpoint.
   1037 func WithEC2IMDSEndpoint(v string) LoadOptionsFunc {
   1038 	return func(o *LoadOptions) error {
   1039 		o.EC2IMDSEndpoint = v
   1040 		return nil
   1041 	}
   1042 }
   1043 
   1044 // WithUseDualStackEndpoint is a helper function to construct
   1045 // functional options that can be used to set UseDualStackEndpoint on LoadOptions.
   1046 func WithUseDualStackEndpoint(v aws.DualStackEndpointState) LoadOptionsFunc {
   1047 	return func(o *LoadOptions) error {
   1048 		o.UseDualStackEndpoint = v
   1049 		return nil
   1050 	}
   1051 }
   1052 
   1053 // GetUseDualStackEndpoint returns whether the service's dual-stack endpoint should be
   1054 // used for requests.
   1055 func (o LoadOptions) GetUseDualStackEndpoint(ctx context.Context) (value aws.DualStackEndpointState, found bool, err error) {
   1056 	if o.UseDualStackEndpoint == aws.DualStackEndpointStateUnset {
   1057 		return aws.DualStackEndpointStateUnset, false, nil
   1058 	}
   1059 	return o.UseDualStackEndpoint, true, nil
   1060 }
   1061 
   1062 // WithUseFIPSEndpoint is a helper function to construct
   1063 // functional options that can be used to set UseFIPSEndpoint on LoadOptions.
   1064 func WithUseFIPSEndpoint(v aws.FIPSEndpointState) LoadOptionsFunc {
   1065 	return func(o *LoadOptions) error {
   1066 		o.UseFIPSEndpoint = v
   1067 		return nil
   1068 	}
   1069 }
   1070 
   1071 // GetUseFIPSEndpoint returns whether the service's FIPS endpoint should be
   1072 // used for requests.
   1073 func (o LoadOptions) GetUseFIPSEndpoint(ctx context.Context) (value aws.FIPSEndpointState, found bool, err error) {
   1074 	if o.UseFIPSEndpoint == aws.FIPSEndpointStateUnset {
   1075 		return aws.FIPSEndpointStateUnset, false, nil
   1076 	}
   1077 	return o.UseFIPSEndpoint, true, nil
   1078 }
   1079 
   1080 // WithDefaultsMode sets the SDK defaults configuration mode to the value provided.
   1081 //
   1082 // Zero or more functional options can be provided to provide configuration options for performing
   1083 // environment discovery when using aws.DefaultsModeAuto.
   1084 func WithDefaultsMode(mode aws.DefaultsMode, optFns ...func(options *DefaultsModeOptions)) LoadOptionsFunc {
   1085 	do := DefaultsModeOptions{
   1086 		Mode: mode,
   1087 	}
   1088 	for _, fn := range optFns {
   1089 		fn(&do)
   1090 	}
   1091 	return func(options *LoadOptions) error {
   1092 		options.DefaultsModeOptions = do
   1093 		return nil
   1094 	}
   1095 }
   1096 
   1097 // GetS3DisableExpressAuth returns the configured value for
   1098 // [EnvConfig.S3DisableExpressAuth].
   1099 func (o LoadOptions) GetS3DisableExpressAuth() (value, ok bool) {
   1100 	if o.S3DisableExpressAuth == nil {
   1101 		return false, false
   1102 	}
   1103 
   1104 	return *o.S3DisableExpressAuth, true
   1105 }
   1106 
   1107 // WithS3DisableExpressAuth sets [LoadOptions.S3DisableExpressAuth]
   1108 // to the value provided.
   1109 func WithS3DisableExpressAuth(v bool) LoadOptionsFunc {
   1110 	return func(o *LoadOptions) error {
   1111 		o.S3DisableExpressAuth = &v
   1112 		return nil
   1113 	}
   1114 }