【发布时间】:2026-02-02 10:35:02
【问题描述】:
我们创建了一个 Lambda 函数,它必须每分钟触发一次。它按预期工作并显示正确的结果。但是通过 Cloudwatch 事件获取的日志流在单个 Cloudwatch 日志流中包含多个 Lambda 触发器日志。
是否可以为 1 个 Lambda 触发器创建 1 个 cloudwatch 日志??
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-cloudwatchlogs
我们创建了一个 Lambda 函数,它必须每分钟触发一次。它按预期工作并显示正确的结果。但是通过 Cloudwatch 事件获取的日志流在单个 Cloudwatch 日志流中包含多个 Lambda 触发器日志。
是否可以为 1 个 Lambda 触发器创建 1 个 cloudwatch 日志??
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-cloudwatchlogs
根据 AWS Lambda documentation here,日志流表示您的函数的实例。换句话说,日志流代表您的 Lambda 函数的单个执行环境的日志......执行环境也称为 context(您可以传递给处理程序的参数之一)您没有在每次调用时都获得新的日志流的原因是 Lambda 函数在其中执行的 context。
当您调用 Lambda 函数时,AWS 会加载包含您的函数代码的容器,并预置使您的函数能够执行所需的请求资源:CPU、内存、网络等。这些都构成了函数执行环境,即也称为上下文。这些资源需要时间来提供,这会导致函数执行的延迟增加。这通常称为“冷启动”。
为了在每次调用时缓解这种不希望出现的延迟或冷启动,在您的函数完成其初始执行后,AWS 不会终止执行环境,而是保持容器和执行环境以及 CPU 等资源的运行,内存和网络,为下一次调用提供并准备好并期待下一次调用。这被称为保持功能“温暖”。当容器变热时,函数的后续调用将在与先前调用相同的执行环境或 context 中执行,并且由于调用是由函数的同一实例执行的,因此日志是写入与先前调用相同的日志流,该日志流表示该函数的实例/执行环境/上下文。
尽管如此,值得指出的是,AWS 不会让容器无限期地运行。如果在给定的时间段内没有后续调用(没有确切的时间段,但通常认为在 30 到 45 分钟之间,source)AWS 将终止容器,并释放资源供其他函数使用.下次调用 Lambda 函数时,AWS 将重复该函数的预置过程并创建一个新的执行环境,这将导致您的函数日志写入一个新的日志流,该日志流代表新的执行环境/上下文/ 你的函数的实例。
您可以阅读有关 Lambda 执行上下文的更多信息here。
【讨论】:
拉希特,
您的 Lambda 函数附带一个 CloudWatch Logs 日志组,其中包含一个 函数的每个实例的日志流。运行时发送 每次调用日志流的详细信息,并中继日志和 函数代码的其他输出。
此外,从AWS Cloudwatch documentation 可以看到,每次日志来自不同的事件源时,都会创建一个日志流。对于 Lambda,它是每个 Lambda 容器一个流,每个容器可能处理多个事件。
日志流是共享同一源的一系列日志事件。 CloudWatch Logs 中的每个单独的日志源构成一个单独的 日志流。
参考:
https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-logging.html
【讨论】: