Especificación de un objeto raíz predeterminado - Amazon CloudFront

Especificación de un objeto raíz predeterminado

Puede configurar CloudFront para devolver un objeto específico (el objeto raíz predeterminado) cuando un usuario solicita la URL raíz de su distribución en lugar de solicitar un objeto de su distribución. Especificar un objeto raíz predeterminado le permite evitar la exposición del contenido de su distribución.

Cómo especificar un objeto raíz predeterminado

Para evitar exponer el contenido de la distribución o devolver un error, especifique un objeto raíz predeterminado para la distribución llevando a cabo los pasos siguientes.

Especificar un objeto raíz predeterminado para su distribución
  1. Cargue el objeto raíz predeterminado al origen al que apunta su distribución.

    El archivo puede ser cualquier tipo admitido por CloudFront. Para obtener una lista de las limitaciones de los nombres de archivo, consulte la descripción del elemento DefaultRootObject en DistributionConfig.

    nota

    Si el nombre de archivo del objeto raíz predeterminado es demasiado largo o contiene caracteres no válidos, CloudFront devuelve el error HTTP 400 Bad Request - InvalidDefaultRootObject. Además, CloudFront almacena en caché el código durante 10 segundos (de forma predeterminada) y escribe los resultados en los registros de acceso.

  2. Confirme que los permisos del objeto conceden a CloudFront al menos acceso read.

    Para obtener más información acerca de los permisos de Amazon S3, consulte Administración de la identidad y el acceso en Amazon S3 en la Guía para usuarios de Amazon Simple Storage Service.

  3. Actualice la distribución para referirse al objeto raíz predeterminado mediante la consola de CloudFront o la API de CloudFront.

    Para especificar un objeto raíz predeterminado desde la consola de CloudFront:

    1. Inicie sesión en la AWS Management Console y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/v4/home.

    2. En la lista de distribuciones que se encuentra en el panel superior, seleccione la distribución a actualizar.

    3. En el panel Settings (Configuración), en la pestaña General, elija Edit (Editar).

    4. En el cuadro de diálogo Edit settings (Editar configuración), en el campo Default Root Object (Objeto raíz predeterminado), escriba el nombre de archivo del objeto raíz predeterminado.

      Escriba solo el objeto, por ejemplo, index.html. No añada / antes del nombre del objeto.

    5. Elija Guardar cambios.

    Para actualizar la configuración mediante la API de CloudFront, debe especificar un valor en el elemento DefaultRootObject de su distribución. Para obtener información sobre el uso de la API de CloudFront para especificar un objeto raíz predeterminado, consulte UpdateDistribution en la Referencia de la API de Amazon CloudFront.

  4. Realice una solicitud de su URL raíz para confirmar si el objeto raíz predeterminado está habilitado. Si el navegador no muestra el objeto raíz predeterminado, siga los pasos siguientes:

    1. Consulte el estado de su distribución en la consola de CloudFront para confirmar que está implementada por completo.

    2. Repita los pasos 2 y 3 para verificar que ha concedido los permisos pertinentes y que ha actualizado correctamente la configuración de la distribución para especificar el objeto raíz predeterminado.

Cómo funciona el objeto raíz predeterminado

Suponga que la siguiente solicitud apunta al objeto image.jpg:

https://d111111abcdef8.cloudfront.net/image.jpg

Por el contrario, la siguiente solicitud apunta a la URL raíz de la misma distribución en lugar de a un objeto específico, como en el primer ejemplo:

https://d111111abcdef8.cloudfront.net/

Si define un objeto raíz predeterminado, cualquier solicitud de un usuario final que realice una llamada a la raíz de su distribución devolverá el objeto raíz predeterminado. Por ejemplo, si designa el archivo index.html como su objeto raíz predeterminado, una solicitud de:

https://d111111abcdef8.cloudfront.net/

Devuelve:

https://d111111abcdef8.cloudfront.net/index.html

nota

CloudFront no determina si una URL con varias barras diagonales al final (https://d111111abcdef8.cloudfront.net///) es equivalente a https://d111111abcdef8.cloudfront.net/. Su servidor de origen hace esa comparación.

Si define un objeto raíz predeterminado, una solicitud de un usuario final que realice una llamada a un subdirectorio de su distribución no devolverá el objeto raíz predeterminado. Supongamos que index.html es su objeto raíz predeterminado y que CloudFront recibe una solicitud de parte de un usuario final, del directorio install que se encuentra en su distribución de CloudFront:

https://d111111abcdef8.cloudfront.net/install/

CloudFront no devuelve el objeto raíz predeterminado incluso si hay una copia de index.html en el directorio install.

Si configura su distribución para permitir todos los métodos de HTTP que admite CloudFront, el objeto raíz predeterminado se aplicará a todos ellos. Por ejemplo, si su objeto raíz predeterminado es index.php y escribe su aplicación para enviar una solicitud POST a la raíz de su dominio (https://example.com), CloudFront envía la solicitud a https://example.com/index.php.

El comportamiento de los objetos raíz predeterminados de CloudFront es diferente del comportamiento de los documentos del índice de Amazon S3. Al configurar un bucket de Amazon S3 como un sitio web y especificar el documento de índice, Amazon S3 devuelve dicho documento incluso si un usuario solicita un subdirectorio del bucket. (Deberá aparecer una copia del documento de índice en cada subdirectorio). Para obtener más información sobre la configuración de buckets de Amazon S3 como sitios web y sobre documentos de índice, consulte el capítulo Hosting de sitios web en Amazon S3 de la Guía del usuario de Amazon Simple Storage Service.

importante

Recuerde que un objeto raíz predeterminado es aplicable únicamente a su distribución de CloudFront. Aún tendrá que administrar la seguridad de su origen. Por ejemplo, si utiliza un origen de Amazon S3, deberá configurar las ACL de su bucket de Amazon S3 de forma tal que se asegure el nivel de acceso que desea en dicho bucket.

Cómo funciona CloudFront si no define un objeto raíz

Si no define un objeto raíz predeterminado, las solicitudes de la raíz de su distribución pasarán a su servidor de origen. Si utiliza un origen de Amazon S3, es posible que se devuelva cualquiera de los siguientes elementos:

  • Una lista del contenido de su bucket de Amazon S3: cualquier persona que utilice CloudFront para obtener acceso a su distribución podrá ver el contenido de su origen si se cumple cualquiera de estas condiciones:

    • Si su bucket no está configurado correctamente.

    • Si los permisos de Amazon S3 del bucket asociado a su distribución y de los objetos del bucket conceden acceso a todo el mundo.

    • Si un usuario final obtiene acceso a su origen mediante la URL raíz del origen.

  • Una lista del contenido privado de su origen: si configura el origen como una distribución privada (solo usted y CloudFront tienen acceso), cualquiera que tenga las credenciales para obtener acceso a la distribución a través de CloudFront podrá ver el contenido del bucket de Amazon S3 asociado a su distribución. En este caso, los usuarios no podrán obtener acceso a su contenido a través de la URL raíz del origen. Para obtener más información acerca de la distribución de contenido privado, consulte Distribución de contenido privado con URL firmadas y cookies firmadas.

  • Error 403 Forbidden: CloudFront devuelve este error si los permisos del bucket de Amazon S3 asociado a la distribución o los permisos de los objetos de dicho bucket deniegan el acceso a CloudFront y a los demás usuarios.