Risoluzione dei problemi

In questa pagina vengono descritti i metodi per la risoluzione dei problemi comuni che potresti riscontrare durante l'utilizzo di Cloud Storage.

Consulta la dashboard dello stato dei servizi Google Cloud per informazioni sugli incidenti che interessano i servizi Google Cloud come Cloud Storage.

Logging delle richieste non elaborate

Quando utilizzi strumenti come gcloud o le librerie client di Cloud Storage, gran parte delle informazioni relative a richieste e risposte viene gestita dallo strumento. Tuttavia, a volte è utile visualizzare i dettagli che possano essere utili per la risoluzione dei problemi o quando si pubblicano domande su forum come Stack Overflow. Segui le istruzioni riportate di seguito per restituire le intestazioni di richiesta e risposta per il tuo strumento:

Console

La visualizzazione delle informazioni relative alle richieste e alle risposte dipende dal browser che utilizzi per accedere alla console Google Cloud. Per il browser Google Chrome:

  1. Fai clic sul pulsante del menu principale () di Chrome.

  2. Seleziona Altri strumenti.

  3. Fai clic su Developer Tools (Strumenti per sviluppatori).

  4. Nel riquadro visualizzato, fai clic sulla scheda Rete.

Riga di comando

Utilizza i flag di debug globali nella richiesta. Ad esempio:

gcloud storage ls gs://my-bucket/my-object --log-http --verbosity=debug

Librerie client

C++

  • Imposta la variabile di ambiente CLOUD_STORAGE_ENABLE_TRACING=http in modo da ricevere tutto il traffico HTTP.

  • Imposta la variabile di ambiente CLOUD_STORAGE_ENABLE_CLOG=yes per ottenere il logging di ogni RPC.

C#

Aggiungi un logger tramite ApplicationContext.RegisterLogger e imposta le opzioni di logging sul gestore di messaggi HttpClient. Per ulteriori informazioni, consulta la voce delle domande frequenti.

Go

Imposta la variabile di ambiente GODEBUG=http2debug=1. Per ulteriori informazioni, consulta la pagina Go Package net/http.

Se vuoi registrare anche il corpo della richiesta, utilizza un client HTTP personalizzato.

Java

  1. Crea un file denominato "logging.properties" con il seguente contenuto:

    # Properties file which configures the operation of the JDK logging facility.
    # The system will look for this config file to be specified as a system property:
    # -Djava.util.logging.config.file=${project_loc:googleplus-simple-cmdline-sample}/logging.properties
    
    # Set up the console handler (uncomment "level" to show more fine-grained messages)
    handlers = java.util.logging.ConsoleHandler
    java.util.logging.ConsoleHandler.level = CONFIG
    
    # Set up logging of HTTP requests and responses (uncomment "level" to show)
    com.google.api.client.http.level = CONFIG
  2. Utilizzare logging.properties con Maven

    mvn -Djava.util.logging.config.file=path/to/logging.properties insert_command

Per ulteriori informazioni, consulta la sezione Trasporto HTTP collegabile.

Node.js

Imposta la variabile di ambiente NODE_DEBUG=https prima di chiamare lo script dei nodi.

PHP

Fornisci il tuo gestore HTTP al client utilizzando httpHandler e configura il middleware per registrare la richiesta e la risposta.

Python

Utilizza il modulo di registrazione. Ad esempio:

import logging
import http.client

logging.basicConfig(level=logging.DEBUG)
http.client.HTTPConnection.debuglevel=5

Ruby

Nella parte superiore di .rb file dopo il giorno require "google/cloud/storage", aggiungi quanto segue:

ruby
Google::Apis.logger.level = Logger::DEBUG

Aggiungere intestazioni personalizzate

L'aggiunta di intestazioni personalizzate alle richieste è uno strumento comune per scopi di debug, ad esempio per attivare le intestazioni di debug o per tracciare una richiesta. L'esempio seguente mostra come impostare le intestazioni delle richieste per strumenti di Cloud Storage diversi:

Riga di comando

Usa il flag --additional-headers, disponibile per la maggior parte dei comandi. Ad esempio:

gcloud storage objects describe gs://my-bucket/my-object --additional-headers=HEADER_NAME=HEADER_VALUE

Dove HEADER_NAME e HEADER_VALUE definiscono l'intestazione che stai aggiungendo alla richiesta.

Librerie client

