【问题标题】:How can I add a redirect rule to AWS S3 bucket?如何向 AWS S3 存储桶添加重定向规则?
【发布时间】:2019-11-16 10:16:45
【问题描述】:
【问题讨论】:
标签:
amazon-web-services
amazon-s3
【解决方案1】:
从文档中您想为 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>
【解决方案2】:
当 s3 配置为网站托管时,您可以将 404 自定义文档目标配置为 URL。在这里您可以指定default.png。
我对这个问题的解决方案如下:
将 aws cloudfront 和 s3 存储桶配置为它的源。将lambda@edge 配置到此云端,您可以在其中以编程方式检查图像是否存在,如果不存在,则为所有 404 请求返回默认图像。
Aws cloudfront 还将帮助您在边缘位置缓存图像。
【解决方案3】:
您可以在 S3 前面使用 cloudfront 来添加自定义重定向错误页面。例如,请参阅下面的屏幕截图,其中我有 /error.html 用于在存储桶中找不到图像的任何请求。