Uso de varios orígenes con CloudFront distribuciones - Amazon CloudFront

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de varios orígenes con CloudFront distribuciones

Al crear una distribución, se especifica el origen al que se CloudFront envían las solicitudes de los archivos. Puede utilizar varios tipos diferentes de orígenes con CloudFront. Por ejemplo, puede usar un bucket de Amazon S3, un MediaStore contenedor, un MediaPackage canal, un Application Load Balancer o la URL de una AWS Lambda función.

Uso de un bucket de Amazon S3

En los siguientes temas se describen las diferentes formas en que puede utilizar un bucket de Amazon S3 como origen de una CloudFront distribución.

Uso de un bucket de Amazon S3 estándar

Cuando utiliza Amazon S3 como origen para su distribución, coloca los objetos que quiere CloudFront entregar en un bucket de Amazon S3. Puede utilizar cualquier método admitido por Amazon S3 para incorporar sus objetos a Amazon S3. Por ejemplo, puede utilizar la consola o la API de Amazon S3, o una herramienta de terceros. Puede crear una jerarquía en su bucket para almacenar los objetos, del mismo modo que lo haría con cualquier otro bucket de Amazon S3 estándar.

El uso de un bucket de Amazon S3 existente como servidor de CloudFront origen no cambia el bucket de ninguna manera; puede seguir utilizándolo como lo haría normalmente para almacenar objetos de Amazon S3 y acceder a ellos al precio estándar de Amazon S3. Se le cobrarán los cargos habituales de Amazon S3 por almacenar los objetos en el bucket. Para obtener más información sobre los cargos de uso CloudFront, consulta los CloudFrontprecios de Amazon. Para obtener más información sobre el uso CloudFront con un bucket de S3 existente, consulteAñadir CloudFront a un bucket de Amazon S3 existente.

importante

Para que el bucket funcione con él CloudFront, el nombre debe cumplir con los requisitos de nomenclatura de DNS. Para obtener más información, consulte Reglas para nombrar buckets en la Guía del usuario de Amazon Simple Storage Service.

Cuando especifique un bucket de Amazon S3 como origen CloudFront, le recomendamos que utilice el siguiente formato:

bucket-name.s3.region.amazonaws.com

Cuando especifique el nombre del bucket en este formato, puede utilizar las siguientes características de CloudFront :

No especifique el bucket con los siguientes formatos:

  • El estilo de ruta de Amazon S3: s3.amazonaws.com/bucket-name

  • El CNAME de Amazon S3

Uso de Amazon S3 Object Lambda

Al crear un punto de acceso de Object Lambda, Amazon S3 genera automáticamente un alias único para el punto de acceso de Object Lambda. Puede utilizar este alias en lugar del nombre de un bucket de Amazon S3 como origen de su CloudFront distribución.

Cuando utilice un alias de punto de acceso de Object Lambda como origen CloudFront, le recomendamos que utilice el siguiente formato:

alias.s3.region.amazonaws.com

Para obtener más información acerca de cómo encontrar el alias, consulte Cómo usar un alias de estilo bucket para el punto de acceso de Object Lambda de bucket de S3 en la Guía del usuario de Amazon S3.

importante

Cuando utilice un punto de acceso de Object Lambda como origen CloudFront, debe utilizar el control de acceso de origen.

Para ver un ejemplo de caso de uso, consulte Uso de Amazon S3 Object Lambda con Amazon CloudFront para personalizar el contenido para los usuarios finales.

CloudFront trata el origen de un punto de acceso de Object Lambda de la misma manera que el origen de un bucket de Amazon S3 estándar.

Al utilizar Amazon S3 Object Lambda como origen para la distribución, se deben configurar los cuatro permisos siguientes:

Permiso de punto de acceso de Object Lambda
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación, elija Puntos de acceso de Object Lambda.

  3. Elija el punto de acceso de Object Lambda que desea usar.

  4. Elija la pestaña Permisos.

  5. Elija Editar en la sección Política de punto de acceso de Object Lambda.

  6. Pegue la siguiente política en el campo Política.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3-object-lambda:Get*", "Resource": "arn:aws:s3-object-lambda:<region>:<Cuenta de AWS ID>:accesspoint/<Object Lambda Access Point name>", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudfront::<Cuenta de AWS ID>:distribution/<CloudFront distribution ID>" } } } ] }
  7. Elija Guardar cambios.

