アセットを検索するには、FIELD、演算子、QUERY を指定して、検索結果をフィルタリングします。
テキスト完全一致: 等価演算子(=
)
FIELD=QUERY
クエリの例: owner=amy.2020@gmail.com
。
equals
(=
)演算子は、QUERY がアセット メタデータ FIELD の値と完全に一致することを確認します。大文字と小文字は区別されます。 繰り返しフィールドの場合、QUERY がフィールドの値のいずれかと一致すると、アセットは一致と見なされます。サポートされている FIELD 名は、クエリがリソース検索か、Identity and Access Management(IAM)ポリシー検索かによって異なります。QUERY はフレーズですが、ワイルドカードは使用できません。
テキスト部分一致: has 演算子(:
)
FIELD:QUERY
クエリの例: owner:amy.2020@gmail
。
検索を実行すると、QUERY と指定したアセット メタデータ FIELD の値が比較されます。クエリとアセット メタデータ フィールドは比較のために一連の単語(すなわちトークン)に変換されます。これは、次のようにして行われます。
- 先頭または末尾の特殊文字を削除し、特殊文字を区切り文字として扱うことにより検索値をトークン化する。トークン化特殊文字は、英数字
[a-zA-Z0-9]
、アンダースコア[_]
、アンパサンド[&]
のいずれでもない文字です。 - 文字の大文字小文字の区別が無視されるよう、Unicode の大文字小文字変換を行う。
以下にトークン化の例を示します。
"amy-2020@GMAIL.com"
は[amy,2020,gmail,com]
にトークン化されます。"google.com/cloud"
は[google,com,cloud]
にトークン化されます。"Compute %Instance%"
は[compute,instance]
にトークン化されます。"$%^*-!"
は[]
にトークン化されます。""
は[]
にトークン化されます。"compute*storage"
は[compute,storage]
にトークン化されます。"compute&storage"
は[compute&storage]
にトークン化されます。"BOB_test@gmail.com"
は[bob_test,gmail,com]
にトークン化されます。"instance/_my_vm_"
は[instance,_my_vm_]
にトークン化されます。
has
(:
)演算子は、QUERY の各単語がアセット メタデータ フィールドの値内に存在するかを確認します。単語の順序と連続性も確認します。サポートされる FIELD は、リソース検索か IAM ポリシー検索かによって異なることがあります。QUERY は、フレーズまたは複数フレーズの組み合わせです。
例
たとえば、owner
フィールドの値が "amy.2020@gmail.com"
のアセットは、次のクエリに一致します。
フレーズがフィールドの値と完全に同じであるため、一致しています。
owner=amy.2020@gmail.com
句読点は区切り文字として扱われ、大文字と小文字が区別されないため、一致します。
owner:amy-2020@GMAIL.com
フレーズ内の単語が順に照合されるため、一致します。なお、
"amy 2020 gmail"
はフレーズです。単語を順につなげて連続的に照合します。owner:"amy 2020 gmail"
単語の組み合わせは任意の順序で出現するため、一致します。なお、
(gmail 2020 amy)
は組み合わせです。単語必ずしも順番に照合されません。owner:(gmail 2020 amy)
フレーズ内の単語が順番どおりに一致し、組み合わせ内の単語が順番どおり出現するため、一致します。なお、
"amy 2020"
はフレーズです。単語を順につなげて連続的に照合します。(gmail "amy 2020")
は組み合わせです。gmail
と"amy 2020"
は必ずしも順序どおりに照合されません。owner:(gmail "amy 2020")
*
が接頭辞の一致を示すためにフレーズ内で使用できるため、一致します。owner:amy-20*
owner
フィールドの値が "amy.2020@gmail.com"
のアセットは、次のクエリと一致しません。
フレーズの大文字と小文字は区別されるため、一致しません。大文字と小文字を区別しない一致には、代わりに
has
(:
)演算子を使用します。owner=amy.2020@GMAIL.com
フレーズがフィールドの値と部分的に一致しているため、一致しません。部分一致には、代わりに
has
(:
)演算子を使用します。owner=amy.2020@gmail
数値一致: 比較演算子(=
、>
、>=
、<
、<=
)
FIELD=QUERY
FIELD>QUERY
FIELD>=QUERY
FIELD<QUERY
FIELD<=QUERY
比較演算子は、QUERY とアセット メタデータ FIELD の値との比較結果が true であるかどうかを確認します。サポートされている FIELD 名には createTime と updateTime が含まれます。QUERY は、64 ビット符号付き整数である必要があります。これは、エポック タイムスタンプ(秒単位)を表します。
例
たとえば、createTime
フィールドの値が 1600000000
のアセットは、次のクエリに一致します。
等しい。
createTime=1600000000
より大きい。
createTime>1500000000
以上。
createTime>=1600000000
未満。
createTime<1700000000
以下。
createTime<=1600000000
フレーズ
フレーズは、二重引用符("
)で囲まれた 1 つ以上の単語です。フレーズでは、単語の順序が重要となります。フレーズ内の単語は、順序どおり、連続的に一致する必要があります。なお、順序を指定せずに複数の単語を照合するには、組み合わせを使用する必要があります(たとえば field:(word1 word2 word3)
)。
次の式は同じ内容を表します。
owner:amy
owner:"amy"
owner:amy.2020@gmail.com
owner:"amy.2020@gmail.com"
name://cloudresourcemanager.googleapis.com/projects/projects/foo-bar
name:"//cloudresourcemanager.googleapis.com/projects/projects/foo-bar"
次のフレーズは、引用符で囲む必要があります。
name:"my instance"
owner:"amy%2020@gmail.com"
description:"domain:gmail.com"
description:"hello \"world\""
description:"hello\\world"
例: フレーズ
owner
フィールドに単語amy
および単語2020
が含まれているアセットを順番に続けて返します。owner:"amy 2020"
owner
フィールドの値が"amy.2020@gmail.com"
であるアセットがある場合は、上記のクエリと一致します。owner
フィールド値が"2020.amy@gmail.com"
であるアセットがある場合、単語の順序が一致しないため、上記のクエリと一致しません。owner
フィールド値が"amy.us.2020@gmail.com"
であるアセットがある場合、単語は連続して一致していないため、上記のクエリと一致しません。
組み合わせ
検索フレーズは、AND
または OR
を使用して組み合わせることができます。括弧は組み合わせをグループ化するために使用します。
例: 組み合わせ
owner
フィールドに単語amy
と単語john
の両方が含まれるアセットを、順序を指定せずに返します。AND
は組み合わせでは省略可能です。なお、複数の単語を順番どおり照合するには、フレーズを使用する必要があります(例:field:"word1 word2 word3"
)。owner:(amy john)
owner
フィールドにamy
またはjohn
のいずれかの単語を含むアセットを返します。owner:(amy OR john)
owner
フィールドに単語amy
とjohn
の両方または単語bob
を含むアセットを返します。owner:((amy john) OR bob)
Return assets whose
owner
フィールドに単語amy
と単語john
が含まれるか、name
フィールドに単語bob
が含まれるアセットを返します。owner:(amy john) OR name:bob
ワイルドカード
アスタリスク(*
)は、ワイルドカード文字としてフレーズで使用できます。位置によっては、異なる意味を持つこともあります。
例えば、フレーズの終わりに
"am 20*"
がある場合は、トークン プレフィックス マッチ指標です。このクエリは(am* 20*)
と同じです。これはトークンを含み、「am」で始まるフィールド(「amy」など)と「20」で始まるトークン(「2021」など)と一致します。接頭辞の順序は関係ありません。フレーズ全体で
*
を 1 つだけ含む場合("labels.env:*"
など)、存在チェックを実行します。指定されたラベルキー「env」が存在するかどうかを確認します。他のフィールドはサポートされていません。フレーズの途中にある場合(
"compute*storage"
など)は、トークン化区切り文字として処理されます。このクエリは「compute storage」と同等です。フレーズの先頭と末尾にある場合(
"*compute storage*"
など)は、トークン化区切り文字として処理されます。このクエリは「compute storage」と同等です。
例: トークンの接頭辞の一致
owner
フィールドにam
で始まる単語を含むアセットを返します。owner:am*
"amy"
と"20"
を接頭辞とする 2 つの単語をowner
フィールドに持つアセットを返します。owner:"amy 20*" owner:"20 amy*"
owner
フィールド値が"amy.2020@gmail.com"
のアセットの場合、上記のクエリは両方とも一致します。トークン化した後、"amy"
と"20"
の両方が接頭辞になります。なお、クエリ文字列"amy 20*"
は"amy 20"
とは異なります。後者の場合、20
は接頭辞以外の単語全体である必要があります。
例: ラベルキーの存在
labels
に「env」というキーがあり、任意の値(空の値や値なしを含む)を持つアセットを返します。labels.env:*