O Google Cloud Storage (GCS) é uma excelente alternativa para aplicações armazenarem dados não estruturados a um custo muito baixo. As aplicações podem usar as APIs do GCS para integrar ou compartilhar uma URL direta do GCS para envio ou download de arquivos. O GCS também permite enviar dados em várias partes (chunks) por meio de uploads retomáveis.

Uploads à prova de falhas para o Google Cloud Storage
A vantagem do upload retomável em relação ao upload único é que a aplicação fica resiliente à disponibilidade da rede: ela envia partes dos dados quando há conexão e pausa quando a rede cai de repente. Isso também reduz o custo de banda, já que você não precisa reiniciar do zero o envio de arquivos grandes.
Um exemplo: ao enviar fotos ou documentos de um app mobile para o servidor somente via WiFi, o app pode pausar o upload automaticamente quando o aparelho passa para os dados móveis e retomá-lo assim que o WiFi voltar.
Os buckets do GCS expõem uma URL de endpoint para chamadas de API, conforme abaixo:

É sempre recomendável ocultar do usuário final os detalhes de implementação e as ferramentas usadas em uma aplicação. O mesmo vale para os buckets do GCS dentro da nossa aplicação — daí a recomendação de usar uma URL personalizada para expô-los.
Para acessar buckets do GCS por URLs personalizadas, como https://mydrive.
Como conectar um Backend Bucket a um bucket do GCS
- Acesse o console do GCP e selecione Network Services -> Load Balancing na barra de navegação à esquerda.

2. Clique em "Create Load Balancer".

3. Selecione "HTTP(S) Load Balancing" e clique em "Start Configuration".

4. Selecione "From Internet to my VMs", já que clientes da internet vão interagir com o bucket.

5. Dê um nome ao seu load balancer e, em Backend configuration, escolha Backend buckets.

6. Dê um nome ao seu backend bucket e selecione um bucket do Cloud Storage para conectar a esse serviço de backend. No meu caso, o bucket do GCS está aberto publicamente para reduzir a complexidade de obter e enviar o token de autorização nas chamadas de API.

7. Depois que o Backend bucket for criado, a lista de Backend buckets deve aparecer.

8. A Frontend configuration conecta o IP estático ao load balancer para que nossos serviços consigam interagir com o bucket do GCS.

9. Revise e finalize a configuração.

10. O serviço de Backend bucket deve ficar criado conforme abaixo.

Com o serviço de Backend bucket e o load balancer conectados pelo IP estático, já dá para chamar as APIs do GCS usando o IP personalizado (ou a URL, caso o IP esteja associado a um nome de domínio).
Listar os objetos de um bucket
Execute o comando curl conforme abaixo:

Corpo da resposta retornada:

Enviar um único objeto para um bucket
Comando curl para enviar "map.png" como "worldmap_001.png" no bucket do GCS.

Liste os objetos para confirmar que "worldmap_001.png" está no bucket do GCS.
Enviar um arquivo em várias partes com URL retomável
Divida o arquivo "map.png", de 312806 bytes, em duas partes em múltiplos de 256 kilobytes. A API de URL retomável do Google Cloud Storage exige que cada parte enviada seja múltipla de 256kb, exceto a parte final.

- Chame a API "uploadType=resumable" para obter a URL de localização no cliente REST POSTMAN ou em qualquer outro cliente REST.

2. Pegue a URL de localização da resposta recebida — é por ela que as partes serão enviadas.

3. Envie a 1ª parte, "xaa", para o bucket usando o cliente POSTMAN. Garanta que o header "Content-Range" esteja configurado de 0 até ("Content-Length" - 1).

4. A chamada de upload retorna o status HTTP "308 Resume Incomplete".

5. Envie a 2ª parte (parte final) "xab" para o bucket.

6. Após o envio da parte final, o status HTTP "200 OK" é retornado.

7. Confira no bucket a imagem enviada (map.png).
