首页 > 解决方案 > 使用 PHP SDK 上传到 S3,签名不匹配?

问题描述

这是我使用 PHP 上传到 S3 的函数。我收到此错误:

我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。

我正在使用正确的密钥和秘密。我做错了什么?

 function upload_s3bucket($file,$name,$bucket) {
        require(APPPATH.'/third_party/aws/aws-autoloader.php');
        $key = "*******";
        $secret = "************";
        $file = "/var/www/vhosts/example.com/website/assets/media/images/test.jpg";

        if(isset($file)){

            $s3 = new Aws\S3\S3Client([
                'region'  => 'us-east-1',
                'version' => 'latest',
                'credentials' => [
                    'key'    => $key,
                    'secret' => $secret,
                ]
            ]);     

            $result = $s3->putObject([
                'Bucket' => 'cdn-example.com/'.$bucket,
                'Key'    => $key,
                'SourceFile' => $file,
                'ACL'   => 'public-read'    
            ]);

            return $file_name;

        }

    }

对象键与访问键相同吗?我正在使用从“您的安全凭证”创建的访问密钥。

标签: amazon-web-servicesamazon-s3

解决方案


不,它们不同,S3 对象键是指 S3 存储桶中的文件夹,即 s3://mybucket/mykey

凭证密钥是您的访问密钥和秘密密钥。


推荐阅读