2009-02-20 29 views
12

Jak mogę zmienić adres URL Amazon S3 od http://bucket.amazons3.com/imagepath.jpg do http://image.mydomain.com/imagepath.jpgAmazon S3 Url przepisać

EDIT: Zasadniczo cała Powodem tego jest to, aby ukryć Amazon S3 URL z moich użytkowników.

Myślałem o module HttpModule, który przekieruje żądanie z image.mydomain.com na bucket.amazons3.com. Ale to wymagałoby ode mnie wszystkich zgłoszeń, które będą przetwarzane przez moje serwery, a następnie przesyłane dalej.

+1

Proszę oznaczyć jako odpowiedź, jeśli moja odpowiedź jest przydatna. – Ramesh

Odpowiedz

22

Jeśli rozumiem, musisz podać nazwę swojej domeny zamiast S3. Aby to zrobić, musisz napisać przewodnik, który będzie pełnić rolę serwera proxy dla serwera Amazon.

Ale to faktycznie podwoiłoby przepustowość, ponieważ trzeba przesłać obraz do klienta, a także pobrać obraz dla S3.

Nie jestem pewien, czy istnieje jakiś specyficzny sposób S3 radzenia sobie z tym.

Poniżej Amazon S3 specyficzny sposób pobierane z Amazon S3, CNAME record

Przeciętny użytkownik może zapisać się na Amazon S3 hosting i rozpocząć przesyłanie plików - przyjmując domyślny adres URL strukturę hostowanych plików:

http://s3.amazonaws.com/your-bucket/some-file.txt Jeśli planujesz używać S3 do przechowywania plików multimedialnych - w szczególności plików Flash - będziesz korzystać z zasad zabezpieczeń krzyżowych firmy Adobe. Ta poprawka wymaga odwzorowania hostowanych plików S3 na , aby wyglądały na , tak jakby były podawane z domeny o nazwie . najprostszy i najbardziej atrakcyjny sposób będzie gospodarzem plik URL, które lubią to:

http://s3.your-site.com/some-file.txt Aby rozpocząć, należy utworzyć wiadro na S3 który chcesz jako korzeń dla swoich udostępnianych plików. W tym przykładzie Twój S3 wiadro byłoby:

s3.your-site.com Najważniejszą krokiem jest dodanie odpowiedniego rekordu CNAME do ustawień DNS.

Nazwa Typ Dane s3.your-site.com CNAME s3.amazonaws.com. Spodziewaj się nowych ustawień DNS, aby zabrać do 24-48 godzin na rozwiązanie.

0

Tak jak ja to widzę, masz dwie możliwości:

  1. dokonać przekierowania, jak wspomniano, ani
  2. Aby złożyć wnioski o środki z S3, a następnie zwrócić je do użytkowników za pośrednictwem odpowiedzi.

Tak więc, jeśli użytkownik chce zobaczyć ten zasób http://image.mydomain.com/imagepath.jpg można wewnętrznie żądać oryginalnego zasobu z http://bucket.amazons3.com/imagepath.jpg, zapisz go lokalnie i odesłać go do żądającego użytkownika.

Wydaje się dużo przepustowości, ale jeśli jest to wymaganie krytyczne, to powinna być droga.

3

Brzmi jak chcesz wygenerować wygasające linki,

http://www.ioncannon.net/s3/21/creating-s3-urls-that-expire-using-php/

Następnie można wygenerować je na bieżąco, i dostarczyć im jak przekierowania za pośrednictwem aplikacji. Więc ktoś zażąda, http://images.mydomain.com/img123.jpg

i wygenerować piękny, automatycznie wygasających s3 URL http://mydomain.s3.amazonaws.com/T154456.jpg?AWSAccessKeyId=1ESOMESPECIALIDJJAKJ6RA82&Expires=1241372284&Signature=ddfr%2BlkoSEPAL%2BGbMwlMzj6q%2BCY%3D

następnie przekierować użytkownika do automatycznego generowane URL. w ten sposób, nawet jeśli użytkownik patrzy na źródło html, widzi tylko adres URL z adresu URL prowadzący z powrotem do witryny, ale po kliknięciu linku zostaje przekierowany do Amazona, więc nie musisz się martwić o proxy - zażądać przez serwer i zużywać niepotrzebną przepustowość.

3

jeśli masz kontrolę nad swoim DNS, dlaczego nie skonfigurować CNAME?

Mamy konfigurację cname wskazującą js.our-domain.com wskazującą jeden z naszych wiader (dość dziwne pliki javascript), a następnie odwołujmy się do js.our-domain.com/jquery.js (na przykład) i dalej idziemy.

W zależności od gospodarza, istnieją wiele sposobów konfiguracji CNAME - Google Search reveals many

6

Aby rozwinąć na odpowiedź tez jest, Amazon S3 zapewnia wsparcie dla mapowania domen niestandardowych poprzez Virtual Hosting of Buckets.

Aby to działało, nazwa wiadra musi być pełną nazwą hosta, którą chcesz odwzorować.

Tak, korzystając z przykładu w oryginalnym pytanie utwórz wiadro S3 nazwie image.mydomain.com i utworzenia CNAME dla niego:

image.mydomain.com CNAME image.mydomain.com.s3.amazonaws.com. 
9

Tworzenie CNAME na s3.amazonaws.com. jest wystarczający. Nie ma potrzeby dodawania nazwy wiadra.

4

Odpowiedź Bryana jest poprawna, a Ramesh i Vincent mają błąd. Ustawienie rekordu CNAME na s3.amazonaws.com spowodowało niepotrzebne przekierowania, zgodnie z ostrzeżeniem w przewodniku AWS Virtual Hosting of Buckets here.