首页 > 解决方案 > 从 lambda 在 cloudwatch 中创建新的日志流

问题描述

我正在使用 lambda 函数,该函数在将新文件添加到 S3 存储桶时触发。Lambda 函数转换文件的内容并将其放置在另一个 S3 存储桶中。

  1. 当新文件“emp.json”添加到 S3 存储桶中的“sourcebucket/test”文件夹时,会在 cloudwatch 日志中创建一个新的日志流,并将该文件添加到“targetbucket/emp”文件夹。这是预期的。

  2. 当我在 5 分钟之前将另一个文件“emp1.json”添加到 S3 存储桶中的“sourcebucket/test”文件夹时,日志会附加相同的日志流,并且现有文件会在“targetbucket/emp”文件夹中被替换。而不是将日志附加到现有的日志流,我们可以创建一个新的日志流吗?

  3. 当我在 5 分钟后将另一个文件“emp2.​​json”添加到 S3 存储桶中的“sourcebucket/test”文件夹时,会在 cloudwatch 日志中创建一个新的日志流并将该文件添加到“targetbucket/emp”文件夹。这是也工作正常

问题是只有当我在不到 5 分钟的时间内将新文件添加到同一个文件夹时,它才会覆盖或替换现有文件。我是 AWS lambda 的新手。让我知道这是否可以修复。

所以

标签: amazon-web-servicesamazon-s3aws-lambdaaws-cloudwatch-log-insights

解决方案


您描述的有关 CloudWatch 日志流的问题与底层 Lambda 容器的使用方式有关。

  • 当使用新容器为函数提供调用时,该服务会创建一个新的日志流并将所有 Lambda 函数日志推送到其中。
  • 如果现有容器被“重用”,则使用第一次启动时为容器创建的日志流,并将函数日志附加到相同的日志流中。

因此,每个底层容器都会有一个与之关联的日志流。

现在,不清楚为什么当日志附加到现有日志流(即重用容器)时,Lambda 函数会失败(或意外工作)。请对此提供更多见解。


推荐阅读