skip to Main Content

I’m trying to hit the localstack s3 service with aws sdk and it works well with aws cli but the aws sdk is behaving weird by adding the bucketname to the front of the url mentioning unable to connect.

[![INTELLIJ debug][1]][1]

Code is as below

  public void testS3() {

    final String localStackS3URL = "http://localhost:4566";
    final String REGION = "us-east-1";
    final AwsClientBuilder.EndpointConfiguration endpoint = new AwsClientBuilder.EndpointConfiguration(localStackS3URL, REGION);
    final AmazonS3 client = AmazonS3ClientBuilder.standard()
            .withEndpointConfiguration(endpoint)
            .build();
    if(!client.doesBucketExistV2("test")){
        client.createBucket("test");

    }
}

Can anyone help me what is wrong here ? It works with aws cli but the aws sdk is prefixing the bucket name strangely.

[![cmd aws cli][2]][2]

Thanks in advance
[1]: https://i.stack.imgur.com/wMI8D.png
[2]: https://i.stack.imgur.com/L0jLV.png

2

Answers


  1. try adding the http client parameter while building the S3 client it worked for me

    httpClient(UrlConnectionHttpClient.builder().build())

    Login or Signup to reply.
  2. Use .withPathStyleAccessEnabled(true).
    So it will use the bucket name in path instead of <bucket>.<endpoint> form.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search