

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 lors de la migration de F5 vers un Application Load Balancer sur AWS
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws"></a>

*Sachin Trivedi, Amazon Web Services*

## Résumé
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-summary"></a>

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
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-prereqs"></a>

**Conditions préalables**
+ Application locale 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](https://clouddocs.f5.com/api/irules/HTTP__header.html) 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
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-architecture"></a>

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](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/00abbe3c-2453-4291-9b24-b488dced4868/images/4ee9a19e-6da2-4c5a-a8bc-19d3918a166e.png)


## Outils
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-tools"></a>

**Services AWS**
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) ─ 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](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) — 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 ─](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html) 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
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-epics"></a>

### Création d'une distribution CDN
<a name="create-a-cdn-distribution"></a>


| Sous-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.<br />Pour créer une distribution à l'aide de la console, connectez-vous à l'AWS Management Console, ouvrez la [CloudFront console](https://console.aws.amazon.com/cloudfront/v3/home), puis suivez les étapes décrites dans la [CloudFront documentation](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html). | Administrateur du cloud | 

### Création et déploiement de la fonction Lambda @Edge
<a name="create-and-deploy-the-lambda-edge-function"></a>


| Sous-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](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html) dans CloudFront la documentation.) <br />Pour créer une fonction Lambda @Edge :[See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws.html) | Administrateur AWS | 
| Déployez la fonction Lambda @Edge. | Suivez les instructions de l'[étape 4](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-how-it-works-tutorial.html#lambda-edge-how-it-works-tutorial-add-trigger) 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
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-resources"></a>

**CloudFront documentation**
+ [Comportement des demandes et des réponses pour les origines personnalisées](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html) 
+ [Utilisation des distributions](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-working-with.html) 
+ [Exemples de fonctions Lambda @Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html) 
+ [Personnalisation à la périphérie avec Lambda @Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html)
+ [Tutoriel : Création d'une fonction Lambda @Edge simple](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-how-it-works-tutorial.html)