Exportar metadados de recursos para o Cloud Storage

Este documento mostra como exportar os metadados do recurso do seu projeto para um bucket do Cloud Storage.

Antes de começar

  1. Ative a API Cloud Asset Inventory no projeto em que você está executando comandos do Inventário de recursos do Cloud.

    Ativar a API Cloud Asset Inventory

  2. Verifique se a conta tem o papel correto para chamar a API Cloud Asset Inventory. Para permissões individuais de cada tipo de chamada, consulte Permissões.

  3. Crie um bucket do Cloud Storage para exportar, se ainda não tiver um.

Limitações

  • Os buckets do Cloud Storage criptografados com chaves personalizadas do Cloud Key Management Service (Cloud KMS) não são aceitos.

  • O bucket do Cloud Storage não pode ter uma política de retenção definida.

  • Durante a exportação, a operação pode criar arquivos temporários na pasta de saída. Não remova esses arquivos enquanto a operação estiver em andamento. Quando a operação for concluída, os arquivos temporários serão removidos automaticamente.

  • O tipo de conteúdo ACCESS_POLICY só pode ser exportado no nível da organização.

  • Se o arquivo para onde você está exportando já existir e estiver em processo de exportação, um erro 400 será retornado.

  • Para testar as permissões, o Inventário de recursos do Cloud cria um arquivo vazio antes de exportar os dados, o que envia um evento de gatilho extra do Cloud Storage de google.cloud.storage.object.v1.finalized.

Exportar um snapshot de recurso para o 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_TYPE

Forneça os valores a seguir:

  • SCOPE: use um dos seguintes valores:

    • project=PROJECT_ID, em que PROJECT_ID é o ID do projeto que tem os metadados do recurso que você quer exportar.
    • folder=FOLDER_ID, em que FOLDER_ID é o ID da pasta que tem os metadados do recurso que você quer exportar.

      Como encontrar o ID de uma pasta

      Google Cloud console

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte 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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que tem os metadados do recurso que você quer exportar.

      Como encontrar o ID de uma organizaçãodo Google Cloud

      Google Cloud console

      Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: opcional. O ID do projeto em que o agente de serviço padrão do Inventário de recursos do Cloud está e que tem permissões para gerenciar seus conjuntos de dados e tabelas do BigQuery. Saiba mais sobre como configurar o projeto de faturamento.

  • ASSET_TYPE_#: opcional. Uma lista separada por vírgulas de tipos de recursos pesquisáveis. As expressões regulares compatíveis com RE2 são aceitas. Se a expressão regular não corresponder a nenhum tipo de recurso aceito, um erro INVALID_ARGUMENT será retornado. Quando --asset-types não é especificado, todos os tipos de recursos são retornados.
  • CONTENT_TYPE: opcional. O tipo de conteúdo dos metadados que você quer recuperar. Quando --content-type não é especificado, apenas informações básicas são retornadas, como nomes de recursos, a última vez que os recursos foram atualizados e a quais projetos, pastas e organizações eles pertencem.
  • RELATIONSHIP_TYPE_#: opcional. Requer acesso ao nível Premium ou Enterprise do Security Command Center, ou ao Gemini Cloud Assist. Uma lista separada por vírgulas com os tipos de relacionamento de recursos que você quer recuperar. Defina CONTENT_TYPE como RELATIONSHIP para que isso funcione.
  • SNAPSHOT_TIME: opcional. O horário em que você quer tirar um snapshot dos seus recursos, no formato de data e hora do tópico do gcloud. O valor não pode ser de mais de 35 dias. Quando --snapshot-time não é especificado, um snapshot é capturado no horário atual.
  • OUTPUT_TYPE: use um dos seguintes valores:

    • --output-path="gs://BUCKET_NAME/FILE_NAME" para gravar a saída em um arquivo, em que:

      • BUCKET_NAME é o nome do bucket do Cloud Storage em que as gravações serão feitas.
      • FILE_NAME é o arquivo a ser gravado no bucket do Cloud Storage.
    • --output-path-prefix="gs://BUCKET_NAME/FOLDER_NAME" para gravar a saída em uma pasta, em que:

      • BUCKET_NAME é o nome do bucket do Cloud Storage em que a gravação será feita.
      • FOLDER_NAME é a pasta em que você vai gravar no bucket do Cloud Storage. A saída é dividida em subpastas nomeadas de acordo com os tipos de recursos. As subpastas não podem existir na pasta especificada.

Consulte a referência da CLI do gcloud para conferir todas as opções.

Exemplo

Execute o comando a seguir para exportar os metadados resource como estavam em 30 de janeiro de 2024 no projeto my-project para o arquivo my-file.txt no bucket my-bucket do Cloud Storage.

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"

Exemplo de resposta

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étodo HTTP e URL:

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

Cabeçalhos:

X-Goog-User-Project: BILLING_PROJECT_ID

Solicitar corpo JSON:

{
  "assetTypes": [
    "ASSET_TYPE_1",
    "ASSET_TYPE_2",
    "..."
  ],
  "contentType": "CONTENT_TYPE",
  "relationshipTypes": [
    "RELATIONSHIP_TYPE_1",
    "RELATIONSHIP_TYPE_2",
    "..."
  ],
  "readTime": "SNAPSHOT_TIME",
  "outputConfig": {
    "gcsDestination": {
      OUTPUT_TYPE
    }
  }
}

