Jak hostować stronę statyczną na AWS CloudFront

Jak używać S3 jako źródła dla CloudFront

Spis treści

Szukałem sposobu na hostowanie strony statycznej na AWS. Znalazłem kilka sposobów, ale zdecydowałem się użyć CloudFront jako CDN i S3 jako źródła. Pokażę ci, jak to zrobić.

Początek jest dość prosty - tworzenie kubełka w S3 i skonfigurowanie go jako źródła dla CloudFront.

Największy problem pojawia się oczywiście z hostowaniem serwującym pliki index.html. Możesz skonfigurować domyślny obiekt główny, ale działa to tylko dla ścieżki /, ale nie dla podkatalogów. Jest kilka sposobów na rozwiązanie tego problemu.

Funkcje CloudFront

Funkcje CloudFront to nowa funkcja, która pozwala uruchamiać fragment kodu na krawędzi. Możesz go użyć do przepisywania ścieżki żądania.

Więcej informacji o funkcjach CloudFront znajdziesz tutaj .

Image not found

Przygotujemy małą funkcję, która przepisze ścieżkę żądania.

function handler(event) {
    var request = event.request;
    var uri = request.uri;

    // Sprawdzamy, czy URI nie ma nazwy pliku.
    if (uri.endsWith('/')) {
        request.uri += 'index.html';
    }
    // Sprawdzamy, czy URI nie ma rozszerzenia pliku.
    else if (!uri.includes('.')) {
        request.uri += '/index.html';
    }

    return request;
}

Nie zapomnij przypisać funkcji do dystrybucji CloudFront.

cloudfront-functions

Hostowanie strony

Inną opcją jest użycie hostowania strony przez S3. Jest to nieco bardziej skomplikowane, ale działa z podkatalogami.

Upewnij się, że opcja hostowania strony jest włączona na twoim kubełku i skopiuj z niego nazwę domeny:

Hostowanie strony

Zamiast wybierać domenę z listy, po prostu wklej swoją nazwę domeny. rozwijana lista