2009-02-20 36 views
12

¿Cómo puedo cambiar la dirección URL de Amazon S3 http://bucket.amazons3.com/imagepath.jpg a http://image.mydomain.com/imagepath.jpgAmazon S3 de reescritura de URL

EDIT: Básicamente toda la razón de esto es ocultar la URL Amazon S3 de mis usuarios.

Estaba pensando en un HttpModule que redirigiría la solicitud de image.mydomain.com a bucket.amazons3.com. Pero eso requeriría que todas las solicitudes fueran manejadas por mis servidores primero y luego reenviadas.

+1

Por favor marque como respondido si mi respuesta es útil. – Ramesh

Respuesta

22

Si lo entiendo, debe especificar su nombre de dominio en lugar de S3. Para hacer esto, necesita escribir un controlador que actuará como un proxy para el servidor de Amazon.

Pero, en realidad, duplicaría su ancho de banda ya que necesita enviar la imagen al cliente y recuperar la imagen para S3.

No estoy seguro de que exista alguna forma específica de S3 para manejar esto.

A continuación se Amazon S3 manera específica tomado de Amazon S3, CNAME record

El usuario medio puede inscribirse para Amazon S3 de alojamiento y comenzar a subir archivos - aceptar la URL predeterminada estructura de archivos alojados:

http://s3.amazonaws.com/your-bucket/some-file.txt Si planea usar S3 para alojar archivos multimedia , más específicamente archivos Flash , se encontrará con la política de seguridad de dominio cruzado de Adobe. La corrección requiere mapeo de sus archivos S3 alojados para buscar como si estuvieran siendo servidos desde su propio dominio - hosting virtual . El método más fácil y atractiva sería una dirección de fichero alojado que le gusta esta :

http://s3.your-site.com/some-file.txt Para empezar, crea un cubo en S3 que desea como la raíz de sus archivos alojados. Para este ejemplo, su S3 balde sería:

s3.your-site.com El paso más importante es la adición del registro apropiado CNAME a la configuración de DNS.

Nombre Tipo Datos s3.your-site.com CNAME s3.amazonaws.com. Espere que su nueva configuración de DNS tome hasta 24-48 horas para resolver.

0

La forma en que lo veo, usted tiene dos opciones:

  1. para hacer las redirecciones como ha afirmado, o
  2. para hacer una solicitud de los recursos de S3 y luego les vuelva a los usuarios a través de tu respuesta.

Por lo tanto, si el usuario quiere ver el recurso http://image.mydomain.com/imagepath.jpg, puede solicitar el recurso interno original del http://bucket.amazons3.com/imagepath.jpg, guardarlo localmente y devolverlo al usuario solicitante.

Pasa mucho ancho de banda, pero si este es su requisito crítico, este debería ser el camino a seguir.

3

Suena como desea generar enlaces que vencen,

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

continuación, se puede generar éstos sobre la marcha, y suministrarlos como redirige a través de su aplicación. lo solicite alguien, http://images.mydomain.com/img123.jpg

y se genera un agradable, url s3 auto-que expira, http://mydomain.s3.amazonaws.com/T154456.jpg?AWSAccessKeyId=1ESOMESPECIALIDJJAKJ6RA82&Expires=1241372284&Signature=ddfr%2BlkoSEPAL%2BGbMwlMzj6q%2BCY%3D

entonces redirigir al usuario a la URL generada automáticamente. De esta forma, incluso si el usuario mira la fuente html, solo verá la url que lleva de regreso a su sitio, pero cuando hacen clic en el vínculo, se redirigen a Amazon para que no tenga que preocuparse por proxy-ing solicite a través de su servidor y consuma ancho de banda innecesario.

3

si tiene control sobre su DNS, ¿por qué no configurar un CNAME?

tenemos una configuración de cname apuntando js.our-domain.com apuntando a uno de nuestros cubos (curiosamente suficientes archivos javascript), simplemente hacemos referencia a js.our-domain.com/jquery.js (por ejemplo) y lejos nosotros vamos.

Dependiendo de su anfitrión, hay cualquier cantidad de formas de configurar CNAME de - una búsqueda en Google reveals many

6

dar más detalles sobre la respuesta de Tez, Amazon S3 proporciona soporte para dominios personalizados a través de la cartografía Virtual Hosting of Buckets.

Para que esto funcione, el nombre de su depósito debe ser el nombre de host completo que desea asignar.

Por lo tanto, utilizando el ejemplo en la pregunta original, crear un depósito de S3 llamada image.mydomain.com y configurar un CNAME para ello:

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

Creación de un CNAME en s3.amazonaws.com. es suficiente. No hay necesidad de anteponer el nombre del cubo.

4

La respuesta de Bryan es correcta y Ramesh y Vincent tienen un error. Al configurar el CNAME en s3.amazonaws.com, se produjeron redireccionamientos innecesarios para mí, como se advertía en la guía AWS Virtual Hosting of Buckets here.