所以我的iPhone应用程序成功地将照片上传到Amazon S3。我使用与S3Uploader示例项目相同的代码,以及适用于iOS的最新(1.6.0版)Amazon AWS SDK。问题是间歇性地出现SignatureDoesNotMatch错误(我们计算的请求签名与您提供的签名不匹配,请检查您的密钥和签名方法)。它没有模式。目前我的应用程序通过在委托调用didFailWithError上执行一定数量的重试来解决此错误。Amazon S3 iOS SDK照片上传错误有时候 - SignatureDoesNotMatch
到目前为止,我的测试有足够的重试次数,所以用户不会注意到这个错误,但是当我的签名显然是正确的时候知道我得到了一个签名密钥错误是相当令人沮丧的,因为它有时会起作用。我不确定它是否是URL编码错误(我的签名密钥有+号),但是由于我使用的是iOS SDK,我没有看到如何处理PUT网址。
此外,我验证了我的存储桶名称都是小写字母,我的文件名只是数字和一些字母。我也尝试了不同的地区,他们都有相同的结果。简而言之,它可以从0次重试到5次重试,从而在没有SignatureDoesNotMatch错误的情况下获得成功的PUT。有没有人有类似的问题?任何帮助将不胜感激。谢谢阅读。
我是AWS SDK for iOS的维护人员之一。您表示您使用的是与S3Uploader相同的代码。这是否意味着您正在使用嵌入凭证?请注意,我们不建议您这样做,因为您的应用可能会被泄露并且提取证书。 这就是说,这个错误只发生在最终用户的设备上,还是你能够在你自己的设备或模拟器上重现它? –
嗨,鲍勃。谢谢回复!另外,感谢您获取嵌入凭证的信息。 IAM会是更安全的路线吗?如果是这样,你能指示我使用iOS SDK的IAM的一些例子吗?关于我最初的问题,该应用程序仍在开发中,所以我只能自己测试并生成它(在模拟器中 - 尚未在设备上尝试过)。所以到目前为止,唯一的PUT请求来自我自己。谢谢你的时间。 – rymagno
使用IAM凭证肯定会比使用根凭证更好,但不会消除可能受到危害的应用程序问题。我们建议使用TVM或Web联合身份验证。版本1.6。适用于iOS的AWS SDK的0包含这两种凭证管理方法的样本。您还可以阅读以下文章以获取更多信息[网络联合身份验证](http://aws.amazon.com/articles/4617974389850313),[令牌自动贩卖机](http://aws.amazon.com/articles/4611615499399490 )。 –