AEM Edge-Funktionen aem-edge-functions

IMPORTANT
AEM Edge Functions ist eine Beta-Funktion. Funktionen und Dokumentation können sich ohne Vorankündigung ändern. Um am Early-Access-Programm teilzunehmen und Feedback zu geben, senden Sie eine E-Mail an aemcs-edge-functions-feedback@adobe.com.

Mit den AEM Edge-Funktionen können Sie JavaScript auf CDN-Ebene ausführen, wodurch die Datenverarbeitung näher an den Endbenutzer heranrückt. Dies reduziert die Latenz und ermöglicht responsive, dynamische Erlebnisse ohne einen Roundtrip zu Ihrem Ursprung.

Häufige Anwendungsfälle umfassen:

  • Personalisieren von Inhalten basierend auf Informationen wie Geolokalisierung, Gerätetyp oder Benutzerattributen
  • Fungieren als Middleware zwischen dem CDN und Ihrer Herkunft
  • Umformatieren oder Aggregieren von Antworten von Drittanbieter-APIs, bevor sie den Browser erreichen
  • Erstellen und Bereitstellen von Server-gerenderter HTML am Edge mithilfe von Inhalten, die aus mehreren Backends zusammengefügt wurden

AEM Edge-Funktionen sind sowohl mit Edge Delivery Services als auch mit dem AEM Cloud Service Java-Stack kompatibel.

Wichtigste Vorteile key-benefits

Vorteil
Beschreibung
Leistung
Schnelles TTFB über Edge SSR, das vollständig gerenderte HTML zurückgibt. API-Aufrufe mit geringer Latenz über parallele Abrufe und optimierte Netzwerk-Hops.
SEO/GEO
Server-HTML wird beim ersten crawlen indiziert. Vollständig gerenderte Inhalte sind für KI-Crawler bereit.
Sicherheit
API-Anmeldeinformationen Server-seitig aufbewahren und vor Client-JavaScript verbergen. Authentifizierung bei einem Identitätsanbieter und Einschränkung des Inhaltszugriffs.
Personalisierung
Personalisieren Sie Inhalte vor dem Laden der Seite anhand von Geo- und Gerätesignalen. Führen Sie Zielgruppen-Lookups am Edge für einen zielgerichteten Versand aus.

Voraussetzungen prerequisites

  • Eine AEM as a Cloud Service-Umgebung
  • Das AEM-Administratorproduktprofil in der Autoreninstanz Ihrer Cloud Service-Umgebung oder Rolle "Cloud Manager-Bereitstellungs-Manager“ in Admin Console für Edge Delivery Services Sites
  • Node.js und npm

Einrichtung setup

Installieren des Adobe-CLI install-adobe-cli

Installieren des Adobe Developer-CLI (aio):

npm install -g @adobe/aio-cli

Installieren des AEM Edge-Funktions-Plug-ins:

aio plugins install @adobe/aio-cli-plugin-aem-edge-functions

Authentifizieren und Konfigurieren des Plug-ins für Ihre Umgebung:

aio login
aio aem edge-functions setup

Der Setup-Befehl fordert Sie zur Anmeldung auf und wählt dann die AEM-Umgebung aus, in der Sie AEM Edge-Funktionen verwenden möchten.

Textbaustein klonen boilerplate

Kopieren Sie aem-edge-features-boilerplate in Ihr eigenes Repository und installieren Sie dann die Abhängigkeiten:

npm install

Erstellen der ersten Funktion create-your-function

AEM Edge-Funktions-Services werden in einer YAML-Konfigurationsdatei deklariert und über die Cloud Manager-Konfigurations-Pipeline bereitgestellt.

​1. Einrichten einer Konfigurations-Pipeline configuration-pipeline

Stellen Sie vor dem Erstellen einer Edge-Funktion sicher, dass in Cloud Manager eine Konfigurations-Pipeline für Ihre Umgebung vorhanden ist. Wenn nicht, erstellen ​ zuerst eine KonfigurationsPipeline.

NOTE
Wenn Sie eine schnelle Entwicklungsumgebung (RDE) verwenden, können Sie die Konfiguration direkt mit aio aem rde:install -t env-config ./config bereitstellen, anstatt eine Konfigurations-Pipeline zu verwenden.

​2. Edge-Funktionsdienste deklarieren declare-services

Erstellen Sie eine Datei mit dem Namen edgeFunctions.yaml im Konfigurationsverzeichnis:

kind: "EdgeFunctions"
version: "1"
data:
  services:
    - name: first-function
    - name: second-function
    # Uncomment to enable secrets
    # secrets:
    #   - key: API_TOKEN
    #     value: ${{ API_TOKEN_SECRET }}

Die Konfiguration unterstützt bis zu drei Services. Die Schlüssel der obersten Ebene sind:

Schlüssel
Beschreibung
services
Liste der Edge-Funktions-Services, die jeweils durch eine name gekennzeichnet sind.
configs
Schlüssel/Wert-Paare, die allen Edge-Funktions-Services als Umgebungsvariablen bereitgestellt werden.
secrets
Schlüssel/Wert-Paare, die auf Cloud Manager-Geheimnisse verweisen und für alle Edge-Funktions-Services verfügbar gemacht werden.

​3. Hinzufügen von CDN-Ursprungsauswahlregeln cdn-routing

Edge-Funktionen werden aufgerufen, indem CDN-Traffic über Regeln der Ursprungsauswahl an sie weitergeleitet wird. Fügen Sie der cdn.yaml-Konfigurationsdatei Folgendes hinzu (oder erstellen Sie eine, falls sie nicht vorhanden ist):

kind: 'CDN'
version: '1'
data:
  originSelectors:
    rules:
      - name: route-to-first-function
        when: { reqProperty: path, equals: "/weather" }
        action:
          type: selectAemOrigin
          originName: edgefunction-first-function
      - name: route-to-second-function
        when: { reqProperty: path, equals: "/hello-world" }
        action:
          type: selectAemOrigin
          originName: edgefunction-second-function

Mit den Regeln der Ursprungsauswahl können Sie Traffic basierend auf einer in der CDN-Regel-Engine verfügbaren Bedingung, z. B. einem bestimmten Pfad, einer bestimmten Domain oder einem Anfrageheader, an Ihre Edge-Funktionen weiterleiten. Siehe Ursprungs-Selektoren für die vollständige Regelsyntax.

​4. Bereitstellen der Konfiguration deploy-configuration

Übertragen Sie sowohl edgeFunctions.yaml als auch cdn.yaml in das Cloud Manager-Git-Repository und erstellen Sie einen Trigger für die Konfigurations-Pipeline. Sobald die Pipeline erfolgreich abgeschlossen wurde, sind Ihre Edge-Funktionsendpunkte unter verfügbar:

  • publish-pXXXXX-eYYYYY.adobeaemcloud.com/weather
  • publish-pXXXXX-eYYYYY.adobeaemcloud.com/hello-world

Wo pXXXXX-eYYYYY Ihre Umgebungskoordinaten sind. Wenn eine benutzerdefinierte Domain konfiguriert ist, sind die Funktionen auch über diese Domain-Pfade erreichbar (z. B. example.com/weather).

Erstellen und Bereitstellen des Funktionscodes für AEM Edge build-deploy

Aufbauen build

Verpacken Sie Ihren Edge-Funktions-Code für die Bereitstellung:

aio aem edge-functions build

Bereitstellen deploy

Stellen Sie das erstellte Paket in einem benannten Edge-Funktions-Service bereit. Das function-name-Argument muss mit dem name in edgeFunctions.yaml übereinstimmen:

aio aem edge-functions deploy <function-name>

Lokale Entwicklung local-development

Lokal ausführen local-run

Starten Sie einen lokalen Entwicklungs-Server unter http://127.0.0.1:7676:

aio aem edge-functions serve

In dieser Compute JavaScript-Dokumentation finden Sie Details dazu, was die lokale Laufzeit unterstützt.

Testen test

Ausführen der Test-Suite mit Mokka:

npm run test

Remote-Debugging remote-debugging

Das von Adobe verwaltete CDN stellt keinen Remote-Debugger bereit, stellt jedoch Protokoll-Streaming bereit. Verfolgen Sie die Protokolle für eine bereitgestellte Funktion, um console.log Ausgabe direkt in Ihrem Terminal zu erhalten:

aio aem edge-functions tail-logs <function-name>

Konfigurationsverweis configuration-reference

Ursprünge origins

Standardmäßig können Edge-Funktionen aus jedem beliebigen Ursprung abgerufen werden. Um eine Funktion auf einen definierten Satz von Ursprüngen zu beschränken, deklarieren Sie sie unter origins in edgeFunctions.yaml:

origins:
  - name: my-origin-name
    domain: example.com

Referenzieren Sie die benannte Herkunft in Ihrem Funktionscode mithilfe der backend-Fetch-Option:

const request = new Request("https://example.com/test");
const response = await fetch(request, { backend: "my-origin-name" });

Service-Konfiguration service-configuration

Offenlegung von Umgebungsvariablen für Ihre Funktionen mithilfe der configs in edgeFunctions.yaml. Die Werte werden in einem Konfigurationsspeicher mit dem Namen config_default gespeichert:

configs:
  - key: LOG_LEVEL
    value: DEBUG

Lesen Sie die Konfigurationswerte im Funktionscode:

import { ConfigStore } from "fastly:config-store";

const config = new ConfigStore('config_default');
const logLevel = config.get('LOG_LEVEL') || 'info';
NOTE
  • Der Konfigurationsspeicher hat immer den Namen config_default.
  • Bei Schlüsselnamen wird zwischen Groß- und Kleinschreibung unterschieden.
  • Der Konfigurationsspeicher wird für alle Edge-Funktions-Services in derselben Umgebung freigegeben.

Dienstgeheimnisse service-secrets

Geheimnisse werden in edgeFunctions.yaml referenziert, nicht gespeichert. Das value muss mithilfe der ${{SECRET_REFERENCE}} auf geheime Daten vom Typ Cloud Manager verweisen. Definieren Sie zunächst das zugrunde liegende Geheimnis in Cloud Manager - siehe Cloud Manager-Geheimnisvariablen.

secrets:
  - key: API_TOKEN
    value: ${{ API_TOKEN_SECRET }}

Abrufen von geheimen Daten im Funktionscode mithilfe des SecretStoreManager Helpers aus dem Textbaustein:

import { SecretStoreManager } from "./lib/config";

const apiToken = await SecretStoreManager.getSecret('API_TOKEN');
NOTE
  • Der geheime Speicher heißt immer secret_default.
  • Bei Schlüsselnamen wird zwischen Groß- und Kleinschreibung unterschieden.
  • Geheime Daten sind unveränderlich, sobald sie erstellt wurden.
  • Der geheime Speicher wird für alle Edge-Funktions-Services in derselben Umgebung freigegeben.

Protokollierung logging

AEM Edge-Funktionen sind mit der Funktion AEM- integriert. Erstellen Sie eine logForwarding.yaml Datei zusammen mit Ihrem edgeFunctions.yaml:

kind: "LogForwarding"
version: "1"
metadata:
  envTypes: ["rde", "dev", "stage", "prod"]
data:
  splunk:
    default:
      enabled: true
      host: "splunk-host.example.com"
      token: "${{SPLUNK_TOKEN}}"
      index: "AEMaaCS"

Verwenden Sie den Logger in Ihrem Funktionscode, um strukturierte Protokolleinträge zu schreiben:

import { Logger } from "fastly:logger";

const logger = new Logger("customerSplunk");
logger.log(JSON.stringify({
  method: event.request.method,
  url: event.request.url
}));
NOTE
CDN-Protokolle, die AEM Edge-Funktionsprotokolleinträge enthalten, können für Java-Stack-Umgebungen von Cloud Manager heruntergeladen werden, nicht aber für Edge Delivery Services Sites.
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab