Modifica le HTTP intestazioni quando esegui la migrazione da F5 a un Application Load Balancer su AWS - Prontuario AWS

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 HTTP intestazioni quando esegui la migrazione da F5 a un Application Load Balancer su AWS

Creato da Sachin Trivedi () AWS

Ambiente: PoC o pilota

Fonte: On-Premise

Obiettivo: Cloud AWS

Tipo R: Replatform

Carico di lavoro: tutti gli altri carichi di lavoro

Tecnologie: rete; cloud ibrido; migrazione

AWSservizi: Amazon CloudFront; Elastic Load Balancing (ELB); Lambda AWS

Riepilogo

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 AWS attivo, la migrazione delle regole F5 per le modifiche all'intestazione è un problema comune. Un Application Load Balancer non supporta le modifiche alle intestazioni, ma puoi usare Amazon CloudFront come rete di distribuzione dei 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 e AWS CloudFront Lambda @Edge.

Prerequisiti e limitazioni

Prerequisiti

  • Un'applicazione locale che utilizza un sistema di bilanciamento del carico F5 con una configurazione che sostituisce il valore dell'intestazione con. HTTP if, else Per ulteriori informazioni su questa configurazione, vedere HTTP: :header nella documentazione del prodotto F5. 

Limitazioni

  • Questo modello si applica alla personalizzazione dell'intestazione del load balancer 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).

Architettura

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

Architettura per la modifica dell'intestazione utilizzando Amazon CloudFront e Lambda @Edge

Strumenti

AWSservizi

  • Application Load Balancer ─ Un Application Load Balancer è AWS un servizio di bilanciamento del carico 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 HTTP intestazioni e metodi, stringhe di query e routing basato su host o percorsi.

  • Amazon CloudFront: 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 ─ Lambda @Edge è un'estensione di AWS Lambda che consente di eseguire funzioni per personalizzare il contenuto fornito. CloudFront È possibile 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

AttivitàDescrizioneCompetenze 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.

Per creare una distribuzione utilizzando la console, accedi alla console di AWS gestione, apri la CloudFront console e segui i passaggi indicati nella CloudFront documentazione.

Amministratore cloud
AttivitàDescrizioneCompetenze richieste
Crea e distribuisci una funzione Lambda @Edge.

È possibile creare una funzione Lambda @Edge utilizzando un blueprint per modificare CloudFront le intestazioni di risposta. (Altre bluePrints sono disponibili per diversi casi d'uso; per ulteriori informazioni, consulta le funzioni di esempio di Lambda @Edge nella CloudFront documentazione.) 

Per creare una funzione Lambda @Edge:

  1. Accedi alla console di AWS gestione e apri la console AWS Lambda all'indirizzo. https://console.aws.amazon.com/lambda/

  2. Assicurati di trovarti nella regione Stati Uniti orientali (Virginia settentrionale). CloudFront i progetti sono disponibili solo in questa regione.

  3. Scegli Crea funzione.

  4. Scegli Usa un blueprint, quindi inserisci cloudfront nel campo di ricerca Blueprints. 

  5. Scegli il cloudfront-modify-response-headerblueprint, quindi scegli Configura.

  6. Nella pagina delle informazioni di base, inserisci le seguenti informazioni:

    1. Immettere il nome di una funzione.

    2. Per Ruolo di esecuzione, scegli Crea un nuovo ruolo dai modelli di AWS policy.

    3. Associate il nome del ruolo AWS Identity and Access Management (IAM) richiesto.

  7. Scegli Crea funzione.

  8. Nella sezione Designer della pagina, scegliete il nome della funzione.

  9. Nella sezione Codice funzionale, sostituisci il codice del modello con il codice di esempio fornito in precedenza in questo modello, nella sezione Codice.

  10. Nel codice di esempio, sostituiscilo xyz.com con il tuo nome di dominio.  

  11. Seleziona Salva.

AWSamministratore
Implementa la funzione Lambda @Edge.

Segui le istruzioni nel passaggio 4 del Tutorial: Creazione di una semplice funzione Lambda @Edge nella CloudFront documentazione di Amazon per configurare il CloudFront trigger e distribuire la funzione.

AWSamministratore

Risorse correlate

CloudFront documentazione