Forneça os valores a seguir:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto que tem os metadados do recurso que você quer exportar.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto que tem os metadados do recurso que você quer exportar.

      Como encontrar um número de projeto da nuvem soberana da T-Systems do

      Google Cloud console

      Para encontrar um número de projeto do Google Cloud , siga estas etapas:

      1. Acesse a página Welcome no console Google Cloud .

        Acessar a página de boas-vindas

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Welcome.

        Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, acesse a página Gerenciar recursos e filtre a lista usando o nome dele.

      CLI da gcloud

      É possível extrair um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta que tem os metadados do recurso que você quer exportar.

      Como encontrar o ID de uma pasta

      Google Cloud console

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte 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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que tem os metadados do recurso que você quer exportar.

      Como encontrar o ID de uma organização do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: o ID do projeto em que o agente de serviço padrão do Inventário de recursos do Cloud tem permissões para gerenciar seus conjuntos de dados e tabelas do BigQuery. Saiba mais sobre como configurar o projeto de faturamento.

  • ASSET_TYPE_#: opcional. Uma matriz de tipos de recursos pesquisáveis. As expressões regulares compatíveis com RE2 são aceitas. Se a expressão regular não corresponder a nenhum tipo de recurso aceito, um erro INVALID_ARGUMENT será retornado. Quando assetTypes não é especificado, todos os tipos de recurso são retornados.
  • CONTENT_TYPE: opcional. O tipo de conteúdo dos metadados que você quer recuperar. Quando contentType não é especificado, apenas informações básicas são retornadas, como nomes de recursos, a última vez que os recursos foram atualizados e a quais projetos, pastas e organizações eles pertencem.
  • RELATIONSHIP_TYPE_#: opcional. Requer acesso ao nível Premium ou Enterprise do Security Command Center, ou ao Gemini Cloud Assist. Uma lista separada por vírgulas de tipos de relacionamento de recursos que você quer recuperar. Defina CONTENT_TYPE como RELATIONSHIP para que isso funcione.
  • SNAPSHOT_TIME: opcional. O horário em que você quer tirar um snapshot dos seus recursos, no formato RFC 3339. O valor não pode ser de mais de 35 dias. Quando readTime não é especificado, um snapshot é capturado no horário atual.
  • OUTPUT_TYPE: use um dos seguintes valores:

    • "uri": "gs://BUCKET_NAME/FILE_NAME" para gravar a saída em um arquivo, em que:

      • BUCKET_NAME é o nome do bucket do Cloud Storage em que as gravações serão feitas.
      • FILE_NAME é o arquivo a ser gravado no bucket do Cloud Storage.
    • "uriPrefix": "gs://BUCKET_NAME/FOLDER_NAME" para gravar a saída em uma pasta, em que:

      • BUCKET_NAME é o nome do bucket do Cloud Storage em que a gravação será feita.
      • FOLDER_NAME é a pasta em que você vai gravar no bucket do Cloud Storage. A saída é dividida em subpastas nomeadas com base nos tipos de recursos. As subpastas não podem existir na pasta especificada.

Consulte a referência REST para conferir todas as opções.

Exemplos de comando

Execute um dos comandos a seguir para exportar os metadados resource como estavam em 30 de janeiro de 2024 no projeto my-project para o arquivo my-file.txt no bucket my-bucket do Cloud Storage.

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

Exemplo de resposta

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

Para saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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

Para saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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

Para saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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

Para saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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

Para saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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

Para saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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

Para saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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

Verificar o status de uma exportação

As exportações levam tempo para serem concluídas. Para verificar se uma exportação foi concluída, consulte a operação usando o ID dela.

Mesmo que a exportação seja concluída, alguém pode ter feito outra solicitação de exportação para o mesmo destino em uma operação diferente. Novas solicitações de exportação para o mesmo destino podem ser feitas depois que uma solicitação anterior for concluída ou se mais de 15 minutos tiverem se passado. As solicitações de exportação feitas fora dessas condições são rejeitadas pelo Inventário de recursos do Cloud.

gcloud

Para conferir o status da exportação, siga estas instruções:

  1. Receba o OPERATION_PATH, que inclui o ID da operação, da resposta à solicitação de exportação. O OPERATION_PATH é mostrado na resposta à exportação, que tem a seguinte formatação:

    projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
    
  2. Para verificar o status da exportação, execute o seguinte comando com OPERATION_PATH:

    gcloud asset operations describe OPERATION_PATH
    

REST

Para conferir o status da exportação, siga estas instruções:

  1. Receba o OPERATION_PATH, que inclui o ID da operação, da resposta à solicitação de exportação. O OPERATION_PATH é mostrado como o valor do campo name na resposta à exportação, que tem a seguinte formatação:

    projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
    
  2. Para verificar o status da exportação, faça a seguinte solicitação.

    REST

    Método HTTP e URL:

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

    Exemplos de comando

    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

    Exemplo de resposta

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

Acessar um snapshot de um recurso

Para visualizar o snapshot do recurso:

  1. Acesse a página Buckets do Cloud Storage no console do Google Cloud .

    Acessar buckets

  2. Clique no nome do bucket para onde você exportou o snapshot do recurso e, em seguida, clique no nome do arquivo de exportação.

  3. Clique em Fazer o download para fazer o download do snapshot do recurso e abra-o no editor de texto de sua preferência.