Jetzt abonnieren, um Benachrichtigungen über neue Beiträge zu erhalten:

R2 jetzt allgemein verfügbar

2022-09-21

Lesezeit: 4 Min.
Dieser Beitrag ist auch auf English, Français, 日本語, Español, Рyсский, Polski, und 简体中文 verfügbar.

R2 bietet Entwicklern Objektspeicher ohne Egress-Gebühren. Vor R2 haben uns die Cloud-Anbieter beigebracht, dass wir jedes Mal mit einer Datenübertragungssteuer rechnen müssen, wenn wir die bei ihnen gespeicherten Daten tatsächlich nutzen. Wer speichert Daten mit dem Ziel, niemals darauf zuzugreifen? Niemand. Doch jedes Mal, wenn Sie Daten lesen, wird die Egress-Steuer verrechnet. R2 gibt Entwicklern die Möglichkeit, frei auf Daten zuzugreifen. Schluss mit der Bindung an ein Ökosystem – endlich sind Anwendungsentwickler wieder frei.

R2 is now Generally Available

Im Mai 2022 haben wir R2 in den offenen Betatest geschickt. In nur vier kurzen Monaten haben unglaubliche 12.000 Entwickler (Tendenz steigend) begonnen, R2 zu nutzen. Diese Entwickler kamen mit einer Vielzahl von Anwendungsfällen zu uns, von Podcast-Anwendungen über Videoplattformen bis hin zu E-Commerce-Websites, und Nutzern wie Vecteezy, der sechsstellige Beträge für Egresss-Gebühren ausgab. Wir haben schnell gelernt, großartiges Feedback erhalten und freuen uns, heute ankündigen zu können, dass R2 jetzt allgemein verfügbar ist.

Wir würden Sie nicht bitten, auf eine Technologie zu setzen, die wir nicht selbst auch einsetzen. Während der offenen Beta-Phase haben wir Zeit damit verbracht, unsere eigenen Produkte auf R2 umzustellen. Ein solches Beispiel ist Cloudflare Images, das Tausende von Kunden in der Produktion bedient und jetzt von R2 unterstützt wird.

Was können Sie von R2 erwarten?

S3-Kompatibilität

R2 bietet Entwicklern eine vertraute Schnittstelle für Objektspeicher, die S3-API. Dank der S3-Kompatibilität können Sie Ihre Anwendungen problemlos migrieren und die Vorteile, die R2 bietet, sofort nutzen.

Lassen Sie uns einen Blick auf einige grundlegende Datenoperationen in Javascript werfen. Um dies selbst auszuprobieren, müssen Sie einen Zugangsschlüssel generieren.

Unabhängig der Programmiersprache, die S3-API wirkt vertraut. Wir haben Beispiele in Go, Java, PHP, und Ruby.

// First we import our bindings as usual
import {
  S3Client,
  ListBucketsCommand,
} from "@aws-sdk/client-s3";

// Then we create a new client. Note that while R2 requires a region for S3 compatibility, only “auto” is supported
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
  },
});

// And now we can use our client to list associated buckets just like we would with any other S3 compatible object storage
console.log(
  await S3.send(
    new ListBucketsCommand('')
  )
);

Region: Automatisch

Wir wollen nicht in einer Welt leben, in der Entwickler ihre Zeit damit verbringen, in eine Kristallkugel zu schauen und vorherzusagen, woher der Anwendungs-Traffic kommen könnte. Wenn Sie sich im ersten Schritt der Anwendungsentwicklung für eine Region entscheiden, müssen Sie Optimierungsentscheidungen treffen, lange bevor die ersten Nutzer eintreffen.

Bei der S3-Kompatibilität müssen Sie eine Region angeben, aber die einzige Region, die wir unterstützen, ist „auto“. Heute wählt R2 automatisch einen Bucket-Speicherort in der Region aus, die der Anforderung zum Erstellen eines Buckets am nächsten liegt. Wenn ich einen Bucket von meinem Wohnort Austin aus erstelle, wird dieser Bucket in der Austin am nächstgelegenen verfügbaren R2-Region gespeichert.

