AWS CloudFront

Amazon CloudFront è un servizio Web che accelera la distribuzione di contenuto Web statico e dinamico, come file immagine, .html, .css e .js, agli utenti. CloudFront distribuisce i tuoi contenuti attraverso una rete mondiale di data center chiamati edge location. 

Badge CloudFront Delivery

Quando un utente richiede contenuto che distribuisci tramite Amazon CloudFront, la richiesta viene instradata all’edge location che fornisce la latenza (ritardo) più bassa, affinché la distribuzione venga eseguita con le migliori prestazioni possibili.

 

  • Se il contenuto si trova già nella edge location con la latenza più bassa, Amazon CloudFront lo distribuisce immediatamente.
  • Se i contenuti non si trova un tale edge location, Amazon CloudFront li recupera da un’origine definita dall’utente, come un bucket di Amazon S3, un canale MediaPackage o un server HTTP (ad esempio, un server Web)

CloudFront accelera la distribuzione dei contenuti instradando ogni richiesta utente tramite la rete dorsale AWS alla edge location che può servire meglio i contenuti.

Di solito si tratta di un edge server CloudFront che fornisce la distribuzione più veloce per il visualizzatore. I vantaggi sono evidenti anche a livello di affidabilità e disponibilità, in quanto copie dei tuoi file (note anche come oggetti) si trovano (o sono memorizzate nella cache) in più edge location in tutto il mondo.

Edge Location

AWS CloudFront CDN funge da intermediario tra l’hosting frontend e gli utenti. Con CloudFront, puoi memorizzare nella cache HTML, CSS, JavaScript e immagini. Poiché la cache è più vicina all’utente, il contenuto verrà consegnato con una latenza minima. 

Puoi anche configurare CloudFront con il failover di origine per la gestione del fallback in scenari che richiedono un’elevata disponibilità.

Il miglior vantaggio è che AWS CloudFront supporta in modo nativo l’integrazione di Amazon S3, dove puoi ospitare i tuoi artefatti frontend. Inoltre, puoi ospitare il tuo front-end ovunque e continuare a servire tramite AWS CloudFront.

Best practice e raccomandazioni di CriticalCase

È sempre utile invalidare la cache quando si esegue una nuova distribuzione per impedire ai browser di recuperare le vecchie versioni dei file dalla cache. AWS CloudFront ora supporta l’invalidamento rapido della cache, consentendoti di distribuire istantaneamente gli aggiornamenti alla tua SPA pur avendo il vantaggio della memorizzazione nella cache CDN.

Nota: come procedura, è possibile invalidare solo i file modificati nella distribuzione. Ad esempio, se si utilizza Webpack con la configurazione predefinita, è sufficiente invalidare l’indice.html poiché ogni JS e CSS modificati avrà nuovi nomi di file.

Puoi anche utilizzare AWS Amplify per semplificare le distribuzioni e le invalidazioni della cache con ottimizzazioni integrate.

Se utilizzi un bucket Amazon S3 come origine per una distribuzione CloudFront, è essenziale limitare l’accesso pubblico a S3.

La limitazione dell’accesso impedisce a qualcuno di ignorare CloudFront e accedere a contenuti che si desidera mantenere al sicuro tramite l’URL di Amazon S3.

Ti chiederai perché è importante dal momento che sono le risorse frontend che sono destinate ad essere pubbliche? Il motivo è che la pubblicazione tramite AWS CloudFront offre un maggiore controllo, in quanto

Lambda@Edge consente di intercettare le richieste HTTP che passano attraverso CloudFront. Queste funzioni vengono eseguite in CloudFront Edge Locations più vicine all’utente, rendendo più veloce rispondere o agire sui contenuti in transito.

