Auf dieser Seite finden Sie allgemeine Informationen zur Integration von Plug‑ins in Application Load Balancer von Cloud Load Balancing und Media CDN.
Diese Funktion befindet sich für Media CDN im Vorschaumodus.
Plug‑ins werden im WebAssembly-Format (Wasm) erstellt und verwenden Proxy-Wasm-APIs.
Wasm ist ein offenes und standardisiertes binäres Anweisungsformat, mit dem ein Host Wasm-Module mit vom Kunden bereitgestelltem Code laden und ausführen kann. Wasm bietet eine Reihe von Vorteilen für die Ausführung von Kundencode, darunter Sandboxing für die Sicherheit, Unterstützung für mehrere Sprachen, Portabilität, breite und wachsende Unterstützung in der Branche sowie eine verbesserte Leistung im Vergleich zu anderen VM-basierten Optionen wie JavaScript.
Proxy-Wasm ist ein Open Source-Projekt, das von Google gestartet wurde. Es definiert APIs, mit denen Sie das Verhalten von Netzwerkproxys anpassen können, indem Sie Callbacks implementieren, die während der Verarbeitung von HTTP-Anfragen und ‑Antworten ausgeführt werden.
Funktionsweise von Plug‑ins
Sie können Service Extensions mit Application Load Balancern und Media CDN so verwenden:
Plug‑in mit dem hochgeladenen Plug‑in-Code erstellen.
Plug‑in in Cloud Load Balancing-Erweiterungen oder Media CDN-Erweiterungen konfigurieren.
Plug‑in-Ressourcen
Mit Diensterweiterungen können Sie die folgenden wichtigen Ressourcen erstellen, mit denen Sie benutzerdefinierten Code im Verarbeitungspfad hinzufügen können:
Plug‑ins, die den benutzerdefinierten Code enthalten, den Sie bereitstellen möchten.
Plug‑in-Versionen, die Versionen Ihres Wasm-Moduls sind. Sie können angeben, welche Version Ihres Wasm-Moduls ein Plug‑in als Hauptversion (aktiv) verwenden soll.
Auf Attribute in Plug‑ins zugreifen
Wasm-Plug‑ins können mit dem ABI-Aufruf proxy_get_property, der Teil des Proxy-Wasm-ABI ist, auf weitergeleitete Attribute zugreifen. Der abzurufende Property-Name entspricht dem Attributnamen.
Sie können auf Properties als Pfaddarstellung des Attributnamens zugreifen. Wenn Sie
beispielsweise request.host abrufen möchten, können Sie eine Pfaddarstellung wie
{"request", "host"} verwenden.
Das folgende konzeptionelle Rust-Beispiel zeigt, wie Sie in einer HttpContext-Implementierung auf weitergeleitete Attribute zugreifen:
use proxy_wasm::traits::{HttpContext, RootContext}; use proxy_wasm::types::Action; // ... inside your HttpContext implementation ... fn on_request_headers(&mut self, _num_headers: usize, _end_of_stream: bool)