Ошибка синтаксического анализа при получении списка объектов из amazon s3 с использованием Java - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь получить список объектов из корзины Amazon 3. Ниже приведен код, который я использую.

AWSCredentials credentials = new BasicAWSCredentials(serverSettings.getAccessKey(), serverSettings.getSecretesKey());
        ClientConfiguration clientConfiguration = new ClientConfiguration();
        clientConfiguration.setSignerOverride("AWSS3V4SignerType");

AmazonS3 s3Client = AmazonS3ClientBuilder
                .standard()
                .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(serverSettings.getStorageUri(), Regions.AP_SOUTH_1.name()))
                .withPathStyleAccessEnabled(true)
                .withClientConfiguration(clientConfiguration)
                .withCredentials(new AWSStaticCredentialsProvider(credentials))
                .build();

        return s3Client;



public List<String> getBucketFiles(String bucket) {
    ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
                        .withBucketName(bucket)
                        .withDelimiter("/");

                ObjectListing listing = s3Client.listObjects(listObjectsRequest);

log.debug("Bucket : {} contain files : {}", bucket, filesInBucket);
            return filesInBucket;
}

При получении s3Client.listObjects(listObjectsRequest) я получаю следующую ошибку.

2020-02-25 15:45:03.955 DEBUG com.amazonaws.AmazonWebServiceClient - Internal logging successfully configured to commons logger: true
2020-02-25 15:45:03.955 DEBUG com.amazonaws.metrics.AwsSdkMetrics - Admin mbean registered under com.amazonaws.management:type=AwsSdkMetrics
2020-02-25 15:45:04.002 WARN  com.amazonaws.http.AmazonHttpClient - SSL Certificate checking for endpoints has been explicitly disabled.
2020-02-25 15:45:04.086 DEBUG com.amazonaws.request - Sending Request: GET https://s3.console.aws.amazon.com/s3/home?region=ap-southeast-1# /r9a2/ Parameters: ({"delimiter":["/"],"encoding-type":["url"]}Headers: (User-Agent: aws-sdk-java/1.11.232 Windows_10/10.0 Java_HotSpot(TM)_64-Bit_Server_VM/25.241-b07 java/1.8.0_241, amz-sdk-invocation-id: 24587b25-9691-3123-343a-329a6e57d106, Content-Type: application/octet-stream, ) 
2020-02-25 15:45:04.171 DEBUG com.amazonaws.auth.AWS4Signer - AWS4 Canonical Request: '"GET
/s3/home/r9a2/
delimiter=%2F&encoding-type=url
amz-sdk-invocation-id:24587b25-9691-3123-343a-329a6e57d106
amz-sdk-retry:0/0/500
content-type:application/octet-stream
host:s3.console.aws.amazon.com
user-agent:aws-sdk-java/1.11.232 Windows_10/10.0 Java_HotSpot(TM)_64-Bit_Server_VM/25.241-b07 java/1.8.0_241
x-amz-content-sha256:UNSIGNED-PAYLOAD
x-amz-date:20200225T101504Z

