Come posso usare CloudFront per servire un sito web statico ospitato su Amazon S3?

10 minuti di lettura
0

Voglio ospitare un sito web statico su un bucket Amazon Simple Storage Service (Amazon S3). Quindi, voglio servire il mio sito web tramite una distribuzione Amazon CloudFront.

Descrizione breve

Per servire un sito web statico ospitato su Amazon S3, utilizza una delle seguenti configurazioni per distribuire una distribuzione CloudFront:

  • Usa un endpoint REST API come origine e limita l'accesso con un controllo di accesso all'origine (OAC) o un'identità di accesso origine (OAI)
    Nota: è consigliabile utilizzare il controllo di accesso all'origine (OAC) per limitare l'accesso. L'identità di accesso origine (OAI) è un metodo legacy per questo processo.
  • Utilizza un endpoint del sito web come origine, e consenti l'accesso anonimo (pubblico)
  • Utilizza un endpoint del sito web come origine e limita l'accesso con un'intestazione Referer
  • Usa AWS CloudFormation per distribuire un endpoint del sito web statico come origine e un dominio personalizzato che punta a CloudFront

Per ulteriori informazioni sui due tipi di endpoint, consulta Principali differenze tra l'endpoint di un sito web e un endpoint REST API.

Risoluzione

Per configurare una distribuzione CloudFront con il tipo di endpoint S3 che desideri utilizzare come origine, completa i seguenti passaggi:

Usa un endpoint REST API come origine e limita l'accesso con un OAC o un OAI (legacy)

1.    Usa la console Amazon S3 per creare un bucket e caricare i file del tuo sito web.

Nota: non è necessario attivare l'hosting statico del sito web nel bucket per questa configurazione. Questa configurazione utilizza l'endpoint REST API del bucket anziché l'endpoint del sito web della funzionalità di hosting del sito web statico.

2.    Crea una distribuzione Web CloudFront. Oltre alle impostazioni di distribuzione dei casi d'uso, completa i passaggi in una delle seguenti sezioni per limitare l'accesso all'origine Amazon S3. È consigliabile utilizzare OAC, poiché l'OAI è un'impostazione legacy.

OAC

Quando crei la tua distribuzione, inserisci il nome del bucket Amazon S3 nel campoDominio di origine.

Per Accesso Origine, seleziona le impostazioni di controllo degli accessi origine (consigliato).

Nel menu a tendina Controllo degli accessi origine, seleziona il nome OAC e scegli Crea impostazione di controllo.

Nella finestra di dialogo, assegna un nome all'impostazione di controllo**.** È consigliabile lasciare l'impostazione predefinita Richieste di firma (scelta consigliata). Quindi, scegli Crea.

CloudFront ti fornisce la dichiarazione di policy per concedere a OAC l'autorizzazione ad accedere al tuo bucket Amazon S3 dopo aver creato la distribuzione. Seleziona Copia policy e incolla la policy nella configurazione della policy del bucket S3.

OAI

Quando crei la tua distribuzione, inserisci il nome del bucket Amazon S3 nel campoDominio di origine.

SottoAccesso origine, seleziona Identità di accesso legacy.

Nel menu a tendina Identità accesso origine, seleziona il nome dell'identità di accesso origine. Quindi, scegli Crea nuova OAI.

Nella finestra di dialogo, assegna un nome alla nuova identità di accesso origine e scegli Crea.

Per la Policy del bucket, seleziona Sì, aggiorna la policy del bucket.

3.    Quando crei la tua distribuzione, è consigliabile utilizzare SSL (HTTPS) per il tuo sito web. Per utilizzare un dominio personalizzato con HTTPS, seleziona **Certificato SSL personalizzato.**Scegli Richiedi certificato per richiedere un nuovo certificato. Se non utilizzi un dominio personalizzato, puoi comunque utilizzare HTTPS con il nome di dominio cloudfront.net per la tua distribuzione.
Importante: se inserisci Nomi di dominio alternativi (CNAME) per la tua distribuzione, i CNAME devono corrispondere al certificato SSL selezionato. Per risolvere i problemi con il tuo certificato SSL, consulta Come posso risolvere i problemi relativi all'utilizzo di un certificato SSL personalizzato per la mia distribuzione CloudFront?

