in dth/client.go [88:134]
func NewS3Client(ctx context.Context, bucket, prefix, prefixList, endpoint, region, sourceType string, cred *S3Credentials) *S3Client {
cfg := loadDefaultConfig(ctx)
client := s3.NewFromConfig(cfg, func(o *s3.Options) {
// retryer := retry.AddWithMaxBackoffDelay(retry.NewStandard(), time.Second*5)
// o.Retryer = retryer
if region != "" {
o.Region = region
}
var url string
if endpoint != "" {
// if endpoint is provided, use the endpoint.
if strings.HasPrefix(endpoint, "http://") || strings.HasPrefix(endpoint, "https://") {
url = endpoint
} else {
url = "https://" + endpoint // Default to https://
}
} else {
url = getEndpointURL(region, sourceType)
}
if url != "" {
log.Printf("S3> Source Endpoint URL is set to %s\n", url)
o.EndpointResolver = s3.EndpointResolverFromURL(url)
}
if cred.noSignRequest {
// log.Println("noSignRequest")
o.Credentials = aws.AnonymousCredentials{}
}
if cred.accessKey != "" {
// log.Printf("Sign with key %s in region %s\n", cred.accessKey, region)
o.Credentials = aws.NewCredentialsCache(credentials.NewStaticCredentialsProvider(cred.accessKey, cred.secretKey, ""))
}
})
return &S3Client{
bucket: bucket,
prefix: prefix,
prefixList: prefixList,
client: client,
region: region,
sourceType: sourceType,
}
}