使用PHP SDK上传到S3,签名不匹配?

时间:2018-12-19 20:34:33

标签: amazon-web-services amazon-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;

        }

    }

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

1 个答案:

答案 0 :(得分:1)

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

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