クエリ構文

アセットを検索するには、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 が含まれます。

タイムスタンプ フィールド(createTime と updateTime)の場合、QUERY は 64 ビット符号付き整数で、エポック タイムスタンプ(秒単位)を表します。または、次のいずれかの形式の日時文字列(タイムゾーンは UTC)です。

  • YYYY-MM-DD: 2021-01-01(引用符は任意)
  • "YYYY-MM-DDThh:mm:ss": "2021-01-01T00:00:00"(引用符が必要です)

たとえば、createTime フィールドの値が 16094592002021-01-01T00:00:00 のエポック タイムスタンプ)であるアセットは、次のクエリに一致します。

  • 等しい。

      createTime=1609459200
      createTime=2021-01-01
      createTime="2021-01-01T00:00:00"
    
  • より大きい。

      createTime>1500000000
      createTime>2020-01-01
      createTime>"2020-01-01T00:00:00"
    
  • 以上。

      createTime>=1609459200
      createTime>=2021-01-01
      createTime>="2021-01-01T00:00:00"
    
  • 未満。

      createTime<1700000000
      createTime<2022-01-01
      createTime<"2022-01-01T00:00:00"
    
  • 以下。

      createTime<=1609459200
      createTime<=2021-01-01
      createTime<="2021-01-01T00:00:00"
    

フレーズ

フレーズは、二重引用符(")で囲まれた 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 フィールドに単語 amyjohn の両方または単語 bob を含むアセットを返します。

    owner:((amy john) OR bob)
    
  • Return assets whose owner フィールドに単語 amy と単語 john が含まれるか、name フィールドに単語 bob が含まれるアセットを返します。

    owner:(amy john) OR name:bob
    

検索フィルタを無効にする

検索フィルタは、NOT 演算子を使用して無効にできます。丸括弧がサポートされていますが、必須ではありません。

例: 検索フィルタを無効にする

  • state フィールドに ACTIVE という単語を含まないアセットを返します。

    NOT state:ACTIVE
    
  • owner フィールドに amyjohn のいずれの単語も含まないアセットを返します。

    NOT owner:(amy OR john)
    
  • networkTags フィールドに internal または private の単語を含まないアセットを返します。

    NOT (networkTags:internal OR networkTags:private)
    

ワイルドカード

アスタリスク(*)は、ワイルドカード文字としてフレーズで使用できます。位置によっては、異なる意味を持つこともあります。

  • 例えば、フレーズの終わりに"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:*