我使用Amazon S3和CloudFront的PHP类- 链接 。 但是,当我尝试将文件上传到一个桶里,我得到这个错误:
[SignatureDoesNotMatch]我们出的要求签名不匹配您提供的签名。 检查你的密钥和签名方法。
如何解决呢?
谢谢。
我使用Amazon S3和CloudFront的PHP类- 链接 。 但是,当我尝试将文件上传到一个桶里,我得到这个错误:
[SignatureDoesNotMatch]我们出的要求签名不匹配您提供的签名。 检查你的密钥和签名方法。
如何解决呢?
谢谢。
当你对亚马逊注册,您可以创建自己的密钥对(亚马逊调用那些访问键ID和秘密访问键)。
这两个用来签名请求亚马逊的Web服务。 亚马逊重新计算签名,如果匹配已包含在您的要求的一个比较。 这样的秘密访问密钥永远不需要在网络上进行传输。
如果您收到“签名不匹配”,这是极有可能你使用了错误的秘密访问密钥。 你能仔细检查访问密钥和秘密访问密钥,以确保它们是正确的?
我个人接受,因为这是在我的元数据中的字符的这个错误。
存在问题的字符是“ - ” 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。
我有这个错误与putObject()
指定当Key
起动用斜杠( /
) -删除斜线后它工作得很好。