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 Trusted Cloud by S3NS , come Cloud Storage.Trusted Cloud by S3NS
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 Trusted 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.
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.s3nsapis.fr/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 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.
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 Trusted Cloud by S3NS gerarchia di risorse in cui stai abilitando Storage Intelligence.
- Assicurati che una risorsa di livello superiore nella gerarchia delle risorse Trusted Cloud by S3NS 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 Trusted Cloud errori della console
Problema: quando utilizzo la console Trusted 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 Trusted Cloud per visualizzare informazioni dettagliate sull'operazione non riuscita:
Fai clic sul pulsante Notifiche (notifications) nell'intestazione della console Trusted Cloud .
Un menu a discesa mostra le operazioni più recenti eseguite dalla consoleTrusted 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 Trusted Cloud , non vedo una determinata colonna visualizzata.
Soluzione: per visualizzare una determinata colonna nella console Trusted 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 Trusted Cloud .
Soluzione: anche se la console Trusted 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 Trusted 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.
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 Trusted Cloud by S3NS dashboard dello stato del servizio fornisce informazioni sugli incidenti che interessano i servizi Trusted Cloud by S3NS 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.
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.s3nsapis.fr
. 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
.