Ejemplos de configuración de Adobe Managed CDN en AEM as a Cloud Service

Cuando se lanzó AEM as a Cloud Service por primera vez (y hasta el pasado Adobe Summit, en realidad), la única forma de configurar el comportamiento de la CDN era utilizar las configuraciones de Apache para actualizar cache-control lógica y utilizarla para definir el comportamiento de la caché. Pero eso no ayudó con las necesidades más avanzadas que normalmente uno configuraría por su cuenta en un diseño de CDN de traiga su propio en Fastly, Akamai o Cloudflare.
Pero a partir de este punto, hay un nuevo conjunto de funciones de CDN administradas que puede aprovechar en su programa AEM Cloud Service, lo que tiene implicaciones masivas sobre cómo simplificar una configuración híbrida de AEM Cloud Service y AEM Edge Delivery (ahora conocida como "AEM Live").

Este video le brinda una descripción general y, a continuación, analizaré algunos ejemplos de configuración.

Lo que necesitará

En estos ejemplos se supone que está ejecutando AEM as a Cloud Service en una suscripción de pago. Desafortunadamente, estos ejemplos no funcionan con un Sandbox (MUY A MI PESAR), ya que todas las instancias de Sandbox de AEMaaCS comparten una serie de configuraciones, incluida la configuración de CDN. Por lo tanto, los nombres de host personalizados, los certificados SSL personalizados y las configuraciones de CDN personalizadas no podrán probarlos sin una instalación de AEM as a Cloud Service de pago y con licencia.

A continuación, para realizar las funciones de redireccionamiento que se indican a continuación, deberá unirse al programa de adopción temprana y habilitar esta función en su programa AEM como se describe aquí.

Configuración de la canalización de configuración

Lo primero que debe hacer es configurar la configuración en el proyecto AEM.

Cree un directorio de configuración en la raíz de su proyecto llamado /config y coloque un archivo en ese directorio llamado cdn.yaml. (Esa canalización también puede recoger otras configuraciones, que pronto incluirán la siempre esquiva canalización LogForwarding ). Consulte esta documentación para obtener más información.

Puede configurar su canalización para que solo funcione con Dev o configurar canalizaciones de configuración separadas para DEV, STG y PROD. La única forma de probar sus configuraciones será ejecutarlas a través de estas canalizaciones, por lo que definitivamente desea que esto esté separado de su canalización Full-Stack.

Afortunadamente, las canalizaciones de configuración solo tardan entre 1 y 2 minutos en ejecutarse cada vez, por lo que la iteración es en su mayoría indolora.

Un conjunto de ejemplos de problemas a resolver

Como ejemplo de los problemas que hay que resolver con este tipo de configuración, digamos que tienes una configuración con algunos elementos como el siguiente diagrama:

Es decir, tienes:

Con eso, hablemos de algunas de las configuraciones que puede emplear.

Cómo redirigir a diferentes backends en función de la ruta

Supongamos que tienes un mapeo como este:

A continuación, se muestra cómo se configuraría en la asignación de CDN administrada. En primer lugar, las configuraciones asumen que la dirección PREDETERMINADA de todo el tráfico será hacia su pila de AEMaaCS Dispatcher/Publish. No hay forma de decir explícitamente "tal o cual tráfico va a AEMaaCS", solo se dice lo que NO va a AEMaaCS.
Entonces, para este ejemplo:

originSelectors:
    rules:
      - name: support
        when: { reqProperty: path, like: /blog* } 
        action:
          type: selectOrigin
          originName: KRUSTY-WORDPRESS-BLOG
      - name: edge-delivery-site1
        when: 
          allOf: 
            - reqProperty: path
              like: /* 
            - reqProperty: path
              doesNotMatch: /content/dam* 
            - reqProperty: path
              doesNotMatch: /content/test-site*
            - reqProperty: path
              doesNotMatch: /systemready*
            - reqProperty: domain
              doesNotMatch: author* 
        action:
          type: selectOrigin
          originName: edge-delivery-site1
    origins:
      - name: KRUSTY-WORDPRESS-SITE
        domain: whyamiusingthisplatform.com
        forwardHost: false
      - name: edge-delivery-site1
        domain: main--projectname--siteowner.aem.live
        forwardHost: false

Nota sobre lo anterior: hay propiedades que hemos agregado para garantizar que /systemready y /content/test-site* se pasen a AEMaaCS. En este caso, incluso si solo utiliza la instancia de AEM como DAM, las pruebas funcionales OOTB deberán pasar por AEM y producirán un error en las canalizaciones a menos que puedan llegar a AEM.

Cómo hacer una redirección geográfica basada en el país

Para realizar la redirección geográfica basada en el país, puede usar la propiedad clientCountry que viene de forma gratuita en la CDN para basar su redirección.
Tu configuración aquí podría verse así:

data:
  experimental_redirects:
    rules:
## HOMEPAGE REDIRECTS BY GEO
      - name: homepage-redirect-us
        when:
          allOf:
            - reqProperty: clientCountry
              - in: 
                - US
                - CA
                - UK
                - IR 
            - { reqProperty: path, equals: "/" }
        action:
          type: redirect
          location: https://mycoolsite/en/home

Cómo hacer la lógica de redireccionamiento del cliente

Supongamos que tiene una redirección base que desea realizar para su sitio de entrega perimetral antes de que lleguen las solicitudes. Por ejemplo, supongamos que su sitio heredado utilizaba una estructura de directorios basada en la configuración regional (como en_uk, en_sg, en_us, etc.) y ha pasado a un modelo basado en lenguaje más plano (es decir, . solo /en/home). Además, digamos que usaste .html al final de todas las páginas anteriores, pero en Edge Delivery no.
La siguiente lógica de redireccionamiento tomaría cualquier solicitud de página que llegue desde /en_us/home.html y las redirigiría a /en/home.

## LOCALE REDIRECTS BY GEO + STRIP *.HTML
      - name: redirect-en
        when: { reqProperty: path, like: "/en_*" }
        action:
          type: redirect
          status: 302
          location:
            reqProperty: path
            transform:
              - op: replace
                match: '^/en_(..)(.*).html*$'
                replacement: '/en\2' 

Cómo redirigir y conservar la cadena de consulta

En Adobe Managed CDN hay diferentes propiedades para url y path.

      - name: china-redirect-dotgeo
        when:
          allOf:
            - {reqProperty: path, like: "*.geo.html*" }
            - { reqProperty: clientCountry, equals: "CN" }
        action:
          type: redirect
          status: 302
          location:
            reqProperty: url
            transform:
              - op: replace
                match: '^\/(en_us)(.*)\.geo\.html(.*)$'
                replacement: '/zh-cn\2\3'

¡Esperemos que esto ayude!

Sobre el autor

Tad Reeves

Arquitecto Principal en Arbory Digital

Tad ha estado trabajando con productos de Adobe desde 2010 y tiene una amplia experiencia en infraestructura de sitios web. Desde 1996, ha desempeñado casi todos los roles en la entrega de sitios web, desde la arquitectura de soluciones hasta la gestión de productos, y tiene más de dos décadas de experiencia. Le encanta que Arbory le brinde la oportunidad de brindar soluciones honestas y efectivas, incluso si eso significa desafiar las perspectivas de ventas prevalecientes. Cuando Tad no está trabajando, disfruta del ciclismo de montaña y explorar la naturaleza con su esposa y sus 3 hijos.

Contacta con Tad en Linkedin

¿Te gusta lo que escuchaste? ¿Tiene preguntas sobre lo que es adecuado para usted? ¡Nos encantaría hablar! Contáctenos

Episodios de podcast y publicaciones de blog

category
AEM Technical Help, AEM News, Arbory Digital News, Customer Stories, Podcasts
tags
CDN
number of rows
1