如何通过CloudWatch查询Lambda成功执行的最小与最大耗时
通过CloudWatch查询Lambda成功执行的最小/最大执行时间
需求
查询CloudWatch日志,获取Lambda仅成功执行实例的最小和最大执行时间,需排除失败的执行记录。
首次尝试的查询
最初使用以下查询获取执行时间的极值,但结果包含了失败的Lambda执行记录:
fields @message | filter @type = "REPORT" | stats min(@duration) as MinimumTime, max(@duration) as MaximumTime
筛选成功执行RequestId的思路
Lambda执行失败时会同时生成[ERROR]和REPORT日志,而成功执行仅生成REPORT日志。基于这个特性,可以筛选出仅对应成功执行的RequestId:
fields @message | filter @message like "REPORT" or @message like "[ERROR]" | filter ispresent(@requestId) | stats count(*) as requestIdLogCount by @requestId | filter requestIdLogCount == 1
优化需求
能否通过子查询等方式整合上述逻辑,直接利用筛选出的成功RequestId过滤日志,生成仅包含成功执行的统计报告?类似以下硬编码RequestId的示例效果:
fields @message | filter @type = "REPORT" | filter @requestId in ["a458412a-95e7-5023-842e-1dbe8f58a876", "082db28d-8f43-5f83-9a72-ee1985861515"] | stats min(@duration) as MinimumTime, max(@duration) as MaximumTime
内容的提问来源于stack exchange,提问作者Sazzadur Rahman
相关产品推荐
相关产品推荐

