es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Flask: No se pudo autenticar el cliente de Google Cloud Storage

Estoy creando una aplicación web en la que puedes cargar y descargar archivos, pero la estoy hospedando en Heroku, por lo que no puedo almacenar los archivos en mi computadora. Decidí usar algo llamado Flask-GoogleStorage, pero requería un “Cliente de Google Cloud Storage”. Fui a la consola de la nube y creé una cuenta de servicio y coloqué la clave privada en mi código, pero sigo obteniendo este error:

[2022-01-03 19:54:20,784] ADVERTENCIA en google_storage: No se pudo autenticar el cliente de Google Cloud Storage

Aquí está el código que estoy usando para configurar el almacenamiento:

app.config['GOOGLE_APPLICATION_CREDENTIALS'] = PRIVATE_SERVICE_KEY
app.config['GOOGLE_STORAGE_LOCAL_DEST'] = UPLOAD_FOLDER
app.config['SERVER_NAME'] = SERVER_NAME

Almacenamiento en la nube de Google

with app.app_context():
files = Bucket(“files”)
storage = GoogleStorage(files)
app.config.update(
GOOGLE_STORAGE_LOCAL_DEST = app.instance_path,
GOOGLE_STORAGE_SIGNATURE = {“expiration”: timedelta(minutes=5)},
GOOGLE_STORAGE_FILES_BUCKET = “files-bucket-id”
)
storage.init_app(app)
“`

Cualquier consejo sería de gran ayuda, ya que nunca he utilizado esta plataforma de Google y estoy bastante perdido.

Si hay alguna forma más fácil de almacenar archivos en línea, también agradecería mucho saber sobre eso.

¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución

    El error que estás recibiendo sugiere que el cliente de Google Cloud Storage no está autenticado correctamente. Aquí hay algunas soluciones potenciales y consejos:

    1. Verificar si la cuenta de servicio tiene los permisos necesarios

    Asegúrate de que la cuenta de servicio que creaste tenga los permisos necesarios para acceder a tu bucket de Google Cloud Storage. Puedes agregar el rol roles/storage.objectAdmin a la cuenta de servicio siguiendo estos pasos:
    – Ve a la página de IAM en la Consola de Cloud (https://console.cloud.google.com/iam-admin/iam)
    – Encuentra la cuenta de servicio que creaste y haz clic en ella
    – Haz clic en el botón “Agregar rol” en la parte superior
    – En el cuadro de diálogo “Seleccionar un rol”, busca “Administrador de objetos de almacenamiento”
    – Haz clic en “Continuar” y luego en “Agregar otro rol” si es necesario
    – Haz clic en “Guardar”

    2. Verificar si la clave de la cuenta de servicio es válida

    Asegúrate de que la clave privada que descargaste al crear la cuenta de servicio sea válida y no esté corrompida. Puedes intentar crear una nueva clave siguiendo estos pasos:
    – Ve a la página de IAM en la Consola de Cloud (https://console.cloud.google.com/iam-admin/iam)
    – Encuentra la cuenta de servicio que creaste y haz clic en ella
    – En la pestaña “Claves”, haz clic en “Agregar clave” y selecciona “JSON”
    – Guarda la nueva clave y actualiza tu código para usar esta clave en lugar de la anterior

    3. Verificar si la variable de entorno está configurada correctamente

    Asegúrate de que la variable de entorno GOOGLE_APPLICATION_CREDENTIALS esté configurada con la ruta correcta del archivo de clave privada. Si el archivo de clave privada no está en el mismo directorio que tu código, debes proporcionar la ruta completa del archivo.

    4. Verificar si el nombre del bucket es correcto

    Asegúrate de que el nombre del bucket que proporcionaste en tu código coincida con el nombre real de tu bucket de Google Cloud Storage.

    5. Considerar utilizar una solución de almacenamiento diferente

    Si aún tienes problemas con Google Cloud Storage, puedes considerar otras soluciones de almacenamiento en la nube, como Amazon S3 o Microsoft Azure Blob Storage. Estos servicios tienen sus propias bibliotecas de Python y pueden ser más fáciles de configurar.

    ¡Espero que estos consejos te ayuden a resolver el problema con Google Cloud Storage!

Comments are closed.