Suscríbete para recibir notificaciones de nuevas publicaciones:

R2, ya disponible de forma general

21/09/2022

6 min de lectura
R2 is now Generally Available

R2 ofrece a los desarrolladores almacenamiento de objetos sin las tarifas de salida. Antes de R2, los proveedores de nube nos enseñaron a esperar una tarifa de transferencia de datos cada vez que usábamos los datos que almacenaban para nosotros. ¿Quién almacena datos si no tiene previsto leerlos nunca? Nadie. Con todo, cada vez que lees los datos se aplica la tarifa de salida. R2 brinda a los desarrolladores la capacidad de acceder a los datos libremente, liberando a los creadores de aplicaciones de la dependencia del ecosistema que durante mucho tiempo les han tenido las manos atadas.

En mayo de 2022, lanzamos R2 en la versión beta abierta. En apenas cuatro meses, teníamos la abrumadora cifra de 12 000 desarrolladores que empezaban a utilizar R2 (y la cifra sigue creciendo). Estos desarrolladores acudieron a nosotros con una amplia variedad de casos de uso, desde aplicaciones de podcast a plataformas de vídeo a sitios web de comercio electrónico, y usuarios como Vecteezy, cuyo gasto en tarifas de salida ascendía a cientos de miles de dólares. Hemos aprendido rápidamente, hemos recibido fantásticas opiniones y hoy nos complace anunciar que R2 ya está disponible de forma general.

No te pediríamos que apostaras por tecnología por la que no estuviéramos dispuestos a apostar nosotros mismos. Mientras estábamos en la versión beta abierta, nos dedicamos a mover nuestros propios productos a R2. Por ejemplo, Cloudflare Images, que da servicio a miles de clientes en producción, ya se basa en la tecnología de R2.

¿Qué puedes esperar de R2?

Compatibilidad con S3

R2 brinda a los desarrolladores una interfaz conocida para el almacenamiento de objetos, la API de S3. Con la compatibilidad con S3, puedes migrar fácilmente tus aplicaciones y empezar a aprovechar lo que te ofrece R2 desde el principio.

Veamos algunas operaciones básicas de datos en javascript. Para probarlas por tu cuenta, necesitarás generar una clave de acceso.

// Primero, importamos nuestros enlaces de la forma habitual.
import {
  S3Client,
  ListBucketsCommand,
} from "@aws-sdk/client-s3";

// A continuación, creamos un nuevo cliente. Ten en cuenta que, para la compatibilidad con S3, R2 requiere una región, solo se admite "auto".
const S3 = new S3Client({
  region: "auto",
  endpoint: `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`,
  credentials: {
    accessKeyId: ACCESS_KEY_ID, //  fill in your own
    secretAccessKey: SECRET_ACCESS_KEY, // fill in your own
  },
});

// Y ahora podemos utilizar nuestro cliente para listar los buckets asociados exactamente como lo haríamos con cualquier otro almacenamiento de objetos compatible con S3.
console.log(
  await S3.send(
    new ListBucketsCommand('')
  )
);

Independientemente del lenguaje, la API de S3 ofrece familiaridad. Tenemos ejemplos en Go, Java, PHP y Ruby.

Región: Automática

No queremos vivir en un mundo donde los desarrolladores se dediquen a leer la bola de cristal para predecir de dónde procede el tráfico de las aplicaciones. La elección de una región como primer paso del desarrollo de aplicaciones fuerza las decisiones de optimización mucho antes de que aparezcan los primeros usuarios.

Aunque la compatibilidad con S3 solo requiere que especifiques una región, la única región admitida es "auto". Actualmente, R2 selecciona automáticamente una ubicación de bucket en la región disponible más próxima a la solicitud de creación de bucket. Si creo un bucket desde mi domicilio en Austin, ese bucket se alojará en la región R2 disponible más próxima a Austin.  

En el futuro, R2 utilizará patrones de acceso a datos para optimizar automáticamente dónde se almacenarán los datos para lograr la mejor experiencia del usuario.

Integración de Cloudflare Workers

La plataforma Workers brinda a los desarrolladores una capacidad de computación eficaz en la red de Cloudflare. Cuando realizas la implementación en Workers, tu código se implementa de forma automática en más de 275 ubicaciones de Cloudflare de todo el mundo. Cuando se empareja con R2, Workers permite a los desarrolladores añadir lógica personalizada en sus datos sin sobrecarga en el rendimiento. Workers se basa en aislamientos y no en contenedores y, como resultado, no tienes que esperar interminables arranques en frío.

Intentemos crear una API REST sencilla para un bucket R2. Primero, crea tu bucket y luego añade un enlace R2 a tu Worker.

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const key = url.pathname.slice(1); // Obtendremos una clave de la ruta url.

    switch (request.method) {
       // Para las escrituras, capturamos el cuerpo de la solicitud y lo escribimos en nuestro bucket debajo de la clave asociada.
      case 'PUT':
        await env.MY_BUCKET.put(key, request.body);
        return new Response(`Put ${key} successfully!`);

      // Para las lecturas, utilizaremos nuestra clave para realizar una búsqueda.
      case 'GET':
        const object = await env.MY_BUCKET.get(key);

         // Si no encontramos la clave especificada, devolveremos un error 404.
        if (object === null) {
          return new Response('Object Not Found', { status: 404 });
        }

        const headers = new Headers();
        object.writeHttpMetadata(headers);
        headers.set('etag', object.httpEtag);

        return new Response(object.body, {
          headers,
        });
    }
  },
};

