Bibliotecas de cliente do Compute Engine

Nesta página, mostramos como começar a usar as bibliotecas de cliente do Cloud para a API Compute Engine. As bibliotecas de cliente facilitam o acesso a APIs do Google Cloud por uma linguagem compatível. É possível usar as APIs do Google 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.

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


Para seguir as instruções passo a passo desta tarefa diretamente no console do Google Cloud, clique em Orientação:

Orientações


Instale a biblioteca de cliente

C++

Siga as Quickstart.

C#

Instale o pacote Google.Cloud.Compute.V1 pelo NuGet.

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

Go

go get cloud.google.com/go/compute/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 ao arquivo pom.xml. Para mais informações sobre BOMs, consulte BOM das bibliotecas do Google Cloud Platform.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>libraries-bom</artifactId>
      <version>26.37.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-compute</artifactId>
  </dependency>

Se você estiver usando o Gradle, adicione isto às dependências:

implementation 'com.google.cloud:google-cloud-compute:1.51.0'

Se você estiver usando o sbt, adicione o seguinte às suas dependências:

libraryDependencies += "com.google.cloud" % "google-cloud-compute" % "1.51.0"

A versão mais antiga das bibliotecas de cliente do Cloud para Java do Compute Engine está disponível como versão 0.120.x ou anterior no artefato do Maven. As versões 0.120.x e anteriores desta biblioteca são incompatíveis com versões posteriores.

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

Node.js

npm install @google-cloud/compute

A versão mais antiga das bibliotecas de cliente do Cloud para Node.js para o Compute Engine está disponível como versão 2.5.x ou anterior no pacote npm (em inglês). As versões 2.5.x e anteriores desta biblioteca são incompatíveis com versões posteriores.

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

PHP

composer require google/cloud-compute

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

Python

pip install --upgrade google-cloud-compute

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

Ruby

gem install google-cloud-compute-v1

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

Configurar a autenticação

Para autenticar as chamadas feitas às APIs do Google Cloud, as bibliotecas de cliente dão suporte ao Application Default Credentials (ADC). As bibliotecas procuram as credenciais em um conjunto de locais definidos e as usam para autenticar as solicitações feitas à API. Com o ADC, é possível disponibilizar credenciais para seu aplicativo em uma variedade de ambientes, como 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. Instale e inicialize a gcloud CLI.

    Ao inicializar a gcloud CLI, especifique um projeto do Google Cloud em que você tem permissão para acessar os recursos necessários para o aplicativo.

  2. Crie o arquivo de credenciais:

    gcloud auth application-default login

    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 para listar instâncias em uma zona específica. Para mais exemplos, consulte Como usar bibliotecas de cliente.

C#


using Google.Cloud.Compute.V1;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

public class ListZoneInstancesAsyncSample
{
    public async Task<IList<Instance>> ListZoneInstancesAsync(
        // TODO(developer): Set your own default values for these parameters or pass different values when calling this method.
        string projectId = "your-project-id", 
        string zone = "us-central1-a")
    {
        // Initialize client that will be used to send requests. This client only needs to be created
        // once, and can be reused for multiple requests.
        InstancesClient client = await InstancesClient.CreateAsync();
        IList<Instance> allInstances = new List<Instance>();

        // Make the request to list all VM instances in the given zone in the specified project.
        await foreach(var instance in client.ListAsync(projectId, zone))
        {
            // The result is an Instance collection.
            Console.WriteLine($"Instance: {instance.Name}");
            allInstances.Add(instance);
        }

        return allInstances;
    }
}

Go

import (
	"context"
	"fmt"
	"io"

	compute "cloud.google.com/go/compute/apiv1"
	computepb "cloud.google.com/go/compute/apiv1/computepb"
	"google.golang.org/api/iterator"
)

// listInstances prints a list of instances created in given project in given zone.
func listInstances(w io.Writer, projectID, zone string) error {
	// projectID := "your_project_id"
	// zone := "europe-central2-b"
	ctx := context.Background()
	instancesClient, err := compute.NewInstancesRESTClient(ctx)
	if err != nil {
		return fmt.Errorf("NewInstancesRESTClient: %w", err)
	}
	defer instancesClient.Close()

	req := &computepb.ListInstancesRequest{
		Project: projectID,
		Zone:    zone,
	}

	it := instancesClient.List(ctx, req)
	fmt.Fprintf(w, "Instances found in zone %s:\n", zone)
	for {
		instance, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintf(w, "- %s %s\n", instance.GetName(), instance.GetMachineType())
	}
	return nil
}

Java


import com.google.cloud.compute.v1.Instance;
import com.google.cloud.compute.v1.InstancesClient;
import java.io.IOException;

public class ListInstance {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample
    String project = "your-project-id";
    String zone = "zone-name";
    listInstances(project, zone);
  }

  // List all instances in the given zone in the specified project ID.
  public static void listInstances(String project, String zone) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the `instancesClient.close()` method on the client to 
    // safely clean up any remaining background resources.
    try (InstancesClient instancesClient = InstancesClient.create()) {
      // Set the project and zone to retrieve instances present in the zone.
      System.out.printf("Listing instances from %s in %s:", project, zone);
      for (Instance zoneInstance : instancesClient.list(project, zone).iterateAll()) {
        System.out.println(zoneInstance.getName());
      }
      System.out.println("####### Listing instances complete #######");
    }
  }
}

Node.js

