Esportare i metadati delle risorse in Cloud Storage

Questo documento mostra come esportare i metadati delle risorse del tuo progetto in un Bucket Cloud Storage.

Prima di iniziare

  1. Abilita l'API Cloud Asset Inventory nel progetto su cui stai eseguendo i comandi di Cloud Asset Inventory da cui proviene.

    Abilita l'API Cloud Asset Inventory

  2. Assicurati che il tuo account disponga del ruolo corretto per chiamare l'API Cloud Asset Inventory. Per le singole autorizzazioni per ogni tipo di chiamata, consulta: Autorizzazioni.

  3. Crea un bucket Cloud Storage in cui eseguire l'esportazione, se non ne hai già uno.

Limitazioni

  • I bucket Cloud Storage criptati con chiavi Cloud Key Management Service (Cloud KMS) personalizzate non sono supportati.

  • Il bucket Cloud Storage non può avere criterio di conservazione impostato.

  • Durante l'esportazione, l'operazione potrebbe creare file temporanei nella cartella di output. Non rimuovere questi file temporanei mentre l'operazione è in corso. Al termine dell'operazione, i file temporanei vengono rimossi automaticamente.

  • Il tipo di contenuto ACCESS_POLICY può essere esportato solo a livello di organizzazione.

  • Se il file di destinazione dell'esportazione esiste già e sta per essere in cui viene esportato, viene restituito un errore 400.

  • Per testare le autorizzazioni, Cloud Asset Inventory crea un file vuoto prima di esportare i dati, che invia un evento di attivazione Cloud Storage aggiuntivo di google.cloud.storage.object.v1.finalized.

Esporta uno snapshot di asset in 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"

Specifica i seguenti valori:

  • SCOPE: utilizza uno dei seguenti valori:

    • project=PROJECT_ID, dove PROJECT_ID è il ID del progetto contenente i metadati della risorsa che vuoi esportare.
    • folder=FOLDER_ID, dove FOLDER_ID è il ID della cartella contenente i metadati della risorsa che vuoi esportare.

      Come trovare l'ID di una cartella Google Cloud

      Console Google Cloud

      Per trovare l'ID di una cartella Google Cloud, completa i seguenti passaggi:

      1. Vai alla console Google Cloud.

        Vai alla console Google Cloud

      2. Fai clic sull'elenco del commutatore nella barra dei menu.
      3. Seleziona la tua organizzazione dall'elenco.
      4. Cerca il nome della cartella. L'ID cartella viene visualizzato accanto al nome della cartella.

      Interfaccia a riga di comando gcloud

      Puoi recuperare l'ID di una cartella Google Cloud che si trova a livello di organizzazione con il seguente comando:

      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)"

      dove TOP_LEVEL_FOLDER_NAME è una corrispondenza parziale o completa della stringa per il nome della cartella. Rimuovi il flag --format per visualizzare ulteriori informazioni sulle cartelle trovate.

      Il comando precedente non restituisce gli ID delle sottocartelle all'interno delle cartelle. Per farlo, esegui questo comando utilizzando l'ID di una cartella di primo livello:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, dove ORGANIZATION_ID è l'ID dell'organizzazione che contiene i metadati della risorsa che vuoi esportare.

      Come trovare l'ID di un'organizzazione Google Cloud

      Console Google Cloud

      Per trovare l'ID di un'organizzazione Google Cloud:

      1. Vai alla console Google Cloud.

        Vai alla console Google Cloud

      2. Fai clic sull'elenco del commutatore nella barra dei menu.
      3. Seleziona la tua organizzazione dalla casella di elenco.
      4. Fai clic sulla scheda Tutte. L'ID organizzazione è visualizzato accanto al nome dell'organizzazione.

      Interfaccia a riga di comando gcloud

      Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: facoltativo. L'ID progetto in cui si trova l'agente di servizio dell'inventario asset cloud predefinito che dispone delle autorizzazioni per gestire i set di dati e le tabelle BigQuery. Scopri di più sull'impostazione del progetto di fatturazione.

  • ASSET_TYPE_#: facoltativo. Un elenco separato da virgole di tipi di asset disponibili per la ricerca. Sono supportate le espressioni regolari compatibili con RE2. Se l'espressione regolare non corrisponde qualsiasi tipo di asset supportato, viene restituito un errore INVALID_ARGUMENT. Quando --asset-types non è specificato. Vengono restituiti tutti i tipi di asset.
  • CONTENT_TYPE: facoltativo. La content type dei metadati che vuoi recuperare. Quando --content-type non viene specificato. Vengono restituite solo le informazioni di base, come i nomi delle risorse, l'ultima volta che sono stati aggiornati asset e a quali progetti, cartelle e organizzazioni appartengono.
  • RELATIONSHIP_TYPE_#: facoltativo. Disponibile solo per gli abbonati a Security Command Center livello Premium ed Enterprise. Un elenco separato da virgole di tipi di relazioni tra asset che vuoi recuperare. Devi impostare CONTENT_TYPE su RELATIONSHIP affinché questa operazione funzioni.
  • SNAPSHOT_TIME: facoltativo. L'ora in cui vuoi acquisire uno snapshot dei tuoi asset, nel formato data e ora dell'argomento gcloud. Il valore non deve risalire a più di 35 giorni fa. Quando --snapshot-time non è specificato, viene acquisita un'istantanea al momento corrente.
  • BUCKET_NAME: il nome del Bucket Cloud Storage in cui scrivere.
  • FILENAME: il Il file in cui scrivere nel bucket Cloud Storage.

