Rechercher des ressources

Vous pouvez rechercher des ressources dans un projet, un dossier ou une organisation, et filtrer les résultats renvoyés à l'aide d'une requête.

Avant de commencer

  1. Activez l'API Cloud Asset Inventory dans le projet à partir duquel vous exécutez les commandes inventaire des éléments cloud.

    Activer l'API Cloud Asset Inventory

  2. Assurez-vous que votre compte dispose du rôle approprié pour appeler l'API Cloud Asset Inventory. Pour connaître les autorisations individuelles pour chaque type d'appel, consultez la section Autorisations.

Créer une requête

Avant de créer une requête, il peut être utile de commencer par une requête de recherche qui ne spécifie pas de requête. Utilisez les champs et les valeurs de la réponse complète pour créer une requête à l'aide de la syntaxe de requête de recherche, puis affinez-la jusqu'à ce que les résultats souhaités soient renvoyés.

Les champs pouvant être utilisés dans une requête sont détaillés dans la documentation de référence sur searchAllResources.

Toutes les ressources ne peuvent pas faire l'objet d'une recherche. Consultez la section Types de ressources pour connaître les noms de ressources et vérifier s'ils sont disponibles pour les API de recherche.

Rechercher vos ressources

Console

Pour rechercher des métadonnées de ressources, procédez comme suit :

  1. Accédez à la page Inventaire des éléments dans la console Google Cloud .

    Accéder à l'inventaire des éléments

  2. Accédez au projet, au dossier ou à l'organisation dans lesquels vous souhaitez effectuer une recherche.
  3. Cliquez sur l'onglet Ressource.
  4. Pour rechercher des ressources, saisissez une requête dans le champ Filtre. Pour savoir comment rédiger une requête de recherche, consultez la section Syntaxe des requêtes de recherche.

    Pour faciliter la création de requêtes, vous pouvez cliquer sur le champ Filtrer pour afficher et ajouter les champs disponibles à votre requête.

Après avoir effectué une recherche, les ressources correspondant à la requête sont répertoriées dans le tableau Résultats. Double-cliquez sur votre requête pour la modifier ou utilisez le volet Filtrer les résultats pour affiner les résultats de recherche en fonction de critères spécifiques.

Pour afficher la requête en tant que commande Google Cloud CLI, cliquez sur Afficher la requête.

Pour exporter les résultats, cliquez sur Télécharger au format CSV.

gcloud

gcloud asset search-all-resources \
    --scope=SCOPE_PATH \
    --query="QUERY" \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --order-by="ORDER_BY" \
    --read-mask="READ_MASK"

Indiquez les valeurs suivantes :

  • SCOPE_PATH: utilisez l'une des valeurs suivantes:

    Les valeurs autorisées sont les suivantes :

    • projects/PROJECT_ID, où PROJECT_ID est l'ID du projet contenant les composants que vous souhaitez rechercher.
    • projects/PROJECT_NUMBER, où PROJECT_NUMBER est le numéro du projet contenant les éléments que vous souhaitez rechercher.

      Trouver un numéro de projet Google Cloud

      Google Cloud console

      Pour trouver un numéro de projet Google Cloud , procédez comme suit:

      1. Accédez à la page Bienvenue dans la console Google Cloud .

        Accéder à "Bienvenue"

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste, puis recherchez le nom de votre projet. Le nom, le numéro et l'ID du projet sont affichés près de l'en-tête Bienvenue.

        Jusqu'à 4 000 ressources peuvent être affichées. Si le projet que vous recherchez ne s'affiche pas, accédez à la page Gérer les ressources et filtrez la liste en utilisant le nom de ce projet.

      CLI gcloud

      Vous pouvez récupérer un numéro de projet Google Cloud à l'aide de la commande suivante:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, où FOLDER_ID est l'ID du dossier contenant les éléments que vous souhaitez rechercher.

      Trouver l'ID d'un dossier Google Cloud

      Google Cloud console

      Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:

      1. Accédez à la console Google Cloud .

        Accédez à la console Google Cloud .

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.

      CLI gcloud

      Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      TOP_LEVEL_FOLDER_NAME correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur --format pour afficher plus d'informations sur les dossiers trouvés.

      La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de niveau supérieur:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, où ORGANIZATION_ID est l'ID de l'organisation qui possède les composants que vous souhaitez rechercher.

      Trouver l'ID d'une organisation Google Cloud

      Google Cloud console

      Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit:

      1. Accédez à la console Google Cloud .

        Accédez à la console Google Cloud .

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

      CLI gcloud

      Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • QUERY : facultatif. Expression de requête. Si elle n'est pas spécifiée ou vide, toutes les ressources sont recherchées dans le champ d'application spécifié. Pour savoir comment rédiger une requête de recherche, consultez la section Syntaxe des requêtes de recherche.
  • ASSET_TYPE_# : facultatif. Liste des types d'éléments pouvant faire l'objet d'une recherche séparés par une virgule. Les expressions régulières compatibles avec RE2 sont acceptées. Si l'expression régulière ne correspond à aucun type d'élément compatible, une erreur INVALID_ARGUMENT est renvoyée. Lorsque --asset-types n'est pas spécifié, tous les types d'assets sont renvoyés.
  • ORDER_BY : facultatif. Liste de champs séparés par une virgule indiquant l'ordre de tri des résultats. L'ordre par défaut est croissant. Ajoutez DESC après le nom du champ pour indiquer l'ordre décroissant. Consultez la documentation de référence pour connaître les champs pouvant être triés.
  • READ_MASK : facultatif. Liste de champs séparés par une virgule indiquant les champs à renvoyer dans les résultats. Consultez la page pour connaître les champs renvoyés par défaut et les autres conditions à prendre en compte lors de la spécification d'un masque de lecture.

Vous pouvez utiliser les options --format et --flatten pour formater la sortie de gcloud CLI.

Consultez la documentation de référence de la gcloud CLI pour toutes les options.

Exemple

Exécutez la commande suivante pour obtenir la liste de toutes les instances Compute Engine du projet my-project contenant le mot instance suivi d'un 1 dans leur nom de ressource complet. Les résultats sont triés par ordre décroissant en fonction du nom, et en raison du masque de lecture, seuls les champs name et location sont renvoyés.

gcloud asset search-all-resources \
    --scope=projects/my-project \
    --query="name:instance 1" \
    --asset-types=compute.googleapis.com/Instance \
    --order-by="name DESC" \
    --read-mask="name,location"

Exemple de réponse

---
location: us-central1-a
name: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-2-1
---
location: us-central1-a
name: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:searchAllResources

Corps JSON de la requête :

{
  "query": "QUERY",
  "assetTypes": [
    "ASSET_TYPE_1",
    "ASSET_TYPE_2",
    "..."
  ],
  "orderBy": "ORDER_BY",
  "pageSize": "PAGE_SIZE",
  "pageToken": "PAGE_TOKEN",
  "readMask": "READ_MASK"
}

Indiquez les valeurs suivantes :

  • SCOPE_PATH: utilisez l'une des valeurs suivantes:

    Les valeurs autorisées sont les suivantes :

    • projects/PROJECT_ID, où PROJECT_ID est l'ID du projet contenant les composants que vous souhaitez rechercher.
    • projects/PROJECT_NUMBER, où PROJECT_NUMBER est le numéro du projet contenant les éléments que vous souhaitez rechercher.

      Trouver un numéro de projet Google Cloud

      Google Cloud console

      Pour trouver un numéro de projet Google Cloud , procédez comme suit:

      1. Accédez à la page Bienvenue dans la console Google Cloud .

        Accéder à "Bienvenue"

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste, puis recherchez le nom de votre projet. Le nom, le numéro et l'ID du projet sont affichés près de l'en-tête Bienvenue.

        Jusqu'à 4 000 ressources peuvent être affichées. Si le projet que vous recherchez ne s'affiche pas, accédez à la page Gérer les ressources et filtrez la liste en utilisant le nom de ce projet.

      CLI gcloud

      Vous pouvez récupérer un numéro de projet Google Cloud à l'aide de la commande suivante:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, où FOLDER_ID est l'ID du dossier contenant les éléments que vous souhaitez rechercher.

      Trouver l'ID d'un dossier Google Cloud

      Google Cloud console

      Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit:

      1. Accédez à la console Google Cloud .

        Accédez à la console Google Cloud .

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.

      CLI gcloud

      Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      TOP_LEVEL_FOLDER_NAME correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur --format pour afficher plus d'informations sur les dossiers trouvés.

      La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de niveau supérieur:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, où ORGANIZATION_ID est l'ID de l'organisation qui possède les composants que vous souhaitez rechercher.

      Trouver l'ID d'une organisation Google Cloud

      Google Cloud console

      Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit:

      1. Accédez à la console Google Cloud .

        Accédez à la console Google Cloud .

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

      CLI gcloud

      Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • QUERY : facultatif. Expression de requête. Si elle n'est pas spécifiée ou vide, toutes les ressources sont recherchées dans le champ d'application spécifié. Pour savoir comment rédiger une requête de recherche, consultez la section Syntaxe des requêtes de recherche.
  • ASSET_TYPE_# : facultatif. Tableau de types d'éléments pouvant faire l'objet d'une recherche. Les expressions régulières compatibles avec RE2 sont acceptées. Si l'expression régulière ne correspond à aucun type d'élément compatible, une erreur INVALID_ARGUMENT est renvoyée. Lorsque assetTypes n'est pas spécifié, tous les types d'assets sont renvoyés.
  • ORDER_BY : facultatif. Liste de champs séparés par une virgule indiquant l'ordre de tri des résultats. L'ordre par défaut est croissant. Ajoutez DESC après le nom du champ pour indiquer l'ordre décroissant. Consultez la documentation de référence pour connaître les champs pouvant être triés.
  • PAGE_SIZE : facultatif. Nombre de résultats à renvoyer par page. Le maximum est de 500. Si la valeur est définie sur 0 ou sur une valeur négative, une valeur par défaut appropriée est sélectionnée. Un nextPageToken est renvoyé pour récupérer les résultats suivants.

  • PAGE_TOKEN : facultatif. Les réponses aux requêtes longues sont réparties sur plusieurs pages. Lorsque pageToken n'est pas spécifié, la première page est renvoyée. Les pages suivantes peuvent être appelées en utilisant l'nextPageToken de la réponse précédente comme valeur pageToken.
  • READ_MASK : facultatif. Liste de champs séparés par une virgule indiquant les champs à renvoyer dans les résultats. Consultez la page pour connaître les champs renvoyés par défaut et les autres conditions à prendre en compte lors de la spécification d'un masque de lecture.

Consultez la documentation de référence REST pour toutes les options.

Exemples de commandes

Exécutez l'une des commandes suivantes pour obtenir la liste de toutes les instances Compute Engine du projet my-project contenant le mot instance suivi d'un 1 dans leur nom de ressource complet. Les résultats sont triés par ordre décroissant par nom, et seuls les champs name et location sont renvoyés.

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "query": "name:instance 1",
            "assetTypes": ["compute.googleapis.com/Instance"],
            "orderBy": "name DESC",
            "readMask": "name,location"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "query": "name:instance 1",
  "assetTypes": ["compute.googleapis.com/Instance"],
  "orderBy": "name DESC",
  "readMask": "name,location"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources" | Select-Object -Expand Content

Exemple de réponse

{
  "results": [
    {
      "name": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-2-1",
      "location": "us-central1-a"
    },
    {
      "name": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1",
      "location": "us-central1-a"
    }
  ]
}

