生成预签名URL

优质
小牛编辑
135浏览
2023-12-01

如果你想把自己的资源发放给第三方用户访问,但是又不想开放Bucket的读权限,可以通过生成预签名URL的形式提供给用户一个临时的访问URL。在生成URL时,你可以指定URL过期的时间,从而限制用户长时间访问。

生成预签名URL来获取Object

<?php

$url = $client->generatePresignedUrl(array(
    'Bucket' => 'your-bucket-name',
    'Key' => 'your-object-key',
    'Expires' => new \DateTime("+5 minutes"),
));

echo $url;

上面代码针对Object生成了预签名的URL,用户可以直接使用URL来下载指定Object。 generatePresignedUrl 要求传入 Expires 参数来指定URL的过期时间,在 Expires 指定的时间之前URL都是有效的。上面代码中,我们指明了URL过期时间为5分钟。

生成预签名URL来上传Object

SDK还支持签名URL来进行Object的上传操作:

<?php

$url = $client->generatePresignedUrl(array(
    'Bucket' => 'your-bucket-name',
    'Key' => 'your-object-key',
    'Expires' => new \DateTime("+5 minutes"),
    'Method' => 'PUT',
));

echo $url;

在上面的代码中,我们新加了一个参数 PUT 来指明签名的是一个上传操作(PUT为上传Object的HTTP方法)。在过期时间内我们可以使用返回的URL来上传Object。