Loading...

介绍 AWS Lambda 函数的高级日志控制 计算博客

2026-01-27 12:28:09

AWS Lambda 函数的高级日志控制介绍

作者:David Boyne,于 2023 年 11 月 16 日发布于 Amazon CloudWatch AWS Lambda 无服务器架构

重点摘要

AWS 今天推出了 AWS Lambda 的高级日志控制功能,使开发人员和运维人员能够更好地管理其函数日志的捕获、处理和使用。此次发布引入了三项新功能,以简化和增强 Lambda 的默认日志体验,包括:

JSON 格式日志:Lambda 现在支持捕获结构化 JSON 格式的日志,便于搜索和分析。日志级别控制:开发人员可以在无需修改代码的情况下,控制 Lambda 函数日志的详细程度,便于调试。自定义日志组:用户可以指定 Lambda 将日志发送到的 Amazon CloudWatch 日志组,以便更轻松地管理和聚合日志。

概述

能够识别和筛选相关日志消息对于排查和修复关键问题至关重要。为了帮助开发人员和运维人员监控和排查故障,Lambda 服务会自动捕获并将日志发送到 CloudWatch Logs。

之前,Lambda 的日志以明文格式输出,这种非结构化格式可能使得日志查询或过滤变得复杂。例如,您需要手动搜索并关联日志,例如使用“START”、“END”、“REPORT”或函数调用的请求 ID 等字符串标识符。同时,由于缺乏原生的日志增强功能,您需要进行定制化的工作来从日志中提取数据以进行自动化分析或构建分析仪表盘。

重要提示:现在,您可以在一个地方聚合多个函数的日志,以便统一应用安全性、治理和保留策略。

捕获 JSON 格式的 Lambda 日志

Lambda 现在原生支持以 JSON 格式捕获结构化日志,即以一系列键值对显示,便于更轻松地搜索和过滤日志。JSON 还支持在日志中添加自定义标签和上下文信息,从而实现对大量日志的自动分析。

设置 JSON 日志格式

要在 Lambda 控制台中设置日志格式,请选择 配置 选项卡,在左侧面板中选择 监控和操作工具,然后更改日志格式属性:

当前,Lambda 原生支持捕获应用程序日志由函数代码生成的日志和系统日志由 Lambda 服务生成的日志以 JSON 格式输出。需要注意的是,此功能适用于非废弃版本的 Python、Nodejs 和 Java Lambda 管理运行时。

Nodejs Lambda 函数中的 JSON 使用

您可以将 JSON 结构化格式与 CloudWatch 嵌入式指标格式 (EMF) 一起使用,从而将自定义指标嵌入到 JSON 结构化日志消息中,CloudWatch 会自动提取自定义指标以进行可视化和告警。

配置 Lambda 函数的日志级别

现在,您可以按日志级别如 ERROR、DEBUG 或 INFO过滤 Lambda 日志,无需修改代码。这一简化的日志级别过滤功能使您在调试错误时,可以选择所需的日志详细程度,而不必在大量日志中进行筛选。

日志级别控制界面

在 Lambda 控制台中,可以设置 应用程序日志级别 和 系统日志级别 属性:

通过这种功能,您可以选择适当的日志量。例如,您可以设置较高的日志级别以提高生产环境日志的信噪比,或者设置较低的日志级别以捕获详细的调试日志事件。

自定义 Lambda 函数的 CloudWatch 日志组

之前您无法为函数指定自定义 CloudWatch 日志组,因此无法将多个函数的日志流式传输到共享日志组中。现在您可以选择一个自定义的 CloudWatch 日志组,以便自动聚合来自多个函数的日志。这样可以在应用程序级别应用安全性、治理和保留策略,而不必对每个函数单独设置。

设置自定义日志组的步骤

您可以在 Lambda 控制台中输入目标日志组名称来设置自定义日志组。如果输入的日志组不存在,Lambda 会自动创建它。

高级日志控制功能可以通过 Lambda API、AWS 管理控制台、AWS 命令行界面 (CLI) 以及基础设施即代码 (IaC) 工具如 AWS Serverless 应用程序模型 (AWS SAM) 和 AWS CloudFormation进行配置。

Lambda 高级日志控制示例

以下示例展示了如何使用 AWS SAM 构建和部署 Lambda 的新高级日志控制资源。

示例架构

以下图展示了 Lambda 函数处理新创建的 Amazon S3 对象的流程,两个函数将日志记录到同一个 CloudWatch 日志组中。

飞兔加速器官网地址

示例部署步骤

克隆 GitHub 仓库 并探索应用程序: bash git clone https//githubcom/awssamples/advancedloggingcontrolslambda/ cd advancedloggingcontrolslambda

使用 AWS SAM 构建和部署资源: bash sam build

通过 AWS SAM CLI 进行指导式部署: bash sam deploy guided

介绍 AWS Lambda 函数的高级日志控制 计算博客

输入以下值进行测试:

堆栈名称:advancedloggingcontrolslambda区域:您选择的区域例如,useast1

参数 UploadsBucketName:输入一个唯一的桶名称。

使用 AWS CLI 复制示例图片到您创建的 S3 桶中以进行测试: bash aws s3 cp samples/skateboardjpg s3//examples3imagesbucket

您可以在 CloudWatch Logs 中查看记录在 AggregatedLabelsLogGroup 中的日志。

结论

Lambda 的高级日志控制功能使您能更灵活地管理日志。通过日志级别和格式控制,可以更有效地搜索、查询和过滤日志,帮助排查问题。同时,您还可以选择 Lambda 日志发送的 CloudWatch 日志组,从而将多个函数的日志聚合到单一日志组中,应用相关的保留、安全和治理策略。

要开始使用,请在任何新或现有的 Lambda 函数的日志配置中指定所需的设置。

高级日志控制功能在所有 AWS 可用区域均可用,且无需额外收费。了解更多关于 AWS Lambda 高级日志控制 的内容。

如需更多无服务器学习资源,请访问 Serverless Land。

Visier的数据科学团队通过迁移到Amazon SageMaker,使他们的模型输出提高了十倍 机
Visier的数据科学团队通过迁移到Amazon SageMaker,使他们的模型输出提高了十倍 机

Visier数据科学团队通过迁移到Amazon SageMaker将模型输出提高10倍由Kinman Lam和Ike Bennion于2024年10月3日撰写于 Amazon Machine Lear...

使用 Amazon OpenSearch Ingestion 和 Amazon OpenSearch
使用 Amazon OpenSearch Ingestion 和 Amazon OpenSearch

在 Amazon OpenSearch Ingestion 与 Amazon OpenSearch Serverless 中的流式异常检测关键要点在数据驱动的现代环境中,流式异常检测随着机器生成数据量...