Consulta il riferimento all'interfaccia a riga di comando gcloud per tutte le opzioni.

Esempio

Esegui questo comando per esportare i tuoi metadati resource così come erano il 30 gennaio: 2024 nel progetto my-project, al file my-file.txt nel 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"

Risposta di esempio

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

Metodo HTTP e URL:

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

Intestazioni:

X-Goog-User-Project: BILLING_PROJECT_ID

Corpo JSON della richiesta:

{
  "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"
    }
  }
}

Specifica i seguenti valori:

  • SCOPE_PATH: utilizza uno dei seguenti valori:

    I valori consentiti sono:

    • projects/PROJECT_ID, dove PROJECT_ID è ID del progetto contenente i metadati della risorsa che vuoi esportare.
    • projects/PROJECT_NUMBER, dove PROJECT_NUMBER è il numero del progetto contenente i metadati della risorsa che vuoi esportare.

      Come trovare il numero di un progetto Google Cloud

      Console Google Cloud

      Per trovare il numero di un progetto Google Cloud:

      1. Vai alla pagina Ti diamo il benvenuto nella console Google Cloud.

        Vai alla pagina Ti diamo il benvenuto

      2. Fai clic sulla casella di elenco selettore nella barra dei menu.
      3. Seleziona la tua organizzazione dalla casella di elenco, quindi cerca il nome del progetto. Il nome del progetto, il numero del progetto e l'ID progetto sono visualizzati accanto al campo Ti diamo il benvenuto .

        Vengono visualizzate fino a 4000 risorse. Se non vedi il progetto che stai cercando, vai alla Gestire le risorse e filtrando l'elenco usando il nome del progetto.

      Interfaccia a riga di comando gcloud

      Puoi recuperare il numero di un progetto Google Cloud con il seguente comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dove FOLDER_ID è il ID della cartella contenente i metadati della risorsa che vuoi esportare.

      Come trovare l'ID di una cartella Google Cloud

      Console Google Cloud

      Per trovare l'ID di una cartella Google Cloud, completa i seguenti passaggi:

      1. Vai alla console Google Cloud.

        Vai alla console Google Cloud

      2. Fai clic sull'elenco del selettore nella barra dei menu.
      3. Seleziona la tua organizzazione dall'elenco.
      4. Cerca il nome della cartella. L'ID cartella viene visualizzato accanto al nome della cartella.

      Interfaccia a riga di comando gcloud

      Puoi recuperare l'ID di una cartella Google Cloud che si trova a livello di organizzazione con il seguente comando:

      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)"

      dove TOP_LEVEL_FOLDER_NAME è una corrispondenza parziale o completa della stringa per il nome della cartella. Rimuovi il flag --format per visualizzare ulteriori informazioni sulle cartelle trovate.

      Il comando precedente non restituisce gli ID delle sottocartelle all'interno delle cartelle. Per farlo, esegui questo comando utilizzando l'ID di una cartella di primo livello:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dove ORGANIZATION_ID è l'ID dell'organizzazione con i metadati della risorsa che vuoi esportare.

      Come trovare l'ID di un'organizzazione Google Cloud

      Console Google Cloud

      Per trovare l'ID di un'organizzazione Google Cloud:

      1. Vai alla console Google Cloud.

        Vai alla console Google Cloud

      2. Fai clic sulla casella di elenco selettore nella barra dei menu.
      3. Seleziona la tua organizzazione dalla casella di elenco.
      4. Fai clic sulla scheda Tutte. L'ID organizzazione è visualizzato accanto al nome dell'organizzazione.

      Interfaccia a riga di comando gcloud

      Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: l'ID progetto in cui si trova l'agente di servizio Cloud Asset Inventory predefinito che dispone delle autorizzazioni per gestire i set di dati e le tabelle BigQuery. Scopri di più sull'impostazione del progetto di fatturazione.

  • ASSET_TYPE_#: facoltativo. Un array di tipi di asset disponibili per la ricerca. Sono supportate le espressioni regolari compatibili con RE2. Se l'espressione regolare non corrisponde qualsiasi tipo di asset supportato, viene restituito un errore INVALID_ARGUMENT. Se assetTypes non è specificato, vengono restituiti tutti i tipi di asset.
  • CONTENT_TYPE: facoltativo. La content type dei metadati che vuoi recuperare. Se non viene specificato contentType, vengono restituite solo informazioni di base, ad esempio i nomi degli asset, l'ultima volta che gli asset sono stati aggiornati e a quali progetti, cartelle e organizzazioni appartengono.
  • RELATIONSHIP_TYPE_#: facoltativo. Disponibile solo per gli abbonati a Security Command Center livello Premium ed Enterprise. Un elenco separato da virgole di tipi di relazione tra risorse che desideri recuperare. Affinché questa operazione funzioni, devi impostare CONTENT_TYPE su RELATIONSHIP.
  • SNAPSHOT_TIME: facoltativo. L'ora in cui vuoi acquisire uno snapshot dei tuoi asset, in formato RFC 3339. Il valore non deve risalire a più di 35 giorni prima. Se readTime non è specificato, viene acquisita un'istantanea al momento corrente.
  • BUCKET_NAME: il nome del bucket Cloud Storage in cui scrivere.
  • FILENAME: il file nel bucket Cloud Storage in cui scrivere.

