Brak dostępnych celów podczas próby ustawienia celu aliasu z trasy 53 na S3

21

Próbuję skonfigurować prostą stronę internetową opartą na Amazon AWS S3, jak wyjaśniono tutaj .

Skonfigurowałem wiadro S3 (simples3websitetest.com), nadałem mu (mam nadzieję) odpowiednie uprawnienia:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::simples3websitetest.com/*"
            ]
        }
    ]
}

Przesłałem index.html, skonfigurowałem dostęp do strony internetowej i jest on dostępny przez http://simples3websitetest.com.s3-website-us-west-2.amazonaws.com/index.html

Jak dotąd tak dobrze, teraz chcę skonfigurować dostęp do Amazon Route53 i właśnie tam utknąłem.

Skonfigurowałem strefę hostowaną w domenie, którą jestem właścicielem (resourcesbox.net), i kliknąłem „utwórz zestaw rekordów” i przeszedłem do kroku „alias konfiguracji”, ale gdy „ spróbuj ustawić cel aliasu.

Co mnie ominęło??

Amir Zucker
źródło
Od października 2012 r. Amazon wprowadził funkcję obsługi przekierowań (HTTP 301) dla segmentów S3. Tutaj możesz przeczytać moją poprzednią odpowiedź. stackoverflow.com/a/24218895/1160780
Alberto Spelta

Odpowiedzi:

33

Utworzony alias rekordu A musi być taki sam jak nazwa segmentu, ponieważ wirtualny hosting segmentów w S3 wymaga, aby Host:nagłówek wysłany przez przeglądarkę pasował do nazwy segmentu. Tak naprawdę nie ma innego praktycznego sposobu, w jaki można osiągnąć wirtualny hosting wiader ... wiadro musi być identyfikowane przez jakiś mechanizm, a tym mechanizmem są nagłówki http.

Aby utworzyć alias do segmentu w domenie „przyklad.com”, nazwa segmentu musi być także nazwą hosta, którą można legalnie zadeklarować w tej domenie ... testbucket trasy 53. przykład .com ”, na przykład, można aliasować tylko do segmentu o nazwie„ testbucket.example.com ”... i żadnego innego segmentu.

W swoim pytaniu łamiesz to ograniczenie ... ale możesz tylko utworzyć alias do segmentu o nazwie „simples3websitetest.com” w (i na szczycie) domeny „simples3websitetest.com”.

Jest to zgodne z projektem i nie jest to dokładnie ograniczenie Trasy 53 ani S3. Uniemożliwiają ci robienie czegoś, co nie może działać. Serwery sieciowe nie są świadome aliasingu, nazw CNAME ani niczego innego wykonanego w DNS - otrzymują tylko oryginalną nazwę hosta, z którą przeglądarka podejrzewa, że ​​próbuje się połączyć, w nagłówkach http wysyłanych przez przeglądarkę ... i S3 używa tego informacje identyfikujące nazwę segmentu, do którego odnosi się wirtualne żądanie hostowane.

Amazon S3 wymaga nadania wiaderkowi tej samej nazwy co domena. Dzieje się tak, aby Amazon S3 mógł poprawnie rozpoznać nagłówki hosta wysłane przez przeglądarki internetowe, gdy użytkownik zażąda treści z Twojej witryny. Dlatego zalecamy utworzenie wiader dla swojej witryny w Amazon S3, zanim zapłacisz za rejestrację nazwy domeny.

http://docs.aws.amazon.com/gettingstarted/latest/swh/getting-started-create-bucket.html#bucket-requirements

Pamiętaj jednak, że to ograniczenie obowiązuje tylko wtedy, gdy nie używasz CloudFront przed wiadrem.

Dzięki CloudFront istnieje większa elastyczność, ponieważ Host:nagłówek może zostać przepisany (przez sam CloudFront) przed przekazaniem żądania do S3. Konfigurujesz „hosta początkowego” w swojej dystrybucji CloudFront jako your-bucket.s3-website-xx-yyyy-n.amazonaws.comgdzie xx-rrrr-n to region AWS S3, w którym został utworzony Twój segment. Ten punkt końcowy jest pokazany w konsoli S3 dla każdego segmentu.

Michael - sqlbot
źródło
1
To był rzeczywiście problem, stworzyłem wiadro o nazwie resourcesbox.net i się pojawiło. Dziękuję Ci! Szybkie pytanie uzupełniające: co to znaczy, że jeśli chcę mieć różne segmenty dla tej domeny, muszę mieć subdomeny dopasowane do każdego segmentu, prawda? Nie da się tego obejść?
Amir Zucker
Nie jestem do końca pewien, co rozumiesz przez „muszę mieć subdomeny”. Musisz utworzyć rekord A na Route 53 z nazwą hosta pasującą do każdego segmentu, którego chcesz użyć do hostowania strony internetowej w S3, tak.
Michael - sqlbot
1
@oberstet to pytanie dotyczy aliasrekordów Route 53 wskazujących na segmenty S3 z włączonym hostowaniem witryn internetowych, co powoduje, że DNS rozpoznaje punkt końcowy strony internetowej, a nie punkt końcowy REST. Punkty końcowe witryny sieci Web w ogóle nie obsługują protokołu SSL ; robią to tylko punkty końcowe REST. Ponadto wszystkie certyfikaty z symbolami wieloznacznymi obsługują tylko maksymalnie jeden * i mogą pojawiać się tylko w lewym polu nazwy hosta, więc tak naprawdę nie jest to ograniczenie S3.
Michael - sqlbot
1
@oberstet 6.4.3.1 Klient NIE POWINIEN podejmować prób dopasowania podanego identyfikatora, w którym znak wieloznaczny zawiera etykietę inną niż etykieta najbardziej po lewej stronie. Tak więc nie ma czegoś takiego jak wielopoziomowa karta wieloznaczna. W każdym razie problem z botami polega na tym, że opcja „formatu wywoływania” jest najwyraźniej nieprawidłowo zaimplementowana. Do każdego segmentu można uzyskać dostęp za pośrednictwem protokołu https z nazwą segmentu jako pierwszego elementu ścieżki pod adresem URL S3 dla właściwego regionu segmentu, np https://s3-us-west-2.amazonaws.com/my-bucket.with-dots.in-us-west-2/key. Zły regionalny punkt końcowy = błąd przekierowania.
Michael - sqlbot
1
@MartinLyne dzięki. Dodałem odniesienie do dokumentacji S3, dotyczące nazwy segmentu i nazwy domeny, które muszą być takie same, a także wzmiankę o obejściu dla już przyjętej nazwy segmentu za pomocą CloudFront. W regionach us-east-1 i us-west-2 i ewentualnie innych, koszt korzystania z CloudFront jest znikomy i może potencjalnie nawet trochę zaoszczędzić, ponieważ pobieranie CF jest o 0,005 $ / GB tańsze na przepustowości niż S3 bezpośrednio na pewnym brzegu lokalizacje.
Michael - sqlbot
0

Załóżmy, że masz strefę hostowaną abc.com. i tworzysz segment abc.com (który nie pojawia się na liście w aliasach tras) - możesz myśleć, że to. po nazwie - za pomocą której nie można nazwać wiader

Spróbuj tego również. Ponieważ po raz pierwszy utworzyłem wiadro z poprawną nazwą i nadal nie działało. Uwierz mi, że mam OCD, więc nie przegapiłem kropki ani przecinka.

  1. Utwórz kolejną strefę hostowaną o tej samej nazwie abc.com
  2. Zobaczysz teraz 2 tej samej strefy hostowanej (abc.com. I abc.com.)
  3. Usuń nowy
  4. Wróć do starej hostowanej strefy abc.com
  5. Być może zobaczysz zbliżające się punkty końcowe s3 - może to być problem w Route53

Pomogło mi to wypróbować prawie wszystko - niektóre sugestie, które widzę, to wylogowanie i zalogowanie się w celu wyczyszczenia pamięci podręcznej - nie jestem pewien

Chathushka
źródło