Amazon CloudFront
开发人员指南 (API 版本 2016-09-29)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

排查分配问题

使用此处的信息,诊断和修复您使用 Amazon CloudFront 分配设置网站或应用程序时可能遇到的证书错误、拒绝访问或其他常见问题。

CloudFront 当我尝试添加备用域名时,返回一个 InvalidViewerCertificate 错误

如果在您尝试向分配中添加备用域名(CNAME) 时 CloudFront 返回 InvalidViewerCertificate 错误,请查看以下信息来帮助排查问题。此错误可能指示必须先解决以下问题之一,然后才能成功添加备用域名。

以下错误按照 CloudFront 检查添加备用域名的授权的顺序列出。这可以帮助您诊断问题,因为基于 CloudFront 返回的错误,您可以辨别哪些验证检查已成功完成。

没有证书附加到您的分配。

要添加备用域名 (CNAME),您必须在分配中附加可信且有效的证书。请检查要求,获得符合要求的有效证书,将其附加到您的分配中,然后重试。有关更多信息,请参阅 使用备用域名的要求

在您附加的证书的证书链中有过多的证书。

一个证书链中最多只能有五个证书。减少链中的证书数,然后重试。

证书链包含的一个或多个证书对于当前日期无效。

已添加的证书的证书链中有一个或多个证书无效,可能是证书迄今尚未生效,或者证书已过期。检查证书中 Not Valid Before (在...之前无效)Not Valid After (在...之后无效) 字段,确保基于您所列的日期所有证书都有效。

附加的证书未获得信任的证书颁发机构 (CA) 的签字。

您附加到 CloudFront 以证明备用域名的证书不能是自签名证书。必须获得信任的 CA 的签名。有关更多信息,请参阅 使用备用域名的要求

您附加的证书的格式不正确

证书中包括的域名和 IP 地址的格式以及证书本身的格式都必须遵循证书标准。

发生CloudFront内部错误。

CloudFront 受到内部问题阻止,无法对证书进行验证。在这种情况下,将 CloudFront 返回 HTTP 500 状态代码,并且指出附加证书时 CloudFront 发生内部问题。等待几分钟,然后重试以在证书中添加备用域名。

附加的证书不涵盖您尝试添加的备用域名。

对于每个您要添加的备用域名,CloudFront 要求您附加来自信任的证书颁发机构 (CA) 且覆盖该域名的有效的 SSL/TLS 证书,以验证您有权使用它。请更新您的证书,以包含涵盖您尝试添加的 CNAME 的域名。有关在域名中使用通配符的更多信息和示例,请参阅 使用备用域名的要求

我无法查看我的分配中的文件

如果您无法查看 CloudFront 分配中的文件,请参阅下列主题了解一些常见的解决方案。

您是否同时注册了 CloudFront 和 Amazon S3?

要将 Amazon CloudFront 与 Amazon S3 源一起使用,您必须单独注册 CloudFront 和 Amazon S3。有关注册 CloudFront 和 Amazon S3 的更多信息,请参阅设置 Amazon CloudFront

您的 Amazon S3 存储桶和对象权限设置的正确吗?

如果将 CloudFront 和 Amazon S3 源一起使用,则内容的原始版本存储在 S3 存储桶中。要将 CloudFront 和 Amazon S3 一起使用,最简单的方法是使 Amazon S3 中的所有对象公开可读。为此,您必须为上传到 Amazon S3 中的每个对象明确启用公共读取权限。

如果您的内容为非公开可读内容,则您必须创建 CloudFront 源访问身份 (OAI),以供 CloudFront 访问。有关 CloudFront 源访问身份的更多信息,请参阅使用源访问身份限制对 Amazon S3 内容的访问

对象属性和存储桶属性是独立的。您必须明确授予 Amazon S3 中每个对象的特权。对象不会从存储桶继承属性,对象属性必须独立于存储桶进行设置。

您的备用域名 (CNAME) 配置正确吗?

如果您的域名已经具有现有的 CNAME 记录,请更新此记录或用指向分配的域名的新记录替换它。

此外,确保您的 CNAME 记录指向您分配的域名,而不是 Amazon S3 存储桶。您可确认您的 DNS 系统中的 CNAME 记录指向您分配的域名。要做到这一点,请使用 DNS 工具,如 dig。有关 dig 的信息,请参阅 http://www.kloth.net/services/dig.php

以下示例显示对名为 images.example.com 的域名的 dig 请求和响应的相关部分。在 ANSWER SECTION 下,请参阅包含 CNAME 的行。如果 CNAME 右侧上的值是您的 CloudFront 分配域名,则您域名的 CNAME 记录设置正确。如果是您的 Amazon S3 源服务器或一些其他域名,则 CNAME 记录设置不正确。

[prompt]> dig images.example.com ; <<> DiG 9.3.3rc2 <<> images.example.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917 ;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;images.example.com. IN A ;; ANSWER SECTION: images.example.com. 10800 IN CNAME d111111abcdef8.cloudfront.net. ... ...

有关 CNAME 的更多信息,请参阅 通过添加备用域名 (CNAME) 将自定义 URL 用于文件

您为 CloudFront 分配引用了正确的 URL 吗?

请确保您引用的 URL 使用 CloudFront 分配的域名(或 CNAME),而不是 Amazon S3 存储桶或自定义源。

您需要帮助来解决自定义源的问题吗?

如果您需要 AWS 帮助您解决自定义源的问题,我们可能需要检查您请求中的 X-Amz-Cf-Id 标头条目。如果您没有记录这些条目,您将来可能需要它。有关更多信息,请参阅使用 Amazon EC2 或其他自定义源。如需进一步帮助,请访问 AWS 支持中心

我无法查看我的 RTMP 分配中的文件

如果您无法查看 RTMP 分配中的文件,那么您的 URL 和回放客户端的配置是否正确? RTMP 分配要求您使用 RTMP 协议而不是 HTTP,而且您必须对您的回放客户端作出一些微小的配置更改。有关创建 RTMP 分配的信息,请参阅使用 RTMP 的流媒体文件的任务列表

错误消息:CloudFront 正在使用证书 <证书 ID>

问题:在尝试从 IAM 证书存储中删除 SSL/TLS 证书时,显示“CloudFront 正在使用证书 <证书 ID>”消息。

解决方案:每个 CloudFront Web 分配必须与默认 CloudFront 证书或自定义 SSL/TLS 证书相关联。在删除 SSL/TLS 证书前,必须轮换证书(将当前的自定义 SSL/TLS 证书替换为其他自定义 SSL/TLS 证书),或从使用自定义 SSL/TLS 证书恢复为使用默认 CloudFront 证书。要修复这一问题,请完成以下过程之一中的步骤: