如何从运行在aws lambda函数中的docker映像获取日志?

pbwdgjma  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(532)

我正在尝试调试使用docker映像的aws lambda函数,如下所述。我使用的是股票aws python图像: public.ecr.aws/lambda/python:3.8 我可以按照上面链接中描述的步骤在本地测试我的功能,它工作得很好: docker run -p 9000:8080 hello-world ,然后是 curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}' 在另一个终端窗口中,正确执行我期望的功能。但是,一旦在lambda中运行,在成功标记图像并将其推送到aws ecr后,该功能似乎不起作用,并且我无法找到任何日志来调试失败/丢失的执行。
我对这些日志的存储位置和/或将这些日志放入cloudwatch或类似内容时可能缺少的配置有点不知所措。在哪里可以找到这些日志来进一步调试lambda函数?

rdrgkggo

rdrgkggo1#

因此,使用lambda与代码zip或s3兼容的docker图像在技术上没有区别。至于日志,根据aws文件(这是直接从文件中获得的描述):
aws lambda代表您自动监控lambda功能,通过amazon cloudwatch报告指标。为了帮助您排除函数中的故障,lambda记录函数处理的所有请求,并通过amazon cloudwatch日志自动存储代码生成的日志。
您可以在代码中插入日志语句,以帮助验证代码是否按预期工作。lambda自动与cloudwatch日志集成,并将代码中的所有日志推送到与lambda函数关联的cloudwatch日志组,该函数名为/aws/lambda/。
因此,最基本的代码应该在lambda中有某种日志记录。在这种情况下,我建议进行故障排除:
1-如下图所示,转到lambda函数并尝试直接从控制台访问cloudwatch日志。确保确认部署函数的默认区域。

2-如果日志存在(lambda函数的组存在),则检查代码中是否存在任何raise异常。
3-如果有任何错误表明cloudwatch的组日志不存在或函数中的组日志不存在,则直接在控制台中检查lambda中的配置,或者,如果您使用的是无服务器或cloudwatch之类的框架,则检查代码结构。
4-最后,如果一切看起来都正常,这可能只与一件简单的事情有关。帐户的用户权限或lambda函数的角色权限(在这些情况下通常是这样)。
有关此问题的更多信息,请参见:https://aws.amazon.com/pt/premiumsupport/knowledge-center/lambda-cloudwatch-log-streams-error/
我之所以这么说,是因为我经常使用docker来处理lambda的代码依赖关系,这是从引入此功能时开始的第一个教程。
https://aws.amazon.com/pt/blogs/aws/new-for-aws-lambda-container-image-support/
希望这是有益的!
请随意留下其他评论。

相关问题