При попытке добавить доступ к действию 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: на]