4.    Aggiorna i record DNS del tuo dominio per indirizzare il dominio del tuo sito web a CloudFront. Puoi trovare il nome di dominio della tua distribuzione nella console CloudFront. Il nome di dominio è simile al seguente esempio: d1234abcd.cloudfront.net.

5.    Attendi che le modifiche DNS si propaghino e che le voci DNS precedenti scadano.
Nota: il periodo di scadenza dei valori DNS precedenti dipende dal valore TTL impostato nella zona ospitata. Dipende anche dal fatto che il resolver locale utilizzi tali valori TTL.

Utilizza un endpoint del sito web come origine, e consenti l'accesso anonimo (pubblico)

Questa configurazione consente l'accesso pubblico in lettura sul bucket del tuo sito web. Per ulteriori informazioni, consulta Impostazione delle autorizzazioni per l'accesso al sito web.
Nota: quando si utilizza l'endpoint del sito web statico di Amazon S3, le connessioni tra CloudFront e Amazon S3 sono possibili solo tramite HTTP. Per utilizzare HTTPS per le connessioni tra CloudFront e Amazon S3, configura un endpoint REST API S3 per la tua origine.

  1. Usa la console Amazon S3 per creare un bucket e attivare l'hosting dei siti web statici sul bucket.
  2. Dalla finestra di dialogo di hosting di siti web statici, copia l'endpoint del tuo bucket senza l'**http://**iniziale. Il formato è simile a DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com. È necessario che l'endpoint sia in questo formato per un passaggio successivo.
  3. Aggiungi una policy del bucket che consenta l'accesso pubblico in lettura al bucket che hai creato.
    Nota: per questa configurazione, devi disattivare le impostazioni di accesso pubblico a blocco del bucket S3. Se il tuo caso d'uso richiede l'attivazione delle impostazioni di blocco dell'accesso pubblico, utilizza l'endpoint REST API come origine. Quindi, limita l'accesso mediante un controllo di accesso all'origine (OAC) o un'identità di accesso all'origine (OAI).
  4. Crea una distribuzione Web CloudFront. Oltre alle impostazioni di distribuzione dei casi d'uso, completa i seguenti passaggi:
    Per il dominio origine, inserisci l'endpoint copiato nel passaggio precedente.
    Nota: non selezionare il bucket dal menu a tendina. Il menu a tendina include solo gli endpoint REST API del bucket S3 che non utilizzi in questa configurazione.
  5. Quando crei la tua distribuzione, è consigliabile utilizzare SSL (HTTPS) per il tuo sito web. Per utilizzare un dominio personalizzato con HTTPS, seleziona **Certificato SSL personalizzato.**Scegli Richiedi certificato per richiedere un nuovo certificato. Se non utilizzi un dominio personalizzato, puoi comunque utilizzare HTTPS con il nome dominio cloudfront.net per la tua distribuzione.
    Importante: se inserisci Nomi di dominio alternativi (CNAME) per la tua distribuzione, i CNAME devono corrispondere al certificato SSL selezionato. Per risolvere i problemi con il tuo certificato SSL, consulta Come posso risolvere i problemi relativi all'utilizzo di un certificato SSL personalizzato per la mia distribuzione CloudFront?
  6. Aggiorna i record DNS del tuo dominio per indirizzare il dominio del tuo sito web a CloudFront. Puoi trovare il nome di dominio della tua distribuzione nella console CloudFront. Il formato del nome di dominio è simile al seguente esempio: d1234abcd.cloudfront.net.
  7. Attendi che le modifiche DNS si propaghino e che le voci DNS precedenti scadano.
    Nota: il periodo di scadenza dei valori DNS precedenti dipende dal valore TTL impostato nella zona ospitata. Dipende anche dal fatto che il resolver locale utilizzi tali valori TTL.

Utilizza un endpoint del sito web come origine e limita l'accesso con un'intestazione Referer

Importante: verifica che l'accesso consentito da questa configurazione soddisfi i requisiti del tuo caso d'uso.

Questa configurazione imposta un'intestazione Referer personalizzata sulla distribuzione per limitare l'accesso. Quindi, utilizza una policy del bucket per consentire l'accesso solo alle richieste con l'intestazione Referer personalizzata.

