Acelera la integración de Google Cloud Storage en App Engine estándar con autenticación robusta basada en service accounts. Verás cómo habilitar la Google Cloud Storage JSON API, configurar roles y scopes, listar objetos desde Python 2.7 y exponer enlaces en tu frontend para que tus usuarios descarguen documentos antes de solicitar un crédito.
¿Cómo preparar Google Cloud Storage y la API para tu proyecto?
Para distribuir documentos como beneficios, acuerdo principal y acuerdo secundario, se almacena todo en un bucket de Cloud Storage y se sirve al usuario mediante enlaces descargables. En App Engine estándar no se pueden hacer escrituras en disco ni en el sistema operativo, por eso Cloud Storage es la opción para archivos estáticos y documentos.
Crea o usa un bucket y sube los documentos necesarios.
Habilita la Google Cloud Storage JSON API en APIs y servicios.
Verifica el proyecto de App Engine: suele venir con esta API habilitada por defecto, pero confirma su estado.
Define el bucket como una constante en tu capa de vistas para listar objetos.
¿Por qué usar Cloud Storage en App Engine estándar?
No hay escritura en disco local en el ambiente estándar.
Los documentos deben estar disponibles de forma confiable para descarga.
Puedes centralizar archivos importantes y exponer enlaces al frontend.
¿Cómo autenticar con una service account y scopes adecuados?
Una service account permite consumir APIs sin flujos de autenticación complejos. Puedes usar la App Engine default service account o crear una nueva más restrictiva. Asigna el rol adecuado, por ejemplo Storage Admin, y descarga la clave en JSON. Datos clave del archivo: client_email y client_id para los flujos de autorización.
Habilidad: creación de credenciales de Service Account.
Concepto: scopes para lectura, escritura y acceso total según la operación.
Keyword: Google OAuth2 Client, Google API Client, Discovery.
# Python 2.7from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient.discovery import build
# Scopes usados: lectura, escritura y acceso total (coloca aquí los tres scopes de Storage).SCOPES =['scope-lectura','scope-escritura','scope-acceso-total',]SERVICE_ACCOUNT_FILE ='ruta/a/clave-service-account.json'BUCKET ='tu-bucket'# Crear credenciales desde el archivo JSON de la service accountcredentials = ServiceAccountCredentials.from_json_keyfile_name( SERVICE_ACCOUNT_FILE, scopes=SCOPES
)# Construir el cliente de la API de Storage v1service = build('storage','v1', credentials=credentials)deflistar_objetos(bucket): request = service.objects().list(bucket=bucket) response = request.execute()return[item['name']for item in response.get('items',[])]# Ejemplo de usonombres = listar_objetos(BUCKET)for nombre in nombres:print(nombre)
¿Cómo estructurar el helper y pasar datos al frontend?
Crea un helper que inicialice credenciales y el cliente de Storage.
Implementa un método como «lista de objetos» que devuelva los nombres y metadatos.
En la vista, define la constante del bucket y llama al helper.
Envía al frontend los enlaces a los documentos del bucket para descarga.
¿Cómo desplegar y validar el flujo en App Engine?
Con el proyecto listo, despliega una nueva versión y prueba el formulario de solicitud de crédito. Tras registrar al usuario, muestra el listado de documentos y permite abrir cada archivo desde el bucket.