Cloudwatch Log Insights синтаксис для анализа всего перед первым прямым косым чертом

#amazon-cloudwatch #amazon-cloudwatchlogs #aws-cloudwatch-log-insights

Вопрос:

У меня есть журнал JSON Cloudwatch, как показано ниже:

 {"path": "folder1/folder2/file.txt"}
 

Моя цель состоит в том, чтобы проанализировать этот журнал, чтобы я мог создать новое поле parent из path поля таким образом, чтобы его значение было folder1 равно . Мне в основном нужно получить все от начала до первой прямой косой черты в значении path поля.

Это то, что я пытаюсь:

 fields  @timestamp, @message
| parse @message '"path": "*"' as @path
| parse @path /(^[^/] )/ as @parent
 

Но это дает мне синтаксическую ошибку в as строке 3 с ошибкой: 'as' is not valid in this position, expecting EOF, '|', '|>'

Я проверил выражение регулярного выражения, которое я использую в https://rubular.com/r/CXQS8auGY08K0M.

Что я упускаю? Спасибо!

Ответ №1:

Поскольку сообщение начинается и заканчивается {} , вам нужно добавить их в регулярное выражение для анализа. Следующее должно помочь

 fields  @timestamp, @message
| parse @message '{"path": "*"}' as @path
| parse @path '*/*' as @parent, @subfolder
 

Ответ №2:

При использовании команды синтаксического анализа с регулярным выражением вместо сглаживания полей используйте синтаксис именованных групп захвата:

 parse @path /(?<parent>^w )/