Bibliotecas de cliente do Compute Engine

Esta página mostra como começar a usar as bibliotecas cliente da Google Cloud para a API Compute Engine. As bibliotecas cliente facilitam o acesso às Google Cloud APIs a partir de um idioma suportado. Embora possa usar as Google Cloud APIs diretamente fazendo pedidos não processados ao servidor, as bibliotecas cliente oferecem simplificações que reduzem significativamente a quantidade de código que tem de escrever.

Leia mais acerca das bibliotecas cliente da nuvem e das bibliotecas cliente das APIs Google mais antigas em Bibliotecas cliente explicadas.


Para seguir orientações passo a passo para esta tarefa diretamente na Google Cloud consola, clique em Orientar-me:

Visita guiada


Instale a biblioteca de cliente

C++

Siga as Quickstart.

C#

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

Para mais informações, consulte o artigo Configurar um ambiente de desenvolvimento C#.

Go

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

Para mais informações, consulte o artigo Configurar 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.67.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.83.0'

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

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

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

Para mais informações, consulte o artigo Configurar um ambiente de desenvolvimento Java.

Node.js

npm install @google-cloud/compute

A versão mais antiga das bibliotecas cliente da Google Cloud para Node.js para o 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 as versões posteriores.

Para mais informações, consulte o artigo Configurar um ambiente de desenvolvimento do Node.js.

PHP

composer require google/cloud-compute

Para mais informações, consulte o artigo Usar o PHP no Google Cloud.

Python

pip install --upgrade google-cloud-compute

Para mais informações, consulte o artigo Configurar um ambiente de desenvolvimento Python.

Ruby

gem install google-cloud-compute-v1

Para mais informações, consulte o artigo Configurar um ambiente de desenvolvimento Ruby.

Configure a autenticação

Para autenticar chamadas para Google Cloud APIs, as bibliotecas cliente suportam Credenciais padrão da aplicação (ADC); as bibliotecas procuram credenciais num conjunto de localizações definidas e usam essas credenciais para autenticar pedidos para a API. Com o ADC, pode disponibilizar credenciais à sua aplicação numa variedade de ambientes, como desenvolvimento local ou produção, sem ter de modificar o código da aplicação.

Para ambientes de produção, a forma como configura o ADC depende do serviço e do contexto. Para mais informações, consulte o artigo Configure as Credenciais padrão da aplicação.

Para um ambiente de desenvolvimento local, pode configurar o ADC com as credenciais associadas à sua Conta Google:

  1. Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI 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, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    É apresentado um ecrã de início de sessão. Depois de iniciar sessão, as suas credenciais são armazenadas no ficheiro de credenciais local usado pelo ADC.

Use a biblioteca de cliente

O exemplo seguinte mostra como usar a biblioteca cliente para listar instâncias numa zona específica. Para ver mais exemplos, consulte o artigo 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

Recursos adicionais

C++

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

C#

A lista seguinte contém links para mais recursos relacionados com a biblioteca de cliente para C#:

Go

A lista seguinte contém links para mais recursos relacionados com a biblioteca de cliente para Go:

Java

A lista seguinte contém links para mais recursos relacionados com a biblioteca cliente para Java:

Node.js

A lista seguinte contém links para mais recursos relacionados com a biblioteca de cliente para Node.js:

PHP

A lista seguinte contém links para mais recursos relacionados com a biblioteca cliente para PHP:

Python

A lista seguinte contém links para mais recursos relacionados com a biblioteca cliente para Python:

Ruby

A lista seguinte contém links para mais recursos relacionados com a biblioteca de cliente para Ruby:

Bibliotecas cliente mais antigas

As bibliotecas cliente da Cloud usam o nosso modelo de biblioteca cliente mais recente e são a opção recomendada para aceder às APIs Cloud de forma programática.

Nos casos em que não pode usar as bibliotecas cliente do Google Cloud, estão disponíveis as seguintes bibliotecas cliente de APIs Google:

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

Bibliotecas cliente da API Compute Engine de terceiros

libcloud

A libcloud é uma biblioteca Python usada para interagir com vários fornecedores de serviços na nuvem através de uma única API unificada.

O projeto da API Apache libcloud recebe apoio técnico e atualizações para o Compute Engine desde julho de 2013. Suporta um vasto conjunto de funcionalidades do Compute Engine, incluindo instâncias, discos, redes e equilibradores de carga. A demonstração de introdução fornece um exemplo de código de como usar o libcloud e o Compute Engine em conjunto.

jclouds

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

A API na nuvem jclouds suporta o Compute Engine e permite-lhe gerir recursos como máquinas virtuais, discos e redes. A partir da versão 1.9, o Compute Engine foi promovido ao núcleo do jclouds.

fog.io

fog.io é uma biblioteca Ruby de código aberto que lhe permite interagir com vários serviços na nuvem através de uma API.

A API na nuvem fog.io tem suporte para o Compute Engine desde a versão 1.11.0 em maio de 2013. Suporta operações de instâncias, como criar e eliminar, juntamente com operações de gestão para outros recursos, como discos, redes e equilibradores de carga.