使用lambda和python解析cloudwatch日志事件消息数据
所以。。。我有一个lambda,它使用pythonbot3为我拉取cloudwatch日志流使用lambda和python解析cloudwatch日志事件消息数据,python,amazon-web-services,aws-lambda,amazon-cloudwatch,Python,Amazon Web Services,Aws Lambda,Amazon Cloudwatch,所以。。。我有一个lambda,它使用pythonbot3为我拉取cloudwatch日志流 responseRDS = client.get_log_events( logGroupName='<target log group>', logStreamName='<target stream>', limit=10, startFromHead=False ) 我真正想要的是查询时间和行数。我可以想出一些肮脏的方法,比如使用
responseRDS = client.get_log_events(
logGroupName='<target log group>',
logStreamName='<target stream>',
limit=10,
startFromHead=False
)
我真正想要的是查询时间和行数。我可以想出一些肮脏的方法,比如使用空格作为分隔符解析有效负载。。。但如果我没有太多的时间,我也不想做什么。我希望有一种类似于Insights过滤器的方法,我可以使用:
@Query_time
有什么建议吗?这可能是一个很好的用例:
这可能是一个很好的用例:
这看起来很有希望!我是python新手,所以在测试之前,我必须弄清楚如何将正则表达式库导入lambda层。。。但是当我执行你的代码时,我得到了“errorMessage”:“NoneType”对象没有属性“group”,“errorType”:“AttributeError”,“stackTrace”:[“File\”/var/task/lambda_function.py\”,第38行,在lambda_handler\n query\u time=m.group(1)#36.601863\n“]哦,这是我代码的问题,我将其更新为使用
re.search
而不是re.match
,这应该会更好。我非常感谢您的帮助JD D,但我不想说,当我复制并粘贴此代码时,我得到的只是:“errorMessage”:无法封送响应:查看错误消息时,它似乎正在找到它。这看起来非常有希望!我是python新手,所以在测试之前,我必须弄清楚如何将正则表达式库导入lambda层。。。但是当我执行你的代码时,我得到了“errorMessage”:“NoneType”对象没有属性“group”,“errorType”:“AttributeError”,“stackTrace”:[“File\”/var/task/lambda_function.py\”,第38行,在lambda_handler\n query\u time=m.group(1)#36.601863\n“]哦,这是我代码的问题,我将其更新为使用re.search
而不是re.match
,这应该会更好。我非常感谢您的帮助JD D,但我不想说,当我复制并粘贴此代码时,我得到的只是:“errorMessage”:“无法封送响应:查看错误消息,它似乎正在查找它。”。
@Query_time
import re
resp = {"message": "# Time: 2020-03-10T05:49:25.597945Z\n# User@Host: domain_XX[domain_XX] @ [11.111.11.111] Id: 47187\n# Query_time: 36.601863 Lock_time: 0.000237 Rows_sent: 0 Rows_examined: 32256"}
m = re.search(r"Query_time: ([\d.]+).*Rows_examined: (\d+)", resp["message"])
query_time = m.group(1) # 36.601863
rows_examined = m.group(2) # 32256