Dar permisos públicos de lectura a un bucket en Google Cloud Storage

Si vas a usar Google Cloud Storage como CDN para distribuir desde ahí los ficheros estáticos de tu web (sea una web dinámica servida por Google AppEngine o cualquier otro hosting), necesitarás dar permisos públicos de lectura a todos los assets (elementos, ficheros) de todo el bucket.

Lo normal es que en la carpeta de recursos estáticos tengas un buen número de ellos, imágenes, hojas de estilo, ficheros js…  y ordenados a su vez por carpetas de tipo de recurso, librerías JS, etc…  Ir de uno en uno desde la consola web, recorriendo por cada carpeta y subcarpeta es un auténtico infierno…  así que…

Usa la linea de comandos para hacerlo de forma recursiva a todo el bucket o a una carpeta del mismo.

Necesitas tener gsutil instalado, pero es realmente fácil, siguiendo estas instrucciones para instalar gsutil: https://cloud.google.com/storage/docs/gsutil_install

Y tal como lo tengas instalado y hayas generado tu fichero de configuración con los permisos de acceso (viene en las instrucciones como hacer, sin miedo, es muy muy fácil), lanza en un terminal el siguiente comando:

gsutil acl ch -r -u AllUsers:R gs://tu_bucket/nombre-de-carpeta

Lo que hace es:

  • Va a trabajar con los ACL (permisos) con al parámetro acl
  • Le indica que va a cambiar permisos con ch
  • Indica que de forma recursiva con -r
  • Le indicas el usuario con -u. En este caso el usuario es “AllUsers
  • Asignamos el permiso a cambiar con :R  (siempre junto al usuario)
  • Por último la ruta origen donde empezar a aplicar dichos cambios

Listo.