Wasabi does not work with the AWS CRT client

Wasabi does not work with the new AWS CRT client. See the following example code:

Log.initLoggingToFile(Log.LogLevel.Trace, "aws-sdk.log");
var client = S3AsyncClient.crtBuilder()
.credentialsProvider(ProfileCredentialsProvider.builder()
.profileName("wasabi")
.build())
.region(Region.US_EAST_1)
.endpointOverride(URI.create("https://s3.wasabisys.com"))
.build();

var response = client.putObject(r -> r.bucket(bucket).key("test.txt"), AsyncRequestBody.fromString("testing")).get();
System.out.println(response.eTag());

Which produces the following response:

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>IncompleteBody</Code><Message>You did not provide the number of bytes specified by the Content-Length HTTP header</Message><NumberBytesExpected>7</NumberBytesExpected><NumberBytesProvided>0</NumberBytesProvided><RequestId>2E9EBD78D1FDB1CE:A</RequestId><HostId>m4pfeJKZwnPSx4MmxS/bHSNvw3cqpY7GjKhqKdEpuXQH20r0TWqge+nOhjAGIfco2qZ7zhzel2Ov</HostId></Error>

 

0

Comments

2 comments
  • Official comment

    Hi Peter,

    Thank you for posting your question on our community forum. Currently, we do not support asynchronous requests from clients to our S3 API, and instead ask that you implement a synchronous client in your application. For a list of supported synchronous clients, please see the AWS documentation for AWS SDK for Java below:

    https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration.html

    We will include this feature as a request for feature enhancement (RFE) to our Engineering team for further evaluation. Please contact "support@wasabi.com" for further discussions and to pursue alternatives in this regard.

     

    Regards
    Gowtham
    Wasabi Technical Support

  • Gowtham, thanks for the reply!

    Unfortunately, as you may be aware, the new S3 Transfer Manager (https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/transfer-manager.html) only supports the CRT client for making multi-part requests, though, from what you're saying, it sounds like even if it supported the Netty client it still wouldn't work with Wasabi.

    Running the transfer manager without the CRT client produces the following warning:

    WARN  s.a.a.transfer.s3.S3TransferManager - The provided DefaultS3AsyncClient is not an instance of S3CrtAsyncClient, and thus multipart upload/download feature is not enabled and resumable file upload is not supported. To benefit from maximum throughput, consider using S3AsyncClient.crtBuilder().build() instead.

    0

Please sign in to leave a comment.

Didn't find what you were looking for?

New post