Alojamiento virtual de buckets - Amazon Simple Storage Service

Alojamiento virtual de buckets

El alojamiento virtual es la práctica que consiste en distribuir múltiples sitios web desde un solo servidor web. Una manera de diferenciar sitios es mediante el uso del nombre de host aparente de la solicitud en lugar de solo la parte del nombre de la ruta del URI. Para especificar un bucket, una solicitud REST de Amazon S3 normal utiliza el primer componente delimitado por una barra inclinada de la ruta del URI de la solicitud. También puede utilizar el alojamiento virtual de Amazon S3 para hacer referencia a un bucket en una llamada a la API de REST mediante el encabezado Host de HTTP. En la práctica, Amazon S3 interpreta que el Host significa que es posible acceder a la mayoría de los buckets de manera automática (para tipos limitados de solicitudes) en https://bucketname.s3.Region.amazonaws.com. Para obtener una lista completa de las regiones y de los puntos de enlace de Amazon S3, consulte Puntos de enlace y cuotas de Amazon S3 en la Referencia general de Amazon Web Services.

El alojamiento virtual también tiene otros beneficios. Al nombrar su bucket después de su nombre de dominio registrado y al convertir ese nombre en un alias de Domain Name System (DNS, Sistema de nombres de dominio) para Amazon S3, puede personalizar completamente el URL de sus recursos de Amazon S3, por ejemplo, http://my.bucketname.com/. También puede publicar en el "directorio raíz" del servidor virtual de su bucket. Esta capacidad puede ser importante ya que varias aplicaciones existentes buscan archivos en esta ubicación estándar. Por ejemplo, favicon.ico, robots.txt y crossdomain.xml se encuentran en la raíz.

importante

Cuando se utilizan buckets de alojamiento virtual con SSL, el certificado comodín de SSL solo se asocia a los buckets que no contienen puntos ("."). Para solucionar esto, use HTTP o escriba su propia lógica de verificación de certificado. Para obtener más información, consulte Amazon S3 Path Deprecation Plan.

Solicitudes de tipo ruta

