Hur man kör JavaScript i utkanten med AWS CloudFront-funktioner

0
186

Många applikationer behöver lägsta möjliga latens men vill ändå utföra någon form av logik. Medan innehållsleveransnätverk (CDN) traditionellt är statiska blir det allt vanligare att köra koden i utkanten av nätverket, närmast användaren.

RELATERAD: Ett CDN kan påskynda din webbplats. Här är vad du behöver veta!

Har AWS inte redan Lambda @ Edge?

CloudFront-funktioner är inte det första eller enda sättet att köra din anpassade kod vid kanten av ett CDN. AWS har haft Lambda @ Edge ett tag nu, vilket låter dig köra vilken Lambda-funktion som helst på en CDN-kant, om än för tre gånger kostnaden.

Denna kostnad förbjuder många enkla transformationsfunktioner från att vara mycket livskraftiga att springa i kanten. I många fall behöver du inte göra mer än en enkel strängmanipulation eller grundläggande begäran/svar. Dessa kan köras istället av kortlivade, grundläggande funktioner.

Därav behovet av CloudFront-funktioner. De kan bara köra lätt JavaScript-kod, men de körs på alla CloudFront CDN-kantnoder för 1/6 av priset på Lambda @ Edge. Faktum är att det är ännu billigare än Lambda i sig.

Eftersom det bara är lätt JS, är användningen av det mycket smalare. Men det finns fortfarande en hel del operationer som det är bra för, till exempel:

  • Rubrikmanipulation
  • URL-omdirigeringar eller omskrivningar
  • Begär auktorisering
  • Normalisering av cache-nyckel

Annons

Du har två alternativ för när du ska köra CloudFront-funktioner: antingen före eller efter CloudFront hämtar svaret från CDN. Om du ändrar webbadresser eller validerar autentiseringstoken kanske du vill köra innan. Om du bara ändrar utgående rubriker kanske det inte spelar någon roll.

En sak som det inte kan göra är att manipulera innehåll från originalservern innan den cachas, dvs på Origin Response; du kan bara köra funktioner på visningsbegäran eller tittarsvar. För allt annat måste du använda Lambda @ Edge.

Funktionerna ska köras under en maximal körtid på mindre än 1 millisekund. Detta säkerställer att prestanda är bra även över miljoner förfrågningar. CloudFront-funktioner använder en ny processbaserad isoleringsmodell med begränsad filsystem- och nätverksåtkomst, vilket bör vara en prestandaförbättring jämfört med Lambdas traditionella VM-lösning.

I utbyte mot 1/6 av kostnaden, du får en total paketstorlek på 10 kB och 2 MB minne. Använd det klokt.

Använda CloudFront-funktioner

För att starta måste du naturligtvis använda en CloudFront CDN. Om du inte är och vill komma igång med en kan du läsa vår guide för att ställa in en.

RELATERAD: Komma igång med AWS CloudFront CDN

Från CloudFront-konsolen klickar du på & # 8220; Funktioner & # 8221; i sidofältet och skapa en ny funktion:

Annonsering

Ge det ett namn så kommer du till en skärm där du kan bygga, testa, publicera och distribuera funktionen.

Koden du skriver kommer naturligtvis att variera enormt beroende på dina mål. För den här självstudien gör jag helt enkelt en helt värdelös funktion som ändrar varje statuskod till 404 och stänger av webbplatsen eftersom det är lätt att testa.

Se till att klicka på & # 8220; Spara & # 8221; efter att ha skrivit kod, innan du går vidare till nästa steg, testar. Du har fått några exempel på testhändelser baserade på olika händelsetyper, för vilka du kan välja URL och begäran rubriker som klienten skickar.

Det hämtar ett svar från CDN som det skulle i produktion. Detta bör göra det enkelt att testa vilken funktion som helst innan du går live med den.

Klicka sedan på & # 8220; publicera & # 8221; på nästa sida; för att spara dina ändringar i produktionsversionen av funktionen. Detta gäller dock inte automatiskt för CDN; du måste associera den med en CloudFront-distribution eller flera distributioner.

Du vill naturligtvis testa att produktionsversionen fungerar som den ska. Gå över till din CDN och du bör se funktionen som tillämpas. I det här fallet gör funktionen sitt jobb för att göra min exempelwebbplats helt oanvändbar.

Annons

Om det inte fungerar kan du överväga att lägga till console.log () uttalanden som skickas direkt till AWS CloudWatch. Detta är den enda tillgängliga loggningsformen förutom grundläggande mätvärden, eftersom funktionerna är mycket lätta. För mer information kan du läsa AWS guide om inloggning i CloudFront-funktioner.