Funciones de Edge de AEM aem-edge-functions

IMPORTANT
Funciones de AEM Edge es una característica beta. Las funciones y la documentación pueden cambiar sin previo aviso. Para unirse al programa de acceso anticipado y proporcionar comentarios, envíe un correo electrónico a aemcs-edge-functions-feedback@adobe.com.

AEM Edge Functions le permite ejecutar JavaScript en la capa de CDN, lo que acerca el procesamiento de datos al usuario final. Esto reduce la latencia y permite experiencias dinámicas y adaptables sin necesidad de realizar un viaje de ida y vuelta al origen.

Los casos de uso comunes incluyen los siguientes:

  • Personalización del contenido en función de información como la geolocalización, el tipo de dispositivo o los atributos del usuario
  • Actuación como middleware entre la CDN y su origen
  • Volver a dar formato o agregar respuestas desde API de terceros antes de que lleguen al explorador
  • Composición y servicio de HTML procesados por el servidor en el perímetro mediante contenido vinculado de varios backends

Las funciones de AEM Edge son compatibles con Edge Delivery Services y con la pila Java de AEM Cloud Service.

Principales ventajas key-benefits

Ventaja
Descripción
Rendimiento
TTFB rápido a través de SSR perimetral que devuelve HTML completamente procesado. Llamadas de API de baja latencia a través de recuperaciones paralelas y saltos de red optimizados.
SEO / GEO
Server HTML se indexa al rastrear por primera vez. El contenido completamente procesado está listo para los rastreadores de IA.
Seguridad
Mantenga las credenciales de la API del lado del servidor ocultas de la JavaScript del cliente. Autenticar con un proveedor de identidad y restringir el acceso al contenido.
Personalización
Personalice el contenido antes de que la página se cargue en función de las señales geográficas y de dispositivo. Ejecute búsquedas de audiencia en el perímetro de para la entrega segmentada.

Requisitos previos prerequisites

  • Un entorno de AEM as a Cloud Service
  • El perfil de producto del administrador de AEM en la instancia de autor de su entorno de Cloud Service, o la función de administrador de implementación de Cloud Manager en los sitios de Admin Console para Edge Delivery Services
  • Node.js y npm

Configuración setup

Instalación de la CLI de Adobe install-adobe-cli

Instale la CLI de Adobe Developer (aio):

npm install -g @adobe/aio-cli

Instale el complemento Funciones de AEM Edge:

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

Autentique y configure el complemento para su entorno:

aio login
aio aem edge-functions setup

El comando setup le solicita que inicie sesión y, a continuación, seleccione el entorno de AEM en el que desea utilizar las funciones de Edge de AEM.

Clonar la plantilla boilerplate

Copie aem-edge-functions-boilerplate en su propio repositorio y luego instale las dependencias:

npm install

Creación de la primera función create-your-function

Los servicios de funciones de AEM Edge se declaran en un archivo de configuración de YAML y se implementan a través de la canalización de configuración de Cloud Manager.

​1. Configurar una canalización de configuración configuration-pipeline

Antes de crear una función perimetral, asegúrese de que exista una canalización de configuración para su entorno en Cloud Manager. Si no, cree primero una canalización de configuración.

NOTE
Si está usando un entorno de desarrollo rápido (RDE), puede implementar la configuración directamente con aio aem rde:install -t env-config ./config en lugar de pasar por una canalización de configuración.

​2. Declarar los servicios de funciones de Edge declare-services

Cree un archivo con el nombre edgeFunctions.yaml en el directorio de configuración:

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

La configuración admite hasta tres servicios. Las claves de nivel superior son:

Clave
Descripción
services
Lista de servicios de funciones perimetrales, cada uno identificado por un name.
configs
Pares de clave/valor expuestos a todos los servicios de funciones Edge como variables de entorno.
secrets
Pares de clave/valor que hacen referencia a secretos de Cloud Manager, expuestos a todos los servicios de funciones Edge.

​3. Agregar reglas de selector de origen de CDN cdn-routing

Las funciones de Edge se invocan enrutando el tráfico de CDN a ellas a través de reglas de selector de origen. Agregue lo siguiente al archivo de configuración cdn.yaml (o cree uno si no existe):

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

Las reglas del selector de origen permiten dirigir el tráfico a las funciones perimetrales en función de cualquier condición disponible en el motor de reglas de CDN, como una ruta específica, un dominio o un encabezado de solicitud. Consulte Selectores de origen para obtener la sintaxis completa de la regla.

​4. Implementar la configuración deploy-configuration

Confirme tanto edgeFunctions.yaml como cdn.yaml a su repositorio Git de Cloud Manager y almacene en déclencheur la canalización de configuración. Una vez que la canalización se complete correctamente, los puntos finales de la función Edge estarán disponibles en:

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

donde pXXXXX-eYYYYY son las coordenadas de entorno. Si se configura un dominio personalizado, también se puede acceder a las funciones en esas rutas de dominio (por ejemplo, example.com/weather).

Generar e implementar el código de función de AEM Edge build-deploy

Generar build

Empaquete el código de función perimetral para la implementación:

aio aem edge-functions build

Implementación deploy

Implemente el paquete creado en un servicio de función perimetral con nombre. El argumento function-name debe coincidir con el valor name de edgeFunctions.yaml:

aio aem edge-functions deploy <function-name>

Desarrollo local local-development

Ejecutar localmente local-run

Iniciar un servidor de desarrollo local en http://127.0.0.1:7676:

aio aem edge-functions serve

Consulte esta Documentación de cómputo de JavaScript para obtener detalles sobre lo que admite el tiempo de ejecución local.

Prueba test

Ejecute el grupo de pruebas con Mocha:

npm run test

Depuración remota remote-debugging

La CDN administrada por Adobe no expone un depurador remoto, pero sí un flujo de registro. Siga los registros de una función implementada para recibir la salida console.log directamente en el terminal:

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

Referencia de configuración configuration-reference

Orígenes origins

De forma predeterminada, las funciones de Edge pueden recuperarse de cualquier origen. Para restringir una función a un conjunto definido de orígenes, declárelos en origins en edgeFunctions.yaml:

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

Haga referencia al origen con nombre en el código de función mediante la opción de captura backend:

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

Configuración de servicio service-configuration

Exponga las variables de entorno a sus funciones usando la clave configs en edgeFunctions.yaml. Los valores se almacenan en un almacén de configuración denominado config_default:

configs:
  - key: LOG_LEVEL
    value: DEBUG

Lea los valores de configuración en el código de función:

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

const config = new ConfigStore('config_default');
const logLevel = config.get('LOG_LEVEL') || 'info';
NOTE
  • El nombre del almacén de configuración siempre es config_default.
  • Los nombres de clave distinguen entre mayúsculas y minúsculas.
  • El almacén de configuración se comparte en todos los servicios de funciones Edge en el mismo entorno.

Secretos de servicio service-secrets

Se hace referencia a los secretos, no se almacenan, en edgeFunctions.yaml. El campo value debe señalar a un secreto de Cloud Manager mediante la sintaxis ${{SECRET_REFERENCE}}. Defina primero el secreto subyacente en Cloud Manager; consulte Variables secretas de Cloud Manager.

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

Recupere secretos en su código de función utilizando el asistente SecretStoreManager de la plantilla:

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

const apiToken = await SecretStoreManager.getSecret('API_TOKEN');
NOTE
  • El almacén secreto siempre se denomina secret_default.
  • Los nombres de clave distinguen entre mayúsculas y minúsculas.
  • Los secretos son inmutables una vez creados.
  • El almacén secreto se comparte en todos los servicios de funciones perimetrales del mismo entorno.

Registro logging

Las funciones de AEM Edge se integran con la función Reenvío de registros de AEM. Crear un archivo de logForwarding.yaml junto con su 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"

Utilice el registrador en el código de función para escribir entradas de registro estructuradas:

import { Logger } from "fastly:logger";

const logger = new Logger("customerSplunk");
logger.log(JSON.stringify({
  method: event.request.method,
  url: event.request.url
}));
NOTE
Los registros de CDN, que incluyen entradas de registro de funciones de AEM Edge, se pueden descargar desde Cloud Manager para entornos de pila Java, pero no para sitios de Edge Delivery Services.
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab