Amazon web services 搜索JSON属性名称中带有特殊字符的AWS CloudWatch日志

Amazon web services 搜索JSON属性名称中带有特殊字符的AWS CloudWatch日志,amazon-web-services,amazon-cloudwatch,amazon-cloudwatchlogs,Amazon Web Services,Amazon Cloudwatch,Amazon Cloudwatchlogs,我们使用AWS CloudWatch日志来调试在AWS上运行的服务,日志中的许多属性名称使用冒号作为分隔符,但我们不知道如何使用这些属性名称进行搜索 下面是一个日志示例: { "Counts": { "RouteHandler:GetCookies": { "value": 1 } } } 使用控制台,我尝试了如下查询: { $.Counts.RouteHandler:GetCookies.value = 1 } 当然,特殊字符通常在查询语言和其他语言中有

我们使用AWS CloudWatch日志来调试在AWS上运行的服务,日志中的许多属性名称使用冒号作为分隔符,但我们不知道如何使用这些属性名称进行搜索

下面是一个日志示例:

{
  "Counts": {
    "RouteHandler:GetCookies": {
      "value": 1
    }
  }
}
使用控制台,我尝试了如下查询:

{ $.Counts.RouteHandler:GetCookies.value = 1 }
当然,特殊字符通常在查询语言和其他语言中有特定的用途,所以我尝试以某种方式避开它

{ $.Counts.RouteHandler\:GetCookies.value = 1 }
// JavaScript inspired
{ $.Counts["RouteHandler:GetCookies"].value = 1 }
// Special character removed
{ $.Counts.RouteHandlerGetCookies.value = 1 }
我想不出什么有用的,也许这是不可能的。似乎没有解决这种情况

有人知道如何搜索属性包含特殊字符的JSON日志,或者明确知道是否支持此功能吗


在新的工作中,我们将使用不同的分隔符,但我们不会返回并在任何地方更改它。

在撰写本文时,这是不可能的。AWS可能会在某个时候解决这个问题,但目前唯一的解决办法是使用非JSON语法并搜索确切的字符串。以下过滤器:

"\"RouteHandler:GetCookies\": {\"value\": 1}"
将匹配此日志事件:

{"Counts": {"RouteHandler:GetCookies": {"value": 1}}}

显然,缺点是空格和位置很重要。

以前从未见过这种情况。我们发现的一件事是,它有时在奇怪的地方标记为数字。只有在忽略前导0的情况下,才能在日志中找到十六进制字符串0101fdb913。