

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Modifica le intestazioni HTTP durante la migrazione da F5 a un Application Load Balancer su AWS
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws"></a>

*Sachin Trivedi, Amazon Web Services*

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

Quando esegui la migrazione di un'applicazione che utilizza un Load balancer F5 su Amazon Web Services (AWS) e desideri utilizzare un Application Load Balancer su AWS, la migrazione delle regole F5 per le modifiche agli header è un problema comune. Un Application Load Balancer non supporta le modifiche agli header, ma puoi usare Amazon CloudFront come rete per la distribuzione di contenuti (CDN) e Lambda @Edge per modificare le intestazioni.

Questo modello descrive le integrazioni richieste e fornisce codice di esempio per la modifica dell'intestazione utilizzando AWS e CloudFront Lambda @Edge.

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

**Prerequisiti**
+ Un'applicazione locale che utilizza un sistema di bilanciamento del carico F5 con una configurazione che sostituisce il valore dell'intestazione HTTP utilizzando. `if, else` Per ulteriori informazioni su questa configurazione, vedete [HTTP: :header](https://clouddocs.f5.com/api/irules/HTTP__header.html) nella documentazione del prodotto F5. 

**Limitazioni**
+ Questo modello si applica alla personalizzazione dell'intestazione del bilanciamento del carico F5. Per altri sistemi di bilanciamento del carico di terze parti, consulta la documentazione del sistema di bilanciamento del carico per informazioni di supporto.
+ Le funzioni Lambda utilizzate per Lambda @Edge devono trovarsi nella regione Stati Uniti orientali (Virginia settentrionale).

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

Il diagramma seguente mostra l'architettura su AWS, incluso il flusso di integrazione tra la CDN e altri componenti AWS.

![Architettura per la modifica dell'intestazione utilizzando Amazon CloudFront e Lambda @Edge](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/00abbe3c-2453-4291-9b24-b488dced4868/images/4ee9a19e-6da2-4c5a-a8bc-19d3918a166e.png)


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

**Servizi AWS**
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) ─ Un Application Load Balancer è un servizio di bilanciamento del carico AWS completamente gestito che funziona al settimo livello del modello Open Systems Interconnection (OSI). Bilancia il traffico su più destinazioni e supporta richieste di routing avanzate basate su intestazioni e metodi HTTP, stringhe di query e routing basato su host o percorsi.
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html): Amazon CloudFront è un servizio web che velocizza la distribuzione di contenuti web statici e dinamici, come .html, .css, .js e file di immagine, ai tuoi utenti. CloudFront distribuisce i tuoi contenuti attraverso una rete mondiale di data center denominati edge location per una latenza inferiore e prestazioni migliorate.
+ [Lambda @Edge ─](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html) Lambda @Edge è un'estensione di AWS Lambda che consente di eseguire funzioni per personalizzare i contenuti distribuiti. CloudFront Puoi creare funzioni nella regione Stati Uniti orientali (Virginia settentrionale) e quindi associare la funzione a una CloudFront distribuzione per replicare automaticamente il codice in tutto il mondo, senza dover fornire o gestire server. Ciò riduce la latenza e migliora l'esperienza utente.

**Codice**

Il codice di esempio seguente fornisce un modello per modificare le intestazioni di risposta. CloudFront Segui le istruzioni nella sezione *Epics* per distribuire il codice.

```
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;
};
```

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

### Crea una distribuzione CDN
<a name="create-a-cdn-distribution"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una distribuzione CloudFront web.  | In questo passaggio, crei una CloudFront distribuzione per indicare da CloudFront dove desideri che vengano distribuiti i contenuti e i dettagli su come monitorare e gestire la distribuzione dei contenuti.<br />Per creare una distribuzione utilizzando la console, accedi alla Console di gestione AWS, apri la [CloudFront console](https://console.aws.amazon.com/cloudfront/v3/home) e segui i passaggi indicati nella [CloudFront documentazione](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html). | Amministratore del cloud | 

### Crea e distribuisci la funzione Lambda @Edge
<a name="create-and-deploy-the-lambda-edge-function"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea e distribuisci una funzione Lambda @Edge. | È possibile creare una funzione Lambda @Edge utilizzando un blueprint per modificare CloudFront le intestazioni di risposta. (Sono disponibili altri BluePrint per diversi casi d'uso; per ulteriori informazioni, consulta le funzioni di [esempio di Lambda @Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html) CloudFront nella documentazione.) <br />Per creare una funzione Lambda @Edge:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws.html) | Amministratore AWS | 
| Implementa la funzione Lambda @Edge. | Segui le istruzioni nel [passaggio 4](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-how-it-works-tutorial.html#lambda-edge-how-it-works-tutorial-add-trigger) del *Tutorial: Creazione di una semplice funzione Lambda @Edge* nella CloudFront documentazione di Amazon per configurare il CloudFront trigger e distribuire la funzione. | Amministratore AWS | 

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

**CloudFront documentazione**
+ [Comportamento di richiesta e risposta per origini personalizzate](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html) 
+ [Lavorare con le distribuzioni](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-working-with.html) 
+ [Funzioni di esempio Lambda @Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html) 
+ [Personalizzazione all'edge con Lambda @Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html)
+ [Tutorial: creazione di una semplice funzione Lambda @Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-how-it-works-tutorial.html)