配置和使用标准日志(访问日志) - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置和使用标准日志(访问日志)

您可以配置 CloudFront 为创建日志文件,其中包含有关 CloudFront 收到的每个用户请求的详细信息。这些日志称为标准日志,也称为访问日志。如果您启用标准日志,则还可以指定要在其中保存文件的 Amazon S3 存储桶。 CloudFront

您可以在创建或更新分配时启用标准日志。有关更多信息,请参阅您创建或更新分配时指定的值

CloudFront 还提供实时日志,可为您提供有关向分配发出的实时请求的信息(日志将在收到请求后的几秒钟内传送)。您可以使用实时日志来进行监控和分析,并根据内容交付性能采取相应措施。有关更多信息,请参阅 实时日志

标准日志记录的工作方式

下图显示了如何 CloudFront 记录有关对象请求的信息。


					访问日志的基本流程

以下内容说明了如何 CloudFront 记录有关对象请求的信息,如上图所示。

  1. 在这张图中,你有两个网站,A 和 B,以及两个相应的 CloudFront 发行版。用户使用与您的分配相关联的 URL 来请求您的对象。

  2. CloudFront 将每个请求路由到相应的边缘位置。

  3. CloudFront 将有关每个请求的数据写入特定于该分配的日志文件中。在本示例中,与分配 A 有关的请求信息将写入分配 A 的日志文件,与分配 B 有关的请求信息将写入分配 B 的日志文件。

  4. CloudFront 定期将分配的日志文件保存到您在启用日志记录时指定的 Amazon S3 存储桶中。CloudFront 然后开始将有关后续请求的信息保存在新的分发日志文件中。

如果在给定时间内无用户访问您的内容,您在该时间内不会接收任何日志文件。

日志文件中的每个条目分别提供有关单个请求的详细信息。有关文件格式的更多信息,请参阅标准日志文件格式

注意

我们建议您使用日志来了解内容请求的性质,而不是对所有请求进行全面统计。 CloudFront 尽力提供访问日志。特定请求的日志条目可能会在实际处理该请求之后很久才进行传输,而且极少数情况下,可能根本不会传输日志条目。当访问日志中省略了日志条目时,访问日志中的条目数将与 Amazon 账单和使用率报告中出现的使用率不匹配。

为您的标准日志选择 Amazon S3 存储桶

在为分配启用日志记录功能时,您可以指定 CloudFront要在其中存储日志文件的 Amazon S3 存储桶。如果您使用 Amazon S3 作为源,我们建议您不要对日志文件使用同一个桶;使用单独的桶可简化维护。

重要

不要选择 S3 对象所有权设置为强制桶拥有者的 Amazon S3 桶。该设置会禁用存储桶及其中的对象的 ACL,从而 CloudFront阻止将日志文件传送到存储桶。

重要

请勿在以下任何区域选择 Amazon S3 存储桶,因为 CloudFront 不会向这些区域的存储桶传输标准日志:

  • 非洲(开普敦)

  • 亚太地区(香港)

  • 亚太地区(海得拉巴)

  • 亚太地区(雅加达)

  • 亚太地区(墨尔本)

  • Canada(Central)

  • 欧洲地区(米兰)

  • 欧洲(西班牙)

  • 欧洲(苏黎世)

  • 以色列(特拉维夫)

  • 中东(巴林)

  • 中东(阿联酋)

可将多个分配的日志文件存储在同一存储桶中。当您启用日志记录时,可为文件名指定一个可选前缀,以便您可以跟踪哪些日志文件与哪些分配相关联。

配置标准日志记录和访问您的日志文件所需的权限

重要

从 2023 年 4 月开始,您需要为用于 CloudFront 标准日志的新 S3 存储桶启用 S3 访问控制列表 (ACL)。ACL 可以在存储桶创建步骤中启用,也可以在创建存储桶之后启用。

有关这些更改的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的新 S3 桶的原定设置常见问题解答和《Amazon 新闻博客》中的提醒:Amazon S3 安全更改将于 2023 年 4 月发布

