Come si imposta un oggetto radice predefinito per le sottodirectory su un sito Web ospitato staticamente su Cloudfront? In particolare, vorrei www.example.com/subdir/index.html
essere servito ogni volta che l'utente lo richiede www.example.com/subdir
. Nota, questo serve per fornire un sito web statico contenuto in un bucket S3. Inoltre, vorrei utilizzare un'identità di accesso origine per limitare l'accesso al bucket S3 solo a Cloudfront.
Ora, sono consapevole che Cloudfront funziona in modo diverso da S3 e Amazon afferma specificamente :
Il comportamento degli oggetti root predefiniti di CloudFront è diverso dal comportamento dei documenti di indice di Amazon S3. Quando configuri un bucket Amazon S3 come sito Web e specifichi il documento di indice, Amazon S3 restituisce il documento di indice anche se un utente richiede una sottodirectory nel bucket. (Una copia del documento di indice deve apparire in ogni sottodirectory.) Per ulteriori informazioni sulla configurazione dei bucket Amazon S3 come siti Web e sui documenti di indice, consulta il capitolo Hosting di siti Web su Amazon S3 nella Guida per lo sviluppatore di Amazon Simple Storage Service.
Pertanto, anche se Cloudfront ci consente di specificare un oggetto root predefinito, questo funziona solo per www.example.com
e non per www.example.com/subdir
. Per aggirare questa difficoltà, possiamo cambiare il nome del dominio di origine in modo che punti all'endpoint del sito web fornito da S3. Funziona alla grande e consente di specificare in modo uniforme gli oggetti root. Sfortunatamente, questo non sembra essere compatibile con le identità di accesso all'origine . In particolare, i link sopra affermano:
Passa alla modalità di modifica:
Distribuzioni Web: fare clic sulla scheda Origini, fare clic sull'origine che si desidera modificare e fare clic su Modifica. È possibile creare un'identità di accesso all'origine solo per origini per cui il tipo di origine è S3 Origin.
Fondamentalmente, per impostare l'oggetto root predefinito corretto, utilizziamo l'endpoint del sito Web S3 e non il bucket del sito stesso. Ciò non è compatibile con l'utilizzo dell'identità di accesso dell'origine. In quanto tale, le mie domande si riducono a entrambe
È possibile specificare un oggetto radice predefinito per tutte le sottodirectory per un sito Web ospitato staticamente su Cloudfront?
È possibile impostare un'identità di accesso all'origine per i contenuti serviti da Cloudfront dove l'origine è un endpoint del sito Web S3 e non un bucket S3?