C++

namespace gcs = google::cloud::storage;
gcs::Client client = ...;
client.AnyFunction(... args ..., gcs::CustomHeader("header-name", "value"));

C#

Il seguente esempio aggiunge un'intestazione personalizzata a ogni richiesta effettuata dalla libreria client.

using Google.Cloud.Storage.V1;

var client = StorageClient.Create();
client.Service.HttpClient.DefaultRequestHeaders.Add("custom-header", "custom-value");

var buckets = client.ListBuckets("my-project-id");
foreach (var bucket in buckets)

{
  Console.WriteLine(bucket.Name);
}

Go

L'aggiunta di intestazioni personalizzate alle richieste effettuate dalla libreria client Go richiede il wrapping del trasporto utilizzato per il client con un RoundTripper personalizzato. L'esempio seguente invia le intestazioni di debug e registra le intestazioni della risposta corrispondenti:

package main

import (
  "context"
  "io/ioutil"
  "log"
  "net/http"

  "cloud.google.com/go/storage"
  "google.golang.org/api/option"
  raw "google.golang.org/api/storage/v1"
  htransport "google.golang.org/api/transport/http"
)

func main() {

  ctx := context.Background()

  // Standard way to initialize client:
  // client, err := storage.NewClient(ctx)
  // if err != nil {
  //      // handle error
  // }

  // Instead, create a custom http.Client.
  base := http.DefaultTransport
  trans, err := htransport.NewTransport(ctx, base, option.WithScopes(raw.DevstorageFullControlScope),
            option.WithUserAgent("custom-user-agent"))
  if err != nil {
            // Handle error.
  }
  c := http.Client{Transport:trans}

  // Add RoundTripper to the created HTTP client.
  c.Transport = withDebugHeader{c.Transport}

  // Supply this client to storage.NewClient
  client, err := storage.NewClient(ctx, option.WithHTTPClient(&c))
  if err != nil {
              // Handle error.
  }

  // Use client to make a request
 }

type withDebugHeader struct {
  rt http.RoundTripper
}

func (wdh withDebugHeader) RoundTrip(r *http.Request) (*http.Response, error) {
  headerName := "X-Custom-Header"
  r.Header.Add(headerName, "value")
  resp, err := wdh.rt.RoundTrip(r)
  if err == nil {
    log.Printf("Resp Header: %+v, ", resp.Header.Get(headerName))
  } else {
    log.Printf("Error: %+v", err)
  }
  return resp, err
}

Java

import com.google.api.gax.rpc.FixedHeaderProvider;
import com.google.api.gax.rpc.HeaderProvider;
import com.google.cloud.WriteChannel;
import com.google.cloud.storage.BlobInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

import java.io.IOException;
import java.nio.ByteBuffer;
import static java.nio.charset.StandardCharsets.UTF_8;

public class Example {

  public void main(String args[]) throws IOException {
    HeaderProvider headerProvider =
            FixedHeaderProvider.create("custom-header", "custom-value");
    Storage storage = StorageOptions.getDefaultInstance()
            .toBuilder()
            .setHeaderProvider(headerProvider)
            .build().getService();
    String bucketName = "example-bucket";
    String blobName = "test-custom-header";

    // Use client with custom header
    BlobInfo blob = BlobInfo.newBuilder(bucketName, blobName).build();
    byte[] stringBytes;
    try (WriteChannel writer = storage.writer(blob)) {
      stringBytes = "hello world".getBytes(UTF_8);
      writer.write(ByteBuffer.wrap(stringBytes));
    }
  }
}

Node.js

const storage = new Storage();

storage.interceptors.push({
  request: requestConfig => {
    Object.assign(requestConfig.headers, {
      'X-Custom-Header': 'value',
      });
    return requestConfig;
  },
});

PHP

Tutte le chiamate di metodi che attivano le richieste http accettano un argomento $restOptions facoltativo come ultimo argomento. Puoi fornire intestazioni personalizzate in base alle richieste o ai singoli clienti.

use Google\Cloud\Storage\StorageClient;

$client = new StorageClient([
   'restOptions' => [
       'headers' => [
           'x-foo' => 'bat'
       ]
   ]
]);

$bucket = $client->bucket('my-bucket');

$bucket->info([
   'restOptions' => [
       'headers' => [
           'x-foo' => 'bar'
       ]
   ]
]);

Python