您的 Amazon 账户必须对您为日志文件指定的存储桶拥有以下权限:

  • 存储桶的 S3 访问控制列表 (ACL) 必须向您授予 FULL_CONTROL。如果您是存储桶拥有者,则默认情况下,您的账户具有此权限。如果您不是,则存储桶拥有者必须更新存储桶的 ACL。

  • s3:GetBucketAcl

  • s3:PutBucketAcl

请注意以下几点:

存储桶的 ACL

当您创建或更新分配并启用日志记录时, CloudFront 使用这些权限更新存储桶的 ACL 以向awslogsdelivery账户FULL_CONTROL授予权限。awslogsdelivery 账户将日志文件写入存储桶。如果您的账户没有更新 ACL 所需的权限,则创建或更新分配将会失败。

在某些情况下,如果以编程方式提交请求以创建存储桶,但具有指定名称的存储桶已存在,则 S3 将存储桶上的权限重置为默认值。如果您配置 CloudFront 为将访问日志保存在 S3 存储桶中,并且停止在该存储桶中获取日志,请检查该存储桶的权限以确保该存储桶 CloudFront 具有必要的权限。

恢复存储桶的 ACL

如果您删除对 awslogsdelivery 账户的权限,则 CloudFront 无法将日志保存到 S3 存储桶。 CloudFront 要启用重新开始为分配保存日志,请执行以下任一操作恢复 ACL 权限:

  • 禁用分发登录功能 CloudFront,然后再次启用。有关更多信息,请参阅您创建或更新分配时指定的值

  • 通过在 Amazon S3 控制台中导航到 S3 存储桶并添加权限,手动为 awslogsdelivery 添加 ACL 权限。要为 awslogsdelivery 添加 ACL,您必须提供账户的规范 ID,如下所示:

    a52cb28745c0c06e84ec548334e44bfa7fc2a85c54af20cd59e4969344b7af56

    有关将 ACL 添加到 S3 存储桶的更多信息,请参阅 Amazon Simple Storage Service 用户指南中的如何设置 ACL 存储桶权限?

每个日志文件的 ACL

除了存储桶上的 ACL 之外,每个日志文件上还有一个 ACL。存储桶拥有者对每个日志文件均具有 FULL_CONTROL 权限,分配所有者(如果与存储桶拥有者不同)没有权限,而 awslogsdelivery 账户具有读取和写入权限。

禁用日志记录

如果您禁用日志记录,则 CloudFront 不会删除存储桶或日志文件的 ACL。如果您愿意,可以自己撤销。

SSE-KMS 存储桶的必需密钥策略

如果您的标准日志的 S3 存储桶通过 Amazon KMS keys (SSE-KMS) 的客户托管密钥使用服务器端加密,您必须为您的客户托管密钥的密钥策略添加以下语句。这允许 CloudFront 将日志文件写入存储桶。(您不能将 SSE-KMS 与一起使用,Amazon 托管式密钥因为 CloudFront 无法将日志文件写入存储桶。)

{ "Sid": "Allow CloudFront to use the key to deliver logs", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "kms:GenerateDataKey*", "Resource": "*" }

如果标准日志的 S3 存储桶将 SSE-KMS 与 S3 存储桶密钥结合使用,您还需要将 kms:Decrypt 权限添加到策略语句中。在这种情况下,完整的策略语句如下所示。

{ "Sid": "Allow CloudFront to use the key to deliver logs", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }

文件名格式

CloudFront 保存在您的 Amazon S3 存储桶中的每个日志文件的名称均使用以下文件名格式:

<optional prefix>/<distribution ID>.YYYY-MM-DD-HH.unique-ID.gz

日期和时间用协调世界时 (UTC) 表示。

例如,如果您使用 example-prefix 作为前缀,并且您的分配 ID 为 EMLARXS9EXAMPLE,则您的文件名看起来类似于以下内容:

example-prefix/EMLARXS9EXAMPLE.2019-11-14-20.RT4KCN4SGK9.gz

当您对分配启用日志记录时,可为文件名指定一个可选前缀,以便您可以跟踪哪些日志文件与哪些分配相关联。如果您在日志文件前缀中包含一个值,并且您的前缀不以正斜杠 (/) 结尾,则会自动 CloudFront 附加一个正斜杠。如果你的前缀确实以正斜杠结尾,则 CloudFront 不要再添加一个正斜杠。

