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://
. 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.bucketname
.s3.Region
.amazonaws.com
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.
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
Temas
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
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
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 ess3.
, 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.Region
.amazonaws.com -
De lo contrario, si el valor del encabezado
Host
termina en.s3.
, el nombre del bucket es la primera parte del valor del encabezadoRegion
.amazonaws.comHost
hasta.s3.
. La clave para la solicitud es el URI de la solicitud. Esta interpretación expone los buckets como subdominios deRegion
.amazonaws.com.s3.
, según se ilustra en los ejemplos tercero y cuarto de esta sección.Region
.amazonaws.com -
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
. Para obtener más información, consulte Personalización de URL de Amazon S3 con CNAME. En este ejemplo se utiliza lo siguiente:bucketname
.s3.us-east-1.amazonaws.com
-
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.
aparezca en su sitio web o servicio. Por ejemplo, si aloja las imágenes del sitio web en Amazon S3, puede que prefiera Region
.amazonaws.comhttp://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://
, por ejemplo, BucketName
.s3.Region
.amazonaws.com/[Filename
]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:
-
Seleccione un nombre de host que pertenezca a un domino que usted controla.
En este ejemplo se utiliza el subdominio
images
del dominioawsexamplebucket1.net
. -
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. -
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.
Limitaciones
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.
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/
para un bucket creado en la región EE. UU. Oeste (Oregón), recibirá un error de redireccionamiento temporal HTTP 307.bucket-name