如何将重定向规则添加到AWS S3存储桶?

时间:2019-11-16 10:16:45

标签: amazon-web-services amazon-s3

我有一个包含图像和一个default.png图像的AWS S3存储桶。 所有图像都是公开的,但是我希望用户在尝试访问不存在的图像时获得default.pnge.g. .../non_exist.png

https://docs.aws.amazon.com/AmazonS3/latest/dev/CustomErrorDocSupport.html

我发现了一些听起来很相关的东西,但是文档非常糟糕,它只告诉您存在这样的功能,而没有告诉我们如何做。

每当用户尝试访问不在存储桶中的图像时,如何设置默认图像?

谢谢!

3 个答案:

答案 0 :(得分:2)

您要从文档中为HTTP错误设置重定向。

https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html#advanced-conditional-redirects

  

示例3:重定向到HTTP错误

     

假定未找到请求的对象时,您要重定向       向Amazon Elastic Compute Cloud(Amazon EC2)实例的请求。添加重定向规则,以便在返回HTTP状态代码404(未找到)时,站点访问者被重定向到处理该请求的Amazon EC2实例。以下示例还在重定向中插入了对象关键字前缀report-404 /。例如,如果您请求页面ExamplePage.html并导致HTTP 404错误,则该请求将重定向到指定Amazon EC2实例上的页面report-404 / ExamplePage.html。如果没有路由规则,并且发生HTTP错误404,则返回配置中指定的错误文档。

示例路由规则之一为S3存储桶。

  <RoutingRules>
<RoutingRule>
<Condition>
  <HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals >
</Condition>
<Redirect>
  <ReplaceKeyWith>default.png</ReplaceKeyWith>
</Redirect>
</RoutingRule>

答案 1 :(得分:0)

为网站托管配置s3时,可以将404自定义文档目标配置为URL。您可以在此处指定default.png

我对这个问题的解决方案如下: 将aws cloudfront和s3存储桶配置为其起源。将lambda@edge配置到此Cloudfront,在这里您可以以编程方式检查图像是否存在,如果不存在,则返回所有404请求的默认图像。

AWS Cloudfront还将帮助您在边缘位置缓存图像。

答案 2 :(得分:0)

您可以在S3的前面使用cloudfront来添加自定义重定向错误页面。例如,请参见下面的屏幕截图,其中我有/error.html,用于在存储桶中找不到图像的任何请求。

enter image description here