CloudWatch 见解日志解析

CloudWatch insights log parsing

我一直在尝试解析资源 arn ex.(arn:aws:ec2:us-east-1:0123456789:volume/vol-gg4gggs0svevb3000) 以提取 vol-* on CloudWatch logs insights 但无法获得正确的正则表达式模式和所需的结果。

我试过使用下面的模式但没有结果。

parse @message /.[v,o,l].-([0-9][a-z]){0,17}/

在您尝试的模式中,这部分 ([0-9][a-z]){0,17} 重复单个数字 0 到 17 次,紧接着是单个字符 a-z。因此,该特定顺序中的最大字符数为 34。

另请注意,重复捕获组时,组值包含上次迭代的值。在这种情况下,这将是 2 个字符。

这部分 .[v,o,l]. 可以写成 .[vol,]. 并匹配 3 个字符:一个点可以匹配除换行符之外的任何字符,然后 v [=15= 中的 1 个] l, 因为它是一个 character class 并且又是一个可以匹配除换行符之外的任何字符的点

阅读 this page,您要提取的部分应该在命名的捕获组中。

parse @message /(?<volume>vol-[0-9a-z]{17})/

模式匹配

  • (?<volume> 命名捕获组 volume
    • vol-字面匹配
    • [0-9a-z]{17} 重复 17 次任何列出的字符 class
  • ) 关闭命名组

Regex demo