Permiso de punto de acceso de Amazon S3
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación, elija Puntos de acceso.

  3. Elija el punto de acceso de Amazon S3 que desea usar.

  4. Elija la pestaña Permisos.

  5. Elija Editar en la sección Política de punto de acceso.

  6. Pegue la siguiente política en el campo Política.

    { "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "s3objlambda", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:<region>:<Cuenta de AWS ID>:accesspoint/<Access Point name>", "arn:aws:s3:<region>:<Cuenta de AWS ID>:accesspoint/<Access Point name>/object/*" ], "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "s3-object-lambda.amazonaws.com" } } } ] }
  7. Elija Guardar.

Permisos de bucket de Amazon S3
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación, elija Buckets.

  3. Elija el bucket de Amazon S3 que desea usar.

  4. Elija la pestaña Permisos.

  5. Elija Editar en la sección Política de bucket.

  6. Pegue la siguiente política en el campo Política.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "*", "Resource": [ "arn:aws:s3:::<bucket name>", "arn:aws:s3:::<bucket name>/*" ], "Condition": { "StringEquals": { "s3:DataAccessPointAccount": "<Cuenta de AWS ID>" } } } ] }
  7. Elija Guardar cambios.

Permiso de AWS Lambda
  1. Inicie sesión en AWS Management Console y abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.

  2. Seleccione Funciones en el panel de navegación.

  3. Elija la función AWS Lambda que desea usar.

  4. Elija la pestaña Configuración y, a continuación, elija Permisos.

  5. Elija Agregar permisos en la sección Instrucciones de políticas basadas en recursos.

  6. Elija Cuenta de AWS.

  7. Ingrese un nombre para el ID de instrucción.

  8. Ingrese cloudfront.amazonaws.com para Entidad principal.

  9. Elija lambda:InvokeFunction del menú desplegable Acción.

  10. Elija Guardar.

Uso de un bucket de Amazon S3 configurado como punto de conexión del sitio web

Puede usar un bucket de Amazon S3 que esté configurado como punto de enlace de un sitio web como origen personalizado conCloudFront. Cuando configure su CloudFront distribución, para el origen, introduzca el punto de enlace de alojamiento de sitios web estáticos de Amazon S3 para su bucket. Este valor aparecerá en la consola de Amazon S3 en la pestaña Properties (Propiedades), en el panel Static website hosting (Alojamiento de sitio web estático). Por ejemplo:

http://bucket-name.s3-website-region.amazonaws.com

Para obtener más información sobre cómo especificar los puntos de enlace de sitios web estáticos de Amazon S3, consulte Website endpoints (Puntos de enlace de sitio web) en la Guía del usuario de Amazon Simple Storage Service.

Al especificar el nombre del bucket en este formato como origen, puede utilizar redireccionamientos y documentos de error personalizados de Amazon S3. Para obtener más información, consulte Configuración de un documento de error personalizado y Configuración de una redirección en la Guía del usuario de Amazon Simple Storage Service. (CloudFronttambién proporciona páginas de error personalizadas. Para obtener más información, consulteCreación de una página de error personalizada para códigos de estado HTTP específicos.)

El uso de un bucket de Amazon S3 como servidor de CloudFront origen no cambia el bucket de ninguna manera. Puede seguir utilizándolo como lo haría normalmente y se le cobrarán los cargos normales de Amazon S3. Para obtener más información sobre los cargos de uso CloudFront, consulta los CloudFront precios de Amazon.

nota

Si utiliza la CloudFront API para crear su distribución con un bucket de Amazon S3 que está configurado como punto de enlace de un sitio web, debe configurarla utilizandoCustomOriginConfig, aunque el sitio web esté alojado en un bucket de Amazon S3. Para obtener más información sobre la creación de distribuciones mediante la CloudFront API, consulta la referencia CreateDistributionde la CloudFront API de Amazon.

Añadir CloudFront a un bucket de Amazon S3 existente

