¿Cómo utilizo CloudFront para ofrecer un sitio web estático alojado en Amazon S3?

11 minutos de lectura
0

Quiero alojar un sitio web estático en un bucket de Amazon Simple Storage Service (Amazon S3). Luego, quiero publicar mi sitio web a través de una distribución de Amazon CloudFront.

Breve descripción

Para ofrecer un sitio web estático alojado en Amazon S3, utilice una de las siguientes configuraciones para implementar una distribución de CloudFront:

  • Utilizar un punto de conexión de la API de REST como origen y restringir el acceso con un control de acceso de origen (OAC) o una identidad de acceso de origen (OAI)
    Nota: Se recomienda utilizar el control de acceso de origen (OAC) para restringir el acceso. La identidad de acceso de origen (OAI) es un método heredado para este proceso.
  • Utilizar un punto de conexión de sitio web como origen y admitir el acceso anónimo (público)
  • Utilizar un punto de conexión de sitio web como origen y restringir el acceso con un encabezado Referer
  • Utilizar AWS CloudFormation para implementar un punto de conexión de sitio web estático como origen y un dominio personalizado que apunte a CloudFront

Para obtener más información sobre los dos tipos de punto de conexión, consulte Diferencias clave entre un punto de conexión de sitio web y un punto de conexión de la API de REST.

Resolución

Para configurar una distribución de CloudFront con el tipo de punto de conexión de S3 que quiere usar como origen, complete los siguientes pasos:

Uso de un punto de conexión de la API de REST como origen y restricción del acceso con un OAC u OAI (heredada)

1.    Utilice la consola de Amazon S3 para crear un bucket y cargar los archivos del sitio web.

Nota: No necesita activar el alojamiento de sitios web estáticos en el bucket para esta configuración. Esta configuración utiliza el punto de conexión de la API de REST del bucket en lugar del punto de conexión del sitio web de la característica de alojamiento de sitios web estáticos.

2.    Cree una distribución web de CloudFront. Además de la configuración de distribución para su caso de uso, complete los pasos de una de las siguientes secciones para restringir el acceso al origen de Amazon S3. Se recomienda utilizar el OAC, ya que la OAI es un entorno heredado.

OAC

Cuando cree la distribución, introduzca el nombre del bucket de Amazon S3 en el campo Dominio de origen.

En Acceso de origen, seleccione Configuración del control de acceso de origen (opción recomendada).

En la lista desplegable Control de acceso de origen, seleccione el nombre del OAC y elija Crear configuración de control.

En el cuadro de diálogo, asigne como nombre a la configuración de control **.**. Se recomienda conservar la configuración predeterminada Solicitudes de firma (opción recomendada). A continuación, seleccione Crear.

CloudFront le proporciona la declaración de política para conceder permiso a OAC a fin de acceder al bucket de Amazon S3 después de crear la distribución. Seleccione Copiar política y pegue la política en la configuración de su política de bucket de S3.

OAI

Cuando cree la distribución, introduzca el nombre del bucket de Amazon S3 en el campo Dominio de origen.

En Acceso de origen, seleccione Identidades de acceso heredadas.

En la lista desplegable Identidades de acceso de origen, seleccione el nombre de la identidad de acceso de origen. A continuación, elija Crear nueva OAI.

En el cuadro de diálogo, asigne un nombre a la nueva identidad de acceso de origen y elija Crear.

En Política del bucket, seleccione Sí, actualizar la política de bucket.

3.    Al crear la distribución, se recomienda utilizar SSL (HTTPS) en el sitio web. Para usar un dominio personalizado con HTTPS, seleccione Certificado SSL personalizado. Elija Solicitar certificado para solicitar un certificado nuevo. Si no utiliza un dominio personalizado, puede seguir usando HTTPS con el nombre de dominio cloudfront.net para su distribución.
Importante: Si introduce Nombres de dominio alternativos (CNAME) para la distribución, los CNAME deben coincidir con el certificado SSL que seleccione. Para solucionar problemas con el certificado SSL, consulte ¿Cómo puedo solucionar problemas con el uso de un certificado SSL personalizado para mi distribución de CloudFront?