C#

Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


using Google.Api.Gax;
using Google.Cloud.Asset.V1;
using System.Collections.Generic;
using System.Linq;

public class SearchAllResourcesSample
{
    public SearchAllResourcesResponse SearchAllResources(string scope, string query)
    {
        // Create the client.
        AssetServiceClient client = AssetServiceClient.Create();

        // Build the request.
        SearchAllResourcesRequest request = new SearchAllResourcesRequest
        {
            Scope = scope,
            Query = query,
        };

        // Call the API.
        PagedEnumerable<SearchAllResourcesResponse, ResourceSearchResult> response = client.SearchAllResources(request);

        // Return the first page.
        IEnumerable<SearchAllResourcesResponse> byPages = response.AsRawResponses();
        return byPages.First();
    }
}

Go

Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


// Sample search-all-resources searches all resources within the given scope.
package main

import (
	"context"
	"flag"
	"fmt"
	"log"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
	"google.golang.org/api/iterator"
)

func main() {
	scope := flag.String("scope", "", "Scope of the search.")
	query := flag.String("query", "", "Query statement.")
	flag.Parse()
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	req := &assetpb.SearchAllResourcesRequest{
		Scope: *scope,
		Query: *query,
	}
	it := client.SearchAllResources(ctx, req)
	for {
		resource, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(resource)
	}
}

Java

Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

import com.google.api.gax.rpc.ApiException;
import com.google.api.gax.rpc.InvalidArgumentException;
import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.AssetServiceClient.SearchAllResourcesPagedResponse;
import com.google.cloud.asset.v1.SearchAllResourcesRequest;
import java.io.IOException;
import java.util.Arrays;

public class SearchAllResourcesExample {

  // Searches for all the resources within the given scope.
  public static void searchAllResources(String scope, String query) {
    // TODO(developer): Replace these variables before running the sample.
    String[] assetTypes = {};
    int pageSize = 0;
    String pageToken = "";
    String orderBy = "";

    SearchAllResourcesRequest request =
        SearchAllResourcesRequest.newBuilder()
            .setScope(scope)
            .setQuery(query)
            .addAllAssetTypes(Arrays.asList(assetTypes))
            .setPageSize(pageSize)
            .setPageToken(pageToken)
            .setOrderBy(orderBy)
            .build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      SearchAllResourcesPagedResponse response = client.searchAllResources(request);
      System.out.println("Search completed successfully:\n" + response.getPage().getValues());
    } catch (IOException e) {
      System.out.println(String.format("Failed to create client:%n%s", e.toString()));
    } catch (InvalidArgumentException e) {
      System.out.println(String.format("Invalid request:%n%s", e.toString()));
    } catch (ApiException e) {
      System.out.println(String.format("Error during SearchAllResources:%n%s", e.toString()));
    }
  }
}

Node.js

Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const scope = '';
// const query = '';
// const assetTypes = [];
// const pageSize = 0;
// const pageToken = '';
// const orderBy = '';

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();
const projectId = await client.getProjectId();

async function searchAllResources() {
  const request = {
    scope: `projects/${projectId}`,
    query: query,
    assetTypes: assetTypes,
    pageSize: pageSize,
    pageToken: pageToken,
    orderBy: orderBy,
  };
  const options = {
    autoPaginate: false,
  };

  // Handle the operation using the promise pattern.
  const result = await client.searchAllResources(request, options);
  // Do things with with the response.
  console.log(util.inspect(result, {depth: null}));
}

PHP

Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

use Google\Cloud\Asset\V1\Client\AssetServiceClient;
use Google\Cloud\Asset\V1\SearchAllResourcesRequest;

/**
 * @param string   $scope      Scope of the search
 * @param string   $query      (Optional) Query statement
 * @param string[] $assetTypes (Optional) Asset types to search for
 * @param int      $pageSize   (Optional) Size of each result page
 * @param string   $pageToken  (Optional) Token produced by the preceding call
 * @param string   $orderBy    (Optional) Fields to sort the results
 */
