ブール、比較、数値、日時、その他の関数 - Amazon CloudWatch Logs

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ブール、比較、数値、日時、その他の関数

CloudWatch Logs Insights は、次のセクションで説明するように、クエリで他の多くのオペレーションと関数をサポートしています。

算術演算子

算術演算子は、数値データ型を引数として受け入れ、数値結果を返します。算術演算子は、filter コマンドと fields コマンドで使用します。また、他の関数の引数としても使用します。

Operation 説明

a + b

加算

a - b

減算

a * b

乗算

a / b

除算

a ^ b

指数 (2 ^ 38 を返します)

a % b

残余または剰余 (10 % 31 を返します)

ブール演算子

ブール演算子 andor、および not を使用します。

注記

ブール演算子は、 TRUEまたは の値を返す関数でのみ使用しますFALSE

比較演算子

比較演算子は、すべてのデータ型を引数として受け入れ、ブール値の結果を返します。比較オペレーションは、filter コマンドで使用します。また、他の関数の引数としても使用します。

演算子 説明

=

Equal

!=

Not equal

<

Less than (より小さい)

>

Greater than (より大きい)

<=

以下

>=

以上

数値演算子

数値オペレーションは、数値データ型を引数として受け入れ、数値結果を返します。数値オペレーションは、filter コマンドと fields コマンドで使用します。また、他の関数の引数としても使用します。

Operation 結果タイプ 説明

abs(a: number)

number

絶対値

ceil(a: number)

number

上限 (a の値より大きい最小整数) に切り上げられます。

floor(a: number)

number

下限 (a の値より小さい最大整数) に切り下げられます。

greatest(a: number, ...numbers: number[])

number

最大値を返します

least(a: number, ...numbers: number[])

number

最小値を返します

log(a: number)

number

自然対数

sqrt(a: number)

number

平方根

構造タイプ

マップまたはリストは、クエリの属性にアクセスして使用できる CloudWatch Logs Insights の構造タイプです。

例: マップまたはリストを取得するには

jsonParse を使用して、JSON 文字列であるフィールドをマップまたはリストに解析します。

fields jsonParse(@message) as json_message
例: 属性にアクセスするには

ドットアクセス演算子 (map.attribute) を使用して、マップ内の項目にアクセスします。マップ内の属性に特殊文字が含まれている場合は、バックティックを使用して属性名 (map.attributes.`special.char`) を囲みます。

fields jsonParse(@message) as json_message | stats count() by json_message.status_code

ブラケットアクセス演算子 (list[index]) を使用して、リスト内の特定の位置にある項目を取得します。

fields jsonParse(@message) as json_message | filter json_message.users[1].action = "PutDat

キー名に特殊文字が含まれている場合は、特殊文字をバックティック (``) でラップします。

fields jsonParse(@message) as json_message | filter json_message.`user.id` = "123"
例: 空の結果

マップとリストは、文字列、数値、および日時関数では null として扱われます。

fields jsonParse(@message) as json_message | display toupper(json_message)

マップとリストを他のフィールドと比較すると、 になりますfalse

注記

deduppattern、および でのマップsortとリストstatsの使用はサポートされていません。

日時関数

日時関数

日時関数は、fields コマンドと filter コマンドで使用します。また、他の関数の引数としても使用します。これらの関数では、集計関数を使用してクエリの時間バケットを作成します。数値と次のいずれかで構成される期間を使用します。

  • ms はミリ秒

  • s は秒

  • m は分

  • h は時間

たとえば、10m は 10 分、1h は 1 時間です。

注記

日時関数に最適な時間単位を使用します。 CloudWatch ログは、選択した時間単位に従ってリクエストを制限します。例えば、s を使用するすべてのリクエストの最大値として 60 を上限とします。したがって、 を指定した場合bin(300s)、 CloudWatch Logs はこれを実際に 60 秒として実装します。60 は 1 分間の秒数であるため、 CloudWatch Logs は で 60 を超える数値を使用しませんs。5 分間のバケットを作成するには、代わりに bin(5m) を使用します。

