You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP(Laravel框架)下用AWS SDK生成带自定义域名的签名URL

使用自定义域名生成CloudFront签名URL(Laravel + AWS SDK)

嘿,其实这个需求改起来挺简单的,核心就是替换掉生成签名URL时依赖的资源域名就行,不过先得确认一个前提:你的自定义域名已经正确绑定到CloudFront分发上了——包括在CloudFront控制台配置了CNAME记录,并且用ACM(AWS Certificate Manager)申请了对应域名的SSL证书(确保HTTPS访问正常)。

接下来直接修改你的代码就行,具体步骤如下:

1. 替换资源URL的域名

把原来的CloudFront默认域名https://dbk93n3xxxxxx.cloudfront.net换成你的自定义域名,比如https://video.yourdomain.com(根据你的实际域名调整)。

2. 修改后的完整代码示例

use Carbon\Carbon;
use Aws\CloudFront\CloudFrontClient;

// 初始化CloudFront客户端(这部分和原来一致)
$cloudFront = new CloudFrontClient([
    'region' => env('AWS_REGION'),
    'version' => 'latest'
]);

$path = "R180417XXXX.mp4";
// 这里换成你的自定义域名
$resourceURL = "https://video.yourdomain.com/" . $path;

// 设置URL过期时间(5分钟后,和原来逻辑一致)
$expires = Carbon::now()->addMinutes(5)->timestamp;

// 生成签名URL(参数逻辑不变,确保私钥和密钥对ID正确)
$signedUrlCannedPolicy = $cloudFront->getSignedUrl([
    'url' => $resourceURL,
    'expires' => $expires,
    'private_key' => base_path('pk-APKAI2PXXXXXXXXXXXXX.pem'),
    'key_pair_id' => env('AWS_CLOUDFRONT_KEY_PAIR_ID') // 建议把密钥对ID存在.env里,更安全
]);

几个关键注意事项

  • 确保你的自定义域名已经在CloudFront分发的「Alternate domain names (CNAMEs)」里配置过,并且DNS服务商那边已经把该域名的CNAME记录指向CloudFront的默认域名。
  • 签名用的密钥对(private_key和key_pair_id)必须是CloudFront控制台里关联的密钥对,不然签名会无效。
  • 如果你的自定义域名用了HTTPS,一定要确保在CloudFront分发里选择了对应的ACM证书(必须是在us-east-1区域申请的证书,哪怕你的分发在其他区域)。

内容的提问来源于stack exchange,提问作者baraear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:51:02