Saltar al contenido

PONER archivos en Google Cloud Storage (GCS) a través de URL firmadas

Verificamos cada post de nuestro espacio con el objetivo de enseñarte siempre la información certera y actualizada.

Solución:

Finalmente logré PONER archivos en Google Cloud Storage usando URL firmadas. Esto se hizo creando un programa Java simple para simular:

  • Server para firmar y codificar un string como firma.
  • Uploader como un usuario no autenticado que envía la solicitud PUT utilizando solo la firma proporcionada por Server. El navegador se simula utilizando la biblioteca de cliente HTTP de Apache.

Puedes ver la aplicación de demostración aquí.

Realmente no entiendo por qué no funcionó cuando envié a través de la extensión Postman de Chrome.

Aunque el doc dice Content-Type es opcional, en realidad significa que must configurar correctamente content-Type corresponden a su encabezado de solicitud http.

En este caso, debe agregar content-type: text/plain en la firma string.

https://cloud.google.com/storage/docs/access-control/create-signed-urls-program

Tuve problemas con PUT y la URL firmada (con GAE Cloud Endpoints), pero estas son las dos cosas que tenía que hacer:

  1. Asegúrese de tener las últimas dependencias de gradle de GAE. Los generados automáticamente pero Android Studio no siempre son los últimos.
  2. Para PUT necesitas tener tu string para firmar se ve así:

    String url_signature = sign(verb + “n” + contentMD5 + “n” + contentType + “n” + caducidad + “n” + “/” + BUCKET_NAME + “/” + objectName );

Como se explica aquí: https://cloud.google.com/storage/docs/access-control/signed-urls el formato es:

StringToSign = HTTP_Verb + "n" +
               Content_MD5 + "n" +
               Content_Type + "n" +
               Expiration + "n" +
               Canonicalized_Extension_Headers +
               Canonicalized_Resource

Esos retornos “n” son importantes. Si tiene demasiados o no los suficientes, obtendrá ese error. Si no está pasando un contentMD5, por ejemplo, simplemente pase en un vacío string para que obtenga el número correcto de retorno “n”

Si aceptas, eres capaz de dejar un artículo acerca de qué te ha parecido este ensayo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *