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: :headeren 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.
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
Tarea | Descripción | Habilidades 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 | Administrador de la nube |
Tarea | Descripción | Habilidades 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:
| 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