L'aggiunta di intestazioni personalizzate alle richieste effettuate dalla libreria client Python non è attualmente supportata.

Ruby

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

storage.add_custom_headers { 'X-Custom-Header'=> 'value' }

Codici di errore

Di seguito sono riportati i codici di stato HTTP più comuni che potresti incontrare.

301: Spostato permanentemente

Problema: sto configurando un sito web statico e accedendo a un percorso della directory restituiscono un oggetto vuoto e un codice di risposta HTTP 301.

Soluzione: se il tuo browser scarica un oggetto a zero byte e ricevi un codice di risposta HTTP 301 quando accedi a una directory, come http://www.example.com/dir/, è molto probabile che il tuo bucket contenga un oggetto vuoto di quel nome. Per verificare se è così e risolvere il problema:

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Fai clic sul pulsante Attiva Cloud Shell nella parte superiore della console Google Cloud.
  3. Esegui gcloud storage ls --recursive gs://www.example.com/dir/. Se l'output include http://www.example.com/dir/, avrai un oggetto vuoto in quella posizione.
  4. Rimuovi l'oggetto vuoto con il comando: gcloud storage rm gs://www.example.com/dir/

Ora puoi accedere a http://www.example.com/dir/ e fare in modo che restituisca il file index.html di quella directory anziché l'oggetto vuoto.

400: richiesta non valida

Problema: durante l'esecuzione di un caricamento ripristinabile, ho ricevuto questo errore e il messaggio Failed to parse Content-Range header.

Soluzione: il valore utilizzato nell'intestazione Content-Range non è valido. Ad esempio, Content-Range: */* non è valido e deve invece essere specificato come Content-Range: bytes */*. Se visualizzi questo errore, significa che il caricamento corrente ripristinabile non è più attivo e devi avviare un nuovo caricamento ripristinabile.

401: Non autorizzato

Problema: le richieste inviate direttamente a un bucket pubblico o utilizzando Cloud CDN non riescono con una risposta HTTP 401: Unauthorized e Authentication Required.

Soluzione: verifica che il tuo client, o qualsiasi proxy intermedio, non aggiunga un'intestazione Authorization alle richieste a Cloud Storage. Qualsiasi richiesta con un'intestazione Authorization, anche se vuota, viene convalidata come se fosse un tentativo di autenticazione.

403: Account disattivato

Problema: ho provato a creare un bucket ma ho ricevuto un errore 403 Account Disabled.

Soluzione: questo errore indica che non hai ancora attivato la fatturazione per il progetto associato. Per la procedura di abilitazione della fatturazione, consulta Abilitare la fatturazione per un progetto.

Se la fatturazione è attiva, ma continui a ricevere questo messaggio di errore, puoi contattare l'assistenza indicando il tuo ID progetto e una descrizione del problema.

403: Accesso negato

Problema: dovrei avere l'autorizzazione per accedere a un determinato bucket o a un determinato oggetto, ma quando tento di farlo, ricevo un errore 403 - Forbidden con un messaggio simile a example@email.com does not have storage.objects.get access to the Google Cloud Storage object.

