【问题标题】:Issue creating amazon aws s3 pre signed url PHP创建亚马逊 aws s3 预签名 URL PHP 的问题
【发布时间】:2015-12-30 00:02:00
【问题描述】:

我正在尝试使用 S3 PHP SDK 生成一个预签名的 url 请求,如下所示:

$cmd = self::$S3Client->getCommand('GetObject', array('Bucket' => USER_CONTENT_BUCKET_NAME,'Key'    => $key));

$request = self::$S3Client->createPresignedRequest($cmd, '+20 minutes');

*USER_CONTENT_BUCKET_NAME是在constants.php中定义的桶名
*$key是字符串key。

如果我var_dump($cmd) 可以看到对象从getCommand() 正确返回。

但是从createPresignedRequest() 调用中,我得到了一个异常-

"Argument 2 passed to Guzzle\Service\Client::getCommand() must be of the type array, object given".

帮助?

【问题讨论】:

    标签: php amazon-s3


    【解决方案1】:

    问题已解决。

    很难捕捉到,因为错误消息无助于理解下划线问题。

    This discussion helped a lot.

    亚马逊在他们的 3.x PHP api 中描述,创建预签名 url 的方式是我在上面尝试的方式。

    但是,事实证明我们使用的是 Amazon aws 2.8 版。 在这种情况下,调用应该是这样的:

    $cmd = self::$S3Client->getCommand('GetObject', array('Bucket' => USER_CONTENT_BUCKET_NAME,'Key' => $key));

    $presignedUrl = $cmd->createPresignedUrl('+20 minutes');

    抛出的 Guzzle 异常表明我调用的方法不存在。

    我希望这将有助于其他陷入相同情况的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多