Skip to content

Commit

Permalink
Scoped the default S3 endpoint to region of the client
Browse files Browse the repository at this point in the history
Signed-off-by: Raghuvansh Raj <[email protected]>
  • Loading branch information
raghuvanshraj committed Aug 22, 2023
1 parent 48d4087 commit 6a96cbc
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class S3AsyncService implements Closeable {

private static final String STS_ENDPOINT_OVERRIDE_SYSTEM_PROPERTY = "aws.stsEndpointOverride";

private static final String DEFAULT_S3_ENDPOINT = "s3.amazonaws.com";
private static final String GLOBAL_S3_ENDPOINT = "s3.amazonaws.com";

private volatile Map<S3ClientSettings, AmazonAsyncS3Reference> clientsCache = emptyMap();

Expand Down Expand Up @@ -174,7 +174,11 @@ synchronized AmazonAsyncS3WithCredentials buildClient(
final AwsCredentialsProvider credentials = buildCredentials(logger, clientSettings);
builder.credentialsProvider(credentials);

String endpoint = Strings.hasLength(clientSettings.endpoint) ? clientSettings.endpoint : DEFAULT_S3_ENDPOINT;
String s3Endpoint = Strings.hasText(clientSettings.region)
? "s3." + Region.of(clientSettings.region).toString() + ".amazonaws.com"
: GLOBAL_S3_ENDPOINT;

String endpoint = Strings.hasLength(clientSettings.endpoint) ? clientSettings.endpoint : s3Endpoint;
if ((endpoint.startsWith("http://") || endpoint.startsWith("https://")) == false) {
// Manually add the schema to the endpoint to work around https://github.com/aws/aws-sdk-java/issues/2274
endpoint = clientSettings.protocol.toString() + "://" + endpoint;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ class S3Service implements Closeable {

private static final String STS_ENDPOINT_OVERRIDE_SYSTEM_PROPERTY = "aws.stsEndpointOverride";

private static final String DEFAULT_S3_ENDPOINT = "s3.amazonaws.com";
private static final String GLOBAL_S3_ENDPOINT = "s3.amazonaws.com";

private volatile Map<S3ClientSettings, AmazonS3Reference> clientsCache = emptyMap();

Expand Down Expand Up @@ -204,7 +204,11 @@ AmazonS3WithCredentials buildClient(final S3ClientSettings clientSettings) {
builder.httpClientBuilder(buildHttpClient(clientSettings));
builder.overrideConfiguration(buildOverrideConfiguration(clientSettings));

String endpoint = Strings.hasLength(clientSettings.endpoint) ? clientSettings.endpoint : DEFAULT_S3_ENDPOINT;
String s3Endpoint = Strings.hasText(clientSettings.region)
? "s3." + Region.of(clientSettings.region).toString() + ".amazonaws.com"
: GLOBAL_S3_ENDPOINT;

String endpoint = Strings.hasLength(clientSettings.endpoint) ? clientSettings.endpoint : s3Endpoint;
if ((endpoint.startsWith("http://") || endpoint.startsWith("https://")) == false) {
// Manually add the schema to the endpoint to work around https://github.com/aws/aws-sdk-java/issues/2274
// TODO: Remove this once fixed in the AWS SDK
Expand Down

0 comments on commit 6a96cbc

Please sign in to comment.