使用 CloudFront 将 AWS ALB 的默认错误页面覆盖为自定义错误页面

使用 CloudFront 将 AWS ALB 的默认错误页面覆盖为自定义错误页面

我有一个 ALB,其中包含将请求转发到托管在 AWS 上的私有 EC2 的规则,当我进行新部署时,Lambda 中有一个脚本可以关闭我的 ASG 并重新打开它们。在此期间,当 ASG 关闭并且我尝试访问网站时,ALB 会以默认的 503 错误响应,我想用我放置在单独 S3 存储桶中的自定义错误页面覆盖该错误。

我已按照此处答案部分中发布的说明进行操作: AWS ELB“抱歉,网站已关闭”页面

所以我做了以下事情:

  1. 创建了一个 CloudFront 分发,其 ALB URL 来源和该 ALB 的默认 (*) 行为,CNAME 为:*.mywebsite.com
  2. 创建了一个 S3 存储桶,将我的错误页面 html 上传到 /error/index.html 下,并使其成为静态托管网站。
  3. 在现有的 CF 中添加了新的 Origin,其来源为静态托管的 S3 网站 URL。
  4. 添加了 /error/index.html 路径模式和 S3 Origin 的新行为。
  5. 添加了一个新的错误页面规则,其中包含 HTTP 错误代码 503、页面响应路径 /error/index.html 和 HTTP 响应代码 403(我知道 403 对于这种情况下是错误的,但我只是想测试它是否至少会改变响应代码,但它没有)。

但是,当我在 EC2 停机的情况下尝试访问我的网站时,仍然会收到相同的默认 503 错误页面。(我认为这是来自 ALB,对吗?)

关于步骤 2)和 3),我也尝试过使用 S3 Origin,而不是 Custom Origin,但仍然不起作用。

顺便说一句,当我访问分发的 xxx.cloudfront.net URL 时,我得到了带有 200 OK 响应的自定义错误页面(这是正确的吗?)。

我究竟做错了什么?

相关内容