Actualmente, Amazon S3 admite acceso de estilo alojado y de ruta en todas las regiones, pero esto irá cambiando (consulte la siguiente nota importante.

En Amazon S3, las URL de tipo ruta utilizan el siguiente formato.

https://s3.Region.amazonaws.com/bucket-name/key name

Por ejemplo, si crea un bucket con el nombre mybucket en la región EE. UU. Oeste (Oregón) y quiere acceder al objeto puppy.jpg en dicho bucket, puede usar la siguiente URL de tipo ruta:

https://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg
importante

Actualización (23 de septiembre de 2020): hemos decidido retrasar la obsolescencia de las URL de tipo ruta para garantizar que los clientes tienen el tiempo necesario para pasar a las URL de tipo alojamiento virtual. Para obtener más información, consulte Amazon S3 Path Deprecation Plan – The Rest of the Story en el Blog de noticias de AWS.

Solicitudes de tipo alojamiento virtual

En un URI de tipo alojamiento virtual, el nombre del bucket forma parte del nombre del dominio en el URL.

Las URL de tipo host virtual de Amazon S3 utilizan el siguiente formato.

https://bucket-name.s3.Region.amazonaws.com/key name

En este ejemplo, my-bucket es el nombre del bucket, EE.UU Oeste (Oregon) es la región y puppy.png es el nombre clave:

https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png

Especificación de bucket de encabezado de host HTTP

Siempre y cuando su solicitud GET no utilice el punto de enlace de SSL, puede especificar el bucket para la solicitud con el encabezado del Host HTTP. El encabezado del Host en una solicitud de REST se interpreta de la siguiente manera:

  • Si se omite el encabezado Host o si su valor es s3.Region.amazonaws.com, el bucket de la solicitud será el primer componente delimitado por una barra inclinada del URI de la solicitud y la clave para la solicitud será el resto del URI de la solicitud. Este es el método más común, según se ilustra en el primer y segundo ejemplo de esta sección. Solo se puede omitir el encabezado Host para solicitudes HTTP 1.0.

  • De lo contrario, si el valor del encabezado Host termina en .s3.Region.amazonaws.com, el nombre del bucket es la primera parte del valor del encabezado Host hasta .s3.Region.amazonaws.com. La clave para la solicitud es el URI de la solicitud. Esta interpretación expone los buckets como subdominios de .s3.Region.amazonaws.com, según se ilustra en los ejemplos tercero y cuarto de esta sección.

  • De lo contrario, el bucket para la solicitud es el valor en minúscula del encabezado del Host y la clave para la solicitud es el URI de la solicitud. Esta interpretación es útil si registró el mismo nombre de DNS que el nombre de su bucket y estableció ese nombre como alias de nombre canónico (CNAME) para Amazon S3. El procedimiento para registrar nombres de dominio y configurar DNS está fuera del propósito de esta guía, pero el resultado se muestra en el ejemplo final en esta sección.

Ejemplos

En esta sección se proporcionan ejemplos de URL y solicitudes.

ejemplo Estilo de ruta

En este ejemplo se utiliza lo siguiente:

  • Nombre del bucke ‐ awsexamplebucket1.net

  • Región: EE. UU. Este (Norte de Virginia)

  • Nombre de clav ‐ homepage.html

El URL es el siguiente:

http://s3.us-east-1.amazonaws.com/awsexamplebucket1.net/homepage.html

La solicitud es la siguiente:

GET /awsexamplebucket1.net/homepage.html HTTP/1.1 Host: s3.us-east-1.amazonaws.com

La solicitud con HTTP 1.0 y la omisión del encabezado de host son los siguientes:

GET /awsexamplebucket1.net/homepage.html HTTP/1.0

Para obtener información acerca de los nombres compatibles con el DNS, consulte Limitaciones. Para obtener más información acerca de las claves, consulte Claves.

ejemplo Tipo alojamiento virtual

En este ejemplo se utiliza lo siguiente:

  • Nombre del bucke ‐ awsexamplebucket1.eu

  • Región: UE (Irlanda)

  • Nombre de clav ‐ homepage.html

El URL es el siguiente:

http://awsexamplebucket1.eu.s3.eu-west-1.amazonaws.com/homepage.html

La solicitud es la siguiente:

GET /homepage.html HTTP/1.1 Host: awsexamplebucket1.eu.s3.eu-west-1.amazonaws.com

ejemplo Método de CNAME

Para utilizar este método, debe configurar su nombre de DNS como un alias de CNAME para bucketname.s3.us-east-1.amazonaws.com. Para obtener más información, consulte Personalización de URL de Amazon S3 con CNAME. En este ejemplo se utiliza lo siguiente:

  • Nombre del bucke ‐ awsexamplebucket1.net

  • Nombre de clav ‐ homepage.html

El URL es el siguiente:

http://www.awsexamplebucket1.net/homepage.html

El ejemplo es el siguiente:

GET /homepage.html HTTP/1.1 Host: www.awsexamplebucket1.net

Personalización de URL de Amazon S3 con CNAME

Según sus necesidades, es posible que no desee que s3.Region.amazonaws.com aparezca en su sitio web o servicio. Por ejemplo, si aloja las imágenes del sitio web en Amazon S3, puede que prefiera http://images.awsexamplebucket1.net/ en lugar de http://images.awsexamplebucket1.net.s3.us-east-1.amazonaws.com/. Cualquier bucket con un nombre compatible con el DNS se puede denominar de la siguiente manera: http://BucketName.s3.Region.amazonaws.com/[Filename], por ejemplo, http://images.awsexamplebucket1.net.s3.us-east-1.amazonaws.com/mydog.jpg. Al utilizar CNAME, puede asignar images.awsexamplebucket1.net a un nombre de host de Amazon S3 para que la URL anterior pueda convertirse en http://images.awsexamplebucket1.net/mydog.jpg.

El nombre del bucket debe ser el mismo que el CNAME. Por ejemplo, si crea un CNAME para asignar images.awsexamplebucket1.net a images.awsexamplebucket1.net.s3.us-east-1.amazonaws.com, http://images.awsexamplebucket1.net/filename y http://images.awsexamplebucket1.net.s3.us-east-1.amazonaws.com/filename serán iguales.

El registro de DNS de CNAME debe usar el nombre de host de tipo alojamiento virtual adecuado como el alias de su nombre de dominio. Por ejemplo, si el nombre del bucket y el nombre de dominio son images.awsexamplebucket1.net y el bucket está en la región EE. UU. Este (Norte de Virginia), el registro CNAME debe tomar como alias images.awsexamplebucket1.net.s3.us-east-1.amazonaws.com.

images.awsexamplebucket1.net CNAME images.awsexamplebucket1.net.s3.us-east-1.amazonaws.com.

Amazon S3 utiliza el nombre de host para determinar el nombre del bucket. Por tanto, el nombre del bucket debe ser el mismo que el CNAME. Por ejemplo, suponga que configuró www.example.com como un CNAME para www.example.com.s3.us-east-1.amazonaws.com. Cuando accede a http://www.example.com, Amazon S3 recibe una solicitud similar a la siguiente:

GET / HTTP/1.1 Host: www.example.com Date: date Authorization: signatureValue

Amazon S3 solo ve el nombre de host original www.example.com y desconoce el mapeo de CNAME que se utiliza para resolver la solicitud.

Se puede utilizar cualquier punto de enlace de Amazon S3 en un CNAME. Por ejemplo, se puede utilizar s3.ap-southeast-1.amazonaws.com en los CNAME. Para obtener más información acerca de los puntos de enlace, consulte Puntos de enlace de solicitud. Para crear un sitio web estático con un dominio personalizado, consulte Configuración de un sitio web estático mediante un dominio personalizado registrado con Route 53

Para asociar un nombre de host a un bucket de Amazon S3 mediante los CNAME, realice las siguientes acciones:

  1. Seleccione un nombre de host que pertenezca a un domino que usted controla.

    En este ejemplo se utiliza el subdominio images del dominio awsexamplebucket1.net.

  2. Cree un bucket que coincida con el nombre de host.

    En este ejemplo, los nombres de host y de bucket son images.awsexamplebucket1.net. El nombre del bucket debe coincidir exactamente con el nombre de host.

  3. Cree un registro CNAME que defina el nombre de host como un alias para el bucket de Amazon S3.

    Por ejemplo:

    images.awsexamplebucket1.net CNAME images.awsexamplebucket1.net.s3.us-west-2.amazonaws.com

    importante

    Por motivos de direccionamiento de solicitudes, el registro de CNAME se debe definir exactamente como se muestra en el ejemplo anterior. De lo contrario, puede parecer que funciona correctamente, pero al final provocará un comportamiento impredecible.

    El procedimiento para la configuración de DNS depende de su servidor de DNS o proveedor de DNS. Para obtener información específica, consulte la documentación de su servidor o contáctese con su proveedor.

Limitations

La compatibilidad con SOAP por HTTP está obsoleta, pero aún se encuentra disponible con HTTPS. Las nuevas características de Amazon S3 no serán compatibles con SOAP. Le recomendamos que utilice la API de REST o los SDK de AWS.

Compatibilidad con versiones anteriores

Puntos de enlace heredados

Algunas regiones admiten puntos de enlace heredados. Es posible que vea estos puntos de enlace en los registros de acceso al servidor o en los registros de CloudTrail. Para obtener más información, consulte la siguiente información. Para obtener una lista completa de las regiones y de los puntos de enlace de Amazon S3, consulte Puntos de enlace y cuotas de Amazon S3 en la Referencia general de Amazon Web Services.

importante

Aunque es posible que vea los puntos de enlace heredados en los registros, es recomendable que utilice siempre la sintaxis estándar de puntos de enlace para obtener acceso a los buckets.

Las URL de tipo host virtual de Amazon S3 utilizan el siguiente formato.

https://bucket-name.s3.Region.amazonaws.com/key name

En Amazon S3, las URL de tipo ruta utilizan el siguiente formato.

https://s3.Region.amazonaws.com/bucket-name/key name

Región de S3

Algunas regiones antiguas de Amazon S3 admiten puntos de enlace que contienen un guion entre S3 y la región (por ejemplo, S3‐us-west-2), en lugar de un punto (por ejemplo, S3.us-west-2). Si el bucket se encuentra en una de estas regiones, es posible que vea el siguiente formato de punto de enlace en los registros de acceso al servidor o en los registros de CloudTrail:

https://bucket-name.s3-Region.amazonaws.com

En este ejemplo, el nombre del bucket es my-bucket y la región es EE. UU. Oeste (Oregón):

https://my-bucket.s3-us-west-2.amazonaws.com

Punto de enlace global heredado

En algunas regiones, el punto de enlace global heredado se puede utilizar para crear solicitudes que no especifiquen un punto de enlace específico de la región. El punto de enlace global heredado es el siguiente:

bucket-name.s3.amazonaws.com

En los registros de acceso al servidor o en los registros de CloudTrail, es posible que vea solicitudes que utilizan el punto de enlace global heredado. En este ejemplo, el nombre del bucket es my-bucket y se muestra el punto de enlace global heredado:

https://my-bucket.s3.amazonaws.com

Solicitudes de tipo alojamiento virtual para EE. UU. Este (Norte de Virginia)

Las solicitudes realizadas con el punto de enlace global heredado se envían a EE.UU. Este (Norte de Virginia) de forma predeterminada. Por lo tanto, el punto de enlace global heredado se utiliza a veces como sustituto del punto de enlace regional para EE. UU. Este (Norte de Virginia). Si crea un bucket en EE. UU. Este (Norte de Virginia) y utiliza el punto de enlace, Amazon S3 envía su solicitud a esta región de forma predeterminada.

Solicitudes de tipo alojamiento virtual para otras regiones

El punto de enlace global heredado también se utiliza para solicitudes de tipo alojamiento virtual en otras regiones compatibles. Si crea un bucket en una región que se lanzó antes del 20 de marzo de 2019 y utiliza el punto de enlace global heredado, Amazon S3 actualiza el DNS para redirigir la solicitud a la ubicación correcta, lo que podría tardar algún tiempo. Mientras tanto, se aplica la regla predeterminada y su solicitud de tipo alojamiento virtual se dirige a la región de EE. UU. Este (Norte de Virginia). A continuación, Amazon S3 la redirecciona con el redireccionamiento HTTP 307 a la región correcta. Para los buckets de S3 de regiones lanzadas después del 20 de marzo de 2019, el DNS no enruta la solicitud directamente a la Región de AWS en la que reside el bucket. En su lugar, devuelve un error de solicitud errónea HTTP 400. Para obtener más información, consulte Realizar solicitudes.

Solicitudes de tipo ruta

Para la región EE. UU. Este (Norte de Virginia), el punto de enlace global heredado se puede utilizar para solicitudes de tipo ruta.

Para todas las demás regiones, la sintaxis de tipo ruta requiere que se use el punto de enlace específico de la región al intentar obtener acceso al bucket. Si intenta obtener acceso a un bucket con el punto de enlace global heredado u otro punto de enlace diferente al de la región donde reside el bucket, recibirá un error de redireccionamiento temporal con el código de respuesta HTTP 307 y un mensaje que indica el URI correcto para el recurso. Por ejemplo, si utiliza https://s3.amazonaws.com/bucket-name para un bucket creado en la región EE. UU. Oeste (Oregón), recibirá un error de redireccionamiento temporal HTTP 307.