Mediante esta API de Workers, podemos añadir todo tipo de lógica útil a la ruta en caliente de una solicitud R2.

URL preasignadas

A veces querrás dar a tus usuarios permisos a objetos específicos en R2 sin que deban pasar por todo el proceso. Mediante las URL preasignadas, puedes delegar tus permisos a tus usuarios para una combinación única de objeto y acción. Crea una URL preasignada para permitir que un usuario cargue o comparta un archivo sin darle acceso a todo el bucket.

import {
  S3Client,
  PutObjectCommand
} from "@aws-sdk/client-s3";

import { getSignedUrl } from "@aws-sdk/s3-request-presigner";

const S3 = new S3Client({
  region: "auto",
  endpoint: `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`,
  credentials: {
    accessKeyId: ACCESS_KEY_ID,
    secretAccessKey: SECRET_ACCESS_KEY,
  },
});

// Con getSignedUrl, podemos generar un URL personalizado con una caducidad de una hora que permitirá a nuestro usuario final cargar la imagen de su perro.
console.log(
  await getSignedUrl(S3, new PutObjectCommand({Bucket: 'my-bucket-name', Key: 'dog.png'}), { expiresIn: 3600 })
)

Las URL preasignadas facilitan a los desarrolladores la creación de aplicaciones que permiten a los usuarios finales acceder con seguridad directamente a R2.

Buckets públicos

La activación del acceso público a un bucket R2 te permite exponer ese bucket a solicitudes no autenticadas. Aunque esto por sí solo tiene un uso limitado, cuando estos buckets están enlazados a un dominio con tu cuenta de Cloudflare, puedes habilitar otras funciones de Cloudflare, como por ejemplo Access, Cache y la gestión de bots con tus datos en R2.

Conclusión: los buckets públicos ayudan a salvar la distancia entre las funciones de Cloudflare orientadas a dominios y los buckets que tienes en R2.

Precio transparente

R2 nunca aplicará cargos por la salida. El modelo de precios depende exclusivamente de tres factores: volumen de almacenamiento, operaciones de clase A (escrituras, listas) y operaciones de clase B (lecturas).

  • El almacenamiento tiene un precio de 0,015 USD/GB por mes.
  • Las operaciones de clase A cuestan 4,50 USD/millón.
  • Las operaciones de clase B cuestan 0,36 USD/millón.

No obstante, antes de que estés dispuesto a empezar a pagar por R2, te permitimos ponerte en marcha sin coste alguno. El uso incluido es el siguiente:

  • 10 GB - meses de datos almacenados.
  • 1 000 000 operaciones de clase A al mes.
  • 10 000 000 operaciones de clase B al mes.

¿Y después?

La disponibilidad general de R2 es solo el principio de nuestro camino con el almacenamiento de objetos. Nos complace compartir lo que tenemos previsto crear a continuación.

Object Lifecycles

En el futuro, R2 permitirá a los desarrolladores establecer políticas sobre los objetos. Por ejemplo, establecer una política que suprima un objeto 60 días después de que se acceda a él por última vez. Con Object Lifecycles, la gestión de objetos se traslada al almacén de objetos.

Restricciones jurisdiccionales

Aunque no tenemos previsto dar soporte explícito a las regiones, sabemos que la ubicación de los datos es importante para muchos casos de uso de conformidad. Las restricciones jurisdiccionales permitirán a los desarrolladores establecer una jurisdicción como la "UE" que evitaría que los datos salieran de la jurisdicción.

Migración activa sin tiempo de inactividad

Para los conjuntos de datos grandes, las migraciones están activas y en curso, ya que lleva tiempo transferir los datos. Cache Reserve es una forma sencilla de migrar rápidamente tus activos a una instancia de R2 gestionada para reducir tus costes de salida, con solo un clic. En el futuro, ampliaremos este mecanismo para que puedas migrar cualquiera de tus buckets de almacenamiento de objetos S3 existentes a R2.

Invitamos a todos a registrarse y a empezar a utilizar R2 hoy mismo. Únete a la creciente comunidad de desarrolladores que están creando en Cloudflare. Si tienes algún comentario o pregunta, contacta con nosotros en nuestro servidor Discord aquí. Estamos deseando ver lo que creas.

Ver en Cloudflare TV

Protegemos redes corporativas completas, ayudamos a los clientes a desarrollar aplicaciones web de forma eficiente, aceleramos cualquier sitio o aplicación web, prevenimos contra los ataques DDoS, mantenemos a raya a los hackers, y podemos ayudarte en tu recorrido hacia la seguridad Zero Trust.

Visita 1.1.1.1 desde cualquier dispositivo para empezar a usar nuestra aplicación gratuita y beneficiarte de una navegación más rápida y segura.

Para saber más sobre nuestra misión para ayudar a mejorar Internet, empieza aquí. Si estás buscando un nuevo rumbo profesional, consulta nuestras ofertas de empleo.
GA Week (ES)General Availability (ES)Cloudflare Workers (ES)R2 Storage (ES)Español

Síguenos en X

Aly Cabral|@Aly_Cabral
Cloudflare|@cloudflare

Publicaciones relacionadas

20 de septiembre de 2022, 13:30

Cloudflare Area 1: cómo la mejor solución de seguridad del correo electrónico sigue avanzando

A partir de hoy, encontrarás una sección Seguridad del correo electrónico dedicada en tu panel de control de Cloudflare. Es la forma más fácil de que cualquier cliente de Cloudflare se familiarice con la seguridad del correo electrónico de Cloudflare Area 1 y empiece a utilizarla...