【问题标题】:How to separately create a presigned URL query parameter?如何单独创建预签名 URL 查询参数?
【发布时间】:2016-04-26 08:50:16
【问题描述】:

目前我正在生成经过身份验证的 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>

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

【问题讨论】:

标签: php amazon-web-services amazon-s3 pre-signed-url


【解决方案1】:

我不太清楚“我自己在经过身份验证的 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 extensionopenssl_* 函数生成签名 URL。

【讨论】:

  • 你能给我看一个例子吗,我可以在其中构建一个持续的 URL,例如 2 days
  • 您想要实现的目标是使用 PHP SDK S3Client 无法实现的?
  • 我有一个s3 file URL。我想把它转换成预签名的 URL。
  • 参考@Michael - sqlbot 的评论。有一个文档链接。
猜你喜欢
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
相关资源
最近更新 更多