Exporter les métadonnées des éléments vers Cloud Storage

Ce document explique comment exporter les métadonnées des éléments de votre projet dans un Bucket Cloud Storage.

Avant de commencer

  1. Activer l'API Cloud Asset Inventory dans le projet pour lequel vous exécutez les commandes inventaire des éléments cloud

    Activer l'API Cloud Asset Inventory

  2. Assurez-vous que votre compte dispose du le 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.

  3. Créez un bucket Cloud Storage vers lequel exporter les données, si ce n'est pas déjà fait.

Limites

  • Les buckets Cloud Storage chiffrés avec des clés Cloud Key Management Service (Cloud KMS) personnalisées ne sont pas compatibles.

  • Le bucket Cloud Storage ne peut pas avoir règle de conservation définie.

  • Lors de l'exportation, l'opération peut créer des fichiers temporaires dans la sortie . Ne supprimez pas ces fichiers temporaires lorsque l'opération est en cours. Une fois l'opération terminée, les fichiers temporaires sont automatiquement supprimés.

  • Le type de contenu ACCESS_POLICY ne peut être exporté qu'au niveau de l'organisation.

  • Si le fichier vers lequel vous exportez l'exportation existe déjà et est en cours d'exécution vers la destination de l'exportation, une erreur 400 est renvoyée.

  • Pour tester les autorisations, l'inventaire des éléments cloud crée un fichier vide avant d'exporter le qui envoie un événement déclencheur Cloud Storage supplémentaire google.cloud.storage.object.v1.finalized

Exporter un instantané d'élément vers Cloud Storage

gcloud

gcloud asset export \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --content-type=CONTENT_TYPE \
    --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \
    --snapshot-time="SNAPSHOT_TIME" \
    --output-path="gs://BUCKET_NAME/FILENAME"

Indiquez les valeurs suivantes :

  • SCOPE: utilisez l'une des valeurs suivantes:

    • project=PROJECT_ID, où PROJECT_ID est l'ID du projet contenant les métadonnées des éléments que vous souhaitez exporter.
    • folder=FOLDER_ID, où FOLDER_ID correspond au ID du dossier qui contient les métadonnées d'éléments que vous souhaitez exporter.

      Comment trouver l'ID d'un dossier Google Cloud

      console Google Cloud

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

      1. Accédez à Google Cloud Console.

        <ph type="x-smartling-placeholder"></ph> Accéder à 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 est une correspondance de chaîne partielle ou complète 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 contenus dans les dossiers. Pour ce faire, Exécutez la commande suivante en utilisant l'ID d'un dossier de premier niveau:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, où ORGANIZATION_ID est l'ID de l'organisation qui possède les métadonnées d'élément que vous souhaitez exporter.

      Trouver l'ID d'une organisation Google Cloud

      console Google Cloud

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

      1. Accédez à Google Cloud Console.

        Accéder à la console Google Cloud

      2. Cliquez sur la zone de liste Sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone de 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))"
  • BILLING_PROJECT_ID : facultatif. L'ID du projet l'agent de service inventaire des éléments cloud par défaut, qui dispose des autorisations nécessaires pour gérer vos Ensembles de données et tables BigQuery. Découvrez comment définir le projet de facturation.

  • ASSET_TYPE_# : facultatif. Liste des types d'éléments pouvant faire l'objet d'une recherche séparés par une virgule. <ph type="x-smartling-placeholder"></ph> Les expressions régulières compatibles avec RE2 sont acceptées. Si l'expression régulière ne correspond pas tout type d'élément compatible, une erreur INVALID_ARGUMENT est renvoyée. Quand ? --asset-types n'est pas spécifié, tous les types d'éléments sont renvoyés.
  • CONTENT_TYPE : facultatif. Type de contenu des métadonnées que vous souhaitez récupérer. Quand ? --content-type n'est pas spécifié, seules les informations de base sont renvoyées, telles que les noms des éléments, la dernière fois que la composants mis à jour, ainsi que les projets, dossiers et organisations auxquels ils appartiennent.
  • RELATIONSHIP_TYPE_# : facultatif. Disponible uniquement pour les abonnés aux niveaux Premium et Enterprise de Security Command Center. Liste des types de relations d'éléments que vous souhaitez récupérer, séparés par une virgule. Pour que cela fonctionne, vous devez définir CONTENT_TYPE sur RELATIONSHIP.
  • SNAPSHOT_TIME : facultatif. Heure à laquelle vous souhaitez prendre un instantané de vos éléments, au format gcloud topic datetime. La valeur ne doit pas remonter à plus de 35 jours. Quand ? --snapshot-time n'est pas spécifié, un instantané est pris pour l'heure actuelle.
  • BUCKET_NAME : nom du bucket Cloud Storage dans lequel écrire.
  • FILENAME : fichier de votre bucket Cloud Storage dans lequel écrire.

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