ms の上限は 1000、sm の上限は 60、h の上限は 24 です。

次の表は、クエリコマンドで使用できるさまざまな日付時刻関数のリストを示したものです。このリストには、各関数の結果タイプと説明が記載されています。

ヒント

クエリコマンドを作成するときに、時間間隔セレクタを使用してクエリの対象とする期間を選択できます。例えば、5~30 分間隔、1 時間、3 時間、12 時間間隔、またはカスタム時間枠の期間を設定できます。また、特定の日付の間で期間を指定することもできます。

関数 結果タイプ 説明

bin(period: Period)

Timestamp

@timestamp の値を特定の期間に切り上げ、次に切り詰めます。例えば、bin(5m)@timestamp の値を最も近い 5 分に四捨五入します。

これを使用して、複数のログエントリをクエリにまとめることができます。次の例では、1 時間あたりの例外の数を返します。

filter @message like /Exception/ | stats count(*) as exceptionCount by bin(1h) | sort exceptionCount desc

bin 関数では、次の時間単位と略語がサポートされています。複数の文字を含むすべての単位と略語では、s の複数形への追加がサポートされています。したがって、hr および hrs の両方とも時間を指定して機能します。

  • millisecond ms msec

  • second s sec

  • minute m min

  • hour h hr

  • day d

  • week w

  • month mo mon

  • quarter q qtr

  • year y yr

datefloor(timestamp: Timestamp, period: Period)

Timestamp

タイムスタンプを特定の期間に切り詰めます。たとえば、datefloor(@timestamp, 1h)@timestamp のすべての値を 1 時間の下限に切り詰めます。

dateceil(timestamp: Timestamp, period: Period)

タイムスタンプ

タイムスタンプを特定の期間に切り上げ、次に切り詰めます。たとえば、dateceil(@timestamp, 1h)@timestamp のすべての値を 1 時間の上限に切り詰めます。

fromMillis(fieldName: number)

タイムスタンプ

入力フィールドを Unix エポックからのミリ秒数として解釈し、タイムスタンプに変換します。

toMillis(fieldName: Timestamp)

数値

指定されたフィールドで見つかったタイムスタンプを、Unix エポックからのミリ秒を表す数値に変換します。例えば、toMillis(@timestamp) はタイムスタンプを 2022-01-14T13:18:031.000-08:00 から 1642195111000 に変換します。

注記

現在、 CloudWatch Logs Insights では、人間が読み取れるタイムスタンプを使用したログのフィルタリングはサポートされていません。

一般関数

一般関数

一般関数は、fields コマンドと filter コマンドで使用します。また、他の関数の引数としても使用します。

関数 結果タイプ 説明

ispresent(fieldName: LogField)

ブール値

フィールドが存在する場合は true を返します

coalesce(fieldName: LogField, ...fieldNames: LogField[])

LogField

リストから最初の null でない値を返します

JSON 関数

JSON 関数

JSON 関数は、 fields コマンドと filter コマンドで使用し、他の関数の引数として使用します。

関数 結果タイプ 説明

jsonParse(fieldName: string)

マップ | リスト | 空

入力がJSONオブジェクトまたはJSON配列の文字列表現である場合、マップまたはリストを返します。入力が表現のいずれでもない場合、空の値を返します。

jsonStringify(fieldName: string)

文字列

入力がJSONオブジェクトまたはJSON配列の文字列表現である場合、マップまたはリストを返します。入力が表現のいずれでもない場合、空の値を返します。マップまたはリストデータからJSON文字列を返します。

IP アドレス文字列関数

IP アドレス文字列関数

IP アドレス文字列関数は、filter コマンドと fields コマンドで使用します。また、他の関数の引数としても使用します。

関数 結果タイプ 説明

isValidIp(fieldName: string)

ブール型

フィールドが有効な IPv4または IPv6 アドレスtrueの場合は を返します。

isValidIpV4(fieldName: string)

boolean

