首页 > 解决方案 > 使用我自己的域名访问 Amazon S3 对象

问题描述

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

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

这很糟糕,因为每次我更改存储桶或 AWS 区域的名称时,链接都将不再有效。它还向用户暴露了很多东西,而且看起来很丑。

理想的情况是在访问后重定向到 s3 公共链接:

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

因此服务器检查 URL 中是否存在awsstatic,并重定向到 S3 资源以显示图像。

现在我可以看到为此编写一个 REST 端点,下载文件,但是每次有人尝试访问图像时,我的服务器都需要缓冲整个图像。它还会获得不必要的额外流量。

这样做的正确过程是什么?

标签: phplaravelamazon-web-servicesamazon-s3

解决方案


您可以使用:

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)
});

推荐阅读