Exemple

Exécutez la commande suivante pour exporter vos métadonnées resource telles qu'elles étaient le 30 janvier 2024 dans le projet my-project vers le fichier my-file.txt dans le bucket Cloud Storage my-bucket.

gcloud asset export \
    --project=my-project \
    --billing-project=my-project \
    --content-type=resource \
    --snapshot-time="2024-01-30" \
    --output-path="gs://my-bucket/my-file.txt"

Exemple de réponse

Export in progress for root asset [projects/my-project].
Use [gcloud asset operations describe projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000] to check the status of the operation.

REST

Méthode HTTP et URL :

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

En-têtes :

X-Goog-User-Project: BILLING_PROJECT_ID

Corps JSON de la requête :

{
  "assetTypes": [
    "ASSET_TYPE_1",
    "ASSET_TYPE_2",
    "..."
  ],
  "contentType": "CONTENT_TYPE",
  "relationshipTypes": [
    "RELATIONSHIP_TYPE_1",
    "RELATIONSHIP_TYPE_2",
    "..."
  ],
  "readTime": "SNAPSHOT_TIME",
  "outputConfig": {
    "gcsDestination": {
      "uri": "gs://BUCKET_NAME/FILENAME"
    }
  }
}

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 métadonnées des éléments que vous souhaitez exporter.
    • projects/PROJECT_NUMBER, où PROJECT_NUMBER correspond au numéro du projet contenant les métadonnées de l'élément que vous souhaitez exporter.

      Trouver un numéro de projet Google Cloud

      console Google Cloud

      Pour trouver le numéro d'un 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 zone de liste sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone de liste, puis recherchez le nom de votre projet. Le nom, le numéro et l'ID du projet s'affichent près de l'en-tête Bienvenue.

        Jusqu'à 4 000 ressources peuvent s'afficher. 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 métadonnées d'élément que vous souhaitez exporter.

      Trouver l'ID d'un dossier Google Cloud

      console Google Cloud

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

      1. Accédez à Google Cloud Console.

        Accéder à la console Google Cloud

      2. Cliquez sur la zone de liste sélecteur 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 est une correspondance de chaîne partielle ou complète 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 contenus dans les dossiers. Pour ce faire, Exécutez la commande suivante en utilisant l'ID d'un dossier de premier niveau:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, où ORGANIZATION_ID est l'ID de l'organisation qui possède les métadonnées d'éléments que vous souhaitez exporter.

      Comment trouver l'ID d'une organisation Google Cloud

      console Google Cloud

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

      1. Accédez à Google Cloud Console.

        Accéder à la console Google Cloud

      2. Cliquez sur la zone de liste Sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone de 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))"
  • BILLING_PROJECT_ID : ID du projet dans lequel se trouve l'agent de service d'inventaire des ressources Cloud par défaut, qui dispose des autorisations nécessaires pour gérer vos ensembles de données et vos tables BigQuery. <ph type="x-smartling-placeholder"></ph> En savoir plus sur la configuration du projet de facturation

  • 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 pas tout type d'élément compatible, une erreur INVALID_ARGUMENT est renvoyée. Quand ? assetTypes n'est pas spécifié, tous les types d'éléments sont renvoyés.
  • CONTENT_TYPE : facultatif. La <ph type="x-smartling-placeholder"></ph> type de contenu des métadonnées que vous souhaitez récupérer. Si contentType n'est pas spécifié, seules les informations de base sont renvoyées, telles que les noms des éléments, la dernière fois que la composants mis à jour, ainsi que les projets, dossiers et organisations auxquels ils appartiennent.
  • RELATIONSHIP_TYPE_# : facultatif. Disponible uniquement pour Security Command Center Niveaux Premium et Enterprise abonnés. Une liste de valeurs séparées par des virgules <ph type="x-smartling-placeholder"></ph> types de relations entre assets que vous souhaitez récupérer. Vous devez définir CONTENT_TYPE sur RELATIONSHIP pour que cela fonctionne.
  • SNAPSHOT_TIME : facultatif. Heure à laquelle vous souhaitez prendre un instantané de vos éléments, au format RFC 3339. La date ne doit pas dater de plus de 35 jours. Lorsque readTime n'est pas spécifié, un instantané est pris à l'heure actuelle.
  • BUCKET_NAME: nom du Bucket Cloud Storage dans lequel écrire.
  • FILENAME: le Fichier de votre bucket Cloud Storage dans lequel écrire.

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

