S3 Bucket policy: «org.xml.sax.SAXParseException: преждевременное завершение файла» во время s3client.listObjects () - PullRequest
0 голосов
/ 02 июля 2018

При попытке добавить доступ к действию listObjects в политику корзины, чтобы получить чтение из s3, появляется ошибка:

Действие «Ошибка» не применяется ни к одному из ресурсов в выражении

{
           "Sid": "AllowListingOfUserFolder",
           "Action": ["s3:ListBucket"],
           "Effect": "Allow",
           "Principal":{"AWS":"arn:aws:iam::<ID>:user/my_user"},
           "Resource": "arn:aws:s3:::outputbucket/*",
           "Condition":{"StringLike":{"s3:prefix":["folder/*"]}}

        }

Что не так с политикой?

UPD Удалите «/ *» в разделе «Ресурс и условие» и получите сообщение об ошибке:

org.xml.sax.SAXParseException: преждевременный конец файла.

           {
               "Sid": "AllowListingOfUserFolder",
               "Action": ["s3:ListBucket"],
               "Effect": "Allow",
               "Principal":{"AWS":"arn:aws:iam::<ID>:user/my_user"},
               "Resource": "arn:aws:s3:::outputbucket"
            }

Ошибка в этом коде:

ObjectListing objects = s3Client.listObjects(outputBucketName, outputKeyPrefix);

Ошибка обработки запроса; Вложенное исключение - com.amazonaws.SdkClientException: не удалось проанализировать XML-документ с класс обработчика com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser $ ListBucketHandler] с первопричиной

org.xml.sax.SAXParseException: преждевременное завершение файла. в org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException (Неизвестно Источник) ~ [xercesImpl-2.9.1.jar: na] в org.apache.xerces.util.ErrorHandlerWrapper.fatalError (неизвестный источник) ~ [xercesImpl-2.9.1.jar: na] в org.apache.xerces.impl.XMLErrorReporter.reportError (неизвестный источник) ~ [xercesImpl-2.9.1.jar: na] в org.apache.xerces.impl.XMLErrorReporter.reportError (неизвестный источник) ~ [xercesImpl-2.9.1.jar: na] в org.apache.xerces.impl.XMLErrorReporter.reportError (неизвестный источник) ~ [xercesImpl-2.9.1.jar: na] в org.apache.xerces.impl.XMLVersionDetector.determineDocVersion (Неизвестно Источник) ~ [xercesImpl-2.9.1.jar: na] в org.apache.xerces.parsers.XML11Configuration.parse (Неизвестный источник) ~ [xercesImpl-2.9.1.jar: na] в org.apache.xerces.parsers.XML11Configuration.parse (Неизвестный источник) ~ [xercesImpl-2.9.1.jar: na] в org.apache.xerces.parsers.XMLParser.parse (неизвестный источник) ~ [xercesImpl-2.9.1.jar: na] в org.apache.xerces.parsers.AbstractSAXParser.parse (неизвестный источник) ~ [xercesImpl-2.9.1.jar: na] в com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseXmlInputStream (XmlResponsesSaxParser.java:142) ~ [aws-java-sdk-s3-1.11.125.jar: na] в com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseListBucketObjectsResponse (XmlResponsesSaxParser.java:298) ~ [aws-java-sdk-s3-1.11.125.jar: na] в com.amazonaws.services.s3.model.transform.Unmarshallers $ ListObjectsUnmarshaller.unmarshall (Unmarshallers.java:70) ~ [aws-java-sdk-s3-1.11.125.jar: na] в com.amazonaws.services.s3.model.transform.Unmarshallers $ ListObjectsUnmarshaller.unmarshall (Unmarshallers.java:59) ~ [aws-java-sdk-s3-1.11.125.jar: na] в com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle (S3XmlResponseHandler.java:62) ~ [aws-java-sdk-s3-1.11.125.jar: na] в com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle (S3XmlResponseHandler.java:31) ~ [aws-java-sdk-s3-1.11.125.jar: na] в com.amazonaws.http.response.AwsResponseHandlerAdapter.handle (AwsResponseHandlerAdapter.java:70) ~ [aws-java-sdk-core-1.11.125.jar: na] в com.amazonaws.http.AmazonHttpClient $ RequestExecutor.handleResponse (AmazonHttpClient.java:1503) ~ [aws-java-sdk-core-1.11.125.jar: na] в com.amazonaws.http.AmazonHttpClient $ RequestExecutor.executeOneRequest (AmazonHttpClient.java:1226) ~ [aws-java-sdk-core-1.11.125.jar: na] в com.amazonaws.http.AmazonHttpClient $ RequestExecutor.executeHelper (AmazonHttpClient.java:1030) ~ [aws-java-sdk-core-1.11.125.jar: na] в com.amazonaws.http.AmazonHttpClient $ RequestExecutor.doExecute (AmazonHttpClient.java:742) ~ [aws-java-sdk-core-1.11.125.jar: na] в com.amazonaws.http.AmazonHttpClient $ RequestExecutor.executeWithTimer (AmazonHttpClient.java:716) ~ [aws-java-sdk-core-1.11.125.jar: na] в com.amazonaws.http.AmazonHttpClient $ RequestExecutor.execute (AmazonHttpClient.java:699) ~ [aws-java-sdk-core-1.11.125.jar: na] в com.amazonaws.http.AmazonHttpClient $ RequestExecutor.access $ 500 (AmazonHttpClient.java:667) ~ [aws-java-sdk-core-1.11.125.jar: na] вcom.amazonaws.http.AmazonHttpClient $ RequestExecutionBuilderImpl.execute (AmazonHttpClient.java:649) ~ [aws-java-sdk-core-1.11.125.jar: na] в com.amazonaws.http.AmazonHttpClient.execute (AmazonHttpClient.java:513) ~ [aws-java-sdk-core-1.11.125.jar: na] в com.amazonaws.services.s3.AmazonS3Client.invoke (AmazonS3Client.java:4169) ~ [aws-java-sdk-s3-1.11.125.jar: na] в com.amazonaws.services.s3.AmazonS3Client.invoke (AmazonS3Client.java:4116) ~ [aws-java-sdk-s3-1.11.125.jar: na] в com.amazonaws.services.s3.AmazonS3Client.invoke (AmazonS3Client.java:4110) ~ [aws-java-sdk-s3-1.11.125.jar: na] в com.amazonaws.services.s3.AmazonS3Client.listObjects (AmazonS3Client.java:819) ~ [aws-java-sdk-s3-1.11.125.jar: na] в com.amazonaws.services.s3.AmazonS3Client.listObjects (AmazonS3Client.java:797) ~ [AWS-ява-СДК-s3-1.11.125.jar: на]

1 Ответ

0 голосов
/ 03 июля 2018

Ответь на мой вопрос. Как уже упоминалось в https://forums.aws.amazon.com/thread.jspa?threadID=160117 проблема была с bucketName. Я использовал путь к папке bucketName +, но должен быть только имя корзины

  • com.example.bucketName / folder <- неправильно </li>
  • com.example.bucketName / <- правильно </p>

    ListObjectsRequest listObjectsRequest = новый ListObjectsRequest () .withBucketName ( "com.example.bucketName /") .withPrefix ( "папка /")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...