首页 > 解决方案 > AWS S3:我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法

问题描述

我正在尝试使用环境变量中提供的访问密钥和机密从 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 应用程序。

标签: javaamazon-web-servicesspring-bootamazon-s3

解决方案


调试了两天,发现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 控制台查找
不允许创建名称以“/”开头的文件夹,但是成本使用报告可以在路径前缀中包含“/”。


推荐阅读