php 签名不匹配- Amazon S3 API

gkn4icbw  于 2023-02-18  发布在  PHP
关注(0)|答案(4)|浏览(169)

我正在使用Amazon S3和CloudFront的PHP类-Link。但是当我尝试将文件上传到bucket时,我得到了这个错误:
[SignatureDoesNotMatch]我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。
怎么解决呢?

bvuwiixz

bvuwiixz1#

当您注册Amazon时,您可以为自己创建一个密钥对(Amazon将这些访问密钥称为ID和秘密访问密钥)。
这两个密钥用于对亚马逊网络服务的请求进行签名。亚马逊会重新计算签名,并比较它是否与请求中包含的签名匹配。这样,秘密访问密钥就不需要通过网络传输。
如果你得到“签名不匹配”,很可能你使用了一个错误的秘密访问密钥。你能仔细检查访问密钥和秘密访问密钥,以确保他们是正确的吗?

pbwdgjma

pbwdgjma2#

就我个人而言,我收到这个错误是因为我的 meta数据中的字符。
有问题的字符是“-”字符,在Unicode中是“\u2013”,与“-"不同。

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

文档中的注解http:docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#UserMetadata...
Amazon S3以小写形式存储用户定义的元数据。每个名称、值对在使用REST时必须符合US-ASCII,在使用SOAP或通过POST进行基于浏览器的上载时必须符合UTF-8。

jmp7cifd

jmp7cifd3#

我在指定以斜杠字符(/)开头的Key时遇到了这个错误-在删除斜杠后,它工作正常。

q9yhzks0

q9yhzks04#

AWS返回此错误的原因通常是密钥*不正确**

相关问题