文件名末尾的表示 CloudFront 已使用 gzip 压缩了日志文件。.gz

标准日志文件传输计时

CloudFront 每小时最多可为分发提供几次标准日志。通常,日志文件包含有关在给定时间段内 CloudFront 收到的请求的信息。 CloudFront 通常会在日志中出现事件后一小时内将该时间段的日志文件传送到您的 Amazon S3 存储桶。但是,请注意,某个时间段内的某些或所有日志文件条目有时可延迟长达 24 小时。当日志条目延迟后, CloudFront 将它们保存在其文件名称包括发生请求的时间段的日期和时间 (而不是文件传输的日期和时间) 的日志文件中。

创建日志文件时,会 CloudFront 整合在日志文件所涵盖的时间段内收到对象请求的所有边缘站点的分发信息。

CloudFront 可以在一段时间内保存多个文件,具体取决于 CloudFront 收到的针对与分配关联的对象的请求数量。

CloudFront 在您启用日志记录大约四小时后,开始可靠地传送访问日志。您可能会获得一些在此时间之前的访问日志。

注意

如果在此期间没有用户请求您的对象,您就不会收到该期间的任何日志文件。

CloudFront 还提供实时日志,可为您提供有关向分配发出的实时请求的信息(日志将在收到请求后的几秒钟内传送)。您可以使用实时日志来进行监控和分析,并根据内容交付性能采取相应措施。有关更多信息,请参阅 实时日志

当请求 URL 或标头超出最大大小时如何记录请求

如果所有请求标头(包括 Cookie)的总大小超过 20KB,或者如果 URL 超过 8192 字节,则 CloudFront 无法完整解析并记录请求。由于未记录该请求,因此您在日志文件中看不到返回的 HTTP 错误状态代码。

如果请求正文超出最大大小,则会记录请求,包括 HTTP 错误状态代码。

分析标准日志

由于您每小时可以收到多个访问日志,因此我们建议您将给定时段内接收的所有日志文件合并成一个文件。然后,您可更准确更全面地分析该时期内的数据。

分析访问日志的一种方式是使用 Amazon Athena。Athena 是一项交互式查询服务,可以帮助您分析服务的数据,包括Amazon。 CloudFront要了解更多信息,请参阅亚马逊 At hena 用户指南中的查询亚马逊 CloudFront 日志

此外,以下 Amazon 博客文章讨论了分析访问日志的一些方式。

重要

我们建议您使用日志来了解内容请求的性质,而不是对所有请求进行全面统计。 CloudFront 尽力提供访问日志。特定请求的日志条目可能会在实际处理该请求之后很久才进行传输,而且极少数情况下,可能根本不会传输日志条目。当访问日志中省略了日志条目时,访问日志中的条目数将与 Amazon 使用率和账单报告中出现的使用率不匹配。

编辑标准日志记录设置

您可以使用CloudFront 控制台或 CloudFront API 启用或禁用日志记录、更改存储日志的 Amazon S3 存储桶以及更改日志文件的前缀。您对日志记录设置的更改将在 12 小时内生效。

有关更多信息,请参阅以下主题:

  • 要使用 CloudFront 控制台更新发行版,请参阅更新分配

  • 要使用 CloudFront API 更新分配,请参阅 Amazon CloudFront API 参考UpdateDistribution中的。

从 Amazon S3 存储桶中删除标准日志文件

CloudFront 不会自动从您的 Amazon S3 存储桶中删除日志文件。有关删除 Amazon S3 存储桶中日志文件的信息,请参阅以下主题:

  • 使用 Amazon S3 控制台:《Amazon Simple Storage Service 控制台用户指南》中的删除对象

  • 使用 REST API:DeleteObject在《亚马逊简单存储服务 API 参考》中。

标准日志文件格式

日志文件中的每个条目分别提供有关单个查看器请求的详细信息。日志文件具有以下特征:

  • 使用 W3C 扩展日志文件格式

  • 包含制表符分隔的值。

  • 包含不一定按时间顺序排列的记录。

  • 包含两个标题行:一个具有文件格式版本,另一个列出了包含在每个记录中的 W3C 字段。

  • 包含字段值中的空格和某些其他字符的 URL 编码等效值。

    URL 编码的等效值用于以下字符:

    • ASCII 字符代码 0 到 32(含这两个值)

    • ASCII 字符代码 127 及更大值

    • 下表中的所有字符

    URL 编码标准在 RFC 1738 中定义。

URL 编码值

字符

%3C

<

%3E

>

%22

"

%23

#

%25

%

%7B

{

%7D

}

%7C

|

%5C

\

%5E

^

%7E

~

%5B

[

%5D

]

%60

`

%27

'

%20

空格

标准日志文件字段

分配的日志文件包含 33 个字段。以下列表包含每个字段名称(按顺序)以及该字段中信息的描述。

  1. date

    事件发生日期的格式为 YYYY-MM-DD。例如:2019-06-30。日期和时间用协调世界时 (UTC) 表示。对于 WebSocket连接,这是连接关闭的日期。

  2. time

    CloudFront 服务器完成对请求的响应时间(以 UTC 为单位),01:42:39例如。对于 WebSocket 连接,这是连接关闭的时间。

  3. x-edge-location

    服务请求的边缘站点。每个边缘站点由三个字母的代码和任意分配的数字来确定(例如,DFW3)。三个字母代码通常对应邻近边缘站点的地理位置的机场的国际航空协会(IATA)机场代码。(这些缩写将来可能会更改。)

  4. sc-bytes

    服务器在响应请求时向查看器提供的字节的总数,包括标头。对于 WebSocket 连接,这是通过连接从服务器发送到客户端的总字节数。

  5. c-ip

    已发出请求的查看器的 IP 地址,例如 192.0.2.1832001:0db8:85a3::8a2e:0370:7334。如果查看器已使用 HTTP 代理或负载均衡器发送请求,则此字段的值为该代理或负载均衡器的 IP 地址。另请参阅 x-forwarded-for 字段。

  6. cs-method

    从查看器接收的 HTTP 请求方法。

  7. cs(Host)

    CloudFront 分配的域名(例如 d111111abcdef8.cloudfront.net)。

  8. cs-uri-stem

    请求 URL 中标识路径和对象的部分(例如 /images/cat.jpg)。URL 和查询字符串中的问号 (?) 不包含在日志中。

  9. sc-status

    包含下列值之一:

    • 服务器响应的 HTTP 状态代码(例如 200)。

    • 000,表示查看器已在服务器可以响应请求之前关闭连接。如果查看器在服务器开始发送响应后关闭连接,则此字段包含服务器开始发送的响应的 HTTP 状态代码。

  10. cs(Referer)

    请求中的 Referer 标头的值。这是发出请求的域的名称。常见引用站点包括搜索引擎、直接链接到您的对象的其他网站及您自己的网站。

  11. cs(User-Agent)

    请求中的 User-Agent 标头的值。User-Agent 标头标识请求的来源,例如提交请求的设备和浏览器的类型,如果请求来自搜索引擎,则标识具体的搜索引擎。

  12. cs-uri-query

    请求 URL 的查询字符串部分(如果有)。

    如果 URL 不包含查询字符串,则此字段的值为连字符 (-)。有关更多信息,请参阅根据查询字符串参数缓存内容

  13. cs(Cookie)

    请求中的 Cookie 标头,包括名称/值对和关联的属性。

    如果您启用 Cookie CloudFront 日志记录,则无论您选择将哪个 Cookie 转发到源,都将在所有请求中记录 Cookie。当请求不包含 Cookie 标头时,此字段的值为连字符 (-)。有关 cookies 的更多信息,请参阅 根据 Cookie 缓存内容

  14. x-edge-result-type

    在最后一个字节离开服务器后服务器如何对响应进行分类。在某些情况下,结果类型可能会在服务器准备发送响应的时间与完成发送响应的时间之间发生变化。另请参阅 x-edge-response-result-type 字段。

    例如,在 HTTP 流中,假设服务器在缓存中发现流的一个区段。在这种情况下,此字段的值通常为 Hit。但是,如果查看器在服务器传送整个区段之前关闭连接,则最终结果类型(以及此字段的值)为 Error

    WebSocket connections Miss 的该字段的值将为,因为内容不可缓存,并且直接代理到源。

    可能的值包括:

    • Hit – 服务器从缓存中将对象提供给查看器。

    • RefreshHit – 服务器在缓存中找到了对象,但该对象已过期,因此,服务器联系了源,以验证缓存是否具有该对象的最新版本。

    • Miss – 缓存中的对象无法满足请求,因此,服务器将请求转发到源并将结果返回到查看器。

    • LimitExceeded— 由于超出 CloudFront 配额(以前称为限制),请求被拒绝。

    • CapacityExceeded – 服务器返回了 HTTP 503 状态代码,因为它在请求时没有足够的容量来服务对象。

    • Error – 通常,这意味着请求会导致客户端错误(sc-status 字段的值在 4xx 范围内)或服务器错误(sc-status 字段的值在 5xx 范围内)。如果 sc-status 字段的值为 200,或者如果此字段的值为 Errorx-edge-response-result-type 字段的值不是 Error,则表示 HTTP 请求已成功,但客户端在接收所有字节之前断开连接。

    • Redirect – 服务器已根据分发设置将查看器从 HTTP 重定向到 HTTPS。

  15. x-edge-request-id

    一个不透明的字符串,用于唯一标识请求。 CloudFront 还会在x-amz-cf-id响应标头中发送此字符串。

  16. x-host-header

    查看器在该请求的 Host 标头中包含的值。如果您在对象网址(例如 d111111abcdef8.cloudfront.net)中使用 CloudFront 域名,则此字段将包含该域名。如果在您的对象 URL(例如 www.example.com)中使用的是备用域名(CNAME),则此字段将包含备用域名。

    如果您使用的是备用域名,请参阅与您的分配关联的域名的字段 7 中的 cs(Host)

  17. cs-protocol

    查看器请求的协议(httphttpswswss)。

  18. cs-bytes

    查看器包含在请求中的数据字节总数,包括标头。对于 WebSocket 连接,这是在连接上从客户端发送到服务器的总字节数。

  19. time-taken

    服务器收到查看器的请求的时间与服务器将响应的最后一个字节写入输出队列的时间之间相隔的秒数(精确至千分之一秒,例如 0.082),以服务器上测量的时间为准。从查看器的角度看,由于网络延迟和 TCP 缓冲的原因,获得完整响应的总时间将会超过该值。

  20. x-forwarded-for

    如果查看器已使用 HTTP 代理或负载均衡器发送请求,则 c-ip 字段的值为该代理或负载均衡器的 IP 地址。在本例中,此字段为发出请求的查看器的 IP 地址。此字段包含 IPv4 地址(例如 192.0.2.183)或 IPv6 地址(例如, 2001:0db8:85a3::8a2e:0370:7334)。

    如果查看器未使用 HTTP 代理或负载均衡器,则此字段的值为连字符 (-)。

  21. ssl-protocol

    如果请求使用了 HTTPS,则此字段包含查看器和服务器协商用于传输请求和响应的 SSL/TLS 协议。有关可能的值的列表,请参阅查看器与之间支持的协议和密码 CloudFront中支持的 SSL/TLS 协议。

    如果字段 17 中的 cs-protocolhttp,则此字段的值为连字符 (-)。

  22. ssl-cipher

    如果请求使用了 HTTPS,则此字段包含查看器和服务器协商用于加密请求和响应的 SSL/TLS 密码。有关可能的值的列表,请参阅查看器与之间支持的协议和密码 CloudFront中支持的 SSL/TLS 密码。

    如果字段 17 中的 cs-protocolhttp,则此字段的值为连字符 (-)。

  23. x-edge-response-result-type

    服务器在将响应返回到查看器之前如何对响应进行分类。另请参阅 x-edge-result-type 字段。可能的值包括:

    • Hit – 服务器从缓存中将对象提供给查看器。

    • RefreshHit – 服务器在缓存中找到了对象,但该对象已过期,因此,服务器联系了源,以验证缓存是否具有该对象的最新版本。

    • Miss – 缓存中的对象无法满足请求,因此,服务器将请求转发到源服务器并将结果返回到查看器。

    • LimitExceeded— 由于超出 CloudFront 配额(以前称为限制),请求被拒绝。

    • CapacityExceeded – 服务器返回了 503 错误,因为它在请求时没有足够的容量来服务对象。

    • Error – 通常,这意味着请求会导致客户端错误(sc-status 字段的值在 4xx 范围内)或服务器错误(sc-status 字段的值在 5xx 范围内)。

      如果 x-edge-result-type 字段的值为 Error,而此字段的值不是 Error,则客户端在下载完成前已断开连接。

    • Redirect – 服务器已根据分发设置将查看器从 HTTP 重定向到 HTTPS。

  24. cs-protocol-version

    查看器在请求中指定的 HTTP 版本。可能的值包括 HTTP/0.9HTTP/1.0HTTP/1.1HTTP/2.0HTTP/3.0

  25. fle-status

    在为分配配置字段级加密时,此字段包含一个指示是否已成功处理请求正文的代码。如果服务器成功处理了请求正文,加密了指定字段中的值并将请求转发到源,则此字段的值为 Processed。在这种情况下,x-edge-result-type 的值仍可以指示客户端或服务器端错误。

    此字段的可能值包括:

    • ForwardedByContentType – 由于没有配置内容类型,因此服务器将请求转发到了源,而不进行解析或加密。

    • ForwardedByQueryArgs – 由于请求包含的查询参数不在字段级加密的配置中,因此服务器将请求转发到了源,而不进行解析或加密。

    • ForwardedDueToNoProfile – 由于在字段级加密的配置中没有指定配置文件,因此服务器将请求转发到了源,而不进行解析或加密。

    • MalformedContentTypeClientError – 由于 Content-Type 标头值的格式无效,因此,服务器拒绝了该请求并向查看器返回了 HTTP 400 状态代码。

    • MalformedInputClientError – 由于请求正文的格式无效,因此服务器拒绝了该请求,并向查看器返回了 HTTP 400 状态代码。

    • MalformedQueryArgsClientError – 由于查询参数为空或格式无效,因此服务器拒绝了该请求,并向查看器返回了 HTTP 400 状态代码。

    • RejectedByContentType – 由于在字段级加密的配置中没有指定内容类型,因此服务器拒绝了该请求,并向查看器返回了 HTTP 400 状态代码。

    • RejectedByQueryArgs – 由于在字段级加密的配置中没有指定查询参数,因此服务器拒绝了该请求,并向查看器返回了 HTTP 400 状态代码。

    • ServerError – 源服务器返回了错误。

    如果请求超出字段级加密配额(以前称作限制),则此字段包含下列错误代码之一,并且服务器向查看器返回 HTTP 状态代码 400。有关字段级加密的当前配额的列表,请参对字段级加密的配额

    • FieldLengthLimitClientError – 配置为加密的字段超出允许的最大长度。

    • FieldNumberLimitClientError – 将分配配置为加密的请求包含的字段数超过允许值。

    • RequestLengthLimitClientError – 在配置了字段级加密时,请求正文的长度超出允许的最大长度。

    如果没有为分配配置字段级加密,则此字段的值为连字符 (-)。

  26. fle-encrypted-fields

    服务器加密并转发到源的字段级加密字段的数量。 CloudFront 服务器在加密数据时会将已处理的请求流式传输到源,因此即使的值为错误,此字段也可以有值。fle-status

    如果没有为分配配置字段级加密,则此字段的值为连字符 (-)。

  27. c-port

    查看器发出的请求的端口号。

  28. time-to-first-byte

    从收到请求到写入响应的第一个字节之间的秒数(在服务器上测量)。

  29. x-edge-detailed-result-type

    此字段包含与 x-edge-result-type 字段相同的值,但以下情况除外:

    • 当对象从源护盾层提供给查看器时,该字段包含 OriginShieldHit

    • 当对象不在 CloudFront 缓存中且响应由源请求 Lambda @Edge 函数生成时,此字段包含。MissGeneratedResponse

    • x-edge-result-type 字段的值为 Error 时,此字段包含以下值之一,其中包含有关错误的更多信息:

      • AbortedOrigin – 服务器遇到了源方面的问题。

      • ClientCommError – 由于服务器与查看器之间的通信问题,对查看器的响应已中断。

      • ClientGeoBlocked - 将分配配置为拒绝来自查看器地理位置的请求。

      • ClientHungUpRequest - 查看器在发送请求时提前停止。

      • Error – 出现错误,其错误类型不适合任何其他类别。当服务器从缓存提供错误响应时,可能会发生此类型的错误。

      • InvalidRequest – 服务器收到了来自查看器的无效请求。

      • InvalidRequestBlocked - 阻止对所请求资源的访问。

      • InvalidRequestCertificate - 分配与建立 HTTPS 连接的 SSL/TLS 证书不匹配。

      • InvalidRequestHeader - 请求包含无效的标头。

      • InvalidRequestMethod - 未将分配配置为处理所使用的 HTTP 请求方法。当分配仅支持可缓存请求时,可能会发生这种情况。

      • OriginCommError – 连接到源或从源读取数据时,请求超时。

      • OriginConnectError – 服务器无法连接到源。

      • OriginContentRangeLengthError - 源响应中的 Content-Length 标头与 Content-Range 标头中的长度不匹配。

      • OriginDnsError – 服务器无法解析源的域名。

      • OriginError - 源返回不正确的响应。

      • OriginHeaderTooBigError - 源返回的标头太大,边缘服务器无法处理。

      • OriginInvalidResponseError - 源返回无效响应。

      • OriginReadError – 服务器无法从源读取。

      • OriginWriteError – 服务器无法写入到源。

      • OriginZeroSizeObjectError - 从源发送的零大小对象会导致错误。

      • SlowReaderOriginError - 查看器读取导致源错误的消息时速度较慢。

  30. sc-content-type

    响应的 HTTP Content-Type 标头的值。

  31. sc-content-len

    响应的 HTTP Content-Length 标头的值。

  32. sc-range-start

    当响应包含 HTTP Content-Range 标头时,此字段包含范围起始值。

  33. sc-range-end

    当响应包含 HTTP Content-Range 标头时,此字段包含范围结束值。

以下是分配的一个日志文件示例:

#Version: 1.0 #Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-range-end 2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html 200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ== d111111abcdef8.cloudfront.net https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit text/html 78 - - 2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html 200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit k6WGMNkEzR5BEM_SaF47gjtX9zBDO2m349OY2an0QPEaUum1ZOLrow== d111111abcdef8.cloudfront.net https 23 0.000 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.000 Hit text/html 78 - - 2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html 200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit f37nTMVvnKvV2ZSvEsivup_c2kZ7VXzYdjC-GUQZ5qNs-89BlWazbw== d111111abcdef8.cloudfront.net https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit text/html 78 - - 2019-12-13 22:36:27 SEA19-C1 900 192.0.2.200 GET d111111abcdef8.cloudfront.net /favicon.ico 502 http://www.example.com/ Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Error 1pkpNfBQ39sYMnjjUQjmH2w1wdJnbHYTbag21o_3OfcQgPzdL2RSSQ== www.example.com http 675 0.102 - - - Error HTTP/1.1 - - 25260 0.102 OriginDnsError text/html 507 - - 2019-12-13 22:36:26 SEA19-C1 900 192.0.2.200 GET d111111abcdef8.cloudfront.net / 502 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Error 3AqrZGCnF_g0-5KOvfA7c9XLcf4YGvMFSeFdIetR1N_2y8jSis8Zxg== www.example.com http 735 0.107 - - - Error HTTP/1.1 - - 3802 0.107 OriginDnsError text/html 507 - - 2019-12-13 22:37:02 SEA19-C2 900 192.0.2.200 GET d111111abcdef8.cloudfront.net / 502 - curl/7.55.1 - - Error kBkDzGnceVtWHqSCqBUqtA_cEs2T3tFUBbnBNkB9El_uVRhHgcZfcw== www.example.com http 387 0.103 - - - Error HTTP/1.1 - - 12644 0.103 OriginDnsError text/html 507 - -

标准日志的费用

标准日志记录是的一项可选功能 CloudFront。启用标准日志记录无额外费用。但是,在 Amazon S3 上存储和访问文件(您可随时删除他们)会产生常规的 Amazon S3 费用。

有关 Amazon S3 定价的更多信息,请参阅 Amazon S3 定价

有关 CloudFront 定价的更多信息,请参阅CloudFront 定价