Google Cloud Storage (GCS) es una excelente opción para que las aplicaciones gestionen sus datos no estructurados a un costo muy bajo. Las aplicaciones pueden usar las APIs de GCS para integrarse o compartir una URL directa de GCS y así subir o descargar archivos. GCS también permite cargar datos en varias partes o fragmentos mediante cargas reanudables.

Cargas a prueba de fallos en Google Cloud Storage
La ventaja de una carga reanudable frente a una carga única es que las aplicaciones se vuelven resilientes ante la disponibilidad de la red: pueden subir partes de los datos cuando hay conexión y pausarse cuando esta se interrumpe. Como resultado, también se reducen los costos de ancho de banda, porque no tienes que reiniciar desde cero la carga de archivos grandes.
Un ejemplo: cuando se suben fotos o documentos desde una app móvil al servidor solo por WiFi, la app puede pausar automáticamente la carga al cambiar a datos móviles y reanudarla al volver a WiFi.
Los buckets de GCS exponen una URL de endpoint para hacer llamadas a la API de la siguiente manera:

Siempre conviene ocultar al usuario final los detalles de implementación y las herramientas que se usan en una aplicación de software. El mismo principio aplica a los buckets de GCS dentro de nuestra aplicación, y la recomendación es usar una URL personalizada para exponerlos.
Para acceder a los buckets de GCS mediante URLs personalizadas como https://mydrive.
Pasos para conectar un Backend Bucket con un bucket de GCS
- Inicia sesión en la consola de GCP y selecciona Network Services -> Load Balancing en la barra de navegación izquierda.

2. Haz clic en "Create Load Balancer".

3. Selecciona "HTTP(S) Load Balancing" y haz clic en "Start Configuration".

4. Selecciona "From Internet to my VMs", ya que los clientes en internet van a interactuar con el bucket.

5. Ponle un nombre a tu balanceador de carga y selecciona Backend buckets en la Backend configuration.

6. Asigna un nombre a tu backend bucket y selecciona un bucket de Cloud Storage para que interactúe con este servicio. En mi caso, el bucket de GCS es de acceso público para reducir la complejidad de obtener y enviar el token de autorización en las llamadas a la API.

7. Una vez creado el Backend bucket, deberías ver el listado de Backend buckets.

8. La Frontend configuration conecta la dirección IP estática al balanceador de carga para que nuestros servicios interactúen con el bucket de GCS.

9. Revisa y finaliza la configuración.

10. El servicio de Backend bucket queda creado correctamente, como se muestra abajo.

Una vez que el servicio de Backend bucket y el balanceador de carga estén conectados mediante una IP estática, ya podemos ejecutar las APIs de GCS desde nuestra IP personalizada (o una URL si la IP está asociada a un nombre de dominio).
Obtener el listado de objetos de un bucket
Ejecuta el siguiente comando curl:

Cuerpo de la respuesta recibida:

Subir un solo objeto a un bucket
Comando curl para subir "map.png" como "worldmap_001.png" al bucket de GCS.

Consulta el listado de objetos para verificar que "worldmap_001.png" existe en el bucket de GCS.
Subir varias partes de un archivo con URL reanudable
Divide el archivo "map.png" de 312806 bytes en dos partes, en múltiplos de 256 kilobytes. La API de URL reanudable de Google Cloud Storage exige que cada parte que se sube sea múltiplo de 256kb, salvo la parte final.

- Invoca la API "uploadType=resumable" para obtener la URL de ubicación desde el cliente REST POSTMAN o cualquier otro cliente REST.

2. Toma la URL de ubicación de la respuesta para subir las partes.

3. Sube la 1ª parte, "xaa", al bucket usando el cliente POSTMAN. Asegúrate de que el header "Content-Range" tenga un valor de 0 a ("Content-Length" - 1).

4. La respuesta de la llamada de carga llega con el código HTTP "308 Resume Incomplete".

5. Sube la 2ª parte (la parte final), "xab", al bucket.

6. Tras subir la parte final, se recibe el código HTTP "200 OK".

7. Revisa el bucket para confirmar la imagen subida (map.png).
