Come ospitare un sito Web serverless con AWS CloudFront e S3

0
143

Se desideri eseguire un sito Web su AWS, potresti non aver nemmeno bisogno di un server! CloudFront CDN di AWS può servire contenuto Web statico direttamente da un bucket S3, lasciandoti pagare solo per richieste e dati trasferiti (che potrebbero anche essere gratuiti).

Come funziona l'hosting serverless?

“Senza server” è il concetto di eseguire applicazioni senza gestire da soli server Linux dedicati, di solito con una soluzione Platform-as-a-Service come App Runner di AWS o Lambda Functions. Sebbene tu possa eseguire una normale applicazione come NGINX su una macchina virtuale EC2, di solito puoi servire lo stesso tipo di app senza eseguire server.

Questa particolare soluzione serverless utilizza Simple Storage Service (S3) di AWS per ospitare il contenuto statico di un sito Web, anziché doverlo servire da un server NGINX. “Statico” significa semplicemente che stai servendo file e non generando pagine, il che include sia semplici siti Web HTML + CSS, sia applicazioni Web JavaScript complete lato client. In particolare, questo esclude i framework di hosting lato server come WordPress (PHP), Ruby on Rails e ASP.NET, ma molti siti Web saranno solo contenuti statici.

Il vantaggio di questa soluzione è che non fa affidamento sui tuoi server: S3 risponderà sempre alle richieste, quindi puoi avere tutte le persone che vuoi che accedono al tuo sito. Prima di S3, puoi utilizzare CloudFront, la soluzione CDN (Content Delivery Network) di AWS. CloudFront esegue centinaia di edge cache, che tutte le cache richiedono a S3 per te, aumentando la latenza & velocità effettiva e riduzione dei costi.

In questa configurazione di rete, tutto ciò che gestisce le richieste degli utenti è completamente serverless. I server CloudFront sono eseguiti da AWS e memorizzano automaticamente nella cache i contenuti e instradano gli utenti all'endpoint, che è semplicemente un bucket S3.

Pubblicità

Se devi eseguire una sorta di back-end o API per la connessione della tua app Web, puoi probabilmente utilizzare altri strumenti serverless come Funzioni Lambda per raggiungere questo obiettivo. Questa configurazione è ancora migliore, perché le richieste a S3 e all'API verranno ridimensionate separatamente.

< /p>

Se vuoi saperne di più sull'utilizzo di API Gateway come frontend per le funzioni Lambda, puoi leggere la nostra guida sulla configurazione.

Nonostante sia semplice, questa è in realtà una buona configurazione di livello aziendale per l'hosting di contenuti statici su AWS. Sarà affidabile, scalabile perfettamente e può anche essere utilizzato con una distribuzione automatica CodePipeline per aggiornare il tuo sito dai suoi file di origine.

RELAZIONATO: Come utilizzare AWS API Gateway come frontend per le funzioni Lambda

RELAZIONATO: Come impostare una pipeline di distribuzione automatizzata per un sito Web S3

Quanto costa?

Poiché l'hosting serverless si adatta esattamente all'utilizzo, paghi solo per ciò che usi. Questo può farti risparmiare un sacco di soldi su server che altrimenti sarebbero per lo più inattivi. In genere, pagherai un po' di più per ogni ora di CPU rispetto al fatto che fai da te, ma questo è generalmente bilanciato dal fatto che ti addebiti in modo equo per l'utilizzo esatto.

Tuttavia, c'è una buona possibilità che questo sia semplicemente gratuito. Il “piano sempre gratuito” di AWS include 100 GB di larghezza di banda e un intero terabyte di larghezza di banda CloudFront. Per fare un confronto, la maggior parte degli altri livelli gratuiti di servizi di hosting di siti statici (come Github Pages e Firebase) ti daranno circa 10 GB.

1 TB di larghezza di banda gratuitamente è sicuramente molto interessante, poiché significa che la maggior parte dei siti Web che non servono tonnellate di contenuti avranno un ampio buffer prima che vengano addebitati importi significativi.

Pubblicità

