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: :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 utiliséeAWS, y compris le flux d'intégration entre le CDN et les autres AWS composants.

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â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 à la console de AWS gestion, 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 la CloudFront 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