【发布时间】:2020-01-04 00:47:27
【问题描述】:
我有一个 AWS Lambda 函数,它采用 ZipCode 并查找半径内的位置。返回的每个位置都会通过一系列业务流程对其进行进一步处理。我的测试数据由每个请求返回的 24 个位置组成。每个请求都有一个 guid,代表我在代码中添加 console.log 语句的请求,以便我可以通过 CloudWatch 日志了解正在发生的事情。
每当我运行 lambda 函数时,CloudWatch 日志都会在进程完成之前结束。随后,我使用不同的 Guid 向 Lambda 发出另一个请求,我在 CLoudWatch 日志中看到上一个请求的条目。
CloudWatch 为何没有在整个过程中保持活动状态并捕获日志条目? - 我假设 Lambda 函数在 CloudWatch Log 中出现“结束”时立即结束。
先前请求中的日志条目为何会与后续请求混在一起?
更新
包含 24 个位置的数据结构来自 async 方法。 24 个位置中的每一个都是一个任务。因为 async 是对未来结果的承诺,lambda 函数是否可能在 async 之前关闭使满意?这可以解释为什么在注册“结束”之前,CLoudWatch 日志中只输出了 24 个位置中的少数几个。在“结束”事件发生之前处理/记录了 24 个中的多少并没有一致性。随后的调用似乎从原始调用中获得了余额。
【问题讨论】:
-
您在请求之间等待了多长时间? CWL 大约需要 20 秒才能显示出来。它们是否具有相同的请求 ID 或不同(即旧的 CW 日志是否显示与新请求相同的请求 ID?)
-
对 Lambda 函数的每个请求都是不同的 Guid。有时我会在 30 秒内执行第二个或第三个后续请求。其他时候我会不管它。我会后悔 CWL,但它没有显示更新。一段时间后,我将发出一个新请求,然后 CWL 更新,我看到 CWL 中基于请求 ID 的条目混合包。
-
标题听起来有误导性。您的问题不只是日志没有及时出现在 CloudWatch Logs 中吗?
标签: amazon-web-services aws-lambda amazon-cloudwatch amazon-cloudwatchlogs