function search_all_resources(
    string $scope,
    string $query = '',
    array $assetTypes = [],
    int $pageSize = 0,
    string $pageToken = '',
    string $orderBy = ''
): void {
    // Instantiate a client.
    $asset = new AssetServiceClient();

    // Run request
    $request = (new SearchAllResourcesRequest())
        ->setScope($scope)
        ->setQuery($query)
        ->setAssetTypes($assetTypes)
        ->setPageSize($pageSize)
        ->setPageToken($pageToken)
        ->setOrderBy($orderBy);
    $response = $asset->searchAllResources($request);

    // Print the resource names in the first page of the result
    foreach ($response->getPage() as $resource) {
        print($resource->getName() . PHP_EOL);
    }
}

Python

Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

from google.cloud import asset_v1

# TODO scope = 'Scope of the search'
# TODO query = 'Query statement'
# TODO asset_types = 'List of asset types to search for'
# TODO page_size = Size of each result page
# TODO order_by = 'Fields to sort the results'

client = asset_v1.AssetServiceClient()
response = client.search_all_resources(
    request={
        "scope": scope,
        "query": query,
        "asset_types": asset_types,
        "page_size": page_size,
        "order_by": order_by,
    }
)
for resource in response:
    print(resource)

Ruby

Pour savoir comment installer et utiliser la bibliothèque cliente pour inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

require "google/cloud/asset"

# scope = 'SCOPE_OF_THE_QUERY'
# query = 'QUERY_STATEMENT'
# asset_types = 'AN_ARRAY_OF_ASSET_TYPES_TO_SEARCH_FOR'
# page_size = 'SIZE_OF_EACH_RESULT_PAGE'
# page_token = 'TOKEN_PRODUCED_BY_THE_PRECEDING_CALL'
# order_by = 'FIELDS_TO_SORT_THE RESULTS'
asset_service = Google::Cloud::Asset.asset_service

response = asset_service.search_all_resources(
  scope:       scope,
  query:       query,
  asset_types: asset_types,
  page_size:   page_size,
  page_token:  page_token,
  order_by:    order_by
)
# Do things with the response
response.page.each do |resource|
  puts resource
end

Exemples de recherches supplémentaires

Les exemples de code suivants présentent des requêtes de recherche spécifiques pour gcloud et REST afin de vous aider à créer vos propres recherches.

Toutes les ressources d'un projet

L'exemple suivant montre comment rechercher toutes les ressources du projet my-project.

gcloud

gcloud asset search-all-resources \
    --scope=projects/my-project \
    --format="table(assetType.basename(), name.basename(), name.scope(projects).segment(0):label=PROJECT_ID, labels)"

REST

Méthode HTTP et URL :

GET https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

Exemples de commandes

curl (Linux, macOS ou Cloud Shell)

curl -X GET \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "Authorization" = "Bearer $cred"
}


Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources" | Select-Object -Expand Content

Instances Compute Engine par description

L'exemple suivant montre comment rechercher des instances Compute Engine dans le projet my-project avec le nom exact instance-prod.

gcloud

gcloud asset search-all-resources \
    --scope=projects/my-project \
    --query="description=instance-prod" \
    --asset-types=compute.googleapis.com/Instance \
    --format="table(name, assetType, location)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

Corps JSON de la requête :

{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "description=instance-prod",
  "readMask": "name,assetType,location"
}

Exemples de commandes

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "assetTypes": "compute.googleapis.com/Instance",
            "pageSize": 1,
            "query": "description=instance-prod",
            "readMask": "name,assetType,location"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "description=instance-prod",
  "readMask": "name,assetType,location"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources" | Select-Object -Expand Content

Pour rechercher des instances contenant instance-prod dans leur nom (par exemple, instance-prod-1 et instance-prod-2) au lieu d'une correspondance exacte, remplacez =instance-prod par :instance-prod.

