Bibliotecas de cliente do Inventário de recursos do Cloud

Nesta página, mostramos como começar a usar as bibliotecas de cliente do Cloud para a API Cloud Asset Inventory. As bibliotecas de cliente facilitam o acesso a Google Cloud APIs em uma linguagem com suporte. É possível usar as APIsGoogle Cloud diretamente fazendo solicitações brutas ao servidor, mas as bibliotecas de cliente oferecem simplificações que reduzem significativamente a quantidade de código que você precisa escrever.

Saiba mais sobre as bibliotecas de cliente do Cloud e as bibliotecas de cliente de APIs do Google mais antigas em Explicação sobre as bibliotecas de cliente.

Instale a biblioteca de cliente

C#

Se você estiver usando o Visual Studio 2017 ou uma versão posterior, abra a janela do gerenciador de pacotes NuGet e digite o seguinte:

Install-Package Google.Cloud.Asset.V1

Se você estiver usando as ferramentas da interface de linha de comando do .NET Core para instalar as dependências, execute o seguinte comando:

dotnet add package Google.Cloud.Asset.V1

Se você estiver usando a interface de linha de comando Paket para instalar as dependências, execute o seguinte comando:

paket add Google.Cloud.Asset.V1

Para mais informações, consulte Como configurar um ambiente de desenvolvimento em C#.

Go

go get cloud.google.com/go/asset/apiv1

Para mais informações, consulte Como configurar um ambiente de desenvolvimento do Go.

Java

Se você estiver usando o Maven, adicione o código abaixo às dependências no arquivo pom.xml:

<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-asset</artifactId>
    <version>DESIRED_VERSION_NUMBER</version>
</dependency>

Se você estiver usando o Gradle, adicione o seguinte código às suas dependências:

compile group: 'com.google.cloud', name: 'google-cloud-asset', version: 'DESIRED_VERSION_NUMBER'

Para mais informações, consulte Como configurar um ambiente de desenvolvimento em Java.

Node.js

npm install --save @google-cloud/asset

Para mais informações, consulte Como configurar um ambiente de desenvolvimento em Node.js.

PHP

composer require google/cloud-asset

Para mais informações, consulte Como usar o PHP no Google Cloud.

Python

pip install --upgrade google-cloud-asset

Para mais informações, consulte Como configurar um ambiente de desenvolvimento em Python.

Ruby

gem install google-cloud-asset

Para mais informações, consulte Como configurar um ambiente de desenvolvimento em Ruby.

Configurar a autenticação

Para autenticar chamadas para Google Cloud APIs, as bibliotecas de cliente oferecem suporte a Application Default Credentials (ADC). As bibliotecas procuram credenciais em um conjunto de locais definidos e as usam para autenticar solicitações à API. Com o ADC, é possível disponibilizar credenciais ao aplicativo em uma variedade de ambientes, como de desenvolvimento ou produção local, sem precisar modificar o código do aplicativo.

Em ambientes de produção, a maneira como você configura o ADC depende do serviço e do contexto. Para mais informações, consulte Configurar o Application Default Credentials.

Para um ambiente de desenvolvimento local, é possível configurar o ADC com as credenciais associadas à sua Conta do Google:

  1. After installing the Google Cloud CLI, initialize it by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  2. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

    Uma tela de login será exibida. Após o login, suas credenciais são armazenadas no arquivo de credenciais local usado pelo ADC.

Usar a biblioteca de cliente

O exemplo a seguir mostra como usar a biblioteca de cliente.

C#


using Google.Api.Gax;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Asset.V1;

public class ListAssetsSample
{
    public  PagedEnumerable<ListAssetsResponse, Asset> ListAssets(string projectId)
    {
        // Create the client.
        AssetServiceClient client = AssetServiceClient.Create();

        // Build the request.
        ListAssetsRequest request = new ListAssetsRequest
        {
            ParentAsResourceName = ProjectName.FromProject(projectId),
            ContentType = ContentType.Resource,
        };

        // Call the API.
         PagedEnumerable<ListAssetsResponse, Asset> response = client.ListAssets(request);

        // Return the result.
        return response;
    }
}

Go


// Sample list-assets list assets.
package main

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

	"google.golang.org/api/iterator"

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

func main() {
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatal(err)
	}
	defer client.Close()

	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	assetType := "storage.googleapis.com/Bucket"
	req := &assetpb.ListAssetsRequest{
		Parent:      fmt.Sprintf("projects/%s", projectID),
		AssetTypes:  []string{assetType},
		ContentType: assetpb.ContentType_RESOURCE,
	}

	// Call ListAssets API to get an asset iterator.
	it := client.ListAssets(ctx, req)

	// Traverse and print the first 10 listed assets in response.
	for i := 0; i < 10; i++ {
		response, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(response)
	}
}

Java

// Imports the Google Cloud client library

public class ListAssetsExample {

