Bibliothèques clientes Compute Engine

Cette page explique comment débuter avec les bibliothèques clientes Cloud pour l'API Compute Engine. Les bibliothèques clientes facilitent l'accès aux API Google Cloud à l'aide d'un langage compatible. Bien que vous puissiez utiliser directement les API Google Cloud en envoyant des requêtes brutes au serveur, les bibliothèques clientes fournissent des simplifications qui réduisent considérablement la quantité de code à écrire.

Pour en savoir plus sur les bibliothèques clientes Cloud et les anciennes bibliothèques clientes des API Google, consultez la page Présentation des bibliothèques clientes.


Pour obtenir des instructions détaillées sur cette tâche directement dans la console Google Cloud, cliquez sur Visite guidée :

Visite guidée


Installer la bibliothèque cliente

C++

Suivez le Quickstart.

C#

Installez le package Google.Cloud.Compute.V1 depuis NuGet.

Pour en savoir plus, consultez la page Configurer un environnement de développement C#.

Go

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

Pour plus d'informations, consultez la page Configurer un environnement de développement Go.

Java

Si vous utilisez Maven, ajoutez les lignes suivantes à votre fichier pom.xml. Pour en savoir plus sur les BOM, consultez la page The Google Cloud Platform Libraries BOM (BOM des bibliothèques 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 vous utilisez Gradle, ajoutez les éléments suivants à vos dépendances :

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

Si vous utilisez sbt, ajoutez les éléments suivants à vos dépendances :

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

L'ancienne version des bibliothèques clientes Cloud en langage Java pour Compute Engine est disponible en tant que version 0.120.x ou antérieure dans l'artefact Maven. Les versions 0.120.x et antérieures de cette bibliothèque sont incompatibles avec les versions ultérieures.

Pour en savoir plus, consultez la page Configurer un environnement de développement Java.

Node.js

npm install @google-cloud/compute

L'ancienne version des bibliothèques clientes Cloud en langage Node.js pour Compute Engine est disponible en tant que version 2.5.x ou antérieure dans le package npm. Les versions 2.5.x et antérieures de cette bibliothèque sont incompatibles avec les versions ultérieures.

Pour en savoir plus, consultez la section Configurer un environnement de développement Node.js.

PHP

composer require google/cloud-compute

Pour en savoir plus, consultez la page Utiliser PHP sur Google Cloud.

Python

pip install --upgrade google-cloud-compute

Pour en savoir plus, consultez la page Configurer un environnement de développement Python.

Ruby

gem install google-cloud-compute-v1

Pour en savoir plus, consultez la section Configurer un environnement de développement Ruby.

Configurer l'authentification

Pour authentifier les appels aux API Google Cloud, les bibliothèques clientes sont compatibles avec le service d'Identifiants par défaut de l'application (ADC). Les bibliothèques recherchent des identifiants dans un ensemble d'emplacements définis et les utilisent pour authentifier les requêtes adressées à l'API. Le service ADC vous permet de mettre des identifiants à disposition de votre application dans divers environnements, tels que l'environnement de développement local ou l'environnement de production, sans avoir à modifier le code de votre application.

Pour les environnements de production, la façon de configurer le service ADC dépend du service et du contexte. Pour en savoir plus, consultez la page Configurer les identifiants par défaut de l'application.

Pour un environnement de développement local, vous pouvez configurer ADC avec les identifiants associés à votre compte Google :

  1. Installez et initialisez la gcloud CLI.

    Lorsque vous initialisez la gcloud CLI, veillez à spécifier un projet Google Cloud dans lequel vous êtes autorisé à accéder aux ressources dont votre application a besoin.

  2. Créez votre fichier d'identifiants :

    gcloud auth application-default login

    Un écran de connexion s'affiche. Une fois que vous êtes connecté, vos identifiants sont stockés dans le fichier d'identifiants local utilisé par ADC.

Utiliser la bibliothèque cliente

L'exemple suivant montre comment répertorier les instances d'une zone spécifique à l'aide de la bibliothèque cliente. Pour obtenir plus d'exemples, consultez la page Utiliser les bibliothèques clientes.

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

Autres ressources

C++

La liste suivante contient des liens vers d'autres ressources liées à la bibliothèque cliente pour C++ :

C#

La liste suivante contient des liens vers d'autres ressources liées à la bibliothèque cliente pour C# :

Go

La liste suivante contient des liens vers d'autres ressources liées à la bibliothèque cliente pour Go :

Java

La liste suivante contient des liens vers d'autres ressources liées à la bibliothèque cliente pour Java :

Node.js

La liste suivante contient des liens vers d'autres ressources liées à la bibliothèque cliente pour Node.js :

PHP

La liste suivante contient des liens vers d'autres ressources liées à la bibliothèque cliente pour PHP :

Python

La liste suivante contient des liens vers d'autres ressources liées à la bibliothèque cliente pour Python :

Ruby

La liste suivante contient des liens vers d'autres ressources liées à la bibliothèque cliente pour Ruby :

Anciennes bibliothèques clientes

Les bibliothèques clientes Cloud utilisent notre dernier modèle de bibliothèque cliente et représentent une option de choix pour accéder aux API Cloud de façon automatisée.

Dans les cas où vous ne pouvez pas utiliser les bibliothèques clientes Cloud, les bibliothèques clientes des API Google suivantes sont disponibles :

Langue Bibliothèque Resources
Go Bibliothèque cliente des API Google en langage Go Documentation
Java Bibliothèque cliente des API Google en langage Java Documentation
JavaScript Bibliothèque cliente des API Google en langage JavaScript Documentation
.NET Bibliothèque cliente des API Google en langage .NET Documentation
Node.js Bibliothèque cliente des API Google en langage Node.js Documentation
Objective-C Bibliothèque cliente des API Google en langage Objective-C Documentation
PHP Bibliothèque cliente des API Google pour PHP Documentation
Python Bibliothèque cliente des API Google pour Python Documentation
Ruby Bibliothèque cliente des API Google en langage Ruby Documentation
Dart Bibliothèque cliente des API Google en langage Dart Documentation

Bibliothèques clientes tierces de l'API Compute Engine

libcloud

libcloud est une bibliothèque Python permettant d'interagir avec plusieurs fournisseurs de services cloud via une API unifiée unique.

Le projet d'API Apache libcloud bénéficie du soutien de la communauté et reçoit des mises à jour pour Compute Engine depuis juillet 2013. Il permet de gérer un large éventail de fonctions de Compute Engine, parmi lesquelles les instances, les disques, les réseaux et les équilibreurs de charge. La démonstration pour se lancer fournit un exemple de code expliquant comment utiliser libcloud et Compute Engine ensemble.

jclouds

jclouds est une bibliothèque Open Source permettant d'utiliser Java et Clojure sur les services Cloud de plusieurs fournisseurs.

L'API Cloud jclouds est compatible avec Compute Engine et permet de gérer des ressources telles que les machines virtuelles, les disques et les réseaux. Depuis la version 1.9, Compute Engine est intégré nativement dans jclouds-core.

fog.io

fog.io est une bibliothèque Ruby Open Source qui permet d'interagir avec plusieurs services cloud via une API unique.

L'API cloud fog.io est compatible avec Compute Engine depuis la version 1.11.0 publiée en mai 2013. Elle permet d'effectuer des opérations de création et de suppression d'instances, ainsi que de gérer d'autres ressources telles que les disques, les réseaux et les équilibreurs de charge.