Soluzione: non disponi di un'autorizzazione IAM per il bucket o l'oggetto necessario per completare la richiesta. Se prevedi di poter effettuare la richiesta, ma non è possibile, esegui i seguenti controlli:

  1. Il beneficiario a cui viene fatto riferimento nel messaggio di errore è quello previsto? Se il messaggio di errore si riferisce a un indirizzo email imprevisto o a "Chiamante anonimo", significa che la richiesta non utilizza le credenziali desiderate. Il motivo potrebbe essere che lo strumento che stai utilizzando per effettuare la richiesta è stato configurato con le credenziali di un altro alias o entità oppure che la richiesta viene effettuata per tuo conto da un account di servizio.

  2. Ritieni che l'autorizzazione a cui si fa riferimento nel messaggio di errore ti servisse? Se l'autorizzazione non è prevista, è probabile che lo strumento che stai utilizzando richiede un accesso aggiuntivo per completare la richiesta. Ad esempio, per eliminare collettivamente gli oggetti in un bucket, gcloud deve prima creare un elenco di oggetti nel bucket da eliminare. Questa parte dell'azione di eliminazione collettiva richiede l'autorizzazione storage.objects.list, il che potrebbe sorprendere, dato che l'obiettivo è l'eliminazione degli oggetti, che in genere richiede solo l'autorizzazione storage.objects.delete. Se questa è la causa del messaggio di errore, assicurati che ti siano stati concessi i ruoli IAM che dispongono delle autorizzazioni aggiuntive necessarie.

  3. Ti è stato concesso il ruolo IAM per la risorsa o la risorsa padre previste? Ad esempio, se ti viene concesso il ruolo Storage Object Viewer per un progetto e stai tentando di scaricare un oggetto, assicurati che l'oggetto si trovi in un bucket presente nel progetto; potresti inavvertitamente avere l'autorizzazione Storage Object Viewer per un altro progetto.

  4. Hai l'autorizzazione ad accedere a un determinato bucket o oggetto tramite un valore di convenienza? La rimozione dell'accesso concesso a un valore di convenienza può causare la perdita dell'accesso alle risorse da parte delle entità abilitate in precedenza.

    Ad esempio, supponiamo che jane@example.com abbia il ruolo di base Proprietario (roles/owner) per un progetto denominato my-example-project e che il criterio IAM del progetto conceda il ruolo Autore oggetti Storage (roles/storage.objectCreator) al valore di convenienza projectOwner:my-example-project. Ciò significa che jane@example.com dispone delle autorizzazioni associate al ruolo Creatore oggetti Storage per i bucket all'interno di my-example-project. Se questa concessione viene rimossa, jane@example.com perde le autorizzazioni associate al ruolo Creatore oggetti Storage.

    In questo caso, puoi recuperare l'accesso al bucket o all'oggetto concedendoti le autorizzazioni necessarie a livello di bucket o di oggetto per eseguire le azioni richieste.

  5. Esiste un criterio di negazione IAM che impedisce di utilizzare determinate autorizzazioni? Puoi contattare l'amministratore della tua organizzazione per scoprire se è stato configurato un criterio di negazione IAM.

403: Accesso negato

Problema: sto scaricando i miei contenuti da storage.cloud.google.com e ricevo un errore 403: Forbidden quando utilizzo il browser per accedere all'oggetto utilizzando l'URL:

https://storage.cloud.google.com/BUCKET_NAME/OBJECT_NAME

Soluzione: l'utilizzo di storage.cloud.google.com per scaricare oggetti è noto come download del browser autenticati, che utilizza l'autenticazione basata su cookie. Se gli audit log di accesso ai dati in Cloud Audit Logs sono stati configurati per tenere traccia dell'accesso agli oggetti, una delle limitazioni di questa funzionalità è che non è possibile utilizzare i download autenticati del browser per scaricare un oggetto monitorato, a meno che non si verifichi una delle seguenti condizioni:

  • L'oggetto è leggibile pubblicamente
  • È in corso l'accesso all'oggetto dalla console Google Cloud

Qualsiasi altro tentativo di utilizzare un download del browser autenticato genera una risposta 403. Questa restrizione ha lo scopo di impedire il phishing per gli ID Google, che vengono utilizzati per l'autenticazione basata su cookie.

Per evitare che questo problema si verifichi, esegui una delle seguenti operazioni:

  • Utilizza le chiamate API dirette, che supportano i download non autenticati, anziché utilizzare i download autenticati del browser.
  • Disabilita gli audit log di accesso ai dati di Cloud Storage che monitorano l'accesso agli oggetti interessati. Tieni presente che gli audit log di accesso ai dati sono impostati al livello di progetto o a un livello superiore e possono essere abilitati contemporaneamente su più livelli.
  • Imposta esenzioni per escludere utenti specifici dal monitoraggio degli audit log di accesso ai dati, che consente a tali utenti di eseguire download autenticati del browser.
  • Rendi gli oggetti interessati pubblicamente leggibili, concedendo l'autorizzazione di lettura a allUsers o allAuthenticatedUsers. Gli audit log di accesso ai dati non registrano l'accesso agli oggetti pubblici.

409: Conflitto

Problema: ho provato a creare un bucket, ma ho ricevuto il seguente errore:

409 Conflict. Sorry, that name is not available. Please try a different one.

