#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 )/