AEM Edge-functies aem-edge-functions

IMPORTANT
De Functies van AEM Edge zijn a bèta eigenschap. Functies en documentatie kunnen zonder kennisgeving worden gewijzigd. Om zich bij het vroege toegangsprogramma aan te sluiten en te verstrekken terugkoppelt, e-mail ​ aemcs-edgecompute-feedback@adobe.com ​.

Met AEM Edge-functies kunt u JavaScript uitvoeren op de CDN-laag, waardoor de gegevensverwerking dichter bij de eindgebruiker komt te staan. Dit vermindert latentie en maakt responsieve, dynamische ervaringen mogelijk zonder dat u naar uw oorsprong hoeft te gaan.

Vaak voorkomende gevallen van gebruik zijn:

  • Inhoud aanpassen op basis van informatie zoals geolocatie, apparaattype of gebruikerskenmerken
  • Handelend als middleware tussen CDN en uw oorsprong
  • Reacties van externe API’s opnieuw instellen of samenvoegen voordat deze de browser bereiken
  • Door de server gerenderde HTML aan de rand samenstellen en bedienen met inhoud die vanuit meerdere achtergronden is gekoppeld

AEM Edge-functies zijn zowel compatibel met Edge Delivery Services als met de AEM as a Cloud Service Java-stack.

Belangrijkste voordelen key-benefits

Voordeel
Beschrijving
Prestaties
Fast TTFB via edge SSR waarbij volledig gerenderde HTML wordt geretourneerd. De laag-latentie API vraag via parallelle halen en geoptimaliseerde netwerkhop.
SEO/GEO
Server HTML wordt geïndexeerd bij eerste kruipen. Volledig gerenderde inhoud is klaar voor AI-crawlers.
Veiligheid
Houd API-referenties serverzijde, verborgen voor client JavaScript. Verifieer met een identiteitsleverancier en beperk inhoudstoegang.
Personalization
Pas de inhoud aan voordat de pagina wordt geladen op basis van geo- en apparaatsignalen. De kijkers van het publiek van de looppas bij de rand voor gerichte levering.

Vereisten prerequisites

  • Een AEM as a Cloud Service-omgeving
  • Het Profiel van het Product van de Beheerder van AEM op de auteursinstantie van uw milieu van Cloud Service, of de rol van de Manager van de Plaatsing van Cloud Manager in Admin Console voor de plaatsen van Edge Delivery Services
  • Node.js en npm

Instellen setup

Adobe CLI installeren install-adobe-cli

Installeer de Adobe Developer CLI (aio):

npm install -g @adobe/aio-cli

Installeer de insteekmodule AEM Edge-functies:

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

Verifieer en vorm de stop voor uw milieu:

aio login
aio aem edge-functions setup

Met de opdracht setup wordt u gevraagd u aan te melden en vervolgens de AEM-omgeving te selecteren waarop u AEM Edge-functies wilt gebruiken.

Klonen van de Boilerplate boilerplate

Kopieer ​ aem-rand-functies-boilerplate ​ aan uw eigen bewaarplaats, dan installeer gebiedsdelen:

npm install

Uw eerste functie maken create-your-function

De diensten van de Functie van AEM Edge worden verklaard in een YAML configuratiedossier en door de de configuratiepijplijn van Cloud Manager opgesteld.

​1. Opstelling een Pijpleiding van de Configuratie configuration-pipeline

Voordat u een randfunctie maakt, moet u ervoor zorgen dat er een configuratiepijplijn voor uw omgeving in Cloud Manager bestaat. Als niet, ​ creeer eerst een configuratiepijplijn ​.

NOTE
Als u een Snelle Milieu van de Ontwikkeling (RDE) gebruikt, kunt u configuratie direct met aio aem rde:install -t env-config ./config in plaats van het gaan door een configuratiepijplijn opstellen.

​2. Edge-functieservices declareren declare-services

Maak een bestand met de naam edgeFunctions.yaml in de configuratiemap:

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

De configuratie steunt tot drie diensten. De toetsen op hoofdniveau zijn:

Sleutel
Beschrijving
services
Lijst met services voor randfuncties, elk geïdentificeerd door a name.
configs
Sleutel-waardeparen die aan alle diensten van de randfunctie als omgevingsvariabelen worden blootgesteld.
secrets
Sleutel-waardeparen die verwijzen naar de geheimen van Cloud Manager, blootgesteld aan alle diensten van de randfunctie.

​3. CDN-oorsprongsselectieregels toevoegen cdn-routing

De functies van Edge worden aangehaald door verkeer CDN aan hen via oorsprongselectorregels te verpletteren. Voeg het volgende toe aan uw cdn.yaml configuratiebestand (of maak een bestand als het niet bestaat):

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

Met de regels van de oorspronkelijke kiezer kunt u verkeer naar uw randfuncties routeren op basis van een voorwaarde die beschikbaar is in de CDN-regelengine, zoals een specifiek pad, domein of aanvraagkoptekst. Zie ​ de Kiezers van de Oorsprong ​ voor de volledige regelsyntaxis.

​4. Implementeer de configuratie deploy-configuration

Leg zowel edgeFunctions.yaml als cdn.yaml vast op uw Cloud Manager Git-opslagplaats en activeer de configuratiepijplijn. Zodra de pijpleiding met succes voltooit, zijn uw eindpunten van de randfunctie beschikbaar bij:

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

waarbij pXXXXX-eYYYYY de omgevingscoördinaten zijn. Als een aangepast domein wordt gevormd, zijn de functies ook bereikbaar bij die domeinwegen (bijvoorbeeld, example.com/weather).

AEM Edge-functiecode samenstellen en implementeren build-deploy

Opbouwen build

Plaats de Edge-functiecode in een pakket voor de implementatie:

aio aem edge-functions build

Implementeren deploy

Implementeer het ingebouwde pakket op een benoemde Edge-functieservice. Het argument function-name moet overeenkomen met de waarde name in edgeFunctions.yaml :

aio aem edge-functions deploy <function-name>

Lokale ontwikkeling local-development

Lokaal uitvoeren local-run

Start een lokale ontwikkelingsserver op http://127.0.0.1:7676 :

aio aem edge-functions serve

Zie dit ​ de documentatie van JavaScript ​ voor details over wat lokale runtime steunt.

Testen test

Stel de testreeks met ​ Mocha ​ in werking:

npm run test

Foutopsporing op afstand remote-debugging

Adobe Managed CDN stelt geen extern foutopsporingsprogramma beschikbaar, maar maakt logstreaming wel zichtbaar. Tik op de logboeken voor een geïmplementeerde functie om console.log uitvoer rechtstreeks in uw terminal te ontvangen:

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

Cache en cache leegmaken caching

Met Edge-functies kunt u de belasting van de oorsprong aanzienlijk verminderen en de responstijden verbeteren door gegevens aan de rand in cache te plaatsen. Nochtans, vereist het in cache plaatsen opzettelijk ontwerp - met name in de Functies van Edge waar twee onafhankelijke geheim voorgeheugenlagen geïmpliceerd zijn:

Browser → AEM CDN (CDN Cache) → AEM Edge Functions (Fetch Cache) → Backend (AEM, APIs, etc.)

Overweeg voordat u caching configureert hoe de inhoud zich gedraagt:

  • echt uniek-per-verzoek inhoud (zittingstokens, in real time tarifering voor een specifieke gebruiker) zou caching moeten omzeilen vermijden dienend onjuiste resultaten.
  • op cohort-Gebaseerde verpersoonlijking (inhoud die door gebied, apparatentype, of publiekssegment wordt gemaakt) kan vaak met kortere TTLs of Vary kopballen worden in het voorgeheugen ondergebracht, aangezien vele gebruikers de zelfde variant delen.
  • Stabiele, gedeelde inhoud (productcatalogi, de pagina’s van CMS, API reacties die op een bekend programma veranderen) profiteert van agressieve caching met expliciete ongeldigverklaring via vervangings sleutels.
  • het krijgen van het verkeerd in één van beide richting heeft gevolgen. Overcaching veroorzaakt problemen met grote inhoud die moeilijk te diagnosticeren zijn over twee cachelagen. Door ondercaching worden de prestaties en het oorspronkelijke offloaddoel van het gebruik van Edge-functies helemaal genegeerd.

Omdat CDN en het interne haalgeheime voorgeheugen van de Functie van Edge onafhankelijk werken, vereist een verandering in onderliggende gegevens opzettelijke ongeldigverklaring van allebei lagen. Kennis van deze architectuur is essentieel voor betrouwbaar cachebeheer.

Voor de gedetailleerde technische begeleiding bij het vormen in het voorgeheugen onderbrengend gedrag, het controleren van geheim voorgeheugenlevens, gebruikend vervangings sleutels, en het zuiveren caching inhoud, zie ​ Caching in de Functies van AEM Edge ​.

Beperkingen limitations

Elke aanroep van Edge-functies wordt uitgevoerd in een sandbox met bronbeperkingen die worden opgelegd door het onderliggende compute platform.

Maximale uitgaande Vraag van de Optrek per Inroeping max-fetch-calls

De Functies van AEM Edge dwingen een harde grens van 32 achterste verzoeken per uitvoering af (namelijk per inkomend verzoek dat door uw functie wordt behandeld). Wanneer deze limiet is bereikt, mislukken verdere fetch() -aanroepen met de volgende fout:

Requested backend named '…' does not exist

Wanneer u deze fout ziet en uw oorsprongconfiguratie correct is, is de meest waarschijnlijke oorzaak dat het per-aanroepende quotum van het achterste deelverzoek is uitgeput. Zie ​ snel de middelgrenzen van de Compute ​ voor de volledige lijst van platformgrenzen.

Configuratieverwijzing configuration-reference

Oorsprong origins

Standaard kunnen randfuncties van elke oorsprong worden opgehaald. Als u een functie wilt beperken tot een gedefinieerde set van oorsprong, declareert u deze onder origins in edgeFunctions.yaml :

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

Verwijs naar de benoemde oorsprong in uw functiecode met de optie backend Ophalen:

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

Serviceconfiguratie service-configuration

Maak omgevingsvariabelen beschikbaar voor uw functies met de configs -toets in edgeFunctions.yaml . Waarden worden opgeslagen in een config-archief met de naam config_default :

configs:
  - key: LOG_LEVEL
    value: DEBUG

Lees configuratiewaarden in uw functiecode:

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

const config = new ConfigStore('config_default');
const logLevel = config.get('LOG_LEVEL') || 'info';
NOTE
  • De config-opslag krijgt altijd de naam config_default .
  • Sleutelnamen zijn hoofdlettergevoelig.
  • De config opslag wordt gedeeld over alle diensten van de randfunctie in het zelfde milieu.

Service Secrets service-secrets

Er wordt in edgeFunctions.yaml naar geheimen verwezen, niet opgeslagen. Het veld value moet verwijzen naar een Cloud Manager-geheim met de syntaxis ${{SECRET_REFERENCE}} . Bepaal het onderliggende geheim in Cloud Manager eerst — zie ​ de Geheime Variabelen van Cloud Manager ​.

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

Haal geheimen in de functiecode op met behulp van de SecretStoreManager helper van de tekstbouwsteen:

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

const apiToken = await SecretStoreManager.getSecret('API_TOKEN');
NOTE
  • De geheime opslag krijgt altijd de naam secret_default .
  • Sleutelnamen zijn hoofdlettergevoelig.
  • Geheimen zijn onveranderlijk zodra gecreeerd.
  • De geheime opslag wordt gedeeld over alle diensten van de randfunctie in het zelfde milieu.

Logboekregistratie logging

De Functies van AEM Edge integreren met het ​ Logboek van AEM Door:sturen ​ eigenschap. Maak een logForwarding.yaml -bestand naast uw 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"

Gebruik logger in uw functiecode om gestructureerde logboekingangen te schrijven:

import { Logger } from "fastly:logger";

const logger = new Logger("customerSplunk");
logger.log(JSON.stringify({
  method: event.request.method,
  url: event.request.url
}));
NOTE
CDN-logbestanden — waaronder AEM Edge Function-logitems — kunnen vanuit Cloud Manager worden gedownload voor Java-stapelomgevingen, maar niet voor Edge Delivery Services-sites.
recommendation-more-help
experience-manager-cloud-service-help-main-toc