AWS の CloudWatch Logs Insights の ispresent 関数でちょっとつまづいたメモ。

AWS の CloudWatch Logs Insights の ispresent 関数でちょっとつまづいたメモ。

つまづいたこと

CloudWatch Logs Insights は独自のクエリ言語を備えていてロググループを効率的に検索できる。 クエリ言語は便利ないろんな関数が用意されていてとても便利なのだが、そのうちの1つ ispresent 関数を使おうとしてちょっとつまづいた。

ispresent は一般関数に分類され、公式ドキュメント によると一般関数は filter コマンドと fields コマンドで使えることになっている。

一般関数は、filter コマンドと fields コマンドで使用できます。

サンプルのクエリ にも

filter eventName="UpdateTrail" and ispresent(errorCode)
| stats count(*) by errorCode, errorMessage

filter コマンドで使えると書いてあるのだが、

fields @timestamp, @message
| filter ispresent(@timestamp)

こんなクエリを実行すると

クエリの理解で問題が発生しています。 というエラーになる。

解決策

ispresent 関数は fields コマンドで使ってエイリアスをつけて、filter コマンドからはエイリアスを参照するとエラーにならずちゃんと動いた。

fields @timestamp, @message, ispresent(@timestamp) as exists
| filter exists

自分の使い方がなにか間違ってるのかなー

参考にしたページ

stackoverflow.com