多个触发的 AWS Lambda 日志显示在单个 Cloudwatch 日志流中

Rac*_*ain 1 amazon-web-services aws-lambda amazon-cloudwatchlogs

我们创建了一个 Lambda 函数,它必须在每分钟后触发。它按预期工作并显示正确的结果。但是通过 Cloudwatch 事件获取的日志流在单个 Cloudwatch 日志流中包含多个 Lambda 触发器日志。

活动规则:- 在此处输入图片说明

是否可以为 1 个 Lambda 触发器创建 1 个 cloudwatch 日志?

hep*_*ump 5

根据此处的 AWS Lambda文档,日志流代表您的函数的一个实例。换句话说,日志流代表来自 Lambda 函数的单个执行环境的日志......执行环境也称为上下文(您可以传递给处理程序的参数之一)以及您不这样做的原因每次调用都会获得一个新的日志流是因为Lambda 函数在其中执行的上下文

当您调用您的 Lambda 函数时,AWS 会加载保存您的函数代码的容器并预配使您的函数执行所需的请求资源:CPU、内存、网络等。这些都构成了函数执行环境,也称为上下文。这些资源需要时间来提供,这会导致函数执行的延迟增加。这通常称为“冷启动”。

为了在每次调用时减轻这种不希望的延迟或冷启动,在您的函数完成其初始执行后,AWS 不会终止执行环境,而是保持容器和执行环境运行以及 CPU、内存和网络等资源,为下一次调用提供并准备好并期待下一次调用。这被称为保持函数“温暖”。当容器处于温暖状态时,您的函数的后续调用将在相同的执行环境或上下文中执行,作为前一个调用,并且因为调用是由函数的同一个实例执行的,所以日志被写入与前一个调用相同的日志流,这是代表该实例/执行环境/上下文的日志流的功能。

尽管如此,值得指出的是,AWS 不会无限期地保持容器运行。如果在给定的时间段内没有后续调用(没有确切的时间段,但通常认为在 30 到 45 分钟之间,来源)AWS 将终止容器,并释放资源以供另一个函数使用。下次调用 Lambda 函数时,AWS 将重复该函数的配置过程并创建一个新的执行环境,这将导致您的函数日志写入新的日志流,该日志流代表新的执行环境/上下文/ 函数的实例。

您可以在此处阅读有关 Lambda 执行上下文的更多信息。