边缘函数日志 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

边缘函数日志

可以使用 Amazon CloudWatch Logs 获取边缘函数(包括 Lambda@EdgeCloudFront Functions)的日志。可以使用 CloudWatch 控制台或 CloudWatch Logs API 访问日志。

重要

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

Lambda@Edge 日志

Lambda@Edge 会自动将函数日志发送到 CloudWatch Logs,并在调用函数的 Amazon Web Services 区域中创建日志流。在 Amazon Lambda 中创建或修改函数时,您可以使用默认 CloudWatch 日志组名称或自定义该名称。

  • 默认日志组名称为 /aws/lambda/<FunctionName>,其中 <FunctionName> 是您在创建函数时指定的名称。向 CloudWatch 发送日志时,Lambda@Edge 会自动向函数名称中添加 us-east-1 前缀,因此日志组名称为 /aws/lambda/us-east-1.<FunctionName>。此前缀对应于在其中创建函数的 Amazon Web Services 区域。此前缀保持为日志组名称的一部分,即使在调用该函数的其它区域中也是如此。

  • 如果您指定自定义日志组名称(例如 /MyLogGroup),Lambda@Edge 将不会添加区域前缀。该日志组名称在调用该函数的所有其它区域中保持不变。

注意

如果您创建自定义日志组并指定与默认 /aws/lambda/<FunctionName> 相同的名称,则 Lambda@Edge 会向函数名称中添加 us-east-1 前缀。

除了自定义日志组名称外,Lambda@Edge 函数还支持 JSON 和纯文本日志格式以及日志级别筛选。有关更多信息,请参阅《Amazon Lambda 开发人员指南》中的为 Lambda 函数配置高级日志记录控件

注意

Lambda@Edge 会基于请求量和日志大小来限制日志。

您必须查看正确的 区域中的 CloudWatch 日志文件,才能查看 Lambda@Edge 函数日志文件。要查看 Lambda@Edge 函数运行的区域,请在 CloudFront 控制台上查看此函数的指标图表。指标针对各个 区域显示。在同一页上,您可以选择一个区域,然后查看该区域的日志文件以调查问题。

要了解有关如何将 CloudWatch Logs 与 Lambda@Edge 函数结合使用的更多信息,请参阅以下主题:

CloudFront Functions 日志

如果 CloudFront 函数的代码包含 console.log() 语句,CloudFront Functions 会将这些日志行自动发送到 CloudWatch Logs。如果没有 console.log() 语句,则不会发送任何内容到 CloudWatch Logs 中。

CloudFront Functions 始终在美国东部(弗吉尼亚州北部)区域 (us-east-1) 中创建日志流,无论哪个边缘站点运行该函数。日志组名称的格式为 /aws/cloudfront/function/<FunctionName>,其中 <FunctionName> 是您在创建函数时为函数指定的名称。日志流名称的格式为 YYYY/M/D/UUID

下面显示了发送到 CloudWatch Logs 的示例日志消息。每行都以唯一标识 CloudFront 请求的 ID 开头。消息以包含 CloudFront 分配 ID 的 START 行开头,以 END 行结尾。STARTEND 行之间是 console.log() 语句在函数中生成的日志行。

U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== START DistributionID: E3E5D42GADAXZZ U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== Example function log output U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== END
注意

CloudFront Functions 仅为处理生产请求和响应而运行的 LIVE 阶段中的函数向 CloudWatch 发送日志。测试函数时,CloudFront 不会向 CloudWatch 发送任何日志。测试输出包含有关错误、计算利用率和函数日志(console.log() 语句)的信息,但这些信息不会发送到 CloudWatch。

CloudFront Functions 使用 Amazon Identity and Access Management (IAM) 服务相关角色将日志发送到您的账户中的 CloudWatch Logs。服务相关角色是一种与 Amazon Web Services 服务直接关联的 IAM 角色。服务相关角色由服务预定义,包括服务为您调用其它 Amazon Web Services 服务所需的所有权限。CloudFront Functions 使用 AWSServiceRoleForCloudFrontLogger 服务相关角色。有关此角色的更多信息,请参阅Lambda@Edge 的服务相关角色(Lambda@Edge 使用同一个服务相关角色)。

当函数失败并出现验证错误或执行错误时,信息将记录在标准日志实时日志中。有关错误的具体信息,请参阅 x-edge-result-typex-edge-response-result-typex-edge-detailed-result-type 字段。