aws / aws-sdk-java-v2

The official AWS SDK for Java - Version 2
Apache License 2.0
2.2k stars 848 forks source link

XMLStreamException: ParseError at [row,col]:[1,1] when calling getObjectAttributes #4845

Closed wcmatthysen closed 9 months ago

wcmatthysen commented 9 months ago

Describe the bug

I'm running into the same exception as outlined in #4136 (that has been closed a while ago) when requesting an object's attributes. I'm attempting to retrieve the MD5Sum via the e-tag field. The block of code (as highlighted in the original issue) triggering the exception is:

 client.getObjectAttributes(GetObjectAttributesRequest.builder()
    .bucket(bucket)
    .key(key)
    .objectAttributes(ObjectAttributes.E_TAG)
    .build());

I'm not sure where exactly this bug slipped in for version 2, but if I use the latest version 1 of the SDK, and rework the code-sample listed in #4136 to be compatible with V1, then everything works as expected.

Expected Behavior

No exception should be thrown when calling the getObjectAttributes method.

Current Behavior

I get the following stacktrace:

Exception in thread "main" software.amazon.awssdk.core.exception.SdkClientException: Could not parse XML response.
        at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:111)
        at software.amazon.awssdk.core.exception.SdkClientException.create(SdkClientException.java:47)
        at software.amazon.awssdk.protocols.query.unmarshall.XmlDomParser.parse(XmlDomParser.java:59)
        at software.amazon.awssdk.protocols.xml.internal.unmarshall.XmlResponseParserUtils.parse(XmlResponseParserUtils.java:64)
        at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.parseResponse(AwsXmlPredicatedResponseHandler.java:116)
        at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleResponse(AwsXmlPredicatedResponseHandler.java:96)
        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:93)
        at software.amazon.awssdk.core.internal.handler.BaseClientHandler.lambda$successTransformationResponseHandler$7(BaseClientHandler.java:279)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:50)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:38)
        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:72)
        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:55)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:39)
        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:50)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:32)
        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:224)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:173)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:80)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:182)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:74)
        at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
        at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:53)
        at software.amazon.awssdk.services.s3.DefaultS3Client.getObjectAttributes(DefaultS3Client.java:5544)
        at com.example.s3.GetObjectAttributes.getObjectAttributes(GetObjectAttributes.java:82)
        at com.example.s3.GetObjectAttributes.main(GetObjectAttributes.java:68)
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
        at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:604)
        at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:83)
        at software.amazon.awssdk.protocols.query.unmarshall.XmlDomParser.parse(XmlDomParser.java:55)
        ... 41 more

Reproduction Steps

To reproduce I took the original source-code as outlined in #4136, but modified it a bit to allow for connecting to other servers (in my case I'm connecting to a local MinIO instance for testing purposes):

// snippet-comment:[These are tags for the AWS doc team's sample catalog. Do not remove.]
// snippet-sourcedescription:[GetObjectContentType.java demonstrates how to determine the content type of an object in an Amazon Simple Storage Service (Amazon S3) bucket.]
//snippet-keyword:[AWS SDK for Java v2]
//snippet-service:[Amazon S3]

/*
   Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   SPDX-License-Identifier: Apache-2.0
*/

package com.example.s3;

// snippet-start:[s3.java2.getobjectcontenttype.import]

import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.GetObjectAttributesRequest;
import software.amazon.awssdk.services.s3.model.GetObjectAttributesResponse;
import software.amazon.awssdk.services.s3.model.ObjectAttributes;
import software.amazon.awssdk.services.s3.model.S3Exception;

import java.net.URI;
// snippet-end:[s3.java2.getobjectcontenttype.import]

/**
 * Before running this Java V2 code example, set up your development environment, including your credentials.
 * <p>
 * For more information, see the following documentation topic:
 * <p>
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */

public class GetObjectAttributes {

    public static void main(String[] args) {

        final String usage = "\n" +
                "Usage:\n" +
                "    <endpoint> <region> <accessKey> <secretKey> <bucketName> <keyName>>\n\n" +
                "Where:\n" +
                "    endpoint - The endpoint URL to connect to.\n\n" +
                "    region - The region to use.\n\n" +
                "    accessKey - The access-key that's used for authentication.\n\n" +
                "    secretKey - The secret-key that's used for authentication.\n\n" +
                "    bucketName - The bucket name. \n\n" +
                "    keyName - The key name. \n\n";

        if (args.length != 6) {
            System.out.println(usage);
            System.exit(1);
        }

        String endpoint = args[0];
        String region = args[1];
        String accessKey = args[2];
        String secretKey = args[3];
        String bucketName = args[4];
        String keyName = args[5];
        StaticCredentialsProvider credentialsProvider = StaticCredentialsProvider
            .create(AwsBasicCredentials.create(accessKey, secretKey));
        S3Client s3 = S3Client.builder()
            .endpointOverride(URI.create(endpoint))
            .region(Region.of(region))
            .credentialsProvider(credentialsProvider)
            .build();

        getObjectAttributes(s3, bucketName, keyName);
        s3.close();
    }

