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

边缘函数日志

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

重要

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

Lambda@Edge 日志

Lambda@Edge 会自动将函数日志发送到 CloudWatch Logs,在函数运行的 Amazon Web Services 区域中创建日志流。日志组名称的格式为 /aws/lambda/us-east-1.function-name,其中 function-name 是您在创建函数时为函数指定的名称,us-east-1 是运行函数的 Amazon Web Services 区域的区域代码。

注意

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

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

要了解有关如何将 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 服务直接关联的 IAM 角色。服务相关角色是由服务预定义的,具有服务代表您调用其他 Amazon 服务所需的所有权限。CloudFront Functions 使用名为 AWSServiceRoleForCloudFrontLogger 的服务相关角色。有关此角色的更多信息,请参阅Lambda@Edge 的服务相关角色(Lambda@Edge 使用同一个服务相关角色)。

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