Exemples de commandes

Exécutez l'une des commandes suivantes pour exporter vos métadonnées resource telles qu'elles étaient au 30 janvier 2024 dans le projet my-project, vers le fichier my-file.txt dans le bucket Cloud Storage my-bucket.

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "contentType": "RESOURCE",
            "readTime": "2024-01-30T00:00:00Z",
            "outputConfig": {
              "gcsDestination": {
                "uri": "gs://my-bucket/my-file"
              }
            }
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "contentType": "RESOURCE",
  "readTime": "2024-01-30T00:00:00Z",
  "outputConfig": {
    "gcsDestination": {
      "uri": "gs://my-bucket/my-file"
    }
  }
}
"@

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

Exemple de réponse

{
  "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest",
    "parent": "projects/000000000000",
    "readTime": "2024-01-30T00:00:00Z",
    "contentType": "RESOURCE",
    "outputConfig": {
      "gcsDestination": {
        "uri": "gs://my-bucket/export.txt"
      }
    }
  }
}

C#

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

Pour vous authentifier auprès de Cloud Asset Inventory, configurez le service 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.ResourceNames;
using Google.Cloud.Asset.V1;

public class ExportAssetsSample
{
    public ExportAssetsResponse ExportAssets(string bucketName, string projectId)
    {
        string assetDumpFile = $"gs://{bucketName}/my-assets.txt";
        // Create the client
        AssetServiceClient client = AssetServiceClient.Create();
        // Build the request
        ExportAssetsRequest request = new ExportAssetsRequest
        {
            ParentAsResourceName = ProjectName.FromProject(projectId),
            OutputConfig = new OutputConfig
            {
                GcsDestination = new GcsDestination { Uri = assetDumpFile }
            }
        };
        // Start the long-running export operation
        var operation = client.ExportAssets(request);
        // Wait for it to complete (or fail)
        operation = operation.PollUntilCompleted();
        // Return the result
        return operation.Result;
    }
}

Go

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

Pour vous authentifier auprès de l'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 asset-quickstart exports assets to given path.
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
)

func main() {
	ctx := context.Background()
	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatal(err)
	}
	defer client.Close()
	bucketName := fmt.Sprintf("%s-for-assets", projectID)
	assetDumpFile := fmt.Sprintf("gs://%s/my-assets.txt", bucketName)
	req := &assetpb.ExportAssetsRequest{
		Parent: fmt.Sprintf("projects/%s", projectID),
		OutputConfig: &assetpb.OutputConfig{
			Destination: &assetpb.OutputConfig_GcsDestination{
				GcsDestination: &assetpb.GcsDestination{
					ObjectUri: &assetpb.GcsDestination_Uri{
						Uri: string(assetDumpFile),
					},
				},
			},
		},
	}
	operation, err := client.ExportAssets(ctx, req)
	if err != nil {
		log.Fatal(err)
	}
	response, err := operation.Wait(ctx)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response)
}

Java

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

Pour vous authentifier auprès de Cloud Asset Inventory, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