Si almacena sus objetos en un bucket de Amazon S3, puede hacer que los usuarios obtengan sus objetos directamente de S3 o puede configurarlos CloudFront para que obtengan los objetos de S3 y luego los distribuyan entre sus usuarios. El uso CloudFront puede resultar más rentable si los usuarios acceden a los objetos con frecuencia, ya que, con un uso mayor, el precio de la transferencia de CloudFront datos es inferior al precio de la transferencia de datos de Amazon S3. Además, las descargas son más rápidas CloudFront que solo con Amazon S3, ya que los objetos se almacenan más cerca de los usuarios.

nota

Si CloudFront quiere respetar la configuración de uso compartido de recursos entre orígenes de Amazon S3, CloudFront configúrelo para reenviar el Origin encabezado a Amazon S3. Para obtener más información, consulte Almacenamiento en caché de contenido en función de encabezados de solicitud.

Si actualmente distribuye contenido directamente desde su bucket de Amazon S3 con su propio nombre de dominio (como example.com) en lugar del nombre de dominio de su bucket de Amazon S3 (como DOC-EXAMPLE-BUCKET. s3.us-west-2.amazonaws.com), puede añadirlo CloudFront sin interrupciones mediante el siguiente procedimiento.

Para añadir CloudFront cuando ya esté distribuyendo su contenido desde Amazon S3
  1. Cree una CloudFront distribución. Para obtener más información, consulte Pasos para crear una distribución (información general).

    Al crear la distribución, especifique el nombre de su bucket de Amazon S3 como servidor de origen.

    importante

    Para que su bucket funcione CloudFront, el nombre debe cumplir con los requisitos de nomenclatura de DNS. Para obtener más información, consulte Reglas para nombrar buckets en la Guía del usuario de Amazon Simple Storage Service.

    Si está utilizando un CNAME con Amazon S3, especifique también el CNAME de su distribución.

  2. Cree una página web de prueba que contenga enlaces a objetos legibles públicamente en su bucket de Amazon S3 y pruebe dichos enlaces. Para esta prueba inicial, utilice el nombre de dominio de CloudFront de su distribución en las URL de sus objetos, por ejemplo, https://d111111abcdef8.cloudfront.net/images/image.jpg.

    Para obtener más información sobre el formato de las CloudFront URL, consultePersonalizar el formato de URL de los archivos en CloudFront.

  3. Si utiliza CNAME de Amazon S3, la aplicación usa su nombre de dominio (por ejemplo, example.com) para hacer referencia a los objetos de su bucket de Amazon S3 en lugar de utilizar el nombre del bucket (por ejemplo, DOC-EXAMPLE-BUCKET.s3.amazonaws.com). Para seguir utilizando su nombre de dominio para hacer referencia a objetos en lugar de utilizar el nombre de CloudFront dominio para su distribución (por ejemplo, d111111abcdef8.cloudfront.net), debe actualizar la configuración con su proveedor de servicios DNS.

    Para que los CNAME de Amazon S3 funcionen, su proveedor de servicios de DNS debe tener un conjunto de registros de recursos de CNAME para su dominio que actualmente dirija las consultas del dominio a su bucket de Amazon S3. Por ejemplo, si un usuario solicita este objeto:

    https://example.com/images/image.jpg

    la solicitud se redirige automáticamente y el usuario ve este objeto:

    https://DOC-EXAMPLE-BUCKET.s3.amazonaws.com/images/image.jpg

    Para dirigir las consultas a su CloudFront distribución en lugar de a su bucket de Amazon S3, debe utilizar el método proporcionado por su proveedor de servicios de DNS para actualizar el conjunto de registros de recursos CNAME de su dominio. Este registro CNAME actualizado redirige las consultas de DNS de tu dominio al nombre de CloudFront dominio de tu distribución. Para obtener más información, consulte la documentación de su proveedor de servicios de DNS.

    nota

    Si utiliza Route 53 como servicio de DNS, puede utilizar un conjunto de registros de recursos de CNAME o un conjunto de registros de recursos de alias. Para obtener información acerca de la edición de conjuntos de registros de recursos, consulte Edición de registros. Para obtener información sobre los conjuntos de registros de recursos de alias, consulte Elección entre registros de alias y sin alias. Ambos temas se encuentran en la Guía para desarrolladores de Amazon Route 53.

    Para obtener más información sobre el uso de los CNAME con CloudFront, consulte. Uso de URL personalizadas añadiendo nombres de dominio alternativos (CNAME)

    Después de actualizar el conjunto de registros de recursos de CNAME, la propagación a lo largo del sistema DNS puede tardar hasta 72 horas, aunque suele ser más rápida. Durante este tiempo, algunas solicitudes de contenido seguirán enviándose a su bucket de Amazon S3 y otras a. CloudFront

