-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Inconsistent behavior between S3AsyncClient with and without VertxSdkClient wrapper #54
Comments
Thanks a lot for the reproducer, that will certainly help a lot here. |
Hey @aesteve, I did a bit of digging into this, though did not have the time to actually confirm/verify this is the cause. Diving through aws it seems they have a very particular way of doing UriEncoding, and recommend to override/implement the encoding instead of relying on the default. Info can be found here: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html Cliffnotes:
I just wanted to add a bit more information to help potentially narrow the problem down, hope it helps. |
Hi, I've noticed some strange behavior around S3AsyncClient when wrapping it with the reactiverse
aws-sdk
wrapper.I'm currently running into an issue where trying to upload files where the s3 key contains a special character, in my scenario
+
, results in a signature mismatch expection.java.util.concurrent.CompletionException: software.amazon.awssdk.services.s3.model.S3Exception: The request signature we calculated does not match the signature you provided. Check your key and signing method.
I dug a bit deeper, and to summarize my findings:
I was able to narrow down a JUnit 5 test scenario to outline the inconsistent results. The only thing you'll need to do to run it is update the
bucket
variable at the top with a bucket of the test.The
S3AsyncClient
built with theVertxSdkClient.withVertx
fails, where as the default one does not.I ran into a similar case a while back where I abused the
executeBlocking
function on vertx to run the synchronous client as a work around. That scenario had similar behavior when trying to runs3AsyncClient.listObjectsV2
, where it was failing when using the client wrapped byVertxSdkClient
however passing without the wrapper.I have not dove too deep into the investigation. Without special characters the
putObject
functionality works fine. From what I've read so far, special characters need to be url encoded when doing a http request. Its possible the encoding part is not working as intended causing the signature mismatch.Let me know if I'm simply doing something wrong here, or if I can provide additional details to reproduce.
Thanks!
The text was updated successfully, but these errors were encountered: