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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions