CloudWatch Logs Insights 解析语法

CloudWatch Logs Insights Parse Syntax

我有一个查询 ec2 api 并将输出打印到 cloudwatch 日志的 Lambda,我想将其用于指标。但是,我在解析输出(从字典生成)时遇到问题。这是一个典型的@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)。

感谢帮助。

如果您可以修改 Lambda,最简单的解决方案可能是将字典打印为一行 JSON(而不是 Python 字典的字符串格式)- 类似于 print(json.dumps(myvalue)) 应该可以解决问题。 Cloudwatch 将自动理解这些字段。

如果您无法修改 Lambda 的输出,向 Logs Insights 查询添加更多引号可能会有所帮助:parse @message "'InstanceID': '*'" as InstanceID.