【问题标题】:Is there a way to easily get only the log entries for a specific AWS Lambda execution?有没有办法轻松获取特定 AWS Lambda 执行的日志条目?
【发布时间】:2021-04-06 21:23:50
【问题描述】:

Lambda 显然会跟踪执行情况,因为您可以在 Lambda 监控选项卡中看到数据点。

Lambda 还将日志保存在日志组中,但是我的印象是,如果在较短的时间间隔内(比如两次启动之间的 5 分钟)发生 Lambda 启动,则会被重用,因此多次执行的输出被写入同一个日志流。

这使得日志更难跟踪,尤其是由于其他限制(CloudWatch Web 控制台超级慢且导航繁琐,aws log get-log-events 有 1MB/10k 消息限制,因此使用起来很麻烦)。

有没有办法只获取特定 Lambda 执行的 Lambda 日志条目?

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-cloudwatch


    【解决方案1】:

    您可以按RequestId 过滤。大多数记录器会将其包含在日志中,并且会自动包含在 STARTENDREPORT 条目中。

    【讨论】:

    • 我刚试了一下,从“过滤事件”搜索框的日志中复制粘贴RequestId,什么都没有显示,一切都被过滤掉了。
    • 好的,找到了,但它很笨。 RequestIds 默认包含破折号。过滤器模式将破折号视为减号,因此它们分解了 RequestIds 并且找不到任何东西。必须引用他们...
    • 你可能需要在它周围加上引号
    • 是的,我注意到了...感谢您的提示!现在我只需要重新启用我刚刚禁用的 AWS 根记录器,因为它使我的所有日​​志条目加倍:-D
    【解决方案2】:

    我目前的方法是使用 CloudWatch Logs Insights 来查询我正在寻找的特定日志。这是示例查询:

    fields @timestamp, @message
    | filter @requestId = '5a89df1a-bd71-43dd-b8dd-a2989ab615b1'
    | sort @timestamp
    | limit 10000
    

    【讨论】:

    • 这真的很酷,但是这可用于基于 Docker 的 Lambda 吗?
    • @oblio 什么是基于 Docker 的 Lambda?
    • @oblio 是的,当然。它绝对应该适用于使用容器映像部署的 Lambda。
    • 你觉得呢?我找不到如何为 Docker 启用它,这些文档适用于标准 Lambda 包,带有 Lambda 层:-(
    猜你喜欢
    • 1970-01-01
    • 2022-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多