4.    Actualice los registros DNS del dominio para que el dominio del sitio web apunte a CloudFront. Encontrará el nombre de dominio de la distribución en la consola de CloudFront. El nombre de dominio tiene un aspecto similar al del siguiente ejemplo: d1234abcd.cloudfront.net.

5.    Espere a que los cambios de DNS se propaguen y a que las entradas de DNS anteriores caduquen.
Nota: El tiempo de caducidad de los valores de DNS anteriores depende del valor TTL establecido en la zona alojada. También depende de si el solucionador local utiliza esos valores TTL.

Utilizar un punto de conexión de sitio web como origen y admitir el acceso anónimo (público)

Esta configuración permite el acceso público de lectura al bucket del sitio web. Para obtener más información, consulte Configurar permisos para el acceso a sitios web.
Nota: Cuando utiliza el punto de conexión del sitio web estático de Amazon S3, las conexiones entre CloudFront y Amazon S3 solo están disponibles a través de HTTP. Para usar HTTPS para las conexiones entre CloudFront y Amazon S3, configure un punto de conexión de la API de REST de S3 para el origen.

  1. Utilice la consola de Amazon S3 para crear un bucket y activar el alojamiento de sitios web estáticos en el bucket.
  2. En el cuadro de diálogo Alojamiento de sitios web estáticos, copie el Punto de conexión del bucket sin escribir http:// al principio. El formato es similar a DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com. Necesitará el punto de conexión en este formato en un paso posterior.
  3. Añada una política de bucket que permita el acceso público de lectura al bucket que ha creado.
    Nota: Para esta configuración, debe desactivar la configuración de bloqueo de acceso público del bucket de S3. Si su caso de uso requiere la activación de la configuración de bloqueo de acceso público, utilice el punto de conexión de la API de REST como origen. A continuación, restrinja el acceso mediante un control de acceso de origen (OAC) o una identidad de acceso de origen (OAI).
  4. Cree una distribución web de CloudFront. Además de la configuración de distribución para su caso de uso, complete los siguientes pasos:
    En Dominio de origen, introduzca el punto de conexión que copió en el paso anterior.
    Nota: No seleccione el bucket de la lista desplegable. La lista desplegable incluye solo los puntos de conexión de la API de REST del bucket de S3 que no utiliza en esta configuración.
  5. Al crear la distribución, se recomienda utilizar SSL (HTTPS) en el sitio web. Para usar un dominio personalizado con HTTPS, seleccione Certificado SSL personalizado. Elija Solicitar certificado para solicitar un certificado nuevo. Si no utiliza un dominio personalizado, puede seguir usando HTTPS con el nombre de dominio cloudfront.net para la distribución.
    Importante: Si introduce Nombres de dominio alternativos (CNAME) para la distribución, los CNAME deben coincidir con el certificado SSL que seleccione. Para solucionar problemas con el certificado SSL, consulte ¿Cómo puedo solucionar problemas con el uso de un certificado SSL personalizado para mi distribución de CloudFront?
  6. Actualice los registros DNS del dominio para que el dominio del sitio web apunte a CloudFront. Encontrará el nombre de dominio de la distribución en la consola de CloudFront. El formato del nombre de dominio tiene un aspecto similar al del siguiente ejemplo: d1234abcd.cloudfront.net.
  7. Espere a que los cambios de DNS se propaguen y a que las entradas de DNS anteriores caduquen.
    Nota: El tiempo de caducidad de los valores de DNS anteriores depende del valor TTL establecido en la zona alojada. También depende de si el solucionador local utiliza esos valores TTL.

Utilizar un punto de conexión de sitio web como origen y restringir el acceso con un encabezado Referer

Importante: Compruebe si el acceso que esta configuración permite cumple con los requisitos de su caso de uso.

Esta configuración establece un encabezado Referer personalizado en la distribución para restringir el acceso. A continuación, utiliza una política de bucket para permitir el acceso únicamente a las solicitudes con el encabezado Referer personalizado.