フィールドが有効なIPv4アドレスtrueの場合は を返します。

isValidIpV6(fieldName: string)

boolean

フィールドが有効なIPv6アドレスtrueの場合は を返します。

isIpInSubnet(fieldName: string, subnet: string)

boolean

フィールドが、指定された v4 IPv4または v6 サブネット内の有効な または IPv6 アドレスtrueである場合は、 を返します。サブネットを指定するときは、 192.0.2.0/24や などのCIDR表記を使用します。ここで2001:db8::/32192.0.2.0 または 2001:db8::はCIDRブロックの開始です。

isIpv4InSubnet(fieldName: string, subnet: string)

boolean

フィールドが指定された v4 サブネット内の有効なIPv4アドレスtrueである場合は、 を返します。サブネットを指定するときは、 192.0.2.0がCIDRブロックの開始192.0.2.0/24点である などのCIDR表記を使用します。

isIpv6InSubnet(fieldName: string, subnet: string)

boolean

フィールドが指定された v6 サブネット内の有効なIPv6アドレスtrueである場合は、 を返します。サブネットを指定するときは、 2001:db8::がCIDRブロックの開始2001:db8::/32点である などのCIDR表記を使用します。

文字列関数

文字列関数

文字列関数は、fields コマンドと filter コマンドで使用します。また、他の関数の引数としても使用します。

関数 結果タイプ 説明

isempty(fieldName: string)

数値

フィールドが欠落しているか、空の文字列である場合、1 を返します。

isblank(fieldName: string)

数値

フィールドが欠落しているか、空の文字列であるか、空白が含まれている場合、1 を返します。

concat(str: string, ...strings: string[])

文字列

複数の文字列を連結します。

ltrim(str: string)

ltrim(str: string, trimChars: string)

文字列

関数に 2 番目の文字列引数がない場合、文字列の左側からホワイトスペースを削除します。関数に 2 番目の文字列引数がある場合、ホワイトスペースは削除されません。その場合、strの左から trimChars 個の文字が削除されます。たとえば、ltrim("xyZxyfooxyZ","xyZ")"fooxyZ" を返します。

rtrim(str: string)

rtrim(str: string, trimChars: string)

文字列

関数に 2 番目の文字列引数がない場合、文字列の右側からホワイトスペースを削除します。関数に 2 番目の文字列引数がある場合、ホワイトスペースは削除されません。その場合、strの右から trimChars 個の文字が削除されます。たとえば、rtrim("xyZfooxyxyZ","xyZ")"xyZfoo" を返します。

trim(str: string)

trim(str: string, trimChars: string)

文字列

関数に 2 番目の文字列引数がない場合、文字列の両方の端からホワイトスペースを削除します。関数に 2 番目の文字列引数がある場合、ホワイトスペースは削除されません。その場合、strの両方から trimChars 個の文字が削除されます。たとえば、trim("xyZxyfooxyxyZ","xyZ")"foo" を返します。

strlen(str: string)

数値

文字列の長さを Unicode コードポイントで返します。

toupper(str: string)

文字列

文字列を大文字に変換します。

tolower(str: string)

文字列

文字列を小文字に変換します。

substr(str: string, startIndex: number)

substr(str: string, startIndex: number, length: number)

文字列

数値引数で指定されたインデックスから文字列の末尾までの部分文字列を返します。関数に 2 番目の数値引数がある場合、この引数には取得される部分文字列の長さが含まれます。たとえば、substr("xyZfooxyZ",3, 3)"foo" を返します。

replace(fieldName: string, searchValue: string, replaceValue: string)

文字列

searchValuefieldName: string のすべてのインスタンスを replaceValue に置き換えます。

例えば、関数 replace(logGroup,"smoke_test","Smoke") はフィールド logGroup に文字列値 smoke_test を含むログイベントを検索し、その値を文字列 Smoke に置き換えます。

strcontains(str: string, searchValue: string)

number

strsearchValue が含まれている場合は 1 を返し、それ以外の場合は 0 を返します。