func NewS3Client()

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,
	}

}