amazon-web-services - 使用 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;
}
}
对象键与访问键相同吗?我正在使用从“您的安全凭证”创建的访问密钥。
解决方案
不,它们不同,S3 对象键是指 S3 存储桶中的文件夹,即 s3://mybucket/mykey
凭证密钥是您的访问密钥和秘密密钥。