Soluciona problemas

En esta página, se describen métodos de solución de problemas comunes que puedes encontrar mientras usas Cloud Storage.

Consulta el Panel de estado de Google Cloud para obtener información sobre incidentes regionales o globales que afectan a los servicios de Google Cloud, como Cloud Storage.

Registra solicitudes sin procesar

Cuando se usan herramientas como gsutil o las bibliotecas cliente de Cloud Storage, la herramienta controla gran parte de la información de solicitud y respuesta. Sin embargo, a veces es útil ver los detalles para ayudar a solucionar problemas. Usa las siguientes instrucciones para mostrar los encabezados de solicitud y respuesta de tu herramienta:

Console

La visualización de la información de solicitudes y respuestas depende del navegador que usas para acceder a Google Cloud Console. Para el navegador Google Chrome:

  1. Haz clic en el botón Menú principal de Chrome ().

  2. Selecciona Más herramientas.

  3. Haz clic en Herramientas para desarrolladores.

  4. En el panel que aparece, haz clic en la pestaña Red.

gsutil

Usa la marca de nivel superior -D en tu solicitud. Por ejemplo:

gsutil -D ls gs://my-bucket/my-object

Bibliotecas cliente

C++

  • Configura la variable de entorno CLOUD_STORAGE_ENABLE_TRACING=http para obtener el tráfico HTTP completo.

  • Configura la variable de entorno CLOUD_STORAGE_ENABLE_CLOG=yes para obtener el registro de cada RPC.

C#

Agrega un registrador a través de ApplicationContext.RegisterLogger y configura las opciones de registro en el controlador de mensajes HttpClient. Para obtener más información, consulta la entrada Preguntas frecuentes.

Go

Configura la variable de entorno GODEBUG=http2debug=1. Para obtener más información, consulta el paquete de Go net/http.

Si además quieres registrar el cuerpo de la solicitud, usa un cliente HTTP personalizado.

Java

  1. Crea un archivo llamado “logging.properties” con el siguiente contenido:

    # 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. Usa logging.properties con Maven

    mvn -Djava.util.logging.config.file=path/to/logging.properties insert_command

Para obtener más información, consulta Transporte HTTP conectable.

Node.js

Configura la variable de entorno NODE_DEBUG=https antes de llamar a la secuencia de comandos de Node.

PHP

Proporciona tu propio controlador HTTP al cliente mediante httpHandler y configura el middleware para que registre la solicitud y la respuesta.

Python

Usa el módulo de registro. Por ejemplo:

import logging
import http.client

logging.basicConfig(level=logging.DEBUG)
http.client.HTTPConnection.debuglevel=5

Ruby

En la parte superior de tu .rb file después de require "google/cloud/storage", agrega lo siguiente:

ruby
Google::Apis.logger.level = Logger::DEBUG

Códigos de error

Los siguientes son códigos de estado HTTP comunes que puedes encontrar.

301: Movido permanentemente

Problema: Estoy configurando un sitio web estático y el acceso a una ruta de directorio muestra un objeto vacío y un código de respuesta HTTP 301.

Solución: Si tu navegador descarga un objeto de cero bytes y obtienes un código de respuesta HTTP 301 cuando accedes a un directorio, como http://www.example.com/dir/, es probable que tu depósito contenga un objeto vacío con ese nombre. Sigue los pasos a continuación para comprobar que este es el caso y solucionar el problema:

  1. En Google Cloud Console, ve a la página Navegador de Cloud Storage.

    Ir al navegador

  2. Haz clic en el botón Activar Cloud Shell en la parte superior de Google Cloud Console.Activar Cloud Shell
  3. Ejecuta gsutil ls -R gs://www.example.com/dir/. Si el resultado incluye http://www.example.com/dir/, tienes un objeto vacío en esa ubicación.
  4. Quita el objeto vacío con el comando: gsutil rm gs://www.example.com/dir/.

Ahora puedes acceder a http://www.example.com/dir/ y hacer que muestre el archivo index.html de ese directorio en lugar del objeto vacío.

400: Bad Request

Problema: Mientras se realizaba una carga reanudable, recibí este error y el mensaje Failed to parse Content-Range header.

Solución: El valor que usaste en el encabezado Content-Range no es válido. Por ejemplo, Content-Range: */* no es válido y, en su lugar, se debe especificar como Content-Range: bytes */*. Si recibes este error, tu carga reanudable actual ya no está activa y debes iniciar una nueva.

401: Sin autorización

Problema: Las solicitudes que se envían directamente a un bucket público o mediante Cloud CDN fallan con un error HTTP 401: Unauthorized y una respuesta Authentication Required.

Solución: Verifica que tu cliente, o cualquier proxy intermedio, no agregue un encabezado Authorization a las solicitudes a Cloud Storage. Cualquier solicitud con un encabezado Authorization, incluso si está vacía, se valida como si fuera un intento de autenticación.

403: Cuenta inhabilitada

Problema: Intenté crear un depósito, pero obtuve un error 403 Account Disabled.

Solución: Este error indica que aún no has activado la facturación para el proyecto asociado. Si quieres conocer los pasos para habilitar la facturación, consulta la sección Habilita la facturación para un proyecto.

Si la facturación está activada y sigues recibiendo este mensaje de error, puedes comunicarte con el servicio de asistencia con el ID del proyecto y una descripción de tu problema.

403: Acceso denegado

Problema: Intenté enumerar los objetos en mi depósito, pero se generó un error 403 Access Denied o un mensaje similar a Anonymous caller does not have storage.objects.list access.

Solución: Comprueba que tus credenciales sean correctas. Por ejemplo, si usas gsutil, verifica que las credenciales almacenadas en el archivo .boto sean correctas. Además, confirma que gsutil use el archivo .boto previsto. Para ello, usa el comando gsutil version -l y revisa la entrada config path(s).

Si suponemos que usas las credenciales correctas, ¿se están enrutando tus solicitudes a través de un proxy con HTTP (en lugar de HTTPS)? En caso afirmativo, revisa si tu proxy está configurado para quitar el encabezado Authorization de estas solicitudes. Si es así, asegúrate de usar HTTPS en lugar de HTTP para tus solicitudes.

403: Prohibido

Problema: Descargo mi contenido público de storage.cloud.google.com y recibo un error 403: Forbidden cuando uso el navegador para acceder al objeto público:

https://storage.cloud.google.com/BUCKET_NAME/OBJECT_NAME

Solución: Si usas storage.cloud.google.com para descargar objetos, realizas lo que se llama una descarga del navegador autenticada; siempre se usa autenticación basada en cookies, incluso cuando los objetos son de acceso público a allUsers. Si configuraste los registros de acceso a los datos en Cloud Audit Logging para realizar un seguimiento del acceso a los objetos, una de las restricciones de esa función es que las descargas autenticadas del navegador no pueden usarse para acceder a los objetos afectados. Para hacerlo, se produce una respuesta 403.

Para evitar este problema, realiza una de las siguientes acciones:

409: Conflicto

Problema: Intenté crear un depósito, pero recibí el siguiente error:

409 Conflict. Sorry, that name is not available. Please try a different one.

