【问题标题】:Generate S3 URL in "path-style" format以“路径样式”格式生成 S3 URL
【发布时间】:2017-10-21 07:00:04
【问题描述】:

https://wincent.com/wiki/HTTPS_access_to_Amazon_S3_buckets http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html

有没有办法使用 Java SDK 以路径样式而不是虚拟主机样式生成预签名的 S3 临时 URL?

编辑:澄清:

path-style 表示https://s3.amazonaws.com/my.bucket/my_item?...

虚拟主机样式表示https://my.bucket.s3.amazon.aws.com/my_item?...

【问题讨论】:

  • 不确定你能做到这一点,但我对你为什么喜欢路径样式感兴趣。
  • 只是想确认它是否(不可能)。如果没有,那么更改存储桶名称将是唯一的方法。
  • 您能否编辑您的问题以说明“路径样式”和“虚拟主机样式”的含义,以使未来的读者受益?
  • @jarmod 如果您的存储桶名称中包含点,则您需要路径样式,以便 SSL 可以工作。对“更改存储桶名称”的引用似乎暗示这可能是正在遇到的未说明的问题,并且第一个链接暗示了同样的事情。我怀疑就是这样,因为我真的想不出任何其他理由想要这种行为。

标签: amazon-web-services amazon-s3 aws-sdk


【解决方案1】:

我找到了解决办法。

您可以通过在AmazonS3ClientBuilder 上调用withPathStyleAccessEnabled(true) 创建您的AmazonS3Client。例如在以下 Scala 代码中:

val amazonS3Client = AmazonS3ClientBuilder.standard()
  .withRegion(Regions.US_EAST_1)
  .withCredentials(awsCredentialsProvider)
  .withPathStyleAccessEnabled(true)
  .build()

然后您以通常的方式生成 URL。

val generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, objectName)
...
amazonS3Client.generatePresignedUrl(generatePresignedUrlRequest).toString

生成的 URL 将是路径样式。

如果我看过Configure path-style in Java SDK Amazon S3,我就不会问这个问题了……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 2013-04-13
    相关资源
    最近更新 更多