Can't use Spaces via Amazon S3 SDK

February 10, 2018 1.2k views
API Java Ubuntu

I'm trying to perform a PUT operation towards Spaces using AWS S3 Java SDK, but I keep getting the same error.

Here's the definition of the client:

    public AmazonS3 spaces() {
        BasicAWSCredentials credentials = new BasicAWSCredentials(...);
        return AmazonS3ClientBuilder.standard().
                withCredentials(new AWSStaticCredentialsProvider(credentials)).
                withPathStyleAccessEnabled(true).
                withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("bucketname.ams3.digitaloceanspaces.com", "ams3")).
                build();
    }

Here's usage:

spaces.putObject("bucketname", fullPath, tempFile);

And the error is:

com.amazonaws.services.s3.model.AmazonS3Exception: Bad request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad request; Request ID: null; S3 Extended Request ID: null)

SDK version:

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
            <version>1.11.274</version>
        </dependency>

I tried to replace AwsClientBuilder.EndpointConfiguration("bucketname.ams3.digitaloceanspaces.com", "ams3") with AwsClientBuilder.EndpointConfiguration("ams3.digitaloceanspaces.com", "ams3"), but it also didn't work.

And when I try to GET the file, I surprisingly get a different error:

com.amazonaws.services.s3.model.AmazonS3Exception: null (Service: Amazon S3; Status Code: 403; Error Code: SignatureDoesNotMatch; Request ID: ...; S3 Extended Request ID: ...)

Although I'm pretty sure that I've specified key and secret correctly: I double-checked it.

1 Answer

I am facing the same problem, Did anyone resolve this or Digital Ocean is not sure about the solution?

Have another answer? Share your knowledge.