    // snippet-start:[s3.java2.getobjectcontenttype.main]
    public static void getObjectAttributes(S3Client s3, String bucketName, String keyName) {

        try {
            final GetObjectAttributesRequest objectRequest = GetObjectAttributesRequest.builder()
                .bucket(bucketName)
                .key(keyName)
                .objectAttributes(ObjectAttributes.E_TAG)
                .build();

            GetObjectAttributesResponse response = s3.getObjectAttributes(objectRequest);
            String responseString = response.toString();
            System.out.println("The object attributes response is " + responseString);
        } catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
    // snippet-end:[s3.java2.getobjectcontenttype.main]
}

I then invoked the class with:

java -cp "target/dependency/*:target/amazon-s3-etag-test-1.0.0-SNAPSHOT.jar" com.example.s3.GetObjectAttributes http://127.0.0.1:9000 US-EAST-1 <accessKey> <secretKey> mybucket files/myfile.zip

Possible Solution

Not sure. Don't know if it is related to the encoding of the XML in the response.

Additional Information/Context

I'm running the example with Azul's JDK:

openjdk version "1.8.0_345"
OpenJDK Runtime Environment (Zulu 8.64.0.19-CA-linux64) (build 1.8.0_345-b01)
OpenJDK 64-Bit Server VM (Zulu 8.64.0.19-CA-linux64) (build 25.345-b01, mixed mode)

I've also tested against version 17 of Azul's JDK:

openjdk version "17.0.4.1" 2022-08-12 LTS
OpenJDK Runtime Environment Zulu17.36+17-CA (build 17.0.4.1+1-LTS)
OpenJDK 64-Bit Server VM Zulu17.36+17-CA (build 17.0.4.1+1-LTS, mixed mode, sharing)

and it still breaks (so not sure if it is a Java 8 issue).

As mentioned at the top, if I rework the code for version 1 of the SDK then I don't run into this exception. So, I suspect it is an issue that slipped in for version 2 of the SDK.

Also, I've tested this against a local MinIO instance as well as Wasabi and it produces the same issue in both cases. I haven't tested against AWS though.

AWS Java SDK version used

2.23.9

JDK version used

openjdk version "1.8.0_345"
OpenJDK Runtime Environment (Zulu 8.64.0.19-CA-linux64) (build 1.8.0_345-b01)
OpenJDK 64-Bit Server VM (Zulu 8.64.0.19-CA-linux64) (build 25.345-b01, mixed mode)

Operating System and version

Linux (Ubuntu 18.04 LTS)

debora-ito commented 9 months ago

Also, I've tested this against a local MinIO instance as well as Wasabi and it produces the same issue in both cases. I haven't tested against AWS though.

Can you test using the AWS S3 endpoint directly? Because I believe this is the root cause. If you are using a third-party endpoint, the response body might be using a different XML encoding than the one used by S3:

"<?xml version="1.0" encoding="UTF-8"?>[\n]"
"<GetObjectAttributesResponse xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <ObjectParts><PartsCount>14</PartsCount></ObjectParts>
    <ObjectSize>116225227</ObjectSize>
</GetObjectAttributesResponse>"

You can enable verbose wirelogging and compare the response XMLs to be sure.

As a reminder, we don't guarantee that the SDK will work with third-party solutions.

wcmatthysen commented 9 months ago

Ok, I tested with AWS and it seems to work. The output when enabling verbose wirelogging is:

2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "GET /files/dummy.pdf?attributes HTTP/1.1[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Host: storagez.demo.wiehann-pc.s3.af-south-1.amazonaws.com[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-invocation-id: 0f8b41f0-952d-fb75-f629-a762d6cf808e[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-request: attempt=1; max=4[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Authorization: AWS4-HMAC-SHA256 Credential=<access-key>/20240125/af-south-1/s3/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-request;host;x-amz-content-sha256;x-amz-date;x-amz-object-attributes, Signature=<signatue>[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "User-Agent: aws-sdk-java/2.23.9 Linux/5.4.0-169-generic OpenJDK_64-Bit_Server_VM/17.0.4.1+1-LTS Java/17.0.4.1 vendor/Azul_Systems__Inc. io/sync http/Apache cfg/retry-mode/legacy[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "x-amz-content-sha256: UNSIGNED-PAYLOAD[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "X-Amz-Date: 20240125T120325Z[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "x-amz-object-attributes: ETag[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "x-amz-id-2: UQ6xo6jD53omrJjt1xzEB3HYLV5Pl0ZxQzJHLt0ji/HabCycbgZ8jhyUvyr0g/KrRjTBEoeL6mg=[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "x-amz-request-id: XZGDTCWXMW1WV9TD[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Date: Thu, 25 Jan 2024 12:03:26 GMT[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Last-Modified: Thu, 25 Jan 2024 07:55:32 GMT[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Server: AmazonS3[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Content-Length: 191[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "<?xml version="1.0" encoding="UTF-8"?>[\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:87 - http-outgoing-0 << "<GetObjectAttributesResponse xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><ETag>2942bfabb3d05332b66eb128e0842cff</ETag></GetObjectAttributesResponse>"
The object attributes response is GetObjectAttributesResponse(LastModified=2024-01-25T07:55:32Z, ETag=2942bfabb3d05332b66eb128e0842cff)

For MinIO I get the following output:

2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "GET /65561253860cc0000155116c--58ecef09c54894cb79b9e239/inventory/inventory.zip?attributes HTTP/1.1[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Host: 127.0.0.1:7000[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-invocation-id: 27a0287f-5a6a-67bd-6216-01dd3432f15b[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-request: attempt=1; max=4[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Authorization: AWS4-HMAC-SHA256 Credential=<access-key>/20240125/US-EAST-1/s3/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-request;host;x-amz-content-sha256;x-amz-date;x-amz-object-attributes, Signature=<signature>[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "User-Agent: aws-sdk-java/2.23.9 Linux/5.4.0-169-generic OpenJDK_64-Bit_Server_VM/17.0.4.1+1-LTS Java/17.0.4.1 vendor/Azul_Systems__Inc. io/sync http/Apache cfg/retry-mode/legacy[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "x-amz-content-sha256: UNSIGNED-PAYLOAD[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "X-Amz-Date: 20240125T120837Z[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "x-amz-object-attributes: ETag[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Accept-Ranges: bytes[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Content-Length: 1431019[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Content-Type: application/zip[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "ETag: "193a181d882ef68f0db146a7d632c13f"[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Last-Modified: Wed, 10 Jan 2024 14:38:48 GMT[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Server: MinIO[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Strict-Transport-Security: max-age=31536000; includeSubDomains[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Vary: Origin[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Vary: Accept-Encoding[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "X-Amz-Id-2: 21996febc4916c8ee8de25e3d14cc081cf2ca657027b5ceb2b641f13819537d0[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "X-Amz-Request-Id: 17AD95C75E5751BA[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "X-Content-Type-Options: nosniff[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "X-Xss-Protection: 1; mode=block[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Date: Thu, 25 Jan 2024 12:08:37 GMT[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[\r][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "PK[0x3][0x4][0x14][0x0][0x8][0x8][0x8][0x0][0x80]u[0x8c]W[0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x11][0x0][0x0][0x0]snapshot-data.csv[0x1d][0xcc][0xc1][\r][0xc0]0[0xc][0x2][0xc0]g[0xe9][0xa3]61[0xb1][0xc7]I[0x94]z[0xff][0x11][0x8a][0xfa]A'$[0x80][0x93] [0x9c]A[0xd2][0x84][0x83][0xa2][0x3]0i[0xc0]Q[0xa0][0x1f][0x9a]l[0xbf]\][0x10][0xca][0x94][0x87]6[0x3][0x89][0xb8][0xa3][0xd1][0xa3]='[0xe6]Z[0xbe]u[0x1b][0x9d]|[0xf9]p[0xd7][0xe9]][0xd7][0x7]PK[0x7][0x8][0xf4]i[0xf9][0xed]K[0x0][0x0][0x0]j[0x0][0x0][0x0]PK[0x3][0x4][0x14][0x0][0x8][0x8][0x8][0x0][0x80]u[0x8c]W[0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x18][0x0][0x0][0x0]snapshot-file-hashes.csv[0x1d][0xcb][0xc1][\r][0xc0] [0xc]C[0xd1]{g[0xe9][0xa1][0xc9][0x7][0x3][0xe3]P[0x8][0xfb][0x8f][0xd0][0xa8][0x7][O[0x96][0x8c]K[0x8]W[0x95]d[0x89][0xcd][0x90][0x3][0x96]*8[0x3][0xf9][0x96][0xa5][0xed][0x97][0xe7]VEvO[0x97][0xfc][0x14]:[0xf5][0x9e]S[0xeb][0xac][0xd2]b>/[0x9c] v[m[0x10][0x99][0x15]3[0xae][0xf]PK[0x7][0x8]6[0x89][0xd9]K[0x0][0x0][0x0]j[0x0][0x0][0x0]PK[0x3][0x4][0x14][0x0][0x8][0x8][0x8][0x0][0x80]u[0x8c]W[0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x13][0x0][0x0][0x0]file-references.csv,[0x9d]I[0xa2][0xe4][0xb6][0xae]D[0xe7][0xb5][0x96][0x1c]H[0xec][0xb9][0x1c][0xb6][0xfb]_[0x82][0xcf][0xd1][0xf5][0xf7]e[0xd7]m[0x92][0x12][0x9][0x4]"H[0x0]|[0x9e]g[0x9f]sGy[0xc2]=1[0x8e]2c[0x8e][0xcf][0xad][0xb5][0x97][0xa7][0x94][0xd6][0xe3][0x13][0x9e][0xd5][0xcf]J[0xfb][0x94]y[0xe6][0xf3][0xcc][0x1a]F[0x9][0xcf][0xbd]q[0xf6][0x98][0x9e]_[0xbf]![0xf6][0x1e]B[0xcc][0xef][0xde]1[0x9d][0xa7][0x5][0xfe]8'[0xc7]PR[0x8b][0xed][0xdf][0xf3][0xf0][0xb7][0x15]g[0xdc][0xa3][0xce][0xf4][0x86][0xf2][0xf6]p[0xdf][0x93][0xc3][0xee][0xf1]>[0xf5][0x86][0x13]gM#[0xef][0xfa][0x86][0xc4][0x13][0xcc][0x1a][0x9f][0xf8][0x8e][0xf6][0xe4]~v[0x8b][0xe3][0xf7][0x86]6[0xcf][0x19][0xf1][0xae][0x96]Cz[0xc6]z[0xdf][0xf0][0xb6][0xd2][0xf2][0xdb][0xfa]n[0xe9]0[0xc2][0xbb]z[0xd9][0x85][0xcf][0xd8]y[0x97][0x9d][0xde]3g[0xef]9[0xc7][0x15][0x9e]P[0x9f][0xdd][0xc7][0xe6]Y*[0xbf]XR9[0xa5][0x9c][0xbe][0xc6][0xd9][0xef]{[0xde][0xbd][0xd2]l[0xbf][0xfc][0xe4]QO[0xc]oio|[0xce][0x18][0x99]a[0xf2][0x1d]c[0xa6][0x15]o[0x19]![0xa7][0xd2]k[0xca]m[0xd5][0xf7])y[0x9f][0xb4][0xce]y[0xe6]M{[0xb4][0xf5][0xec][0xf6][0x84][0xfe][0xbe]s[0xcc]|[0x1c][0xfa]y[0x9f]7[0xbd][0xa9]<[0xa7][0xc6]S[0xf7]=[0xbf]qZ[0x8a]5[0x95]Pbyg[0xeb][0xe7][0xa4][0x14]J[0xc8][0xab][0x9e][0xd0]zx[0x18][0xa1][0xbc][0xef][0xbd]<[0xce]9[0x9b][0xe9]Je[0x95][0xa7]3[0x85]<[0xc6]^m[0xb5]^V[0x1a][0xb1][0xdf][0xc9]t[0xac]7[0x86][0xd5]g[0xc9][0xa9][0x95]w[0xb7][0xb9]j[0xfa][0x9d][0x13]N.[0xb5][0xe6]r[0x99]o[0xde]n[0xc6]1n[0x98][0xa1]<[0xfb]elG[0xe8]y[0xf3]v-e>[0xbc][0x9c]Q[0xd2]]w[0xa6]S[0x9f][0x90][0x9f][0xf7][0xae][0x9d][0x98][0xa1][0x94][0xda][0xe1]u[0xde][0x91]Y[0xa9]}[0x9e]RCO[0xb1][0x8c][0xfd][0x8b][0x99]9[0x8a]{[0xc5]Z[0xee][0xbb][0xe3][0x1a]O[0x8c][0x91])g[0xd8];[0xce][0xf2][0x1d]j[0xe1][0xe5][0xc7]J[0x87][0xcf]X,[0xf1](#[0x96][0xd8][0xf6][0xea][0xb1]6[0xe6][0xa7][0xcd][0xcb]S[0xad][0xf7][0xb4]>W[0x1f][0xe1][0xa9][0xf9]-[0xa3][0xf0][0xff][0xfd]}[0xea]/[0x8c][0xba][0xc6][0x9a][0xe1][0xad][0xef]|[0xde][0xdc]*[0xef]y[0xf8]N[0x1c])c9[0x97][0x11][0xe6][0xbb]&[0x96][0xb1][0x9e][0xc3]3[0x85][0xb0]Rl[0xa1][0x97][0xfa]t[0x6][0xe3]#[0x19][0x11][0xb][0x1e]q[0xa7][0x90][0x19][0xe3]ML@^O[0x19]-[0x84]w[0xdf][0xdf][0xba][0xb7]N[0x96][0xad][0xf0][0xb5][0xb6]1[0xbc][0x10][0xb1][0xc9][0x13][0xd2]LQ[0xdb]f[0x84][0xcd][0xd4][0x9d]g1[0xf2]s[0xda][0xbb][0xc6][0x8e][0xf9]^>[0x95][0x1f]/[0xf8][0x6][0xcb][0xd5][0xdb][0xde]c[0xd7]yG[0x1b]o[0xdd][0xb9][0x9c][0xc8][0xa4][0xc5][0x1a]sK[0xbf][0xb2][0xda]|gWl[0xa9][0xf][0x1e][0xe8][\r][0xf1][0xe5]sz[0xcd]{[0xde][0xac]-[0xdd]:z<[0xb7][0xe6]9[0xcb][0xe][0x95][0xb5][0xe8][0x97]Y[0xeb][0xac][0xf7][0x88]u[0xef]}#[0x9f][0xd6][0x99][0xec]<z)[0xe9]}[0xfb][0x8d][0xac][0xf1]M3?[0xfd][0xf7][0xe4][0xfc][0x86][0xf9][0x16][0xfe][0xc5][0x82]'<[0xab][0xe7][0x8e]g[0xc6]7[0xb5]U[0xd2][0xfa][0xf7][0xbc][0xe1]yZ[0xc9][0xbc]g[0xce]O[0x1a][0xe1][0xae][0x89][0x9d]6^[0xf0][0x96][0x13]&C[0xc][0xec][0xbd]?[0xab][0xcc][0x8a][0xc3]f[0x1e][0xf8]mg[0x96]R[0xf][0xa6][0x1f]~[0xd8]g[0x9e][0x98][0xe2][0x88]g[0x1c]<[0xf6][0xe4][0x16][0xde]<[0xee]Z[0xb9][0x6]V[0x8f][0x11]X[0xd4][0xfa][0xfa]V+[0xbf][0x98]e[0xea][0x1d][0x93]d[0xc1][0xee][0xc5][0xf6][0xd6][0xdb]q[0xb4][[0xd2],5[0xd6][0xb7]=[\r]_kg[0xdf]]^[0xbe]V[0xf6][0xef]mu[0xe0][0xd6]}[0x80][0x4][0xf7]<[0xf8][0x2][0xce]pg[0xc1][0xa5][0xdb][0x1c][0x8e]0rM=[0xbe],[0xf9][0x8d]X[0xfa][0xc][0xb5][0xb7][0xb5]s[0x1e]<k[0xd9][0xf8][0xf7].g[0x85]4[0x1a][0x9e][0xf1][0xb4][0xfa][0xc]][0xf7][0xa4][0x98][0x99][0xcd][0xfc][0xcb]y[0xf5][0xdc][0xf6][0x8][0xe3]Yo[0xcb]un[0x1e][0xb4][0xb4]g[0xbc][0xbc][0xc7]S[0x2]#[0xa4][0x19][0xb]3[0xb3][0xd7]YxYaBq[0xdf]1qZ[0x9e]+[0xdc]R[0xf7][0xb3][0xd7][0x8][0x0][0xde][0xcd]g[0xb6]q*[0xee][0xba][0x3]?[0xd4]K[0xbe]?[0xe6][0x7][0xd4][0xc3]#X[0x8a]s1[0xd7]t[0xb1][0x9d][0xcd][0x1a][0x80]nywF[0xe0]uq[0xb5]][0x1b][0xe0][0xd3]J[0xf][0x98][0x1e]/8[0x9f][0x8d][0xad]b[0xc5]=[0xcf]2[0x9e][0xce]W[0xee][0xae][0xbc][0x17]X[0x93]J-k5[0xe6][0xe2][0x89][0xbf]x[0x93]S[0xaa]W[0xf7][0x7][0x97]b[0xcd][0x16]#[0xe][0xd6][0xba][0x9f][0x10][0xf1][0xb8][0x17][0xb7]b[0xf2][0x19][0x8e]q[0xde][0x98]r[0xc5]U6[0xef][b[0x8][0xa9][0xe2][0xd1][0x19]$[0xc5][0xd9][0xef];[0x81][0x82]|[0xd3][0x0]BR=8U[0x98][0xfd]76[0xbe]Q[0xe3][0x1b]2X[0xcc][0xf][0xa6][0xd6]FOo<3[0xf2][0xcc][0xf9][0x1b]a`Xu[0xe3][0xa2][0xa5][0x1][0x87][0xb9]E[0xa6][0xa6][0x80][0xc4][0xe0][0xed][0xdc][0xb8][0xde][0x9b]Vs[0x8d]k[0xdb]3[0x9c][0x1b]x[0xe7][0x12][0xc7][0xad][0xb8][0xc7]}@><[0xfe][0x94][0x16][0x9e][0xc1][0xab][0x16][\r]}U[0x9c](O[0xa6][0x1b]Xe[0x84]6[0x6][0x81][0xa6][0xe2][0xd2]O[0x98][0x7][0xaf]=s[0xa4]t[0x9d][0xb2][0xd4]WXY[0xe3][0xc8][0x98][0xfc]s[0xd6][0xe4]}>WJ[0xa0]W[0xee]#[0xe7][0xdf][0x1][0x13]*[0x90]W&>W0[0xbe][0xf2][0x86][0x91]x[0xa7][0x12][0xfa]mi2B[0xaf][0x98]?[0xe9][0xdd][0x80]O"[0xd8][0xdc][0x8d][0xed]v[0xcc][0xf1][0xe2][0xad]%[0x1a]hf|6[0x9e][0x89]1[0xf2]X[0xfd][0xc5][0x94][0x0][0xc1][0x92][0x9e][0x9d]~[0xbd][0xf2]N[0xac]q[0x0][0xe7]b[0xe4]i*[0xc0][0xf8][0xa4][0xb5][0x0][0xf4][0xce][0xb2]0[0x2][0xcf][0xfd]n@[\r][0x87][0xcc][0xf][0xef][0xc1]$of[0xe5][0x10][0xb5]*[0x1][0xf][0xdb]:[0x93][0x80][0xb5][0xd3]&(f~z[0x87][0xbd][0xdb][0xc5][0xe0]O[0xea][0xef][0xf][0xb4][0x6]s*[0xb6][0x96]^[0xe0][0x9c][0xe1]fn-[0xbe][0x7][0xf]6[0xaa]0[0x2]X[0xde]][0x85][0x96]A[0xd1][0xc6][0x8b]V[0x16][0x9b][0xa0][0x5][0x86][0xb5]g%[0xe2]X<a[0xb7]B [0xa8][0x3][0xc][0x1][0xa7][[0xbf][0xf8]c#z[0xe8]q@[\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xa6]<[0x6][0xbe]sv[0xca][0xc0][0xf3][0xe4][0xe3]A[0xb8][0x13]V,[0x8e][0x0][0xa2]c[0xe4][0xcf][0xc4][0xc][0xb0]K~[0xd7]E[0x9e][0xf]sJ[0xcc]9[0xa9][0xb0]FD[0xfe][0xdc]+(_[0xde][0x82][0xa1]b[0xa6]=[0xf0]h[0x4]n[0xe3][0xc3]7[0x8d][0xfd][0xbc][0xbc]=[0xcb][0xd6]g%[0xa6][0xcf][0xc8][0xb][0xf2][0x10][0xf8]46[0xfd][0x82]9[0x4]W[0x2][0xf5]z[0xf8][0x87][0x18][0x9][0xc][0x9e]a[0x98][0xc1][0x8a]xG[0xf0][0x97][0xaf][0xe7][0x9b][0x7]3[0x6]v\<[0xf][0x9f][0xe8]3[0x97][0xdf][0xc4]6*[0xb][0xbc][0x88]:[0x8b]qpK[0xe6]jj[0x83]c[0xcf][0xb8][0x1c][0x1][0xa4]b"+[0x13][0xd2]/q[0xb2][0xb6]uY[0xff][0x8d]m2[0x1]'[0x85]M[0xd8][0xc4]c[0x86][0x10][0xbf][0xa1][0x1a][0xef][0xbb][0xe7][0xb8][0xcc][0x8]N;[0x7][0x17]y[0x1e][0x88][0xca][0x8e][0xbd][0x9e]K[0x9c]a[0x86][0xc2][0xe0][0xf7][0x99]d,[0xc7][0x11][0x16][0xf0][0x86]![0x0]dX@.B6/|Z[0xde]I[0xd3]z[0x9f][0x1d][0xf1]*\d[0x1d]>[0x9]RA[0xd0]%[0x96][0xd6][0x94][0xce][0xb][0x13](!4[0xc0][0xf3][0x2][0x9a]m$[0xc][0x1d][0xe2][0x80][0xcb]1[0x99][0xc4][0xf6][0xf5][0xbd][0xc3][0xda][0x5][0xe][0x4][0x18][0xcc]4[0x89][0xcf][0x8d]%[0x6][0x1][0xee]x[0xc5][0xe][\r][0xf4][0x82]FNN[0xe5][0xf7][0xe2][0x93][0xea][0xf5]+[0x8e][0xfa][0xc4][0xf4][0x3]"a[0xb][0xd0]2[0xc8][0x13][0x81][0x1f]L[0x87][0xc6][0xb0][0x1c][0xb8][0xe4]:[0xf8][0x1a]#[0xbc]O[0xae]-[0xcc][0x1c];[0x4]bJq[0xc2][0xaa][0xcc][0x6][0xd3][0xf4]F[0xe2]P~B[0xc][0xb8][0x3][0xa6][0xb6][0xef][0xc3]w[0x9][0xe]`[0xe1][0x9b][0x18][0xe8]}~[0x18][0xea][0xac][0xa5][0xd5][0xb][0x9e][0xf0][0xa2][0xb8]vi1[0xed][0x10][0xf6][0x85]A[0x15]g[0xc9][0xc8]=[0x98][0x96][0xca][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "a[0xbf][0xcf][0x84][0x84]h[0xe0][0x1b]R[0xf6][0x12]"[0xe3][0xdd][0x9d][0x85][0xee][0xd0][0x87][0xde][0x99][0xfe][0x0]D[0xe7]At[0xc5][0xba][0xda][0xf3][0x83][0x17]<P[0xa5]<[0xdb]M[0x15][0x13][0x8d]N*[0xd3][0x9b]v[0x1c][0xed][0xdd][0xd9][0x11]j([0xb][0x0][0xc6][0xb7][0xcb][0x82][0xb3][0xe6][0x9d][0x99][0xe7][0xc0][0x1b]b[0xb0]z[0xb5]hFh[0x83][0xe4][0x85][\r]![,L[0xed][0xcf]d[0xc2][0xf1][0xd3]_ d[0xc1][0x88][0x88][0xea]D[0x90][0x10][0xeb]x[0xe7][0xee]kB[0xc1]z[0x8e][0xc0][0xb4]#[0xf4][0x94]W[0xc6][0xc8]G^qI[0x99][0xce][0x85][0x4]@[0xfc][0xee][0xc4][0xa5][0x16][0xc1][0x5][0x86][0x97][0xf5][0xf8]2q[0x81][0xc1][0x97][0xeb][0xbd][0x4][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xc8][0x1d][0xfe][0xf0][0xc][0x88][0xe0][0xe1]+[0x95]O[0x1e];[0xac][0x92]}m[0x1c][0x14].[0xb6]7#[0x84]9[0xd6][0x86]i[0xd7][0x89][0xe1][0xd5][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xf7][0xbe][0x90]*[0xd6][0x1c]x[0xdc][0x83])M[0xf3][0x86]z[0x8][0xf4][0xf9]M[0x7][0xa8][0xd8][0x80]_d[0x15]`u%[0xfe]6@E[0xb0][0xdf][0xa9][0x97][0xb1][0x6][0xe6]u[0xcf][0x1e][0xb9][0x13][0x9e][0xcb]_[0x1c]!F[0xa0][0x1e][0xaa]L[0x80][0x0][0xe4][0x89][0xf9][0x15][0xe3][0x9e][0xed][0xf0][0xef][0xdb]*[0xe1][0xa7][0x87][0x15]X[0xf9]$vC[0x1a]*[0xe0][0xb][0xc6][0x1]T0[0xa6][0xfa][0x3]$[0x81][0x2][0xd4]@KF{[0x8][0xd7][0xdc][0x95]g~'[0xb4]"[0xf5][0xe0][0x8]Pa[0xd8][0x1]|t[0xb0][0x8c][0x7]O`Z[0xe0][0xab][0xcc]t[0xbe][0xcc][0xd6][0xae][0xcf]b[0x2]g[0x4][0xba][0xf1]bX[0x11][0x18]Q[0xe]/Od[0xaf][0xbf][0x9d][\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xf0][0xbd].[0x9e][0xde]p[0xb4]Q[0x89][0xde]8}[0xae]V[0xb5][0x1d]!C[0xbd][0x1f]~[0xf][0xb4][0x84][0x1f]D&[0x92]H[0xf7]>[0x9d]'f[0xb8][0x8]G[0x8a]~[0x2][0x2][0x4][0xfe][0x8]_p[0x8a][0xa0][0xa7][0x81][0xe7][0x84][0x8b][0xfe][0xf2][0xd8]`7[0xf1]"M[0xfc][0x15] [0xe6][0x93][0xb1][0xca][0x3]I[0xb][0xc4]wm[0x89]e[0xc6]8[0x1f]LGe[0xc1][0xb4][0x3]# +?[0xd8][0xa1][0xad]pt[0xa6][0xec][0x2]%p[0x16][0xd6][0xa7]0[0xe9][0x9a][0xde][0x93][0xb0]^[0xa8][0xdc]o[0x1e][0x80][0xe6][0x2]m[0xc4]^[0xa0][0x9]*B[0x10][0xad]%[0xf2][0x94][0xef][0xc0][0x7][0x19][0x81]E[0xe4]Gn[0xc0]60s<[0xe3]![0x8e][0xf3][0xe2][0xa0]'l[0xcd]9[0x82][0xf9]2[0xe]2[0x2]\[0x2][0x12][0xb][0x9e]w2/[0x1][0x19][0xd9]?[0xa8])[0x11]"[0xaf]][0xd1]9[0x99][0x1f][0x0]Lr[0xcb][0x87]1[0x0][0xea]A[0x4][0xe2][0xc9][0x12][0x14][0x12][0x84][0xc7][0xd3]1\[0xf8];k@[0xa4][0x84][0xc0]!0[0x16][0x14][0xef]av[0x98]{[0xbf]D[0xe0]Kp7[0xc2]9[0x9a][0x6][0xc]/?,[0xef][0xe5]'`L[0x87][0x0][0x16][0x98][0xee][0xb9][0x8e]s[0x8b][0x86][0x2][0xac][0xbf][0x11]`I[0x18][0x6][0xea]$[0x10]>[0xf8][0xf2][0xc8][\r][0xd3][0x85]*[0x2][0xae][0xd9][0xef]7[0xc][0x14].[0xc][0xb3]A[0x1e][0x11]/[0xc7][0xe4][0xa5][0xb1][0x19][0xfc][0xf0][0xf9]1]D;[0xac][0xef] [0x7][0xfa]~kMs[0x87]X[0xc0][0xa8][0x82][0xbd][0x12][0xa7]C[0x8f]p[0xb1][0xbe][0xd0][0xb][0x93][0xd8][0x80][0x1d][0x11]E[0xc3].R[0x8f][0x7]+[0xc2]0j[0x4]v1i<z[0x1c]x[0xf2][0x4]eq[0xdd]K[0xc8]%[0x8a][0xe2]j[0x81][0xbf][0x87][0x83][0xc1][0xca]D[0xc7][0x9c]OM[0xe0][0xc]Q[\n]"
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xee][0xe0][0x8]x[0xf0]"[0xa8][0xde][0xbe][0xf9][0xe1]v[0x9]z[0xf3][0x85][0xa3][0xf3]&[0xf8][\n]"
...
...
2024-01-25 14:08:37 [main] DEBUG org.apache.http.wire:87 - http-outgoing-0 << "[0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x87]O[0x4][0x0]blocks.csvPK[0x5][0x6][0x0][0x0][0x0][0x0][0x4][0x0][0x4][0x0][0xfe][0x0][0x0][0x0][0xd7][0xd4][0x15][0x0][0x0][0x0]"
Exception in thread "main" software.amazon.awssdk.core.exception.SdkClientException: Could not parse XML response.
        at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:111)
        at software.amazon.awssdk.core.exception.SdkClientException.create(SdkClientException.java:47)
        at software.amazon.awssdk.protocols.query.unmarshall.XmlDomParser.parse(XmlDomParser.java:59)
        at software.amazon.awssdk.protocols.xml.internal.unmarshall.XmlResponseParserUtils.parse(XmlResponseParserUtils.java:64)
        at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.parseResponse(AwsXmlPredicatedResponseHandler.java:116)
        at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleResponse(AwsXmlPredicatedResponseHandler.java:96)
        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:93)
        at software.amazon.awssdk.core.internal.handler.BaseClientHandler.lambda$successTransformationResponseHandler$7(BaseClientHandler.java:279)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:50)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:38)
        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:72)
        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:55)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:39)
        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:50)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:32)
        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:224)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:173)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:80)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:182)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:74)
        at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
        at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:53)
        at software.amazon.awssdk.services.s3.DefaultS3Client.getObjectAttributes(DefaultS3Client.java:5544)
        at com.example.s3.GetObjectAttributes.getObjectAttributes(GetObjectAttributes.java:83)
        at com.example.s3.GetObjectAttributes.main(GetObjectAttributes.java:69)
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:652)
        at java.xml/com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:83)
        at software.amazon.awssdk.protocols.query.unmarshall.XmlDomParser.parse(XmlDomParser.java:55)

