Abonnez-vous pour recevoir des notifications sur les nouveaux articles :

La solution R2 est désormais en disponibilité générale

21/09/2022

Lecture: 7 min.
R2 is now Generally Available

La solution R2 permet aux développeurs de profiter d'un service de stockage d'objets, sans les frais de trafic sortant. Avant R2, les fournisseurs de cloud nous ont appris à nous attendre à une taxe sur les transferts de données chaque fois que nous utilisions effectivement les données stockées chez eux. Qui stocke des données dans l'idée de ne jamais les lire ? Personne. Pourtant, à chaque fois que vous consultez vos données, cette taxe de trafic sortant s'applique. En offrant aux développeurs la possibilité d'accéder librement à leurs données, la solution R2 brise l'écosystème de verrouillage propriétaire qui lie depuis longtemps les mains des concepteurs d'applications.

Nous avons lancé le service R2 en bêta ouverte au cours du mois de mai 2022. En tout juste quatre petits mois, nous nous sommes retrouvés submergés par plus de 12 000 développeurs faisant leurs premiers pas avec la solution (un nombre qui reste d'ailleurs en augmentation rapide). Ces développeurs se sont tournés vers nous pour une vaste gamme de scénarios d'utilisation, des applications de podcast aux plateformes vidéo, en passant par les sites d'e-commerce. Nous avons également assisté à l'arrivée d'utilisateurs tels que Vecteezy, qui dépensait des sommes à six chiffres en frais de trafic sortant. Nous avons appris rapidement, bénéficié de retours formidables et sommes heureux d'annoncer aujourd'hui la mise en disponibilité générale de la solution R2.

Nous ne vous demanderions jamais de parier sur une technologie sur laquelle nous ne serions pas prêts à miser nous-mêmes. Nous avons profité de la phase de bêta ouverte pour migrer nos propres produits vers la solution R2. À titre d'exemple, Cloudflare Images, un service qui soutient des milliers de clients lors de la production, est désormais soutenu par R2.

Que pouvez-vous attendre de la solution R2 ?

Compatibilité S3

La solution R2 propose aux développeurs une interface familière pour le stockage d'objets, l'API S3. Grâce à la compatibilité S3, vous pouvez procéder facilement à la migration de vos applications et commencer à tirer parti des avantages de R2 dès la mise en œuvre du service.

Examinons certaines opérations JavaScript de base relatives aux données. Pour les essayer de votre côté, vous aurez besoin de générer une clé d'accès.

// Nous importons tout d'abord nos liaisons, comme à l'accoutumée.
import {
  S3Client,
  ListBucketsCommand,
} from "@aws-sdk/client-s3";

// Nous créons ensuite un nouveau client. Veuillez noter que si la solution R2 nécessite une région pour la compatibilité S3, seul le paramètre « Auto » est pris en charge.
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
  },
});

// À présent, nous pouvons utiliser notre client pour dresser la liste des compartiments associés, tout comme nous le ferions avec n'importe quelle solution de stockage d'objets compatible S3.
console.log(
  await S3.send(
    new ListBucketsCommand('')
  )
);

L'API S3 assure une certaine familiarité, indépendamment du langage utilisé. Nous disposons ainsi d'exemples en Go, Java, PHP et Ruby.

Région : automatique

Nous ne souhaitons pas évoluer dans un monde au sein duquel les développeurs passent du temps à sonder les profondeurs d'une boule de cristal et à tenter de prédire d'où le trafic des applications pourrait provenir. Le choix d'une région en tant que première étape du développement d'une application force la prise de décisions relatives à l'optimisation bien avant l'arrivée des premiers utilisateurs.

Si la compatibilité S3 nécessite la spécification d'une région, le seul paramètre que nous prenons en charge en la matière est « Automatique ». À l'heure actuelle, la solution R2 sélectionne automatiquement un emplacement de compartiment dans la région disponible la plus proche pour répondre à la requête de création de compartiment. Si je crée un compartiment depuis mon domicile d'Austin, ce compartiment résidera dans la région R2 disponible la plus proche d'Austin.  

À l'avenir, la solution R2 s'appuiera sur des modèles d'accès aux données pour optimiser automatiquement l'endroit dans lequel les données sont stockées, afin d'assurer la meilleure expérience utilisateur.

Intégration à Cloudflare Workers

La plateforme Workers offre aux développeurs de puissantes capacités de traitement sur l'ensemble du réseau Cloudflare. Lorsque vous déployez du code sur Workers, ce dernier est déployé sur les plus de 275 emplacements du réseau Cloudflare à travers le monde, et ce automatiquement. Couplée à R2, la plateforme Workers permet aux développeurs d'ajouter une logique personnalisée autour de leurs données, sans impact sur les performances. La solution Workers est bâtie sur l'utilisation d'isolats plutôt que de conteneurs. Vous n'aurez donc plus à composer avec des démarrages à froid particulièrement longs.

Essayons de créer une simple API REST pour un compartiment R2 ! Créez tout d'abord votre compartiment, avant d'ajouter une liaison R2 à votre Worker.

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const key = url.pathname.slice(1); // Nous dérivons une clé du chemin de l'URL

    switch (request.method) {
      // Pour l'écriture, nous capturons le corps de la requête et l'inscrivons dans notre compartiment sous la clé associée.
      case 'PUT':
        await env.MY_BUCKET.put(key, request.body);
        return new Response(`Put ${key} successfully!`);

      // Pour la lecture, nous utiliserons notre clé pour exécuter une opération de recherche.
      case 'GET':
        const object = await env.MY_BUCKET.get(key);

        // Si nous ne trouvons pas la clé associée, nous renverrons une erreur 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,
        });
    }
  },
};

Grâce à cette API Workers, nous pouvons ajouter toutes sortes de logiques utiles au hot path d'une requête R2.

URL présignées

Vous souhaiterez parfois accorder à vos utilisateurs des autorisations d'accès à des objets spécifiques stockés sur R2 sans les faire passer par une procédure d'authentification longue et complexe. Grâce aux URL présignées, vous pouvez déléguer des autorisations à vos utilisateurs pour n'importe quelle combinaison d'objet et d'action. Préparez une URL présignée pour permettre à un utilisateur de télécharger un fichier vers le système ou de partager un fichier sans lui donner accès à l'intégralité du compartiment.

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,
  },
});

// Grâce à la commande getSignedUrl, nous pouvons produire une URL personnalisée assortie d'une durée d'expiration d'une heure qui permettra à notre utilisateur final de télécharger sa photo de chien.
console.log(
  await getSignedUrl(S3, new PutObjectCommand({Bucket: 'my-bucket-name', Key: 'dog.png'}), { expiresIn: 3600 })
)

Les URL présignées permettent aux développeurs de concevoir plus facilement des applications autorisant les utilisateurs finaux à accéder directement à R2, et ce en toute sécurité.

Compartiments publics

La mise en place d'un accès public à un compartiment R2 vous permet d'exposer ce dernier aux requêtes non authentifiées. Si cette opération s'avère d'un intérêt limité en matière d'utilisation, lorsque ces compartiments sont liés sous un domaine de votre compte Cloudflare, vous pouvez activer en toute fluidité d'autres fonctionnalités Cloudflare, comme Access, Cache et la gestion des bots, pour vos données contenues dans R2.

Résultat : les compartiments publics aident à combler l'écart entre les fonctionnalités Cloudflare orientées domaine et les compartiments dont vous disposez dans R2.

Tarification transparente

La solution R2 ne vous facturera jamais de frais de trafic sortant. Le modèle de tarification dépend seulement de trois facteurs : le volume de stockage, les opérations de classe A (écriture, compilation de listes) et les opérations de classe B (lecture).

  • Le stockage est proposé au prix de 0,015 USD par Go et par mois.
  • Les opérations de classe A coûtent 4,50 USD par million.
  • Les opérations de classe B sont facturées 0,36 USD par million.

