我正在使用Amazon S3和CloudFront的PHP类-Link。但是当我尝试将文件上传到bucket时,我得到了这个错误:[SignatureDoesNotMatch]我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。怎么解决呢?
bvuwiixz1#
当您注册Amazon时,您可以为自己创建一个密钥对(Amazon将这些访问密钥称为ID和秘密访问密钥)。这两个密钥用于对亚马逊网络服务的请求进行签名。亚马逊会重新计算签名,并比较它是否与请求中包含的签名匹配。这样,秘密访问密钥就不需要通过网络传输。如果你得到“签名不匹配”,很可能你使用了一个错误的秘密访问密钥。你能仔细检查访问密钥和秘密访问密钥,以确保他们是正确的吗?
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。
jmp7cifd3#
我在指定以斜杠字符(/)开头的Key时遇到了这个错误-在删除斜杠后,它工作正常。
/
Key
q9yhzks04#
AWS返回此错误的原因通常是密钥*不正确**
4条答案
按热度按时间bvuwiixz1#
当您注册Amazon时,您可以为自己创建一个密钥对(Amazon将这些访问密钥称为ID和秘密访问密钥)。
这两个密钥用于对亚马逊网络服务的请求进行签名。亚马逊会重新计算签名,并比较它是否与请求中包含的签名匹配。这样,秘密访问密钥就不需要通过网络传输。
如果你得到“签名不匹配”,很可能你使用了一个错误的秘密访问密钥。你能仔细检查访问密钥和秘密访问密钥,以确保他们是正确的吗?
pbwdgjma2#
就我个人而言,我收到这个错误是因为我的 meta数据中的字符。
有问题的字符是“-”字符,在Unicode中是“\u2013”,与“-"不同。
文档中的注解http:docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#UserMetadata...
Amazon S3以小写形式存储用户定义的元数据。每个名称、值对在使用REST时必须符合US-ASCII,在使用SOAP或通过POST进行基于浏览器的上载时必须符合UTF-8。
jmp7cifd3#
我在指定以斜杠字符(
/
)开头的Key
时遇到了这个错误-在删除斜杠后,它工作正常。q9yhzks04#
AWS返回此错误的原因通常是密钥*不正确**