Modifique HTTP los encabezados al migrar de F5 a un Application Load Balancer en AWS - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Modifique HTTP los encabezados al migrar de F5 a un Application Load Balancer en AWS

Creado por Sachin Trivedi () AWS

Entorno: PoC o piloto

Origen: En las instalaciones

Objetivo: Nube AWS

Tipo R: redefinir la plataforma

Carga de trabajo: todas las demás cargas de trabajo

Tecnologías: Redes; nube híbrida; migración

AWSservicios: Amazon CloudFront; Elastic Load Balancing (ELB); AWS Lambda

Resumen

Cuando migra una aplicación que utiliza un balanceador de carga de F5 a Amazon Web Services (AWS) y quiere usar un balanceador de carga de aplicaciones AWS en Amazon, la migración de las reglas de F5 para las modificaciones de encabezados es un problema habitual. Un Application Load Balancer no admite modificaciones de encabezados, pero puedes usar Amazon CloudFront como red de entrega de contenido (CDN) y Lambda @Edge para modificar encabezados.

Este patrón describe las integraciones necesarias y proporciona un código de ejemplo para la modificación del encabezado mediante AWS CloudFront Lambda @Edge.

Requisitos previos y limitaciones

Requisitos previos 

  • Aplicación local que usa un balanceador de cargas de F5 con una configuración que reemplaza el valor del encabezado mediante el HTTP uso. if, else Para obtener más información sobre esta configuración, consulte HTTP: :header en la documentación del producto de F5. 

Limitaciones

  • Este patrón se aplica a la personalización del encabezado del equilibrador de carga de F5. Para otros equilibradores de carga de terceros, por favor consulte la documentación del equilibrador de carga para obtener información de soporte.

  • Las funciones de Lambda que utilice para Lambda@Edge deben estar en la región Este de EE. UU. (Norte de Virginia).

Arquitectura

El siguiente diagrama muestra la arquitectura activaAWS, incluido el flujo de integración entre este CDN y otros AWS componentes.

Arquitectura para la modificación de encabezados mediante Amazon CloudFront y Lambda @Edge

Herramientas

AWSservicios

  • Application Load Balancer ─ Un Application Load Balancer es AWS un servicio de balanceo de carga totalmente gestionado que funciona en la séptima capa del modelo de interconexión OSI de sistemas abiertos (). Equilibra el tráfico entre varios destinos y admite solicitudes de enrutamiento avanzadas basadas en HTTP encabezados y métodos, cadenas de consulta y enrutamiento basado en hosts o rutas.

  • Amazon CloudFront: Amazon CloudFront es un servicio web que acelera la distribución de su contenido web estático y dinámico, como .html, .css, .js y archivos de imagen, a sus usuarios. CloudFront entrega su contenido a través de una red mundial de centros de datos denominados ubicaciones perimetrales para reducir la latencia y mejorar el rendimiento.

  • Lambda @Edge ─ Lambda @Edge es una extensión de AWS Lambda que permite ejecutar funciones para personalizar el contenido que se entrega. CloudFront Puede crear funciones en la región EE.UU. Este (Virginia del Norte) y, a continuación, asociarlas a una CloudFront distribución para replicar automáticamente el código en todo el mundo, sin aprovisionar ni administrar servidores. Esto reduce la latencia y mejora la experiencia del usuario.

Código

El siguiente código de ejemplo proporciona un plan para modificar los encabezados de CloudFront respuesta. Siga las instrucciones de la sección Epics para implementar el código.

exports.handler = async (event, context) => {     const response = event.Records[0].cf.response;     const headers = response.headers;     const headerNameSrc = 'content-security-policy';     const headerNameValue = '*.xyz.com';     if (headers[headerNameSrc.toLowerCase()]) {         headers[headerNameSrc.toLowerCase()] = [{             key: headerNameSrc,             value: headerNameValue,         }];         console.log(`Response header "${headerNameSrc}" was set to ` +                     `"${headers[headerNameSrc.toLowerCase()][0].value}"`);     }     else {             headers[headerNameSrc.toLowerCase()] = [{             key: headerNameSrc,             value: headerNameValue,             }];     }     return response; };

Epics

TareaDescripciónHabilidades requeridas
Crea una distribución CloudFront web.

En este paso, crea una CloudFront distribución para indicar desde CloudFront dónde quiere que se entregue el contenido y los detalles sobre cómo realizar el seguimiento y gestionar la entrega del contenido.

Para crear una distribución mediante la consola, inicie sesión en la consola de AWS administración, abra la CloudFront consola y, a continuación, siga los pasos de la CloudFront documentación.

Administrador de la nube
TareaDescripciónHabilidades requeridas
Crear e implementar la funcion Lambda@Edge.

Puede crear una función Lambda @Edge mediante un blueprint para modificar CloudFront los encabezados de respuesta. ( bluePrints Hay otros disponibles para diferentes casos de uso; para obtener más información, consulte las funciones de ejemplo de Lambda @Edge en la CloudFront documentación). 

Para crear una función de Lambda@Edge:

  1. Inicie sesión en la consola AWS de administración y abra la consola AWS Lambda en. https://console.aws.amazon.com/lambda/

  2. Asegúrese de estar en la región EE.UU. Este (Norte de Virginia). CloudFront los planos solo están disponibles en esta región.

  3. Seleccione Crear función.

  4. Seleccione Usar un esquema y, a continuación, introduzca cloudfront en el campo de búsqueda Esquemas

  5. Elija el cloudfront-modify-response-headerplano y, a continuación, elija Configurar.

  6. En la página Información básica, facilite la siguiente información:

    1. Escriba un nombre de función.

    2. En Función de ejecución, elija Crear una nueva función a partir de plantillas de AWS políticas.

    3. Asocie el nombre de rol de AWS Identity and Access Management (IAM) requerido.

  7. Seleccione Crear función.

  8. En la sección Diseñador de la página, elija el nombre de la función.

  9. En la sección Código de función, sustituya el código de plantilla por el código de muestra proporcionado anteriormente en este patrón, en la sección Código.

  10. En el código de muestra, reemplace xyz.com por el nombre de su dominio.  

  11. Seleccione Guardar.

AWSadministrador
Implemente la función de Lambda@Edge.

Siga las instrucciones del paso 4 del tutorial: Creación de una función Lambda @Edge sencilla de la CloudFront documentación de Amazon para configurar el CloudFront activador e implementar la función.

AWSadministrador

Recursos relacionados

CloudFront documentación