Tuttavia, ti verranno comunque addebitate le richieste S3, il che si sommerà e se il tuo sito memorizza centinaia di GB di contenuti, potresti anche vedere addebiti elevati per questo. Tuttavia, se possibile, utilizzare in modo efficace la memorizzazione nella cache di CloudFront può ridurre il numero di richieste richieste all'origine (S3) e la maggior parte dei siti sarà piuttosto piccola.

Configurazione di un sito Web statico S3 Bucket

Per iniziare, vai alla S3 Management Console e crea un nuovo bucket. Devi disabilitare “Blocca accesso pubblico” affinché sia ​​visibile. AWS avverte che questa è una cattiva idea, fatta eccezione per casi d'uso come l'hosting statico di siti Web. Poiché è esattamente quello che stiamo facendo, puoi ignorarlo, ma hai sicuramente vinto: non vuoi caricare i segreti nel secchio, sarà tutto leggibile.

Questo rimuove semplicemente il blocco su di esso; dovrai anche consentire esplicitamente le letture pubbliche con una policy del bucket, in “Autorizzazioni”. Assicurati di sostituire qui il nome della risorsa con il bucket corretto.

{ “Version”:”17-10-2012″, “Statement”:[ { “Sid”:”PublicReadGetObject”, “Effect”:”Consenti”, “Principal”: “*”, “Azione”:[“s3 :GetObject”], “Resource”:[“arn:aws:s3:::example-bucket/*”] } ] }

Avanti, dovrai caricare i tuoi contenuti. Puoi trascinare e rilasciare, ma se desideri trasferire un'intera cartella manualmente, puoi utilizzare l'AWS CLI per sincronizzare un bucket S3 con una directory locale. Puoi anche impostare questo bucket come output per una distribuzione CodePipeline, che può creare i tuoi artefatti dal repository di origine.

RELATI: Come installare e configurare l'AWS CLI

Utilizzeremo l'API S3 e caricheremo un modello di base create-react-app. Una volta sincronizzata, vedrai index.html nel bucket S3.

aws s3 sync . s3://nome-bucket

Prima che sia pronto, dovrai andare alle Proprietà del bucket, scorrere fino in fondo per trovare “Hosting Web statico,” e accendilo. Dovrai configurare l'indice e il documento di errore e puoi anche scrivere le regole di reindirizzamento qui.

Pubblicità

Al termine, vedrai l'endpoint del sito Web nelle proprietà.

Collegamento di una CDN CloudFront

CloudFront ha molte opzioni, ma le impostazioni predefinite funzioneranno bene per un semplice sito Web S3, quindi la configurazione è abbastanza semplice. Vai alla console CloudFront e crea una nuova distribuzione.

Puoi configurare le impostazioni per la cache, ma il comportamento predefinito dovrebbe andare bene per la maggior parte delle persone.

Dovrai collegare il tuo dominio personalizzato e ciò comporta la creazione di un certificato SSL gestito tramite AWS Certificate Manager (ACM). Puoi fare clic su questo pulsante per richiedere un certificato. La verifica del DNS potrebbe richiedere del tempo se non utilizzi il DNS Route 53 di AWS.

Ovviamente dovrai anche configurare il tuo DNS con un record CNAME che punta verso l'endpoint CloudFront.

Una volta che il certificato e il DNS sono configurati, crea la distribuzione e attendi circa 15 minuti affinché CloudFront la distribuisca. Al termine, potrai visitare l'endpoint CloudFront o il tuo dominio personalizzato e vedere il tuo sito servito dal bucket S3.

LEGGI SUCCESSIVO

  • › 10 cose sull'iPhone che infastidiranno gli utenti Android
  • › Recensione CleanMyMac X: un clic per un Mac ordinato
  • › 10 funzioni nascoste di iOS 16 che potresti aver perso
  • › Quanto spesso prendono fuoco le auto elettriche?
  • › Le VPN saranno costrette a registrare il tuo traffico?
  • › Questi vampiri a larghezza di banda nascosta stanno consumando il tuo limite di dati a casa