我需要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();