S3 createMultipartUpload throws signature mismatch error
Describe the bug
I updated from an old sdk version to sdk2, and then there is a problem that the s3 service cannot be used, the error description is: 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.
My code:
S3Client s3Client = S3Client.builder()
.region(Region.of(region))
.credentialsProvider(credentialsProvider)
.serviceConfiguration(S3Configuration.builder()
.checksumValidationEnabled(true)
.build())
.overrideConfiguration(ClientOverrideConfiguration.builder()
.addExecutionInterceptor(new ModifyRequestTimeOffsetInterceptor())
.apiCallTimeout(Duration.ofSeconds(DownloadConstant.REQUEST_TIMEOUT))
.apiCallAttemptTimeout(Duration.ofSeconds(DownloadConstant.CONNECTION_TIMEOUT))
.build())
.build()
CreateMultipartUploadRequest request = CreateMultipartUploadRequest.builder()
.bucket(bucket)
.key(fileInfo.getKey())
.checksumAlgorithm(ChecksumAlgorithm.CRC32)
.build();
CreateMultipartUploadResponse response = s3Client.createMultipartUpload(request);
A separate interceptor was added because the old version needed to change the request timestamp to keep it in sync with the server time instead of being affected by the wrong client local time:
// ModifyRequestTimeOffsetInterceptor.java
@Override
public void beforeExecution(Context.BeforeExecution context, ExecutionAttributes executionAttributes) {
long timeOffsetByServerTime = CurrentSession.getTimeOffset() / 1000;
int timeOffsetSecByClient = -(int) timeOffsetByServerTime;
executionAttributes.putAttribute(AwsSignerExecutionAttribute.TIME_OFFSET, timeOffsetSecByClient);
}
Expected Behavior
successfully executed
Current Behavior
Throw an exception
14:52:15.604 [worker-3] DEBUG software.amazon.awssdk.core.retry.ClockSkew - Reported service date: Fri, 24 Jun 2022 06:52:15 GMT
14:52:15.608 [worker-4] DEBUG software.amazon.awssdk.core.interceptor.ExecutionInterceptorChain - Creating an interceptor chain that will apply interceptors in the following order: [software.amazon.awssdk.core.internal.interceptor.HttpChecksumRequiredInterceptor@54553702, software.amazon.awssdk.core.internal.interceptor.SyncHttpChecksumInTrailerInterceptor@355cb4ce, software.amazon.awssdk.core.internal.interceptor.HttpChecksumValidationInterceptor@ffede, software.amazon.awssdk.core.internal.interceptor.AsyncRequestBodyHttpChecksumTrailerInterceptor@59a86f1a, software.amazon.awssdk.core.internal.interceptor.HttpChecksumInHeaderInterceptor@24b8ae0a, software.amazon.awssdk.awscore.interceptor.HelpfulUnknownHostExceptionInterceptor@74928497, software.amazon.awssdk.awscore.eventstream.EventStreamInitialRequestInterceptor@b947dd5, software.amazon.awssdk.awscore.interceptor.TraceIdExecutionInterceptor@115e0302, software.amazon.awssdk.services.s3.internal.handlers.EnableChunkedEncodingInterceptor@70f727dd, software.amazon.awssdk.services.s3.internal.handlers.DisableDoubleUrlEncodingInterceptor@10a1b368, software.amazon.awssdk.services.s3.internal.handlers.EnableTrailingChecksumInterceptor@38f31e7c, software.amazon.awssdk.services.s3.internal.handlers.CreateMultipartUploadRequestInterceptor@59d44c73, software.amazon.awssdk.services.s3.internal.handlers.GetObjectInterceptor@1054415b, software.amazon.awssdk.services.s3.internal.handlers.ExceptionTranslationInterceptor@d738aca, software.amazon.awssdk.services.s3.internal.handlers.AsyncChecksumValidationInterceptor@2dd375e6, software.amazon.awssdk.services.s3.internal.handlers.EndpointAddressInterceptor@569f03fb, software.amazon.awssdk.services.s3.internal.handlers.SignerOverrideInterceptor@6473ceea, software.amazon.awssdk.services.s3.internal.handlers.GetBucketPolicyInterceptor@75c72d74, software.amazon.awssdk.services.s3.internal.handlers.PutObjectInterceptor@438d1a6f, software.amazon.awssdk.services.s3.internal.handlers.SyncChecksumValidationInterceptor@6da3493e, software.amazon.awssdk.services.s3.internal.handlers.DecodeUrlEncodedResponseInterceptor@17ddcefe, software.amazon.awssdk.services.s3.internal.handlers.CreateBucketInterceptor@5b3dfdfc, software.amazon.awssdk.services.s3.internal.handlers.CopySourceInterceptor@7048da96, com.bgi.fontaine.sdk.s3.ModifyRequestTimeOffsetInterceptor@7559718]
14:52:15.609 [worker-4] DEBUG software.amazon.awssdk.core.interceptor.ExecutionInterceptorChain - Interceptor 'software.amazon.awssdk.services.s3.internal.handlers.CreateMultipartUploadRequestInterceptor@59d44c73' modified the message with its modifyHttpRequest method.
14:52:15.610 [worker-4] DEBUG software.amazon.awssdk.core.interceptor.ExecutionInterceptorChain - Interceptor 'software.amazon.awssdk.services.s3.internal.handlers.EndpointAddressInterceptor@569f03fb' modified the message with its modifyHttpRequest method.
14:52:15.610 [worker-4] DEBUG software.amazon.awssdk.request - Sending Request: DefaultSdkHttpFullRequest(httpMethod=POST, protocol=https, host=sy-euro-test.s3.eu-central-1.amazonaws.com, port=443, encodedPath=/test-up.zip, headers=[amz-sdk-invocation-id, Content-Length, Content-Type, User-Agent, x-amz-checksum-algorithm], queryParameters=[uploads])
14:52:15.611 [worker-4] DEBUG software.amazon.awssdk.auth.signer.Aws4Signer - AWS4 String to sign: AWS4-HMAC-SHA256
20220624T065215Z
20220624/eu-central-1/s3/aws4_request
d767e47888a73da12b221f5636039bf2caf07f81248e1a8480fa8a57664ae996
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. (Service: S3, Status Code: 403, Request ID: XQ9V3Y5SA2RZG000, Extended Request ID: o9eM9UGHjj0ahJ0FVrqGpm/5eBcVret7et2s2MruobEAcCI4qXsQRv4OHqTlJTbmbnjFcPt8DBQ=)
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleErrorResponse(AwsXmlPredicatedResponseHandler.java:156)
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleResponse(AwsXmlPredicatedResponseHandler.java:108)
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handle(AwsXmlPredicatedResponseHandler.java:85)
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handle(AwsXmlPredicatedResponseHandler.java:43)
at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler$Crc32ValidationResponseHandler.handle(AwsSyncClientHandler.java:95)
at software.amazon.awssdk.core.internal.handler.BaseClientHandler.lambda$successTransformationResponseHandler$7(BaseClientHandler.java:245)
at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:40)
at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:30)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:73)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:42)
at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:78)
at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:40)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:50)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:36)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:81)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:36)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:56)
at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:36)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:80)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:60)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:42)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:48)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:31)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:37)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26)
at software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:193)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:167)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:82)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:175)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:76)
at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:56)
at software.amazon.awssdk.services.s3.DefaultS3Client.createMultipartUpload(DefaultS3Client.java:1532)
Reproduction Steps
just run
Possible Solution
none
Additional Information/Context
No response
AWS Java SDK version used
2.17.214
JDK version used
1.8.0
Operating System and version
windows10
My guess is that the time offset in the interceptor is messing with the signature somehow. The SDK also has the ability to automatically react to some level of clockskew errors, that's why you see DEBUG software.amazon.awssdk.core.retry.ClockSkew in the logs.
Does it work without changing the request timestamp in the interceptor?
I commented out the line of code that added ModifyRequestTimeOffsetInterceptor, but still reported the same error
In debug mode, by breaking a point in the AWSS3V4Signer class, there are some key parameters as follows:
requestParams={Aws4SignerRequestParams@4344}
- signingClock={Clock$SystemClock@4365} "SystemClock[Z]"
- requestSigningDateTimeMilli=1656292507503
- scope="20220627/eu-central-1/s3/aws4_request"
- regionName="eu-central-1"
- serviceSigningName="s3"
- formattedRequestSigningDateTime="20220627T011507Z"
- formattedRequestSigningDate="20220627"
signingParams={AwsS3V4SignerParams@4347}
- enableChunckedEncoding=false
- enablePayloadSigning=false
- doubleUrlEncode=false
- awsCredentials={AwsBasicCredentials@4358}
- signingName="s3"
- signingRegion="eu-central-1"
- timeOffset=0
- signingClockOverride=null
- checksumParams=null
contentChecksum={ContentChecksum@4388} "ContentChecksum{hash='UNSIGNED-PAYLOAD', contentFlexibleChecksum=null}"
canonicalRequestString="POST\n/test-up.zip\nuploads=\namz-sdk-invocation-id:fac35a21-ab8a-e82f-b403-4b27ecb55631\namz-sdk-request:attempt=1; max=4\ncontent-length:0\ncontent-type:binary/octet-stream\nhost:sy-euro-test.s3.eu-central-1.amazonaws.com\nx-amz-checksum-algorithm:CRC32\nx-amz-content-sha256:UNSIGNED-PAYLOAD\nx-amz-date:20220627T011507Z\n\namz-sdk-invocation-id;amz-sdk-request;content-length;content-type;host;x-amz-checksum-algorithm;x-amz-content-sha256;x-amz-date\nUNSIGNED-PAYLOAD"
stringToSign="AWS4-HMAC-SHA256\n20220627T011507Z\n20220627/eu-central-1/s3/aws4_request\n72091c94bf0b7dcac0270cbacb122a99d7a782c96c313daf6b7f6afa812fd41e"
Am I missing something?
I even simplified down to just a few lines of code and still got the same error.
try (S3Client s3Client = S3Client.builder()
.region(Region.of("eu-central-1"))
.credentialsProvider(StaticCredentialsProvider
.create(AwsBasicCredentials .create("xxxx", "xxxxxxxx")))
.build()) {
CreateMultipartUploadRequest request = CreateMultipartUploadRequest.builder()
.bucket("sy-euro-test")
.key("test-upload.zip")
.build();
CreateMultipartUploadResponse response = s3Client.createMultipartUpload(request);
System.out.println(response.uploadId());
}
Error:
10:53:10.026 [Test worker] DEBUG software.amazon.awssdk.core.interceptor.ExecutionInterceptorChain - Creating an interceptor chain that will apply interceptors in the following order: [software.amazon.awssdk.core.internal.interceptor.HttpChecksumRequiredInterceptor@3f236259, software.amazon.awssdk.core.internal.interceptor.SyncHttpChecksumInTrailerInterceptor@458fce7d, software.amazon.awssdk.core.internal.interceptor.HttpChecksumValidationInterceptor@24ede1d7, software.amazon.awssdk.core.internal.interceptor.AsyncRequestBodyHttpChecksumTrailerInterceptor@405e4874, software.amazon.awssdk.core.internal.interceptor.HttpChecksumInHeaderInterceptor@64cbcb8c, software.amazon.awssdk.awscore.interceptor.HelpfulUnknownHostExceptionInterceptor@5f0c1d4e, software.amazon.awssdk.awscore.eventstream.EventStreamInitialRequestInterceptor@1424ac21, software.amazon.awssdk.awscore.interceptor.TraceIdExecutionInterceptor@260b4b39, software.amazon.awssdk.services.s3.internal.handlers.EnableChunkedEncodingInterceptor@1ca663df, software.amazon.awssdk.services.s3.internal.handlers.DisableDoubleUrlEncodingInterceptor@237ffb68, software.amazon.awssdk.services.s3.internal.handlers.EnableTrailingChecksumInterceptor@128b0e82, software.amazon.awssdk.services.s3.internal.handlers.CreateMultipartUploadRequestInterceptor@6e25dd69, software.amazon.awssdk.services.s3.internal.handlers.GetObjectInterceptor@4132e3e9, software.amazon.awssdk.services.s3.internal.handlers.ExceptionTranslationInterceptor@1dcaf41c, software.amazon.awssdk.services.s3.internal.handlers.AsyncChecksumValidationInterceptor@577f1639, software.amazon.awssdk.services.s3.internal.handlers.EndpointAddressInterceptor@1771472a, software.amazon.awssdk.services.s3.internal.handlers.SignerOverrideInterceptor@418ad386, software.amazon.awssdk.services.s3.internal.handlers.GetBucketPolicyInterceptor@baaa5bf, software.amazon.awssdk.services.s3.internal.handlers.PutObjectInterceptor@24cbb42d, software.amazon.awssdk.services.s3.internal.handlers.SyncChecksumValidationInterceptor@399eff89, software.amazon.awssdk.services.s3.internal.handlers.DecodeUrlEncodedResponseInterceptor@2e9f1ddf, software.amazon.awssdk.services.s3.internal.handlers.CreateBucketInterceptor@7046d2ee, software.amazon.awssdk.services.s3.internal.handlers.CopySourceInterceptor@9d57a17]
10:53:10.059 [Test worker] DEBUG software.amazon.awssdk.core.interceptor.ExecutionInterceptorChain - Interceptor 'software.amazon.awssdk.services.s3.internal.handlers.CreateMultipartUploadRequestInterceptor@6e25dd69' modified the message with its modifyHttpRequest method.
10:53:10.066 [Test worker] DEBUG software.amazon.awssdk.core.interceptor.ExecutionInterceptorChain - Interceptor 'software.amazon.awssdk.services.s3.internal.handlers.EndpointAddressInterceptor@1771472a' modified the message with its modifyHttpRequest method.
10:53:10.089 [Test worker] DEBUG software.amazon.awssdk.request - Sending Request: DefaultSdkHttpFullRequest(httpMethod=POST, protocol=https, host=sy-euro-test.s3.eu-central-1.amazonaws.com, port=443, encodedPath=/test-upload.zip, headers=[amz-sdk-invocation-id, Content-Length, Content-Type, User-Agent], queryParameters=[uploads])
10:53:10.103 [Test worker] DEBUG software.amazon.awssdk.auth.signer.Aws4Signer - AWS4 String to sign: AWS4-HMAC-SHA256
20220627T025310Z
20220627/eu-central-1/s3/aws4_request
a1bfc7e30e7341183bfd9fc9abecc33a098919d631f64ab39e1058d3e8526fe2
10:53:10.423 [Test worker] DEBUG software.amazon.awssdk.http.apache.internal.conn.SdkTlsSocketFactory - socket.getSupportedProtocols(): [TLSv1.3, TLSv1.2, TLSv1.1, TLSv1, SSLv3, SSLv2Hello], socket.getEnabledProtocols(): [TLSv1.2, TLSv1.1, TLSv1]
10:53:10.863 [Test worker] DEBUG software.amazon.awssdk.http.apache.internal.net.SdkSslSocket - created: sy-euro-test.s3.eu-central-1.amazonaws.com/52.219.169.130:443
10:53:11.090 [Test worker] DEBUG software.amazon.awssdk.requestId - Received failed response: 403, Request ID: GW0GW9P63F1SKQJW, Extended Request ID: N4ZY4GQYCxRDvjf+KH72AZkclVTrn6pkSpbZcPsc+l+R4aMepSA7l+VN/vDvUS6qvg/95V9yI6s=
10:53:11.091 [Test worker] DEBUG software.amazon.awssdk.request - Received failed response: 403, Request ID: GW0GW9P63F1SKQJW, Extended Request ID: N4ZY4GQYCxRDvjf+KH72AZkclVTrn6pkSpbZcPsc+l+R4aMepSA7l+VN/vDvUS6qvg/95V9yI6s=
10:53:11.103 [Test worker] DEBUG software.amazon.awssdk.core.retry.ClockSkew - Reported service date: Mon, 27 Jun 2022 02:53:10 GMT
10:53:11.109 [Test worker] DEBUG software.amazon.awssdk.core.retry.ClockSkew - Reported service date: Mon, 27 Jun 2022 02:53:10 GMT
10:53:11.116 [Test worker] DEBUG software.amazon.awssdk.http.apache.internal.net.SdkSslSocket - closing sy-euro-test.s3.eu-central-1.amazonaws.com/52.219.169.130:443
10:53:11.118 [idle-connection-reaper] DEBUG software.amazon.awssdk.http.apache.internal.conn.IdleConnectionReaper - Reaper thread:
java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)
at software.amazon.awssdk.http.apache.internal.conn.IdleConnectionReaper$ReaperTask.run(IdleConnectionReaper.java:150)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
10:53:11.119 [idle-connection-reaper] DEBUG software.amazon.awssdk.http.apache.internal.conn.IdleConnectionReaper - Shutting down reaper thread.
The request signature we calculated does not match the signature you provided. Check your key and signing method. (Service: S3, Status Code: 403, Request ID: GW0GW9P63F1SKQJW, Extended Request ID: N4ZY4GQYCxRDvjf+KH72AZkclVTrn6pkSpbZcPsc+l+R4aMepSA7l+VN/vDvUS6qvg/95V9yI6s=)
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. (Service: S3, Status Code: 403, Request ID: GW0GW9P63F1SKQJW, Extended Request ID: N4ZY4GQYCxRDvjf+KH72AZkclVTrn6pkSpbZcPsc+l+R4aMepSA7l+VN/vDvUS6qvg/95V9yI6s=)
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleErrorResponse(AwsXmlPredicatedResponseHandler.java:156)
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleResponse(AwsXmlPredicatedResponseHandler.java:108)
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handle(AwsXmlPredicatedResponseHandler.java:85)
at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handle(AwsXmlPredicatedResponseHandler.java:43)
at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler$Crc32ValidationResponseHandler.handle(AwsSyncClientHandler.java:95)
at software.amazon.awssdk.core.internal.handler.BaseClientHandler.lambda$successTransformationResponseHandler$7(BaseClientHandler.java:245)
at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:40)
at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:30)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:73)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:42)
at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:78)
at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:40)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:50)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:36)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:81)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:36)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:56)
at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:36)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:80)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:60)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:42)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:48)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:31)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:37)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26)
at software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:193)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:167)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:82)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:175)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:76)
at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:56)
at software.amazon.awssdk.services.s3.DefaultS3Client.createMultipartUpload(DefaultS3Client.java:1532)
After trying all day, I found one thing: Incorrect credentials This error message leads to the wrong direction of troubleshooting, and a wrong credential returns a signature error
@vicasong Apologies for loosing track of this. Yes, incorrect credentials are one of the things that can lead to signature mismatch errors. Any field taken in the signature calculation can result in a signature error if it's value does not match the expected value received by the service. I guess the ClockSkew error was a red herring then.
Marking this to auto-close soon, let us know if you have any other question.