(the garbled output continues for a bit before the exception is finally thrown)

For Wasabi it's basically the same:

2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "GET /inventory/2024-01-08-17-04-53-inventory.zip?attributes HTTP/1.1[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Host: 65561253860cc0000155116c--58ecef09c54894cb79b9e239.s3.eu-west-2.wasabisys.com[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-invocation-id: 51d99cb7-4bfd-00b0-33d9-d91eeccb9649[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-request: attempt=1; max=4[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Authorization: AWS4-HMAC-SHA256 Credential=<access-key>/20240125/eu-west-2/s3/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-request;host;x-amz-content-sha256;x-amz-date;x-amz-object-attributes, Signature=<signature>[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "User-Agent: aws-sdk-java/2.23.9 Linux/5.4.0-169-generic OpenJDK_64-Bit_Server_VM/17.0.4.1+1-LTS Java/17.0.4.1 vendor/Azul_Systems__Inc. io/sync http/Apache cfg/retry-mode/legacy[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "x-amz-content-sha256: UNSIGNED-PAYLOAD[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "X-Amz-Date: 20240125T122227Z[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "x-amz-object-attributes: ETag[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Accept-Ranges: bytes[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Content-Length: 1430955[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Content-Type: application/zip[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Date: Thu, 25 Jan 2024 12:22:28 GMT[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "ETag: "31e397a6e08fa2586ad8d3a66464cde9"[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Last-Modified: Mon, 15 Jan 2024 19:10:03 GMT[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Server: WasabiS3/7.17.2963-2023-12-15-e1a2a5e70a (R206-U12)[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "x-amz-id-2: nmuobkt5P7uz35FjXQPfiCub4uQ/bmcqqJ5HcG8LZjLuotpGutrIffmbg6A1JB744Rj217Yu57tn[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "x-amz-request-id: 1D05DDA5E7ADB5B7:B[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "x-wasabi-cm-reference-id: 1706185348040 130.117.185.103 ConID:1695619604/EngineConID:21898005/Core:75[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[\r][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "PK[0x3][0x4][0x14][0x0][0x0][0x8][0x8][0x0][0x9a][0x88](X6[0x89][0xd9]K[0x0][0x0][0x0]j[0x0][0x0][0x0][0x18][0x0][0x0][0x0]snapshot-file-hashes.csv[0x1d][0xcb][0xc1][\r][0xc0] [0xc]C[0xd1]{g[0xe9][0xa1][0xc9][0x7][0x3][0xe3]P[0x8][0xfb][0x8f][0xd0][0xa8][0x7][O[0x96][0x8c]K[0x8]W[0x95]d[0x89][0xcd][0x90][0x3][0x96]*8[0x3][0xf9][0x96][0xa5][0xed][0x97][0xe7]VEvO[0x97][0xfc][0x14]:[0xf5][0x9e]S[0xeb][0xac][0xd2]b>/[0x9c] v[m[0x10][0x99][0x15]3[0xae][0xf]PK[0x3][0x4][0x14][0x0][0x0][0x8][0x8][0x0][0x9a][0x88](X[0xf4]i[0xf9][0xed]K[0x0][0x0][0x0]j[0x0][0x0][0x0][0x11][0x0][0x0][0x0]snapshot-data.csv[0x1d][0xcc][0xc1][\r][0xc0]0[0xc][0x2][0xc0]g[0xe9][0xa3]61[0xb1][0xc7]I[0x94]z[0xff][0x11][0x8a][0xfa]A'$[0x80][0x93] [0x9c]A[0xd2][0x84][0x83][0xa2][0x3]0i[0xc0]Q[0xa0][0x1f][0x9a]l[0xbf]\][0x10][0xca][0x94][0x87]6[0x3][0x89][0xb8][0xa3][0xd1][0xa3]='[0xe6]Z[0xbe]u[0x1b][0x9d]|[0xf9]p[0xd7][0xe9]][0xd7][0x7]PK[0x3][0x4][0x14][0x0][0x0][0x8][0x8][0x0][0x9a][0x88](X[0x9a]z[0xa2][0x15]+N[0x4][0x0][0x10]z[0x7][0x0][0x13][0x0][0x0][0x0]file-references.csv,[0x9d]I[0xa2][0xe4][0xb6][0xae]D[0xe7][0xb5][0x96][0x1c]H[0xec][0xb9][0x1c][0xb6][0xfb]_[0x82][0xcf][0xd1][0xf5][0xf7]e[0xd7]m[0x92][0x12][0x9][0x4]"H[0x0]|[0x9e]g[0x9f]sGy[0xc2]=1[0x8e]2c[0x8e][0xcf][0xad][0xb5][0x97][0xa7][0x94][0xd6][0xe3][0x13][0x9e][0xd5][0xcf]J[0xfb][0x94]y[0xe6][0xf3][0xcc][0x1a]F[0x9][0xcf][0xbd]q[0xf6][0x98][0x9e]_[0xbf]![0xf6][0x1e]B[0xcc][0xef][0xde]1[0x9d][0xa7][0x5][0xfe]8'[0xc7]PR[0x8b][0xed][0xdf][0xf3][0xf0][0xb7][0x15]g[0xdc][0xa3][0xce][0xf4][0x86][0xf2][0xf6]p[0xdf][0x93][0xc3][0xee][0xf1]>[0xf5][0x86][0x13]gM#[0xef][0xfa][0x86][0xc4][0x13][0xcc][0x1a][0x9f][0xf8][0x8e][0xf6][0xe4]~v[0x8b][0xe3][0xf7][0x86]6[0xcf][0x19][0xf1][0xae][0x96]Cz[0xc6]z[0xdf][0xf0][0xb6][0xd2][0xf2][0xdb][0xfa]n[0xe9]0[0xc2][0xbb]z[0xd9][0x85][0xcf][0xd8]y[0x97][0x9d][0xde]3g[0xef]9[0xc7][0x15][0x9e]P[0x9f][0xdd][0xc7][0xe6]Y*[0xbf]XR9[0xa5][0x9c][0xbe][0xc6][0xd9][0xef]{[0xde][0xbd][0xd2]l[0xbf][0xfc][0xe4]QO[0xc]oio|[0xce][0x18][0x99]a[0xf2][0x1d]c[0xa6][0x15]o[0x19]![0xa7][0xd2]k[0xca]m[0xd5][0xf7])y[0x9f][0xb4][0xce]y[0xe6]M{[0xb4][0xf5][0xec][0xf6][0x84][0xfe][0xbe]s[0xcc]|[0x1c][0xfa]y[0x9f]7[0xbd][0xa9]<[0xa7][0xc6]S[0xf7]=[0xbf]qZ[0x8a]5[0x95]Pbyg[0xeb][0xe7][0xa4][0x14]J[0xc8][0xab][0x9e][0xd0]zx[0x18][0xa1][0xbc][0xef][0xbd]<[0xce]9[0x9b][0xe9]Je[0x95][0xa7]3[0x85]<[0xc6]^m[0xb5]^V[0x1a][0xb1][0xdf][0xc9]t[0xac]7[0x86][0xd5]g[0xc9][0xa9][0x95]w[0xb7][0xb9]j[0xfa][0x9d][0x13]N.[0xb5][0xe6]r[0x99]o[0xde]n[0xc6]1n[0x98][0xa1]<[0xfb]elG[0xe8]y[0xf3]v-e>[0xbc][0x9c]Q[0xd2]]w[0xa6]S[0x9f][0x90][0x9f][0xf7][0xae][0x9d][0x98][0xa1][0x94][0xda][0xe1]u[0xde][0x91]Y[0xa9]}[0x9e]RCO[0xb1][0x8c][0xfd][0x8b][0x99]9[0x8a]{[0xc5]Z[0xee][0xbb][0xe3][0x1a]O[0x8c][0x91])g[0xd8];[0xce][0xf2][0x1d]j[0xe1][0xe5][0xc7]J[0x87][0xcf]X,[0xf1](#[0x96][0xd8][0xf6][0xea][0xb1]6[0xe6][0xa7][0xcd][0xcb]S[0xad][0xf7][0xb4]>W[0x1f][0xe1][0xa9][0xf9]-[0xa3][0xf0][0xff][0xfd]}[0xea]/[0x8c][0xba][0xc6][0x9a][0xe1][0xad][0xef]|[0xde][0xdc]*[0xef]y[0xf8]N[0x1c])c9[0x97][0x11][0xe6][0xbb]&[0x96][0xb1][0x9e][0xc3]3[0x85][0xb0]Rl[0xa1][0x97][0xfa]t[0x6][0xe3]#[0x19][0x11][0xb][0x1e]q[0xa7][0x90][0x19][0xe3]ML@^O[0x19]-[0x84]w[0xdf][0xdf][0xba][0xb7]N[0x96][0xad][0xf0][0xb5][0xb6]1[0xbc][0x10][0xb1][0xc9][0x13][0xd2]LQ[0xdb]f[0x84][0xcd][0xd4][0x9d]g1[0xf2]s[0xda][0xbb][0xc6][0x8e][0xf9]^>[0x95][0x1f]/[0xf8][0x6][0xcb][0xd5][0xdb][0xde]c[0xd7]yG[0x1b]o[0xdd][0xb9][0x9c][0xc8][0xa4][0xc5][0x1a]sK[0xbf][0xb2][0xda]|gWl[0xa9][0xf][0x1e][0xe8][\r][0xf1][0xe5]sz[0xcd]{[0xde][0xac]-[0xdd]:z<[0xb7][0xe6]9[0xcb][0xe][0x95][0xb5][0xe8][0x97]Y[0xeb][0xac][0xf7][0x88]u[0xef]}#[0x9f][0xd6][0x99][0xec]<z)[0xe9]}[0xfb][0x8d][0xac][0xf1]M3?[0xfd][0xf7][0xe4][0xfc][0x86][0xf9][0x16][0xfe][0xc5][0x82]'<[0xab][0xe7][0x8e]g[0xc6]7[0xb5]U[0xd2][0xfa][0xf7][0xbc][0xe1]yZ[0xc9][0xbc]g[0xce]O[0x1a][0xe1][0xae][0x89][0x9d]6^[0xf0][0x96][0x13]&C[0xc][0xec][0xbd]?[0xab][0xcc][0x8a][0xc3]f[0x1e][0xf8]mg[0x96]R[0xf][0xa6][0x1f]~[0xd8]g[0x9e][0x98][0xe2][0x88]g[0x1c]<[0xf6][0xe4][0x16][0xde]<[0xee]Z[0xb9][0x6]V[0x8f][0x11]X[0xd4][0xfa][0xfa]V+[0xbf][0x98]e[0xea][0x1d][0x93]d[0xc1][0xee][0xc5][0xf6][0xd6][0xdb]q[0xb4][[0xd2],5[0xd6][0xb7]=[\r]_kg[0xdf]]^[0xbe]V[0xf6][0xef]mu[0xe0][0xd6]}[0x80][0x4][0xf7]<[0xf8][0x2][0xce]pg[0xc1][0xa5][0xdb][0x1c][0x8e]0rM=[0xbe],[0xf9][0x8d]X[0xfa][0xc][0xb5][0xb7][0xb5]s[0x1e]<k[0xd9][0xf8][0xf7].g[0x85]4[0x1a][0x9e][0xf1][0xb4][0xfa][0xc]][0xf7][0xa4][0x98][0x99][0xcd][0xfc][0xcb]y[0xf5][0xdc][0xf6][0x8][0xe3]Yo[0xcb]un[0x1e][0xb4][0xb4]g[0xbc][0xbc][0xc7]S[0x2]#[0xa4][0x19][0xb]3[0xb3][0xd7]YxYaBq[0xdf]1qZ[0x9e]+[0xdc]R[0xf7][0xb3][0xd7][0x8][0x0][0xde][0xcd]g[0xb6]q*[0xee][0xba][0x3]?[0xd4]K[0xbe]?[0xe6][0x7][0xd4][0xc3]#X[0x8a]s1[0xd7]t[0xb1][0x9d][0xcd][0x1a][0x80]nywF[0xe0]uq[0xb5]][0x1b][0xe0][0xd3]J[0xf][0x98][0x1e]/8[0x9f][0x8d][0xad]b[0xc5]=[0xcf]2[0x9e][0xce]W[0xee][0xae][0xbc][0x17]X[0x93]J-k5[0xe6][0xe2][0x89][0xbf]x[0x93]S[0xaa]W[0xf7][0x7][0x97]b[0xcd][0x16]#[0xe][0xd6][0xba][0x9f][0x10][0xf1][0xb8][0x17][0xb7]b[0xf2][0x19][0x8e]q[0xde][0x98]r[0xc5]U6[0xef][b[0x8][0xa9][0xe2][0xd1][0x19]$[0xc5][0xd9][0xef];[0x81][0x82]|[0xd3][0x0]BR=8U[0x98][0xfd]76[0xbe]Q[0xe3][0x1b]2X[0xcc][0xf][0xa6][0xd6]FOo<3[0xf2][0xcc][0xf9][0x1b]a`Xu[0xe3][0xa2][0xa5][0x1][0x87][0xb9]E[0xa6][0xa6][0x80][0xc4][0xe0][0xed][0xdc][0xb8][0xde][0x9b]Vs[0x8d]k[0xdb]3[0x9c][0x1b]x[0xe7][0x12][0xc7][0xad][0xb8][0xc7]}@><[0xfe][0x94][0x16][0x9e][0xc1][0xab][0x16][\r]}U[0x9c](O[0xa6][0x1b]Xe[0x84]6[0x6][0x81][0xa6][0xe2][0xd2]O[0x98][0x7][0xaf]=s[0xa4]t[0x9d][0xb2][0xd4]WXY[0xe3][0xc8][0x98][0xfc]s[0xd6][0xe4]}>WJ[0xa0]W[0xee]#[0xe7][0xdf][0x1][0x13]*[0x90]W&>W0[0xbe][0xf2][0x86][0x91]x[0xa7][0x12][0xfa]mi2B[0xaf][0x98]?[0xe9][0xdd][0x80]O"[0xd8][0xdc][0x8d][0xed]v[0xcc][0xf1][0xe2][0xad]%[0x1a]hf|6[0x9e][0x89]1[0xf2]X[0xfd][0xc5][0x94][0x0][0xc1][0x92][0x9e][0x9d]~[0xbd][0xf2]N[0xac]q[0x0][0xe7]b[0xe4]i*[0xc0][0xf8][0xa4][0xb5][0x0][0xf4][0xce][0xb2]0[0x2][0xcf][0xfd]n@[\r][0x87][0xcc][0xf][0xef][0xc1]$of[0xe5][0x10][0xb5]*[0x1][0xf][0xdb]:[0x93][0x80][0xb5][0xd3]&(f~z[0x87][0xbd][0xdb][0xc5][0xe0]O[0xea][0xef][0xf][0xb4][0x6]s*[0xb6][0x96]^[0xe0][0x9c][0xe1]fn-[0xbe][0x7][0xf]6[0xaa]0[0x2]X[0xde]][0x85][0x96]A[0xd1][0xc6][0x8b]V[0x16][0x9b][0xa0][0x5][0x86][0xb5]g%[0xe2]X<a[0xb7]B [0xa8][0x3][0xc][0x1][0xa7][[0xbf][0xf8]c#z[0xe8]q@[\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xa6]<[0x6][0xbe]sv[0xca][0xc0][0xf3][0xe4][0xe3]A[0xb8][0x13]V,[0x8e][0x0][0xa2]c[0xe4][0xcf][0xc4][0xc][0xb0]K~[0xd7]E[0x9e][0xf]sJ[0xcc]9[0xa9][0xb0]FD[0xfe][0xdc]+(_[0xde][0x82][0xa1]b[0xa6]=[0xf0]h[0x4]n[0xe3][0xc3]7[0x8d][0xfd][0xbc][0xbc]=[0xcb][0xd6]g%[0xa6][0xcf][0xc8][0xb][0xf2][0x10][0xf8]46[0xfd][0x82]9[0x4]W[0x2][0xf5]z[0xf8][0x87][0x18][0x9][0xc][0x9e]a[0x98][0xc1][0x8a]xG[0xf0][0x97][0xaf][0xe7][0x9b][0x7]3[0x6]v\<[0xf][0x9f][0xe8]3[0x97][0xdf][0xc4]6*[0xb][0xbc][0x88]:[0x8b]qpK[0xe6]jj[0x83]c[0xcf][0xb8][0x1c][0x1][0xa4]b"+[0x13][0xd2]/q[0xb2][0xb6]uY[0xff][0x8d]m2[0x1]'[0x85]M[0xd8][0xc4]c[0x86][0x10][0xbf][0xa1][0x1a][0xef][0xbb][0xe7][0xb8][0xcc][0x8]N;[0x7][0x17]y[0x1e][0x88][0xca][0x8e][0xbd][0x9e]K[0x9c]a[0x86][0xc2][0xe0][0xf7][0x99]d,[0xc7][0x11][0x16][0xf0][0x86]![0x0]dX@.B6/|Z[0xde]I[0xd3]z[0x9f][0x1d][0xf1]*\d[0x1d]>[0x9]RA[0xd0]%[0x96][0xd6][0x94][0xce][0xb][0x13](!4[0xc0][0xf3][0x2][0x9a]m$[0xc][0x1d][0xe2][0x80][0xcb]1[0x99][0xc4][0xf6][0xf5][0xbd][0xc3][0xda][0x5][0xe][0x4][0x18][0xcc]4[0x89][0xcf][0x8d]%[0x6][0x1][0xee]x[0xc5][0xe][\r][0xf4][0x82]FNN[0xe5][0xf7][0xe2][0x93][0xea][0xf5]+[0x8e][0xfa][0xc4][0xf4][0x3]"a[0xb][0xd0]2[0xc8][0x13][0x81][0x1f]L[0x87][0xc6][0xb0][0x1c][0xb8][0xe4]:[0xf8][0x1a]#[0xbc]O[0xae]-[0xcc][0x1c];[0x4]bJq[0xc2][0xaa][0xcc][0x6][0xd3][0xf4]F[0xe2]P~B[0xc][0xb8][0x3][0xa6][0xb6][0xef][0xc3]w[0x9][0xe]`[0xe1][0x9b][0x18][0xe8]}~[0x18][0xea][0xac][0xa5][0xd5][0xb][0x9e][0xf0][0xa2][0xb8]vi1[0xed][0x10][0xf6][0x85]A[0x15]g[0xc9][0xc8]=[0x98][0x96][0xca][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "a[0xbf][0xcf][0x84][0x84]h[0xe0][0x1b]R[0xf6][0x12]"[0xe3][0xdd][0x9d][0x85][0xee][0xd0][0x87][0xde][0x99][0xfe][0x0]D[0xe7]At[0xc5][0xba][0xda][0xf3][0x83][0x17]<P[0xa5]<[0xdb]M[0x15][0x13][0x8d]N*[0xd3][0x9b]v[0x1c][0xed][0xdd][0xd9][0x11]j([0xb][0x0][0xc6][0xb7][0xcb][0x82][0xb3][0xe6][0x9d][0x99][0xe7][0xc0][0x1b]b[0xb0]z[0xb5]hFh[0x83][0xe4][0x85][\r]![,L[0xed][0xcf]d[0xc2][0xf1][0xd3]_ d[0xc1][0x88][0x88][0xea]D[0x90][0x10][0xeb]x[0xe7][0xee]kB[0xc1]z[0x8e][0xc0][0xb4]#[0xf4][0x94]W[0xc6][0xc8]G^qI[0x99][0xce][0x85][0x4]@[0xfc][0xee][0xc4][0xa5][0x16][0xc1][0x5][0x86][0x97][0xf5][0xf8]2q[0x81][0xc1][0x97][0xeb][0xbd][0x4][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xc8][0x1d][0xfe][0xf0][0xc][0x88][0xe0][0xe1]+[0x95]O[0x1e];[0xac][0x92]}m[0x1c][0x14].[0xb6]7#[0x84]9[0xd6][0x86]i[0xd7][0x89][0xe1][0xd5][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xf7][0xbe][0x90]*[0xd6][0x1c]x[0xdc][0x83])M[0xf3][0x86]z[0x8][0xf4][0xf9]M[0x7][0xa8][0xd8][0x80]_d[0x15]`u%[0xfe]6@E[0xb0][0xdf][0xa9][0x97][0xb1][0x6][0xe6]u[0xcf][0x1e][0xb9][0x13][0x9e][0xcb]_[0x1c]!F[0xa0][0x1e][0xaa]L[0x80][0x0][0xe4][0x89][0xf9][0x15][0xe3][0x9e][0xed][0xf0][0xef][0xdb]*[0xe1][0xa7][0x87][0x15]X[0xf9]$vC[0x1a]*[0xe0][0xb][0xc6][0x1]T0[0xa6][0xfa][0x3]$[0x81][0x2][0xd4]@KF{[0x8][0xd7][0xdc][0x95]g~'[0xb4]"[0xf5][0xe0][0x8]Pa[0xd8][0x1]|t[0xb0][0x8c][0x7]O`Z[0xe0][0xab][0xcc]t[0xbe][0xcc][0xd6][0xae][0xcf]b[0x2]g[0x4][0xba][0xf1]bX[0x11][0x18]Q[0xe]/Od[0xaf][0xbf][0x9d][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xf0][0xbd].[0x9e][0xde]p[0xb4]Q[0x89][0xde]8}[0xae]V[0xb5][0x1d]!C[0xbd][0x1f]~[0xf][0xb4][0x84][0x1f]D&[0x92]H[0xf7]>[0x9d]'f[0xb8][0x8]G[0x8a]~[0x2][0x2][0x4][0xfe][0x8]_p[0x8a][0xa0][0xa7][0x81][0xe7][0x84][0x8b][0xfe][0xf2][0xd8]`7[0xf1]"M[0xfc][0x15] [0xe6][0x93][0xb1][0xca][0x3]I[0xb][0xc4]wm[0x89]e[0xc6]8[0x1f]LGe[0xc1][0xb4][0x3]# +?[0xd8][0xa1][0xad]pt[0xa6][0xec][0x2]%p[0x16][0xd6][0xa7]0[0xe9][0x9a][0xde][0x93][0xb0]^[0xa8][0xdc]o[0x1e][0x80][0xe6][0x2]m[0xc4]^[0xa0][0x9]*B[0x10][0xad]%[0xf2][0x94][0xef][0xc0][0x7][0x19][0x81]E[0xe4]Gn[0xc0]60s<[0xe3]![0x8e][0xf3][0xe2][0xa0]'l[0xcd]9[0x82][0xf9]2[0xe]2[0x2]\[0x2][0x12][0xb][0x9e]w2/[0x1][0x19][0xd9]?[0xa8])[0x11]"[0xaf]][0xd1]9[0x99][0x1f][0x0]Lr[0xcb][0x87]1[0x0][0xea]A[0x4][0xe2][0xc9][0x12][0x14][0x12][0x84][0xc7][0xd3]1\[0xf8];k@[0xa4][0x84][0xc0]!0[0x16][0x14][0xef]av[0x98]{[0xbf]D[0xe0]Kp7[0xc2]9[0x9a][0x6][0xc]/?,[0xef][0xe5]'`L[0x87][0x0][0x16][0x98][0xee][0xb9][0x8e]s[0x8b][0x86][0x2][0xac][0xbf][0x11]`I[0x18][0x6][0xea]$[0x10]>[0xf8][0xf2][0xc8][\r][0xd3][0x85]*[0x2][0xae][0xd9][0xef]7[0xc][0x14].[0xc][0xb3]A[0x1e][0x11]/[0xc7][0xe4][0xa5][0xb1][0x19][0xfc][0xf0][0xf9]1]D;[0xac][0xef] [0x7][0xfa]~kMs[0x87]X[0xc0][0xa8][0x82][0xbd][0x12][0xa7]C[0x8f]p[0xb1][0xbe][0xd0][0xb][0x93][0xd8][0x80][0x1d][0x11]E[0xc3].R[0x8f][0x7]+[0xc2]0j[0x4]v1i<z[0x1c]x[0xf2][0x4]eq[0xdd]K[0xc8]%[0x8a][0xe2]j[0x81][0xbf][0x87][0x83][0xc1][0xca]D[0xc7][0x9c]OM[0xe0][0xc]Q[\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xee][0xe0][0x8]x[0xf0]"[0xa8][0xde][0xbe][0xf9][0xe1]v[0x9]z[0xf3][0x85][0xa3][0xf3]&[0xf8][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << ",[0x8a][0x90][0xdb]`[0xcc][0xb8]W[0xc2]|[0x1a]nS[0xa0][0xe2]D[0x82][0x80][0x2][0xf8]m[0x94]K[0x1e][0xb][0xfb][0xc4]b[0x1f][0xc2]c[0xaa][0xb8];[0xf1]a@[0x2][0x93][0xbc][0x15][0x1b]>[0x10][0xbd]5[0xf5][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "b[0xcf]$[0xe4][0xa1][0x94][0x81][0xf7][0x10][0x1]`[0xf4][0xe0][0xc3]S[0x1f][0xa8][0xed][0xee][0xef][0xad][0xf]|[0xea][0xbe][0xf0]1d[0x19][0x1][0x17]v[0xdf][0xdb][0x84]h1[0xff][0x1][0x9e][0xc5][0x10][0xf0]0[0x4][\r]pL[0x4][0x87][0xa1]1[0x2]x[0x4]5C_[0x80][0xdb]k@[0xdc][0x89][0xb0]G[0x8d][0xf4][0x2][0xd8]-'[0xb4]E[0xc0]~:[0xde]&[0x88][0xa0]7[0xef][0x16][0xa8]Xv[0xb4][0xf8]/UY[0x16][0xf1]g[0xbe][0x6]9[0x88][0xe][0x93]?`DD|[0xac][0xe1]o[0x84]M$a[0x19][0xc6]s.[0xec]7[0x6]|[0x8]n!+EEv"K6[0xc2][0xbf]c[0x16][0x1d][0x86][0xb8][0x2]vb[0xc8]|p[0xe9][0xbf][0x17][0x6][\n]"
2024-01-25 14:22:28 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xe3][0xe9][0xa0][0x4][0xbe][0x98]c.*[0xb6]"[0x8f][0xc6]I[0xc2][0xeb][0x8][0x7][0x4][0xe1][0xb1]Q[0x3]I[0xfe]I[0x18][0xd7][0xb8]o[0x81][0x0][0xad]}[0x82][0x4]\[0xe2]N[0xf4][0xc]-"[0xe4][0xe1][0x85][0x95][0xe9][0xc2][0xfa][0xeb][0xf3][0xfc][0xd0][0x80][0x19][0xef][0x7][0xa9][0xde][0x82]J[0xeb][0xa1]N^[0xa3][0x10][0xd6]0Zx[0xc]#[0xc0][0x87]s%[0xb8][0xd7][0xae][0xaa][0xbc]h=[0x80]<[0xac][0xbd]!/q[0x0][0xa0][0xd8]/,[0x90][0xf7][0x87][0xbf][0x8a][0xa1][0xb0]p[0x15][0xf3][0x0][0xf7]QY/[0xf3][0x88]A4([0x8a],L[0x2]Y#l1@[0xfd][0x2][0xb4][0xc0][0x11][0x8][0xc9]([0x9b]FD[0x1]WBDO[0x82][0x91]/[0xe3][0x1c]f[0x5]][0x92]][0xca][0x13][0xd0]m[0xd8]##"[0xb7]_[0xe0][0xb]n[0x87][0x96][0xfb]A[0x9]pp,pN|[0xbb][0xa1][0x8e][0x8c][0xc9]jL[0x15][0xc6][0xdb][0x18][0x81][0x90][0x9a][0xcb]D*[0xf2]OF[0xe5][0xe0][0x9e][0x1]T8[0x13]M[0xb4][0x99][0xc2][0x8b][0xbb][0xe1][0xe5][0xac][0x16]h[0x14][0xb1]f[0x0][0x4]n,[0x8f][0x5]X~[0x86][0x1a][0xfc][0xf1]l[0xa2]@[0x6]9p[0xd2][0xae]4[0xc3]g^[0xf4][\n]"
...
...
2024-01-25 14:22:29 [main] DEBUG org.apache.http.wire:87 - http-outgoing-0 << "[0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0x0][0xb4][0x81]WO[0x4][0x0]blocks.csvPK[0x5][0x6][0x0][0x0][0x0][0x0][0x4][0x0][0x4][0x0][0xfe][0x0][0x0][0x0][0x97][0xd4][0x15][0x0][0x0][0x0]"
Exception in thread "main" software.amazon.awssdk.core.exception.SdkClientException: Could not parse XML response.
        at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:111)
        at software.amazon.awssdk.core.exception.SdkClientException.create(SdkClientException.java:47)
        at software.amazon.awssdk.protocols.query.unmarshall.XmlDomParser.parse(XmlDomParser.java:59)
        at software.amazon.awssdk.protocols.xml.internal.unmarshall.XmlResponseParserUtils.parse(XmlResponseParserUtils.java:64)
        at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.parseResponse(AwsXmlPredicatedResponseHandler.java:116)
        at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleResponse(AwsXmlPredicatedResponseHandler.java:96)
        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:93)
        at software.amazon.awssdk.core.internal.handler.BaseClientHandler.lambda$successTransformationResponseHandler$7(BaseClientHandler.java:279)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:50)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:38)
        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:72)
        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:55)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:39)
        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:50)
        at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:32)
        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:224)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:173)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:80)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:182)
        at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:74)
        at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
        at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:53)
        at software.amazon.awssdk.services.s3.DefaultS3Client.getObjectAttributes(DefaultS3Client.java:5544)
        at com.example.s3.GetObjectAttributes.getObjectAttributes(GetObjectAttributes.java:83)
        at com.example.s3.GetObjectAttributes.main(GetObjectAttributes.java:69)
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:652)
        at java.xml/com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:83)
        at software.amazon.awssdk.protocols.query.unmarshall.XmlDomParser.parse(XmlDomParser.java:55)
        ... 41 more

It looks like the responses for MinIO and Wasabi are returning the objects themselves. From what I can gather online, it seems as though PK[0x3][0x4] is the start of the PDF and the rest that follows is the actual data. I tried running this on a PDF that I've stored in MinIO for the same bucket and the output is:

2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "GET /65561253860cc0000155116c--58ecef09c54894cb79b9e239/files/dummy.pdf?attributes HTTP/1.1[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Host: 127.0.0.1:7000[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-invocation-id: d2403e86-74cc-ad1f-600e-7f04e90f35e8[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-request: attempt=1; max=4[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Authorization: AWS4-HMAC-SHA256 Credential=<access-key>/20240125/US-EAST-1/s3/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-request;host;x-amz-content-sha256;x-amz-date;x-amz-object-attributes, Signature=<signature>[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "User-Agent: aws-sdk-java/2.23.9 Linux/5.4.0-169-generic OpenJDK_64-Bit_Server_VM/17.0.4.1+1-LTS Java/17.0.4.1 vendor/Azul_Systems__Inc. io/sync http/Apache cfg/retry-mode/legacy[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "x-amz-content-sha256: UNSIGNED-PAYLOAD[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "X-Amz-Date: 20240125T123626Z[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "x-amz-object-attributes: ETag[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Accept-Ranges: bytes[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Content-Length: 13264[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Content-Type: application/pdf[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "ETag: "2942bfabb3d05332b66eb128e0842cff"[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Last-Modified: Thu, 25 Jan 2024 12:35:56 GMT[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Server: MinIO[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Strict-Transport-Security: max-age=31536000; includeSubDomains[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Vary: Origin[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Vary: Accept-Encoding[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "X-Amz-Id-2: 21996febc4916c8ee8de25e3d14cc081cf2ca657027b5ceb2b641f13819537d0[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "X-Amz-Request-Id: 17AD974BFCEE9B5C[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "X-Content-Type-Options: nosniff[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "X-Xss-Protection: 1; mode=block[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Date: Thu, 25 Jan 2024 12:36:26 GMT[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[\r][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "%PDF-1.4[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "%[0xc3][0xa4][0xc3][0xbc][0xc3][0xb6][0xc3][0x9f][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "2 0 obj[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "<</Length 3 0 R/Filter/FlateDecode>>[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "stream[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "x[0x9c]=[0x8e][0xcb][\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0x2]1[0xc]E[0xf7][0xf9][0x8a][0xbb]v[0x11][0x93][0xb6][0xe9][0xb4]0[0x8][0xe][0xe8]~[0xa0][0xe0][0xf][0xf8][0x0][0x17][0x82][0xb3][0x99][0xdf][0xb7][0xad][0x8e]d[0x93]{r[0x12]"X[0xe9][\r][0x81][0xb0][0xc2][0xb2][0xb1]G[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[0xca][0x19][0xcb][\r][0x97][0x1d]^[0xdf]Y[0xad][0xe5]AS![0x8b][0x9c]0X[0xaa]r[0xb9]bVhl[0xfd][0x1d][0xa3][0xa8]8[0xf1][0xe2][0xf](O[0xb2]vN[0x9a]3J[0xe8]$o[0xd1]z[0xc][0x1c]6[0x10][0xeb][0xe6][0xd0][0xa1]w[0xec][0xfe][0x9a]$[0xc9][0x9d]j[0xa8]O[0xfd][0xe8]Q[0xa6][0xce]N[0x85]f[0x9a][0xf1][0x1][0xcb][0x92]([\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "endstream[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "endobj[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "3 0 obj[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "134[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "endobj[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "5 0 obj[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "<</Length 6 0 R/Filter/FlateDecode/Length1 23164>>[\n]"
2024-01-25 14:36:26 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "stream[\n]"
...
...

So, it seems as though the responses for MinIO and Wasabi are problematic in some sense. However, like I mentioned at the top, for V1 of the SDK these requests work for both MinIO and Wasabi.

wcmatthysen commented 9 months ago

I see that for version 1 of the SDK if a GetObjectMetadataRequest is sent to AWS, MinIO or Wasabi then the resulting request is a HEAD request that looks as follows:

2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "HEAD /files/dummy.pdf HTTP/1.1[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Host: storagez.demo.wiehann-pc.s3.af-south-1.amazonaws.com[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-invocation-id: b9752871-757a-630b-7390-e9f2fe47c4d4[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-request: attempt=1;max=4[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-retry: 0/0/500[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Authorization: AWS4-HMAC-SHA256 Credential=<access-key>/20240125/af-south-1/s3/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-request;amz-sdk-retry;content-type;host;user-agent;x-amz-content-sha256;x-amz-date, Signature=<signature>[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Content-Type: application/octet-stream[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "User-Agent: aws-sdk-java/1.12.644 Linux/5.4.0-169-generic OpenJDK_64-Bit_Server_VM/17.0.4.1+1-LTS java/17.0.4.1 vendor/Azul_Systems,_Inc. cfg/retry-mode/legacy[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "X-Amz-Date: 20240125T132719Z[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "x-amz-id-2: EZD8FVRjfV6iF7ulDenctBJrnXanCgzmkAhli8mjLRwsT1mdjOKikHURl6cm5UOQkYG00LSPVAA=[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "x-amz-request-id: C4R5VTYJ4F6HZEQC[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Date: Thu, 25 Jan 2024 13:27:20 GMT[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Last-Modified: Thu, 25 Jan 2024 07:55:32 GMT[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "ETag: "2942bfabb3d05332b66eb128e0842cff"[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "x-amz-server-side-encryption: AES256[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Accept-Ranges: bytes[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Content-Type: application/pdf[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Server: AmazonS3[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "Content-Length: 13264[\r][\n]"
2024-01-25 15:27:19 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 << "[\r][\n]"
The object attributes response is com.amazonaws.services.s3.model.ObjectMetadata@4d847d32

Am I correct in stating that for V2 of the SDK a GET is performed with a query parameter of ?attributes instead, which is not properly implemented in MinIO and Wasabi (and that is why it's breaking). Their responses should have been something along the line of:

2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "GET /files/dummy.pdf?attributes HTTP/1.1[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "Host: storagez.demo.wiehann-pc.s3.af-south-1.amazonaws.com[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-invocation-id: 0f8b41f0-952d-fb75-f629-a762d6cf808e[\r][\n]"
2024-01-25 14:03:25 [main] DEBUG org.apache.http.wire:73 - http-outgoing-0 >> "amz-sdk-request: attempt=1; max=4[\r][\n]"
...
...
<GetObjectAttributesResponse xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><ETag>2942bfabb3d05332b66eb128e0842cff</ETag></GetObjectAttributesResponse>

as XML response. Instead, they're sending back the data of the object itself.

github-actions[bot] commented 9 months ago

⚠️COMMENT VISIBILITY WARNING⚠️

Comments on closed issues are hard for our team to see. If you need more assistance, please open a new issue that references this one. If you wish to keep having a conversation with other community members under this issue feel free to do so.

wcmatthysen commented 9 months ago

Ok, it seems as though MinIO (and probably Wasabi) might not have implemented the get-object-attributes functionality yet. I've seen it mentioned here. As a workaround I've switched to using HeadObjectRequest instead as that correctly returns the e-tag with MinIO and Wasabi. So, it doesn't look to be an issue with the SDK itself. So, I think this issue can be closed.