/**
 * TODO(developer): Uncomment and replace these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const zone = 'europe-central2-b'

const compute = require('@google-cloud/compute');

// List all instances in the given zone in the specified project.
async function listInstances() {
  const instancesClient = new compute.InstancesClient();

  const [instanceList] = await instancesClient.list({
    project: projectId,
    zone,
  });

  console.log(`Instances found in zone ${zone}:`);

  for (const instance of instanceList) {
    console.log(` - ${instance.name} (${instance.machineType})`);
  }
}

listInstances();

PHP

use Google\Cloud\Compute\V1\Client\InstancesClient;
use Google\Cloud\Compute\V1\ListInstancesRequest;

/**
 * List all instances for a particular Cloud project and zone.
 *
 * @param string $projectId Your Google Cloud project ID.
 * @param string $zone Zone to list instances for (like "us-central1-a").
 *
 * @throws \Google\ApiCore\ApiException if the remote call fails.
 */
function list_instances(string $projectId, string $zone)
{
    // List Compute Engine instances using InstancesClient.
    $instancesClient = new InstancesClient();
    $request = (new ListInstancesRequest())
        ->setProject($projectId)
        ->setZone($zone);
    $instancesList = $instancesClient->list($request);

    printf('Instances for %s (%s)' . PHP_EOL, $projectId, $zone);
    foreach ($instancesList as $instance) {
        printf(' - %s' . PHP_EOL, $instance->getName());
    }
}

Python

from __future__ import annotations

from collections.abc import Iterable

from google.cloud import compute_v1


def list_instances(project_id: str, zone: str) -> Iterable[compute_v1.Instance]:
    """
    List all instances in the given zone in the specified project.

    Args:
        project_id: project ID or project number of the Cloud project you want to use.
        zone: name of the zone you want to use. For example: “us-west3-b”
    Returns:
        An iterable collection of Instance objects.
    """
    instance_client = compute_v1.InstancesClient()
    instance_list = instance_client.list(project=project_id, zone=zone)

    print(f"Instances found in zone {zone}:")
    for instance in instance_list:
        print(f" - {instance.name} ({instance.machine_type})")

    return instance_list

Ruby


require "google/cloud/compute/v1"

# Lists all instances in the given zone in the specified project.
#
# @param [String] project project ID or project number of the Cloud project you want to use.
# @param [String] zone name of the zone you want to use. For example: "us-west3-b"
# @return [Array<::Google::Cloud::Compute::V1::Instance>] Array of instances.
def list_instances project:, zone:
  # Initialize client that will be used to send requests. This client only needs to be created
  # once, and can be reused for multiple requests.
  client = ::Google::Cloud::Compute::V1::Instances::Rest::Client.new

  # Send the request to list all VM instances in the given zone in the specified project.
  instance_list = client.list project: project, zone: zone

  puts "Instances found in zone #{zone}:"
  instances = []
  instance_list.each do |instance|
    puts " - #{instance.name} (#{instance.machine_type})"
    instances << instance
  end
  instances
end

Outros recursos

C++

A lista a seguir contém links para mais recursos relacionados à biblioteca de cliente para C++:

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:

Bibliotecas de cliente mais antigas

As bibliotecas de cliente do Cloud usam nosso modelo de biblioteca de cliente mais recente e são a opção recomendada para acessar as APIs do Cloud de maneira programática.

Para casos em que não é possível usar as bibliotecas de cliente do Cloud, as seguintes bibliotecas de cliente de APIs do Google estão disponíveis:

Idioma Biblioteca Recursos
Go Biblioteca de cliente Go da API Google Documentação
Java Biblioteca de cliente Java da API do Google Documentação
JavaScript Biblioteca de cliente JavaScript da API do Google Documentação
.NET Biblioteca de cliente .NET da API do Google Documentação
Node.js Biblioteca de cliente Node.js da API do Google Documentação
Objective-C Biblioteca de cliente Objective-C da API Google Documentação
PHP Biblioteca de cliente PHP da Google API Documentação
Python Biblioteca de cliente Python da API do Google Documentação
Ruby Biblioteca de cliente Ruby da API do Google Documentação
Dart Biblioteca de cliente do Dart da API do Google Documentação

Bibliotecas de cliente da API Compute Engine de terceiros

libcloud

libcloud é uma biblioteca Python usada para interagir com vários provedores de serviços de nuvem por meio de uma API unificada.

O projeto da API Apache libcloud recebe suporte e atualizações para o Compute Engine desde julho de 2013. Ele aceita um amplo conjunto de recursos do Compute Engine, incluindo instâncias, discos, redes e balanceadores de carga. A demonstração de primeiros passos fornece um exemplo de código de como usar o libcloud e o Compute Engine juntos.

jclouds

jclouds é uma biblioteca de código aberto que permite o uso de Java e Clojure em vários provedores do Cloud.

A API jclouds Cloud é compatível com o Compute Engine e permite gerenciar recursos como máquinas virtuais, discos e redes. A partir da versão 1.9, o Compute Engine foi promovido ao núcleo da jclouds.

fog.io

O fog.io é uma biblioteca Ruby de código aberto que permite interagir com vários serviços de nuvem por meio de uma API.

A Cloud API da fog.io é compatível com o Compute Engine desde a versão 1.11.0, de maio de 2013. Ele é compatível com operações de instância, como criação e exclusão, junto com operações de gerenciamento para outros recursos, como discos, redes e balanceadores de carga.