Bibliotecas de cliente do Compute Engine

Esta página mostra como começar a usar as bibliotecas de cliente do Cloud para a API Compute Engine. Bibliotecas cliente facilitam o acessoGoogle Cloud APIs de uma linguagem compatível. Embora você possa usarGoogle Cloud APIs diretamente, fazendo solicitações brutas ao servidor, as bibliotecas cliente fornecem simplificações que reduzem significativamente a quantidade de código que você precisa escrever.

Leia mais sobre as bibliotecas de cliente do Cloud e as antigas bibliotecas de cliente da API do Google em Bibliotecas de cliente explicadas .


Para seguir a orientação passo a passo para esta tarefa diretamente no console do Google Cloud, clique em Oriente-me :

Guie-me


Instale a biblioteca cliente

C++

Siga o Quickstart .

C#

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

Para obter mais informações, consulte Configurando um ambiente de desenvolvimento C# .

Go

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

Para obter mais informações, consulte Configurando um ambiente de desenvolvimento Go .

Java

If you are using Maven, add the following to your pom.xml file. For more information about BOMs, see The Google Cloud Platform Libraries BOM.

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

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

If you are using Gradle, add the following to your dependencies:

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

If you are using sbt, add the following to your dependencies:

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

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

Para obter mais informações, consulte Configurando um ambiente de desenvolvimento Java .

Node.js

npm install @google-cloud/compute

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

Para obter mais informações, consulte Configurando um ambiente de desenvolvimento Node.js.

PHP

composer require google/cloud-compute

Para obter mais informações, consulte Usando PHP no Google Cloud .

Python

pip install --upgrade google-cloud-compute

Para obter mais informações, consulte Configurando um ambiente de desenvolvimento Python .

Ruby

gem install google-cloud-compute-v1

Para obter mais informações, consulte Configurando um ambiente de desenvolvimento Ruby .

Configurar autenticação

Para autenticar chamadas para Google Cloud APIs e bibliotecas de clientes suportam Application Default Credentials (ADC) ; as bibliotecas procuram credenciais em um conjunto de locais definidos e usam essas credenciais para autenticar solicitações à API. Com o ADC, você pode disponibilizar credenciais para seu aplicativo em diversos ambientes, como desenvolvimento local ou produção, sem precisar modificar o código do seu aplicativo.

Para ambientes de produção, a forma como você configura o ADC depende do serviço e do contexto. Para obter mais informações, consulte Configurar credenciais padrão do aplicativo .

Para um ambiente de desenvolvimento local, você pode 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 é exibida. Depois de entrar, suas credenciais serão armazenadas no arquivo de credenciais locais usado pelo ADC .

Use a biblioteca cliente

O exemplo a seguir mostra como usar a biblioteca cliente para listar instâncias em uma zona específica. Para obter mais exemplos, consulte Usando 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

Recursos adicionais

C++

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

C#

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

Go

A lista a seguir contém links para mais recursos relacionados à biblioteca cliente do Go:

Java

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

Node.js

A lista a seguir contém links para mais recursos relacionados à biblioteca cliente para Node.js:

PHP

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

Python

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

Ruby

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

Bibliotecas clientes 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 APIs do Cloud de maneira programática.

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

Linguagem Biblioteca Recursos
Ir Biblioteca de cliente Google API Go Documentação
Java Biblioteca cliente Java da API do Google Documentação
JavaScript Biblioteca cliente JavaScript da API do Google Documentação
.LÍQUIDO Biblioteca de cliente .NET da API do Google Documentação
Node.js Biblioteca cliente Node.js da API do Google Documentação
Objetivo-C Biblioteca de cliente Objective-C da API do Google Documentação
PHP Biblioteca cliente PHP da API do Google Documentação
Pitão Biblioteca cliente Python da API do Google Documentação
Rubi Biblioteca cliente Ruby da API do Google Documentação
Dardo Biblioteca de cliente 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 em nuvem por meio de uma única API unificada.

O projeto da API Apache libcloud recebeu suporte e atualizações para o Compute Engine desde julho de 2013. Ele oferece suporte a 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 libcloud e Compute Engine juntos.

jclouds

jclouds é uma biblioteca de código aberto que permite usar Java e Clojure em vários provedores de nuvem.

A API jclouds cloud oferece suporte ao 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 para o núcleo jclouds.

nevoeiro.io

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

A API de nuvem fog.io tem suporte para Compute Engine desde a versão 1.11.0 em maio de 2013. Ela oferece suporte a operações de instância, como criação e exclusão, juntamente com operações de gerenciamento para outros recursos, como discos, redes e balanceadores de carga.