Instances Compute Engine par étiquette

L'exemple suivant montre comment rechercher des instances Compute Engine dans le projet my-project avec un libellé nommé env.

gcloud

gcloud asset search-all-resources \
    --scope=projects/my-project \
    --query="labels.env:*" \
    --asset-types=compute.googleapis.com/Instance \
    --format="table(name, assetType, labels)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

Corps JSON de la requête :

{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "labels.env:*",
  "readMask": "name,assetType,labels"
}

Exemples de commandes

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "assetTypes": "compute.googleapis.com/Instance",
            "pageSize": 1,
            "query": "labels.env:*",
            "readMask": "name,assetType,labels"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "labels.env:*",
  "readMask": "name,assetType,labels"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources" | Select-Object -Expand Content

Instances Compute Engine par TagKey

L'exemple suivant montre comment rechercher des instances Compute Engine dans le projet my-project qui ont des tags associés directement avec un TagKey.namespacedName contenant env.

Pour rechercher des TagKeys efficaces à la place, remplacez tagKeys par effectiveTagKeys.

gcloud

gcloud asset search-all-resources \
    --scope=projects/my-project \
    --query="tagKeys:env" \
    --asset-types=compute.googleapis.com/Instance \
    --format="table(name, assetType, tags)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

Corps JSON de la requête :

{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "tagKeys:env",
  "readMask": "name,assetType,tags"
}

Exemples de commandes

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "assetTypes": "compute.googleapis.com/Instance",
            "pageSize": 1,
            "query": "tagKeys:env",
            "readMask": "name,assetType,tags"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "tagKeys:env",
  "readMask": "name,assetType,tags"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources" | Select-Object -Expand Content

Instances Compute Engine par TagValue

L'exemple suivant montre comment rechercher des instances Compute Engine dans le projet my-project qui ont des tags directement associés où TagValue.namespacedName contient prod ou sea, et le nom de l'instance ne contient pas instance1.

Pour rechercher des valeurs de balise effectives, remplacez tagValues par effectiveTagValues.

gcloud

gcloud asset search-all-resources \
    --scope=projects/my-project \
    --query="tagValues:(prod OR sea) (NOT name:instance1)" \
    --asset-types=compute.googleapis.com/Instance \
    --format="table(name, assetType, tags)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

Corps JSON de la requête :

{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "tagValues:(prod OR sea) (NOT name:instance1)",
  "readMask": "name,assetType,tags"
}

Exemples de commandes

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "assetTypes": "compute.googleapis.com/Instance",
            "pageSize": 1,
            "query": "tagValues:(prod OR sea) (NOT name:instance1)",
            "readMask": "name,assetType,tags"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "tagValues:(prod OR sea) (NOT name:instance1)",
  "readMask": "name,assetType,tags"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources" | Select-Object -Expand Content

Instances Compute Engine créées après une heure spécifique

L'exemple suivant montre comment rechercher des instances Compute Engine dans le projet my-project créées après le 31 décembre 2023.

Pour en savoir plus sur les comparaisons de date et d'heure, consultez la section Comparaison numérique et horodatage.

gcloud

gcloud asset search-all-resources \
    --scope=projects/my-project \
    --query="createTime>2023-31-12" \
    --asset-types=compute.googleapis.com/Instance \
    --format="table(name, assetType, location)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

Corps JSON de la requête :

{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "createTime>2023-31-12",
  "readMask": "name,assetType,location"
}

Exemples de commandes

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "assetTypes": "compute.googleapis.com/Instance",
            "pageSize": 1,
            "query": "createTime>2023-31-12",
            "readMask": "name,assetType,location"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "createTime>2023-31-12",
  "readMask": "name,assetType,location"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources" | Select-Object -Expand Content

Instances Compute Engine situées aux États-Unis

L'exemple suivant montre comment rechercher des instances Compute Engine situées aux États-Unis dans le projet my-project.