// Imports the Google Cloud client library

import com.google.cloud.ServiceOptions;
import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.ContentType;
import com.google.cloud.asset.v1.ExportAssetsRequest;
import com.google.cloud.asset.v1.ExportAssetsRequest.Builder;
import com.google.cloud.asset.v1.ExportAssetsResponse;
import com.google.cloud.asset.v1.GcsDestination;
import com.google.cloud.asset.v1.OutputConfig;
import com.google.cloud.asset.v1.ProjectName;
import java.io.IOException;
import java.util.Arrays;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class ExportAssetsExample {

  // Use the default project Id.
  private static final String projectId = ServiceOptions.getDefaultProjectId();

  /**
   * Export assets for a project.
   *
   * @param exportPath where the results will be exported to
   * @param contentType determines the schema for the table
   * @param assetTypes a list of asset types to export. if empty, export all.
   */
  public static void exportAssets(String exportPath, ContentType contentType, String[] assetTypes)
      throws IOException,
          IllegalArgumentException,
          InterruptedException,
          ExecutionException,
          TimeoutException {
    try (AssetServiceClient client = AssetServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      OutputConfig outputConfig =
          OutputConfig.newBuilder()
              .setGcsDestination(GcsDestination.newBuilder().setUri(exportPath).build())
              .build();
      Builder exportAssetsRequestBuilder =
          ExportAssetsRequest.newBuilder()
              .setParent(parent.toString())
              .setContentType(contentType)
              .setOutputConfig(outputConfig);
      if (assetTypes.length > 0) {
        exportAssetsRequestBuilder.addAllAssetTypes(Arrays.asList(assetTypes));
      }
      ExportAssetsRequest request = exportAssetsRequestBuilder.build();
      ExportAssetsResponse response = client.exportAssetsAsync(request).get(5, TimeUnit.MINUTES);
      System.out.println(response);
    }
  }
}

Node.js

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

Pour vous authentifier auprès de l'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 dumpFilePath = 'gs://my-bucket/my-assets.txt';
// const contentType = 'RESOURCE';

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

async function exportAssets() {
  const projectId = await client.getProjectId();
  const projectResource = `projects/${projectId}`;

  // TODO(developer): choose the dump file path
  // const dumpFilePath = 'Dump file path, e.g.: gs://<my_bucket>/<my_asset_file>'
  const request = {
    parent: projectResource,
    contentType: contentType,
    outputConfig: {
      gcsDestination: {
        uri: dumpFilePath,
      },
    },
  };

  // Handle the operation using the promise pattern.
  const [operation] = await client.exportAssets(request);

  // Operation#promise starts polling for the completion of the operation.
  const [result] = await operation.promise();

  // Do things with with the response.
  console.log(result);
}
exportAssets().catch(err => {
  throw err;
});

PHP

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

Pour vous authentifier auprès de l'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\ExportAssetsRequest;
use Google\Cloud\Asset\V1\GcsDestination;
use Google\Cloud\Asset\V1\OutputConfig;

/**
 * Export assets for given project to specified dump file path.
 *
 * @param string $projectId the project Id for export assets.
 * @param string $dumpFilePath the file path where the assets will be dumped to.
 *        e.g.: gs://[bucket-name]/[asset-file-name].
 */
function export_assets(string $projectId, string $dumpFilePath)
{
    $client = new AssetServiceClient();

    $gcsDestination = new GcsDestination(['uri' => $dumpFilePath]);
    $outputConfig = new OutputConfig(['gcs_destination' => $gcsDestination]);
    $request = (new ExportAssetsRequest())
        ->setParent("projects/$projectId")
        ->setOutputConfig($outputConfig);

    $resp = $client->exportAssets($request);

    $resp->pollUntilComplete();

    if ($resp->operationSucceeded()) {
        print('The result is dumped to $dumpFilePath successfully.' . PHP_EOL);
    } else {
        $error = $resp->getError();
        printf('There was an error: "%s".' . PHP_EOL, $error?->getMessage());
        // handleError($error)
    }
}