amz-sdk-invocation-id;amz-sdk-retry;content-type;host;user-agent;x-amz-content-sha256;x-amz-date
UNSIGNED-PAYLOAD"
2020-02-25 15:45:04.171 DEBUG com.amazonaws.auth.AWS4Signer - AWS4 String to Sign: '"AWS4-HMAC-SHA256
20200225T101504Z
20200225/AP_SOUTH_1/s3/aws4_request
2104ae348572863769961aabcbe488d3aae778eb807905f0d8e67edf95b6f659"
2020-02-25 15:45:04.171 DEBUG com.amazonaws.auth.AWS4Signer - Generating a new signing key as the signing key not available in the cache for the date 1582588800000
2020-02-25 15:45:04.187 DEBUG org.apache.http.client.protocol.RequestAddCookies - CookieSpec selected: default
2020-02-25 15:45:04.187 DEBUG org.apache.http.client.protocol.RequestAuthCache - Auth cache not set in the context
2020-02-25 15:45:04.187 DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection request: [route: {s}->https://s3.console.aws.amazon.com:443][total kept alive: 0; route allocated: 0 of 50; total allocated: 0 of 50]
2020-02-25 15:45:04.202 DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection leased: [id: 0][route: {s}->https://s3.console.aws.amazon.com:443][total kept alive: 0; route allocated: 1 of 50; total allocated: 1 of 50]
2020-02-25 15:45:04.202 DEBUG org.apache.http.impl.execchain.MainClientExec - Opening connection {s}->https://s3.console.aws.amazon.com:443
2020-02-25 15:45:05.961 DEBUG org.apache.http.impl.conn.DefaultHttpClientConnectionOperator - Connecting to s3.console.aws.amazon.com/54.240.226.19:443
2020-02-25 15:45:05.975 DEBUG org.apache.http.impl.conn.DefaultHttpClientConnectionOperator - Connection established 172.27.147.254:63178<->54.240.226.19:443
2020-02-25 15:45:05.975 DEBUG org.apache.http.impl.conn.DefaultManagedHttpClientConnection - http-outgoing-0: set socket timeout to 50000
2020-02-25 15:45:05.975 DEBUG org.apache.http.impl.execchain.MainClientExec - Executing request GET /s3/home?region=ap-southeast-1 HTTP/1.1
2020-02-25 15:45:05.975 DEBUG org.apache.http.impl.execchain.MainClientExec - Proxy auth state: UNCHALLENGED
2020-02-25 15:45:05.975 DEBUG org.apache.http.headers - http-outgoing-0 >> GET /s3/home?region=ap-southeast-1 HTTP/1.1
2020-02-25 15:45:05.975 DEBUG org.apache.http.headers - http-outgoing-0 >> Host: s3.console.aws.amazon.com
2020-02-25 15:45:05.975 DEBUG org.apache.http.headers - http-outgoing-0 >> x-amz-content-sha256: UNSIGNED-PAYLOAD
2020-02-25 15:45:05.975 DEBUG org.apache.http.headers - http-outgoing-0 >> Authorization: AWS4-HMAC-SHA256 Credential=AKIA3N5SPIMUI7VMSV6J/20200225/AP_SOUTH_1/s3/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-retry;content-type;host;user-agent;x-amz-content-sha256;x-amz-date, Signature=2f08656e1ec077e9b5c69ffd4d5ffff623a8576e66298fb77634ce04a0f7b27b
2020-02-25 15:45:05.975 DEBUG org.apache.http.headers - http-outgoing-0 >> X-Amz-Date: 20200225T101504Z
2020-02-25 15:45:05.975 DEBUG org.apache.http.headers - http-outgoing-0 >> User-Agent: aws-sdk-java/1.11.232 Windows_10/10.0 Java_HotSpot(TM)_64-Bit_Server_VM/25.241-b07 java/1.8.0_241
2020-02-25 15:45:05.975 DEBUG org.apache.http.headers - http-outgoing-0 >> amz-sdk-invocation-id: 24587b25-9691-3123-343a-329a6e57d106
2020-02-25 15:45:05.975 DEBUG org.apache.http.headers - http-outgoing-0 >> amz-sdk-retry: 0/0/500
2020-02-25 15:45:05.975 DEBUG org.apache.http.headers - http-outgoing-0 >> Content-Type: application/octet-stream
2020-02-25 15:45:05.975 DEBUG org.apache.http.headers - http-outgoing-0 >> Content-Length: 0
2020-02-25 15:45:05.975 DEBUG org.apache.http.headers - http-outgoing-0 >> Connection: Keep-Alive
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << HTTP/1.1 200 OK
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Server: Server
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Date: Tue, 25 Feb 2020 10:15:06 GMT
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Content-Type: text/html;charset=ISO-8859-1
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Content-Length: 989
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Strict-Transport-Security: max-age=47304000; includeSubDomains
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Cache-Control: proxy-revalidate
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Connection: Keep-Alive
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Set-Cookie: awsc-authTimer=%7B%22start%22%3A%221582625706301%22%7D; Secure; HttpOnly
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Set-Cookie: aws-creds=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/s3; Secure
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Set-Cookie: aws-creds=""; Domain=s3.console.aws.amazon.com; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/s3; Secure
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Set-Cookie: aws-creds=""; Domain=console.aws.amazon.com; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/s3; Secure
2020-02-25 15:45:06.346 DEBUG org.apache.http.headers - http-outgoing-0 << Set-Cookie: JSESSIONID=C16202E2D237233CBB71A1BC2EC29B0A; Path=/; HttpOnly
2020-02-25 15:45:06.346 DEBUG org.apache.http.impl.execchain.MainClientExec - Connection can be kept alive for 60000 MILLISECONDS
2020-02-25 15:45:06.346 DEBUG org.apache.http.client.protocol.ResponseProcessCookies - Cookie accepted [awsc-authTimer="%7B%22start%22%3A%221582625706301%22%7D", version:0, domain:s3.console.aws.amazon.com, path:/s3, expiry:null]
2020-02-25 15:45:06.346 DEBUG org.apache.http.client.protocol.ResponseProcessCookies - Cookie accepted [aws-creds="""", version:0, domain:s3.console.aws.amazon.com, path:/s3, expiry:Thu Jan 01 05:30:10 IST 1970]
2020-02-25 15:45:06.346 DEBUG org.apache.http.client.protocol.ResponseProcessCookies - Cookie accepted [aws-creds="""", version:0, domain:s3.console.aws.amazon.com, path:/s3, expiry:Thu Jan 01 05:30:10 IST 1970]
2020-02-25 15:45:06.346 DEBUG org.apache.http.client.protocol.ResponseProcessCookies - Cookie accepted [aws-creds="""", version:0, domain:console.aws.amazon.com, path:/s3, expiry:Thu Jan 01 05:30:10 IST 1970]
2020-02-25 15:45:06.346 DEBUG org.apache.http.client.protocol.ResponseProcessCookies - Cookie accepted [JSESSIONID="C16202E2D237233CBB71A1BC2EC29B0A", version:0, domain:s3.console.aws.amazon.com, path:/, expiry:null]
2020-02-25 15:45:06.362 DEBUG com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser - Sanitizing XML document destined for handler class com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser$ListBucketHandler
2020-02-25 15:45:06.362 DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection [id: 0][route: {s}->https://s3.console.aws.amazon.com:443] can be kept alive for 60.0 seconds
2020-02-25 15:45:06.362 DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection released: [id: 0][route: {s}->https://s3.console.aws.amazon.com:443][total kept alive: 1; route allocated: 1 of 50; total allocated: 1 of 50]
2020-02-25 15:45:06.362 DEBUG com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser - Parsing XML response document with handler: class com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser$ListBucketHandler
com.amazonaws.SdkClientException: Failed to parse XML document with handler class com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser$ListBucketHandler
    at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseXmlInputStream(XmlResponsesSaxParser.java:161) ~[aws-java-sdk-s3-1.11.232.jar:?]
    at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseListBucketObjectsResponse(XmlResponsesSaxParser.java:317) ~[aws-java-sdk-s3-1.11.232.jar:?]
    at com.amazonaws.services.s3.model.transform.Unmarshallers$ListObjectsUnmarshaller.unmarshall(Unmarshallers.java:70) ~[aws-java-sdk-s3-1.11.232.jar:?]
    at com.amazonaws.services.s3.model.transform.Unmarshallers$ListObjectsUnmarshaller.unmarshall(Unmarshallers.java:59) ~[aws-java-sdk-s3-1.11.232.jar:?]
    at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(S3XmlResponseHandler.java:62) ~[aws-java-sdk-s3-1.11.232.jar:?]
    at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(S3XmlResponseHandler.java:31) ~[aws-java-sdk-s3-1.11.232.jar:?]
    at com.amazonaws.http.response.AwsResponseHandlerAdapter.handle(AwsResponseHandlerAdapter.java:70) ~[aws-java-sdk-core-1.11.232.jar:?]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleResponse(AmazonHttpClient.java:1554) ~[aws-java-sdk-core-1.11.232.jar:?]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1272) ~[aws-java-sdk-core-1.11.232.jar:?]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1056) ~[aws-java-sdk-core-1.11.232.jar:?]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743) ~[aws-java-sdk-core-1.11.232.jar:?]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717) ~[aws-java-sdk-core-1.11.232.jar:?]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) ~[aws-java-sdk-core-1.11.232.jar:?]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) ~[aws-java-sdk-core-1.11.232.jar:?]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) ~[aws-java-sdk-core-1.11.232.jar:?]
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513) ~[aws-java-sdk-core-1.11.232.jar:?]
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4319) ~[aws-java-sdk-s3-1.11.232.jar:?]
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4266) ~[aws-java-sdk-s3-1.11.232.jar:?]
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4260) ~[aws-java-sdk-s3-1.11.232.jar:?]
    at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:831) ~[aws-java-sdk-s3-1.11.232.jar:?]
    at org.apache.sshd.common.file.root.RootedFileSystemProvider$1.iterator(RootedFileSystemProvider.java:204) [sshd-core-2.1.0.jar:2.1.0]
    at org.apache.sshd.server.subsystem.sftp.DirectoryHandle.<init>(DirectoryHandle.java:52) [sshd-sftp-2.1.0.jar:2.1.0]
    at org.apache.sshd.server.subsystem.sftp.SftpSubsystem.doOpenDir(SftpSubsystem.java:746) [sshd-sftp-2.1.0.jar:2.1.0]
    at org.apache.sshd.server.subsystem.sftp.AbstractSftpSubsystemHelper.doOpenDir(AbstractSftpSubsystemHelper.java:696) [sshd-sftp-2.1.0.jar:2.1.0]
    at org.apache.sshd.server.subsystem.sftp.AbstractSftpSubsystemHelper.doProcess(AbstractSftpSubsystemHelper.java:369) [sshd-sftp-2.1.0.jar:2.1.0]
    at org.apache.sshd.server.subsystem.sftp.SftpSubsystem.doProcess(SftpSubsystem.java:335) [sshd-sftp-2.1.0.jar:2.1.0]
    at org.apache.sshd.server.subsystem.sftp.AbstractSftpSubsystemHelper.process(AbstractSftpSubsystemHelper.java:336) [sshd-sftp-2.1.0.jar:2.1.0]
    at org.apache.sshd.server.subsystem.sftp.SftpSubsystem.run(SftpSubsystem.java:308) [sshd-sftp-2.1.0.jar:2.1.0]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_241]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_241]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_241]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_241]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_241]
Caused by: org.xml.sax.SAXParseException: The reference to entity "state" must end with the ';' delimiter.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1472) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEntityReference(XMLDocumentFragmentScannerImpl.java:1850) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3061) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) ~[?:1.8.0_241]
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) ~[?:1.8.0_241]
    at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseXmlInputStream(XmlResponsesSaxParser.java:147) ~[aws-java-sdk-s3-1.11.232.jar:?]
    ... 36 more

Вещи, которые я пытался решить, это: - Добавлена ​​кодировка url как .withEncodingType("url");, но она не работает. - Обновлен доступ к корзине как доступ publi c.

Используемая версия amazon sdk - 1.11.232

Есть идеи, как решить эту проблему?

...