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

Die am besten zu programmierende Supercloud mit Cloudflare Snippets

17.11.2022

Lesezeit: 7 Min.
The most programmable Supercloud with Cloudflare Snippets

Ihr Traffic ganz nach Ihrem Geschmack

Der Kundenstamm von Cloudflare ist sehr breit gefächert. Wir bieten benutzerfreundliche Produkte für alle Aufgaben, HTTP-Header einstellen, URL-Pfad umschreiben, URL-Umleitungen durchführen und vieles mehr. Aber manchmal müssen Kunden über die Standardfunktionalität hinausgehen, sie möchten z. B. nicht nur einen HTTP-Header hinzufügen, sondern eine erweiterte Berechnung durchführen, um die Ausgabe zu erstellen. Heute müssten sie dafür eine Feature-Anfrage erstellen und auf die Auslieferung warten, einen Cloudflare Worker schreiben oder diese Änderung „on origin“ – auf ihrer eigenen Infrastruktur – durchführen.

Wir freuen uns, eine einfachere Lösung vorstellen zu können: Cloudflare Snippets. Snippets sind eine neue Art Traffic-Änderungen vorzunehmen, und zwar solche, die Nutzer entweder nicht über unsere produktspezifischen Angebote vornehmen können oder die sie programmatisch vornehmen möchten. Und das Beste daran? Die überwiegende Mehrheit der Kunden wird für die Nutzung von Snippets nichts extra bezahlen.

Die Nutzer haben jetzt die Wahl. Sie können die Aktion über eine Regel ausführen. Oder, wenn mehr Funktionalität benötigt wird, ein Snippet schreiben.  Beides erfordert keine Wartezeit und keine Zusatzkosten (es gilt eine hohe Obergrenze für faire Nutzung). Mit Snippets tun Nutzer, was sie wollen und wann sie wollen. Alles über Cloudflare.

Snippets unterstützt den Import von Code, der in verschiedenen Sprachen geschrieben wurde, wie JavaScript (modern), VCL (veraltet) und Apache .htaccess-Dateien (veraltet). Damit können Kunden veralteten Betriebscode auf unsere Plattform migrieren – und gleichzeitig ihren JavaScript-Betrieb konsolidieren.

Wenn Sie an einem Test interessiert sind, schreiben Sie sich bitte über das Anmeldeformular in die Warteliste für Snippets ein. Wir hoffen, Anfang 2023 die ersten Nutzer für die geschlossene Betaversion zuzulassen.

Warum Snippets bauen?

In den letzten 18 Monaten haben wir eine Reihe von neuen Rules-Produkten veröffentlicht, darunter Transform Rules, Cache Rules, Origin Rules, Config Rules und Redirect Rules. Mit diesen neuen Produkten können unsere Kunden besser kontrollieren, wie wir ihren Traffic auf dem Weg durch unser globales Netzwerk verarbeiten. Die bisherige Resonanz ist überwältigend positiv. Dennoch möchten unsere Kunden gelegentlich über die Standardfunktionalität hinausgehen.

Es gibt immer wieder Anwendungsfälle, bei denen ein Produkt nicht die Funktionalität für die spezielle Situation bietet.  Während beispielsweise Tausende unserer Kunden ihre HTTP-Header-Modifikation mit Transform Rules vornehmen, gibt es immer noch eine kleine Anzahl von Anwendungsfällen, die nicht möglich sind, wie z. B. das Setzen von dynamischen Ablaufzeiten mit Cookies oder das Hashing von Token mit einem Schlüssel.

Genau hier helfen Cloudflare Snippets. Kunden müssen für die Implementierung dieser relativ einfachen Anwendungsfälle nicht mehr die gesamte Cloudflare Workers-Plattform nutzen. Sie müssen auch nicht mehr darauf warten, dass wir ihre Feature-Anfragen entwickeln. Stattdessen können sie einfach ein Snippet von JavaScript ausführen.

Veralteten Code zu Snippets migrieren

Die Varnish Control Language (VCL) wird nur im Kontext von Varnish verwendet. Sie wurde vor etwa 16 Jahren eingeführt und in der Vergangenheit zur Konfiguration von Traffic und Routing für Content Delivery Networks verwendet, da sie für eine Vielzahl von Anwendungsfällen erweiterbar war.

