Librerie client di Compute Engine

Questa pagina mostra come iniziare a utilizzare le librerie client di Cloud per l'API Compute Engine. Le librerie client semplificano l'accesso alle API Google Cloud da un linguaggio supportato. Sebbene sia possibile utilizzare le API Google Cloud direttamente inviando richieste non elaborate al server, le librerie client offrono semplificazioni che riducono notevolmente la quantità di codice da scrivere.

Per ulteriori informazioni sulle librerie client di Cloud e sulle librerie client delle API di Google precedenti, consulta Spiegazioni sulle librerie client.


Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud, fai clic su Aiuto:

Guidami


installa la libreria client

C++

Segui le Quickstart.

C#

Installa il pacchetto Google.Cloud.Compute.V1 da NuGet.

Per ulteriori informazioni, consulta la sezione Configurazione di un ambiente di sviluppo C#.

Go

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

Per ulteriori informazioni, consulta la sezione Configurazione di un ambiente di sviluppo 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.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>

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

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

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

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

La versione precedente delle librerie client di Cloud per Java per Compute Engine è disponibile come versione 0.120.x o precedente nell'artefatto Maven. Le versioni 0.120.x e precedenti di questa libreria non sono compatibili con le versioni successive.

Per ulteriori informazioni, consulta la sezione Configurazione di un ambiente di sviluppo Java.

Node.js

npm install @google-cloud/compute

La versione precedente delle librerie client di Cloud per Node.js per Compute Engine è disponibile come versione 2.5.x o precedente nel pacchetto npm. Le versioni 2.5.x e precedenti di questa libreria non sono compatibili con le versioni successive.

Per ulteriori informazioni, consulta la sezione Configurare un ambiente di sviluppo Node.js.

PHP

composer require google/cloud-compute

Per ulteriori informazioni, consulta Utilizzo di PHP su Google Cloud.

Python

pip install --upgrade google-cloud-compute

Per ulteriori informazioni, consulta la sezione Configurazione di un ambiente di sviluppo Python.

Ruby

gem install google-cloud-compute-v1

Per ulteriori informazioni, consulta la sezione Configurazione di un ambiente di sviluppo Ruby.

Configura l'autenticazione

Per autenticare le chiamate alle API di Google Cloud, le librerie client supportano le credenziali predefinite dell'applicazione (ADC); le librerie cercano le credenziali in un insieme di località definite e le utilizzano per autenticare le richieste all'API. Con ADC, puoi rendere disponibili le credenziali per la tua applicazione in diversi ambienti, ad esempio lo sviluppo o la produzione locale, senza dover modificare il codice dell'applicazione.

Per gli ambienti di produzione, il modo in cui configuri ADC dipende dal servizio e dal contesto. Per ulteriori informazioni, vedi Configurare le credenziali predefinite dell'applicazione.

Per un ambiente di sviluppo locale, puoi configurare ADC con le credenziali associate al tuo Account Google:

  1. Installa e inizializza gcloud CLI.

    Quando inizializza gcloud CLI, assicurati di specificare un progetto Google Cloud in cui disponi dell'autorizzazione per accedere alle risorse necessarie per la tua applicazione.

  2. Crea il file delle credenziali:

    gcloud auth application-default login

    Viene visualizzata una schermata di accesso. Dopo aver eseguito l'accesso, le tue credenziali vengono archiviate nel file delle credenziali locali utilizzato da ADC.

Utilizzare la libreria client

L'esempio seguente mostra come utilizzare la libreria client per elencare le istanze in una determinata zona. Per altri esempi, consulta Utilizzo delle librerie client.

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

Risorse aggiuntive

C++

Il seguente elenco contiene i link ad altre risorse correlate alla libreria client per C++:

C#

Il seguente elenco contiene link ad altre risorse relative alla libreria client per C#:

Go

Il seguente elenco contiene i link ad altre risorse correlate alla libreria client di Go:

Java

Il seguente elenco contiene i link ad altre risorse correlate alla libreria client per Java:

Node.js

Il seguente elenco contiene i link ad altre risorse relative alla libreria client per Node.js:

PHP

Il seguente elenco contiene i link ad altre risorse correlate alla libreria client per PHP:

Python

Il seguente elenco contiene i link ad altre risorse relative alla libreria client per Python:

Ruby

Il seguente elenco contiene i link ad altre risorse relative alla libreria client per Ruby:

Librerie client precedenti

Le librerie client Cloud utilizzano il nostro modello di libreria client più recente e sono l'opzione consigliata per accedere alle API Cloud in modo programmatico.

Per i casi in cui non puoi utilizzare le librerie client di Cloud, sono disponibili le seguenti librerie client delle API di Google:

Lingua Libreria Risorse
Go Libreria client Go dell'API di Google Documentazione
Java Libreria client Java dell'API di Google Documentazione
JavaScript Libreria client JavaScript dell'API di Google Documentazione
.NET Libreria client .NET delle API di Google Documentazione
Node.js Libreria client Node.js dell'API di Google Documentazione
Objective-C Libreria client Objective-C dell'API di Google Documentazione
PHP Libreria client PHP dell'API di Google Documentazione
Python Libreria client Python dell'API di Google Documentazione
Ruby Libreria client Ruby dell'API di Google Documentazione
Dart Libreria client Dart dell'API di Google Documentazione

Librerie client dell'API Compute Engine di terze parti

libcloud

libcloud è una libreria Python utilizzata per interagire con più provider di servizi cloud tramite una singola API unificata.

Il progetto API Apache libcloud ha ricevuto supporto e aggiornamenti per Compute Engine da luglio 2013. Supporta un ampio set di funzionalità di Compute Engine, tra cui istanze, dischi, reti e bilanciatori del carico. La demo introduttiva fornisce un esempio di codice di come usare libcloud e Compute Engine insieme.

jcloud

jclouds è una libreria open source che consente di utilizzare Java e Clojure su più provider cloud.

L'API Cloud Jclouds supporta Compute Engine e consente di gestire risorse come macchine virtuali, dischi e reti. A partire dalla versione 1.9, Compute Engine è passato a jclouds core.

fog.io

fog.io è una libreria Ruby open source che consente di interagire con più servizi cloud tramite un'unica API.

L'API cloud fog.io supporta Compute Engine dalla versione 1.11.0 di maggio 2013. Supporta operazioni di istanza come creazione ed eliminazione, oltre a operazioni di gestione per altre risorse come dischi, reti e bilanciatori del carico.