问题创建amazon aws s3预签名网址PHP

时间:2015-12-29 14:30:54

标签: php amazon-s3

我尝试使用S3 PHP SDK生成预先签名的网址请求,如下所示:

*USER_CONTENT_BUCKET_NAME

*$key是constants.php中定义的存储桶名称 var_dump($cmd)是字符串键。

如果我getCommand()我可以看到createPresignedRequest()正确返回了该对象。

但是从"Argument 2 passed to Guzzle\Service\Client::getCommand() must be of the type array, object given". 电话中,我得到了一个例外 -

[button tag]

帮助?

1 个答案:

答案 0 :(得分:0)

问题已解决。

相当难以捕捉,因为错误信息无助于理解下划线问题。

This discussion helped a lot.

亚马逊用他们的3.x PHP api描述了创建预签名网址的方式,就是我上面尝试的方式。

然而,事实证明我们正在使用Amazon aws的2.8版本。 在这种情况下,呼叫应该是这样的:

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

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

Guzzle异常抛出是我调用的方法不存在的一个症状。

我希望这会帮助其他人陷入同样的​​境地。