Noch immer nehmen viele Unternehmen mit VCL Routing- und Traffic-Änderungen vor. Während andere Provider die Unterstützung für VCL auslaufen lassen, möchten wir für alle, die diese Sprache gerne verwenden, weiterhin Unterstützung anbieten.

Snippets werden keine reine VCL ausführen. Stattdessen werden wir VCL in einfach zu pflegende Regeln oder Snippets umwandeln. Dafür entwickeln wir einen einfach zu bedienenden Self-Serve-VCL-Konverter, der hochgeladenen VCL-Code analysiert und automatisch Snippets vorschlägt. Und wenn wir eine Übereinstimmung finden, generiert er auch Regelvorschläge für Produkte wie Transform Rules oder Cache Rules.

Dieses Thema wurde zunächst über Project Turpentine gehandhabt, eine Reihe von Tools, mit denen Cloudflare-Mitarbeiter die VCL eines Kunden in eine vorgeschlagene JavaScript-Konfiguration parsen konnten. Dieses JavaScript konnte dann in einen Worker oder eine Reihe von Workern geladen werden.

Snippets führt die Idee und die Prinzipien von Turpentine weiter. Viel weiter. Durch die direkte Integration eines Parsers in das Dashboard bekommen die Nutzer die Zügel direkt in die Hand und haben die Wahl. Sie können uns anweisen, möglichst alles in Rules zu migrieren, während der Restcode in Snippets migriert wird – oder Sie weisen uns an, alles in diskrete Snippets zu migrieren. Sie entscheiden selbst.

Apache htaccess- und NGINX-Konfigurationsdateien behandeln wir auf die gleiche Weise. Das Ziel: Nutzer laden einfach die Dateien aus der Apache- oder NGINX-Konfiguration ihrer Website hoch und wir generieren vorgeschlagene Snippets und/oder Regeln.

Die Zeiten, in denen veralteter Code für operative Aufgaben verwendet werden musste, neigen sich dem Ende zu. Mit Snippets können Nutzer diese Workloads zu Cloudflare migrieren und sich auf die größeren Probleme des Unternehmens konzentrieren, anstatt veraltete Systeme zu pflegen.

Der Unterschied zwischen Snippets und Workern

Die meisten Leser werden bereits mit Cloudflare Workers vertraut sein, unserer leistungsstarken Entwicklerplattform, mit der Unternehmen ganze Produkte und Lösungen auf dem globalen Netzwerk von Cloudflare betreiben und aufbauen können. Snippets basiert ebenfalls auf dieser Plattform, aber mit einigen wichtigen Unterschieden.

Der erste große Unterschied: Ein Snippet wird als Teil der Regelsatz-Engine als eigene neue Phase ausgeführt, ähnlich wie Transform Rules und Cache Rules. Kunden werden ein Snippet auf der Grundlage eines beliebigen Filters der Regelsatz-Engine auswählen und ausführen können. So können Kunden ein Snippet für jede Anfrage ausführen oder auf der Grundlage der von uns angebotenen Felder nach bestimmtem HTTP-Traffic filtern, z. B. nach Traffic mit einem bestimmten Bot Score, aus einem bestimmten Land oder mit einem bestimmten Cookie. Snippets werden additiv sein, d. h. Nutzer können mit einem Snippet einen HTTP-Header hinzufügen und mit einem anderen die URL umschreiben, und beide werden bei Übereinstimmung ausgeführt:

Ein weiterer großer Unterschied: Cloudflare Snippets sind für alle Tarifstufen verfügbar, ohne zusätzliche Kosten. 99 % der Nutzer werden keinen einzigen Cent für die Nutzung dieser Lösung bezahlen – weder jetzt, noch in Zukunft. So können Kunden ihre einfachen Workloads von veralteten Lösungen wie VCL auf die Cloudflare-Plattform migrieren und ihre monatlichen Ausgaben aktiv senken.

