java - 生成的预签名 URL 的指定存储桶不存在
问题描述
当我将其粘贴到浏览器中时,它应该会给我一张图片,但是我收到“指定的存储桶不存在”错误
如果我点击这个网址,但它可以工作:https ://some-test-bucket.s3.us-west-1.amazonaws.com/0020f388-b013-425d-812f-e972ee86d08e%3A%3A67%3A%3A0
有人可以帮我理解为什么预签名的网址不起作用吗?
获取预签名网址的代码:
public String getURLForImage(String key){
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DAY_OF_YEAR, 5);
GeneratePresignedUrlRequest presignedUrlRequest = new GeneratePresignedUrlRequest(S3_BUCKET_NAME, key).withMethod(HttpMethod.GET).withExpiration(c.getTime());
return s3.generatePresignedUrl(presignedUrlRequest).toString();
}
下面是生成 S3 Bean 的代码。似乎不尊重 .withPathStyleAccessEnabled 选项
@Bean
@RequestScope
public AmazonS3 produceS3(){
System.out.println("CREATING S3 CLIENT: ");
return AmazonS3ClientBuilder
.standard()
.withRegion(Regions.US_WEST_1)
.withPathStyleAccessEnabled(false)
.build();
}
解决方案
推荐阅读
- tfs - 返回 Azure DevOps Server (TFS) 中管道的旧视图
- android - Android - 滚动或平移 Google 地图等网站时刷新 WebView
- html - 快速 Html 查看器 QT
- php - Laravel whereIn 不返回所有数据
- javascript - 反应应用程序中是否可以有多个 BrowserRouter
- python-3.x - Python Pandas,尝试更新单元格值
- jquery - 使用 jQuery AJAX 在 Laravel 中上传图片
- react-native - 如何下载资产/文件(.JSON)并将它们存储在我的应用程序中,而不是直接在 React Native Expo 中的用户手机上
- jenkins - 列出按节点分组的所有 Jenkins 构建
- android - 在 super.onCreate() 之前将 Hilt 注入到活动中