3

目前,我将经过身份验证的 URL 生成为:

$this->s3Client = new S3Client($this->options);
$cmd = $this->s3Client->getCommand('GetObject', [
    'Bucket' => $bucket_name,
    'Key'    => $object_key
]);
$request = $this->s3Client->createPresignedRequest($cmd, PRESIGNED_URL_VALIDITY);
$presignedUrl = (string) $request->getUri();

有没有一种方法可以让我自己在经过身份验证的 URL 中生成查询参数而不使用createPresignedRequest.

我需要单独创建:

?X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=
&X-Amz-Date=20130721T201207Z
&X-Amz-Expires=86400
&X-Amz-SignedHeaders=host
&X-Amz-Signature=<signature-value>

并将其附加到存储桶文件路径以使其成为预签名请求。

4

1 回答 1

0

我不太清楚“我自己在经过身份验证的 URL 中生成查询参数”是什么意思。AWS 使用OpenSSL来处理生成签名和构建签名 URL。

您可以创建完全没有 PHP 的签名 URL,例如在 Linux 命令行上使用该openssl命令。检查此以获取 bash 示例:https ://github.com/gdbtek/aws-tools/blob/master/sign_s3_url.bash 。

您还可以使用没有 S3Client 的 PHP 使用PHP OpenSSL 扩展和利用openssl_*函数来生成签名 URL。

于 2016-04-26T09:22:46.190 回答