

# Alojamiento virtual de buckets de uso general
<a name="VirtualHosting"></a>

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 en las solicitudes de la API de REST de Amazon S3 es mediante el uso del nombre de host aparente de Request-URI 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. En su lugar, puede utilizar el alojamiento virtual de Amazon S3 para hacer referencia a un bucket de uso general 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://bucket-name.s3.region-code.amazonaws.com`. Para obtener una lista completa de las regiones y los puntos de conexión de Amazon S3, consulte [Puntos de conexión y cuotas de Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html) 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.bucket-name.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 utiliza buckets de uso general de tipo host virtual con SSL, el certificado comodín de SSL solo se asocia a los buckets que no contienen puntos (`.`). Para solucionar esta limitación, 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](https://aws.amazon.com/blogs/aws/amazon-s3-path-deprecation-plan-the-rest-of-the-story/) en *AWS News Blog*.

**Topics**
+ [Solicitudes de tipo ruta](#path-style-access)
+ [Solicitudes de tipo host virtual](#virtual-hosted-style-access)
+ [Especificación de bucket de encabezado `Host` de HTTP](#VirtualHostingSpecifyBucket)
+ [Ejemplos](#VirtualHostingExamples)
+ [Personalización de URL de Amazon S3 con registros CNAME](#VirtualHostingCustomURLs)
+ [Cómo asociar un nombre de host a un bucket de Amazon S3](#VirtualHostingCustomURLsHowTo)
+ [Limitaciones](#VirtualHostingLimitations)
+ [Compatibilidad con versiones anteriores](#VirtualHostingBackwardsCompatibility)

## Solicitudes de tipo ruta
<a name="path-style-access"></a>

Actualmente, Amazon S3 admite URL tanto de tipo host virtual como de tipo ruta en todas las Regiones de AWS. Sin embargo, las URL de tipo ruta dejarán de usarse en el futuro. Para obtener más información, consulte la siguiente nota **Importante**.

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

```
https://s3.region-code.amazonaws.com/bucket-name/key-name
```

Por ejemplo, si crea un bucket con el nombre `amzn-s3-demo-bucket1` 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/amzn-s3-demo-bucket1/puppy.jpg
```

**importante**  
Actualización (23 de septiembre de 2020): para garantizar que los clientes tienen el tiempo necesario para pasar a las URL de tipo host virtual, hemos decidido retrasar la obsolescencia de las URL de tipo ruta. Para obtener más información, consulte [Amazon S3 Path Deprecation Plan – The Rest of the Story](https://aws.amazon.com/blogs/aws/amazon-s3-path-deprecation-plan-the-rest-of-the-story/) en el *Blog de noticias de AWS*.

**aviso**  
Cuando alojes contenido de un sitio web al que se acceda desde un navegador web, evita utilizar la URL de tipo ruta, ya que podrían interferir con el mismo modelo de seguridad de origen del navegador. Para alojar el contenido del sitio web, le recomendamos que utilice puntos de conexión de sitios web de S3 o una distribución de CloudFront. Para obtener más información, consulte [Puntos de enlace de sitio web](WebsiteEndpoints.md) e [implemente una aplicación de una sola página basada en React en Amazon S3 y CloudFront](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) en *Los patrones de AWS Perspective Guidance*.

## Solicitudes de tipo host virtual
<a name="virtual-hosted-style-access"></a>

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-code.amazonaws.com/key-name
```

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

```
https://amzn-s3-demo-bucket1.s3.us-west-2.amazonaws.com/puppy.png
```

## Especificación de bucket de encabezado `Host` de HTTP
<a name="VirtualHostingSpecifyBucket"></a>

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-code.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-code.amazonaws.com`, el nombre del bucket es la primera parte del valor del encabezado `Host` hasta `.s3.region-code.amazonaws.com`. La clave para la solicitud es el URI de la solicitud. Esta interpretación expone los buckets como subdominios de `.s3.region-code.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 registros DNS de CNAME está fuera del propósito de esta guía, pero el resultado se muestra en el ejemplo final en esta sección.

## Ejemplos
<a name="VirtualHostingExamples"></a>

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

**Example : solicitudes y URL de tipo ruta**  
En este ejemplo se utiliza lo siguiente:  
+ Nombre del bucket ‐ `example.com`
+ Región: EE. UU. Este (Norte de Virginia) 
+ Nombre de clave ‐ `homepage.html`
El URL es el siguiente:  

```
1. http://s3.us-east-1.amazonaws.com/example.com/homepage.html
```
La solicitud es la siguiente:  

```
1. GET /example.com/homepage.html HTTP/1.1
2. Host: s3.us-east-1.amazonaws.com
```
La solicitud con HTTP 1.0 y la omisión del encabezado de `Host` son los siguientes:  

```
1. GET /example.com/homepage.html HTTP/1.0
```

Para obtener información acerca de los nombres compatibles con el DNS, consulte [Limitaciones](#VirtualHostingLimitations). Para obtener más información acerca de las claves, consulte [Claves](Welcome.md#BasicsKeys).

**Example : solicitudes y URL de tipo host virtual**  
En este ejemplo se utiliza lo siguiente:  
+ **Nombre del bucket** ‐ `amzn-s3-demo-bucket1` 
+ **Región**: Europa (Irlanda) 
+ **Nombre de clave** ‐ `homepage.html`
El URL es el siguiente:  

```
1. http://amzn-s3-demo-bucket1.s3.eu-west-1.amazonaws.com/homepage.html
```
La solicitud es la siguiente:  

```
1. GET /homepage.html HTTP/1.1
2. Host: amzn-s3-demo-bucket1.s3.eu-west-1.amazonaws.com
```

**Example : método de alias CNAME**  
Para utilizar este método, debe configurar su nombre de DNS como un alias de CNAME para `bucket-name.s3.us-east-1.amazonaws.com`. Para obtener más información, consulte [Personalización de URL de Amazon S3 con registros CNAME](#VirtualHostingCustomURLs).   
En este ejemplo se utiliza lo siguiente:  
+ Nombre del bucke ‐ `example.com` 
+ **Nombre de clave** ‐ `homepage.html`
El URL es el siguiente:  

```
1. http://www.example.com/homepage.html
```
El ejemplo es el siguiente:  

```
1. GET /homepage.html HTTP/1.1
2. Host: www.example.com
```

## Personalización de URL de Amazon S3 con registros CNAME
<a name="VirtualHostingCustomURLs"></a>

Según sus necesidades, es posible que no desee que `s3.region-code.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.example.com/` en lugar de `http://images.example.com.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.example.com.s3.us-east-1.amazonaws.com/mydog.jpg`. Al utilizar CNAME, puede asignar `images.example.com` a un nombre de host de Amazon S3 para que la URL anterior pueda convertirse en `http://images.example.com/mydog.jpg`. 

El nombre del bucket debe ser el mismo que el CNAME. Por ejemplo, si crea un CNAME para asignar `images.example.com` a `images.example.com.s3.us-east-1.amazonaws.com`, `http://images.example.com/filename` y `http://images.example.com.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.example.com` y el bucket está en la región EE. UU. Este (Norte de Virginia), el registro CNAME debe tomar como alias `images.example.com.s3.us-east-1.amazonaws.com`. 

```
1. images.example.com CNAME 			images.example.com.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:

**Example**  

```
1. GET / HTTP/1.1
2. Host: www.example.com
3. Date: date
4. 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 conexión de Amazon S3 en un alias CNAME. Por ejemplo, se puede utilizar `s3.ap-southeast-1.amazonaws.com` en los alias CNAME. Para obtener más información sobre puntos de conexión, consulte [Puntos de conexión de solicitudes](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTAPI.html) en la *Referencia de la API de Amazon S3*. Para crear un sitio web estático mediante un dominio personalizado, consulte [Tutorial: Configuración de un sitio web estático mediante un dominio personalizado registrado con Route 53](website-hosting-custom-domain-walkthrough.md).

**importante**  
Cuando utilice URL personalizadas con CNAME, tendrá que asegurarse de que existe un bucket coincidente para cualquier registro CNAME o alias que configure. Por ejemplo, si crea entradas DNS para `www.example.com` y `login.example.com` para publicar contenido web mediante S3, tendrá que crear los buckets `www.example.com` y `login.example.com`.  
Cuando se configura un CNAME o registros de alias que apuntan a un punto de conexión de S3 sin un bucket coincidente, cualquier usuario de AWS puede crear ese bucket y publicar contenido con el alias configurado, aunque la propiedad no sea la misma.  
Por el mismo motivo, le recomendamos que cambie o elimine el CNAME o el alias correspondiente cuando elimine un bucket.

## Cómo asociar un nombre de host a un bucket de Amazon S3
<a name="VirtualHostingCustomURLsHowTo"></a>

**Para asociar un nombre de host a un bucket de Amazon S3 mediante un alias CNAME**

1. Seleccione un nombre de host que pertenezca a un dominio que usted controle. 

   En este ejemplo se utiliza el subdominio `images` del dominio `example.com`.

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

   En este ejemplo, los nombres de host y de bucket son `images.example.com`. El nombre del bucket debe coincidir *exactamente* con el nombre de host. 

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

   Por ejemplo:

   `images.example.com CNAME images.example.com.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 puede provocar un comportamiento impredecible.

   El procedimiento para la configuración de los registros DNS de CNAME 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
<a name="VirtualHostingLimitations"></a>

 Las API de SOAP para Amazon S3 no están disponibles para nuevos clientes y se acercan al fin de la vida útil (EOL) el 31 de agosto de 2025. Le recomendamos que utilice la API REST o los SDK de AWS. 

## Compatibilidad con versiones anteriores
<a name="VirtualHostingBackwardsCompatibility"></a>

Las siguientes secciones abarcan varios aspectos de la compatibilidad con versiones anteriores de Amazon S3 que se relacionan con las solicitudes de URL de tipo ruta y de host virtual.

### Puntos de conexión heredados
<a name="s3-legacy-endpoints"></a>

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 AWS CloudTrail. Para obtener más información, consulte la siguiente información. Para obtener una lista completa de las regiones y los puntos de conexión de Amazon S3, consulte [Puntos de conexión y cuotas de Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html) 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-code.amazonaws.com/key-name
```
En Amazon S3, las URL de tipo ruta utilizan el siguiente formato:  

```
https://s3.region-code.amazonaws.com/bucket-name/key-name
```

#### Región de S3
<a name="s3-dash-region"></a>

Algunas regiones antiguas de Amazon S3 admiten puntos de conexión que contienen un guion (`-`) entre `s3` y el código de 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-code.amazonaws.com
```

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

```
https://amzn-s3-demo-bucket1.s3-us-west-2.amazonaws.com
```

#### Punto de conexión global heredado
<a name="deprecated-global-endpoint"></a>

En algunas regiones, puede utilizar el punto de conexión global heredado para crear solicitudes que no especifiquen un punto de conexión 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 `amzn-s3-demo-bucket1` y el punto de conexión global heredado es: 

```
https://amzn-s3-demo-bucket1.s3.amazonaws.com
```

**Solicitudes de tipo host virtual para Este de EE. UU. (Norte de Virginia)**  
Las solicitudes realizadas con el punto de conexión global heredado se envían a la región Este de EE. UU. (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 host virtual para otras regiones**  
El punto de conexión global heredado también se utiliza para solicitudes de tipo host virtual en otras regiones admitidas. Si crea un bucket en una región que se lanzó antes del 20 de marzo de 2019 y utiliza el punto de conexión global heredado, Amazon S3 actualiza el registro 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 Este de EE. UU. (Norte de Virginia). A continuación, Amazon S3 la redirecciona con el redireccionamiento temporal HTTP 307 a la región correcta. 

Para los buckets de S3 de regiones lanzadas después del 20 de marzo de 2019, el servidor DNS no enruta la solicitud directamente a la Región de AWS en la que se encuentra el bucket. En su lugar, devuelve un error de solicitud errónea HTTP 400. Para obtener más información, consulte [Making requests ](https://docs.aws.amazon.com/AmazonS3/latest/API/MakingRequests.html) en la *Amazon S3 API Reference*.

**Solicitudes de tipo ruta**  
Para la región Este de EE. UU. (Norte de Virginia), el punto de conexión 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 conexión global heredado u otro punto de conexión diferente al de la región donde reside el bucket, recibirá un error de redireccionamiento permanente con el código de respuesta HTTP 301 y un mensaje que indica el URI correcto del recurso. Por ejemplo, si utiliza `https://s3.amazonaws.com/bucket-name` para un bucket creado en la región Oeste de EE. UU. (Oregón), recibirá un error de redireccionamiento permanente HTTP 301.