Nesta página, você verá métodos de solução de problemas para erros comuns que podem ser encontrados ao usar o Cloud Storage.
Consulte o Painel de status do Google Cloud para ver informações sobre incidentes regionais ou globais que afetam os serviços do Google Cloud, como o Cloud Storage.
Como registrar solicitações brutas
Ao usar ferramentas como a gsutil ou as bibliotecas de cliente do Cloud Storage, grande parte das informações de solicitação e resposta é processada pela ferramenta. No entanto, às vezes é útil ver detalhes para ajudar na solução de problemas. Use as instruções a seguir para retornar cabeçalhos de solicitação e resposta da ferramenta:
Console
A visualização das informações de solicitação e resposta depende do navegador que você está usando para acessar o Console do Google Cloud. Para o navegador Google Chrome:
Clique no botão Menu principal do Chrome (
).
Selecione Mais ferramentas.
Clique em Ferramentas para Desenvolvedores.
No painel exibido, clique na guia Rede.
gsutil
Use a sinalização -D
global na sua solicitação. Exemplo:
gsutil -D ls gs://my-bucket/my-object
Bibliotecas de cliente
C++
Defina a variável de ambiente
CLOUD_STORAGE_ENABLE_TRACING=http
para receber o tráfego HTTP completo.Defina a variável de ambiente CLOUD_STORAGE_ENABLE_CLOG=yes para gerar o registro de cada RPC.
C#
Adicione um registrador por meio de ApplicationContext.RegisterLogger
e defina as opções de geração de registros no gerenciador de mensagens HttpClient
. Para mais informações, consulte a entrada das perguntas frequentes:
Go
Defina a variável de ambiente GODEBUG=http2debug=1
. Para mais informações, consulte o pacote Go/net (em inglês).
Se você também quiser registrar o corpo da solicitação, use um cliente HTTP personalizado.
Java
Crie um arquivo chamado "logging.properties" com o seguinte conteúdo:
# 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
Usar o logging.properties com o Maven
mvn -Djava.util.logging.config.file=path/to/logging.properties insert_command
Para mais informações, consulte Transporte HTTP conectável.
Node.js
Defina a variável de ambiente NODE_DEBUG=https
antes de chamar o script Node.
PHP
Forneça seu próprio gerenciador HTTP ao cliente usando
httpHandler
e configure um middleware para registrar a solicitação
e a resposta.
Python
Use o módulo de geração de registros. Exemplo:
import logging import http.client logging.basicConfig(level=logging.DEBUG) http.client.HTTPConnection.debuglevel=5
Ruby
Na parte superior da .rb file
depois de require "google/cloud/storage"
,
adicione o seguinte:
ruby Google::Apis.logger.level = Logger::DEBUG
Códigos de erro
A seguir, estão Códigos de status HTTP comuns que talvez você encontre.
301: movido permanentemente
Problema: estou configurando um site estático, e o acesso a um caminho de diretório
retorna um objeto vazio e um código de resposta HTTP 301
.
Solução: se seu navegador faz o download de um objeto de zero byte e você recebe um código de resposta HTTP 301
ao acessar um diretório, como http://www.example.com/dir/
, seu bucket provavelmente contém um objeto vazio com esse nome. Para verificar se esse é o caso e corrigir o problema:
- No Console do Cloud, acesse a página Navegador do Cloud Storage.
- Clique no botão Ativar Cloud Shell na parte superior do Console do Google Cloud.
- Execute
gsutil ls -R gs://www.example.com/dir/
. Se a saída incluirhttp://www.example.com/dir/
, você terá um objeto vazio nesse local. - Remova o objeto vazio com o comando:
gsutil rm gs://www.example.com/dir/
Agora é possível acessar http://www.example.com/dir/
e fazer com que ele retorne o arquivo index.html
do diretório em vez do objeto vazio.
400: Solicitação inválida
Problema: ao executar um upload retomável, recebi este erro e
a mensagem Failed to parse Content-Range header.
Solução: o valor usado no cabeçalho Content-Range
é inválido. Por
exemplo, Content-Range: */*
é inválido e precisa ser especificado como
Content-Range: bytes */*
. Se você receber esse erro, o upload retomável
atual não estará mais ativo e será necessário iniciar um novo upload recuperável.
401: não autorizado
Problema: as solicitações para um bucket público diretamente ou por meio do Cloud CDN
falham com uma resposta HTTP 401: Unauthorized
e
Authentication Required
.
Solução: verifique se o cliente ou qualquer proxy intermediário está adicionando um
cabeçalho Authorization
às solicitações ao Cloud Storage. Qualquer solicitação com
um cabeçalho Authorization
, ainda que vazia, é validada como se fosse uma
tentativa de autenticação.
403: conta desativada
Problema: tentei criar um bucket, mas recebi um erro 403 Account Disabled
.
Solução: esse erro indica que você ainda não ativou o faturamento do projeto associado. Para ver as etapas de ativação do faturamento, consulte Ativar o faturamento para um projeto.
Se o faturamento estiver ativado e você continuar recebendo essa mensagem de erro, entre em contato com o suporte informando o ID do projeto e uma descrição do problema.
403: acesso negado
Problema: tentei listar os objetos no bucket, mas recebi um
erro 403 Access Denied
e/ou uma mensagem semelhante a
Anonymous caller does not have storage.objects.list access
.
Solução: verifique se suas credenciais estão corretas. Por exemplo, se você estiver
usando a ferramenta gsutil, verifique se as credenciais armazenadas no arquivo .boto
estão
corretas. Além disso, confirme se a gsutil está usando o arquivo .boto
que você espera.
Fala isso com o comando gsutil version -l
e verificando a entrada config path(s)
.
Supondo que você esteja usando as credenciais corretas, suas solicitações estão sendo roteadas
por meio de um proxy, usando HTTP (em vez de HTTPS)? Em caso afirmativo, verifique se o proxy está configurado para remover o cabeçalho Authorization
de tais solicitações. Se for o caso, verifique se você está usando HTTPS em vez de HTTP nas solicitações.
403: Proibido
Problema: estou fazendo o download do meu conteúdo público de storage.cloud.google.com
e recebo um erro 403: Forbidden
ao usar o navegador para
navegar até o objeto público:
https://storage.cloud.google.com/BUCKET_NAME/OBJECT_NAME
Solução: o uso de storage.cloud.google.com
para fazer o download de objetos é conhecido como downloads em navegadores autenticados. Essa opção sempre usa a autenticação baseada em cookies, mesmo quando os objetos são disponibilizados publicamente para allUsers
. Se você configurou os registros de acesso a dados nos registros de auditoria do Cloud para rastrear o acesso a objetos, uma das restrições desse recurso é não ser possível usar downloads de navegadores autenticados para acessar os objetos afetados; a tentativa de fazer isso resultará em uma resposta 403
.
Para evitar esse problema, siga um destes procedimentos:
- Use chamadas de API diretas, que são compatíveis com downloads não autenticados, em vez de usar downloads de navegadores autenticados.
- Desative os registros de acesso a dados do Cloud Storage que estão acompanhando o acesso aos objetos afetados. Esteja ciente de que os registros de acesso a dados são definidos no nível do projeto ou acima dele e podem ser ativados simultaneamente em vários níveis.
- Defina isenções de registro de acesso a dados para excluir usuários específicos do rastreamento de registros de acesso a dados, o que permite que eles executem downloads do navegador autenticado.
409: Conflito
Problema: tentei criar um bucket, mas recebi o seguinte erro:
409 Conflict. Sorry, that name is not available. Please try a different one.
Solução: o nome do bucket que você tentou usar (por exemplo, gs://cats
ou gs://dogs
) já está em uso. O Cloud Storage tem um namespace global, portanto, não é possível nomear um bucket com o mesmo nome de um atual. Escolha um nome que não esteja sendo usado.
429: Solicitações demais
Problema: minhas solicitações são rejeitadas com um erro 429 Too Many Requests
.
Solução: você está atingindo o limite do número de solicitações que o Cloud Storage permite para determinado recurso. Consulte as cotas do Cloud Storage para uma discussão sobre os limites do Cloud Storage. Se sua carga de trabalho consiste em milhares de solicitações por segundo para um bucket, consulte as diretrizes de taxa de solicitação e distribuição de acesso para uma discussão das práticas recomendadas, incluindo aumentar gradualmente a carga de trabalho e evitar nomes de arquivos sequenciais.
Como diagnosticar erros no Console do Google Cloud
Problema: ao usar o Console do Google Cloud para executar uma operação, recebo uma mensagem de erro genérica. Por exemplo, a mensagem de erro é exibida quando tento excluir um bucket, mas não vejo detalhes sobre o motivo da falha na operação.
Solução: use as notificações do Console do Google Cloud para ver informações detalhadas sobre a operação com falha:
Clique no botão Notificações no cabeçalho do Console do Google Cloud.
Uma lista suspensa exibe as operações mais recentes realizadas pelo Console do Google Cloud.
Clique no item que você quer saber mais sobre.
Uma página é aberta e exibe informações detalhadas sobre a operação.
Clique em cada linha para mostrar as informações detalhadas do erro.
Veja abaixo um exemplo de informações de erro para uma operação de exclusão de bucket com falha. Os detalhes do erro indicam que uma política de retenção de bucket impediu a exclusão dele.
Erros da gsutil
Veja a seguir erros comuns da gsutil que podem ocorrer.
gsutil stat
Problema: tentei usar o comando gsutil stat
para exibir o status do objeto de um subdiretório e recebi um erro.
Solução: o Cloud Storage usa um namespace simples para armazenar objetos em buckets.
É possível usar barras (“/”) em nomes de objetos para parecer que eles estão em uma estrutura hierárquica, mas o comando gsutil stat
trata uma barra à direita como parte do nome do objeto.
Por exemplo, se você executar o comando gsutil -q stat gs://my-bucket/my-object/
, a gsutil procurará informações sobre o objeto my-object/
(com uma barra à direita), em vez de operar em objetos aninhados em my-bucket/my-object/
.
A menos que você realmente tenha um objeto com esse nome, a operação falhará.
Para a listagem de subdiretórios, use gsutil ls
.
gcloud auth
Problema: tentei autenticar a gsutil usando o comando gcloud auth
, mas
ainda não consigo acessar meus buckets ou objetos.
Solução: seu sistema pode ter as versões da gsutil autônoma e da
Google Cloud CLI instaladas. Execute o comando gsutil version -l
e
verifique o valor de using cloud sdk
. Se for False
, seu sistema estará usando a
versão autônoma da gsutil ao executar comandos. É possível remover essa versão
da gsutil do seu sistema ou autenticar usando o
comando gsutil config
.
Erros de sites estáticos
Veja a seguir problemas comuns ao configurar um bucket para hospedar um site estático.
Veiculação HTTPS
Problema: quero veicular meu conteúdo por HTTPS sem usar um balanceador de carga.
Solução: é possível exibir conteúdo estático por HTTPS usando URIs diretos, como https://storage.googleapis.com/my-bucket/my-object
. Para conhecer outras
opções para veicular seu conteúdo por meio de um domínio personalizado usando SSL, faça isto:
- Use uma rede de fornecimento de conteúdo de terceiros com o Cloud Storage.
- Disponibilize o conteúdo estático do site pelo Firebase Hosting em vez do Cloud Storage.
Confirmação de domínio
Problema: não consigo confirmar meu domínio.
Solução: normalmente, o processo de confirmação no Search Console direciona você para fazer o upload de um arquivo no seu domínio. No entanto, talvez não seja possível fazer isso sem antes ter um bucket associado, que só pode ser criado depois de realizar a confirmação de domínio.
Nesse caso, verifique a propriedade usando o método de verificação do provedor de nome de domínio. Consulte Confirmação de propriedade para conhecer as etapas e executar o processo. Ela pode ser feita antes da criação do bucket.
Página inacessível
Problema: recebo uma mensagem de erro Access denied
em uma página da Web exibida pelo meu site.
Solução: verifique se o objeto está compartilhado publicamente. Se não estiver, consulte Como tornar públicos os dados para ver instruções sobre como fazer isso.
Se você fez o upload e compartilhou um objeto anteriormente, mas depois fez upload de uma nova versão dele, será necessário compartilhar o objeto publicamente. Isso ocorre porque a permissão pública é substituída pelo novo upload.
Falha ao atualizar as permissões
Problema: recebo uma mensagem de erro quando tento tornar meus dados públicos.
Solução: verifique se você tem a permissão setIamPolicy
para o
objeto ou bucket. Essa permissão é concedida, por exemplo, no
papel Storage Admin
. Se você tiver a permissão setIamPolicy
e
ainda receber um erro, o bucket pode estar sujeito à
prevenção de acesso público, que não permite o acesso a allUsers
ou
allAuthenticatedUsers
. A prevenção de acesso público pode ser definida diretamente
no bucket ou aplicada usando uma política da organização
definida em um nível superior.
Download de conteúdo
Problema: recebo uma solicitação para fazer o download do conteúdo da minha página em vez de visualizá-lo no navegador.
Solução: se você especificar um MainPageSuffix
como um objeto que não tenha um tipo de conteúdo da Web, em vez de ver a página, os visitantes do site receberão uma solicitação de download do conteúdo. Para resolver esse problema, atualize a entrada de metadados content-type com um valor adequado, como text/html
. Consulte Como editar metadados de objeto para ver instruções sobre como executar a atualização.
Latência
Veja a seguir problemas comuns de latência que você pode encontrar. Além disso, o Painel de status do Google Cloud fornece informações sobre incidentes regionais ou globais que afetam os serviços do Google Cloud, como o Cloud Storage.
Latência de upload ou download
Problema: há um aumento na latência ao fazer upload ou download.
Solução: use o comando gsutil perfdiag
para executar diagnósticos de
desempenho no ambiente afetado. Considere as seguintes causas comuns de
latência de upload e download:
Restrições de CPU ou memória: o sistema operacional do ambiente afetado precisa ter ferramentas para medir o consumo de recursos locais, como o uso da CPU e da memória.
Restrições de E/S do disco: como parte do comando
gsutil perfdiag
, use os testesrthru_file
ewthru_file
para avaliar o impacto do desempenho causado pela E/S do disco local.Distância geográfica: o desempenho pode ser afetado pela separação física do bucket do Cloud Storage e do ambiente afetado, principalmente em casos intercontinentais. Os testes com um bucket localizado na mesma região do ambiente afetado podem identificar até que ponto a separação geográfica contribui para a latência.
- Se aplicável, o resolvedor de DNS do ambiente afetado precisa usar o protocolo EDNS(0) para que as solicitações do ambiente sejam roteadas por um Google Front End apropriado.
Latência da biblioteca de cliente ou gsutil
Problema: vejo a latência aumentada ao acessar o Cloud Storage com gsutil ou uma das bibliotecas de cliente.
Solução: o gsutil e as bibliotecas de cliente fazem novas tentativas de solicitação automaticamente
quando é útil, e esse comportamento pode aumentar a latência
de maneira efetiva, conforme visto pelo usuário final. Use a métrica storage.googleapis.com/api/request_count
do Cloud Monitoring para ver se
o Cloud Storage exibe um código de resposta repetível de maneira consistente, como
429
ou 5xx
.
Servidores proxy
Problema: estou me conectando por meio de um servidor proxy, o que preciso fazer?
Solução: para acessar o Cloud Storage por meio de um servidor proxy, permita o acesso a estes domínios:
accounts.google.com
para criar tokens de autenticação OAuth2 por meio degsutil config
oauth2.googleapis.com
para realizar trocas de token OAuth2*.googleapis.com
para solicitações de armazenamento
Se o servidor proxy ou a política de segurança não for compatível com a lista de permissões por domínio e, em vez disso, exigir a lista de permissões por bloqueio de rede IP, recomendamos que você configure o servidor proxy para todos os intervalos de endereços IP do Google. É possível encontrar os intervalos de endereços consultando os dados WHOIS no site da ARIN (em inglês). Como prática recomendada, analise periodicamente suas configurações de proxy para garantir que elas correspondam aos endereços IP do Google.
Não recomendamos configurar seu proxy com endereços IP individuais que você
recebe de consultas únicas de oauth2.googleapis.com
e
storage.googleapis.com
. Como os serviços do Google são expostos por meio de nomes DNS que mapeiam um grande número de endereços IP que podem mudar com o tempo, configurar seu proxy com base em uma consulta única pode levar a falhas na conexão com o Cloud Storage.
Se suas solicitações estiverem sendo roteadas por um servidor proxy, talvez seja necessário falar com o administrador da rede para garantir que o cabeçalho Authorization
que contém suas credenciais não seja removido pelo proxy. Sem o cabeçalho Authorization
, suas solicitações serão rejeitadas e você receberá uma erro MissingSecurityHeader
.
A seguir
- Saiba mais sobre as opções de suporte.
- Tire mais dúvidas nas Perguntas frequentes sobre o Cloud Storage.
- Explore como o Error Reporting pode ajudar você a identificar e entender os erros do Cloud Storage.