Nota: quando si utilizza l'endpoint del sito web statico di Amazon S3, le connessioni tra CloudFront e Amazon S3 sono possibili solo tramite HTTP. Per utilizzare HTTPS per le connessioni tra CloudFront e Amazon S3, configura un endpoint REST API S3 per la tua origine.

  1. Usa la console Amazon S3 per creare un bucket e attivare l'hosting dei siti web statici sul bucket.
  2. Dalla finestra di dialogo di hosting di siti web statici, copia l'endpoint del tuo bucket senza l'**http://**iniziale. Il formato è simile a DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com. È necessario che l'endpoint sia in questo formato per un passaggio successivo.
  3. Crea una distribuzione Web CloudFront. Oltre alle impostazioni di distribuzione dei casi d'uso, completa i seguenti passaggi:
    Per il dominio origine, inserisci l'endpoint copiato nel passaggio precedente.
    Nota: non selezionare il bucket dal menu a tendina. Il menu a tendina include solo gli endpoint della REST API del bucket S3 che questa configurazione non utilizza.
    Sotto Aggiungi intestazione personalizzata, scegli Aggiungi intestazione.
    Per ilNome dell'intestazione, inserisci Referer.
    Per Valore, inserisci un valore di intestazione del cliente che desideri inoltrare all'origine (bucket S3). Per limitare l'accesso all'origine, inserisci un valore casuale o segreto che solo tu conosci.
  4. Quando crei la tua distribuzione, è consigliabile utilizzare SSL (HTTPS) per il tuo sito web. Per utilizzare un dominio personalizzato con HTTPS, seleziona **Certificato SSL personalizzato.**Scegli Richiedi certificato per richiedere un nuovo certificato. Se non utilizzi un dominio personalizzato, puoi comunque utilizzare HTTPS con il nome di dominio cloudfront.net per la tua distribuzione.
    Importante: se inserisci Nomi di dominio alternativi (CNAME) per la tua distribuzione, i CNAME devono corrispondere al certificato SSL selezionato. Per risolvere i problemi con il tuo certificato SSL, consulta Come posso risolvere i problemi relativi all'utilizzo di un certificato SSL personalizzato per la mia distribuzione CloudFront?
  5. Apri il bucket del tuo sito web dalla console Amazon S3. Quindi, aggiungi una policy bucket che abiliti s3:GetObject a condizione che la richiesta includa l'intestazione Referer personalizzata specificata nel passaggio 3. Per questa configurazione, devi disattivare le impostazioni di accesso pubblico a blocco del bucket S3. Amazon S3 considera pubblica una policy del bucket che garantisce l'accesso anonimo limitato da un Referer. Se il tuo caso d'uso richiede l'attivazione delle impostazioni di accesso pubblico a blocco, utilizza l'endpoint REST API come origine. Quindi, limita l'accesso con un controllo dell'accesso origine (OAC) o identità di accesso origine (OAI).
    Nota: per bloccare l'accesso per qualsiasi richiesta che non include l'intestazione Referer personalizzata, utilizza un'istruzione di negazione esplicita nella policy del bucket.
  6. Aggiorna i record DNS del tuo dominio per indirizzare il dominio del tuo sito web a CloudFront. Puoi trovare il nome di dominio della tua distribuzione nella console CloudFront. Il nome di dominio è simile al seguente esempio: d1234abcd.cloudfront.net.
  7. Attendi che le modifiche DNS si propaghino e che le voci DNS precedenti scadano.
    Nota: il periodo di scadenza dei valori DNS precedenti dipende dal valore TTL impostato nella zona ospitata. Dipende anche dal fatto che il resolver locale utilizzi tali valori TTL.

Usa CloudFormation per distribuire un endpoint statico del sito web come origine e un dominio personalizzato che punta a CloudFront

Questa soluzione utilizza la seguente configurazione per il tuo sito web:

  • Implementa il tuo sito web con CloudFormation
  • Ospita il tuo sito web su Amazon S3
  • Distribuisce il tuo sito web con CloudFront
  • Utilizza un certificato SSL/TLS dalla Gestione certificati AWS (ACM)
  • Utilizza le policy di intestazione di risposta di CloudFront per aggiungere intestazioni di sicurezza a ogni risposta del server

Per istruzioni su come applicare questa soluzione, consulta Amazon CloudFront Secure Static Website sul sito web GitHub.

Informazioni correlate

Guida introduttiva a un sito web statico sicuro

Validazione e-mail

Validazione DNS

Utilizzo di nomi di dominio alternativi e HTTPS

AWS UFFICIALE
AWS UFFICIALEAggiornata 8 mesi fa