Alcuni casi d’uso comuni di Lamda@Edge sono:

  • Generare dinamicamente contenuto personalizzato in base agli attributi di richiesta o risposta, ad esempio il ridimensionamento delle immagini in base agli attributi della richiesta.
  • Per aggiungere logica alle richieste e alle risposte, ad esempio creando URL accattivanti e gestendo l’autenticazione e l’autorizzazione per le richieste di origine.
  • Per aumentare il rapporto di hit della cache, con conseguente miglioramento delle prestazioni dell’applicazione evitando la latenza causata da un errore di cache.
  • Per gestire l’autenticazione e l’autorizzazione personalizzate.

Se hai bisogno di saperne di più su Lamda@Edge, puoi consultare la documentazione fornita da AWS.

Nota: se hai bisogno di esigenze semplici come l’utilizzo solo di URL hashless, esiste un semplice approccio di follow-up. Poiché l’obiettivo è quello di servire l’indice.html anche un utente va direttamente a un percorso, possiamo impostare la gestione degli errori di CloudFront sul server dell’indice.html se S3 restituisce l’errore “risorsa non trovata” con il codice di errore 404.

Un’altra best practice che ti incoraggio a seguire è l’utilizzo di un metodo di compressione. Con AWS CloudFront, puoi servire le tue applicazioni utilizzando Brotli o GZip e ridurre drasticamente la velocità di download dei contenuti.

Download più veloci, in particolare per i file JavaScript e CSS, possono comportare un rendering più rapido della tua SPA.

Inoltre, poiché i costi di trasferimento dei dati di CloudFront si basano sulla quantità totale di dati serviti, la gestione di file compressi è meno costosa rispetto alla gestione di file non compressi.

Brotli è un algoritmo di compressione lossless ampiamente utilizzato che spesso supera Gzip in termini di rapporto di compressione. Rispetto a Gzip, la compressione edge Brotli di CloudFront si traduce in file di dimensioni inferiori fino al 24%.

Le funzionalità di compressione possono essere abilitate tramite la console CloudFront, l’SDK e l’interfaccia a riga di comando. È necessario impostare EnableAcceptEncodingGzip su true per restituire gli oggetti compressi Gzip e EnableAcceptEncodingBrotli su true per restituire gli oggetti compressi Brotli. CloudFront utilizzerà Brotli quando il visualizzatore supporta entrambi i formati.

I browser web Chrome e Firefox supportano la compressione Brotli solo quando la richiesta viene inviata tramite HTTPS. Brotli non è supportato con le richieste HTTP in questi browser.

Quando si esegue una nuova distribuzione, è possibile invalidare i file o assegnare loro nomi di file con versione per controllare le versioni dei file gestiti dalla distribuzione. Se si aggiornano frequentemente i file, è consigliabile utilizzare il controllo delle versioni dei file.

Il controllo delle versioni offre un migliore controllo sui contenuti forniti da CloudFront.

Il controllo delle versioni semplifica l’analisi degli effetti delle modifiche ai file perché i log di accesso di CloudFront includono nomi di file.

Il controllo delle versioni consente di offrire versioni diverse dei file a utenti diversi.

Il controllo delle versioni semplifica il rollback avanti e indietro tra le revisioni dei file.

Il costo del controllo delle versioni è inferiore. Devi comunque pagare CloudFront per trasferire nuove versioni dei tuoi file in edge location, ma non devi pagare per invalidare i file.

slider_v1.js, image_v1.jpg sono alcuni nomi di controllo delle versioni dei file di esempio che è possibile utilizzare.

Integrazione con AWS WAF ed ElasticSearch per una completa gestione della Sicurezza Applicativa

