创建签名算法版本4的签名S3下载链接


Create singed S3 download link w/ signature algorithm version 4

我需要eu-central-1中桶的即将过期的下载链接。

$s3->getObjectUrl($bucket, $filename, '+5 minutes');从SDK-PHP我只得到未标记的url,如http://.../file.txt没有查询字符串。

完整代码:

require 'vendor/autoload.php';
use Aws'S3'S3Client;
$client = S3Client::factory([
    'version' => 'latest',
    'region'  => 'eu-central-1',
    'signature'    => 'v4',
    'credentials' => [
        'key'    => 'xxxxx',
        'secret' => 'xxxxx'
    ]
]);
$plainUrl = $client->getObjectUrl('mybucket', 'data.txt');
// > https://my-bucket.s3.amazonaws.com/data.txt
$signedUrl = $client->getObjectUrl('mybucket', 'data.txt', '+10 minutes');
// > https://my-bucket.s3.amazonaws.com/data.txt

我不知道为什么?

啊哈,getObjectUrl不再有第三个参数。如此:

$cmd = $client->getCommand('GetObject', [
    'Bucket' => $bucket,
    'Key'    => 'test1G.dat'
]);
$request = $client->createPresignedRequest($cmd, '+20 minutes');
$presignedUrl = (string) $request->getUri();