Free-Tarife Pro-Tarife Business-Tarife Enterprise-Tarife
Verfügbare Snippets 5 Snippets pro Zone. 20 Snippets pro Zone. 50 Snippets pro Zone. 200 Snippets pro Zone* (Kunden können diese Zahl in Absprache mit ihrem Customer Success Team erhöhen lassen).

Cloudflare Snippets sind im Vergleich zu Workers leichtgewichtig und bieten eine maximale Ausführungszeit von 5 ms, einen maximalen Arbeitsspeicher von 2 MB und eine Gesamtpaketgröße von 32 KB. Dank dieses vergleichsweise geringen Platzbedarfs bieten wir 99 % der Nutzer diese Lösung ohne zusätzliche Kosten an. Gleichzeitig reicht sie aus für die identifizierten Anwendungsfälle wie die Änderung von HTTP Headern, das Umschreiben von URLs und das Routing des Traffics, die alle nicht die enormen Ressourcen der Cloudflare Workers benötigen.

Cloudflare Snippets Cloudflare Workers Unbound
(zum Vergleich)
Runtime-Unterstützung JavaScript JavaScript und WASM
Ausführungsort Global – Alle Cloudflare-Standorte Global – Alle Cloudflare-Standorte
Unterstützte Trigger Filter der Regelsatz-Engine HTTP-Anfrage
HTTP-Antwort
Cron Trigger
Maximale Ausführungszeit 5ms 30 Sek. HTTP
15 Min. (Cron Trigger)
Maximaler Arbeitsspeicher 2MB 128MB
Gesamtpaketgröße 32KB 5MB
Umgebungsvariablen 8/Snippet 64/Worker
Größe der Umgebungsvariablen 1KB 5KB
Unteranfragen 1/Anfrage 1000/Anfrage
Terraform-Unterstützung
Wrangler-Unterstützung
Cron Triggers
Key Value Store
Durable Objects
R2-Integration

Was wird man mit Cloudflare Snippets entwickeln können?

Snippets werden Kunden die Migration ihrer bestehenden Workloads zu Cloudflare ermöglichen. Außerdem eröffnen sie eine Reihe neuer Anwendungsfälle für Kunden. Nachfolgend haben wir drei gängige Beispiele aufgeführt, aber es gibt noch viele weitere.

Beispiel 1: Verdächtige Bots an einen Honeypot senden

Bei der Erstellung von Snippets können Kunden auf Cloudflare-Features zugreifen, die in der Workers-Runtime verfügbar sind, wie zum Beispiel das Bot Score-Feld. Damit können Kunden eine HTTP-Anfrage an einen Honeypot weiterleiten oder mit der Javascript-Funktion RegExp das URL-Konstrukt ändern, das an den Nutzer zurückgesendet wird, wenn der Traffic einen Bot Score unter einem bestimmten Threshold (z. B. 29 und niedriger) aufweist.

…
if (request.cf.botManagement.score < 30) {
const honeypot = "https://example.com/";
return await fetch(honeypot, request);
…
}

Beispiel 2: Änderung eines Cookies

Ein weiterer häufiger Anwendungsfall, für den wir Snippets erwarten, ist die Änderung von Cookies. Die Einsatzmöglichkeiten reichen vom einfachen Setzen einer Ablaufzeit von fünf Minuten mit den JavaScript-Funktionen getTime und setTime bis hin zum Setzen eines dynamischen Cookies auf der Grundlage der Anfragesteller-Attribute des Nutzers zu A/B-Testzwecken.

