// Signature Version 2 is being turned off (deprecated) in Amazon S3. Amazon S3 will then only accept API requests that are signed using Signature Version 4.
f.DurationVar(&cfg.IdleConnTimeout,prefix+"s3.http.idle-conn-timeout",90*time.Second,"The time an idle connection will remain idle before closing.")
f.DurationVar(&cfg.ResponseHeaderTimeout,prefix+"s3.http.response-header-timeout",2*time.Minute,"The amount of time the client will wait for a servers response headers.")
f.BoolVar(&cfg.InsecureSkipVerify,prefix+"s3.http.insecure-skip-verify",false,"If the client connects to S3 via HTTPS and this option is enabled, the client will accept any certificate and hostname.")
f.DurationVar(&cfg.TLSHandshakeTimeout,prefix+"s3.tls-handshake-timeout",10*time.Second,"Maximum time to wait for a TLS handshake. 0 means no limit.")
f.DurationVar(&cfg.ExpectContinueTimeout,prefix+"s3.expect-continue-timeout",1*time.Second,"The time to wait for a server's first response headers after fully writing the request headers if the request has an Expect header. 0 to send the request body immediately.")
f.IntVar(&cfg.MaxIdleConns,prefix+"s3.max-idle-connections",100,"Maximum number of idle (keep-alive) connections across all hosts. 0 means no limit.")
f.IntVar(&cfg.MaxIdleConnsPerHost,prefix+"s3.max-idle-connections-per-host",100,"Maximum number of idle (keep-alive) connections to keep per-host. If 0, a built-in default value is used.")
f.IntVar(&cfg.MaxConnsPerHost,prefix+"s3.max-connections-per-host",0,"Maximum number of connections per host. 0 means no limit.")
cfg.TLSConfig.RegisterFlagsWithPrefix(prefix,f)
}
// RegisterFlagsWithPrefix registers the flags for s3 storage with the provided prefix.
f.StringVar(&cfg.CAPath,prefix+"s3.http.tls-ca-path","","Path to the CA certificates to validate server certificate against. If not set, the host's root CA certificates are used.")
f.StringVar(&cfg.CertPath,prefix+"s3.http.tls-cert-path","","Path to the client certificate, which will be used for authenticating with the server. Also requires the key path to be configured.")
f.StringVar(&cfg.KeyPath,prefix+"s3.http.tls-key-path","","Path to the key for the client certificate. Also requires the client certificate to be configured.")
f.StringVar(&cfg.ServerName,prefix+"s3.http.tls-server-name","","Override the expected name on the server certificate.")
}
// Config holds the config options for an S3 backend
f.StringVar(&cfg.Region,prefix+"s3.region","","S3 region. If unset, the client will issue a S3 GetBucketLocation API call to autodetect it.")
f.StringVar(&cfg.Endpoint,prefix+"s3.endpoint","","The S3 bucket endpoint. It could be an AWS S3 endpoint listed at https://docs.aws.amazon.com/general/latest/gr/s3.html or the address of an S3-compatible service in hostname:port format.")
f.BoolVar(&cfg.Insecure,prefix+"s3.insecure",false,"If enabled, use http:// for the S3 endpoint instead of https://. This could be useful in local dev/test environments while using an S3-compatible backend storage, like Minio.")
f.StringVar(&cfg.SignatureVersion,prefix+"s3.signature-version",SignatureVersionV4,fmt.Sprintf("The signature version to use for authenticating against S3. Supported values are: %s.",strings.Join(supportedSignatureVersions,", ")))
f.StringVar(&cfg.StorageClass,prefix+"s3.storage-class",aws.StorageClassStandard,"The S3 storage class to use. Details can be found at https://aws.amazon.com/s3/storage-classes/.")
f.StringVar(&cfg.ListObjectsVersion,prefix+"s3.list-objects-version","","Use a specific version of the S3 list object API. Supported values are v1 or v2. Default is unset.")
f.StringVar(&cfg.StorageClass,prefix+"s3.storage-class","","The S3 storage class to use, not set by default. Details can be found at https://aws.amazon.com/s3/storage-classes/. Supported values are: "+strings.Join(supportedStorageClasses,", "))
f.BoolVar(&cfg.NativeAWSAuthEnabled,prefix+"s3.native-aws-auth-enabled",false,"If enabled, it will use the default authentication methods of the AWS SDK for go based on known environment variables and known AWS config files.")
f.Uint64Var(&cfg.PartSize,prefix+"s3.part-size",0,"The minimum file size in bytes used for multipart uploads. If 0, the value is optimally computed for each object.")
f.BoolVar(&cfg.SendContentMd5,prefix+"s3.send-content-md5",false,"If enabled, a Content-MD5 header is sent with S3 Put Object requests. Consumes more resources to compute the MD5, but may improve compatibility with object storage services that do not support checksums.")
f.Var(newBucketLookupTypeValue(s3.AutoLookup,&cfg.BucketLookupType),prefix+"s3.bucket-lookup-type",fmt.Sprintf("Bucket lookup style type, used to access bucket in S3-compatible service. Default is auto. Supported values are: %s.",strings.Join(supportedBucketLookupTypes,", ")))
f.BoolVar(&cfg.DualstackEnabled,prefix+"s3.dualstack-enabled",true,"When enabled, direct all AWS S3 requests to the dual-stack IPv4/IPv6 endpoint for the configured region.")
f.StringVar(&cfg.STSEndpoint,prefix+"s3.sts-endpoint","","Accessing S3 resources using temporary, secure credentials provided by AWS Security Token Service.")