CriticalCase, in qualità di partner AWS, ha sviluppato una forte competenza sull’implementazione di AWS WAF in differenti contesti. Grazie ad anni di esperienza, maturati su molteplici progetti, abbiamo sviluppato una serie di best practice volte ed installare, configurare e manutenere AWS WAF nella maniera più corretta ed adeguata per il contesto Cliente. Tali attività coprono l’implementazione di e gestione di:

  • Regole di blocco del traffico Out-of-the-box
  • Regole custom e dinamiche di blocco del traffico, che sono aggiornate tramite AWS Lambda in modo schedulato oppure a fronte di determinati eventi
  • Integrazione verso servizi di Edge e di Back-End
  • Monitoring integrato attraverso AWS CloudWatch
  • Implementazione di un cruscotto personalizzato di monitoring dei Log e del traffico WAF, attraverso una soluzione integrata AWS ElasticSearch + Kibana
Dashboard ElasticSearch Kibana

Dashboard ElasticSearch Kibana per il monitoring del WAF

Nel corso degli anni, abbiamo avuto l’opportunità di supportare i nostri Clienti con le nostre soluzioni AWS WAF, applicandole sui più disparati contesti, tra cui: e-Commerce, Web Site, Web Applications di vario genere.

Gestione Operativa e Logging

Alcune organizzazioni, oltre alla progettazione, deploy ed integrazione di AWS WAF, ci affidano anche la governance e gestione operativa. Ciò implica una gestite centralizzata, da parte di un team specialistico che opera h24 7×7. Il team di Gestione Operativa si occupa di monitorare il corretto funzionamento del WAF, effettua tuning sulle regole di filtering e su tutti gli aspetti che ne garantiscono il corretto funzionamento. Il team è inoltre in grado di riconoscere ed intervenire tempestivamente in caso di attacco, rilevato grazie al sistema AWS CloudWatch di monitoring e la dashboard AWS ElaticSearch Kibana di analisi e monitoring.

La dashboard ElaticSearch Kibana è un aggregatore delle informazioni fornite dai log di AWS WAF, e fornisce informazioni quasi in tempo reale circa:

  • Traffico “benevolo”
  • Traffico “malevolo” e quindi bloccato
  • Regole attive e relativa percentuale di traffico bloccato
  • Geolocalizzazione degli “attacchi” (traffico malevolo bloccato)
  • Indirizzi/classi di IP
  • Risorse (URL) oggetto dell’attacco
  • Intestazioni delle richieste

La soluzione è inoltre dotata di differenti automatismi, tramite AWS Lambda, volti ad effettuare un tuning ed un miglioramento delle Regole del WAF, come mostrato del disegno architetturale:

Architettura della soluzione WAF

Architettura della soluzione WAF

Integrazione con AWS Firewall Manager

E’ possibile configurare e gestire centralmente le distribuzioni AWS WAF su più account AWS utilizzando AWS Firewall Manager. Quando crei nuove risorse puoi garantirne la conformità rispetto a un gruppo di regole di sicurezza. Firewall Manager esegue audit automatici e informa il team di sicurezza al verificarsi di una violazione relativa alle policy, permettendogli di rispondere e agire tempestivamente. Per ulteriori informazioni su Firewall Manager visita il sito Web di prodotto.

Costi di AWS CloudFront

Come per tutti i servizi AWS, i prezzi di AWS CloudFront sono pubblici e ben chiari: https://aws.amazon.com/it/cloudfront/pricing/

Il consiglio che diamo sempre ai nostri clienti è di rivolgersi a CriticalCase sia per le attività iniziali di “price planning” sia per l’acquisto del servizio, poiché in qualità di AWS Partner specializzato su questa competenza, riusciamo a portare al Cliente:

  • Una corretta analisi dei costi a preventivo
  • Il miglior prezzo di acquisto, accedendo anche ad un pricing riservato per volumi di acquisto distribuiti su più clienti
  • I nostri servizi di Cost & Service Optimization https://aws.amazon.com/it/cloudfront/pricing/

Contattaci

Compila il form e un nostro esperto ti ricontatterà entro 24 ore: non vediamo l’ora di conoscerti!

Richiedi la tua prova gratuita

Ehi! Stai già andando via?

Iscriviti alla nostra newsletter per restare aggiornato sulle novità dell’universo Criticalcase