Enrutamiento de solicitudes - Amazon Simple Storage Service

Enrutamiento de solicitudes

Los programas que realizan solicitudes a buckets creados con la API CreateBucket que incluyen una CreateBucketConfiguration deben admitir el redireccionamiento. Además, algunos clientes que no respetan los TTL de DNS podrían producir problemas.

En esta sección se describe el direccionamiento y algunas cuestiones sobre DNS que se deben tener en cuenta al usar Amazon S3.

Solicitar redireccionamiento y la API REST

Amazon S3 utiliza el sistema de nombres de dominio (DNS) para dirigir las solicitudes a las ubicaciones que pueden procesarlas. Este sistema es eficaz, pero se pueden producir errores de direccionamiento temporal. Si una solicitud llega a la ubicación incorrecta de Amazon S3, Amazon S3 responde con un redireccionamiento temporal que le indica al solicitante que debe volver a enviar la solicitud a un nuevo punto de enlace. Si una solicitud se realiza incorrectamente, Amazon S3 utiliza el redireccionamiento permanente para proporcionar instrucciones sobre cómo realizar la solicitud correctamente.

importante

Para utilizar esta característica, debe tener una aplicación que pueda gestionar las respuestas de redirección de Amazon S3. La única excepción es para las aplicaciones que funcionan exclusivamente con buckets creados sin <CreateBucketConfiguration>. Para obtener más información acerca de las restricciones de ubicación, consulte Acceso y publicación de un bucket de Amazon S3.

Para todas las regiones que se lanzaron después del 20 de marzo de 2019, si una solicitud llega a la ubicación de Amazon S3 incorrecta, Amazon S3 devuelve un error de solicitud errónea HTTP 400.

Para obtener más información sobre cómo habilitar o deshabilitar una Región de AWS, consulte Puntos de conexión y Regiones de AWS en la Referencia general de AWS.

Enrutamiento de DNS

El direccionamiento del sistema de nombres de dominio (DNS) dirige las solicitudes a las ubicaciones correctas de Amazon S3. En la figura y el procedimiento siguientes se muestra un ejemplo de direccionamiento de DNS.


				Diagrama que muestra los pasos que se producen cuando un servidor DNS direcciona las solicitudes del cliente a la ubicación B.
Pasos de la solicitud de direccionamiento de DNS
  1. El cliente realiza una solicitud de DNS para obtener un objeto almacenado en Amazon S3.

  2. El cliente recibe una o más direcciones IP para las ubicaciones que pueden procesar la solicitud. En este ejemplo, la dirección IP es para la ubicación B.

  3. El cliente realiza una solicitud a la ubicación B de Amazon S3.

  4. La ubicación B devuelve una copia del objeto al cliente.

Redireccionamiento temporal de solicitud

Un redireccionamiento temporal es un tipo de respuesta de error que indica al solicitante que debe volver a enviar la solicitud a otro punto de enlace. Debido a las características de distribución de Amazon S3, las solicitudes pueden dirigirse temporalmente a la ubicación incorrecta. Es posible que esto ocurra inmediatamente después de crear o eliminar buckets.

Por ejemplo, si crea un bucket nuevo y realiza una solicitud al bucket de inmediato, es posible que reciba un redireccionamiento temporal, según la restricción de ubicación del bucket. Si creó el bucket en la Región de AWS EE. UU. Este (Norte de Virginia), no verá el redireccionamiento, ya que este también es el punto de enlace predeterminado de Amazon S3.

Sin embargo, si el bucket se creó en otra región, cualquier solicitud para el bucket se dirigirá al punto de enlace predeterminado mientras la entrada de DNS del bucket se propaga. El punto de enlace predeterminado redirige la solicitud al punto de enlace correcto con una respuesta HTTP 302. El redireccionamiento temporal contiene un Uniform Resource Identifier (URI, Identificador de recursos uniforme) en la ubicación correcta, que usted puede utilizar para volver a enviar la solicitud de inmediato.

importante

