Presign URLs
You may "presign" all requests with the $client->presign()
function. It will return
a URL that is safe to share to anyone. The URL contains encrypted authentication
parameters.
This feature can be used if you want to give a user access to a file on S3 but only for a limited time.
use AsyncAws\S3\Input\GetObjectRequest;
use AsyncAws\S3\Input\PutObjectRequest;
use AsyncAws\S3\S3Client;
$s3 = new S3Client();
// To allow reading of a file use:
$input = new GetObjectRequest([
'Bucket' => 'my-bucket',
'Key' => 'test',
]);
// To allow uploading a file use:
// $input = new PutObjectRequest([
// 'Bucket' => 'my-bucket',
// 'Key' => 'test',
// ]);
$url = $s3->presign($input, new \DateTimeImmutable('+60 min'));
echo $url;
Note: AWS has limitations on the expiration length. Read more in the docs.