Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Modifiez les en-têtes HTTP lorsque vous migrez de F5 vers un Application Load Balancer sur AWS
Créée par Sachin Trivedi (AWS)
Environnement : PoC ou pilote | Source : Sur site | Cible : AWS Cloud |
Type R : Replateforme | Charge de travail : toutes les autres charges de travail | Technologies : mise en réseau, cloud hybride, migration |
Services AWS : Amazon CloudFront ; Elastic Load Balancing (ELB) ; AWS Lambda |
Récapitulatif
Lorsque vous migrez une application qui utilise un équilibreur de charge F5 vers Amazon Web Services (AWS) et que vous souhaitez utiliser un équilibreur de charge d'application sur AWS, la migration des règles F5 pour les modifications d'en-tête est un problème courant. Un Application Load Balancer ne prend pas en charge les modifications d'en-têtes, mais vous pouvez utiliser Amazon CloudFront comme réseau de diffusion de contenu (CDN) et Lambda @Edge pour modifier les en-têtes.
Ce modèle décrit les intégrations requises et fournit un exemple de code pour la modification des en-têtes à l'aide d'AWS CloudFront et Lambda @Edge.
Conditions préalables et limitations
Prérequis
Application sur site qui utilise un équilibreur de charge F5 avec une configuration qui remplace la valeur d'en-tête HTTP en utilisant.
if, else
Pour plus d'informations sur cette configuration, consultez HTTP : :headerdans la documentation du produit F5.
Limites
Ce modèle s'applique à la personnalisation de l'en-tête de l'équilibreur de charge F5. Pour les autres équilibreurs de charge tiers, consultez la documentation de l'équilibreur de charge pour obtenir des informations d'assistance.
Les fonctions Lambda que vous utilisez pour Lambda @Edge doivent se trouver dans la région USA Est (Virginie du Nord).
Architecture
Le schéma suivant montre l'architecture d'AWS, y compris le flux d'intégration entre le CDN et les autres composants AWS.
![Architecture pour la modification des en-têtes à l'aide d'Amazon CloudFront et Lambda @Edge](images/pattern-img/00abbe3c-2453-4291-9b24-b488dced4868/images/4ee9a19e-6da2-4c5a-a8bc-19d3918a166e.png)
Outils
Services AWS
Application Load Balancer ─ Un Application Load Balancer est un service d'équilibrage de charge entièrement géré par AWS qui fonctionne au niveau de la septième couche du modèle d'interconnexion des systèmes ouverts (OSI). Il équilibre le trafic entre plusieurs cibles et prend en charge les demandes de routage avancées basées sur les en-têtes et les méthodes HTTP, les chaînes de requête et le routage basé sur l'hôte ou le chemin.
Amazon CloudFront — Amazon CloudFront est un service Web qui accélère la distribution de votre contenu Web statique et dynamique, tel que les fichiers .html, .css, .js et les fichiers image, à vos utilisateurs. CloudFront diffuse votre contenu via un réseau mondial de centres de données appelés emplacements périphériques pour réduire la latence et améliorer les performances.
Lambda @Edge ─ Lambda @Edge est une extension d'AWS Lambda qui vous permet d'exécuter des fonctions pour personnaliser le contenu diffusé. CloudFront Vous pouvez créer des fonctions dans la région USA Est (Virginie du Nord), puis associer la fonction à une CloudFront distribution pour répliquer automatiquement votre code dans le monde entier, sans provisionner ni gérer de serveurs. Cela réduit le temps de latence et améliore l'expérience utilisateur.
Code
L'exemple de code suivant fournit un modèle pour modifier les en-têtes de CloudFront réponse. Suivez les instructions de la section Epics pour déployer le code.
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; };
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Créez une distribution CloudFront Web. | Au cours de cette étape, vous créez une CloudFront distribution indiquant d' CloudFront où vous souhaitez que le contenu soit diffusé, ainsi que les détails sur le suivi et la gestion de la diffusion du contenu. Pour créer une distribution à l'aide de la console, connectez-vous à l'AWS Management Console, ouvrez la CloudFront console | Administrateur du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Créez et déployez une fonction Lambda @Edge. | Vous pouvez créer une fonction Lambda @Edge en utilisant un plan pour modifier CloudFront les en-têtes de réponse. (D'autres BluePrints sont disponibles pour différents cas d'utilisation ; pour plus d'informations, consultez les exemples de fonctions Lambda @Edge dans CloudFront la documentation.) Pour créer une fonction Lambda @Edge :
| Administrateur AWS |
Déployez la fonction Lambda @Edge. | Suivez les instructions de l'étape 4 du didacticiel : Création d'une fonction Lambda @Edge simple dans la CloudFront documentation Amazon pour configurer le CloudFront déclencheur et déployer la fonction. | Administrateur AWS |
Ressources connexes
CloudFront documentation