Subscribe to receive notifications of new posts:

R2 jetzt allgemein verfügbar

09/21/2022

5 min read
R2 is now Generally Available

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.

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.

// Zuerst importieren wir wie üblich unsere Bindungen
import {
  S3Client,
  ListBucketsCommand,
} from "@aws-sdk/client-s3";

// Dann erstellen wir einen neuen Client. Beachten Sie, dass R2 zwar eine Region für die S3-Kompatibilität erfordert, aber nur „auto“ unterstützt wird
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
  },
});

// Und jetzt können wir unseren Client verwenden, um zugehörige Buckets aufzulisten, genau wie bei jedem anderen S3-kompatiblen Objektspeicher
console.log(
  await S3.send(
    new ListBucketsCommand('')
  )
);

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

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.

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const key = url.pathname.slice(1); // wir leiten einen Schlüssel aus dem Url-Pfad ab

    switch (request.method) {
       // Bei Schreibvorgängen erfassen wir den Text der Anfrage und schreiben ihn unter dem zugehörigen Schlüssel in unseren Bucket.
      case 'PUT':
        await env.MY_BUCKET.put(key, request.body);
        return new Response(`Put ${key} successfully!`);

       // Für Lesevorgänge verwenden wir unseren Schlüssel, um einen Lookup durchzuführen.
      case 'GET':
        const object = await env.MY_BUCKET.get(key);

         // wenn wir den angegebenen Schlüssel nicht finden, geben wir einen 404-Fehler aus
        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,
        });
    }
  },
};

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

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.

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

// Mit getSignedUrl können wir eine benutzerdefinierte URL mit einer Gültigkeitsdauer von einer Stunde erzeugen, die es unserem Nutzer ermöglicht, sein Hundebild hochzuladen
console.log(
  await getSignedUrl(S3, new PutObjectCommand({Bucket: 'my-bucket-name', Key: 'dog.png'}), { expiresIn: 3600 })
)

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

Ö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

We protect entire corporate networks, help customers build Internet-scale applications efficiently, accelerate any website or Internet application, ward off DDoS attacks, keep hackers at bay, and can help you on your journey to Zero Trust.

Visit 1.1.1.1 from any device to get started with our free app that makes your Internet faster and safer.

To learn more about our mission to help build a better Internet, start here. If you're looking for a new career direction, check out our open positions.
GA Week (DE)General Availability (DE)Cloudflare Workers (DE)R2 Storage (DE)Deutsch

Follow on X

Aly Cabral|@Aly_Cabral
Cloudflare|@cloudflare

Related posts

September 20, 2022 1:30 PM

Cloudflare Area 1 – der beste Sicherheitsservice für E-Mails wurde nochmals optimiert

Cloudflare hat 2020 begonnen, Area 1 zu nutzen, und das Unternehmen zwei Jahre später übernommen. Zuvor entfielen gut 90 % aller Cyberangriffe auf Phishing, doch mit dem Einsatz von Area 1 wurde dieses Problem über Nacht so gut wie beseitigt...