Nota: Cuando utiliza el punto de conexión del sitio web estático de Amazon S3, las conexiones entre CloudFront y Amazon S3 solo están disponibles a través de HTTP. Para usar HTTPS para las conexiones entre CloudFront y Amazon S3, configure un punto de conexión de la API de REST de S3 para el origen.

  1. Utilice la consola de Amazon S3 para crear un bucket y activar el alojamiento de sitios web estáticos en el bucket.
  2. En el cuadro de diálogo Alojamiento de sitios web estáticos, copie el Punto de conexión del bucket sin escribir http:// al principio. El formato es similar a DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com. Necesitará el punto de conexión en este formato en un paso posterior.
  3. Cree una distribución web de CloudFront. Además de la configuración de distribución para su caso de uso, complete los siguientes pasos:
    En Dominio de origen, introduzca el punto de conexión que copió en el paso anterior.
    Nota: No seleccione el bucket de la lista desplegable. La lista desplegable incluye solo los puntos de conexión de la API de REST del bucket de S3 que esta configuración no utiliza.
    En Agregar encabezado personalizado, seleccione Agregar encabezado.
    En Nombre de encabezado, introduzca Referer.
    En Valor, introduzca un valor de encabezado de cliente que desee reenviar al origen (bucket de S3). Para restringir el acceso al origen, introduzca un valor aleatorio o secreto que solo usted conozca.
  4. Al crear la distribución, se recomienda utilizar SSL (HTTPS) en el sitio web. Para usar un dominio personalizado con HTTPS, seleccione Certificado SSL personalizado. Elija Solicitar certificado para solicitar un certificado nuevo. Si no utiliza un dominio personalizado, puede seguir usando HTTPS con el nombre de dominio cloudfront.net para su distribución.
    Importante: Si introduce Nombres de dominio alternativos (CNAME) para la distribución, los CNAME deben coincidir con el certificado SSL que seleccione. Para solucionar problemas con el certificado SSL, consulte ¿Cómo puedo solucionar problemas con el uso de un certificado SSL personalizado para mi distribución de CloudFront?
  5. Abra el bucket del sitio web desde la consola de Amazon S3. A continuación, añada una política de bucket que permita s3:GetObject con la condición de que la solicitud incluya el encabezado Referer personalizado que especificó en el paso 3. Para esta configuración, debe desactivar la configuración de bloqueo de acceso público del bucket de S3. Amazon S3 considera pública una política de bucket que concede acceso anónimo restringido por un Referer. Si su caso de uso requiere la activación de la configuración de bloqueo de acceso público, utilice el punto de conexión de la API de REST como origen. A continuación, restrinja el acceso con un control de acceso de origen (OAC) o una identidad de acceso de origen (OAI).
    Nota: Para bloquear el acceso a cualquier solicitud que no incluya el encabezado Referer personalizado, use una declaración de denegación explícita en la política de bucket.
  6. Actualice los registros DNS del dominio para que el dominio del sitio web apunte a CloudFront. Encontrará el nombre de dominio de la distribución en la consola de CloudFront. El nombre de dominio es similar al siguiente ejemplo: d1234abcd.cloudfront.net.
  7. Espere a que los cambios de DNS se propaguen y a que las entradas de DNS anteriores caduquen.
    Nota: El tiempo de caducidad de los valores de DNS anteriores depende del valor TTL establecido en la zona alojada. También depende de si el solucionador local utiliza esos valores TTL.

Uso de CloudFormation para implementar un punto de conexión de sitio web estático como origen y un dominio personalizado que apunte a CloudFront

Esta solución utiliza la siguiente configuración para el sitio web:

  • Implementa el sitio web con CloudFormation.
  • Aloja el sitio web en Amazon S3.
  • Distribuye el sitio web con CloudFront.
  • Utiliza un certificado SSL/TLS de AWS Certificate Manager (ACM).
  • Utiliza las políticas de encabezados de respuesta de CloudFront para añadir encabezados de seguridad a cada respuesta del servidor.

Para obtener instrucciones sobre cómo implementar esta solución, consulte el artículo Sitio web estático de Amazon CloudFront en el sitio web de GitHub.

Información relacionada

Introducción a un sitio web seguro estático

Validación por correo electrónico

Validación por DNS

Uso de nombres de dominio alternativos y HTTPS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 6 meses