In questa pagina vengono descritti i metodi di risoluzione degli errori comuni che si potrebbero verificare durante l'utilizzo di Cloud Storage.
Per informazioni su come funziona, consulta la dashboard di Google Cloud Service Health 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,
delle informazioni sulle richieste e sulle risposte vengono gestite dallo strumento. Tuttavia,
a volte è utile visualizzare dettagli utili per la risoluzione dei problemi o durante la pubblicazione
domande a forum come Stack Overflow. Utilizza la
che seguono le istruzioni per restituire le intestazioni di richiesta e risposta per il tuo strumento:
Console
La visualizzazione delle informazioni sulle richieste e sulle 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 Developer Tools (Strumenti per sviluppatori).
Nel riquadro visualizzato, fai clic sulla scheda Rete.
Riga di comando
Usa i flag di debug globali nella tua 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
su per ricevere il traffico HTTP completo.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 registrazione sul gestore dei messaggi HttpClient
. Per ulteriori informazioni, consulta la voce delle domande frequenti.
Vai
Imposta la variabile di ambiente GODEBUG=http2debug=1
. Per maggiori informazioni
vedi il documento Go net/http.
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 Trasporto HTTP pluggable.
Node.js
Imposta la variabile di ambiente NODE_DEBUG=https
prima di chiamare il nodo
lo script.
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 di .rb file
dopo le ore 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 eseguire il tracing di una richiesta. Nell'esempio che segue mostra come impostare le intestazioni delle richieste per diversi strumenti di 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
L'aggiunta di intestazioni personalizzate alle richieste effettuate dalla libreria client Go richiede
wrapping del trasporto utilizzato per il client con un RoundTripper
personalizzato.
L'esempio seguente invia intestazioni di debug e registra le intestazioni di 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 al metodo che attivano richieste http accettano un'opzione facoltativa
$restOptions
come ultimo argomento. Puoi fornire suggerimenti personalizzati
a seconda delle richieste o dei 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
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 bucket e noti che i server da browser client non vanno a buon fine, prova la seguente procedura di risoluzione dei problemi passaggi:
Esamina la configurazione CORS sul bucket di destinazione. Se ci sono di più voci di configurazione CORS, assicurati che i valori della richiesta che utilizzi per la risoluzione dei problemi relativi alla mappatura dei valori in una singola configurazione CORS .
Quando testi l'invio di una richiesta CORS, controlla di non effettuare una richiesta all'endpoint
storage.cloud.google.com
, che non consente le richieste CORS. Per saperne di più sugli endpoint supportati per CORS, consulta Supporto per CORS di Cloud Storage.Esamina una richiesta e la risposta utilizzando lo strumento che preferisci. In Chrome browser, puoi utilizzare gli strumenti standard per gli sviluppatori per visualizzare queste informazioni:
- Fai clic sul menu di 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.
- Individua la richiesta nel riquadro che mostra l'attività di rete.
- 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 tuo il browser ha memorizzato nella cache un tentativo precedente di richiesta preflight non riuscito. Cancellazione anche la cache del browser dovrebbe svuotare la cache preflight. In caso contrario, imposta il valore
MaxAgeSec
nella configurazione CORS su un valore inferiore rispetto al valore predefinito di1800
(30 minuti), attendi il tempo del vecchioMaxAgeSec
e riprova a effettuare la richiesta. Viene eseguita una nuova richiesta di preflight, che recupera la nuova configurazione CORS ed elimina le voci della cache. Dopo aver eseguito il debug del problema, richiamaMaxAgeSec
a un valore più alto per ridurre il traffico preflight verso il tuo bucket.Assicurati che la richiesta abbia un'intestazione
Origin
e che il valore dell'intestazione sia uguale 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 corrispondehttps://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 a almeno uno dei
Methods
valori nella configurazione CORS del bucket. Per le richieste di preflight, assicurati che il metodo specificato inAccess-Control-Request-Method
corrisponda ad almeno uno dei valoriMethods
.Per le richieste preflight, controlla se include una o più
Access-Control-Request-Header
intestazioni. In questo caso, assicurati che ogni Il valoreAccess-Control-Request-Header
corrisponde a un valoreResponseHeader
in configurazione CORS del bucket. Tutte le intestazioni denominate negliAccess-Control-Request-Header
deve essere nella configurazione CORS per che una richiesta preflight abbia esito positivo e include le intestazioni CORS nella risposta.
Codici di errore
Di seguito sono riportati i codici di stato HTTP comuni che puoi visualizzare.
301: Spostato definitivamente
Problema: sto configurando un sito web statico e accedendo 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 probabile che il tuo bucket contenga un oggetto vuoto
con quel nome. Per verificare se è così e risolvere il problema:
- 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/
, hai un oggetto vuoto in quel in ogni località. - 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 farti restituire
index.html
della directory anziché l'oggetto vuoto.
400: Bad Request
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. Per
esempio: Content-Range: */*
non è valido e deve essere invece specificato come
Content-Range: bytes */*
. Se ricevi questo errore, il caricamento con possibilità di ripresa corrente non è più attivo e devi avviarne uno nuovo.
401: Autorizzazione non autorizzata
Problema: le richieste a un bucket pubblico direttamente o utilizzando Cloud CDN non vanno a buon fine con una risposta HTTP 401: Unauthorized
e Authentication Required
.
Soluzione: verifica che il client o qualsiasi proxy intermedio non stia aggiungendo un'intestazione Authorization
alle richieste a Cloud Storage. Qualsiasi richiesta con
un'intestazione Authorization
, anche se vuota, viene convalidata come se fosse
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 al progetto associato. Per la procedura di attivazione della fatturazione, consulta Abilitare la fatturazione per un progetto.
Se la fatturazione è attiva e continui a ricevere questo messaggio di errore, puoi rivolgerti all'assistenza fornendo il tuo ID progetto e una descrizione del problema.
403: Forbidden
Problema: avrei dovuto avere l'autorizzazione per accedere a un determinato bucket o oggetto, ma
quando provo a farlo, ricevo un errore 403 - Forbidden
con un messaggio
simili 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. necessario per completare la richiesta. Se pensi di poter effettua la richiesta ma non può eseguire i seguenti controlli:
Il beneficiario viene indicato nel messaggio di errore come previsto? Se messaggio di errore si riferisce a un indirizzo email imprevisto o a "Anonimo chiamante", significa che la richiesta non utilizza le credenziali desiderate. Questo potrebbe essere dovuto al fatto che lo strumento che utilizzi per effettuare la richiesta è stato configurato con le credenziali di un altro alias o di un'altra entità oppure che la richiesta viene effettuata per tuo conto da un account di servizio.
L'autorizzazione a cui fa riferimento il messaggio di errore è quella che pensavi di aver bisogno? Se l'autorizzazione non è prevista, è probabile che lo strumento che stai utilizzando richieda 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'eliminazione collettiva richiede l'autorizzazionestorage.objects.list
, che potrebbe essere sorprendente, dato che l'obiettivo è l'eliminazione degli oggetti, che di solito richiede solo l'autorizzazionestorage.objects.delete
. Se questa è la causa del messaggio di errore, assicurati di disporre dei ruoli IAM con le autorizzazioni aggiuntive necessarie.Ti è stato concesso il ruolo IAM sulla risorsa o sulla risorsa padre prevista? Ad esempio, se ricevi
Storage Object Viewer
ruolo per un progetto e stai tentando di scaricare un oggetto, assicurati che l'oggetto si trova in un bucket nel progetto; potresti inavvertitamente l'autorizzazioneStorage Object Viewer
per un altro progetto.La tua autorizzazione ad accedere a un determinato bucket o oggetto è fornita tramite un valore pratico? La rimozione dell'accesso concesso a un valore di comodità può causare la perdita dell'accesso alle risorse da parte dei principali abilitati in precedenza.
Ad esempio, supponiamo che jane@example.com abbia il proprietario (
roles/owner
) ruolo di base per un progetto denominatomy-example-project
e il ruolo Il criterio IAM concede il Creatore oggetti Storage (roles/storage.objectCreator
) al valore di convenienzaprojectOwner:my-example-project
. Ciò significa che jane@example.com ha le 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 scenario, puoi recuperare l'accesso al bucket o all'oggetto concedendo le autorizzazioni necessarie a livello di bucket o di oggetto eseguire le azioni necessarie.
Esiste un criterio di negazione IAM che ti impedisce di utilizzare determinate autorizzazioni? Puoi contattare l'amministratore della tua organizzazione per scoprire se è stato implementato un criterio di rifiuto 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 autenticato, che utilizza l'autenticazione basata su cookie.
Se hai configurato gli audit log di accesso ai dati in Cloud Audit Logs per monitorare
agli oggetti, una delle limitazioni di questa funzionalità è che
i download da browser autenticati non possono essere utilizzati per scaricare un oggetto monitorato,
tranne nei casi seguenti:
- L'oggetto è pubblicamente leggibile
- L'oggetto viene visualizzato dalla console Google Cloud
Qualsiasi altro tentativo di utilizzare un download del browser autenticato genera una risposta 403
. Questa restrizione esiste per prevenire il phishing per gli ID Google, che sono
utilizzati per l'autenticazione basata su cookie.
Per evitare questo problema, procedi in uno dei seguenti modi:
- Utilizza invece le chiamate API dirette, che supportano i download non autenticati. sull'utilizzo di download autenticati dal browser.
- Disattiva 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 impostate a livello di progetto o al di sopra e possono essere abilitate contemporaneamente più livelli.
- Imposta esenzioni per escludere utenti specifici dal monitoraggio degli audit log di accesso ai dati, in modo che possano eseguire download del browser autenticati.
- Rendi gli oggetti interessati pubblicamente leggibili concedendo l'autorizzazione di lettura a
allUsers
oallAuthenticatedUsers
. Gli audit log di accesso ai dati accesso registrato a 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 esempio gs://cats
o gs://dogs
.
è già in uso. Cloud Storage ha uno spazio dei nomi globale, pertanto non puoi assegnare a un bucket lo stesso nome di un bucket esistente. Scegli un nome che sia
non 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: contatta il team dell'amministratore della sicurezza per sapere se il bucket a cui stai inviando le richieste sia interessato da un criterio dell'organizzazione che utilizza un vincolo personalizzato. Il bucket può essere influenzato anche da dell'organizzazione in conflitto tra loro. Ad esempio, se un'impostazione specifica che i bucket devono avere la classe di archiviazione Standard e un'altra che devono avere la classe di archiviazione Coldline.
429: Troppe richieste
Problema: le mie richieste vengono rifiutate con un errore 429 Too Many Requests
.
Soluzione: stai raggiungendo il limite di numero di richieste Cloud Storage consente una determinata risorsa. Consulta le Quote di Cloud Storage per una discussione sui limiti di archiviazione ideale in Cloud Storage.
Se il tuo carico di lavoro è costituito da migliaia di richieste al secondo a un bucket, consulta le linee guida relative alla frequenza delle richieste e alla distribuzione dell'accesso 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 50 Gbps o più di traffico in uscita sulla rete verso località specifiche, controlla l'utilizzo della larghezza di banda per assicurarti di non riscontrare una quota di larghezza di banda.
Diagnosticare gli errori della console Google Cloud
Problema: quando si utilizza la console Google Cloud per eseguire una operativa, 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 del 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 che vuoi scoprire di più.
Si apre una pagina con 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.
Soluzione: per visualizzare una determinata colonna nella console Google Cloud, fai clic sull'icona Opzioni di visualizzazione delle colonne (
) e seleziona la colonna da visualizzare.Cartelle simulate e cartelle gestite
Problema: eliminavo alcuni oggetti nel bucket e ora la cartella non compaiono nella console Google Cloud.
Soluzione: la console Google Cloud mostra i contenuti del bucket. come se ci fosse 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 di quanto segue sono soddisfatti i seguenti requisiti:
Hai un ruolo IAM che contiene l'autorizzazione
storage.managedfolders.create
, ad esempio il ruolo Amministratore oggetti archiviazioneroles/storage.objectAdmin
. Per istruzioni sulla concessione dei ruoli, consulta Utilizza le autorizzazioni IAM.L'accesso uniforme a livello di bucket è abilitato nel bucket in cui vuoi per creare cartelle gestite.
Non sono presenti condizioni IAM sul bucket o sul 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 del progetto, anche se la condizione viene rimossa in un secondo momento.
Problema: non riesco a disabilitare l'accesso uniforme a livello di bucket perché sono gestiti cartelle nel mio bucket.
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 di un bucket per l'hosting di 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 rete CDN (Content Delivery Network) di terze parti con Cloud Storage.
- Pubblica i contenuti del tuo sito web statico da Firebase Hosting anziché da Cloud Storage.
Verifica del dominio
Problema: non riesco a verificare il mio dominio.
Soluzione: in genere, la procedura di verifica in Search Console ti chiede di caricare un file sul 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 del provider del nome di dominio. Per scoprire come procedere, consulta la sezione Verifica della proprietà. Questo puoi eseguire la verifica prima della creazione del bucket.
Pagina non accessibile
Problema: viene visualizzato il 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 carichi una nuova versione devi ricondividerlo pubblicamente. Questo perché il pubblico viene sostituita con il nuovo caricamento.
Aggiornamento autorizzazione non riuscito
Problema: ricevo un errore quando tento di rendere pubblici i miei dati.
Soluzione: assicurati di avere lo storage.buckets.setIamPolicy
o l'autorizzazione storage.objects.setIamPolicy
. Queste autorizzazioni
concessi, ad esempio, nel
Ruolo Amministratore Storage (roles/storage.admin
). Se disponi dell'autorizzazione storage.buckets.setIamPolicy
o dell'autorizzazione storage.objects.setIamPolicy
e continui a ricevere 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 sul bucket
direttamente oppure potrebbe essere applicato tramite un criterio dell'organizzazione che
impostato a un livello superiore.
Download di contenuti
Problema: anziché poter scaricare i contenuti della mia pagina, mi viene chiesto di per visualizzarlo nel mio 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 vedere i contenuti della pagina pubblicati. Per risolvere il problema, aggiorna il
Content-Type
a un valore adatto, ad esempio text/html
.
Per le istruzioni, consulta la sezione Modifica dei metadati degli oggetti.
Latenza
Di seguito sono riportati alcuni problemi di latenza comuni che potresti riscontrare. Inoltre, La dashboard di Google Cloud Service Health fornisce informazioni su incidenti che interessano i servizi Google Cloud come Cloud Storage.
Latenza in upload o download
Problema: noto un aumento della latenza durante il caricamento o il download.
Soluzione. Considera le seguenti cause comuni di caricamento e download. latenza:
Vincoli di CPU o memoria: il sistema operativo dell'ambiente interessato deve dispongono di strumenti per misurare il consumo di risorse locali, come l'utilizzo della CPU e memoria utilizzata.
Limitazioni 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 del bucket Cloud Storage e dell'ambiente interessato, in particolare in casi transcontinentali. Test con un bucket che si trova nella stessa regione poiché il tuo ambiente interessato può identificare in che misura separazione contribuisce alla latenza.
- Se applicabile, il resolver DNS dell'ambiente interessato deve utilizzare protocollo EDNS(0) in modo che le richieste dall'ambiente vengono indirizzate tramite un Google Front End appropriato.
Latenza dell'interfaccia a riga di comando o della libreria client
Problema: noto un aumento della latenza quando accedo a Cloud Storage con Google Cloud CLI o una delle librerie client.
Soluzione: la CLI gcloud 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 storage.googleapis.com/api/request_count
di Cloud Monitoring per verificare se Cloud Storage restituisce in modo coerente 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, è necessario consenti 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 server proxy o il criterio 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 indirizzi IP Google di indirizzi IP esterni. Puoi trovare gli intervalli di indirizzi eseguendo una query su WHOIS di dati di ARIN. Come best practice, devi esaminare periodicamente le impostazioni del 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 tramite nomi DNS
mappati a un grande numero di indirizzi IP che possono cambiare nel tempo,
la configurazione del proxy in base a una ricerca una tantum potrebbe causare errori
per la connessione a Cloud Storage.
Se le tue richieste vengono instradate tramite un server proxy, potrebbe essere necessario
verifica con l'amministratore di rete che Authorization
contenente le tue credenziali non viene rimossa dal proxy. Senza
l'intestazione Authorization
, le richieste vengono rifiutate e ricevi un
MissingSecurityHeader
errore.
Errori di Storage Insights
Problema: la mia configurazione dei report sull'inventario genera più report sull'inventario ogni giorno.
Soluzione: se il bucket contiene più di 1.000.000 di oggetti, più i report sull'inventario possono essere generati come shards. Una configurazione del report sull'inventario genera un report per ogni 1000000 di oggetti nel bucket. Ad esempio, se hai un bucket con 3.500.000 di oggetti, l'inventario della configurazione del report sul bucket genererà quattro shard del report sull'inventario in base alla frequenza specificata, insieme a un file manifest che contiene il numero di shard del report sull'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 per quando generare i report sull'inventario. Per istruzioni su come specificare una data di inizio, consulta Crea una configurazione dei report sull'inventario.
Visualizza la cronologia dei report sull'inventario per verificare la presenza di errori e le relative cause cause. Per visualizzare la cronologia dei report sull'inventario, segui questi passaggi:
- Nella console Google Cloud, vai alla pagina Bucket in 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 dei report sull'inventario che ha generato i report da controllare.
Verifica la presenza di errori nella sezione Cronologia dei report sull'inventario. Puoi tenere premuto il cursore sopra Guida (
) per visualizzare i dettagli sul motivo dell'errore.
- Nella console Google Cloud, vai alla pagina Bucket in Cloud Storage.
Assicurati che all'agente di servizio a livello di progetto siano concessi i ruoli IAM necessari per leggere e scrivere i report sull'inventario. Per 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. possono 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 a tua disposizione.
- Scopri in che modo Error Reporting può aiutarti a identificare e comprendere gli errori di Cloud Storage.