2015-06-02 22 views
3

我需要过期eu-central-1中的存储桶的下载链接。创建单独的S3下载链接w /签名算法版本4

随着$s3->getObjectUrl($bucket, $filename, '+5 minutes');从SDK-PHP我只得到unsinged网址,像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 

我不知道为什么?

回答

1

Ahhhh, getObjectUrl不再有第三个参数。 这部着作:

$cmd = $client->getCommand('GetObject', [ 
    'Bucket' => $bucket, 
    'Key' => 'test1G.dat' 
]); 

$request = $client->createPresignedRequest($cmd, '+20 minutes'); 
$presignedUrl = (string) $request->getUri();