…
{
let res = await fetch(request);
res = new Response(res.body, res);
// 24h * 60m * 60s * 1000ms = 86400000ms
const expiry = new Date(Date.now() + 7 * 86400000).toUTCString();
const group = request.headers.get("userGroup") == "premium" ? "A" : "B";
res.headers.append(
      "Set-Cookie",
`testGroup=${group}; Expires=${expiry}; path=/`
    );
…

Beispiel 3: Verwaltung von URL-Abfragen

Kunden können Cloudflare Snippets auch für komplexe Operationen einsetzen, z. B. um den Wert der URL-Abfrage zu splicen und selektiv zusätzliche Parameter zu entfernen oder einzufügen. Die Bearbeitung von Abfrage-Strings erfolgt in der Regel mit Transform Rules. Bei Transform Rules ist die set/-Aktion jedoch effektiv eine replace-Aktion. Wenn diese Aktion auf die URL-Abfrage angewandt wird, wird der gesamte Wert, sofern vorhanden, entfernt und auf den vom Nutzer angegebenen Wert gesetzt, d. h. er wird überschrieben. Dies ist ein Problem für Kunden, die gezielt bestimmte Abfrageparameter für passenden Traffic einfügen möchten. Wie das Setzen einer zusätzlichen Abfrage, z. B. ?utm_campaign=facebook, wenn gängige Social Media-Plattformen im User Agent erkannt werden. Mit Snippets können Kunden dieses selektive Entfernen und Einfügen mit einem einfachen Stück JavaScript durchführen, z B.

…
if (userAgent.includes("Facebook")) {
      const url = new URL(request.url);
      const params = new URLSearchParams(url.search);
      params.set("utm_campaign", "facebook");
      url.search = params.toString();
      const transformedRequest = new Request(url, request)
…
}

Wir sind gespannt, welche weiteren Anwendungsfälle Cloudflare Snippets für unsere Kunden erschließen werden.

Heißt es, keine neuen Aktionen zu Regelsätzen mehr?

Die einfache Antwort ist nein! Wir werden unsere No-Code-Aktionen innerhalb der Regelsatz-Engine weiter ausbauen und neue Produkte für die Anforderungen unserer Kunden entwickeln.

Es mag offensichtlich klingen – aber alle Feature-Verbesserungen ergeben sich aus Gesprächen mit Kunden. Durch Gespräche mit den Nutzern von Snippets erfahren wir, welche Anwendungsfälle Snippets in der Praxis lösen und welche Feature-Lücken in unserer Produktpalette noch offen sind. Dann können wir prüfen, ob es sinnvoll ist, diesen Anwendungsfall in ein Produkt zu überführen, oder es bei Snippets zu belassen.

Wir verstehen auch, dass nicht alle Leute Softwareentwickler sind. Wir arbeiten daher daran, Snippets für alle zugänglich zu machen, indem wir Vorlagen in einer Bibliothek bereitstellen, die von den Kunden kopiert und verändert werden können, wobei nur minimale Programmierkenntnisse erforderlich sind. Mit Snippets bedeutet „leistungsstark“ nicht gleich „kompliziert“.

Auf Cloudflare Snippets zugreifen

Snippets befinden sich derzeit in der Entwicklung. Hier können Sie sich auf die Warteliste setzen lassen.

Wir hoffen, ab Anfang 2023 Nutzer in die geschlossene Betaphase aufnehmen zu können, eine offene Betaphase wird folgen.

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.
Developer Week (DE)Snippets (DE)JavaScript (DE)

Folgen auf X

Cloudflare|@cloudflare

Verwandte Beiträge

05. April 2024 um 13:01

Browser Rendering-API allgemein verfügbar, Einführung von Cloudflare Snippets, SWR, und Bereitstellung von Workers for Platforms für alle Nutzer

Browser Rendering-API ist jetzt für alle zahlenden Workers-Kunden verfügbar und bietet auch eine verbesserte Sitzungsverwaltung...

04. April 2024 um 13:05

Neue Tools für die Produktionssicherheit — Gradual Deployments, Source Maps, Rate Limiting und neue SDKs

Heute geben wir fünf Updates bekannt, die Ihnen noch mehr Möglichkeiten bieten: Gradual Deployments, Source Mapped Stack Traces in Tail Workers, eine neue Rate Limiting API, brandneue API SDKs und Updates für Durable Objects – alle mit Blick auf geschäftskritische Produktionsdienste...

03. April 2024 um 13:30

R2 fügt Ereignisbenachrichtigungen, Unterstützung für Migrationen von Google Cloud Storage und eine Speicherebene mit seltenem Zugriff hinzu

Wir freuen uns, drei neue Funktionen für Cloudflare R2 ankündigen zu können: Ereignisbenachrichtigungen, Unterstützung für Migrationen von Google Cloud Storage und eine Speicherebene für seltenen Zugriff...