php 使用我自己的域名访问Amazon S3对象

v1uwarro  于 2023-01-08  发布在  PHP
关注(0)|答案(3)|浏览(278)

我在S3 bucket中有一个公共图片的存储空间。任何人都可以从我的网站中获得一个图片的公共链接,并在他们自己的网站上使用它。问题是这个链接看起来像这样:

https://my-bucket-name.production.s3.eu-central-1.amazonaws.com/images/samplename.png

这很糟糕,因为每次我更改bucket或AWS区域的名称时,链接将不再有效,同时也会向用户暴露很多东西,看起来很难看。
理想的情况是在访问以下内容后重定向到s3公共链路:

https://example.com/awsstatic/images/samplename.png

因此服务器检查URL中是否有awsstatic,并重定向到S3资源以显示图像。
现在我可以看到为它编写一个REST端点,用于文件下载,但是每次有人试图访问图像时,我的服务器都需要缓冲整个图像,这也会带来不必要的额外流量。
做这件事的正确过程是什么?

pcww981p

pcww981p1#

使用CloudFront和备用域名。如果使用此方法,还可以利用边缘位置缓存。

prdp8dxp

prdp8dxp2#

您可以用途:

Route::get('/awsstatic/images/{image}', function($image){
     $url = 'https://my-bucket-name.production.s3.eu-central-1.amazonaws.com/images/' . $image;
     return Redirect::away($url)
});
kb5ga3dv

kb5ga3dv3#

你可以...
这将为您提供一个URL,如下所示:

http://images.example.com/samplename.png

请注意,存储桶名称需要与URL匹配,并且不适用于HTTPS

相关问题