【问题标题】:AmazonS3 SDK: Access denied when Listing ObjectsAmazonS3 SDK:列出对象时拒绝访问
【发布时间】:2020-06-22 17:34:17
【问题描述】:

我正在尝试列出存储桶中的对象,但当我尝试列出存储桶中的对象时却一直被阻止。

但是,所有s3.list* 命令都失败并出现以下错误。如何从存储桶中的文件夹返回文件列表?

代码

LOGGER.info("tomorrowBucket: [{}]", tomorrowBucket);
if (s3.doesBucketExistV2(tomorrowBucket)) {
    LOGGER.info("made it");
    LOGGER.info("probably gonna fail");
    for (S3ObjectSummary summary : S3Objects.inBucket(s3, tomorrowBucket)) {
         LOGGER.info(" * " + summary.getKey() + "  " + "(size = " + summary.getSize() + ")");
     }
     LOGGER.info("made it past");
}

日志

  tomorrowBucket: [20200311]
 - made it
 - probably gonna fail

错误

     com.amazonaws.SdkClientException: Failed to parse XML document with handler class com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser$ListObjectsV2Handler
...
    Caused by: org.xml.sax.SAXParseException; Premature end of file.

【问题讨论】:

  • 桶不包含其他桶。还是您使用“存储桶”一词来表示 S3 存储桶以外的其他东西?
  • @jarmod 我的意思是存储桶中的文件夹
  • @jarmod 我已经尝试移动到listObjects,但我收到了Failed to parse XML Document with handler... 错误
  • 您是否使用最新版本的适用于 Java 的 AWS 开发工具包并调用 AmazonS3Client 的 listObjectsV2(String bucketName) 方法?
  • @jarmod 我正在使用 sdk 1.11.740,我已经相应地更新了上面的代码,使用(并失败)listObjectsV2

标签: java amazon-s3 aws-sdk


【解决方案1】:

我在端点配置中指定了存储桶,而不是直接指向租户:

不正确

hs3Client.setEndpoint("bucketname.europe.hcp.example.com");

正确

// Set up the service point to be the tenant in HCP.
hs3Client.setEndpoint("europe.hcp.example.com");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多