web-dev-qa-db-ja.com

Amazon Cloudwatch Logs Insightsが正規表現で解析

parseコマンドで一時フィールドを抽出しようとしています。残念ながら、ログ形式はglob式では十分ではないため、正規表現を使用する必要があります。正規表現自体は問題ありませんが、何かを抽出するコマンドを作成できません。

私はしようとしています:

parse @endpoint /^([a-zA-Z_]+)[\/|?]*.*/ as @clean_endpoint

最初のグループは私がここにいるもので、私はさまざまな種類の引用符などを試してみました。それは単なる愚かなフォーマットエラーかもしれませんが、それを見つけることができません。

parseコマンドについて言及しているほとんどのドキュメントは here であり、グロブ式の使用例です。ググリングしても例が見つかりませんでした。

だから誰かがこれにぶつかってそれを解決しましたか?

13
tnissi

これに対する答えが見つかったかどうかはわかりませんが、解析で正規表現を使用する場合、globの場合のように一時フィールドに名前を付けることはできません。

グロブ式を使用する場合は、ステートメントの最後に「as ___」を付けて新しいフィールドに名前を付けます。これを正規表現で試した場合、機能しません。

parse @message ((glob expression here)) as ephem_field

正規表現を使用する場合、新しいフィールドは式自体の中で名前付きグループとして名前を付ける必要があります。

parse @message /(?<clean_endpoint>^([a-zA-Z_]+)[\/|?]*.*)/

正規表現を使用すると、単一引用符'name'または山かっこ<name>を使用してグループに名前を付けることができますが、AWS CloudWatch Insightsはグループに名前を付けるときに山かっこのみを受け入れることに気付きました。単一引用符で試行すると、クエリを理解できないというエラーが表示されました。

AWSがどの正規表現タイプを使用しているかはわかりませんが、他のツールで許可されるいくつかの文字をエスケープする必要があることがわかりました。

1
the1337beauty