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:
Fai clic sul pulsante del menu principale (more_vert) di Chrome.
Seleziona Altri strumenti.
Fai clic su Developer Tools (Strumenti per sviluppatori).
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
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
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:
- Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.
- Fai clic sul pulsante Attiva Cloud Shell nella parte superiore della console Google Cloud.
- Esegui
gcloud storage ls --recursive gs://www.example.com/dir/
. Se l'output includehttp://www.example.com/dir/
, avrai un oggetto vuoto in quella posizione. - 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:
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.
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'autorizzazionestorage.objects.list
, il che potrebbe sorprendere, dato che l'obiettivo è l'eliminazione degli oggetti, che in genere richiede solo l'autorizzazionestorage.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.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'autorizzazioneStorage Object Viewer
per un altro progetto.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 denominatomy-example-project
e che il criterio IAM del progetto conceda il ruolo Autore oggetti Storage (roles/storage.objectCreator
) al valore di convenienzaprojectOwner:my-example-project
. Ciò significa che jane@example.com dispone delle autorizzazioni associate al ruolo Creatore oggetti Storage per i bucket all'interno dimy-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.
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
oallAuthenticatedUsers
. 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.
Se il carico di lavoro è costituito da migliaia di richieste al secondo a un bucket, consulta le linee guida su percentuali di richieste e distribuzione degli accessi per una discussione sulle best practice, tra cui l'aumento graduale del carico di lavoro ed evitare nomi file sequenziali.
Se il tuo carico di lavoro utilizza potenzialmente almeno 50 Gbps di traffico di rete in uscita verso località specifiche, verifica l'utilizzo della larghezza di banda per assicurarti di non rilevare una quota di larghezza di banda.
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:
Fai clic sul pulsante Notifiche (notifications) nell'intestazione della console Google Cloud.
Un menu a discesa mostra le operazioni più recenti eseguite dalla console Google Cloud.
Fai clic sull'elemento su cui vuoi avere ulteriori informazioni.
Si apre una pagina contenente informazioni dettagliate sull'operazione.
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:
- Utilizza una rete CDN (Content Delivery Network) di terze parti con Cloud Storage.
- Pubblica i contenuti statici del tuo sito web da Firebase Hosting anziché da Cloud Storage.
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 OAuth2oauth2.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:
- Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.
Nell'elenco dei bucket, fai clic sul nome del bucket di origine che contiene la configurazione del report sull'inventario.
Nella pagina Dettagli bucket, fai clic sulla scheda Report sull'inventario.
Nell'elenco delle configurazioni dei report sull'inventario, fai clic sull'UUID della configurazione che ha generato i report da verificare.
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.
- Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.
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
- Scopri le opzioni di assistenza.
- Per altre domande, consulta le Domande frequenti su Cloud Storage.
- Scopri come Error Reporting può aiutarti a identificare e comprendere gli errori di Cloud Storage.