Solución: El nombre del depósito que intentaste usar (p. ej., gs://cats o gs://dogs) ya está en uso. Cloud Storage tiene un espacio de nombres global, por lo que no puedes nombrar un bucket con el mismo nombre que un bucket existente. Elige un nombre que no esté en uso.

429: Demasiadas solicitudes

Problema: Mis solicitudes se rechazan con un error 429 Too Many Requests.

Solución: Estás a punto de alcanzar un límite de solicitudes que Cloud Storage permite para un recurso determinado. Consulta las cuotas de Cloud Storage para obtener una discusión sobre los límites en Cloud Storage. Si tu carga de trabajo consta de 1,000 solicitudes por segundo a un bucket, consulta Lineamientos de distribución de acceso y porcentaje de solicitudes para ver un análisis de las prácticas recomendadas, que incluyen aumentar la carga de trabajo de manera gradual y evitar los nombres de archivos secuenciales.

Diagnostica errores de Google Cloud Console

Problema: Cuando uso Google Cloud Console para realizar una operación, recibo un mensaje de error genérico. Por ejemplo, veo un mensaje de error cuando intento borrar un bucket, pero no veo los detalles del motivo por el cual falló la operación.

Solución: Debes usar las notificaciones de Google Cloud Console a fin de ver información detallada sobre la operación que produjo errores, mediante los siguientes pasos:

  1. Haz clic en el botón Notificaciones en el encabezado de Google Cloud Console.

    Notificaciones

    En un menú desplegable, se muestran las operaciones más recientes que realizó Google Cloud Console.

  2. Haz clic en el elemento del que deseas obtener más información.

    Se abrirá una página que muestra información detallada sobre la operación.

  3. Haz clic en cada fila para expandir la información del error detallada.

    A continuación, se muestra un ejemplo de información de error de una operación de eliminación de bucket con errores, que explica que una política de retención de bucket s impidió la eliminación del bucket.

    Detalles del error de la eliminación del bucket

errores de gsutil

Los siguientes son errores comunes de gsutil que puedes encontrar.

gsutil stat

Problema: Intenté usar el comando gsutil stat para mostrar el estado del objeto de un subdirectorio y recibí un error.

Solución: Cloud Storage usa un espacio de nombres plano para almacenar objetos en depósitos. Cuando usas barras ("/") en los nombres de objetos para hacer como si estuvieran en una estructura jerárquica, el comando gsutil stat trata la barra final como parte del nombre del objeto.

Por ejemplo, si ejecutas el comando gsutil -q stat gs://my-bucket/my-object/, gsutil busca información sobre el objeto my-object/ (con una barra final), en lugar de operar en objetos anidados en my-bucket/my-object/. A menos que realmente tengas un objeto con ese nombre, la operación falla.

Para la lista de subdirectorios, usa gsutil ls en su lugar.

gcloud auth

Problema: Intenté autenticar gsutil con el comando gcloud auth, pero todavía no puedo acceder a mis objetos o depósitos.

Solución: Es posible que tu sistema tenga la versión independiente y la versión del SDK de Cloud de gsutil instaladas en él. Ejecuta el comando gsutil version -l y verifica el valor de using cloud sdk. Si es False, tu sistema usa la versión independiente de gsutil cuando ejecutas los comandos. Puedes quitar esta versión de gsutil de tu sistema o puedes autenticar con el comando gsutil config.

Errores de sitios web estáticos

Los siguientes son problemas comunes que puedes encontrar en Aloja un sitio web estático.

Entrega en HTTPS

Problema: Quiero que mi contenido se entregue a través de HTTPS sin usar un balanceador de cargas.

Solución: Puedes entregar el contenido estático a través de HTTPS mediante URI directos como https://storage.googleapis.com/my-bucket/my-object. Si deseas más opciones para entregar el contenido a través de un dominio personalizado con SSL, puedes realizar lo siguiente:

Verificación del dominio

Problema: No puedo verificar mi dominio.

Solución: Normalmente, el proceso de verificación en Search Console te dirige a subir un archivo a tu dominio, pero es posible que no tengas una forma de hacerlo sin tener primero un depósito asociado, que solo puedes crear después de realizar la verificación del dominio.

En este caso, verifica la propiedad. Para ello usa el método de verificación del proveedor de nombres de dominio. Para lograr esto, consulta los pasos en Verificación de propiedad del dominio. Esta verificación se puede hacer antes de crear el bucket.

Página inaccesible

Problema: Recibo un mensaje de error Access denied de una página web que entrega mi sitio web.

Solución: Comprueba que el objeto se comparte públicamente. Si no es así, consulta Haz públicos los datos a fin de obtener instrucciones para hacerlo.

Si anteriormente subiste y compartiste un objeto, pero luego subiste una versión nueva del mismo, entonces debes compartir el objeto públicamente. Esto se debe a que el permiso público se reemplaza por la carga nueva.

No se pudo actualizar el permiso

Problema: Recibo un error cuando intento hacer públicos mis datos.

Solución: Asegúrate de tener el permiso setIamPolicy para tu objeto o bucket. Por ejemplo, este permiso se otorga en la función Storage Admin. Si tienes el permiso setIamPolicy y de todos modos recibes un error, es posible que tu bucket esté sujeto a la prevención del acceso público, que no permite el acceso a allUsers o allAuthenticatedUsers La prevención del acceso público puede establecerse en el bucket directamente o puede aplicarse mediante una política de la organización que se establezca en un nivel superior.

Descarga de contenido

Problema: Se me pide que descargue el contenido de mi página, en lugar de poder verlo en mi navegador.

Solución: Si especificas un MainPageSuffix como un objeto que no tiene un tipo de contenido web, en lugar de entregar a la página, se solicita a los visitantes del sitio que descarguen el contenido. Para resolver este problema, actualiza la entrada de metadatos tipo de contenido a un valor adecuado, como text/html. Consulta Edita los metadatos de objetos a fin de obtener instrucciones para hacer esto.

Latencia

Los siguientes son problemas de latencia comunes que puedes encontrar. Además, el Panel de estado de Google Cloud proporciona información sobre incidentes regionales o globales que afectan a los servicios de Google Cloud, como Cloud Storage.

Latencia de carga o descarga

Problema: Veo un aumento de la latencia cuando utilizo la carga o la descarga.

Solución: Usa el comando gsutil perfdiag para ejecutar diagnósticos de rendimiento del entorno afectado. Ten en cuenta las siguientes causas comunes de latencia de carga y descarga:

  • Restricciones de CPU o memoria: El sistema operativo del entorno afectado debe tener herramientas para medir el consumo de recursos locales, como el uso de CPU y memoria.

  • Restricciones de IO de disco: Como parte del comando gsutil perfdiag, usa las pruebas rthru_file y wthru_file para medir el impacto del rendimiento que causa la IO de disco local.

  • Distancia geográfica: El rendimiento puede verse afectado por la separación física de tu bucket de Cloud Storage y el entorno afectado, en especial en casos de continentes múltiples. Las pruebas con un bucket ubicado en la misma región que tu entorno afectado pueden identificar el grado en el que la separación geográfica contribuye a tu latencia.

    • Si corresponde, el agente de resolución de DNS del entorno afectado debe usar el protocolo EDNS(0) para que las solicitudes del entorno se enruten a través de un Google Front End adecuado.

Gsutil o latencia de biblioteca cliente

Problema: Veo un aumento de la latencia cuando acceso a Cloud Storage con gsutil o una de las bibliotecas cliente.

Solución: Gsutil y las bibliotecas cliente reintentan de forma automática las solicitudes cuando es útil hacerlo, y este comportamiento puede aumentar de forma efectiva la latencia como se ve desde el usuario final. Usa la métrica storage.googleapis.com/api/request_count de Cloud Monitoring para ver si Cloud Storage entrega de manera coherente un código de respuesta que se puede reintentar, como 429 o 5xx.

Servidores proxy

Problema: Me conecté a través de un servidor proxy, ¿qué debo hacer?

Solución: Para acceder a Cloud Storage a través de un servidor proxy, debes permitir el acceso a estos dominios:

  • accounts.google.com para crear tokens de autenticación OAuth2 a través de gsutil config
  • oauth2.googleapis.com para realizar intercambios de tokens OAuth2
  • *.googleapis.com para solicitudes de almacenamiento

Si tu servidor proxy o tu política de seguridad no admiten listas blancas por dominio y, en su lugar, requieren listas blancas por bloqueo de red IP, te recomendamos que configures tu servidor proxy para todos los rangos de direcciones IP de Google. Puedes encontrar los rangos de direcciones con una consulta a los datos de WHOIS en ARIN. Como práctica recomendada, debes revisar con frecuencia tu configuración de proxy para asegurarte de que coincida con las direcciones IP de Google.

No se recomienda configurar el proxy con las direcciones IP individuales que se obtienen de las búsquedas únicas de oauth2.googleapis.com y storage.googleapis.com. Debido a que los servicios de Google están expuestos a través de nombres de DNS que se asignan a una gran cantidad de direcciones IP que pueden cambiar con el tiempo, la configuración de tu proxy en una única búsqueda puede llevar a fallas en la conexión a Cloud Storage.

Si tus solicitudes se enrutan a través de un servidor proxy, es posible que debas consultar a tu administrador de red para asegurarte de que el proxy no borre el encabezado Authorization que contiene tus credenciales. Sin el encabezado Authorization, tus solicitudes se rechazan y recibes un error MissingSecurityHeader.

¿Qué sigue?