Traslado de un bucket de Amazon S3 a otra Región de AWS

Si utilizas Amazon S3 como origen de una CloudFront distribución y mueves el depósito a otraRegión de AWS, es CloudFront posible que tarde hasta una hora en actualizar sus registros para usar la nueva región si se cumplen las dos condiciones siguientes:

  • Está utilizando una identidad de acceso de CloudFront origen (OAI) para restringir el acceso al bucket.

  • Cambia el bucket de Amazon S3 a una región que requiera autenticación mediante Signature Version 4

Cuando utilizas las OAI, CloudFront utiliza la región (entre otros valores) para calcular la firma que utiliza para solicitar objetos de tu depósito. Para obtener más información acerca de OAI, consulte Uso de una identidad de acceso de origen (heredado, no recomendado). Para obtener una lista de Regiones de AWS que admiten Signature Version 2, consulte Proceso de firma de Signatura Version 2 en la Referencia general de Amazon Web Services.

Para forzar una actualización más rápida CloudFront de los registros, puedes actualizar tu CloudFront distribución, por ejemplo, actualizando el campo Descripción de la pestaña General de la CloudFront consola. Cuando actualizas una distribución, comprueba CloudFront inmediatamente la región en la que se encuentra tu bucket. La propagación del cambio a todas las ubicaciones de borde debería durar solo unos minutos.

Usa un MediaStore contenedor o un MediaPackage canal

Para transmitir vídeo utilizando CloudFront, puede configurar un bucket de Amazon S3 que esté configurado como MediaStore contenedor o crear un canal y puntos de conexión con MediaPackage él. A continuación, crea y configura una distribución CloudFront para transmitir el vídeo.

Para obtener más información e step-by-step instrucciones, consulte los siguientes temas:

Uso de un Application Load Balancer

Si su origen es uno o varios servidores HTTP (servidores web) alojados en una o varias instancias de Amazon EC2, puede utilizar un Application Load Balancer para distribuir el tráfico a las instancias. Para obtener más información sobre el uso de un Application Load Balancer como origen CloudFront, incluido cómo asegurarse de que los espectadores solo puedan acceder a sus servidores web a través del balanceador de carga CloudFront y no directamente, consulte. Restringir el acceso a Application Load Balancer

Uso de una URL de función de Lambda

La URL de una función de Lambda es un punto de conexión HTTPS dedicado a una función AWS Lambda. Puede utilizar una URL de función Lambda para crear una aplicación web sin servidor completamente dentro de AWS Lambda. Puede invocar la aplicación web Lambda directamente a través de la URL de la función, sin necesidad de integrarse con API Gateway ni un Application Load Balancer.

Si crea una aplicación web sin servidor con funciones de Lambda con direcciones URL de funciones, puede CloudFront añadirlas para obtener las siguientes ventajas:

  • Acelerar su aplicación con el almacenamiento en caché de los contenidos más cerca de los lectores

  • Utilizar un nombre de dominio personalizado para su aplicación web

  • Enrute diferentes rutas de URL a diferentes funciones de Lambda utilizando CloudFront los comportamientos de la caché

  • Bloquee solicitudes específicas mediante restricciones CloudFront geográficas o AWS WAF (o ambas)

  • Úselo AWS WAF con CloudFront para ayudar a proteger su aplicación de los bots maliciosos, ayudar a prevenir las vulnerabilidades más comunes de las aplicaciones y mejorar la protección contra los ataques DDoS

Para usar la URL de una función Lambda como origen de una CloudFront distribución, especifique el nombre de dominio completo de la URL de la función Lambda como dominio de origen. Un nombre de dominio de la URL de la función Lambda utiliza el siguiente formato:

function-URL-ID.lambda-url.AWS-Region.on.aws