Toutefois, avant de commencer à débourser quoi que ce soit pour la solution R2, nous vous permettons de faire vos premiers pas absolument gratuitement. Les volumes d'utilisation inclus sont les suivants :

  • 10 Go/mois de données stockées.
  • 1 000 000 d'opérations de classe A par mois.
  • 1 000 000 d'opérations de classe B par mois.

Et ensuite ?

La mise en disponibilité générale de la solution R2 ne constitue que le début de notre parcours dans l'univers du stockage d'objets. Nous sommes impatients de vous communiquer ce que nous prévoyons de développer ensuite.

Cycles de vie des objets

À l'avenir, la solution R2 permettra aux développeurs de définir des politiques relatives aux objets. Par exemple, une politique permettant de supprimer un objet 60 jours après le dernier accès à celui-ci. La fonctionnalité Cycles de vie des objets délègue la gestion des objets au magasin d'objets.

Restrictions juridictionnelles

Nous ne prévoyons pas de prendre explicitement en charge les régions, mais nous savons que l'emplacement des données s'avère important dans de nombreux scénarios de conformité. Les restrictions juridictionnelles permettront aux développeurs de définir une juridiction (p. ex. « UE ») conçue pour empêcher les données de quitter cette dernière.

Migration en direct sans interruption de service

Pour les vastes ensembles de données, les migrations s'effectuent en direct et de manière continue, car le processus de déplacement des données demande du temps. La fonctionnalité Cache Reserve constitue un moyen facile de procéder rapidement à la migration de vos ressources vers une instance R2 gérée. Vous pourrez ainsi réduire vos frais de trafic sortant en cliquant simplement sur un bouton. À l'avenir, nous étendrons ce mécanisme afin de vous permettre de procéder à la migration de n'importe lequel de vos compartiments de stockage d'objets S3 vers R2.

Nous invitons tout le monde à s'inscrire et à commencer à essayer la solution R2 dès aujourd'hui. Rejoignez la communauté croissante de développeurs travaillant sur Cloudflare. Si vous avez des commentaires ou des questions, n'hésitez pas à nous contacter sur notre serveur Discord, disponible ici ! Nous avons hâte de voir ce que vous allez développer.

Regarder sur Cloudflare TV

Nous protégeons des réseaux d'entreprise entiers, aidons nos clients à développer efficacement des applications à l'échelle d'Internet, accélérons tous les sites web ou applications Internet, repoussons les attaques DDoS, tenons les pirates informatiques à distance et pouvons vous accompagner dans votre parcours d'adoption de l'architecture Zero Trust.

Accédez à 1.1.1.1 depuis n'importe quel appareil pour commencer à utiliser notre application gratuite, qui rend votre navigation Internet plus rapide et plus sûre.

Pour en apprendre davantage sur notre mission, à savoir contribuer à bâtir un Internet meilleur, cliquez ici. Si vous cherchez de nouvelles perspectives professionnelles, consultez nos postes vacants.
GA Week (FR)General Availability (FR)Cloudflare Workers (FR)R2 Storage (FR)Français

Suivre sur X

Aly Cabral|@Aly_Cabral
Cloudflare|@cloudflare

Publications associées

22 septembre 2022 à 00:59

Les services régionaux sont désormais disponibles en Inde, au Japon et en Australie

Nous sommes heureux de vous annoncer que nous allongeons notre liste de régions prises en charge par les services régionaux dans le cadre de la Data Localization Suite de Cloudflare. Dès aujourd'hui, nous accueillons l'Inde, le Japon et l'Australie dans la liste des régions pour lesquelles...

20 septembre 2022 à 13:30

Cloudflare Area 1 : comment la meilleure solution de sécurité des e-mails continue encore de s'améliorer

Cloudflare a commencé à utiliser Area 1 en 2020, avant d'acquérir tout bonnement l'entreprise en 2022. Nous avons été particulièrement impressionnés par la manière dont l'hameçonnage, pourtant responsable de plus de 90 % des cyberattaques...