30 de septiembre de 2026 · 5 min de lectura

Cómo hacer público un bucket de Cloudflare R2

Los buckets de R2 son privados de forma predeterminada. Nadie puede leer un archivo sin peticiones firmadas a la API hasta que le das al bucket, de forma explícita, una dirección pública. Hay dos maneras de hacerlo, y se pueden usar a la vez.

Opción 1: conecta un dominio personalizado (recomendado)

Un dominio personalizado sirve el bucket a través de la red de Cloudflare con caché, y te permite usar más adelante reglas de WAF o Cloudflare Access. El dominio tiene que ser una zona de la misma cuenta de Cloudflare que el bucket (sirve tanto la configuración completa como la parcial con CNAME).

  1. En el panel de Cloudflare, ve a R2 Object Storage y selecciona tu bucket.
  2. Abre Settings, busca Custom Domains y selecciona Add.
  3. Escribe un subdominio como files.example.com y selecciona Continue.
  4. Revisa el registro DNS que creará Cloudflare y selecciona Connect Domain.

En unos minutos, el estado pasa de Initializing a Active. A partir de entonces, un objeto con la clave 2026/09/report.pdf está disponible en https://files.example.com/2026/09/report.pdf.

Opción 2: activa la Public Development URL r2.dev

Para una prueba rápida, R2 puede darle al bucket una dirección gestionada por Cloudflare:

  1. Abre los Settings del bucket.
  2. En Public Development URL, selecciona Enable.
  3. Escribe allow para confirmar y selecciona Allow.

Ahora el bucket es accesible en https://pub-<id>.r2.dev/<key>. Cloudflare limita las peticiones a esta URL e indica que está pensada para desarrollo, así que cambia a un dominio personalizado antes de compartir enlaces a gran escala. No se admite apuntar tu propio CNAME a la dirección r2.dev.

Qué expone el acceso público y qué no

  • Solo lectura. El acceso público permite a cualquiera leer los objetos cuya clave conozca. Para subir y eliminar siguen haciendo falta credenciales de la API.
  • Sin listado de directorios. Visitar la raíz del dominio no lista el bucket. Los nombres de objeto aleatorios hacen que los enlaces sean difíciles de adivinar.
  • Todo el bucket. El acceso se aplica por bucket, no por carpeta. Guarda los archivos privados en otro bucket.
  • Caché. De forma predeterminada, Cloudflare solo almacena en caché ciertas extensiones de archivo. Añade una regla de caché si quieres que se almacenen todos los tipos.

Cómo solucionar Access Denied en enlaces de R2

Si un enlace devuelve Access Denied, 401 o 403, comprueba esto por orden:

  1. El enlace usa tu dominio personalizado o la URL r2.dev, no <account-id>.r2.cloudflarestorage.com. Ese host es la API de S3 y siempre exige una firma.
  2. El dominio personalizado aparece como Active y el acceso al bucket figura como Allowed en los ajustes del bucket.
  3. La clave de la URL coincide exactamente con el objeto, incluidas las carpetas y las mayúsculas y minúsculas.

Preguntas frecuentes

¿Es seguro hacer público un bucket de R2?

Lo es para los archivos que quieres compartir. Cualquiera con un enlace puede leer ese archivo, pero no puede listar el bucket, subir ni eliminar. Guarda los datos privados en otro bucket.

¿Un bucket de R2 público cuesta más?

No. R2 no cobra por el tráfico de salida, así que las descargas públicas no suman costes de ancho de banda. Las lecturas cuentan como operaciones de clase B, que tienen una cuota mensual gratuita.

¿Puedo hacer pública solo una carpeta?

No con el acceso público de R2, que se aplica a todo el bucket. Usa un bucket aparte, o mantén el bucket privado y comparte URL prefirmadas.