Per tutte le opzioni, consulta la sezione Documentazione di riferimento REST.

Esempi di comandi

Esegui uno dei seguenti comandi per esportare i tuoi metadati resource così come erano attivi 30 gennaio 2024 nel progetto my-project, nel file my-file.txt in del bucket Cloud Storage my-bucket.

curl (Linux, macOS o 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

Esempio di risposta

{
  "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#

Per scoprire come installare e utilizzare la libreria client per Cloud Asset Inventory, consulta Librerie client di Cloud Asset Inventory.

Per autenticarti a Cloud Asset Inventory, configura le credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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;
    }
}

Vai

Per scoprire come installare e utilizzare la libreria client per Cloud Asset Inventory, consulta Librerie client di Cloud Asset Inventory.

Per autenticarti a Cloud Asset Inventory, configura le credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

Per scoprire come installare e utilizzare la libreria client per Cloud Asset Inventory, consulta Librerie client di Cloud Asset Inventory.

Per autenticarti a Cloud Asset Inventory, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

Per scoprire come installare e utilizzare la libreria client per Cloud Asset Inventory, consulta Librerie client di Cloud Asset Inventory.

Per eseguire l'autenticazione su Cloud Asset Inventory, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

Per scoprire come installare e utilizzare la libreria client per Cloud Asset Inventory, consulta Librerie client di Cloud Asset Inventory.

Per eseguire l'autenticazione su Cloud Asset Inventory, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per scoprire come installare e utilizzare la libreria client per Cloud Asset Inventory, consulta Librerie client di Cloud Asset Inventory.

Per eseguire l'autenticazione su Cloud Asset Inventory, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

Per scoprire come installare e utilizzare la libreria client per Cloud Asset Inventory, consulta Librerie client di Cloud Asset Inventory.

Per autenticarti a Cloud Asset Inventory, configura le credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Controllare lo stato di un'esportazione

Il completamento delle esportazioni richiede del tempo. Per verificare se un'esportazione è stata completata, puoi eseguire una query sull'operazione utilizzando il relativo ID.

Tieni presente che anche se l'esportazione è terminata, qualcuno potrebbe aver effettuato un'altra esportazione una richiesta di esportazione nella stessa destinazione di un'altra operazione. Nuova esportazione richieste alla stessa destinazione possono essere effettuate dopo che o se sono trascorsi più di 15 minuti. Richieste di esportazione effettuate all'esterno di queste condizioni vengono rifiutate da Cloud Asset Inventory.

gcloud

Per visualizzare lo stato dell'esportazione, segui queste istruzioni:

  1. Recupera OPERATION_PATH, che include l'ID operazione, dalla risposta alla richiesta di esportazione. Il valore OPERATION_PATH viene mostrato nella risposta all'esportazione, che ha il seguente formato:

    projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
    
  2. Per controllare lo stato dell'esportazione, esegui il comando seguente con OPERATION_PATH:

    gcloud asset operations describe OPERATION_PATH
    

REST

Per visualizzare lo stato dell'esportazione, segui queste istruzioni:

  1. Recupera OPERATION_PATH, che include l'ID operazione, dalla risposta alla richiesta di esportazione. OPERATION_PATH viene visualizzato come valore del campo name nella risposta all'esportazione, che è formattato come segue:

    projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
    
  2. Per controllare lo stato dell'esportazione, effettua la seguente richiesta.

    REST

    Metodo HTTP e URL:

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

    Esempi di comandi

    curl (Linux, macOS o 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

    Risposta di esempio

    {
      "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"
          }
        }
      }
    }

Visualizza un'istantanea degli asset

Per visualizzare l'istantanea degli asset:

  1. Vai alla pagina Bucket in Cloud Storage nella console Google Cloud.

    Vai a Bucket

  2. Fai clic sul nome del bucket in cui hai esportato l'istantanea degli asset, fai clic sul nome file di esportazione.

  3. Fai clic su Scarica per scaricare lo snapshot della risorsa e aprirlo nell'editor di testo che preferisci.