No vuelva a utilizar un punto de enlace proporcionado por una respuesta de redireccionamiento anterior. Puede parecer que funciona (incluso durante largos períodos de tiempo), pero podría proporcionar resultados impredecibles y fallar sin previo aviso.

En la figura y el procedimiento siguientes se muestra un ejemplo de un redireccionamiento temporal.


				Diagrama que muestra los pasos que se producen cuando un cliente envía una solicitud a B y se redirige a C.
Pasos del redireccionamiento de solicitud temporal
  1. El cliente realiza una solicitud de DNS para obtener un objeto almacenado en Amazon S3.

  2. El cliente recibe una o más direcciones IP para las ubicaciones que pueden procesar la solicitud.

  3. El cliente realiza una solicitud a la ubicación B de Amazon S3.

  4. La ubicación B devuelve un redireccionamiento que indica que el objeto está disponible en la ubicación C.

  5. El cliente vuelve a enviar la solicitud a la ubicación C.

  6. La ubicación C devuelve una copia del objeto.

Redireccionamiento permanente de solicitud

Un redireccionamiento permanente indica que su solicitud se dirigió a un recurso de forma incorrecta. Por ejemplo, el redireccionamiento permanente se produce si utiliza una solicitud de tipo ruta para obtener acceso a un bucket creado con <CreateBucketConfiguration>. Para obtener más información, consulte Acceso y publicación de un bucket de Amazon S3.

Para ayudar a detectar estos errores durante el desarrollo, este tipo de redireccionamiento no contiene un encabezado HTTP de ubicación que le permita seguir automáticamente la solicitud en la ubicación correcta. Consulte el documento de errores XML resultante para obtener ayuda sobre cómo usar el punto de enlace correcto de Amazon S3.

Ejemplos de redireccionamiento de solicitud

A continuación se proporcionan ejemplos de respuestas de redireccionamiento de solicitud temporal.

Respuesta de redireccionamiento temporal de la API REST

HTTP/1.1 307 Temporary Redirect Location: http://awsexamplebucket1.s3-gztb4pa9sq.amazonaws.com/photos/puppy.jpg?rk=e2c69a31 Content-Type: application/xml Transfer-Encoding: chunked Date: Fri, 12 Oct 2007 01:12:56 GMT Server: AmazonS3 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>TemporaryRedirect</Code> <Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message> <Endpoint>awsexamplebucket1.s3-gztb4pa9sq.amazonaws.com</Endpoint> </Error>

Respuesta de redireccionamiento temporal de la API de SOAP

nota

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

<soapenv:Body> <soapenv:Fault> <Faultcode>soapenv:Client.TemporaryRedirect</Faultcode> <Faultstring>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Faultstring> <Detail> <Bucket>images</Bucket> <Endpoint>s3-gztb4pa9sq.amazonaws.com</Endpoint> </Detail> </soapenv:Fault> </soapenv:Body>

Consideraciones sobre DNS

Uno de los requisitos de diseño de Amazon S3 es una disponibilidad extremadamente alta. Una de las maneras de cumplir con este requisito es mediante la actualización de las direcciones IP asociadas con el punto de enlace de Amazon S3 en el DNS según sea necesario. Estos cambios se reflejan automáticamente en los clientes cuya vida útil es corta, pero no en algunos clientes cuya vida útil es larga. Aquellos clientes cuya vida útil es larga deben realizar acciones especiales para volver a resolver el punto de enlace de Amazon S3 periódicamente a fin de beneficiarse de estos cambios. Para obtener más información acerca de las máquinas virtuales (VM), consulte lo siguiente:

  • Para Java, la Java Virtual Machine (JVM, Máquina virtual de Java) de Sun almacena en caché las búsquedas del DNS para siempre de forma predeterminada; consulte la sección de “InetAddress Caching” de la documentación de InetAddress para obtener información acerca de cómo cambiar este comportamiento.

  • Para PHP, la VM persistente de PHP que ejecuta las más populares configuraciones de implementación almacena en caché las búsquedas del DNS hasta que la VM se reinicia. Consulte los documentos de PHP de getHostByName.