Join 1M+ other developers and:
- Get help and share knowledge in Q&A
- Subscribe to topics of interest
- Get courses & tools that help you grow as a developer or small business owner
Setting up Pre-Signed urls with custom domain name and CDN in PHP
Been seeing a few questions surrounding this issue and it seems like the tutorials for this aren’t very clear.
I followed the guide here
So I have a few questions since this is not working:
1) For a CDN, which endpoint do I use exactly? I see 4 possible endpoints and the language is confusing as to which one to use:
- Endpoint: sfo3.digitaloceanspaces.com
- Origin: xxxx
- Edge: xxxx
- Subdomain: xxxx
2) When I use the PHP code example, I get back the wrong path. It adds the bucket name into the path. For example:
$cmd = $client->getCommand('GetObject', [ 'Bucket' => 'example-space-name', 'Key' => 'path/to/file.ext' ]); $request = $client->createPresignedRequest($cmd, '+5 minutes'); $presignedUrl = (string) $request->getUri(); echo $presignedUrl."\n"; // https://mycdn.website.com/example-space-name/path/to/file.ext
That path is incorrect I believe. It should be:
When I was testing with the endpoint values, I was getting a mix of XML error responses. Either
One last thing, I noticed this text in regards to using a CDN:
You can use presigned URLs with the Spaces CDN. To do so, configure your SDK or S3 tool to use the non-CDN endpoint, generate a presigned URL for a GetObject request, then modify the hostname in the URL to be the CDN hostname (<space-name>.<region>.cdn.digitaloceanspaces.com, unless the Space uses a custom hostname).
I don’t see a code example for this case in PHP or any of the other languages.
Where am I going wrong here?