具有 S3 静态站点托管的 Cloudfront 响应 504 错误

Cloudfront with S3 static site hosting responds with 504 error

我已将 S3 + Cloudfront 设置为使用 Namecheap 提供的子域托管静态网站,但是当导航到 Cloudfront URL 或域 URL 时,AWS 响应 504: “无法满足请求”错误。

我完成的步骤是:

  1. 设置 S3 存储桶以拥有静态网站托管:启用托管类型设置为“存储桶托管”。桶是 Publicly accessible.
  2. 设置 Cloudfront 分配,其原始域设置为 [bucket name].s3-website-ap-southeast-2.amazonaws.com,已完成部署。
  3. [subdomain].[domain].io 设置为 Cloudfront 分发中的备用域名。
  4. 从 AWS Certificate Manager 为我的自定义域分配了状态为“已颁发”的自定义 SSL 证书 [subdomain].[domain].io
  5. 在 NameCheap 中设置 CNAME,以便 [subdomain] 指向已传播的 [abc123].cloudfront.net.(由 whatsmydns.net 确认)

我是 Cloudfront + S3 托管的新手,正在尝试提高技能,但不是一般的托管(我通常将 EC2 与 Apache 或 NGINX 一起使用)。

如何解决 504 错误?

这个错误504:“无法满足请求”通常意味着云端分发无法连接到配置的源。您是否可以在没有 CF 的情况下直接使用网站 URL 访问您的系统?

您是否在创建分发期间将 cloudfront 设置为唯一允许意外访问存储桶的对象? https://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-access-to-amazon-s3/

一切都让我相信即使您设置了网站托管功能,您的存储桶也无法访问。

问题原来是我用的[bucket name].s3-website-ap-southeast-2.amazonaws.com和我用的教程一样需要特别注明。现在看来您应该改用 [bucket name].s3.ap-southeast-2.amazonaws.com

完成上述更新并部署分发后,一切都开始工作了。