跳至内容

为什么我在 Amazon S3 上托管并通过 CloudFront 提供服务的静态网站关闭?

1 分钟阅读
0

我使用 Amazon Simple Storage Service (Amazon S3) 来托管静态网站,并使用 Amazon CloudFront 来为该网站提供服务。网站已关闭,我想确定原因。

解决方法

在开始之前,请确认您可以访问互联网。此外,请确认在您的 CloudFront 分配中指定的源域名指向正确的 S3 存储桶,且没有拼写错误或其他错误。

如果您可以访问互联网且源域名正确,请使用以下故障排除步骤来解决您的问题。

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

“403 拒绝访问”错误

当存在权限问题导致您的网站关闭时,您会收到 403 Access Denied(403 拒绝访问)错误。要解决此问题,请参阅为什么我在使用 Amazon S3 网站端点作为 CloudFront 分配的源时收到“403 access denied”(403 拒绝访问)错误?

**重要事项:**请务必检查您网站的 S3 存储桶的屏蔽公共访问权限设置。这些设置可以阻止对您的网站的匿名请求。屏蔽公共访问权限设置可应用于 AWS 账户或单个存储桶。

“404 未找到”错误

当请求指向不存在的网站对象时,您会收到 404 Not Found(404 未找到)错误。

要解决此问题,请验证配置中的以下设置:

  • 请求的网站对象 URL 不包含拼写错误或不必要的字符。
  • 网站对象存在于托管您网站的 S3 存储桶上。您可以使用 Amazon S3 控制台或 AWS CLI 命令 list-objects-v2 来检查存储桶。

内部错误

当响应中存在内部错误时,内部服务问题可能会影响您的网站。检查 AWS Health Dashboard 中是否存在服务中断和未结事件。

**注意:**大多数 AWS 服务都是区域性的,因此请务必按您的资源所在的 AWS 区域进行搜索。

网站内容损坏或交付问题

当 CloudFront 无法正确呈现或交付您的网站内容时,您可能会收到 JavaScript 文件损坏或 CSS 文件缺失错误。

要解决此问题,请执行以下操作:

  • 正确上传网站资源,并确保网站 HTML 中的 URL 路径是正确的。

  • 对于内容混合错误,请使用 HTTPS 而不是 HTTP 来加载所有 JavaScript 和 CSS 资源文件。

  • 最佳做法是使用响应标头策略根据请求标头缓存内容

  • 如果更新后的网站内容未显示,请运行以下 create-invalidation 命令来创建新的失效:

    aws cloudfront create-invalidation --distribution-id EDFDVBD6EXAMPLE --paths "/example-path/index.html"

    **注意:**请将 EDFDVBD6EXAMPLE 替换为您的 CloudFront 分配的 ID。有关详细信息,请参阅如何从 CloudFront 中删除已缓存的文件?

相关信息

Web Distribution Diagnostic

Troubleshooting error response status codes in CloudFront

AWS 官方已更新 10 个月前