Risoluzione dei problemi

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:

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

  2. Seleziona Altri strumenti.

  3. Fai clic su Strumenti per sviluppatori.

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

Riga di comando

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

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

Librerie client

C++

  • Imposta la variabile di ambiente CLOUD_STORAGE_ENABLE_TRACING=http 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

  1. 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
  2. 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:

  1. 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.

  2. 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.

  3. 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:

    1. Fai clic sul menu Chrome () nella barra degli strumenti del browser.
    2. Seleziona Altri strumenti > Strumenti per sviluppatori.
    3. Fai clic sulla scheda Rete.
    4. Invia la richiesta dall'applicazione o dalla riga di comando.
    5. Nel riquadro che mostra l'attività di rete, individua la richiesta.
    6. Nella colonna Nome, fai clic sul nome corrispondente alla richiesta.
    7. 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 di 1800 (30 minuti), attendi il tempo di scadenza del vecchio MaxAgeSec, 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 di MaxAgeSec per ridurre il traffico di preflight nel bucket.

  4. Assicurati che la richiesta abbia un'intestazione Origin e che il valore dell'intestazione corrisponda ad almeno uno dei valori Origins 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 a http://origin.example.com:80 (perché 80 è la porta HTTP predefinita), ma non corrisponde a https://origin.example.com, http://origin.example.com:8080, http://origin.example.com:5151 o http://sub.origin.example.com.

    • https://example.com:443 corrisponde a https://example.com, ma non a http://example.com o http://example.com:443.

    • http://localhost:8080 corrisponde esattamente solo a http://localhost:8080 e non corrisponde a http://localhost:5555 o http://localhost.example.com:8080.

  5. 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 in Access-Control-Request-Method corrisponda ad almeno uno dei valori Methods.

  6. Per le richieste di preflight, verifica se include una o più intestazioni Access-Control-Request-Header. In questo caso, assicurati che ogni valore Access-Control-Request-Header corrisponda a un valore ResponseHeader nella configurazione CORS del bucket. Tutte le intestazioni denominate in Access-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:

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

    Vai a Bucket

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

Ora puoi accedere a http://www.example.com/dir/ e fare in modo che restituisca il file index.html di 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:

  1. 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.

  2. 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'autorizzazione storage.objects.list, il che potrebbe sorprendere, dato che l'obiettivo è l'eliminazione degli oggetti, che normalmente richiede solo l'autorizzazione storage.objects.delete. Se questa è la causa del messaggio di errore, assicurati di disporre dei ruoli IAM che dispongono delle autorizzazioni aggiuntive necessarie.

  3. 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'autorizzazione Storage Object Viewer per un altro progetto.

  4. 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 denominato my-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 di my-example-project. Se questa concessione viene rimossa, jane@example.com perde le autorizzazioni associate al ruolo Creatore oggetti Storage.

    In questo caso, puoi 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.

  5. 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.

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:

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

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

  2. Fai clic sull'elemento di cui vuoi saperne di più.

    Si apre una pagina che mostra informazioni dettagliate sull'operazione.

  3. 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:

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 OAuth2
  • oauth2.googleapis.com per eseguire scambi di token OAuth2
  • *.googleapis.com per le richieste di spazio di archiviazione

Se il tuo server proxy o 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:

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

      Vai a Bucket

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

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

    4. 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.

    5. 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.

  • 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