【问题标题】:AWS S3: The request signature we calculated does not match the signature you provided. Check your key and signing methodAWS S3:我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法
【发布时间】:2019-12-01 21:18:00
【问题描述】:

我正在尝试使用环境变量中提供的访问密钥和密钥从 S3 下载 CSV 文件。以下是我基于调试的发现。

  1. 我的一个文件夹名称以 / 开头,这导致了这个问题,其他文件夹和文件是工作文件。
  2. AWS 控制台不允许您创建名称以/ 开头的文件夹。但是,成本使用报告可以在报告路径前缀中包含 /,这会在 S3 存储桶中创建该文件夹。
  3. 我可以使用 CLI 下载文件,方法是在文件夹名称前再添加一个 /。我还检查了 Java SDK 代码,它也做同样的事情,但它不起作用。
  4. 我可以列出文件,但是当我尝试获取 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


【解决方案1】:

调试了两天,发现Spring boot版本有问题。

我在更新 Spring Boot 版本 2.1.0.RELEASE 后使用的是 Spring Boot 版本 2.1.3.RELEASE,它就像一个魅力.

注意:此问题仅发生在少数以“/”开头的 S3 文件夹中。

仅供参考: https://github.com/aws/aws-sdk-java/issues/1919#issuecomment-471451804

从 AWS 发现
AWS 控制台不允许创建名称以“/”开头的文件夹,但是成本使用报告可以在路径前缀中包含“/”。

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 2015-12-31
    • 2021-04-11
    • 1970-01-01
    • 2022-01-05
    • 2015-05-18
    • 2015-06-01
    • 2017-07-23
    相关资源
    最近更新 更多