Soluzione: il nome del bucket che hai provato a utilizzare (ad es. gs://cats o gs://dogs) è già in uso. Cloud Storage dispone di uno spazio dei nomi globale, pertanto non puoi denominare un bucket con lo stesso nome di un bucket esistente. Scegli un nome che non venga utilizzato.

412: vincoli personalizzati violati

Problema: le mie richieste vengono rifiutate con un errore 412 orgpolicy.

Problema: le mie richieste vengono rifiutate con un errore 412 Multiple constraints were violated.

Soluzione: verifica con il team degli amministratori della sicurezza se il bucket a cui stai inviando le richieste è interessato da un criterio dell'organizzazione che utilizza un vincolo personalizzato. Il bucket potrebbe anche essere interessato da diversi criteri dell'organizzazione in conflitto tra loro. Ad esempio, dove un criterio specifica che i bucket devono avere la classe di archiviazione Standard e un altro criterio specifica che i bucket devono avere la classe Coldline Storage.

429: Troppe richieste

Problema: le mie richieste vengono rifiutate con un errore 429 Too Many Requests.

Soluzione: stai raggiungendo il numero massimo di richieste consentite da Cloud Storage per una determinata risorsa. Consulta le quote di Cloud Storage per una discussione sui limiti di Cloud Storage.

Diagnosi degli errori della console Google Cloud

Problema: quando utilizzo la console Google Cloud per eseguire un'operazione, viene visualizzato un messaggio di errore generico. Ad esempio, vedo un messaggio di errore quando provo a eliminare un bucket, ma non vedo i dettagli sul motivo per cui l'operazione non è riuscita.

Soluzione: utilizza le notifiche della console Google Cloud per visualizzare informazioni dettagliate sull'operazione non riuscita:

  1. Fai clic sul pulsante Notifiche () nell'intestazione della console Google Cloud.

    Un menu a discesa mostra le operazioni più recenti eseguite dalla console Google Cloud.

  2. Fai clic sull'elemento su cui vuoi avere ulteriori informazioni.

    Si apre una pagina contenente informazioni dettagliate sull'operazione.

  3. Fai clic su ciascuna riga per espandere le informazioni dettagliate sull'errore.

Problema: quando utilizzo la console Google Cloud, non viene visualizzata una colonna specifica.

Soluzione: per visualizzare una determinata colonna nella console Google Cloud, fai clic sull'icona Opzioni di visualizzazione delle colonne () e seleziona la colonna che vuoi visualizzare.

Cartelle simulate e cartelle gestite

Problema: ho eliminato alcuni oggetti nel bucket e ora la cartella che li conteneva non viene più visualizzata nella console Google Cloud.

Soluzione: sebbene la console Google Cloud visualizzi i contenuti del bucket come se esistesse una struttura di directory, in pratica le cartelle non esistono in Cloud Storage. Di conseguenza, quando rimuovi da un bucket tutti gli oggetti con un prefisso comune, l'icona della cartella che rappresenta quel gruppo di oggetti non viene più visualizzata nella console Google Cloud.

Problema: non riesco a creare cartelle gestite.

Soluzione: per creare cartelle gestite, assicurati che siano soddisfatti i seguenti requisiti:

  • Hai un ruolo IAM che contiene l'autorizzazione storage.managedfolders.create, ad esempio il ruolo Amministratore oggetti Storage (roles/storage.objectAdmin). Per istruzioni sulla concessione dei ruoli, consulta Utilizzare le autorizzazioni IAM.

  • L'accesso uniforme a livello di bucket è abilitato nel bucket in cui vuoi creare cartelle gestite.

  • Nel bucket o nel progetto non sono presenti condizioni IAM che utilizzano il tipo di risorsa bucket (storage.googleapis.com/Bucket) o il tipo di risorsa oggetto (storage.googleapis.com/Object). Se un bucket all'interno di un progetto ha una condizione IAM che utilizza uno di questi tipi di risorse, le cartelle gestite non possono essere create in nessuno dei bucket all'interno del progetto, anche se la condizione viene rimossa in un secondo momento.

Problema: non riesco a disattivare l'accesso uniforme a livello di bucket perché nel mio bucket esistono cartelle gestite.

Soluzione: l'accesso uniforme a livello di bucket non può essere disattivato se nel bucket sono presenti cartelle gestite. Per disabilitare l'accesso uniforme a livello di bucket, devi prima eliminare tutte le cartelle gestite nel bucket.

Errori del sito web statico

Di seguito sono riportati i problemi comuni che potresti riscontrare durante la configurazione di un bucket per l'hosting di un sito web statico.

Pubblicazione su HTTPS

Problema: voglio pubblicare i miei contenuti tramite HTTPS senza utilizzare un bilanciatore del carico.

Soluzione: puoi pubblicare contenuti statici tramite HTTPS utilizzando URI diretti come https://storage.googleapis.com/my-bucket/my-object. Per altre opzioni per pubblicare i tuoi contenuti tramite un dominio personalizzato tramite SSL, puoi:

Verifica del dominio

Problema: non riesco a verificare il mio dominio.

Soluzione: di solito, il processo di verifica in Search Console ti suggerisce di caricare un file nel tuo dominio, ma potresti non avere un modo per farlo senza prima avere un bucket associato, che puoi creare solo dopo aver eseguito la verifica del dominio.

In questo caso, verifica la proprietà utilizzando il metodo di verifica Provider del nome di dominio. Per conoscere la procedura da seguire, consulta Verifica della proprietà. Questa verifica può essere eseguita prima della creazione del bucket.

Pagina non accessibile

Problema: ricevo un messaggio di errore Access denied per una pagina web pubblicata dal mio sito web.

Soluzione: verifica che l'oggetto sia condiviso pubblicamente. In caso contrario, consulta Rendere pubblici i dati per istruzioni su come fare.

Se in precedenza hai caricato e condiviso un oggetto, ma poi ne carichi una nuova versione, devi ricondividerlo pubblicamente. in quanto l'autorizzazione pubblica viene sostituita con il nuovo caricamento.

Aggiornamento autorizzazione non riuscito

Problema: viene visualizzato un errore quando tento di rendere pubblici i miei dati.

Soluzione: assicurati di disporre dell'autorizzazione storage.buckets.setIamPolicy o storage.objects.setIamPolicy. Queste autorizzazioni vengono concesse, ad esempio, nel ruolo Amministratore archiviazione (roles/storage.admin). Se hai l'autorizzazione storage.buckets.setIamPolicy o l'autorizzazione storage.objects.setIamPolicy e ricevi ancora un errore, il tuo bucket potrebbe essere soggetto alla prevenzione dell'accesso pubblico, che non consente l'accesso a allUsers o allAuthenticatedUsers. La prevenzione dell'accesso pubblico può essere impostata direttamente sul bucket oppure applicata tramite un criterio dell'organizzazione impostato a un livello superiore.

Download di contenuti

Problema: mi viene chiesto di scaricare i contenuti della mia pagina anziché visualizzarli nel browser.

Soluzione: se specifichi un MainPageSuffix come oggetto che non ha un tipo di contenuti web, ai visitatori del sito viene chiesto di scaricare i contenuti anziché poter visualizzare i contenuti della pagina pubblicata. Per risolvere il problema, aggiorna la voce dei metadati Content-Type impostando un valore appropriato, ad esempio text/html. Per istruzioni, consulta la sezione Modificare i metadati degli oggetti.

Latenza

Di seguito sono riportati alcuni problemi di latenza comuni che potresti riscontrare. Inoltre, la dashboard dello stato dei servizi Google Cloud fornisce informazioni sugli incidenti che interessano i servizi Google Cloud come Cloud Storage.

Latenza di caricamento o download

Problema: noto una maggiore latenza durante il caricamento o il download.

Soluzione: considera le seguenti cause comuni della latenza di caricamento e download:

  • Vincoli di CPU o memoria: il sistema operativo dell'ambiente interessato deve disporre di strumenti per misurare il consumo di risorse locali, come l'utilizzo della CPU e della memoria.

  • Vincoli di I/O del disco: l'impatto sulle prestazioni potrebbe essere causato dall'I/O del disco locale.

  • Distanza geografica: le prestazioni possono essere influenzate dalla separazione fisica tra il bucket Cloud Storage e l'ambiente interessato, in particolare nei casi tra continenti. I test con un bucket situato nella stessa regione dell'ambiente interessato possono identificare in che misura la separazione geografica contribuisce alla latenza.

    • Se applicabile, il resolver DNS dell'ambiente interessato deve utilizzare il protocollo EDNS(0) in modo che le richieste dell'ambiente vengano instradate tramite un Google Front End appropriato.

Latenza dell'interfaccia a riga di comando o della libreria client

Problema: noto una maggiore latenza quando accedo a Cloud Storage con Google Cloud CLI o una delle librerie client.

Soluzione: gcloud CLI e le librerie client riprovano automaticamente le richieste quando è utile farlo e questo comportamento può aumentare in modo efficace la latenza per l'utente finale. Utilizza la metrica di Cloud Monitoring storage.googleapis.com/api/request_count per vedere se Cloud Storage fornisce costantemente un codice di risposta riprovabile, come 429 o 5xx.

Server proxy

Problema: mi sto connettendo tramite un server proxy. Cosa devo fare?

Soluzione: per accedere a Cloud Storage tramite un server proxy, devi consentire l'accesso a questi domini:

  • accounts.google.com per creare token di autenticazione OAuth2
  • oauth2.googleapis.com per eseguire scambi di token OAuth2
  • *.googleapis.com per le richieste di spazio di archiviazione

Se il tuo server proxy o i criteri di sicurezza non supportano l'inserimento nella lista consentita per dominio e invece supportano solo l'inserimento nella lista consentita per blocco di rete IP, ti consigliamo vivamente di configurare il server proxy per tutti gli intervalli di indirizzi IP di Google. Per trovare gli intervalli di indirizzi, esegui una query sui dati WHOIS su ARIN. Come best practice, dovresti controllare periodicamente le impostazioni del proxy per assicurarti che corrispondano agli indirizzi IP di Google.

Non è consigliabile configurare il proxy con indirizzi IP individuali che ottieni da ricerche una tantum di oauth2.googleapis.com e storage.googleapis.com. Poiché i servizi Google vengono esposti utilizzando nomi DNS mappati a un numero elevato di indirizzi IP che possono cambiare nel tempo, la configurazione del proxy in base a una ricerca una tantum può causare errori nella connessione a Cloud Storage.

Se le richieste vengono indirizzate attraverso un server proxy, potresti dover verificare con l'amministratore di rete che l'intestazione Authorization contenente le tue credenziali non venga rimossa dal proxy. Senza l'intestazione Authorization, le tue richieste vengono rifiutate e ricevi un errore MissingSecurityHeader.

Errori di Storage Insights

Problema: la configurazione dei report sull'inventario genera più report sull'inventario al giorno.

Soluzione: se il bucket contiene più di 1.000.000 di oggetti, è possibile generare più report sull'inventario come shard. La configurazione di un report di inventario genera un report di inventario ogni 1.000.000 di oggetti nel bucket. Ad esempio, se hai un bucket con 3.500.000 oggetti, la configurazione del report sull'inventario nel bucket genererà quattro shard del report sull'inventario in base alla frequenza specificata, insieme a un file manifest contenente il numero di shard dei report sull'inventario generati e i relativi nomi di file.

Problema: i report sull'inventario non vengono visualizzati nel bucket di destinazione.

Soluzione: se hai creato una configurazione di report sull'inventario e non visualizzi i report sull'inventario generati nel bucket di destinazione, verifica quanto segue:

  • Assicurati che la data di inizio specificata nella configurazione del report sull'inventario corrisponda alle tue aspettative per la generazione dei report sull'inventario. Per istruzioni su come specificare una data di inizio, consulta Creare una configurazione di report sull'inventario.

  • Visualizzare la cronologia dei report sull'inventario per verificare la presenza di errori e le relative cause principali. Per visualizzare la cronologia dei report sull'inventario, segui questi passaggi:

    1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

      Vai a Bucket

    2. Nell'elenco dei bucket, fai clic sul nome del bucket di origine che contiene la configurazione del report sull'inventario.

    3. Nella pagina Dettagli bucket, fai clic sulla scheda Report sull'inventario.

    4. Nell'elenco delle configurazioni dei report sull'inventario, fai clic sull'UUID della configurazione che ha generato i report da verificare.

    5. Verifica la presenza di errori nella sezione Cronologia dei report sull'inventario. Puoi tenere premuto il puntatore sulla Guida () per visualizzare i dettagli sul motivo per cui si è verificato un errore.

  • Accertati che all'agente di servizio a livello di progetto siano concessi i ruoli IAM richiesti per la lettura e la scrittura di report sull'inventario. Per le istruzioni, consulta Concedere i ruoli richiesti all'agente di servizio.

Problema: vedo ritardi casuali nella generazione dei report sull'inventario.

Soluzione: l'intervallo di tempo tra la generazione dei report sull'inventario può variare. Potresti notare un ritardo fino a un giorno.

Passaggi successivi