Skip to content

S3EncryptionClient builder requires region input even when endpointOverride is provided #486

@daksh0225

Description

@daksh0225

Problem:

S3EncryptionClient.builder() requires region as a mandatory input, even when endpointOverride is provided. This is a difference in behaviour from earlier version, where it was allowed to create the builder with only endpointConfiguration and without region.
Due to this, we have to pass a default region value always, resulting in ResourceNotFoundException for S3 Compatible vendors using a bucket in a different region. If no region is provided, and only endpoint is given, it works fine when using com.amazonaws.aws.

Solution:

Allow region to be empty when endpointOverride is defined.

Additional information

We are using these SDKs in Scala code
Java Version: Azul Zulu: 11.80.21
Scala Version: 2.12.19

SDK versions

com.amazonaws.aws: 1.12.768
amazon-s3-encryption-client-java: 3.3.5
software.amazon.awssdk.s3: 2.31.67

Sample Code

Using com.amazonaws.aws
AmazonS3EncryptionClientV2Builder
      .standard()
      .withEndpointConfiguration(
            new EndpointConfiguration(endpoint, region)
          )


Using software.amazon.awssdk.s3
S3EncryptionClient
        .builder()
        .endpointOverride(s3UriEndpoint)
        .region(Region.of(s3Region)) --> Fails without passing this

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions