Modifiez les en-têtes HTTP lorsque vous migrez de F5 vers un Application Load Balancer sur AWS - Recommandations AWS

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 : :header dans 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

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âcheDescriptionCompé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, puis suivez les étapes décrites dans la CloudFront documentation.

Administrateur du cloud
TâcheDescriptionCompé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 :

  1. Connectez-vous à l'AWS Management Console et ouvrez la console AWS Lambda à l'adresse https://console.aws.amazon.com/lambda/.

  2. Assurez-vous que vous vous trouvez dans la région USA Est (Virginie du Nord). CloudFront les plans ne sont disponibles que dans cette région.

  3. Choisissez Créer une fonction.

  4. Choisissez Utiliser un plan, puis saisissez cloudfront dans le champ de recherche Blueprints

  5. Choisissez le cloudfront-modify-response-headerplan, puis sélectionnez Configurer.

  6. Sur la page Informations de base, entrez les informations suivantes :

    1. Indiquez un nom de fonction.

    2. Dans la liste déroulante Execution role (Rôle d'exécution), choisissez Create a new role from AWS policy templates (Créer un rôle à partir de modèles de stratégie AWS).

    3. Associez le nom de rôle AWS Identity and Access Management (IAM) requis.

  7. Choisissez Créer une fonction.

  8. Dans la section Designer de la page, choisissez le nom de votre fonction.

  9. Dans la section Code de fonction, remplacez le code du modèle par l'exemple de code fourni précédemment dans ce modèle, dans la section Code.

  10. Dans l'exemple de code, remplacez-le xyz.com par votre nom de domaine.  

  11. Choisissez Enregistrer.

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