【发布时间】:2019-01-21 22:30:42
【问题描述】:
我在 S3 中有一个文件,使用 CloudFront 使用 cname(使用亚马逊 SSL 证书),而文件是公开的,我可以使用 URL 毫无问题地访问它。
公共文件中的有效示例:
https://xxxxxxxxxxxxx.cloudfront.net/media/logos/logo1.png
https://cdn.{mydomain.com}/media/logos/logo1.png
https://s3.amazonaws.com/{mys3bucketname}/media/logos/logo1.png
在 laravel 中
$disk = Storage::disk('cnames3');
$tempUrl = $disk->temporaryUrl($file, now()->addMinutes(5));
我发现的最佳选择是: Should I use CloudFront together as TemporaryUrl for sensitive files in s3
'cnames3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
]
=====
.env
AWS_BUCKET={mys3bucketname}
AWS_ENDPOINT=https://xxxxxxxxxxxxx.cloudfront.net
AWS_URL=https://cdn.{mydomain.com}
但我生成的 URL 包含存储桶的名称,因此它对我不起作用,因为它拒绝我访问。
https://cdn.{mydomain.com}/{mys3bucketname}/media/logos/logoprivate.png?{params}
如何获得与 CNAME 兼容的 URL,或者如何才能使用我自己的域和签名 URL;我寻找这种格式:
https://cdn.{mydomain.com}/media/logos/logoprivate.png?{params}
如果我有私有文件并使用没有端点的“temporaryUrl” 它返回一个有效的网址:
https://s3.amazonaws.com/{mys3bucketname}/media/logos/logoprivate.png?{params}
但是没有我的域,这对我不起作用,我一直在寻找解决方案几个小时,希望你能帮助这个主题的初学者
【问题讨论】:
-
您尝试添加
bucket_endpoint => true吗?
标签: laravel laravel-5 amazon-s3 amazon-cloudfront laravel-filesystem