Questa pagina descrive i metodi di risoluzione dei problemi relativi agli errori comuni che potresti riscontrare durante l'utilizzo di Cloud Storage.
Consulta la dashboard di Service Health per informazioni sugli incidenti che interessano i servizi Google Cloud , come Cloud Storage.Google Cloud
Registrazione delle richieste non elaborate
Quando utilizzi strumenti come gcloud
o le librerie client di Cloud Storage, gran parte delle informazioni su richieste e risposte vengono gestite dallo strumento. Tuttavia, a volte è utile visualizzare i dettagli per facilitare la risoluzione dei problemi o quando si pubblicano domande su forum come Stack Overflow. Utilizza le
seguenti istruzioni per restituire le intestazioni di richiesta e risposta per il tuo strumento:
Console
La visualizzazione delle informazioni su richieste e risposte dipende dal browser che utilizzi per accedere alla console Google Cloud . Per il browser Google Chrome:
Fai clic sul pulsante del menu principale di Chrome (more_vert).
Seleziona Altri strumenti.
Fai clic su 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
per ottenere il traffico HTTP completo.Imposta la variabile di ambiente CLOUD_STORAGE_ENABLE_CLOG=yes per ottenere la registrazione di ogni RPC.
C#
Aggiungi un logger tramite ApplicationContext.RegisterLogger
e imposta le opzioni di logging nel gestore dei messaggi HttpClient
. Per saperne di più, consulta la documentazione di riferimento della libreria client C#.
Vai
Imposta la variabile di ambiente GODEBUG=http2debug=1
. Per ulteriori
informazioni, consulta la pagina net/http del pacchetto Go.
Se vuoi registrare anche il corpo della richiesta, utilizza un client HTTP personalizzato.
Java
Crea un file denominato "logging.properties" con i seguenti contenuti:
# 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 Pluggable HTTP Transport.
Node.js
Imposta la variabile di ambiente NODE_DEBUG=https
prima di chiamare lo script Node.
PHP
Fornisci al client il tuo gestore HTTP utilizzando
httpHandler
e configura il middleware per registrare la richiesta
e la risposta.
Python
Utilizza il modulo di logging. Ad esempio:
import logging import http.client logging.basicConfig(level=logging.DEBUG) http.client.HTTPConnection.debuglevel=5
Ruby
Nella parte superiore del file .rb file
dopo require "google/cloud/storage"
,
aggiungi quanto segue:
ruby Google::Apis.logger.level = Logger::DEBUG
Aggiunta di intestazioni personalizzate
L'aggiunta di intestazioni personalizzate alle richieste è uno strumento comune per il 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 diversi strumenti Cloud Storage:
Riga di comando
Utilizza 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);
}
Vai
Puoi aggiungere intestazioni personalizzate a qualsiasi chiamata API effettuata dal pacchetto Storage utilizzando callctx.SetHeaders nel contesto passato al metodo.
package main
import (
"context"
"cloud.google.com/go/storage"
"github.com/googleapis/gax-go/v2/callctx"
)
func main() {
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil {
// Handle error.
}
ctx = callctx.SetHeaders(ctx, "X-Custom-Header", "value")
// Use client as usual with the context and the additional headers will be sent.
_, err = client.Bucket("my-bucket").Attrs(ctx)
if err != nil {
// Handle error.
}
}
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 ai metodi che attivano richieste HTTP accettano un argomento $restOptions
facoltativo come ultimo argomento. Puoi fornire intestazioni
personalizzate in base alle singole richieste o ai singoli client.
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
from google.cloud import storage
client = storage.Client(
extra_headers={
"x-custom-header": "value"
}
)
Ruby
require "google/cloud/storage"
storage = Google::Cloud::Storage.new
storage.add_custom_headers { 'X-Custom-Header'=> 'value' }
Accesso ai bucket con una configurazione CORS
Se hai impostato una configurazione CORS sul tuo bucket e noti che le richieste in entrata dai browser client non vanno a buon fine, prova a seguire questi passaggi per la risoluzione dei problemi:
Esamina la configurazione CORS nel bucket di destinazione. Se sono presenti più voci di configurazione CORS, assicurati che i valori della richiesta che utilizzi per la risoluzione dei problemi siano mappati ai valori di una singola voce di configurazione CORS.
Quando testi l'emissione di una richiesta CORS, verifica di non inviare una richiesta all'endpoint
storage.cloud.google.com
, che non consente le richieste CORS. Per ulteriori informazioni sugli endpoint supportati per CORS, consulta Supporto CORS di Cloud Storage.Esamina una richiesta e una risposta utilizzando lo strumento che preferisci. In un browser Chrome, puoi utilizzare gli strumenti per sviluppatori standard per visualizzare queste informazioni:
- Fai clic sul menu Chrome (more_vert) nella barra degli strumenti del browser.
- Seleziona Altri strumenti > Strumenti per sviluppatori.
- Fai clic sulla scheda Rete.
- Invia la richiesta dall'applicazione o dalla riga di comando.
- Nel riquadro che mostra l'attività di rete, individua la richiesta.
- Nella colonna Nome, fai clic sul nome corrispondente alla richiesta.
- Fai clic sulla scheda Intestazioni per visualizzare le intestazioni di risposta o sulla scheda Risposta per visualizzare i contenuti della risposta.
Se non vedi una richiesta e una risposta, è possibile che il browser abbia memorizzato nella cache un tentativo precedente di richiesta di preflight non riuscito. Svuotando la cache del browser, dovrebbe essere svuotata anche la cache del controllo preliminare. In caso contrario, imposta il valore
MaxAgeSec
nella configurazione CORS su un valore inferiore al valore predefinito di1800
(30 minuti), attendi il tempo di scadenza del vecchioMaxAgeSec
, poi riprova a inviare la richiesta. Viene eseguita una nuova richiesta di preflight, che recupera la nuova configurazione CORS ed elimina le voci della cache. Una volta eseguito il debug del problema, aumenta il valore diMaxAgeSec
per ridurre il traffico di preflight nel bucket.Assicurati che la richiesta abbia un'intestazione
Origin
e che il valore dell'intestazione corrisponda ad almeno uno dei valoriOrigins
nella configurazione CORS del bucket. Tieni presente che lo schema, l'host e la porta dei valori devono corrispondere esattamente. Ecco alcuni esempi di corrispondenze accettabili:http://origin.example.com
corrisponde ahttp://origin.example.com:80
(perché 80 è la porta HTTP predefinita), ma non corrisponde ahttps://origin.example.com
,http://origin.example.com:8080
,http://origin.example.com:5151
ohttp://sub.origin.example.com
.https://example.com:443
corrisponde ahttps://example.com
, ma non ahttp://example.com
ohttp://example.com:443
.http://localhost:8080
corrisponde esattamente solo ahttp://localhost:8080
e non corrisponde ahttp://localhost:5555
ohttp://localhost.example.com:8080
.
Per le richieste semplici, assicurati che il metodo HTTP della richiesta corrisponda ad almeno uno dei valori
Methods
nella configurazione CORS del bucket. Per le richieste preflight, assicurati che il metodo specificato inAccess-Control-Request-Method
corrisponda ad almeno uno dei valoriMethods
.Per le richieste di preflight, verifica se include una o più intestazioni
Access-Control-Request-Header
. In questo caso, assicurati che ogni valoreAccess-Control-Request-Header
corrisponda a un valoreResponseHeader
nella configurazione CORS del bucket. Tutte le intestazioni denominate inAccess-Control-Request-Header
devono essere presenti nella configurazione CORS affinché la richiesta preflight vada a buon fine e includa le intestazioni CORS nella risposta.
Codici di errore
Di seguito sono riportati i codici di stato HTTP comuni che potresti riscontrare.
301: Spostato permanentemente
Problema: sto configurando un sito web statico e l'accesso a un percorso di directory
restituisce un oggetto vuoto e un codice di risposta HTTP 301
.
Soluzione: se il browser scarica un oggetto di zero byte e ricevi un codice di risposta HTTP 301
quando accedi a una directory, ad esempio
http://www.example.com/dir/
, molto probabilmente il bucket contiene un oggetto vuoto
con quel nome. Per verificare che sia questo il problema e risolverlo:
- Nella console Google Cloud , vai alla pagina Bucket in 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/
, in quella posizione è presente un oggetto vuoto. - 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 questa directory anziché l'oggetto vuoto.
400: Richiesta errata
Problema: durante l'esecuzione di un caricamento ripristinabile, ho ricevuto questo errore e
il messaggio Failed to parse Content-Range header.
Soluzione: il valore che hai utilizzato nell'intestazione Content-Range
non è valido. Ad esempio, Content-Range: */*
non è valido e deve essere specificato come Content-Range: bytes */*
. Se ricevi questo errore, il caricamento
ripristinabile corrente non è più attivo e devi avviare un nuovo caricamento ripristinabile.
400: Errori specifici di Storage Intelligence
Le sezioni seguenti descrivono gli errori comuni che potresti riscontrare quando configuri o gestisci Storage Intelligence per una risorsa.
400: Invalid Bucket Name
Problema: quando configuri o gestisci Storage Intelligence per una risorsa, potresti ricevere questo errore e il messaggio The specific bucket is not valid.
Soluzione: l'URL utilizzato nella richiesta non è valido. L'URL deve soddisfare i seguenti requisiti:
locations/global
è l'unica località supportata per Storage Intelligence. L'utilizzo di qualsiasi altra posizione non è supportato.Storage Intelligence
è al singolare nell'URL, non al plurale.
Di seguito è riportato un esempio di URL valido:
curl -X PATCH -H "Content-Type: application/json" -d '{"edition_config": "STANDARD" }' -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://storage.googleapis.com/v2/projects/my-project/locations/global/storageIntelligence?updateMask=edition_config"
400: Argomento non valido - Maschera di aggiornamento vuota
Problema: quando configuri o gestisci Storage Intelligence per una risorsa, potresti ricevere questo errore e il messaggio Empty UPDATE_MASK in the request.
Soluzione: UPDATE_MASK
è l'elenco separato da virgole dei nomi dei campi che la
richiesta aggiorna. I nomi dei campi utilizzano il formato
FieldMask
e fanno parte della risorsa
StorageIntelligence
. Per aggiornare la configurazione di Storage Intelligence di una risorsa, utilizza un UPDATE_MASK
valido nella richiesta. Un
valore vuoto non è supportato.
400: Invalid Update Mask Path
Problema: quando configuri o gestisci Storage Intelligence per una risorsa, potresti ricevere questo errore e il messaggio Invalid UPDATE_MASK paths.
Soluzione: se utilizzi un nome di campo non valido in UPDATE_MASK
, riceverai un
messaggio di errore. UPDATE_MASK
è l'elenco separato da virgole dei nomi dei campi che
la richiesta aggiorna. I nomi dei campi utilizzano il formato
FieldMask
e fanno parte della risorsa
IntelligenceConfig
.
Per aggiornare la configurazione di Storage Intelligence di una risorsa, assicurati
che ogni nome di campo elencato in UPDATE_MASK
sia un campo valido all'interno della
risorsa IntelligenceConfig
.
400: Field Is Not Editable
Problema: quando configuri o gestisci Storage Intelligence per una risorsa, potresti ricevere questo errore e il messaggio Invalid UPDATE_MASK: UPDATE_TIME field is not editable.
Soluzione: UPDATE_MASK
è l'elenco separato da virgole dei nomi dei campi che la
richiesta aggiorna. I nomi dei campi utilizzano il formato
FieldMask
e fanno parte della risorsa
IntelligenceConfig
. Se provi ad aggiornare un campo non modificabile, viene visualizzato un messaggio di errore. Rimuovi il campo non modificabile da Update_Mask
e riprova.
400: Valore non valido
Problema: quando configuri o gestisci Storage Intelligence per una risorsa, potresti ricevere questo errore e il messaggio Invalid value at storage_intelligence.edition_config.
Soluzione: se provi a utilizzare un valore non valido per il campo edition_config
,
viene visualizzato un messaggio di errore. I valori consentiti sono INHERIT
, STANDARD
e
DISABLED
. Rivedi il valore e riprova.
400: Filtro non vuoto
Problema: quando aggiorni la configurazione di Storage Intelligence per una risorsa, potresti ricevere questo errore e il messaggio Non-empty filter cannot be specified for INHERIT or DISABLED edition configuration.
Soluzione: quando aggiorni Storage Intelligence edition_config
alla versione INHERIT
o DISABLED
, non puoi utilizzare alcun filtro per bucket nella richiesta. Rimuovi i filtri dalla richiesta e riprova.
400: Valori di località o bucket vuoti nel filtro
Problema: quando aggiorni la configurazione di Storage Intelligence per una risorsa, potresti ricevere questo errore e il messaggio Empty location or bucket values in filter.
Soluzione: quando aggiorni la configurazione di Storage Intelligence e utilizzi un filtro
bucket nella richiesta, si verifica un errore se il valore di location
o
bucket
è una stringa vuota. Specifica un valore valido per location
o bucket
e
riprova.
401: Non autorizzato
Problema: le richieste a un bucket pubblico direttamente o tramite Cloud CDN non vanno a buon fine e restituiscono una risposta HTTP 401: Unauthorized
e Authentication Required
.
Soluzione: verifica che il 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 l'errore 403 Account Disabled
.
Soluzione: questo errore indica che non hai ancora attivato la fatturazione per il progetto associato. Per i passaggi per abilitare la fatturazione, vedi Abilitare la fatturazione per un progetto.
Se la fatturazione è attiva e continui a ricevere questo messaggio di errore, puoi contattare l'assistenza indicando il tuo ID progetto e una descrizione del problema.
403: Forbidden
Problema: dovrei avere l'autorizzazione per accedere a un determinato bucket o 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: ti manca un'autorizzazione IAM per il bucket o l'oggetto necessaria per completare la richiesta. Se prevedi di poter effettuare la richiesta, ma non riesci, esegui i seguenti controlli:
Il destinatario menzionato nel messaggio di errore è quello che ti aspettavi? Se il messaggio di errore si riferisce a un indirizzo email imprevisto o a "Chiamante anonimo", la tua richiesta non utilizza le credenziali che intendevi. Ciò potrebbe essere dovuto al fatto che lo strumento che utilizzi per effettuare la richiesta è stato configurato con le credenziali di un altro alias o entità oppure perché la richiesta viene effettuata per tuo conto da un service account.
L'autorizzazione a cui viene fatto riferimento nel messaggio di errore è una di quelle che ritieni necessarie? Se l'autorizzazione è inattesa, è probabile che lo strumento che stai utilizzando richieda un accesso aggiuntivo per completare la tua richiesta. Ad esempio, per eliminare in blocco 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 normalmente richiede solo l'autorizzazionestorage.objects.delete
. Se questa è la causa del messaggio di errore, assicurati di disporre dei ruoli IAM che dispongono delle autorizzazioni aggiuntive necessarie.Ti è stato concesso il ruolo IAM sulla risorsa di destinazione o sulla risorsa padre? 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 del progetto; potresti avere inavvertitamente l'autorizzazioneStorage Object Viewer
per un altro progetto.L'autorizzazione di accesso a un determinato bucket o oggetto è concessa tramite un valore di convenienza? La rimozione dell'accesso concesso a un valore di praticità può causare la perdita dell'accesso alle risorse per le 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 di Creatore oggetti Storage (roles/storage.objectCreator
) al valore di praticitàprojectOwner: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 riacquisire l'accesso al bucket o all'oggetto concedendoti le autorizzazioni a livello di bucket o di oggetto necessarie per eseguire le azioni che ti servono.
Esiste un criterio di negazione IAM che ti impedisce di utilizzare determinate autorizzazioni? Puoi contattare l'amministratore della tua organizzazione per scoprire se è stata implementata una policy IAM Deny.
403: Autorizzazione negata
Problema: errore di autorizzazione negata quando configuri o gestisci la configurazione di Storage Intelligence per una risorsa.
Soluzione: se ricevi un errore di autorizzazione negata con un messaggio simile a permission
storage.intelligenceConfigs.update
quando configuri e gestisci
Storage Intelligence per una risorsa, consulta la sezione delle autorizzazioni per l'operazione che vuoi eseguire. Per risolvere il problema,
concedi le autorizzazioni appropriate. Puoi concedere le autorizzazioni in uno dei seguenti modi:
- Concedi le autorizzazioni IAM nella stessa risorsa Google Cloud gerarchia di risorse in cui stai abilitando Storage Intelligence.
- Assicurati che una risorsa di livello superiore nella gerarchia delle risorse Google Cloud trasferisca le autorizzazioni alla risorsa secondaria.
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 bucket che hai tentato di utilizzare (ad es. gs://cats
o gs://dogs
)
è già in uso. Cloud Storage ha uno spazio dei nomi globale, quindi non puoi
denominare un bucket con lo stesso nome di un bucket esistente. Scegli un nome che non sia
in uso.
412: Violazione dei vincoli personalizzati
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 di amministratori della sicurezza se il bucket a cui invii le richieste è interessato da una policy dell'organizzazione che utilizza un vincolo personalizzato. Il bucket potrebbe essere interessato anche da diverse norme dell'organizzazione in conflitto tra loro. Ad esempio, una norma specifica che i bucket devono avere la classe di archiviazione Standard, mentre un'altra norma specifica che i bucket devono avere la classe di archiviazione Coldline.
429: Too Many Requests
Problema: le mie richieste vengono rifiutate con un errore 429 Too Many Requests
.
Soluzione: stai raggiungendo un limite al numero di richieste che Cloud Storage consente per una determinata risorsa. Consulta le quote di Cloud Storage per una discussione sui limiti in Cloud Storage.
Se il tuo workload è costituito da migliaia di richieste al secondo a un bucket, consulta le linee guida per la distribuzione della frequenza delle richieste e dell'accesso per una discussione sulle best practice, tra cui l'aumento graduale del workload ed evitare nomi file sequenziali.
Se il tuo workload utilizza potenzialmente 50 Gbps o più di traffico di rete in uscita verso posizioni specifiche, controlla l'utilizzo della larghezza di banda per assicurarti di non superare una quota di larghezza di banda.
Diagnostica degli Google Cloud errori della console
Problema: quando utilizzo la console Google Cloud per eseguire un'operazione, ricevo un messaggio di errore generico. Ad esempio, visualizzo 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 consoleGoogle Cloud .
Fai clic sull'elemento di cui vuoi saperne di più.
Si apre una pagina che mostra informazioni dettagliate sull'operazione.
Fai clic su ogni riga per espandere le informazioni dettagliate sull'errore.
Problema: quando utilizzo la console Google Cloud , non vedo una determinata colonna visualizzata.
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 mio bucket e ora la cartella che li conteneva non viene visualizzata nella console Google Cloud .
Soluzione: anche se la console Google Cloud mostra i contenuti del bucket come se esistesse una struttura di directory, le cartelle non esistono fondamentalmente in Cloud Storage. Di conseguenza, quando rimuovi tutti gli oggetti con un prefisso comune da un bucket, 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.
Non sono presenti condizioni IAM nel bucket o nel progetto 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, non è possibile creare cartelle gestite in nessuno dei bucket all'interno di quel 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 sono presenti cartelle gestite.
Soluzione: l'accesso uniforme a livello di bucket non può essere disattivato se nel bucket sono presenti cartelle gestite. Per disattivare 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 alcuni problemi comuni che potresti riscontrare quando configuri un bucket per ospitare un sito web statico.
Pubblicazione tramite 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 su SSL, puoi:
- Utilizza una Content Delivery Network di terze parti con Cloud Storage.
- Pubblica i contenuti del tuo sito web statico da Firebase Hosting anziché da Cloud Storage.
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 la sezione Rendere pubblici i dati per istruzioni su come procedere.
Se in precedenza hai caricato e condiviso un oggetto, ma poi ne carichi una nuova versione, devi ricondividere l'oggetto pubblicamente. Questo perché l'autorizzazione pubblica viene sostituita con il nuovo caricamento.
Download di contenuti
Problema: mi viene chiesto di scaricare i contenuti della pagina, anziché poterli visualizzare nel browser.
Soluzione: se specifichi un MainPageSuffix
come oggetto che non ha
un tipo di contenuto web, ai visitatori del sito viene chiesto di scaricare i contenuti anziché
di visualizzare i contenuti della pagina pubblicata. Per risolvere il problema, aggiorna la voce dei metadati
Content-Type
con un valore appropriato, ad esempio text/html
.
Per le istruzioni, vedi Modificare i metadati degli oggetti.
Pubblicazione dei dati
Problema: sto cercando di rendere pubblici i miei dati, ma ricevo un errore relativo alle norme dell'organizzazione.
Soluzione: alcuni vincoli dei criteri dell'organizzazione possono impedirti di
rendere pubblici i tuoi dati. Ad esempio, il vincolo di condivisione limitata per i domini
(constraints/iam.allowedPolicyMemberDomains
) limita la condivisione delle risorse in base
al dominio dell'organizzazione. Per gli errori delle policy dell'organizzazione, contatta l'amministratore per concederti le autorizzazioni a livello di progetto o bucket per consentire la condivisione delle risorse modificando la policy dell'organizzazione per la risorsa organizzazione, cartella o progetto. Se continui a visualizzare questo errore dopo aver
ignorato il criterio dell'organizzazione, potrebbe essere necessario attendere qualche minuto
affinché la modifica diventi effettiva.
Problema: ricevo un errore di autorizzazione quando tento di rendere pubblici i miei dati.
Soluzione: assicurati di disporre dell'autorizzazione storage.buckets.setIamPolicy
o dell'autorizzazione storage.objects.setIamPolicy
. Queste autorizzazioni
vengono concesse, ad esempio, nel
ruolo Amministratore spazio di archiviazione (roles/storage.admin
). Se disponi dell'autorizzazione
storage.buckets.setIamPolicy
o dell'autorizzazione storage.objects.setIamPolicy
e continui a visualizzare un errore, il bucket potrebbe essere soggetto alla
prevenzione dell'accesso pubblico, che non consente l'accesso a allUsers
o
allAuthenticatedUsers
. La prevenzione dell'accesso pubblico potrebbe essere impostata direttamente sul bucket oppure potrebbe essere applicata tramite un criterio dell'organizzazione impostato a un livello superiore.
Latenza
Di seguito sono riportati alcuni problemi comuni di latenza che potresti riscontrare. Inoltre, la Google Cloud dashboard dello stato del servizio fornisce informazioni sugli incidenti che interessano i servizi Google Cloud come Cloud Storage.
Latenza di caricamento o download
Problema: riscontro una maggiore latenza durante il caricamento o il download.
Soluzione: considera le seguenti cause comuni di 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 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 del bucket Cloud Storage e dell'ambiente interessato, in particolare nei casi intercontinentali. 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 indirizzate tramite un Google Front End appropriato.
Latenza dell'interfaccia a riga di comando o della libreria client
Problema: riscontro una latenza maggiore quando accedo a Cloud Storage con Google Cloud CLI o una delle librerie client.
Soluzione: la gcloud CLI e le librerie client
riprovano automaticamente le richieste quando è utile farlo e questo comportamento
può aumentare efficacemente la latenza dal punto di vista dell'utente finale. Utilizza la metrica
Cloud Monitoring storage.googleapis.com/api/request_count
per
verificare se Cloud Storage restituisce costantemente un codice di risposta ripetibile, ad esempio 429
o 5xx
.
Server proxy
Problema: mi connetto tramite un server proxy. Che cosa devo fare?
Soluzione: per accedere a Cloud Storage tramite un server proxy, devi consentire l'accesso a questi domini:
accounts.google.com
per la creazione di 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 la tua norma di sicurezza non supporta l'inserimento nella lista consentita per dominio e supporta 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. Puoi trovare gli intervalli di indirizzi eseguendo query sui dati WHOIS all'indirizzo ARIN. Come best practice, devi rivedere periodicamente le impostazioni proxy per assicurarti che corrispondano agli indirizzi IP di Google.
Sconsigliamo di configurare il proxy con singoli indirizzi IP ottenuti da ricerche una tantum di oauth2.googleapis.com
e storage.googleapis.com
. Poiché i servizi Google sono esposti utilizzando nomi DNS
che mappano un numero elevato di indirizzi IP che possono cambiare nel tempo,
la configurazione del proxy in base a una ricerca una tantum potrebbe comportare errori di
connessione a Cloud Storage.
Se le tue richieste vengono indirizzate tramite un server proxy, potresti dover
contattare l'amministratore di rete per assicurarti 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 mia configurazione dei report sull'inventario genera più report sull'inventario ogni giorno.
Soluzione: se hai più di 1.000.000 di oggetti nel bucket, è possibile generare più report sull'inventario come shard. Una configurazione di report sull'inventario genera un report sull'inventario per ogni milione di oggetti nel bucket. Ad esempio, se hai un bucket con 3.500.000 oggetti, la configurazione del report di inventario sul bucket genererà quattro segmenti del report di inventario in base alla frequenza specificata, insieme a un file manifest che contiene il numero di segmenti del report di inventario generati e i relativi nomi file.
Problema: i report sull'inventario non vengono visualizzati nel bucket di destinazione.
Soluzione: se hai creato una configurazione dei report di inventario e non vedi i report di inventario generati nel bucket di destinazione, controlla quanto segue:
Assicurati che la data di inizio specificata nella configurazione del report sull'inventario corrisponda alle tue aspettative in merito alla generazione dei report sull'inventario. Per istruzioni su come specificare una data di inizio, consulta Creare una configurazione di report dell'inventario.
Visualizza 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:
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
Nell'elenco dei bucket, fai clic sul nome del bucket di origine contenente la configurazione del report sull'inventario.
Nella pagina Dettagli bucket, fai clic sulla scheda Report inventario.
Nell'elenco delle configurazioni dei report sull'inventario, fai clic sull'UUID della configurazione dei report sull'inventario che ha generato i report che vuoi controllare.
Controlla la presenza di errori nella sezione Cronologia report inventario. Puoi tenere il puntatore del mouse su Guida (
) per visualizzare i dettagli sul motivo per cui si è verificato un errore.
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
Assicurati che all'agente di servizio a livello di progetto vengano concessi i ruoli IAM richiesti per leggere e scrivere i report sull'inventario. Per istruzioni, vedi Concedere i ruoli richiesti all'agente di servizio.
Problema: riscontro 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
- Trova le risposte ad altre domande nelle Domande frequenti su Cloud Storage.
- Scopri le opzioni di assistenza.
- Scopri come Error Reporting può aiutarti a identificare e comprendere gli errori di Cloud Storage.