Come eseguire JavaScript sull'edge con le funzioni AWS CloudFront

0
158

Molte applicazioni richiedono la latenza più bassa possibile, ma vogliono comunque eseguire qualche modulo di logica. Sebbene le reti di distribuzione dei contenuti (CDN) siano tradizionalmente statiche, sta diventando sempre più comune eseguire il codice ai margini della rete, più vicino all'utente.

RELAZIONATO: Un CDN può velocizzare il tuo sito web. Ecco cosa devi sapere!

AWS non ha già Lambda@Edge?

CloudFront Functions non è il primo o l'unico modo per eseguire il codice personalizzato all'estremità di una CDN. AWS ha da un po' di tempo Lambda@Edge, che consente di eseguire qualsiasi funzione Lambda su un edge CDN, anche se a un costo tre volte superiore.

Questo costo impedisce a molte semplici funzioni di trasformazione di essere molto praticabili correre al limite. In molti casi, non è necessario fare altro che una semplice manipolazione di stringhe o una richiesta/risposta di base. Questi possono essere eseguiti invece da funzioni di base di breve durata.

Da qui la necessità di CloudFront Functions. Sono in grado di eseguire solo codice JavaScript leggero, ma vengono eseguiti su tutti i nodi edge CDN di CloudFront a 1/6 del prezzo di Lambda@Edge. In effetti, è persino più economico di Lambda stesso.

Dato che è solo un JS leggero, gli usi sono molto più ristretti. Tuttavia, ci sono ancora alcune operazioni per cui è utile, come:

  • Manipolazione dell'intestazione
  • Reindirizzamento o riscrittura degli URL
  • Richiedi autorizzazione
  • Normalizzazione chiave cache

Annuncio

Hai due opzioni per quando eseguire CloudFront Functions: prima o dopo che CloudFront recupera la risposta dalla CDN. Se stai modificando gli URL o convalidando i token di autenticazione, potresti voler eseguire prima. Se stai solo modificando le intestazioni in uscita, potrebbe non avere importanza.

Una cosa che non può fare è manipolare il contenuto dal server di origine prima che venga memorizzato nella cache, ad esempio nella risposta di origine; puoi eseguire funzioni solo su richiesta o risposta del visualizzatore. Per qualsiasi altra cosa, dovrai utilizzare Lambda@Edge.

Le funzioni devono essere eseguite per un tempo di esecuzione massimo inferiore a 1 millisecondo. Ciò garantisce che le prestazioni siano buone anche tra milioni di richieste. Le funzioni di CloudFront utilizzano un nuovo modello di isolamento basato sui processi con filesystem e accesso alla rete limitati, che dovrebbero rappresentare un miglioramento delle prestazioni rispetto alla tradizionale soluzione VM Lambda.

In cambio di 1/6 del costo ottieni una dimensione totale del pacchetto di 10 KB e 2 MB di memoria. Usalo saggiamente.

Utilizzo delle funzioni CloudFront

Per iniziare, dovrai ovviamente utilizzare una CDN CloudFront. Se non lo sei e vuoi iniziare con uno, puoi leggere la nostra guida per configurarne uno.

RELAZIONATO: Introduzione a CloudFront di AWS CDN

Dalla console di CloudFront, fare clic su “Funzioni” nella barra laterale e creare una nuova funzione:

Annuncio

Dagli un nome e verrai portato a una schermata in cui puoi creare, testare, pubblicare e distribuire la funzione.

Naturalmente, il codice che scrivi varierà notevolmente a seconda dei tuoi obiettivi. Per questo tutorial, creerò semplicemente una funzione completamente inutile che cambia ogni codice di stato in 404 e disattiva il sito Web, perché è facile da testare.

Assicurati di fare clic su “Salva” dopo aver scritto il codice, prima di passare al passaggio successivo, il test. Ti vengono forniti alcuni eventi di test di esempio basati su diversi tipi di eventi, per i quali puoi scegliere l'URL e le intestazioni di richiesta che il client sta inviando.

Recupererà una risposta dal CDN come farebbe in produzione. Ciò dovrebbe semplificare il test di qualsiasi funzione prima di utilizzarla.

Quindi, nella pagina successiva, fai clic su “pubblica” per salvare le modifiche alla versione di produzione della funzione. Tuttavia, questo non lo applica automaticamente al CDN; dovrai associarlo a una distribuzione CloudFront o più distribuzioni.

Ovviamente vorrai verificare che la versione di produzione funzioni correttamente. Vai al tuo CDN e dovresti vedere la funzione applicata. In questo caso, la funzione sta facendo il suo lavoro rendendo il mio sito web di esempio completamente inutilizzabile.

Annuncio

Se non funziona, potresti prendere in considerazione l'aggiunta di istruzioni console.log(), che verranno inviate direttamente ad AWS CloudWatch. Questa è l'unica forma di registrazione disponibile, oltre alle metriche di base, poiché le funzioni sono molto leggere. Per ulteriori informazioni, puoi leggere la guida di AWS sull'accesso a CloudFront Functions.