SignatureDoesNotMatch - 亚马逊S3 API(SignatureDoesNo

2019-07-29 02:29发布

我使用Amazon S3和CloudFront的PHP类- 链接 。 但是,当我尝试将文件上传到一个桶里,我得到这个错误:

[SignatureDoesNotMatch]我们出的要求签名不匹配您提供的签名。 检查你的密钥和签名方法。

如何解决呢?

谢谢。

Answer 1:

当你对亚马逊注册,您可以创建自己的密钥对(亚马逊调用那些访问键ID和秘密访问键)。

这两个用来签名请求亚马逊的Web服务。 亚马逊重新计算签名,如果匹配已包含在您的要求的一个比较。 这样的秘密访问密钥永远不需要在网络上进行传输。

如果您收到“签名不匹配”,这是极有可能你使用了错误的秘密访问密钥。 你能仔细检查访问密钥和秘密访问密钥,以确保它们是正确的?



Answer 2:

我个人接受,因为这是在我的元数据中的字符的这个错误。

存在问题的字符是“ - ” chracter这是“\ u2013”​​在Unicode和不同为“ - ”。

$result = $s3->putObject(array(
    'Bucket'       => $bucket,
    'Key'          => $keyname,
    'Metadata' => [
        'name' => 'Terminology – Blah'
    ]
));

从文档的说明http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#UserMetadata ...

亚马逊S3存储在小写用户定义的元数据。 每个名称,值对通过POST使用SOAP或基于浏览器的上传时使用REST和UTF-8时,必须符合US-ASCII。



Answer 3:

我有这个错误与putObject()指定当Key起动用斜杠( / ) -删除斜线后它工作得很好。



文章来源: SignatureDoesNotMatch - Amazon S3 API