Bibliotecas cliente de Compute Engine

En esta página, se muestra cómo comenzar a usar las bibliotecas cliente de Cloud para la API de Compute Engine. Las bibliotecas cliente facilitan el acceso a las APIs de Google Cloud mediante un lenguaje compatible. Puedes usar las APIs de Google Cloud directamente mediante solicitudes sin procesar al servidor, pero las bibliotecas cliente proporcionan simplificaciones que reducen de manera significativa la cantidad de código que debes escribir.

Obtén más información sobre las bibliotecas cliente de Cloud y las bibliotecas cliente de las API de Google anteriores en Explicación de las bibliotecas cliente.


Para seguir la guía paso a paso sobre esta tarea de forma directa en la consola de Google Cloud, haz clic en Guiarme:

GUIARME


Instala la biblioteca cliente

C++

Sigue el Quickstart.

C#

Instala el paquete Google.Cloud.Compute.V1 de NuGet.

Para obtener más información, consulta Configura un entorno de desarrollo de C#.

Go

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

Para obtener más información, consulta Configura un entorno de desarrollo de Go.

Java

Si usas Maven, agrega lo siguiente al archivo pom.xml. Para obtener más información sobre las BOM, consulta Las bibliotecas de BOM de 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>

Si usas Gradle, agrega lo siguiente a las dependencias:

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

Si usas sbt, agrega lo siguiente a las dependencias:

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

La versión anterior de las bibliotecas cliente de Cloud para Java en Compute Engine está disponible como la versión 0.120.x o anterior en el artefacto de Maven. Las versiones 0.120.x y anteriores de esta biblioteca son incompatibles con versiones posteriores.

Para obtener más información, consulta Configura un entorno de desarrollo de Java.

Node.js

npm install @google-cloud/compute

La versión anterior de las bibliotecas cliente de Cloud para Node.js para Compute Engine está disponible como la versión 2.5.x o anterior en el paquete de npm. Las versiones 2.5.x y anteriores de esta biblioteca son incompatibles con versiones posteriores.

Para obtener más información, consulta Configura un entorno de desarrollo de Node.js.

PHP

composer require google/cloud-compute

Para obtener más información, consulta PHP en Google Cloud.

Python

pip install --upgrade google-cloud-compute

Para obtener más información, consulta Configura un entorno de desarrollo de Python.

Ruby

gem install google-cloud-compute-v1

Para obtener más información, consulta Cómo configurar un entorno de desarrollo en Ruby.

Configura la autenticación

Para autenticar llamadas a las API de Google Cloud, las bibliotecas cliente son compatibles con las credenciales predeterminadas de la aplicación (ADC). Las bibliotecas buscan credenciales en un conjunto de ubicaciones definidas y las usan para lo siguiente: autenticar solicitudes en la API. Con ADC, puedes hacer que las credenciales estén disponibles para tu aplicación en una variedad de entornos, como el desarrollo o producción local, sin necesidad de modificar el código de la aplicación.

Para los entornos de producción, la forma en que configuras ADC depende del servicio y el contexto. Para obtener más información, consulta Configura credenciales predeterminadas de la aplicación.

Para un entorno de desarrollo local, puedes configurar ADC con las credenciales asociadas con tu cuenta de Google:

  1. Instala e inicializa gcloud CLI

    Cuando inicialices gcloud CLI, asegúrate de especificar un proyecto de Google Cloud en el que tengas permiso para acceder a los recursos que necesita tu aplicación.

  2. Crea tu archivo de credenciales:

    gcloud auth application-default login

    Aparecerá una pantalla de acceso. Después de acceder, tus credenciales se almacenan en el archivo de credenciales local que usa ADC.

Usa la biblioteca cliente

En el siguiente ejemplo, se muestra cómo usar la biblioteca cliente para enumerar instancias en una zona específica. Para obtener más ejemplos, consulta Usa bibliotecas 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"
	"google.golang.org/api/iterator"
	computepb "google.golang.org/genproto/googleapis/cloud/compute/v1"
)

// 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 adicionales

C++

La siguiente lista contiene vínculos a más recursos relacionados con la biblioteca cliente para C++:

C#

La siguiente lista contiene vínculos a más recursos relacionados con la biblioteca cliente para C#:

Go

En la siguiente lista, se incluyen vínculos a más recursos relacionados con la biblioteca cliente para Go:

Java

La siguiente lista contiene vínculos a más recursos relacionados con la biblioteca cliente para Java:

Node.js

La siguiente lista contiene vínculos a más recursos relacionados con la biblioteca cliente de Node.js:

PHP

La siguiente lista contiene vínculos a más recursos relacionados con la biblioteca cliente para PHP:

Python

La siguiente lista contiene vínculos a más recursos relacionados con la biblioteca cliente para Python:

Ruby

La siguiente lista contiene vínculos a más recursos relacionados con la biblioteca cliente para Ruby:

Bibliotecas cliente anteriores

Las bibliotecas cliente de Cloud usan nuestro modelo más reciente de biblioteca cliente y son la opción recomendada para acceder a las API de Cloud de manera programática.

Para los casos en los que no puedes usar las bibliotecas cliente de Cloud, están disponibles las siguientes bibliotecas cliente de la API de Google:

Lenguaje Biblioteca Recursos
Go Biblioteca cliente de Go de la API de Google Documentación
Java Biblioteca cliente de Java de la API de Google Documentación
JavaScript Biblioteca cliente de JavaScript de la API de Google Documentación
.NET Biblioteca cliente de .NET de la API de Google Documentación
Node.js Biblioteca cliente de Node.js de la API de Google Documentación
Objective‑C Biblioteca cliente Objective-C de la API de Google Documentación
PHP Biblioteca cliente de PHP de la API de Google Documentación
Python Biblioteca cliente de Python de la API de Google Documentación
Ruby Biblioteca cliente de Ruby de la API de Google Documentación
Dart Biblioteca cliente de Dart de la API de Google Documentación

Bibliotecas cliente de la API de Compute Engine de terceros

libcloud

libcloud es una biblioteca de Python que se usa para interactuar con varios proveedores de servicios en la nube a través de una sola API unificada.

El proyecto de la API de libcloud de Apache recibe asistencia y actualizaciones para Compute Engine desde julio de 2013. Es compatible con un amplio conjunto de características de Compute Engine, como instancias, discos, redes y balanceadores de cargas. En la demostración de introducción, se proporciona un ejemplo de código para usar libcloud y Compute Engine en conjunto.

jclouds

jclouds es una biblioteca de código abierto que te permite usar Java y Clojure en varios proveedores de servicios en la nube.

La API de Cloud de jclouds es compatible con Compute Engine y te permite administrar recursos como máquinas virtuales, discos y redes. A partir de la versión 1.9, Compute Engine ascendió al núcleo jclouds.

fog.io

fog.io es una biblioteca de código abierto de Ruby que te permite interactuar con varios servicios en la nube a través de una API.

La API de Cloud de fog.io ha sido compatible con Compute Engine desde la versión 1.11.0 en mayo de 2013. Admite operaciones de instancias como la creación y la eliminación, junto con las operaciones de administración para otros recursos, como discos, redes y balanceadores de cargas.