【发布时间】:2019-12-01 21:18:00
【问题描述】:
我正在尝试使用环境变量中提供的访问密钥和密钥从 S3 下载 CSV 文件。以下是我基于调试的发现。
- 我的一个文件夹名称以
/开头,这导致了这个问题,其他文件夹和文件是工作文件。 - AWS 控制台不允许您创建名称以
/开头的文件夹。但是,成本使用报告可以在报告路径前缀中包含/,这会在 S3 存储桶中创建该文件夹。 - 我可以使用 CLI 下载文件,方法是在文件夹名称前再添加一个
/。我还检查了 Java SDK 代码,它也做同样的事情,但它不起作用。 - 我可以列出文件,但是当我尝试获取 s3Object 时,它给出了
SignatureDoesNotMatch错误。
我尝试了所有可能的解决方案,但最终无法通过 AWS JAVA SDK 工作,但它正在使用 AWS CLI。
有人可以提供任何指针或参考吗?我尝试了互联网上提供的一些解决方案,但对我没有任何效果。
低于错误
com.amazonaws.services.s3.model.AmazonS3Exception:
我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。 (服务:Amazon S3;状态代码:403;错误代码:SignatureDoesNotMatch;请求 ID:A2C6F2F49F230E18;S3 扩展请求 ID:xxxxxxxx),S3 扩展请求 ID:yyyyyyyyyyyy
注意:我正在使用带有 JAVA SDK 版本 1.11.510 的 Spring Boot 应用程序。
【问题讨论】:
-
最好添加键名(路径),即您正在使用的代码部分。这很可能是由于 char 编码或 URL 编码
标签: java amazon-web-services spring-boot amazon-s3