  public static void listAssets() throws IOException, IllegalArgumentException {
    // The project id of the asset parent to list.
    String projectId = "YOUR_PROJECT_ID";
    // The asset types to list. E.g.,
    // ["storage.googleapis.com/Bucket", "bigquery.googleapis.com/Table"].
    // See full list of supported asset types at
    // https://cloud.google.com/asset-inventory/docs/supported-asset-types.
    String[] assetTypes = {"YOUR_ASSET_TYPES_TO_LIST"};
    // The asset content type to list. E.g., ContentType.CONTENT_TYPE_UNSPECIFIED.
    // See full list of content types at
    // https://cloud.google.com/asset-inventory/docs/reference/rpc/google.cloud.asset.v1#contenttype
    ContentType contentType = ContentType.CONTENT_TYPE_UNSPECIFIED;
    listAssets(projectId, assetTypes, contentType);
  }

  public static void listAssets(String projectId, String[] assetTypes, ContentType contentType)
      throws IOException, IllegalArgumentException {
    try (AssetServiceClient client = AssetServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);

      // Build initial ListAssetsRequest without setting page token.
      ListAssetsRequest request =
          ListAssetsRequest.newBuilder()
              .setParent(parent.toString())
              .addAllAssetTypes(Arrays.asList(assetTypes))
              .setContentType(contentType)
              .build();

      // Repeatedly call ListAssets until page token is empty.
      ListAssetsPagedResponse response = client.listAssets(request);
      System.out.println(response);
      while (!response.getNextPageToken().isEmpty()) {
        request = request.toBuilder().setPageToken(response.getNextPageToken()).build();
        response = client.listAssets(request);
        System.out.println(response);
      }
    }
  }
}

Node.js

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const assetTypes = 'storage.googleapis.com/Bucket,bigquery.googleapis.com/Table';
// const contentType = 'RESOURCE';

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

const projectId = await client.getProjectId();
const projectResource = `projects/${projectId}`;
// TODO(developer): Choose types of assets to list, such as 'storage.googleapis.com/Bucket':
//   const assetTypes = 'storage.googleapis.com/Bucket,bigquery.googleapis.com/Table';
// Or simply use empty string to list all types of assets:
//   const assetTypes = '';
const assetTypesList = assetTypes ? assetTypes.split(',') : [];

async function listAssets() {
  const request = {
    parent: projectResource,
    assetTypes: assetTypesList,
    contentType: contentType,
    // (Optional) Add readTime parameter to list assets at the given time instead of current time:
    //   readTime: { seconds: 1593988758 },
  };

  // Call cloud.assets.v1.ListAssets API.
  const result = await client.listAssets(request);
  // Handle the response.
  console.log(util.inspect(result, {depth: null}));
}
listAssets();

PHP

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

/**
 * @param string   $projectId  Tthe project Id for list assets.
 * @param string[] $assetTypes (Optional) Asset types to list for.
 * @param int      $pageSize   (Optional) Size of one result page.
 */
function list_assets(
    string $projectId,
    array $assetTypes = [],
    int $pageSize = null
): void {
    // Instantiate a client.
    $client = new AssetServiceClient();

    // Run request
    $request = (new ListAssetsRequest())
        ->setParent("projects/$projectId")
        ->setAssetTypes($assetTypes)
        ->setPageSize($pageSize);
    $response = $client->listAssets($request);

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

Python

from google.cloud import asset_v1

# TODO project_id = 'Your Google Cloud Project ID'
# TODO asset_types = 'Your asset type list, e.g.,
# ["storage.googleapis.com/Bucket","bigquery.googleapis.com/Table"]'
# TODO page_size = 'Num of assets in one page, which must be between 1 and
# 1000 (both inclusively)'
# TODO content_type ="Content type to list"

project_resource = f"projects/{project_id}"
client = asset_v1.AssetServiceClient()

# Call ListAssets v1 to list assets.
response = client.list_assets(
    request={
        "parent": project_resource,
        "read_time": None,
        "asset_types": asset_types,
        "content_type": content_type,
        "page_size": page_size,
    }
)

for asset in response:
    print(asset)

Ruby

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

content_type = :RESOURCE
response = asset_service.list_assets(
  parent:           formatted_parent,
  content_type:     content_type
)

# Do things with the result
response.page.each do |resource|
  puts resource
end

Outros recursos

C#

Confira na lista a seguir os links para mais recursos relacionados à biblioteca de cliente para C#:

Go

Confira na lista a seguir os links para mais recursos relacionados à biblioteca de cliente para Go:

Java

Confira na lista a seguir os links para mais recursos relacionados à biblioteca de cliente para Java:

Node.js

Confira na lista a seguir os links para mais recursos relacionados à biblioteca de cliente para Node.js:

PHP

Confira na lista a seguir os links para mais recursos relacionados à biblioteca de cliente para PHP:

Python

Confira na lista a seguir os links para mais recursos relacionados à biblioteca de cliente para Python:

Ruby

Confira na lista a seguir os links para mais recursos relacionados à biblioteca de cliente para Ruby: