【问题标题】:S3 error access when upgrading AWS PHP SDK versions升级 AWS PHP 开发工具包版本时访问 S3 错误
【发布时间】:2019-07-12 04:42:47
【问题描述】:

我正在将使用aws-php-sdk v2 的系统升级到aws-php-sdk v3

v2 我有类似的东西:

$this->s3->upload($bucket, $key, $file, 'public-read');
//Where $this->s3 is a S3Client instance (from the SDK).

而且效果很好。

现在,升级到aws-php-sdk v3 后,它会抛出错误:

在“https://s3.region.amazonaws.com/folder/file.ext”上执行“PutObject”时出错。

客户端错误:PUT https://s3.region.amazonaws.com/folder/file.ext 导致 403 Forbidden 响应

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

我使用与v2 系统中相同的 accessKey 和 secret。

据我所知,负责签名计算的是 PHP SDK。因为我没有手动进行任何计算。

我做错了什么?任何想法如何解决它?

【问题讨论】:

  • 看看这个question.也许对你有帮助。
  • 这个solution 适合我。
  • @Refilon 刚刚阅读了那个问题。我尝试使用$buckets = $this->s3->listBuckets(); foreach ($buckets['Buckets'] as $bucket) { echo $bucket['Name'] . "\n"; } 读取存储桶列表,它起作用了,它与可用存储桶相呼应......所以密钥或秘密不是问题
  • @AshiqurRahman 您的链接等于 Refilon 链接...还有其他想法吗?
  • @SpencerD,我使用的是v3.96.0,刚刚升级到v3.101.0,得到了同样的错误

标签: php aws-php-sdk


【解决方案1】:

刚刚找到了我的问题的答案。

问题是:在aws-php-sdk v2 我有这个代码:

$bucket = "mybucketname/myfolder";
$key = "myfilename.jpg";
$upload = $this->app->S3->upload($bucket, $key, fopen( $local , 'rb'), 'public-read');

这很好用,它不会显示任何警告/错误,但是当升级到aws-php-sdk v3 时它不起作用。 我只是将$bucket$key 值更改为:

$bucket = "mybucketname";
$key = "myfolder/myfilename.jpg";
$upload = $this->app->S3->upload($bucket, $key, fopen( $local , 'rb'), 'public-read');

而且效果很好!

它没有在v2 中抱怨,而是在v3 中抱怨,这真的很奇怪。

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    相关资源
    最近更新 更多