gcloud

gcloud asset search-all-resources \
    --scope=projects/my-project \
    --query="location:us-*" \
    --asset-types=compute.googleapis.com/Instance \
    --format="table(name, assetType, location)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

Corps JSON de la requête :

{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "location:us-*",
  "readMask": "name,assetType,location"
}

Exemples de commandes

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "assetTypes": "compute.googleapis.com/Instance",
            "pageSize": 1,
            "query": "location:us-*",
            "readMask": "name,assetType,location"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "location:us-*",
  "readMask": "name,assetType,location"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources" | Select-Object -Expand Content

Instances Compute Engine en cours d'exécution

L'exemple suivant montre comment rechercher des instances Compute Engine exécutées dans le projet my-project.

gcloud

gcloud asset search-all-resources \
    --scope=projects/my-project \
    --query="state=RUNNING" \
    --asset-types=compute.googleapis.com/Instance \
    --read-mask="name,assetType,location,versionedResources" \
    --format="table(name, assetType, location, versionedResources)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

Corps JSON de la requête :

{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "state=RUNNING",
  "readMask": "name,assetType,location,versionedResources"
}

Exemples de commandes

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "assetTypes": "compute.googleapis.com/Instance",
            "pageSize": 1,
            "query": "state=RUNNING",
            "readMask": "name,assetType,location,versionedResources"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "compute.googleapis.com/Instance",
  "pageSize": 1,
  "query": "state=RUNNING",
  "readMask": "name,assetType,location,versionedResources"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources" | Select-Object -Expand Content

Stratégies de refus IAM

L'exemple suivant montre comment rechercher des règles de refus IAM dans le projet my-project.

gcloud

gcloud asset search-all-resources \
    --scope=projects/my-project \
    --asset-types=iam.googleapis.com/PolicyV2 \
    --query="name:denypolicies"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

Corps JSON de la requête :

{
  "assetTypes": "iam.googleapis.com/PolicyV2",
  "pageSize": 1,
  "query": "name:denypolicies"
}

Exemples de commandes

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "assetTypes": "iam.googleapis.com/PolicyV2",
            "pageSize": 1,
            "query": "name:denypolicies"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "iam.googleapis.com/PolicyV2",
  "pageSize": 1,
  "query": "name:denypolicies"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources" | Select-Object -Expand Content

Pour rechercher des instances Compute Engine qui ne sont pas en cours d'exécution, remplacez state=RUNNING par NOT state:running.

Ressources associées Google Cloud

Les requêtes de relations nécessitent un accès au niveau Premium ou Enterprise de Security Command Center, ou à Gemini Cloud Assist.

L'exemple suivant montre comment rechercher des ressources associées dans le projet my-project pour les types de relations compatibles. Par exemple, recherchez toutes les instances Compute Engine qui font partie de groupes d'instances contenant instance-group dans leur nom de ressource complet.

gcloud

gcloud asset search-all-resources \
    --scope=projects/my-project \
    --query="relationships:instance-group" \
    --format="table(name, assetType, relationships)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

Corps JSON de la requête :

{
  "pageSize": 1,
  "query": "relationships:instance-group",
  "readMask": "name,assetType,relationships"
}

Exemples de commandes

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "pageSize": 1,
            "query": "relationships:instance-group",
            "readMask": "name,assetType,relationships"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "pageSize": 1,
  "query": "relationships:instance-group",
  "readMask": "name,assetType,relationships"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllResources" | Select-Object -Expand Content

Vous pouvez également spécifier le type de relation que vous souhaitez rechercher. Par exemple, pour rechercher le type de relation INSTANCE_TO_INSTANCEGROUP, utilisez la requête relationships.INSTANCE_TO_INSTANCEGROUP. Pour rechercher ce type de relation avec un nom de ressource complet contenant instance-group, utilisez la requête relationships.INSTANCE_TO_INSTANCEGROUP:instance-group.