Python

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Asset Inventory, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de l'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 project_id = 'Your Google Cloud Project ID'
# TODO dump_file_path = 'Your asset dump file path'

client = asset_v1.AssetServiceClient()
parent = f"projects/{project_id}"
output_config = asset_v1.OutputConfig()
output_config.gcs_destination.uri = dump_file_path
request_options = {"parent": parent, "output_config": output_config}

if content_type is not None:
    request_options["content_type"] = content_type

response = client.export_assets(request=request_options)
print(response.result())

Ruby

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

Pour vous authentifier auprès de l'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"

asset_service = Google::Cloud::Asset.asset_service
# project_id = 'YOUR_PROJECT_ID'
formatted_parent = asset_service.project_path project: project_id
# Assets dump file path, e.g.: gs://[YOUR_BUCKET]/[YOUR_ASSETS_FILE]
# dump_file_path = 'YOUR_ASSET_DUMP_FILE_PATH'
output_config = {
  gcs_destination: {
    uri: dump_file_path
  }
}

operation = asset_service.export_assets(
  parent: formatted_parent, output_config: output_config
) do |op|
  # Handle the error.
  raise op.results.message if op.error?
end

operation.wait_until_done!
response = operation.response
puts "Exported assets to: #{response.output_config.gcs_destination.uri}"
# Do things with the result

Vérifier l'état d'une exportation

Les exportations prennent du temps. Pour vérifier si une exportation est terminée, vous pouvez interroger l'opération à l'aide de son ID d'opération.

Sachez que même si votre exportation est terminée, quelqu'un a peut-être envoyé une autre demande d'exportation vers la même destination pour une autre opération. Nouvelle exportation vers la même destination peuvent être envoyées une fois qu'une requête précédente a ou si plus de 15 minutes se sont écoulées. les requêtes d'exportation effectuées hors de sont rejetées par l'inventaire des éléments cloud.

gcloud

Pour afficher l'état de votre exportation, procédez comme suit :

  1. Obtenez l'OPERATION_PATH, qui inclut l'ID d'opération, à partir de la réponse à votre requête d'exportation. La OPERATION_PATH s'affiche dans la réponse à la , qui est formaté comme suit:

    projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
    
  2. Pour vérifier l'état de l'exportation, exécutez la commande suivante avec l'ID d'opération OPERATION_PATH :

    gcloud asset operations describe OPERATION_PATH
    

REST

Pour afficher l'état de votre exportation, procédez comme suit :

  1. Obtenez l'OPERATION_PATH, qui inclut l'ID d'opération, à partir de la réponse à votre requête d'exportation. La OPERATION_PATH est indiqué comme valeur de name. dans la réponse à l'exportation, formaté comme suit:

    projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
    
  2. Pour vérifier l'état de votre exportation, envoyez la requête suivante.

    REST

    Méthode HTTP et URL :

    GET https://cloudasset.googleapis.com/v1/OPERATION_PATH
    

    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/OPERATION_PATH

    PowerShell (Windows)

    $cred = gcloud auth print-access-token
    
    $headers = @{ 
      "Authorization" = "Bearer $cred"
    }
    
    
    Invoke-WebRequest `
      -Method GET `
      -Headers $headers `
      -Uri "https://cloudasset.googleapis.com/v1/OPERATION_PATH" | Select-Object -Expand Content

    Exemple de réponse

    {
      "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest",
        "parent": "projects/000000000000",
        "readTime": "2024-01-30T00:00:00Z",
        "contentType": "RESOURCE",
        "outputConfig": {
          "gcsDestination": {
            "uri": "gs://my-bucket/export.txt"
          }
        }
      }
    }

Afficher un instantané de composant

Pour afficher l'instantané d'élément, procédez comme suit :

  1. Accédez à la page Buckets de Cloud Storage dans la console Google Cloud.

    Accéder à la page "Buckets"

  2. Cliquez sur le nom du bucket vers lequel vous avez exporté l'instantané d'élément, puis cliquez sur le nom du fichier d'exportation.

  3. Cliquez sur Télécharger pour télécharger l'instantané de votre asset, puis ouvrez-le dans votre de votre choix.