Künftig wird R2 Datenzugriffsmuster nutzen, um automatisch zu optimieren, wo Daten gespeichert werden, damit der Nutzer sie optimal nutzen kann.

Integration mit Cloudflare Workers

Die Workers-Plattform bietet Entwicklern leistungsstarke Rechenleistung über das Netzwerk von Cloudflare. Wenn Sie mit Workers arbeiten, wird Ihr Code automatisch an mehr als 275 Cloudflare-Standorten auf der ganzen Welt bereitgestellt. In Verbindung mit R2 ermöglicht Workers Entwicklern das Hinzufügen benutzerdefinierter Logik zu ihren Daten ohne jegliche Kosten für die Performance. Workers ist auf Isolates und nicht auf Containern aufgebaut, so dass Sie sich nicht mit langwierigen Kaltstarts herumschlagen müssen.

Lassen Sie uns versuchen, eine einfache REST-API für einen R2-Bucket zu erstellen! Erstellen Sie zunächst Ihren Bucket und fügen Sie dann eine R2-Bindung zu ihrem Worker hinzu.

Über diese Workers-API können wir alle Arten von nützlicher Logik in den Hot Path einer R2-Anfrage einfügen.

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const key = url.pathname.slice(1); // we’ll derive a key from the url path

    switch (request.method) {
      // For writes, we capture the request body and write that out to our bucket under the associated key
      case 'PUT':
        await env.MY_BUCKET.put(key, request.body);
        return new Response(`Put ${key} successfully!`);

      // For reads, we’ll use our key to perform a lookup
      case 'GET':
        const object = await env.MY_BUCKET.get(key);

        // if we don’t find the given key we’ll return a 404 error
        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,
        });
    }
  },
};

Vorsignierte URLs

Manchmal möchten Sie Ihren Nutzern Berechtigungen für bestimmte Objekte in R2 erteilen, ohne dass sie sich umständlich darum kümmern müssen. Über vorab signierte URLs können Sie Ihren Nutzern Berechtigungen für jede beliebige Kombination von Objekt und Aktion erteilen. Erstellen Sie eine vorab signierte URL, damit ein Nutzer eine Datei hochladen oder freigeben kann, ohne Zugriff auf den gesamten Bucket zu erhalten.

Vorgegebene URLs erleichtern Entwicklern die Erstellung von Anwendungen, mit denen Nutzer direkt und sicher auf R2 zugreifen können.

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

// With getSignedUrl we can produce a custom url with a one hour expiration which will allow our end user to upload their dog pic
console.log(
  await getSignedUrl(S3, new PutObjectCommand({Bucket: 'my-bucket-name', Key: 'dog.png'}), { expiresIn: 3600 })
)

Öffentliche Buckets

Wenn Sie den öffentlichen Zugriff für einen R2-Bucket aktivieren, können Sie diesen Bucket für nicht authentifizierte Anfragen freigeben. Dies allein ist zwar nur von begrenztem Nutzen, aber wenn diese Buckets mit einer Domain unter Ihrem Konto bei Cloudflare verknüpft sind, können Sie andere Cloudflare-Funktionen wie Access, Cache und Bot Management nahtlos zusätzlich zu Ihren Daten in R2 aktivieren.

Fazit: Öffentliche Buckets helfen, die Lücke zwischen den domainorientierten Cloudflare-Funktionen und den Buckets, die Sie in R2 haben, zu schließen.

Transparente Preise

R2 wird niemals Egress-Gebühren verrechnen. Das Preismodell hängt allein von drei Faktoren ab: Speichervolumen, Vorgänge Klasse-A (Schreibvorgänge, Auflistungen) und Vorgänge Klasse-B (Lesevorgänge).

  • Der Preis für Speicherplatz beträgt $ 0,015/GB, pro Monat.

  • Vorgänge der Klasse A kosten $ 4,50 /Million.

  • Vorgänge der Klasse B kosten $ 0,36 /Million.

