Bibliotecas cliente de Compute Engine

Esta página muestra cómo comenzar con las bibliotecas de cliente en la nube para la API de Compute Engine. Las bibliotecas de clientes facilitan el accesoGoogle Cloud API de un idioma compatible. Aunque puedes usarGoogle Cloud Las API realizan directamente solicitudes sin procesar al servidor y las bibliotecas cliente brindan simplificaciones que reducen significativamente la cantidad de código que necesita escribir.

Lea más sobre las bibliotecas cliente de la nube y las bibliotecas cliente API de Google más antiguas en Bibliotecas cliente explicadas .


Para seguir las instrucciones paso a paso para esta tarea directamente en la consola de Google Cloud, haz clic en Guíame :

guíame


Instalar la biblioteca cliente

C++

Siga el Quickstart .

C#

Instale el paquete Google.Cloud.Compute.V1 desde NuGet.

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

Go

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

Para obtener más información, consulte Configuración de un entorno de desarrollo de 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"

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

Para obtener más información, consulte Configuración de un entorno de desarrollo Java .

Node.js

npm install @google-cloud/compute

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

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

PHP

composer require google/cloud-compute

Para obtener más información, consulte Uso de PHP en Google Cloud .

Python

pip install --upgrade google-cloud-compute

Para obtener más información, consulte Configuración de un entorno de desarrollo de Python .

Ruby

gem install google-cloud-compute-v1

Para obtener más información, consulte Configuración de un entorno de desarrollo Ruby .

Configurar la autenticación

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

Para entornos de producción, la forma de configurar ADC depende del servicio y el contexto. Para obtener más información, consulte Configurar las credenciales predeterminadas de la aplicación .

Para un entorno de desarrollo local, puede configurar ADC con las credenciales asociadas a su cuenta de 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.

    Aparece una pantalla de inicio de sesión. Después de iniciar sesión, sus credenciales se almacenan en el archivo de credenciales local utilizado por ADC .

Utilice la biblioteca cliente

El siguiente ejemplo muestra cómo utilizar la biblioteca cliente para enumerar instancias en una zona particular. Para obtener más ejemplos, consulte Uso de 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"
	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 adicionales

C++

La siguiente lista contiene enlaces 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

La siguiente lista contiene enlaces a más recursos relacionados con la biblioteca cliente de Go:

Java

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

Node.js

La siguiente lista contiene enlaces a más recursos relacionados con la biblioteca cliente para Node.js:

PHP

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

Python

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

Ruby

La siguiente lista contiene enlaces a más recursos relacionados con la biblioteca cliente de Ruby:

Bibliotecas de clientes más antiguas

Las bibliotecas de cliente en la nube utilizan nuestro último modelo de biblioteca de cliente y son la opción recomendada para acceder a las API de la nube mediante programación.

Para los casos en los que no pueda utilizar las bibliotecas cliente de la nube, están disponibles las siguientes bibliotecas cliente API de Google :

Idioma Biblioteca Recursos
Ir Biblioteca cliente Google API Go Documentación
Java Biblioteca cliente Java API de Google Documentación
javascript Biblioteca cliente de JavaScript de la API de Google Documentación
.NETO Biblioteca cliente API .NET de Google Documentación
Nodo.js Biblioteca cliente API de Google Node.js Documentación
Objetivo-C Biblioteca cliente API Objective-C de Google Documentación
PHP Biblioteca cliente PHP de la API de Google Documentación
Pitón Biblioteca cliente API Python de Google Documentación
Rubí Biblioteca cliente Ruby de la API de Google Documentación
Dardo Biblioteca cliente de Google API Dart Documentación

Bibliotecas cliente de API de Compute Engine de terceros

nubelibros

libcloud es una biblioteca de Python que se utiliza para interactuar con múltiples proveedores de servicios en la nube a través de una única API unificada.

El proyecto Apache libcloud API ha recibido soporte y actualizaciones para Compute Engine desde julio de 2013. Admite un amplio conjunto de funciones de Compute Engine que incluyen instancias, discos, redes y balanceadores de carga. La demostración de introducción proporciona un ejemplo de código sobre cómo usar libcloud y Compute Engine juntos.

nubes j

jclouds es una biblioteca de código abierto que le permite utilizar Java y Clojure en múltiples proveedores de nube.

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

niebla.io

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

La API de la nube fog.io ha sido compatible con Compute Engine desde la versión 1.11.0 en mayo de 2013. Admite operaciones de instancia como crear y eliminar, junto con operaciones de administración para otros recursos como discos, redes y balanceadores de carga.