Cuando utilice la URL de una función Lambda como origen de una CloudFront distribución, debe asegurarse de que la URL de la función sea de acceso público. Para ello, establezca el parámetro AuthType de la función URL como NONE y autorice el permiso lambda:InvokeFunctionUrl en una política basada en recursos. Para obtener más información, consulte Uso de NONE AuthType en la Guía para AWS Lambda desarrolladores. Sin embargo, también puedes añadir un encabezado de origen personalizado a las solicitudes que se CloudFront envíen al origen y escribir el código de la función para que devuelva una respuesta de error si el encabezado no está presente en la solicitud. Esto ayuda a garantizar que los usuarios solo puedan acceder a la aplicación web a través de la URL de la función Lambda CloudFront, y no directamente a través de ella.

Para obtener más información sobre las URL de función Lambda, consulte los siguientes temas en la Guía para desarrolladores de AWS Lambda:

Uso de Amazon EC2 (u otro origen personalizado)

Un origen personalizado es un servidor HTTP, como por ejemplo, un servidor web. El servidor HTTP puede ser una instancia de Amazon EC2 o un servidor HTTP que aloje en otro lugar. Un origen de Amazon S3 configurado como punto de conexión de sitio web también se considera un origen personalizado.

Cuando utilizas tu propio servidor HTTP como origen personalizado, especificas el nombre DNS del servidor, junto con los puertos HTTP y HTTPS y el protocolo que quieres usar CloudFront para recuperar objetos de tu origen.

La mayoría de las CloudFront funciones se admiten cuando se utiliza un origen personalizado, con la excepción del contenido privado. Si bien puedes usar una URL firmada para distribuir contenido de un origen personalizado, CloudFront para acceder al origen personalizado, el origen debe permanecer accesible públicamente. Para obtener más información, consulte Distribución de contenido privado con URL firmadas y cookies firmadas.

Siga estas pautas para usar instancias de Amazon EC2 y otros orígenes personalizados con. CloudFront

  • Aloje y distribuya el mismo contenido en todos los servidores que están distribuyendo contenido para el mismo origen de CloudFront. Para obtener más información, consulte Configuración de origen en el tema Valores que deben especificarse al crear o actualizar una distribución.

  • Registre las entradas del X-Amz-Cf-Id encabezado en todos los servidores en caso de que lo necesite AWS Support o CloudFront utilice este valor para la depuración.

  • Restrinja las solicitudes a los puertos HTTP y HTTPS que escucha su origen personalizado.

  • Sincronice los relojes de todos los servidores de su implementación. Tenga en cuenta que CloudFront utiliza la hora universal coordinada (UTC) para las URL firmadas y las cookies firmadas, para los registros y los informes. Además, si monitorizas la CloudFront actividad mediante CloudWatch métricas, ten en cuenta que CloudWatch también utilizas la UTC.

  • Utilice servidores redundantes para gestionar errores.

  • Para obtener más información acerca del uso de un origen personalizado para ofrecer contenido privado, consulte Restricción del acceso a archivos en orígenes personalizados.

  • Para obtener más información acerca del comportamiento de solicitudes y respuestas y códigos de estado HTTP admitidos, consulte Comportamiento de solicitudes y respuestas.

Si utiliza Amazon EC2 para un origen personalizado, le recomendamos que haga lo siguiente:

  • Utilice una Imagen de máquina de Amazon que instale el software de un servidor web automáticamente. Para obtener más información, consulte la documentación de Amazon EC2.

  • Utilice un balanceador de carga de Elastic Load Balancing para gestionar el tráfico en varias instancias de Amazon EC2 y aislar la aplicación de los cambios realizados en las instancias de Amazon EC2. Por ejemplo, si utiliza un balanceador de carga, puede agregar y eliminar instancias Amazon EC2 sin cambiar su aplicación. Para obtener más información, consulte la Documentación de Elastic Load Balancing.

  • Cuando crees tu CloudFront distribución, especifica la URL del balanceador de cargas para el nombre de dominio de tu servidor de origen. Para obtener más información, consulte Creación de una distribución.

Uso de grupos de CloudFront origen

Puede especificar un grupo de origen para su CloudFront origen si, por ejemplo, desea configurar la conmutación por error de origen para situaciones en las que necesite una alta disponibilidad. Utilice la conmutación por error de origen para designar un origen principal y un CloudFront segundo origen al que cambie CloudFront automáticamente cuando el origen principal devuelva respuestas de error específicas en el código de estado HTTP.

Para obtener más información, incluidos los pasos para configurar un grupo de origen, consulte Optimización de la alta disponibilidad con la conmutación por error de CloudFront Origin.