Aber bevor Sie für R2 bezahlen, können Sie sich kostenlos einarbeiten. Die enthaltene Nutzung ist wie folgt:

  • 10 GB-Monate an gespeicherten Daten

  • 1.000.000 Vorgänge der Klasse A, pro Monat

  • 10.000.000 Vorgänge der Klasse B, pro Monat

Was kommt als Nächstes?

Die allgemeine Verfügbarkeit von R2 ist bloß unser erster Schritt in Sachen Objektspeicher. Wir freuen uns darauf, Ihnen mitzuteilen, was wir als nächstes vorhaben.

Object Lifecycles – Lebenszyklen für Objekte

In Zukunft werden Entwickler in R2 die Möglichkeit haben, Richtlinien für Objekte festzulegen. Zum Beispiel die Festlegung einer Richtlinie, die ein Objekt 60 Tage nach dem letzten Zugriff löscht. Mit Object Lifecycles wird die Objektverwaltung in den Objektspeicher verlagert.

Juristische Beschränkungen

Wir haben zwar keine Pläne, Regionen explizit zu unterstützen, aber wir wissen, dass die Datenlokalisierung in vielen Fällen aus Compliance-Gründen wichtig und erforderlich ist. Juristische Beschränkungen ermöglichen es Entwicklern, eine Jurisdiktion wie die „EU“ festzulegen, die verhindert, dass Daten die Jurisdiktion verlassen.

Live-Migration ohne Ausfallzeiten

Bei großen Datensätzen erfolgt die Migration live und laufend, da die Datenübertragung einige Zeit in Anspruch nimmt. Die Cache-Reserve ist eine einfache Möglichkeit, Ihre Assets schnell in eine verwaltete R2-Instanz zu migrieren, um Ihre Egress-Kosten auf Knopfdruck zu senken. In Zukunft werden wir diesen Mechanismus erweitern, so dass Sie jeden Ihrer bestehenden S3-Objektspeicher-Buckets nach R2 migrieren können.

Wir laden alle ein, sich zu registrieren und noch heute mit R2 zu beginnen. Schließen Sie sich der wachsenden Community von Entwicklern an, die mit Cloudflare arbeiten. Wenn Sie Feedback oder Fragen haben, stehen wir Ihnen hier auf unserem Discord-Server zur Verfügung! Wir können es kaum erwarten, zu sehen, was Sie entwickeln werden.

Auf Cloudflare TV ansehen

Wir schützen komplette Firmennetzwerke, helfen Kunden dabei, Internetanwendungen effizient zu erstellen, jede Website oder Internetanwendung zu beschleunigen, DDoS-Angriffe abzuwehren, Hacker in Schach zu halten, und unterstützen Sie bei Ihrer Umstellung auf Zero Trust.

Greifen Sie von einem beliebigen Gerät auf 1.1.1.1 zu und nutzen Sie unsere kostenlose App, die Ihr Internet schneller und sicherer macht.

Wenn Sie mehr über unsere Mission, das Internet besser zu machen, erfahren möchten, beginnen Sie hier. Sie möchten sich beruflich neu orientieren? Dann werfen Sie doch einen Blick auf unsere offenen Stellen.
GA WeekGeneral Availability (DE)Cloudflare WorkersR2 Storage (DE)EntwicklerDeveloper Platform

Folgen auf X

Aly Cabral|@Aly_Cabral
Cloudflare|@cloudflare

Verwandte Beiträge

31. Oktober 2024 um 13:00

Moving Baselime from AWS to Cloudflare: simpler architecture, improved performance, over 80% lower cloud costs

Post-acquisition, we migrated Baselime from AWS to the Cloudflare Developer Platform and in the process, we improved query times, simplified data ingestion, and now handle far more events, all while cutting costs. Here’s how we built a modern, high-performing observability platform on Cloudflare’s network. ...