我有一个Lambda,可以查询ec2 api并将输出打印到cloudwatch日志中,我想将其用作指标。但是,我在解析输出(从字典生成)时遇到了麻烦。这是典型的@message:
defaultdict(None, {ec2.Instance(id='i-instance'): {'InstanceID': 'i-instance', 'Type': 't2.micro', 'ImageID': 'ami-0e5493310d2c6de5b', 'State': 'running'
我曾尝试|parse 'InstanceID': *' as InstanceId
和类似的错误,但是在文档(https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)中没有找到示例。
感谢协助。
答案 0 :(得分:1)
如果您可以修改Lambda,则可能最简单的解决方案是将字典打印为单行JSON(而不是Python字典的字符串格式)-像print(json.dumps(myvalue))
这样的方法就可以了。然后,Cloudwatch将自动了解这些字段。
如果您无法修改Lambda的输出,请在Logs Insights查询中添加更多引号可能会有所帮助:parse @message "'InstanceID': '*'" as InstanceID
。