Modifiez HTTP les en-têtes 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 HTTP les en-têtes lorsque vous migrez de F5 vers un Application Load Balancer sur AWS

Créée par Sachin Trivedi () AWS

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 AWS activé, 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 AWS CloudFront de 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'HTTPen-tête 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 utiliséeAWS, y compris le flux d'intégration entre le CDN et les autres AWS composants.

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 AWS un service d'équilibrage de charge entièrement géré qui fonctionne au niveau de la septième couche du modèle Open Systems OSI Interconnection (). Il équilibre le trafic entre plusieurs cibles et prend en charge les demandes de routage avancées basées sur HTTP les en-têtes et les méthodes, 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 de AWS Lambda qui 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 à la console de AWS gestion, 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 la CloudFront documentation.) 

Pour créer une fonction Lambda @Edge :

  1. Connectez-vous à la console de AWS gestion 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. Sélectionnez Create function (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 Execution role (Rôle d'exécution), choisissez 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. Sélectionnez Create function (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 Save (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