【发布时间】:2022-01-05 03:13:48
【问题描述】:
我试图从我的存储桶中获取一个对象,但我总是收到“签名不匹配”错误。我从AWS sample code 获得了我的签名生成功能,所以我确信它有效。我还测试了上传功能,它可以工作。我只是在获取对象功能方面遇到了麻烦。我花了很多时间验证post 中的所有场景/答案,但没有任何效果。所以我在这里寻求你的帮助。
我在标题中遗漏了什么吗?这是一个创建的示例规范请求:
GET
/index.html
host:<bucketname>.s3.amazonaws.com
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
x-amz-date:20211127T120453Z
host;x-amz-content-sha256;x-amz-date
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
编辑1:
我尝试使用javac 编译AWS sample code,然后运行它,get object 函数工作正常。但是当添加到我的 Android 项目中时,它不起作用。为了确保按原样复制示例代码,我生成了它的 jar 文件并将生成的 jar 文件包含在我的项目中。不过,同样的问题。这令人沮丧。啊!
EDIT2:最小的可重现示例
- 从上面的链接下载示例代码
- 将代码添加到您的 Android 项目中,
com.amazonaws.services.s3.sample.RunAllSamples类除外。 - 在您的一项活动中添加此呼叫:
GetS3ObjectSample.getS3Object(<bucketName>, <regionName>, <awsAccessKey>, <awsSecretKey>);
【问题讨论】:
-
您能出示minimal reproducible example 用于创建规范请求并签名的代码吗?
-
@AnonCoward 可重现的代码在链接的示例代码中。我按原样使用了规范签名创建功能。但让我看看如何编辑问题以帮助每个人轻松重现问题。
标签: android amazon-web-services amazon-s3