以“路径样式”格式生成 S3 URL

dxh*_*dxh 6 amazon-s3 amazon-web-services aws-sdk

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

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

编辑:澄清:

路径式手段 https://s3.amazonaws.com/my.bucket/my_item?...

虚拟主机风格意味着 https://my.bucket.s3.amazon.aws.com/my_item?...

dxh*_*dxh 6

我找到了解决方案。

您可以AmazonS3Client通过withPathStyleAccessEnabled(true)调用AmazonS3ClientBuilder. 例如下面的 Scala 代码:

val amazonS3Client = AmazonS3ClientBuilder.standard()
  .withRegion(Regions.US_EAST_1)
  .withCredentials(awsCredentialsProvider)
  .withPathStyleAccessEnabled(true)
  .build()
Run Code Online (Sandbox Code Playgroud)

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

val generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, objectName)
...
amazonS3Client.generatePresignedUrl(generatePresignedUrlRequest).toString
Run Code Online (Sandbox Code Playgroud)

生成的 URL 将是路径样式的。

如果我看到在 Java SDK Amazon S3 中配置路径样式,我就不会费心问这个问题了...