我试图从我的bucket中获取一个对象,但总是出现“签名不匹配”错误。我从AWS示例代码中获得了签名生成函数,因此我确信这是可行的。我还测试了上传功能,它可以正常工作。我只是在使用get object函数时遇到了问题。我花了大量的时间来验证这篇文章中的所有场景/答案,但什么都没用。所以我在这里寻求你的帮助。
我在标题中遗漏了什么吗?以下是创建的示例规范请求:
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示例代码,然后运行它,get对象函数工作正常。但是当添加到我的Android项目中时,它不起作用。为了确保我按原样复制示例代码,我生成了它的jar文件并将生成的jar文件包含在我的项目中。尽管如此,同样的问题。这很令人沮丧。Argg!
EDIT2:最小可重现示例
com.amazonaws.services.s3.sample.RunAllSamples
类。GetS3ObjectSample.getS3Object(
这是一个有趣的例子,基本上可以归结为HttpURLConnection的Android实现:
com.squareup.okhttp.internal.huc.HttpURLConnectionImpl
行为与JVM提供的实现不同:
太阳。网www.protocol。http。HttpURLConnection
与此相关的区别是,在第323行附近,Android实现检查了以下两个方面:
doOutput
标志,以及方法
字段是否为"GET"
如果这两个都是真的,它“有益地”将方法更改为“POST”,这意味着基于包含请求方法的规范请求的签名不再有效。这就是为什么其他样本的工作没有问题;因为他们已经在使用除“GET”之外的请求方法,所以它没有改变。
在AWS示例代码中,输出字段设置为:
com/amazonaws/services/s3/example/util/HttpUtils.java:86
因此,我建议继续使用以下定义:
com.amazonaws.services.s3.sample.GetS3ObjectSample.getS3Object(...)
作为如何计算所需授权头的指南,请使用您首选的sane HTTP客户端,而不是:
com.amazonaws.services.s3.sample.util.HttpUtils
随样本提供的类。
我正试图在iOS上执行AWS上传。我正在遍历一个对象数组,并将大量大小不同的图像(1000+)上传到S3 bucket中。使用: 当我到达大约第700张图像时,上传过程开始变得非常缓慢,然后我开始在随后的每一次图像上传中收到这些错误: 编辑2:每个Yosuke请求的代码(我只是构建了一个请求对象数组,然后循环遍历数组并上传每个请求):
从过去的3天,我被困在同一个问题的签名。我不明白如何走出这一步。 我正在尝试获取一个预签名的网址: 我使用这个预先签名的url将图像文件上传到s3存储桶中,方法是: 并且该文件已成功上传到 s3 存储桶,我可以在 aws s3 存储桶控制台中看到。 问题是,如果我尝试从终端使用curl放置任何其他图像文件,或者尝试在浏览器中打开url,我得到的预签名url会给我带来签名不匹配错误。 如果我做错了,
我试图上传图片到s3与预先签署的url从aws SDK生成。 对于上面的返回url,当我试图访问它时,它给出了一个错误 null CORS配置 更新的解决方案
我试图生成签名的URL来上传和下载我的S3 bucket中的对象,但它失败了,“SignatureDoesNotMatch”如下所示。 我明白这是这里描述的问题的症状 而且,是的,我的桶存在。我怎么能用这个水落石出呢?
我正试图上传一张使用AWS S3 SDK的图片。现在,这以前是有效的,但由于某种原因,它停止了工作,我开始得到这个错误: 现在,当我点击链接时,它会给我一个'NoSuchKey'错误: 我真的不明白这一点,因为我的键实际上只是一个字符串。我也试图上传一些东西,所以显然关键不会存在-我正在努力上传它! 另一个教程来自一个博客,我没有它的链接,但我上面的代码与文档中的这个教程相同。我所做的只是把它移到
我有不同的对象来生成保存在S3中的文件。每个对象调用以下函数来保存文件。 我只有以下几个问题。对象要么总是保存文件,要么永远无法保存文件。 错误是 我们计算的请求签名与您提供的签名不匹配。检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅REST身份验证和SOAP身份验证。(服务:S3,状态代码:403,请求ID:79b6c0a2-0d74-1f30-a4bf-246e9631ccd8,扩