2013-03-09 11 views
52

Hostuję statyczną stronę internetową na Amazon S3 przy użyciu opcji statycznego hostingu strony, tak aby S3 renderował folder bez wyraźnego wskazania mojego indeksu. plik html.Amazon CloudFront nie szanuje mojej strony internetowej S3 Bucket's index.html Reguły

Na przykład, tutaj jest bezpośredni link do strony w moim wiadrze S3: http://new.rdegges.com.s3-website-us-east-1.amazonaws.com/category/2009/ Jak widać, podczas odwiedzania tego adresu URL, Amazon S3 automatycznie renderuje plik index.html w tym katalogu, co pozwala mi mieć czyste adresy URL.

Wszystko działa poprawnie na S3. Problem, który mam, polega na tym, że Amazon Cloudfront odpowiednio obsługuje to zachowanie. Kiedy tworzę dystrybucję Cloudfront z moim wiadrem S3 określonym jako pochodzenie i mówię, żeby użył "index.html" jako root, zachowanie index.html, które S3 właśnie przestało działać razem.

Na przykład, tutaj jest mój sam URL jak wyżej na CloudFront: http://d1mj00c6pby3gc.cloudfront.net/category/2009/

Niestety, adres URL powyżej nie działa, ale jeśli ręcznie wskazać plik indeksu, to robi, na przykład: http://d1mj00c6pby3gc.cloudfront.net/category/2009/index.html

Moje pytanie brzmi: w jaki sposób muszę skonfigurować Cloudfront tak, aby respektował moje ustawienia wiadra S3 na mojej stronie?

+0

Możesz definitywnie ustawić go na root. Nie jestem pewien, czy działa na jeden katalog. http://aws.typepad.com/aws/2010/08/new-amazon-cloudfront-feature-default-roob-object.html – dirn

+1

Hej @ dirn, tak! Używam domyślnego katalogu głównego index.html, ale z jakiegoś powodu nie dotyczy on żadnych podfolderów (tylko najwyższy poziom). Uważam, że jest to dziwne, ponieważ S3 ma to samo ustawienie i ma zastosowanie również do wszystkich podfolderów, arg. – rdegges

+0

"Nie szanuje" .. Woow! +1 od mnie –

Odpowiedz

91

S3 Funkcje strony internetowej mogą być używane w połączeniu z Amazon CloudFront. Jednak witryna S3 używa innej nazwy domeny niż zwykłe wiadra S3. W takim przypadku musisz ustawić Origin Domain Name konfiguracji początkowej dystrybucji CloudFront na new.rdegges.com.s3-website-us-east-1.amazonaws.com.

Możesz wziąć ten adres (punkt końcowy) z poziomu panela Hosting statycznych stron na S3:

Static Website Hosting panel on S3

Po CloudFront jest skierowany do S3 nazwy domeny internetowej, funkcje witryn internetowych S3 powinien działać.

+1

To powinna być zaakceptowana odpowiedź! –

+0

Dziękuję, to było bardzo denerwujące! – rdegges

+4

Świetna rozdzielczość, dziękuję. Zdarza się, że wiele osób założyło się, ponieważ autopoładowanie w chmurze do nazwy pojemnika, a nie statyczny adres URL strony. Różnica nie była dla mnie jasna na początku. – SimplGy

11

Chciałbym dodać kilka rzeczy do zaakceptowanej odpowiedzi.

Najpierw upewnij się, że masz numer Default Root Object w swojej chmurze. Jak określono w documentation, nie będzie to miało zastosowania do subdirectories.

Podczas konfigurowania nowej dystrybucji chmury, umożliwia wybór wiadra bucket-name.s3.amazonaws.com. Zwróć uwagę, że region nie został określony w adresie URL. Musisz pobrać statyczny URL strony z s3 i użyć go jako origin url (region będzie tam).

+0

Miałem problem z obiektem głównym, który nie podał domyślnego index.html. Na początku próbowałem wysłać go do cname www.example.com i www.example.com/index.html, które nie działały, i działałem, gdy po prostu ustawiłem obiekt główny jako index.html –