amazon-web-services - 从 lambda 在 cloudwatch 中创建新的日志流
问题描述
我正在使用 lambda 函数,该函数在将新文件添加到 S3 存储桶时触发。Lambda 函数转换文件的内容并将其放置在另一个 S3 存储桶中。
当新文件“emp.json”添加到 S3 存储桶中的“sourcebucket/test”文件夹时,会在 cloudwatch 日志中创建一个新的日志流,并将该文件添加到“targetbucket/emp”文件夹。这是预期的。
当我在 5 分钟之前将另一个文件“emp1.json”添加到 S3 存储桶中的“sourcebucket/test”文件夹时,日志会附加相同的日志流,并且现有文件会在“targetbucket/emp”文件夹中被替换。而不是将日志附加到现有的日志流,我们可以创建一个新的日志流吗?
当我在 5 分钟后将另一个文件“emp2.json”添加到 S3 存储桶中的“sourcebucket/test”文件夹时,会在 cloudwatch 日志中创建一个新的日志流并将该文件添加到“targetbucket/emp”文件夹。这是也工作正常
问题是只有当我在不到 5 分钟的时间内将新文件添加到同一个文件夹时,它才会覆盖或替换现有文件。我是 AWS lambda 的新手。让我知道这是否可以修复。
所以
解决方案
您描述的有关 CloudWatch 日志流的问题与底层 Lambda 容器的使用方式有关。
- 当使用新容器为函数提供调用时,该服务会创建一个新的日志流并将所有 Lambda 函数日志推送到其中。
- 如果现有容器被“重用”,则使用第一次启动时为容器创建的日志流,并将函数日志附加到相同的日志流中。
因此,每个底层容器都会有一个与之关联的日志流。
现在,不清楚为什么当日志附加到现有日志流(即重用容器)时,Lambda 函数会失败(或意外工作)。请对此提供更多见解。
推荐阅读
- spring-batch - Spring Batch 将运行哪个配置?
- javascript - 是否可以从 iframe 中重定向到新的来源?
- clojurescript - 在 ClojureScript 中使用 MathJax
- python - 将熊猫系列转换为字符串数组
- swift - 将符合协议的类(或结构)传递给以泛型类型作为参数的函数
- powershell - 如何使用 Powershell 为 Azure 应用服务导入证书
- python - Flask 和 SQLAlchemy 在没有新查询的情况下显示排序?
- c# - 无法创建 IdentityUserClaim 类型的常量值
- python-2.7 - 当我将传奇移出情节时,传奇失去了第二位艺术家
- javascript - angular 5 和 node.js 表达 prod 构建问题