Amazon CloudFront 2021
Amazon CloudFront 2021
Las marcas comerciales y la imagen comercial de Amazon no se pueden utilizar en relación con ningún producto
o servicio que no sea de Amazon, de ninguna manera que pueda causar confusión entre los clientes y de ninguna
manera que menosprecie o desacredite a Amazon. Todas las demás marcas comerciales que no son propiedad de
Amazon son propiedad de sus respectivos propietarios, que pueden o no estar afiliados, conectados o patrocinados
por Amazon.
Amazon CloudFront Guía para desarrolladores
Table of Contents
¿Qué es Amazon CloudFront? .............................................................................................................. 1
Cómo configurar CloudFront para entregar contenido ....................................................................... 1
Casos de uso ............................................................................................................................ 3
Acelerar la entrega de contenidos de sitios web estáticos ......................................................... 3
Distribuir vídeo bajo demanda o en streaming ......................................................................... 4
Cifrar campos específicos a través del procesamiento del sistema ............................................. 4
Personalizar en el borde ...................................................................................................... 4
Distribuir contenido privado mediante personalizaciones de Lambda@Edge ................................. 4
Cómo CloudFront entrega el contenido .......................................................................................... 5
Cómo CloudFront entrega contenido a sus usuarios ................................................................ 5
Cómo funciona CloudFront con las cachés de borde regionales ................................................. 6
Ubicaciones e intervalos de direcciones IP de servidores de borde de CloudFront ................................. 7
Acceso a CloudFront .................................................................................................................. 7
Cómo empezar a utilizar Amazon CloudFront ................................................................................. 8
AWS Identity and Access Management (IAM) ................................................................................. 8
Precios de CloudFront ................................................................................................................. 8
Paquete de ahorros .......................................................................................................... 10
Elegir la clase de precio para una distribución de CloudFront ................................................... 14
Configuración ................................................................................................................................... 15
Suscríbase a AWS .................................................................................................................... 15
Acceso a la cuenta ................................................................................................................... 15
Acceso a la consola .......................................................................................................... 16
Acceso a la API, la CLI de AWS, las herramientas de AWS para Windows PowerShell o los SDK
de AWS .......................................................................................................................... 16
Crear un usuario de IAM ........................................................................................................... 16
Configurar la interfaz de línea de comandos de AWS o las herramientas de AWS para Windows
PowerShell ............................................................................................................................... 18
Descargar un SDK de AWS ....................................................................................................... 18
Introducción ..................................................................................................................................... 19
Introducción a una distribución simple .......................................................................................... 19
Requisitos previos ............................................................................................................. 19
Paso 1: Cargue el contenido en Amazon S3 y conceda permisos para los objetos ....................... 20
Paso 2: Cree una distribución de CloudFront ........................................................................ 21
Paso 3: Acceda a su contenido a través de CloudFront .......................................................... 22
Introducción a AWS for WordPress ............................................................................................. 22
Requisitos previos ............................................................................................................. 23
Paso 1: Instalar el complemento ......................................................................................... 25
Paso 2: Configurar y usar CloudFront con el complemento ...................................................... 26
(Opcional) Desactivar la aceleración del sitio ........................................................................ 28
(Opcional) Quitar la aceleración del sitio y eliminar la distribución de CloudFront ......................... 29
(Opcional) Desactivar y eliminar el complemento ................................................................... 29
(Opcional) Crear una distribución de CloudFront para el contenido de Amazon Polly .................... 30
Solución de problemas ...................................................................................................... 31
Introducción a un sitio web seguro estático ................................................................................... 33
Información general de la solución ...................................................................................... 33
Implementación de la solución ............................................................................................ 34
Trabajo con distribuciones .................................................................................................................. 38
Información general de distribuciones .......................................................................................... 38
Acciones que puede usar con distribuciones ......................................................................... 39
Campos obligatorios para crear y actualizar distribuciones ...................................................... 39
Creación, actualización y eliminación de distribuciones ................................................................... 41
Pasos para crear una distribución ....................................................................................... 41
Creación de una distribución .............................................................................................. 42
Valores que especifica ....................................................................................................... 43
iii
Amazon CloudFront Guía para desarrolladores
iv
Amazon CloudFront Guía para desarrolladores
v
Amazon CloudFront Guía para desarrolladores
vi
Amazon CloudFront Guía para desarrolladores
vii
Amazon CloudFront Guía para desarrolladores
viii
Amazon CloudFront Guía para desarrolladores
ix
Amazon CloudFront Guía para desarrolladores
Cómo configurar CloudFront para entregar contenido
Por ejemplo, supongamos que distribuye una imagen desde un servidor web tradicional, en lugar de
hacerlo desde CloudFront. Por ejemplo, puede distribuir una imagen, sunsetphoto.png, utilizando la URL
http://example.com/sunsetphoto.png.
Sus usuarios podrían navegar fácilmente a esta URL y ver la imagen. Pero probablemente no sepan que
su solicitud se dirige de una red a otra (a través de la compleja colección de redes interconectadas que
componen Internet) hasta que se encuentra la imagen.
CloudFront agiliza la distribución de su contenido dirigiendo cada solicitud de usuario mediante la red
troncal de AWS a la ubicación de borde que mejor ofrezca su contenido. Por lo general, se trata de un
servidor de borde de CloudFront que proporciona la entrega más rápida al lector. Con la red de AWS se
reduce drásticamente la cantidad de redes que tienen que atravesar las solicitudes de los usuarios, lo que
mejora el rendimiento. Los usuarios experimentan una menor latencia (el tiempo que se tarda en cargar el
primer byte del archivo) y una mayor velocidad de transferencia de datos.
También logra mayor confiabilidad y disponibilidad, ya que las copias de los archivos (también conocidos
como objetos) ahora se guardan (o se almacenan en caché) en varias ubicaciones de borde en todo el
mundo.
Temas
• Cómo configurar CloudFront para entregar contenido (p. 1)
• Casos de uso CloudFront (p. 3)
• Cómo CloudFront entrega el contenido (p. 5)
• Ubicaciones e intervalos de direcciones IP de servidores de borde de CloudFront (p. 7)
• Acceso a CloudFront (p. 7)
• Cómo empezar a utilizar Amazon CloudFront (p. 8)
• AWS Identity and Access Management (IAM) (p. 8)
• Precios de CloudFront (p. 8)
1
Amazon CloudFront Guía para desarrolladores
Cómo configurar CloudFront para entregar contenido
A continuación, CloudFront utiliza equipos (servidores perimetrales) que se encuentran próximos a los
lectores para entregar dicho contenido rápidamente cuando alguien quiere verlo o utilizarlo.
1. Debe especificar los servidores de origen, como un bucket de Amazon S3 o su propio servidor HTTP,
desde el que CloudFront obtiene sus archivos que después se distribuirán desde ubicaciones de
borde de CloudFront de todo el mundo.
Un servidor de origen almacena la versión original y definitiva de sus objetos. Si ofrece contenido
a través de HTTP, su servidor de origen es un bucket de Amazon S3 o un servidor HTTP, como un
servidor web. Su servidor HTTP puede ejecutarse en una instancia Amazon Elastic Compute Cloud
(Amazon EC2) o en un servidor que usted administre; estos servidores también reciben el nombre de
orígenes personalizados.
2. Cargue sus archivos en sus servidores de origen. Los archivos, también conocidos como objetos,
suelen incluir páginas web, imágenes y archivos multimedia, pero pueden ser cualquier cosa que se
pueda servir a través de HTTP.
Si utiliza un bucket de Amazon S3 como servidor de origen, puede hacer que los objetos del bucket
sean legibles públicamente para que cualquiera que conozca la URL de CloudFront de sus objetos
pueda obtener acceso a ellos. También puede mantener los objetos privados y controlar quién
obtiene acceso a ellos. Consulte Distribución de contenido privado con URL firmadas y cookies
firmadas (p. 164).
2
Amazon CloudFront Guía para desarrolladores
Casos de uso
3. Cree una distribución de CloudFront que le indique al mismo CloudFront desde qué servidores de
origen obtener los archivos cuando los usuarios los soliciten archivos a través de su aplicación o sitio
web. También debe especificar detalles como si desea que CloudFront registre todas las solicitudes y
que la distribución se habilite en cuanto se cree.
4. CloudFront asigna un nombre de dominio a su nueva distribución que puede ver en la consola de
CloudFront o que se devuelve en respuesta a una solicitud programada, por ejemplo, una solicitud de
la API. Si lo desea, puede añadir un nombre de dominio alternativo para usarlo en su lugar.
5. CloudFront envía la configuración de su distribución (pero no el contenido) a todas las ubicaciones
de borde o puntos de presencia (POP): conjuntos de servidores en centros de datos dispersos
geográficamente, en los que CloudFront almacena en caché las copias de los archivos.
Cuando desarrolle su sitio web o aplicación, utilice el nombre de dominio que CloudFront ofrece para sus
URL. Por ejemplo, si CloudFront devuelve d111111abcdef8.cloudfront.net como el nombre de
dominio de la distribución, la URL de logo.jpg en su bucket de Amazon S3 (o en el directorio raíz de un
servidor HTTP) sería http://d111111abcdef8.cloudfront.net/logo.jpg.
O bien puede configurar CloudFront para usar su propio nombre de dominio con su distribución. En ese
caso, la URL sería http://www.example.com/logo.jpg.
También puede configurar su servidor de origen para agregar encabezados a los archivos, para indicar el
tiempo durante el que desea que los archivos se mantengan en la caché en las ubicaciones de borde de
CloudFront. De forma predeterminada, cada uno de los archivos permanece en una ubicación de borde
durante 24 horas antes de caducar. El tiempo de vencimiento mínimo es de 0 segundos y no hay un
tiempo máximo. Para obtener más información, consulte Administración de cuánto tiempo se mantiene el
contenido en una caché (vencimiento) (p. 268).
Temas
• Acelerar la entrega de contenidos de sitios web estáticos (p. 3)
• Distribuir vídeo bajo demanda o en streaming (p. 4)
• Cifrar campos específicos a través del procesamiento del sistema (p. 4)
• Personalizar en el borde (p. 4)
• Distribuir contenido privado mediante personalizaciones de Lambda@Edge (p. 4)
Un enfoque sencillo para almacenar y entregar contenido estático consiste en utilizar un bucket de Amazon
S3. El uso de S3 conjuntamente con CloudFront presenta una serie de ventajas, entre las que se incluye la
opción de usar la identidad de acceso de origen (OAI) para restringir fácilmente el acceso a su contenido
de S3.
3
Amazon CloudFront Guía para desarrolladores
Distribuir vídeo bajo demanda o en streaming
Para obtener más información acerca de cómo utilizar S3 junto con CloudFront, incluida una plantilla de
AWS CloudFormation para ayudarle a empezar rápidamente, consulte Amazon S3 + Amazon CloudFront:
A Match Made in the Cloud.
• Para el streaming de vídeo bajo demanda (VOD), puede usar CloudFront para transmitir formatos
comunes tales como MPEG DASH, Apple HLS, Microsoft Smooth Streaming y CMAF a cualquier
dispositivo.
• Para difusión de una transmisión en directo, puede almacenar en caché fragmentos multimedia en el
borde, de forma que varias solicitudes para el archivo de manifiesto que envía los fragmentos en el
orden correcto se puedan combinar, con el fin de reducir la carga en su servidor de origen.
Para obtener más información acerca de cómo entregar contenido en streaming con CloudFront, consulte
Vídeo bajo demanda y streaming de vídeo en directo con CloudFront (p. 328).
Para configurar el cifrado en el nivel de campo, agregue una clave pública a CloudFront y, a continuación,
especifique el conjunto de campos que desee cifrar con la clave. Para obtener más información, consulte
Uso del cifrado en el nivel de campo para ayudar a proteger la información confidencial (p. 241).
Personalizar en el borde
La ejecución de código sin servidor en el borde abre una serie de posibilidades para personalizar los
contenidos y la experiencia para los espectadores, con una latencia reducida. Por ejemplo, puede
devolver un mensaje de error personalizado cuando el servidor de origen está desactivado por motivos
de mantenimiento, por lo que los espectadores no reciben un mensaje de error HTTP genérico. O puede
utilizar una función para ayudar a autorizar a los usuarios y controlar el acceso al contenido, antes de que
CloudFront reenvíe una solicitud a su origen.
El uso de Lambda@Edge con CloudFront permite distintas formas de personalizar el contenido que
ofrece CloudFront. Para obtener más información acerca de Lambda@Edge y cómo crear e implementar
funciones con CloudFront, consulte Personalización en el borde con Lambda@Edge (p. 337). Para ver
una serie de ejemplos de código que puede personalizar para sus propias soluciones, consulte Funciones
de ejemplo de Lambda@Edge (p. 387).
4
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront entrega el contenido
Puede utilizar varias técnicas para restringir el acceso a su origen exclusivamente a CloudFront, incluido
el uso de la inclusión en listas blancas de direcciones IP de CloudFront en el firewall y el uso de un
encabezado personalizado para transportar un secreto compartido.
Para obtener más información e instrucciones paso a paso, incluido código de muestra, consulte Serving
Private Content Using Amazon CloudFront & AWS Lambda@Edge.
Temas
• Cómo CloudFront entrega contenido a sus usuarios (p. 5)
• Cómo funciona CloudFront con las cachés de borde regionales (p. 6)
1. Un usuario obtiene acceso a su sitio web o aplicación y solicita uno o varios archivos, como un archivo
de imagen y un archivo HTML.
2. DNS dirige la solicitud a la ubicación de borde de CloudFront que mejor atiende la solicitud
(normalmente, el punto de presencia más cercano de CloudFront en términos de latencia) y dirige la
solicitud a esa ubicación de borde.
3. En el punto de presencia, CloudFront busca los archivos solicitados en su caché. Si los archivos se
encuentran en la caché, CloudFront los devuelve al usuario. Si los archivos no están en la caché, hace
lo siguiente:
a. CloudFront compara la solicitud con las especificaciones de su distribución y reenvía la solicitud de
los archivos al servidor de origen correspondiente según el tipo de archivo (por ejemplo, a su bucket
de Amazon S3 para archivos de imagen y a su servidor HTTP para los archivos HTML).
b. Los servidores de origen devuelven los archivos a la ubicación de borde.
c. En cuanto llega el primer byte desde el origen, CloudFront comienza a reenviar los archivos al
usuario. CloudFront también agrega los archivos a la caché en la ubicación de borde para la próxima
vez que alguien los solicite.
5
Amazon CloudFront Guía para desarrolladores
Cómo funciona CloudFront con
las cachés de borde regionales
Las cachés perimetrales regionales ayudan con todo tipo de contenidos, especialmente los que pierden
popularidad con el tiempo. Entre los ejemplos se incluyen contenido generado por usuarios como videos,
fotos o ilustraciones; recursos de e-commerce como fotos y videos de productos, así como noticias y
contenido relacionado con eventos que podrían hacerse populares de repente.
Las cachés de borde regionales son ubicaciones de CloudFront implementadas en todo el mundo y
cercanas a sus lectores. Están ubicadas entre el servidor de origen y los puntos de presencia: ubicaciones
de borde globales que distribuyen contenido directamente a los lectores. A medida que los objetos se
hacen menos populares, los puntos de presencia individuales podrían quitar dichos objetos para dejar
espacio a contenido más popular. Las cachés perimetrales regionales tienen una caché mayor que un
punto de presencia individual, de modo que los objetos permanecen más tiempo en la ubicación de caché
perimetral regional más cercana. De esta manera, es posible conservar un mayor volumen de contenido
más cerca de los lectores, lo que reduce la necesidad de que CloudFront regrese al servidor de origen y
mejora el rendimiento general para los lectores.
Cuando un espectador realiza una solicitud a su sitio web o mediante su aplicación, DNS dirige la solicitud
al punto de presencia que puede distribuir mejor la solicitud del usuario. Esta ubicación suele ser la
ubicación de borde de CloudFront más cercana en términos de latencia. En el punto de presencia,
CloudFront busca los archivos solicitados en su caché. Si los archivos se encuentran en la caché,
CloudFront los devuelve al usuario. Si los archivos no están en la caché, los puntos de presencia buscan el
objeto en la caché perimetral regional más cercana.
6
Amazon CloudFront Guía para desarrolladores
Ubicaciones e intervalos de direcciones
IP de servidores de borde de CloudFront
En la caché de borde regional, CloudFront vuelve a buscar los archivos solicitados en su caché. Si los
archivos se encuentran en la caché, CloudFront reenvía los archivos al punto de presencia que los solicitó.
En cuanto el primer byte llega desde la caché de borde regional, CloudFront comienza a reenviar los
archivos al usuario. CloudFront también agrega los archivos a la caché en el punto de presencia para la
próxima vez que alguien los solicite.
Para los archivos no almacenados en caché en el punto de presencia o la ubicación de caché de borde
regional, CloudFront compara la solicitud con las especificaciones de sus distribuciones y reenvía la
solicitud de sus archivos al servidor de origen. Una vez que el servidor de origen devuelve los archivos a la
ubicación de caché de borde regional, se reenvían al punto de presencia y CloudFront reenvía los archivos
al usuario. En este caso, CloudFront también agrega los archivos a la caché en la ubicación de caché de
borde regional, además de agregarlos al punto de presencia para la próxima vez que un lector solicite los
archivos. Esto garantiza que todos los puntos de presencia de una región compartan una caché local, con
lo que no es necesario realizar varias solicitudes a los servidores de origen. CloudFront mantiene además
conexiones permanentes con los servidores de origen, de modo que los archivos se obtengan desde los
orígenes lo antes posible.
Note
• Las cachés perimetrales regionales tienen paridad de características con los puntos de
presencia. Por ejemplo, una solicitud de invalidación de la caché elimina un objeto tanto de
las cachés de los puntos de presencia como de las cachés perimetrales regionales antes de
caducar. La próxima vez que un lector solicite el objeto, CloudFront volverá al origen para
recuperar la última versión.
• Los métodos proxy PUT/POST/PATCH/OPTIONS/DELETE van directamente desde los puntos
de presencia al origen sin pasar por las cachés perimetrales regionales.
• Las solicitudes dinámicas, según se determinan en el momento de la solicitud, no fluyen a
través de las cachés de borde regionales, sino que van directamente al origen.
Amazon Web Services (AWS) publica sus rangos de direcciones IP actuales en formato JSON. Para ver
los rangos actuales, descargue ip-ranges.json. Para obtener más información, consulte Intervalos de
direcciones IP de AWS en la Referencia general de Amazon Web Services.
Para encontrar los intervalos de direcciones IP asociadas a servidores de borde de CloudFront, busque la
siguiente cadena en ip-ranges.json:
"service": "CLOUDFRONT"
Acceso a CloudFront
Puede acceder a Amazon CloudFront de las siguientes maneras:
• Consola de administración de AWS: los procedimientos de esta guía explican cómo utilizar la consola de
administración de AWS para realizar tareas.
7
Amazon CloudFront Guía para desarrolladores
Cómo empezar a utilizar Amazon CloudFront
• SDK de AWS: si utiliza un lenguaje de programación para el que AWS proporciona un SDK, puede usar
un SDK para obtener acceso a CloudFront. Los SDK simplifican la autenticación, se integran fácilmente
con su entorno de desarrollo y proporcionan acceso a los comandos de CloudFront. Para obtener más
información, consulte Herramientas para Amazon Web Services.
• API de CloudFront: si utiliza un lenguaje de programación para el que no exista un SDK, consulte la
Referencia de la API de Amazon CloudFront para obtener información acerca de las acciones de API y
cómo realizar solicitudes de API.
• Interfaz de línea de comandos de AWS: para obtener más información, consulte Configuración inicial de
la interfaz de línea de comandos de AWS en la Guía del usuario de la interfaz de línea de comandos de
AWS.
• AWS Tools for Windows PowerShell: para obtener más información, consulte Configuración de AWS
Tools for Windows PowerShell en la Guía del usuario de AWS Tools for Windows PowerShell.
• Configuración de Amazon CloudFront (p. 15), donde se explica cómo iniciar sesión en AWS, cómo
proteger el acceso a su cuenta de AWS y cómo establecer acceso mediante programación a CloudFront.
• Introducción a Amazon CloudFront (p. 19), que describe cómo crear una distribución que pueda
distribuir contenido a los lectores desde su origen, como un bucket de Amazon S3 o un sitio web, y, a
continuación, comprobar que funciona.
Por ejemplo, puede utilizar IAM con CloudFront para controlar qué usuarios de su cuenta de AWS pueden
crear una nueva distribución o actualizar la configuración de comportamiento de la caché.
Precios de CloudFront
Amazon CloudFront se ha diseñado para que no tenga que pagar cuotas por adelantado ni tenga que
comprometerse con cantidades de contenido específicas. Al igual que ocurre con otros servicios de AWS,
8
Amazon CloudFront Guía para desarrolladores
Precios de CloudFront
pagará por uso, es decir, solo por el consumo realizado. Para obtener información sobre los precios,
consulte Precios de Amazon CloudFront.
Tip
Para evitar cargos inesperados por CloudFront (o cualquier servicio de AWS), puede utilizar AWS
Budgets. Con AWS Budgets, puede establecer umbrales de costos y recibir notificaciones por
correo electrónico o por tema de Amazon SNS cuando sus cargos reales o previstos superen un
umbral. Para obtener más información, consulte Administración de costos con AWS Budgets y
Creación de un presupuesto en la Guía del usuario de la administración de costos y facturación de
AWS. Para comenzar, diríjase a AWS Budgets en la consola.
AWS ofrece dos informes de uso para CloudFront: un informe de facturación y un informe que resume
la actividad de uso. Para obtener más información acerca de estos informes, consulte Informes de uso y
facturación de AWS para CloudFront (p. 422).
Su factura mensual de AWS desglosa su uso y las cantidades en dólares por servicio de AWS y función.
A continuación se explican los cargos que se ilustran en el gráfico anterior. Para obtener más información
sobre los precios, consulte Precios de Amazon CloudFront.
9
Amazon CloudFront Guía para desarrolladores
Paquete de ahorros
1. Cargo por almacenamiento en un bucket de Amazon S3. Se cobran los cargos normales de
almacenamiento en Amazon S3 por almacenar objetos en su bucket. Los cargos aparecen en la sección
de Amazon S3 de su factura de AWS.
2. Cargo por distribución de objetos desde ubicaciones de borde. Se aplican cargos de CloudFront cuando
CloudFront responde a las solicitudes de sus objetos. Los cargos incluyen la transferencia de datos
para datos de WebSocket de servidor a cliente. Los cargos de CloudFront aparecen en la parte de
CloudFront de su factura de AWS como región -DataTransfer-Out-Bytes.
3. Cargo por envío de datos a su origen. Se le cobrarán cargos de CloudFront cuando los usuarios
transfieran datos a su origen, incluidas solicitudes DELETE, OPTIONS, PATCH, POST y PUT. Los cargos
incluyen la transferencia de datos para datos de WebSocket de cliente a servidor. Los cargos de
CloudFront aparecen en la parte de CloudFront de su factura de AWS como región -DataTransfer-Out-
OBytes.
• También se aplica un recargo por las solicitudes HTTPS y un recargo adicional por las solicitudes
que también tengan habilitado el cifrado a nivel de campo o que utilizan Origin Shield (p. 255) como
una capa incremental de almacenamiento en caché. Para obtener más información sobre los precios,
consulte Precios de Amazon CloudFront.
• No se aplicarán cargos adicionales de CloudFront cuando se utilicen grupos de orígenes. Continúe
pagando las mismas cuotas de solicitud y las tasas de transferencia de datos de la misma forma que
cuando se utiliza CloudFront con cualquier otro origen de AWS o distinto de AWS. Para obtener más
información, consulte Uso de los grupos de origen de CloudFront (p. 77).
Para obtener más información, consulte las siguientes secciones. Para comprar un paquete de ahorros,
vaya a la página general del paquete de ahorros en la consola de CloudFront.
Secciones
• Descripción general del paquete de ahorros (p. 10)
• Ejemplo de paquete de ahorros (p. 11)
• Compra de un paquete de ahorros (p. 11)
• Visualización y actualización de sus paquetes de ahorros (p. 12)
• Permisos para administrar un paquete de ahorros (p. 12)
• Más información sobre paquetes de ahorros (p. 13)
1. Para comprar un paquete de ahorros, se compromete a pagar una cantidad mensual consistente
(dólares por mes) para CloudFront durante un año. Se le facturará el importe comprometido cada
mes, durante 12 meses, comenzando en el período de facturación en el que adquiera el paquete de
ahorros. Si compra un paquete de ahorros el último día del período de facturación, los cargos y créditos
comienzan el siguiente período de facturación.
10
Amazon CloudFront Guía para desarrolladores
Paquete de ahorros
Además, obtendrá 42 USD en créditos WAF de AWS para compensar los cargos de solicitud de AWS WAF
por usar AWS WAF con su distribución CloudFront.
Cuando compra un paquete de ahorro de seguridad de CloudFront con un compromiso mensual de $420,
su ahorro anual total estimado es de hasta $2664.
11
Amazon CloudFront Guía para desarrolladores
Paquete de ahorros
Elija Siguiente para revisar y luego comprar su paquete de ahorro de seguridad CloudFront.
Puede comprar más de un paquete de ahorros y puede tener varios paquetes de ahorros activos al mismo
tiempo. Si compra un paquete de ahorros y luego descubre que su uso mensual de CloudFront excede
constantemente los créditos del paquete, puede comprar otro paquete para obtener ahorros adicionales.
• Los siguientes permisos de solo lectura permiten a la identidad obtener información relacionada con los
paquetes de ahorros de seguridad existentes de CloudFront, incluida la información necesaria para ver
recomendaciones y ahorros estimados en la consola de CloudFront:
• cloudfront:ListSavingsPlans
• cloudfront:GetSavingsPlan
• cloudfront:ListRateCards
• cloudfront:ListUsages
• cloudfront:CreateSavingsPlan : permite que la identidad compre un paquete de ahorro de
seguridad de CloudFront.
• cloudfront:UpdateSavingsPlan : permite que la identidad active o deshabilite la renovación
automática de un paquete de ahorro de seguridad de CloudFront adquirido.
12
Amazon CloudFront Guía para desarrolladores
Paquete de ahorros
¿Los créditos del paquete de ahorros se aplican a una distribución específica o a todas las distribuciones?
Los créditos se aplican a nivel de cuenta de AWS a todo el uso de CloudFront en la cuenta de AWS.
¿Los créditos se aplican a todos los tipos de uso de CloudFront?
Sí. Los créditos se aplican a todos los cargos de CloudFront, incluidos los cargos por transferencia de
datos, cargos de solicitud y cargos de Lambda @Edge.
¿Puedo utilizar un paquete de ahorro de seguridad de CloudFront con facturación unificada?
Sí, siempre que esté habilitado el uso compartido de créditos (puede verificarlo consultando la página
de preferencias de facturación en la consola de facturación y gestión de costos de AWS). Usted
compra el paquete de ahorros con la cuenta pagadora (cuenta de administración). Los créditos se
aplican primero a los cargos de CloudFront acumulados en la cuenta pagadora y, a continuación, a los
cargos de CloudFront acumulados en las cuentas de miembro, dependiendo de cuándo la cuenta se
une o abandona una organización. Para obtener más información sobre cómo se aplican los créditos
de AWS en cuentas individuales y múltiples, consulte los créditos de AWS en la Guía del usuario de
facturación y gestión de costos de AWS.
¿Qué sucede si no uso todos los créditos en un período de facturación determinado?
Los créditos se aplican a la factura de AWS cada período de facturación y deben utilizarse en ese
período de facturación. Si alguno de los créditos se deja sin utilizar al final del período de facturación,
caducarán. Los créditos no se arrastran al siguiente período de facturación.
¿Qué ocurre si mi uso de CloudFront o AWS WAF supera la cantidad de los créditos?
Los cargos de CloudFront y AWS WAF que se acumulan se compensan con los créditos del paquete
de ahorro de seguridad de CloudFront. Si su uso excede los créditos disponibles para ese período de
facturación, se le facturará la diferencia a las tarifas estándar.
¿Se prorratean los cargos o créditos por meses parciales?
No. Cuando compra un plan de ahorro de seguridad de CloudFront, el cargo se aplica a su factura
para el período de facturación actual. Del mismo modo, los créditos se aplican a los cargos del período
de facturación actual. Si compra un paquete de ahorros el último día del período de facturación, los
cargos y créditos comienzan el siguiente período de facturación (al día siguiente).
¿Qué sucede cuando caduca el paquete de ahorros?
Puede elegir si desea renovar automáticamente el paquete al final del plazo de un año. Si decide no
renovar automáticamente, el paquete de ahorros caduca después del plazo de un año. Cuando esto
sucede, los créditos ya no se aplican a su factura de AWS y se le cobrará el uso de CloudFront y AWS
WAF a tarifas estándar.
¿Puedo recibir notificaciones si mi uso de CloudFront supera la cantidad cubierta por los créditos del
paquete de ahorros?
Sí. Con AWS Budgets, puede establecer umbrales de coste o uso. Cuando sus cargos reales o
previstos para CloudFront superan un umbral, recibirá notificaciones por correo electrónico o por tema
de Amazon SNS. Puede crear un presupuesto personalizado filtrado para CloudFront y establecer
el importe del umbral presupuestario para el uso cubierto por su paquete de ahorro de seguridad de
CloudFront. Para obtener más información, consulte Administración de costos con AWS Budgets y
Creación de un presupuesto en la Guía del usuario de la administración de costos y facturación de
AWS. Para comenzar, diríjase a AWS Budgets en la consola.
13
Amazon CloudFront Guía para desarrolladores
Elegir la clase de precio para una distribución de CloudFront
Los cargos por el importe del compromiso aparecen en la sección Paquete de seguridad de
CloudFront de su factura mensual. Los créditos aparecen en la sección CloudFront y AWS WAF de su
factura con la descripción Uso cubierto por CloudFront Security Savings Bundle.
Para obtener más información, consulte Precios de Amazon CloudFront en el sitio web de AWS.
Las ubicaciones de borde de CloudFront se agrupan por regiones geográficas, y hemos agrupado las
regiones por clases de precios. La clase de precio predeterminada incluye todas las regiones. Hay otra
clase de precio que contiene la mayoría de las regiones (Estados Unidos, Canadá, Europa, Hong Kong,
Filipinas, Corea del Sur, Taiwán, y Singapur, Japón, India, Sudáfrica Oriente Medio), pero excluye las
más caras. La tercera clase de precio solamente contiene las regiones más económicas (Estados Unidos,
Canadá y Europa).
De forma predeterminada, CloudFront responde a las solicitudes de sus objetos solo según el rendimiento:
los objetos se ofrecen desde la ubicación de borde cuya latencia sea la menor para ese lector. Si está
dispuesto a aceptar latencias más altas para sus lectores en algunas regiones geográficas a cambio de
menor costo, puede elegir una clase de precios que no incluya todas las regiones de CloudFront. Aunque
CloudFront servirá los objetos solo desde ubicaciones de borde de la clase de precios seleccionada, lo
hará desde la que ofrezca la mínima latencia posible entre ellas. Sin embargo, algunos de los lectores,
en particular los de las regiones geográficas no incluidas en su clase de precios, pueden experimentar
latencias más altas que si el contenido se ofreciera con un plan que ofrezca todas las ubicaciones de borde
de CloudFront. Por ejemplo, si elige la clase de precio que incluya únicamente Estados Unidos y Europa,
los espectadores en Australia y en Asia pueden experimentar latencias más altas que si elige la clase de
precio que incluye Australia y Asia.
Si elige una clase de precios que no incluye todas las ubicaciones de borde, CloudFront igualmente podría
atender ocasionalmente solicitudes de contenido desde una ubicación de borde de una región no incluida
en su clase de precios. Si esto ocurre, no se le cobra la tarifa de la región más cara desde la que se
ofrecen sus objetos. En su lugar, se le cobrará la tarifa de la región más económica de la clase de precio
que haya elegido.
Puede elegir una clase de precios al crear o actualizar una distribución de CloudFront. Para obtener más
información, consulte Trabajo con distribuciones (p. 38).
Si va a crear o actualizar una distribución mediante la API de CloudFront, uno de los SDK de AWS o AWS
CloudFormation, consulte el tipo complejo DistributionConfig (busque PriceClass).
Para obtener más información acerca de los precios y las clases de precios de CloudFront, consulte
Precios de Amazon CloudFront.
14
Amazon CloudFront Guía para desarrolladores
Suscríbase a AWS
Temas
• Suscríbase a AWS (p. 15)
• Acceso a la cuenta (p. 15)
• Crear un usuario de IAM (p. 16)
• Configurar la interfaz de línea de comandos de AWS o las herramientas de AWS para Windows
PowerShell (p. 18)
• Descargar un SDK de AWS (p. 18)
Suscríbase a AWS
Cuando se registra en AWS, su cuenta de AWS se registra automáticamente en todos los servicios de
AWS, incluido Amazon CloudFront. Solo se le cobrará por los servicios que utilice.
Si ya tiene una cuenta de AWS configurada, pase a Acceso a la cuenta (p. 15). De lo contrario, cree
una.
1. Abra https://portal.aws.amazon.com/billing/signup.
2. Siga las instrucciones en línea.
Parte del procedimiento de inscripción consiste en recibir una llamada telefónica e indicar un código de
verificación en el teclado del teléfono.
Si tiene previsto utilizar CloudFront para distribuir contenido que almacena en un bucket de S3,
asegúrese de completar también los pasos para registrarse en S3. Para obtener más información,
consulte Inscribirse en Amazon S3.
Acceso a la cuenta
Utilice los servicios de AWS mediante una de las siguientes opciones:
15
Amazon CloudFront Guía para desarrolladores
Acceso a la consola
Para cada una de esas opciones, debe acceder a su cuenta de AWS proporcionando credenciales que
verifiquen que tiene permisos para utilizar los servicios.
Acceso a la consola
Para acceder a la consola de administración de AWS por primera vez, indique una dirección de correo
electrónico y una contraseña. Esta combinación de dirección de correo electrónico y contraseña se
denomina identidad raíz o credenciales de cuenta raíz. Después de acceder a su cuenta por primera vez,
le recomendamos que no vuelva a utilizar las credenciales de la cuenta raíz de nuevo para el uso diario.
En su lugar, debe crear nuevas credenciales mediante AWS Identity and Access Management. Para ello,
cree una cuenta de usuario para usted, un usuario de IAM y, a continuación, agregue este usuario de IAM
a un grupo IAM con permisos administrativos o concédalos al usuario de IAM. De este modo podrá tener
acceso a AWS mediante una dirección URL especial y las credenciales del usuario de IAM. Después podrá
agregar también otros usuarios de IAM y restringir su acceso a determinados recursos de la cuenta.
Note
Para crear las claves, inicie sesión en la consola de administración de AWS. Le recomendamos que inicie
sesión con sus credenciales de usuario de IAM en lugar de hacerlo con sus credenciales raíz. Para obtener
más información, consulte Administración de claves de acceso para usuarios de IAM en la Guía de usuario
de IAM.
1. Inicie sesión en la consola de IAM como propietario de la cuenta seleccionando Root user (Usuario
raíz) y escribiendo la dirección de correo electrónico de su cuenta de AWS. En la siguiente página,
escriba su contraseña.
Note
16
Amazon CloudFront Guía para desarrolladores
Crear un usuario de IAM
2. En el panel de navegación, elija Users (Usuarios) y, a continuación, elija Add user (Añadir usuario).
3. En User name (Nombre de usuario), escriba Administrator.
4. Active la casilla de verificación situada junto al AWS Management Console access (Acceso a la
consola de administración de AWS). A continuación, seleccione Custom password (Contraseña
personalizada) y luego escriba la nueva contraseña en el cuadro de texto.
5. (Opcional) De forma predeterminada, AWS requiere que el nuevo usuario cree una nueva contraseña
la primera vez que inicia sesión. Puede quitar la marca de selección de la casilla de verificación
situada junto a User must create a new password at next sign-in (El usuario debe crear una nueva
contraseña en el siguiente inicio de sesión) para permitir al nuevo usuario restablecer su contraseña
después de iniciar sesión.
6. Elija Next: Permissions.
7. En Set permissions (Establecer persmisos), elija Add user to group (Añadir usuario a grupo).
8. Elija Create group (Crear grupo).
9. En el cuadro de diálogo Create group (Crear grupo), en Group name (Nombre del grupo) escriba
Administrators.
10. Elija Filter policies (Filtrar políticas) y, a continuación, seleccione AWS managed - job function
(Función de trabajo administrada por AWS) para filtrar el contenido de la tabla.
11. En la lista de políticas, active la casilla de verificación AdministratorAccess. A continuación, elija
Create group (Crear grupo).
Note
Debe activar el acceso de usuario y rol de IAM a Facturación antes de poder utilizar los
permisos AdministratorAccess para acceder a la consola de AWS Billing and Cost
Management. Para ello, siga las instrucciones que se indican en el paso 1 del tutorial sobre
cómo delegar el acceso a la consola de facturación.
12. Retroceda a la lista de grupos y active la casilla de verificación del nuevo grupo. Elija Refresh si es
necesario para ver el grupo en la lista.
13. Elija Next: Tags (Siguiente: Etiquetas).
14. (Opcional) Añadir metadatos al rol asociando las etiquetas como pares de clave-valor. Para obtener
más información sobre el uso de etiquetas en IAM, consulte Etiquetado de entidades de IAM en la
guía del usuario de IAM.
15. Elija Next: Review para ver la lista de suscripciones a grupos que se van a añadir al nuevo usuario.
Cuando esté listo para continuar, elija Create user (Crear usuario).
Puede usar este mismo proceso para crear más grupos y usuarios, y para conceder a los usuarios acceso
los recursos de su cuenta de AWS. Para obtener información sobre cómo usar las políticas que restringen
los permisos de los usuarios a recursos de AWS específicos, consulte Administración de acceso y Políticas
de ejemplo.
https://your_account_id.signin.aws.amazon.com/console/
17
Amazon CloudFront Guía para desarrolladores
Configurar la interfaz de línea de comandos de AWS
o las herramientas de AWS para Windows PowerShell
Si no desea que la dirección URL de la página de inicio de sesión contenga el ID de su cuenta de AWS,
puede crear un alias de cuenta.
https://your_account_alias.signin.aws.amazon.com/console/
Para verificar el enlace de inicio de sesión de los usuarios de IAM de su cuenta, abra la consola de IAM
y compruebe el valor de IAM users sign-in link (Enlace de inicio de sesión de los usuarios de IAM) en el
panel.
Para obtener más información acerca del uso de la IAM, consulte Administración de identidades y accesos
en CloudFront (p. 499).
Si tiene experiencia con Windows PowerShell, es posible que prefiera utilizar las herramientas de AWS
para Windows PowerShell. Para obtener más información, consulte Configuración de las herramientas de
AWS para Windows PowerShell en la Guía del usuario de AWS Tools for Windows PowerShell.
18
Amazon CloudFront Guía para desarrolladores
Introducción a una distribución simple
Temas
• Introducción a una distribución sencilla de CloudFront (p. 19)
• Introducción al complemento AWS for WordPress (p. 22)
• Introducción a un sitio web seguro estático (p. 33)
• Almacene las versiones originales de sus objetos en un solo bucket de Amazon Simple Storage Service
(Amazon S3)
• Hace que sus objetos sean accesibles para todo el mundo.
• Utilice el nombre de dominio de CloudFront en las URL de sus objetos (por ejemplo, http://
d111111abcdef8.cloudfront.net/index.html).
• Mantenga los objetos en ubicaciones de borde de CloudFront durante el período predeterminado de 24
horas (la duración mínima es de 0 segundos).
La mayoría de estas opciones pueden personalizarse. Por ejemplo, puede almacenar su contenido en su
propio servidor web en lugar de utilizar un bucket de S3 y puede restringir quién tiene acceso al contenido
mediante el uso de URL o cookies firmadas. Para obtener información acerca de cómo personalizar
sus opciones de distribución de CloudFront, consulte Pasos para crear una distribución (Información
general) (p. 41).
Solo tiene que realizar unos pasos básicos para comenzar a entregar contenido con CloudFront. El primer
paso es inscribirse. Después, cree una distribución de CloudFront y, a continuación, utilice el nombre de
dominio de CloudFront en las URL de sus páginas web o aplicaciones para hacer referencia al contenido.
Temas
• Requisitos previos (p. 19)
• Paso 1: Cargue el contenido en Amazon S3 y conceda permisos para los objetos (p. 20)
• Paso 2: Cree una distribución de CloudFront (p. 21)
• Paso 3: Acceda a su contenido a través de CloudFront (p. 22)
Requisitos previos
Antes de comenzar, asegúrese de que ha completado los pasos que se detallan en Configuración de
Amazon CloudFront (p. 15).
19
Amazon CloudFront Guía para desarrolladores
Paso 1: Cargue el contenido en Amazon
S3 y conceda permisos para los objetos
De forma predeterminada, el bucket de Amazon S3 y todos los archivos que contiene son privados: solo la
cuenta de AWS que creó el bucket tiene permisos para leer o escribir los archivos. Si desea permitir que
cualquier persona tenga acceso a los archivos de un bucket de Amazon S3 mediante direcciones URL de
CloudFront, debe conceder permisos de lectura públicos a los objetos.
Note
Para que su bucket pueda funcionar con CloudFront, el nombre debe cumplir los requisitos de
nomenclatura de DNS. Para obtener más información, consulte Restricciones y limitaciones
de los buckets en la Guía para desarrolladores de Amazon Simple Storage Service.
4. En Region (Región), elija una región de AWS para su bucket. Le recomendamos que elija una región
cercana a usted para optimizar la latencia y minimizar los costos o bien puede elegir otra región para
satisfacer los requisitos reglamentarios.
5. En la sección Block Public Access settings for bucket (Configuración de bloqueo de acceso público del
bucket), desactive la casilla de verificación Block all public access (Bloquear todo el acceso público).
Debe permitir el acceso público de lectura al bucket y a los archivos para que las URL de
CloudFront puedan servir contenido desde el bucket. Sin embargo, puede restringir el acceso
a contenido específico a través de la característica de contenido privado de CloudFront. Para
obtener más información, consulte Distribución de contenido privado con URL firmadas y cookies
firmadas (p. 164).
Seleccione la casilla de verificación de I acknowledge that the current settings may result in this bucket
and the objects within becoming public (Reconozco que la configuración actual podría dar lugar a que
este bucket y los objetos dentro se conviertan en públicos).
6. Deje todas las demás configuraciones en sus valores predeterminados y, a continuación, elija Create
bucket (Crear bucket).
7. (Opcional) Si no tiene su propio contenido de sitio web, o si solo desea experimentar con CloudFront
antes de cargar su propio contenido, utilice el siguiente enlace para descargar una simple página web
de hola mundo: hello-world-html.zip.
8. En la sección Buckets, elija su nuevo bucket y, a continuación, elija Upload (Cargar).
9. Utilice la página Upload (Cargar) para agregar su contenido al bucket de S3. Si descargó la
simple página web hola mundo, agregue el archivo index.html y la carpeta css (con el archivo
style.css dentro de él).
20
Amazon CloudFront Guía para desarrolladores
Paso 2: Cree una distribución de CloudFront
10. Seleccione Additional upload options (Opciones de carga adicionales) para expandir la sección.
11. En la sección Access control list (ACL) (Lista de control de acceso [ACL]), active la casilla de
verificación Read (Leer) junto a Everyone (public access) (Todos [acceso público]) en la columna
Objects (Objetos).
12. Seleccione la casilla de verificación de I understand the effects of these changes on the specified
objects (Entiendo los efectos de estos cambios en los objetos especificados).
13. En la parte inferior de la página, elija Upload (Cargar).
Una vez que finalice el proceso de carga, podrá acceder al elemento con su URL. Por ejemplo:
Reemplace <bucket name>, <AWS Region> y <object name> con los valores apropiados
basados en su bucket y contenido. Si utilizó el simple sitio web hola mundo en este procedimiento,
reemplace <object name> por index.html.
Note
Si creó el bucket en la región EE. UU. Este (Norte de Virginia) (us-east-1), omita la parte
<AWS Region> (Región AWS) de la URL. Por ejemplo:
Utilice la URL de Amazon S3 para comprobar que su contenido sea accesible al público, pero
recuerde que esta no es la URL que utilizará para acceder a su contenido con CloudFront.
Para los demás ajustes en Origin Settings (Configuración de origen), acepte los valores
predeterminados.
4. Para los ajuste en Default Cache Behavior Settings (Configuración del comportamiento de caché
predeterminado), acepte los valores predeterminados.
Para obtener más información acerca de las opciones de comportamiento de la caché, consulte
Configuración del comportamiento de la caché (p. 52).
5. Para los ajustes en Distribution Settings (Configuración de distribución), acepte los valores
predeterminados.
Para obtener más información acerca de las opciones de distribución, consulte Ajustes de la
distribución (p. 61).
6. En la parte inferior de la página, elija Create Distribution (Crear distribución).
7. Después de que CloudFront crea la distribución, el valor de la columna Status (Estado) de la
distribución cambia de In Progress (En curso) a Deployed (Implementada). Esto normalmente dura
unos minutos.
21
Amazon CloudFront Guía para desarrolladores
Paso 3: Acceda a su contenido a través de CloudFront
Registre el nombre de dominio que CloudFront asigna a su distribución, que aparece en la lista de
distribuciones. (También aparece en la pestaña General de la distribución seleccionada). Tendrá un
aspecto similar al siguiente: d111111abcdef8.cloudfront.net.
https://d111111abcdef8.cloudfront.net/index.html
Si siguió los pasos anteriores y utilizó la simple página web hola mundo, debería ver el contenido de la
página web:
Cuando carga contenido nuevo en el bucket de S3, puede acceder al contenido a través de
CloudFront combinando el nombre de dominio de distribución de CloudFront (por ejemplo,
d111111abcdef8.cloudfront.net) con la ruta al objeto en el bucket de S3. Por ejemplo, si carga un
nuevo archivo denominado new-page.html en la raíz de su bucket de S3, puede acceder a esta página a
través de CloudFront en una URL similar a la siguiente:
https://d111111abcdef8.cloudfront.net/new-page.html
Ha configurado CloudFront correctamente para que entregue el contenido de su sitio web almacenado
en Amazon S3. Si desea ir un paso más allá, puede configurar su distribución de CloudFront
para que use un nombre de dominio personalizado (por ejemplo, www.example.com en lugar
de d111111abcdef8.cloudfront.net). Para obtener más información, consulte Uso de URL
personalizadas (p. 80).
22
Amazon CloudFront Guía para desarrolladores
Requisitos previos
El complemento AWS for WordPress crea una distribución de CloudFront que está optimizada para sitios
web de WordPress, utilizando múltiples comportamientos de caché para gestionar los distintos tipos de
contenido en su sitio web. Las características de CloudFront del complemento funcionan con sitios web
alojados en WordPress.com y con sitios web de WordPress autoalojados en Amazon Lightsail, Amazon
EC2 u otra plataforma de alojamiento web.
También puede utilizar el complemento para configurar otros servicios de AWS como Amazon Polly y
Amazon Translate, y, a continuación, configurar CloudFront para acelerar el contenido generado por
esos servicios. Para obtener más información sobre el uso del complemento para configurar Amazon
Polly, consulte Complemento WordPress para Amazon Polly en la Guía para desarrolladores de Amazon
Polly. Para obtener más información sobre el uso de CloudFront para acelerar el contenido generado por
Amazon Polly, consulte (Opcional) Crear una distribución de CloudFront para el contenido de Amazon
Polly (p. 30).
Temas
• Requisitos previos (p. 23)
• Paso 1: Instalar el complemento (p. 25)
• Paso 2: Configurar y usar CloudFront con el complemento (p. 26)
• (Opcional) Desactivar la aceleración del sitio (p. 28)
• (Opcional) Quitar la aceleración del sitio y eliminar la distribución de CloudFront (p. 29)
• (Opcional) Desactivar y eliminar el complemento (p. 29)
• (Opcional) Crear una distribución de CloudFront para el contenido de Amazon Polly (p. 30)
• Solución de problemas (p. 31)
Requisitos previos
Para utilizar el complemento AWS for WordPress, necesita una cuenta de AWS, un usuario de AWS
Identity and Access Management (IAM) y un sitio web de WordPress.
Temas
• Creación de una cuenta de AWS (p. 23)
• Creación de un usuario de IAM (p. 23)
• Creación de un sitio web de WordPress (p. 25)
1. Abra https://portal.aws.amazon.com/billing/signup.
2. Siga las instrucciones en línea.
Parte del procedimiento de inscripción consiste en recibir una llamada telefónica e indicar un código de
verificación en el teclado del teléfono.
23
Amazon CloudFront Guía para desarrolladores
Requisitos previos
Note
El siguiente procedimiento incluye los pasos para asociar una política de IAM al usuario de IAM. Una
política de IAM es un documento que define los permisos que se aplican al usuario.
Esta es la única vez que puede guardar la clave de acceso secreta del usuario, así que
asegúrese de guardarla ahora.
24
Amazon CloudFront Guía para desarrolladores
Paso 1: Instalar el complemento
• Utilizar Amazon Polly para convertir texto en voz y mostrar las voces de Amazon Polly disponibles.
• Utilizar Amazon Translate para traducir texto de un idioma a otro.
• Determinar si existe un determinado bucket de Amazon S3.
• Crear buckets de Amazon S3 cuyos nombres empiecen por audio_for_wordpress o audio-for-
wordpress, y crear, eliminar y enumerar objetos en esos buckets.
Important
Para evitar que usuarios no autorizados obtengan estos permisos, proteja las credenciales
de usuario de IAM. Trate la clave de acceso secreta como una contraseña; guárdela en un
lugar seguro y no la comparta con nadie. Al igual que una contraseña, rote la clave de acceso
periódicamente. Si la clave de acceso secreta se filtró accidentalmente, elimínela de inmediato. A
continuación, puede crear una nueva clave de acceso para usarla con el complemento AWS for
WordPress.
Si no tiene un sitio web de WordPress, puede crear uno usando WordPress.com. Para utilizar el
complemento AWS for WordPress, necesita un plan de WordPress.com Business o eCommerce.
También puede instalar el software de WordPress en su propio servidor web, utilizando Amazon Lightsail,
Amazon EC2 u otra plataforma de alojamiento web. El alojamiento de su propio sitio web de WordPress no
se limita al uso de WordPress.com y requiere la capacidad de configurar y administrar un servidor web, un
balanceador de carga, registros DNS y certificados de servidor web.
Independientemente de cómo configure su sitio web de WordPress, necesita lo siguiente para poder utilizar
el complemento AWS for WordPress:
• Su sitio web debe tener su propio nombre de dominio. Un nombre de dominio, también conocido como
dirección web o URL (localizador uniforme de recursos), es la dirección que los visitantes utilizan para ir
a su sitio web. Por ejemplo, el nombre de dominio de Amazon es amazon.com. En este tema, usamos
example.com como nombre de dominio de ejemplo genérico, pero necesita un nombre de dominio
personalizado para su sitio web.
• Su sitio web debe funcionar con HTTPS. Esta es una práctica recomendada de seguridad y el
complemento supone que su sitio web funciona con HTTPS. Para comprobarlo, vaya a la dirección de
su sitio web usando HTTPS (por ejemplo, https: //example.com) y asegúrese de que su sitio web se
muestra correctamente.
Para obtener un tutorial paso a paso que explica cómo crear un sitio web de WordPress en AWS mediante
Amazon Lightsail, consulte Aceleración de WordPress con CloudFront mediante el complemento AWS for
WordPress en el blog de entrega de contenido y redes de AWS.
Cuando su sitio web tenga un nombre de dominio y funcione con HTTPS, vaya a la siguiente sección.
1. Inicie sesión en el panel de administración de su sitio web de WordPress, también conocido como WP
Admin.
25
Amazon CloudFront Guía para desarrolladores
Paso 2: Configurar y usar CloudFront con el complemento
Sin la aceleración del sitio del complemento, todo el tráfico de los espectadores de su sitio web
va al servidor que aloja su sitio web de WordPress. Después de completar los pasos del siguiente
procedimiento, puede habilitar la aceleración del sitio del complemento, que ofrece a los espectadores dos
opciones para visitar su sitio web:
• Cuando los lectores utilizan el nombre de dominio de su sitio web, como ejemplo.com, todo el tráfico
pasa por CloudFront, excepto la página de índice del sitio web y algunos archivos de imagen pequeños.
• Cuando los lectores utilizan el nombre de dominio alternativo de su sitio web, como www.ejemplo.com,
todo el tráfico pasa por CloudFront.
Al usar cualquiera de los dominios, los espectadores de su sitio web obtienen una latencia más baja y una
experiencia de visualización más rápida y fiable. Le recomendamos que indique a los espectadores que
utilicen el nombre de dominio alternativo de su sitio web. Los siguientes diagramas muestran el tráfico de
los espectadores con y sin la aceleración del sitio del complemento.
26
Amazon CloudFront Guía para desarrolladores
Paso 2: Configurar y usar CloudFront con el complemento
Para configurar y usar CloudFront con el complemento (habilitar la aceleración del sitio)
1. Inicie sesión en el panel de administración de su sitio web de WordPress, también conocido como WP
Admin.
2. En el panel de navegación izquierdo, seleccione AWS.
3. Pegue o escriba el ID de clave de acceso y la clave de acceso secreta que guardó
anteriormente (p. 23), y, a continuación, elija Save Changes (Guardar cambios).
Note
Si aloja WordPress en Amazon EC2, puede omitir este paso y utilizar un rol de IAM en lugar
de un usuario de IAM. En ese caso, deje estos dos campos en blanco. Para obtener más
información acerca de los roles de IAM, consulte Roles de IAM para Amazon EC2 en la Guía
del usuario de Amazon EC2.
Note
Independientemente del valor que elija en AWS Region (Región de AWS), la característica
de CloudFront del complemento crea todos los recursos en la región EE. UU. Este (Norte de
Virginia).
4. En el panel de navegación, elija CloudFront.
5. En la página CloudFront Setup (Configuración de CloudFront), haga lo siguiente:
27
Amazon CloudFront Guía para desarrolladores
(Opcional) Desactivar la aceleración del sitio
Después de agregar el registro DNS, vuelva a la página de configuración y elija Check status of SSL
certificate (Comprobar estado del certificado SSL).
Al completar este paso, CloudFront configura una distribución que está optimizada para WordPress.
Este proceso puede tardar algún tiempo en implementarse globalmente. La página de configuración
se actualiza automáticamente cada diez segundos para mantenerlo actualizado mientras la
implementación está en curso.
7. Una vez finalizada la implementación, cree un registro de DNS para apuntar al nombre de dominio
alternativo (por ejemplo, www.ejemplo.com) a la nueva distribución de CloudFront. Para ello, agregue
el registro DNS que el complemento muestra en la página de configuración. El proceso para agregar
este registro de validación varía en función del proveedor de servicios DNS. Si utiliza servicios
de alojamiento de WordPress.com, consulte su documentación para obtener información sobre
cómo actualizar registros DNS con una entrada personalizada. Si utiliza Amazon Route 53 para
DNS, consulte Creación de registros mediante la consola de Amazon Route 53 en la Guía para
desarrolladores de Amazon Route 53.
Después de agregar el registro de DNS, vuelva a la página de configuración y elija Check status of
CloudFront DNS record (Comprobar estado del registro DNS de CloudFront).
8. Elija Activate Site Acceleration (Activar aceleración del sitio) y, a continuación, elija Save Changes
(Guardar cambios).
Al activar la aceleración del sitio, el complemento AWS for WordPress configura su sitio web para que
sirva los recursos del sitio web (por ejemplo, archivos CSS y JavaScript, e imágenes) de su distribución
de CloudFront. Puede verificar que el complemento acelera el sitio web para los espectadores viendo el
sitio web desde una ventana de navegación privada o utilizando un navegador diferente fuera del modo
de administración de WordPress. Asegúrese de navegar a su sitio web utilizando el nombre de dominio
alternativo, por ejemplo, www.example.com.
Antes de desactivar la aceleración del sitio, edite el registro DNS del nombre de dominio
alternativo (como www.example.com) para que apunte al dominio del sitio web (como
example.com). Si no hace esto primero, es posible que experimente tiempo de inactividad o
problemas con el sitio web. Después de editar el registro DNS, espere un tiempo superior al valor
de tiempo de vida (TTL) del registro antes de desactivar la aceleración del sitio.
Si utiliza servicios de alojamiento de WordPress.com, consulte su documentación para obtener
información sobre cómo editar registros DNS. Si utiliza Amazon Route 53 para DNS, consulte
Edición de registros en la Guía para desarrolladores de Amazon Route 53.
1. Inicie sesión en su sitio web de WordPress y, a continuación, elija WP Admin (Admin. de WP).
2. En el panel de navegación, elija AWS.
3. En el panel de navegación, elija CloudFront.
28
Amazon CloudFront Guía para desarrolladores
(Opcional) Quitar la aceleración del sitio
y eliminar la distribución de CloudFront
4. Desactive la casilla de verificación Activate Site Acceleration (Activar aceleración del sitio) y, a
continuación, elija Save Changes (Guardar cambios).
Antes de eliminar la distribución de CloudFront, edite el registro DNS del nombre de dominio
alternativo (como www.ejemplo.com) para que apunte al dominio del sitio web (como
ejemplo.com). Si no hace esto primero, es posible que experimente tiempo de inactividad o
problemas con el sitio web. Después de editar el registro DNS, espere un tiempo superior al valor
de tiempo de vida (TTL) del registro antes de eliminar la distribución de CloudFront.
Si utiliza servicios de alojamiento de WordPress.com, consulte su documentación para obtener
información sobre cómo editar registros DNS. Si utiliza Amazon Route 53 para DNS, consulte
Edición de registros en la Guía para desarrolladores de Amazon Route 53.
1. Inicie sesión en su sitio web de WordPress y, a continuación, elija WP Admin (Admin. de WP).
2. En el panel de navegación, elija AWS.
3. En el panel de navegación, elija CloudFront.
4. Elija Remove Site Acceleration (Eliminar la aceleración del sitio) y, a continuación, elija OK (Aceptar).
Cuando complete estos pasos, el complemento AWS for WordPress eliminará su distribución de
CloudFront. Esto puede tardar varios minutos en completarse. Una vez finalizado el proceso, puede abrir
si lo desea la consola de administración de AWS para comprobar que se han eliminado los recursos de
CloudFront, AWS Certificate Manager y AWS CloudFormation creados por el complemento.
Antes de desactivar y eliminar el complemento, edite el registro DNS del nombre de dominio
alternativo (como www.example.com) para que apunte al dominio del sitio web (como
example.com). Si no hace esto primero, es posible que experimente tiempo de inactividad o
problemas con el sitio web. Después de editar el registro DNS, espere un tiempo superior al valor
de tiempo de vida (TTL) del registro antes de desactivar y eliminar el complemento.
Si utiliza servicios de alojamiento de WordPress.com, consulte su documentación para obtener
información sobre cómo editar registros DNS. Si utiliza Amazon Route 53 para DNS, consulte
Edición de registros en la Guía para desarrolladores de Amazon Route 53.
29
Amazon CloudFront Guía para desarrolladores
(Opcional) Crear una distribución de
CloudFront para el contenido de Amazon Polly
Note
Si desactiva y elimina el complemento sin eliminar primero la aceleración del sitio, el complemento
no elimina los recursos de CloudFront, AWS Certificate Manager y AWS CloudFormation
que creó. Estos recursos permanecen en su cuenta de AWS y se le cobrará por cualquier
uso que supere la capa gratuita de AWS. Para eliminar estos recursos antes de eliminar el
complemento, consulte (Opcional) Quitar la aceleración del sitio y eliminar la distribución de
CloudFront (p. 29).
1. Inicie sesión en su sitio web de WordPress y, a continuación, elija WP Admin (Admin. de WP).
2. Elija Plugins (Complementos).
3. Busque el complemento AWS for WordPress y, a continuación, elija Deactivate (Desactivar).
1. Inicie sesión en el panel de administración de su sitio web de WordPress, también conocido como WP
Admin.
2. En el panel de navegación izquierdo, seleccione AWS.
3. En la sección Cloud Storage (Almacenamiento en la nube), anote el nombre de su bucket de S3.
Comenzará con audio-for-wordpress o audio_for_wordpress. Necesita este nombre de bucket para
completar los siguientes pasos.
4. Inicie sesión en la consola de administración de AWS y abra la consola de CloudFront en https://
console.aws.amazon.com/cloudfront/
5. Seleccione Create Distribution (Crear distribución).
6. Elija Get Started (Introducción) para una distribución Web.
7. En Origin Domain Name (Nombre de dominio de origen), elija el bucket de Amazon S3 cuyo nombre
anotó en un paso anterior.
8. Desplácese hasta la parte inferior de la página y, a continuación, elija Create Distribution (Crear
distribución).
9. Elija la distribución que creó en el paso anterior y, a continuación, tome nota del Domain Name
(Nombre de dominio) de la distribución. Necesita este nombre de dominio para completar los
siguientes pasos.
10. Inicie sesión en el panel de administración de su sitio web de WordPress, también conocido como WP
Admin.
11. En el panel de navegación izquierdo, seleccione AWS.
12. En Amazon CloudFront (CDN) domain name (Nombre de dominio de Amazon CloudFront [CDN]),
escriba el nombre de dominio que anotó en un paso anterior.
13. Elija Guardar cambios.
30
Amazon CloudFront Guía para desarrolladores
Solución de problemas
Solución de problemas
Si tiene problemas con el complemento AWS for WordPress, los siguientes temas pueden ayudarle a
resolverlos. Para informar de errores o para obtener ayuda con otros problemas que no están cubiertos por
estos temas, abra un problema en GitHub.
Temas
• No puedo conectarme a AWS (p. 31)
• El usuario no está autorizado (p. 31)
• La página de configuración de CloudFront está en blanco (p. 31)
• Error DescribeCertificate (p. 31)
• Error de AWS CloudFormation (p. 32)
• La implementación de distribución de CloudFront parece bloqueada (p. 32)
• El dominio alternativo no funciona (p. 32)
• No se pueden encontrar recursos de AWS (p. 32)
• Asegúrese de que ha introducido la clave de acceso de AWS y la clave secreta de AWS en la página de
General configuration (Configuración general) del complemento. Para obtener más información, consulte
Paso 2: Configurar y usar CloudFront con el complemento (p. 26).
• Asegúrese de que el usuario de IAM que creó para el complemento tenga los permisos correctos. Para
obtener más información, consulte Creación de un usuario de IAM (p. 23).
• Error in Setup
• AccessDenied
• User: <ARN de usuario> is not authorized to perform <acción>
Si ve uno de estos errores, asegúrese de que el usuario de IAM que creó para el complemento tenga los
permisos correctos. Para obtener más información, consulte Creación de un usuario de IAM (p. 23).
Error DescribeCertificate
El complemento podría mostrar los siguientes mensajes de error:
• Error in Setup
31
Amazon CloudFront Guía para desarrolladores
Solución de problemas
• Found 1 error while validating the input provided for the DescribeCertificate operation: [CertificateArn]
expected string length to be >= 20, but found string length of 0
Si ve uno de estos errores, elija Restart Setup (Reiniciar configuración) y, a continuación, asegúrese de
que introduce un nombre de dominio, no una dirección IP, en Origin Domain Name (Nombre de dominio de
origen) y CloudFront Alternate Domain Name (Nombre de dominio alternativo CloudFront). Para obtener
más información, consulte Paso 2: Configurar y usar CloudFront con el complemento (p. 26).
Si ve uno de estos errores, elija Restart Setup (Reiniciar configuración) para intentarlo de nuevo. Si está
familiarizado con el diagnóstico de errores mediante la consola de AWS CloudFormation, puede abrir la
consola para ver los problemas que han surgido.
32
Amazon CloudFront Guía para desarrolladores
Introducción a un sitio web seguro estático
consola de administración de AWS o mostrándolos mediante una API, asegúrese de utilizar la región
EE. UU. Este (Norte de Virginia) (us-east-1).
• Utiliza el almacenamiento duradero de Amazon Simple Storage Service (Amazon S3): esta solución crea
un bucket de Amazon S3 para alojar el contenido de su sitio web estático. Para actualizar el sitio web,
solo tiene que cargar los archivos nuevos en el bucket de S3.
• Está acelerado por la red de entrega de contenido de Amazon CloudFront: esta solución crea una
distribución de CloudFront para servir su sitio web a los lectores con baja latencia. La distribución está
configurada con una identidad de acceso de origen (p. 223) para asegurarse de que solo se pueda
acceder al sitio web mediante CloudFront, no directamente desde S3.
• Está protegido por HTTPS y encabezados de seguridad adicionales: esta solución crea un certificado
SSL/TLS en AWS Certificate Manager (ACM) y lo asocia a la distribución de CloudFront. Este certificado
permite que la distribución sirva el sitio web de su dominio de forma segura con HTTPS.
Esta solución también usa Lambda @Edge (p. 337) para agregar encabezados de seguridad a cada
respuesta del servidor. Los encabezados de seguridad son un grupo de encabezados en la respuesta
del servidor web que indican a los navegadores web que tomen precauciones de seguridad adicionales.
Para obtener más información, consulte esta entrada de blog: Agregar encabezados de seguridad HTTP
mediante Lambda @Edge y Amazon CloudFront.
• Se configura e implementa con AWS CloudFormation: esta solución utiliza una plantilla de AWS
CloudFormation para configurar todos los componentes, de modo que pueda centrarse más en el
contenido de su sitio web y menos en la configuración de componentes.
Esta solución es de código abierto en GitHub. Para ver el código, enviar una solicitud de extracción o abrir
una incidencia, vaya a https://github.com/aws-samples/amazon-cloudfront-secure-static-site.
Temas
• Información general de la solución (p. 33)
• Implementación de la solución (p. 34)
33
Amazon CloudFront Guía para desarrolladores
Implementación de la solución
Implementación de la solución
Para implementar esta solución de sitio web estático seguro, puede elegir una de las siguientes opciones:
• Utilice la consola de AWS CloudFormation para implementar la solución con contenido predeterminado
y, a continuación, cargue el contenido del sitio web en Amazon S3.
• Clone la solución en su equipo para agregar contenido de su sitio web. A continuación, implemente la
solución con la interfaz de línea de comandos de AWS (AWS CLI).
Temas
• Requisitos previos (p. 34)
• Abra la consola de AWS CloudFormation. (p. 35)
• Clonación local de la solución (p. 36)
• Búsqueda de registros de acceso (p. 37)
Requisitos previos
Para utilizar esta solución, debe cumplir los siguientes requisitos previos:
34
Amazon CloudFront Guía para desarrolladores
Implementación de la solución
• Un nombre de dominio registrado, como example.com, que apunte a una zona alojada por Amazon
Route 53. La zona alojada debe estar en la misma cuenta de AWS en la que implementa esta solución.
Si no tiene un nombre de dominio registrado, puede registrarlo con Route 53. Si tiene un nombre de
dominio registrado pero no apunta a una zona alojada por Route 53, configure Route 53 como su
servicio de DNS.
• Permisos de AWS Identity and Access Management (IAM) para lanzar plantillas de CloudFormation que
crean roles de IAM y permisos para crear todos los recursos de AWS en la solución.
Usted es responsable de los costos generados durante el uso de esta solución. Para obtener más
información sobre los costos, consulte las páginas de precios de cada servicio de AWS.
1. Elija Launch on AWS para abrir esta solución en la consola de AWS CloudFormation. Si es necesario,
inicie sesión en su cuenta de AWS.
2. Se abre el asistente Create stack (Crear pila) se abre en la consola de AWS CloudFormation, con
campos rellenados previamente que especifican la plantilla de CloudFormation de esta solución.
• SubDomain (SubDominio): escriba el subdominio que se va a utilizar para su sitio web. Por
ejemplo, si el subdominio es www, el sitio web está disponible en www.example.com. (Reemplace
example.com por su nombre de dominio, como se explica en el siguiente punto).
• DomainName (NombreDominio): escriba su nombre de dominio, como example.com. Este dominio
debe apuntar a una zona alojada por Route 53.
Cuando el estado sea CREATE_COMPLETE, vaya a https://www.example.com para ver su sitio web
(reemplace www.example.com por el subdominio y el nombre de dominio especificados en el paso 3).
Debería ver el contenido predeterminado del sitio web:
35
Amazon CloudFront Guía para desarrolladores
Implementación de la solución
Para reemplazar el contenido predeterminado del sitio web por el suyo propio
Si ha visto su sitio web con el contenido predeterminado de esta solución, es probable que
parte del contenido predeterminado se almacene en caché en una ubicación de borde de
CloudFront. Para asegurarse de que los lectores vean el contenido actualizado del sitio web,
invalide los archivos para quitar las copias almacenadas en caché de las ubicaciones de
borde de CloudFront. Para obtener más información, consulte Invalidar archivos (p. 121).
Para agregar contenido de su sitio web antes de implementar esta solución, debe empaquetar localmente
los artefactos de la solución, lo que requiere Node.js y npm. Para obtener más información, consulte
https://www.npmjs.com/get-npm.
make package-function
3. Copie el contenido de su sitio web en la carpeta www, con lo que se sobrescribe el contenido
predeterminado del sitio web.
4. Ejecute el siguiente comando de AWS CLI para crear un bucket de Amazon S3 para almacenar los
artefactos de la solución. Reemplace example-bucket-for-artifacts por el nombre de su
propio bucket.
5. Ejecute el siguiente comando de AWS CLI para empaquetar los artefactos de la solución como una
plantilla de AWS CloudFormation. Reemplace example-bucket-for-artifacts por el nombre del
bucket que ha creado en el paso anterior.
6. Ejecute el siguiente comando para implementar la solución con AWS CloudFormation; para ello,
reemplace los siguientes valores:
36
Amazon CloudFront Guía para desarrolladores
Implementación de la solución
7. Espere a que se termine de crear la pila de AWS CloudFormation. La pila crea algunas pilas
anidadas y puede tardar varios minutos en terminar. Cuando termine, el estado cambia a
CREATE_COMPLETE.
37
Amazon CloudFront Guía para desarrolladores
Información general de distribuciones
Temas
• Información general de distribuciones (p. 38)
• Creación, actualización y eliminación de distribuciones (p. 41)
• Uso de Amazon S3 Origins, canales MediaPackage y orígenes personalizados para distribuciones
web (p. 74)
• Uso de URL personalizadas para archivos añadiendo nombres de dominio alternativos
(CNAME) (p. 80)
• Uso de WebSocket con distribuciones de CloudFront (p. 90)
• Su origen de contenido, es decir, el bucket de Amazon S3, el canal MediaPackage o el servidor HTTP
desde el que CloudFront obtiene los archivos para distribuir. Puede especificar cualquier combinación de
hasta 25 buckets de Amazon S3, canales o servidores HTTP como sus orígenes.
• Acceso: si desea que los archivos estén disponibles para todos los usuarios o si prefiere restringir el
acceso a algunos usuarios.
• Seguridad: si desea que CloudFront exija a los usuarios utilizar HTTPS para obtener acceso a su
contenido.
• Clave de caché: qué valores, si los hay, desea incluir en la clave de caché. La clave de caché solo
identifica cada archivo en la caché para una distribución determinada.
• Configuración de solicitud de origen: si se desea que CloudFront incluya encabezados HTTP, cookies o
cadenas de consulta en las solicitudes que envía a su origen.
• Restricciones geográficas: si desea que CloudFront evite que los usuarios de ciertos países accedan a
su contenido.
• Registros de acceso: si desea que CloudFront cree registros de acceso que muestren actividad del
lector.
Para consultar el máximo actual de la cantidad de distribuciones que puede crear en cada cuenta de AWS,
consulte Cuotas generales de distribuciones (p. 519). No hay un número máximo de archivos que se
pueden entregar por cada distribución.
Puede utilizar distribuciones para distribuir el siguiente contenido a través de HTTP o HTTPS:
• Contenido estático y dinámico de descarga, por ejemplo, archivos .html, .css, .js y de imagen, a través
de HTTP o HTTPS.
38
Amazon CloudFront Guía para desarrolladores
Acciones que puede usar con distribuciones
• Video bajo demanda en distintos formatos, como Apple HTTP Live Streaming (HLS) y Microsoft Smooth
Streaming. Para obtener más información, consulte Distribución de vídeo bajo demanda (VOD) con
CloudFront (p. 329).
• Un evento en directo, como una reunión, conferencia o concierto, en tiempo real. Para streaming en
directo, puede crear la distribución automáticamente con una pila de AWS CloudFormation. Para obtener
más información, consulte Distribución de streaming de vídeo en directo con CloudFront y AWS Media
Services (p. 331).
Para obtener más información acerca de cómo crear una distribución, consulte Pasos para crear una
distribución (Información general) (p. 41).
DistributionConfig
CallerReference S S
39
Amazon CloudFront Guía para desarrolladores
Campos obligatorios para crear y actualizar distribuciones
Alias - S
DefaultRootObject - S
Origins S S
DefaultCacheBehavior S S
CacheBehaviors - S
CustomErrorResponses - S
Comentario S S
Registro - S
PriceClass - S
Habilitado S S
ViewerCertificate - S
Restricciones - S
WebACLId - S
HttpVersion - S
IsIPV6Enabled - -
CacheBehavior
PathPattern S S
TargetOriginId S S
ForwardedValues S S
TrustedSigners S S
ViewerProtocolPolicy S S
MinTTL S S
AllowedMethods - S
SmoothStreaming - S
DefaultTTL - S
MaxTTL S S
Compress - S
LambdaFunctionAssociations - S
40
Amazon CloudFront Guía para desarrolladores
Creación, actualización y eliminación de distribuciones
FieldLevelEncryptionId - S
Temas
• Pasos para crear una distribución (Información general) (p. 41)
• Creación de una distribución (p. 42)
• Valores que deben especificarse al crear o actualizar una distribución (p. 43)
• Valores que CloudFront muestra en la consola (p. 69)
• Prueba de una distribución (p. 70)
• Actualización de una distribución (p. 71)
• Etiquetado de distribuciones de Amazon CloudFront (p. 72)
• Eliminar una distribución (p. 73)
1. Cree uno o más buckets de Amazon S3 o configure servidores HTTP como servidores de origen. Un
origen es la ubicación en la que se almacena la versión original del contenido. Cuando CloudFront
recibe una solicitud de archivos, se dirige al origen para obtener los archivos que distribuye en
ubicaciones de borde. Puede utilizar cualquier combinación de buckets de Amazon S3 y servidores
HTTP en sus servidores de origen.
Si utiliza Amazon S3, tenga en cuenta que el nombre de su bucket debe estar todo en minúscula y no
puede contener espacios.
Si utiliza un servidor de Amazon EC2 u otro origen personalizado, revise Uso de Amazon EC2 u otros
orígenes personalizados (p. 76).
Para obtener información sobre el número máximo actual de orígenes que puede crear para una
distribución o para solicitar una cuota (antes denominada límite) más alta, consulte Cuotas generales
de distribuciones (p. 519).
2. Cargue el contenido en sus servidores de origen. Si no desea restringir el acceso al contenido
mediante URL firmadas de CloudFront, permita que los objetos sean legibles públicamente.
Important
Usted es responsable de garantizar la seguridad de su servidor de origen. Debe asegurarse
de que CloudFront tenga permiso para obtener acceso al servidor y que la configuración de
seguridad sea la adecuada para proteger su contenido.
41
Amazon CloudFront Guía para desarrolladores
Creación de una distribución
• Para obtener más información acerca de cómo crear una distribución en la consola de CloudFront,
consulte Creación de una distribución (p. 42).
• Para obtener información sobre cómo crear una distribución mediante la API de CloudFront, vaya a
CreateDistribution en la Referencia de la API de Amazon CloudFront.
4. Opcional: si creó la distribución por medio de la consola de CloudFront cree más comportamientos de
la caché u orígenes para la distribución. Para obtener más información, consulte Para actualizar una
distribución de CloudFront (p. 71).
5. Pruebe su distribución. Para obtener más información, consulte Prueba de una distribución (p. 70).
6. Desarrolle el sitio web o aplicación para obtener acceso al contenido utilizando el nombre de dominio
que CloudFront devolvió después de creada la distribución en el paso 3. Por ejemplo, si CloudFront
devuelve d111111abcdef8.cloudfront.net como nombre de dominio para su distribución, la dirección
URL del archivo image.jpg en un bucket de Amazon S3 o en el directorio raíz de un servidor HTTP
será http://d111111abcdef8.cloudfront.net/image.jpg.
Si especificó uno o varios nombres de dominio alternativo (CNAME) al crear la distribución, puede
utilizar su propio nombre de dominio. En ese caso, la URL para image.jpg sería http://
www.example.com/image.jpg.
• Si desea utilizar URL firmadas para restringir el acceso a su contenido, consulte Distribución de
contenido privado con URL firmadas y cookies firmadas (p. 164).
• Si desea ofrecer contenido comprimido, consulte Ofrecer archivos comprimidos (p. 128).
• Para obtener información sobre el comportamiento de respuesta y solicitud de CloudFront
para Amazon S3 y orígenes personalizados, consulte Comportamiento de solicitudes y
respuestas (p. 298).
Si desea crear o actualizar una distribución mediante la API de CloudFront, consulte Crear distribución o
Actualizar distribución en la Referencia de la API de Amazon CloudFront.
Important
Al actualizar su distribución, tenga en cuenta que hay una serie de campos adicionales necesarios
que no se necesitan para crear una distribución. Para asegurarse de que todos los campos
obligatorios se incluyen al actualizar su distribución mediante la API de CloudFront, siga los pasos
que se describen en la Referencia de la API de Amazon CloudFront.
Para ver el número máximo actual de distribuciones que puede crear para cada cuenta de AWS
o para solicitar una cuota (antes denominada límite) más alta, consulte Cuotas generales de
distribuciones (p. 519).
42
Amazon CloudFront Guía para desarrolladores
Valores que especifica
4. Especifique la configuración de la distribución. Para obtener más información, consulte Valores que
deben especificarse al crear o actualizar una distribución (p. 43).
5. Guarde los cambios.
6. Después de que CloudFront cree una distribución, el valor de la columna Status (Estado) de la
distribución cambia de InProgress (En curso) a Deployed (Implementada). Si decidió habilitar
la distribución, estará lista para procesar solicitudes cuando el estado cambie a Deployed
(Implementado).
Puede utilizar un nombre de dominio alternativo, en lugar del nombre asignado por
CloudFront, siguiendo los pasos de Uso de URL personalizadas para archivos añadiendo
nombres de dominio alternativos (CNAME) (p. 80).
7. Una vez implementada la distribución, confirme que puede obtener acceso al contenido con la
nueva URL o CNAME de CloudFront. Para obtener más información, consulte Prueba de una
distribución (p. 70).
Para actualizar una distribución (por ejemplo, para añadir o cambiar comportamientos de la caché),
consulte Actualización de una distribución (p. 71).
Para obtener más información acerca de cómo crear o actualizar una distribución utilizando la consola de
CloudFront, consulte Creación de una distribución (p. 42) o Actualización de una distribución (p. 71).
Los siguientes valores se aplican solo a orígenes de Amazon S3 (aquellos que no utilizan el punto de
enlace de sitio web estático de S3):
43
Amazon CloudFront Guía para desarrolladores
Valores que especifica
• Conceder permisos de lectura en un bucket (p. 50) (Solo se aplica cuando elige Yes (Sí) para Restrict
Bucket Access (Restringir acceso al bucket))
Los siguientes valores se aplican únicamente a orígenes personalizados, como instancias de Amazon
EC2, balanceadores de carga de Elastic Load Balancing, orígenes de MediaPackage, contenedores de
MediaStore o su propio servidor web:
44
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Para obtener información sobre el número máximo actual de orígenes que puede crear para una
distribución o para solicitar una cuota (antes denominada límite) más alta, consulte Cuotas generales de
distribuciones (p. 519).
45
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Si desea eliminar un origen, primero debe editar o eliminar los comportamientos de la caché que están
asociados con dicho origen.
Important
Si elimina un origen, confirme que los archivos que se han servido anteriormente a ese origen
estén disponibles en otro origen y que los comportamientos de la caché ya estén direccionando
las solicitudes para dichos archivos al nuevo origen.
Al crear o actualizar una distribución deberá especificar los siguientes valores para cada origen.
Elija el nombre de dominio en el campo Origin Domain Name (Nombre de dominio de origen) o escriba el
nombre. El nombre de dominio no distingue entre mayúsculas y minúsculas.
• Si el bucket está configurado como sitio web, escriba el punto de enlace de alojamiento de sitios
web estáticos de Amazon S3 del bucket. No seleccione el nombre del bucket en la lista del campo
Origin Domain Name (Nombre de dominio de origen). Este punto de enlace de hosting del sitio web
aparecerá en la consola de Amazon S3 en la página Properties (Propiedades), en Static Website Hosting
(Alojamiento de sitio web estático). Para obtener más información, consulte Uso de buckets de Amazon
S3 configurados como puntos de enlace de sitio web para su origen (p. 76).
• Si ha configurado Amazon S3 Transfer Acceleration en su bucket, no especifique el punto de enlace s3-
accelerate para Origin Domain Name (Nombre de dominio de origen).
• Si utiliza un bucket de una cuenta de AWS distinta y el bucket no está configurado como un sitio web,
escriba el nombre en el siguiente formato:
bucket-name.s3.region.amazonaws.com
Si el bucket se encuentra en la región EE. UU. Estándar y desea que Amazon S3 direccione las
solicitudes a una instalación en el norte de Virginia, utilice el siguiente formato:
46
Amazon CloudFront Guía para desarrolladores
Valores que especifica
bucket-name.s3.us-east-1.amazonaws.com
• Los archivos deben ser legibles públicamente a no ser que proteja su contenido en Amazon S3 mediante
una identidad de acceso de origen de CloudFront. Para obtener más información, consulte Restricción
del acceso a contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 223).
Important
Si el origen es un bucket de Amazon S3, el nombre del bucket debe cumplir los requisitos de
nomenclatura de DNS. Para obtener más información, consulte Restricciones y limitaciones de los
buckets en la Guía para desarrolladores de Amazon Simple Storage Service.
Al cambiar el valor de Origin Domain Name (Nombre de dominio de origen) por un origen, CloudFront
inmediatamente comienza a replicar el cambio en las ubicaciones de borde de CloudFront. Hasta que
la configuración de la distribución se actualiza en una ubicación de borde determinada, CloudFront
continúa reenviando solicitudes al servidor HTTP o al bucket de Amazon S3 anterior. Tan pronto como la
configuración de la distribución se actualiza en esa ubicación de borde, CloudFront comienza a reenviar
solicitudes al nuevo servidor HTTP o bucket de Amazon S3.
Cambiar el origen no requiere que CloudFront vuelva a incluir las cachés de borde con objetos del
nuevo origen. Siempre que las solicitudes de los lectores en su aplicación no cambien, CloudFront sigue
ofreciendo objetos que ya estén en una caché de borde hasta que el TTL de cada objeto caduque o hasta
que los objetos poco solicitados sean desalojados.
Ruta de origen
Si desea que CloudFront solicite el contenido de un directorio del recurso de AWS o de un origen
personalizado, escriba la ruta del directorio comenzando por una barra inclinada (/). CloudFront agrega
la ruta del directorio al valor de Origin Domain Name (Nombre de dominio de origen), por ejemplo, cf-
origin.example.com/production/images. No añada una barra inclinada (/) al final de la ruta.
Por ejemplo, suponga que ha especificado los siguientes valores para su distribución:
• Origin Domain Name (Nombre de dominio de origen): un bucket de Amazon S3 llamado DOC-
EXAMPLE-BUCKET
• Origin Path (Ruta de origen): /production
• Alternate Domain Names (CNAMEs) (Nombres de dominio alternativos (CNAME)): example.com
ID de origen
Una cadena que distingue de forma exclusiva este origen o grupo de origen en esta distribución. Si
crea comportamientos de la caché además del que ya hay predeterminado, utilice la ID de origen que
especifique aquí para identificar el origen o el grupo de origen al que desea que CloudFront dirija una
solicitud cuando la solicitud coincida con el patrón de ruta de ese comportamiento de la caché.
• Orígenes que puede especificar: Uso de los grupos de origen de CloudFront (p. 77)
• Creación de grupos de origen: Creación de un grupo de origen (p. 265)
• Trabajar con comportamientos de la caché: Configuración del comportamiento de la caché (p. 52)
47
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Utilice esta configuración junto con Origin Connection Timeout (Tiempo de espera de conexión de origen)
para especificar cuánto tiempo debe esperar CloudFront antes de intentar conectarse al origen secundario
o devolver una respuesta de error al lector. De forma predeterminada, CloudFront espera hasta 30
segundos (3 intentos de 10 segundos cada uno) antes de intentar conectarse al origen secundario o
devolver una respuesta de error. Puede reducir este tiempo si especifica menos intentos, un tiempo de
espera de conexión más corto o ambas opciones.
Si se produce un error en el número especificado de intentos de conexión, CloudFront realiza una de las
acciones siguientes:
• Si el origen forma parte de un grupo de orígenes, CloudFront intenta conectarse al origen secundario. Si
se produce un error en el número especificado de intentos de conexión al origen secundario, CloudFront
devuelve una respuesta de error al lector.
• Si el origen no forma parte de un grupo de orígenes, CloudFront devuelve una respuesta de error al
lector.
Utilice esta configuración junto con Origin Connection Attempts (Intentos de conexión al origen) para
especificar cuánto tiempo debe esperar CloudFront antes de intentar conectarse al origen secundario o
antes de devolver una respuesta de error al lector. De forma predeterminada, CloudFront espera hasta
30 segundos (3 intentos de 10 segundos cada uno) antes de intentar conectarse al origen secundario o
devolver una respuesta de error. Puede reducir este tiempo si especifica menos intentos, un tiempo de
espera de conexión más corto o ambas opciones.
48
Amazon CloudFront Guía para desarrolladores
Valores que especifica
El nombre de un encabezado que desea que CloudFront agregue a las solicitudes que envía a su
origen.
Valor
Para ver la cantidad máxima actual de encabezados personalizados que puede reenviar al origen, la
longitud máxima de los nombres de encabezado personalizados sus valores, y la longitud máxima total de
todos los nombres y valores de encabezados, consulte Cuotas (p. 519).
Esto solo se aplica a los orígenes del bucket de Amazon S3 (aquellos que no utilizan el punto de
enlace del sitio web estático de S3).
Elija Yes (Sí) si desea requerir a los usuarios que accedan a los objetos de un bucket de Amazon S3
utilizando únicamente las URL de CloudFront, no las URL de Amazon S3. A continuación, especifique
valores adicionales.
Elija No si desea que los usuarios puedan acceder a los objetos mediante direcciones URL de CloudFront
o URL de Amazon S3.
Para obtener más información, consulte Restricción del acceso a contenido de Amazon S3 utilizando una
identidad de acceso de origen (p. 223).
Para obtener información acerca de cómo exigir a los usuarios a obtener acceso a los objetos de un
origen personalizado empleando solo URL de CloudFront, consulte Restricción del acceso a archivos en
orígenes personalizados (p. 165).
Esto solo se aplica a los orígenes del bucket de Amazon S3 (aquellos que no utilizan el punto de
enlace del sitio web estático de S3).
Si eligió Yes (Sí) en Restrict Bucket Access (Restringir acceso al bucket), elija entre crear una nueva
identidad de acceso de origen o usar una existente que esté asociada a su cuenta de AWS. Si ya tiene
una identidad de acceso de origen, le recomendamos que use esa para facilitar el mantenimiento. Para
obtener más información acerca de las identidades de acceso de origen, consulte Restricción del acceso a
contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 223).
Comentario
Note
Esto solo se aplica a los orígenes del bucket de Amazon S3 (aquellos que no utilizan el punto de
enlace del sitio web estático de S3).
Si elige Create a New Identity (Crear una nueva identidad) enOrigin Access Identity (Identidad de acceso
de origen), escriba un comentario que identifique la nueva identidad de acceso de origen. CloudFront
creará la identidad de acceso de origen al crear esta distribución.
49
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Sus identidades
Note
Esto solo se aplica a los orígenes del bucket de Amazon S3 (aquellos que no utilizan el punto de
enlace del sitio web estático de S3).
Si eligió Use an Existing Identity (Utilizar una identidad existente) en Origin Access Identity (Identidad de
acceso de origen), elija la identidad de acceso de origen que desea utilizar. No puede utilizar una identidad
de acceso de origen asociada a otra cuenta de AWS.
Esto solo se aplica a los orígenes del bucket de Amazon S3 (aquellos que no utilizan el punto de
enlace del sitio web estático de S3).
Si desea que CloudFront conceda automáticamente a la identidad de acceso de origen permisos de lectura
de objetos de su bucket de Amazon S3, elija Yes, Update Bucket Policy (Sí, actualizar política de bucket).
Important
Al elegir Yes, Update Bucket Policy (Sí, actualizar política de bucket), CloudFront actualiza la
política del bucket para conceder a la identidad de acceso de origen especificada permisos de
lectura de objetos de dicho bucket. Sin embargo, CloudFront no elimina los permisos existentes
de la política del bucket ni los permisos sobre objetos individuales. Si los usuarios tenían permisos
de acceso a los objetos en dicho bucket con URL de Amazon S3, los conservan aún después de
que CloudFront actualice la política del bucket. Para ver o cambiar la política actual del bucket
y los permisos actuales de los objetos en dicho bucket, utilice un método proporcionado por
Amazon S3. Para obtener más información, consulte Concesión de permiso a la OAI para leer los
archivos del bucket de Amazon S3 (p. 227).
Si desea actualizar los permisos de forma manual, por ejemplo, si desea actualizar las ACL en sus objetos
en lugar de la actualizar los permisos del bucket, elija No, I will Update Permissions (No, actualizaré los
permisos).
Elija el protocolo TLS/SSL que CloudFront puede utilizar como mínimo cuando establece una conexión
HTTPS con el origen. Los protocolos TLS inferiores son menos seguros, por lo que le recomendamos que
elija el protocolo TLS más reciente que admita el origen.
Si utiliza la API de CloudFront para establecer el protocolo TLS/SSL para que CloudFront lo utilice, no
podrá establecer un protocolo mínimo. En su lugar, debe especificar todos los protocolos TLS/SSL que
CloudFront puede utilizar con su origen. Para obtener más información, consulte OriginSslProtocols en la
Referencia de la API de Amazon CloudFront.
La política de protocolo que desea que CloudFront utilice cuando solicite objetos del servidor de origen.
50
Amazon CloudFront Guía para desarrolladores
Valores que especifica
• HTTP Only (Solo HTTP): CloudFront utiliza solo HTTP para acceder al origen.
Important
En el caso de solicitudes HTTPS de lectores que CloudFront reenvía a este origen, uno de los
nombres de dominio del certificado SSL en su servidor de origen debe coincidir con el nombre
de dominio que especifique en Origin Domain Name (Nombre de dominio de origen). En caso
contrario, CloudFront responde a las solicitudes del lector con un código de estado HTTP 502
(Gateway incorrecta) en lugar de devolver el objeto solicitado. Para obtener más información,
consulte Requisitos para la utilización de certificados SSL/TLS con CloudFront (p. 152).
El tiempo de espera de respuesta del origen, también conocido como tiempo de espera de lectura de
origen y tiempo de espera de solicitud de origen, se aplica a los dos valores siguientes:
• Tiempo (en segundos) que CloudFront espera una respuesta después de enviar una solicitud al origen.
• Tiempo (en segundos) que CloudFront espera después de recibir el paquete de una respuesta desde el
origen y antes de recibir el paquete siguiente.
El tiempo de espera predeterminado es de 30 segundos. Puede cambiar el valor para que sea de 1 a 60
segundos. Si necesita un valor de tiempo de espera situado fuera de ese intervalo, cree un caso en el
Centro de soporte de AWS.
Tip
Si desea aumentar el valor de tiempo de espera porque los lectores están experimentando
errores de código de estado HTTP 504, considere la posibilidad de explorar otras formas de
eliminar dichos errores antes de cambiar el valor del tiempo de espera. Consulte las sugerencias
de resolución de problemas en Código de estado HTTP 504 (tiempo de espera de gateway
agotado) (p. 293).
• Solicitudes GET y HEAD: si el origen no responde o deja de responder durante el tiempo de espera de la
respuesta, CloudFront interrumpe la conexión. CloudFront intenta de nuevo conectarse de acuerdo con
el valor de Intentos de conexión de origen (p. 48).
• Solicitudes DELETE, OPTIONS, PATCH, PUT y POST: si el origen no responde mientras dura el tiempo de
espera de lectura, CloudFront interrumpe la conexión y no vuelve a intentar ponerse en contacto con el
origen. El cliente puede volver a enviar la solicitud en caso de que sea necesario.
51
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Tiempo (en segundos) que CloudFront intenta mantener una conexión con el origen personalizado
después de que obtenga el último paquete de una respuesta. Garantizar una conexión persistente
ahorra el tiempo necesario para restablecer la conexión TCP y realizar otro protocolo de enlace TLS para
solicitudes posteriores. Aumentar el tiempo de keep-alive ayuda a mejorar la métrica de solicitud por
conexión en distribuciones.
Note
Para que el valor de Origin Keep-alive Timeout (Tiempo de espera de keep-alive de origen) tenga
efecto, el origen debe estar configurado para permitir las conexiones persistentes.
Puerto HTTP
Note
Opcional. El puerto HTTP que escucha el origen personalizado. Los valores válidos son los puertos 80,
443 y 1024 y 65535. El valor predeterminado es el puerto 80.
Important
Puerto HTTPS
Note
Opcional. El puerto HTTPS que escucha el origen personalizado. Los valores válidos son los puertos 80,
443 y 1024 y 65535. El valor predeterminado es el puerto 443.
• El patrón de ruta.
• Si ha configurado varios orígenes para su distribución de CloudFront, el origen al que desea que
CloudFront reenvíe sus solicitudes.
52
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Al crear una nueva distribución, debe especificar la configuración del comportamiento de la caché
predeterminado, que reenvía automáticamente todas las solicitudes al origen que especifique al crear
la distribución. Después de crear una distribución, puede crear más comportamientos de la caché que
definen cómo CloudFront responde cuando recibe una solicitud de objetos que coincide con un patrón de
ruta, por ejemplo, *.jpg. Si crea más comportamientos de la caché, el predeterminado será siempre el
último en procesarse. Los demás comportamientos de la caché se procesan en el orden en que aparecen
en la consola de CloudFront o, si está utilizando la API de CloudFront, en el orden en que se enumeran en
el elemento DistributionConfig de la distribución. Para obtener más información, consulte Patrón de
ruta (p. 53).
Al crear un comportamiento de la caché, debe especificar el origen desde el que desea que CloudFront
obtenga objetos. Por lo tanto, si desea que CloudFront distribuya objetos de todos los orígenes, debe
crear al menos tantos comportamientos de la caché (incluido el predeterminado) como orígenes tenga.
Por ejemplo, si tiene dos orígenes y solo el comportamiento de la caché predeterminado, este hace que
CloudFront obtenga objetos desde uno de los orígenes, pero el otro origen no se usa jamás.
Para obtener información sobre el número máximo actual de comportamientos de la caché que puede
agregar a una distribución o para solicitar una cuota (antes denominada límite) más alta, consulte Cuotas
generales de distribuciones (p. 519).
Patrón de ruta
El patrón de ruta (por ejemplo, images/*.jpg) que especifica a qué solicitudes desea que sea aplicable
este comportamiento de la caché. Cuando CloudFront recibe una solicitud de un usuario final, la ruta
solicitada se compara con patrones de ruta en el orden en el que se enumeran los comportamientos de la
caché en la distribución. La primera coincidencia determina el comportamiento de la caché que se aplicará
a dicha solicitud. Por ejemplo, suponga que tiene tres comportamientos de la caché con los siguientes tres
patrones de ruta, en este orden:
• images/*.jpg
• images/*
• *.gif
Note
De forma opcional, puede incluir una barra inclinada (/) al principio de la ruta de acceso, por
ejemplo, /images/*.jpg. El comportamiento de CloudFront es el mismo con o sin la / al
principio.
Una solicitud del archivo images/sample.gif no satisface el primer patrón de ruta, por lo que los
comportamientos de la caché asociados no se aplicarán a la solicitud. El archivo satisface el segundo
patrón de ruta, por lo que los comportamientos de la caché asociados al segundo patrón de ruta se aplican
a pesar de que la solicitud también coincide con el tercer patrón de ruta.
Note
Al crear una nueva distribución, el valor de Path Pattern (Patrón de ruta) del comportamiento
de la caché predeterminado se establece como * (todos los archivos) y no puede modificarse.
Este valor hace que CloudFront reenvíe todas las solicitudes de los objetos al origen que ha
especificado en el campo Nombre de dominio de origen (p. 46). Si la solicitud de un objeto no
53
Amazon CloudFront Guía para desarrolladores
Valores que especifica
coincide con el patrón de ruta de ningún otro comportamiento de la caché, CloudFront aplica el
comportamiento que especifique al comportamiento de la caché predeterminado.
Important
Defina los patrones de ruta y su orden detenidamente para evitar que los usuarios puedan
acceder a contenido al que no desea otorgar acceso. Supongamos que una solicitud coincide
con el patrón de ruta de dos comportamientos de la caché. El primer comportamiento de la caché
no requiere URL firmadas ni cookies firmadas y el segundo requiere URL firmadas. Los usuarios
pueden tener acceso a los objetos sin usar una URL firmada porque CloudFront procesa el
comportamiento de la caché asociado a la primera coincidencia.
Si trabaja con un canal de MediaPackage, debe incluir patrones de ruta específicos para el
comportamiento de la caché que se haya definido para el tipo de punto de enlace del origen. Por ejemplo,
en el caso de un punto de enlace DASH, debería escribir *.mpd para Path Pattern (Patrón de ruta). Para
obtener más información e instrucciones específicas, consulte Servir vídeo en directo formateado con AWS
Elemental MediaPackage (p. 333).
La ruta especificada es aplicable a las solicitudes de todos los archivos del directorio especificado y sus
subdirectorios. CloudFront no tiene en cuenta las cadenas de consulta ni cookies a la hora de evaluar el
patrón de ruta. Por ejemplo, si un directorio images contiene subdirectorios product1 y product2, el
patrón de ruta images/*.jpg resulta aplicable a las solicitudes de cualquier archivo .jpg en los directorios
images, images/product1y images/product2. Si desea aplicar un comportamiento de la caché a los
archivos del directorio images/product1 que sea distinto al comportamiento a aplicar a los archivos de
los directorios images y images/product2, cree un comportamiento de la caché independiente para
images/product1 y muévalo a la posición superior (previa) a la del comportamiento de la caché para el
directorio images.
images/*.jpg Todos los archivos .jpg del directorio images y de los subdirectorios de images.
a*.jpg • Todos los archivos .jpg cuyos nombre de archivo comienzan por a, por ejemplo,
apple.jpg y appalachian_trail_2012_05_21.jpg.
• Todos los archivos .jpg cuyas rutas de archivo comienzan por a, por ejemplo,
abra/cadabra/magic.jpg.
a??.jpg Todos los archivos .jpg cuyos nombres de archivo comienzan por a y que les
siguen exactamente dos caracteres, por ejemplo, ant.jpg y abe.jpg.
*.doc* Todos los archivos cuyas extensiones de nombre de archivo comienzan por .doc,
por ejemplo, archivos .doc, .docx y .docm. En este caso no se puede utilizar
el patrón de ruta *.doc?, ya que no sería aplicable a las solicitudes de archivos
.doc; el comodín ? sustituye exactamente un carácter.
La longitud máxima de un patrón de ruta es 255 caracteres. El valor puede contener cualquiera de los
siguientes caracteres:
• A-Z, a-z
54
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Los patrones de ruta distinguen entre mayúsculas y minúsculas, por lo que el patrón de ruta *.jpg no
sería aplicable al archivo LOGO.JPG.
• 0-9
• _-.*$/~"'@:+
• &, pasado y devuelto como &
• HTTP and HTTPS (HTTP y HTTPS): los espectadores pueden utilizar ambos protocolos.
• Redirect HTTP to HTTPS (Redireccionamiento de HTTP a HTTPS): los espectadores pueden utilizar
ambos protocolos, pero las solicitudes HTTP se redirigirán automáticamente a solicitudes HTTPS.
• HTTPS Only (Solo HTTPS): los espectadores solo pueden obtener acceso a su contenido si utilizan
HTTPS.
Para obtener más información, consulte Exigir HTTPS para la comunicación entre lectores y
CloudFront (p. 139).
• GET, HEAD: puede usar CloudFront solo para obtener los objetos desde su origen o para obtener
encabezados de objeto.
• GET, HEAD, OPTIONS: puede utilizar CloudFront solo para obtener objetos del origen, obtener
encabezados de objeto o recuperar una lista de las opciones admitidas por su servidor de origen.
• GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE: puede utilizar CloudFront para obtener, agregar,
actualizar y eliminar objetos, así como para obtener encabezados de objeto. Además, puede realizar
otras operaciones de POST como enviar datos desde un formulario web.
Note
CloudFront almacena en caché las respuestas a las solicitudes GET y HEAD y, de forma
opcional, de las solicitudes OPTIONS. CloudFront no almacena en caché las respuestas a las
solicitudes que utilizan los otros métodos.
Si utiliza un bucket de Amazon S3 como origen de la distribución y, además, usa identidades de acceso
de origen de CloudFront, las solicitudes POST no se admiten en algunas regiones de Amazon S3 y las
solicitudes PUT en esas regiones necesitarán un encabezado adicional. Para obtener más información,
consulte Uso de una OAI en regiones de Amazon S3 que solo admiten autenticación Signature Version
4 (p. 230).
Important
Si elige GET, HEAD, OPTIONS o GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE,
seguramente necesite restringir el acceso al bucket de Amazon S3 o a su origen personalizado
55
Amazon CloudFront Guía para desarrolladores
Valores que especifica
para que los usuarios no puedan realizar operaciones indeseadas. Los siguientes ejemplos
explican cómo restringir el acceso:
• Si utiliza Amazon S3 como origen de la distribución: cree una identidad de acceso de origen
de CloudFront para restringir el acceso a su contenido de Amazon S3 y conceda permisos a la
identidad de acceso de origen. Por ejemplo, si configura CloudFront para que acepte y reenvíe
estos métodos solo porque desea utilizar PUT, deberá volver a configurar la políticas del bucket
de Amazon S3 o las ACL para gestionar las solicitudes DELETE de forma adecuada. Para
obtener más información, consulte Restricción del acceso a contenido de Amazon S3 utilizando
una identidad de acceso de origen (p. 223).
• Si utiliza un origen personalizado: configure el servidor de origen para gestionar todos los
métodos. Por ejemplo, si configura CloudFront para que acepte y reenvíe estos métodos solo
porque desea utilizar POST, deberá volver a configurar el servidor de origen para gestionar las
solicitudes DELETE de forma adecuada.
Para obtener más información, consulte Uso del cifrado en el nivel de campo para ayudar a proteger la
información confidencial (p. 241).
Para obtener más información acerca de cómo configurar el almacenamiento en caché en CloudFront
utilizando encabezados de solicitud, consulte Almacenamiento en caché de contenido en función de
encabezados de solicitud (p. 280).
Whitelist Headers
Especifique los encabezados que desea que CloudFront tenga en cuenta a la hora de almacenar los
objetos en caché. Seleccione los encabezados en la lista de encabezados disponibles y elija Add (Añadir).
56
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Para reenviar un encabezado personalizado, escriba el nombre en el campo y elija Add Custom (Añadir
personalizado).
Para obtener información sobre el número máximo actual de encabezados que puede incluir en la lista
blanca para cada comportamiento de la caché o para solicitar una cuota (antes denominada límite) más
alta, consulte Cuotas en encabezados personalizados (p. 522).
Para especificar el tiempo mínimo y máximo durante el cual los objetos deben mantenerse en la caché
de CloudFront independientemente de los encabezados Cache-Control y un tiempo predeterminado
durante el cual un objeto deberá mantenerse en la caché de CloudFront cuando le falte el encabezado
Cache-Control, elija Customize (Personalizar). A continuación, especifique los valores en los campos
Minimum TTL (Tiempo de vida mínimo), Default TTL (Tiempo de vida predeterminado) y Maximum TTL
(Tiempo de vida máximo).
Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).
Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).
Para especificar un valor en Maximum TTL (Tiempo de vida máximo), elija la opción Customize
(Personalizar) en el ajuste Object Caching (Almacenamiento de objetos en caché).
El valor predeterminado de Maximum TTL (Tiempo de vida máximo) es 31 536 000 segundos (un
año). Si cambia el valor de Minimum TTL (Tiempo de vida mínimo) o de Default TTL (Tiempo de vida
predeterminado) a más de 31 536 000 segundos, el valor predeterminado de Maximum TTL (Tiempo de
vida máximo) cambia al valor Default TTL (Tiempo de vida predeterminado).
Para especificar un valor en Default TTL (Tiempo de vida predeterminado), elija la opción Customize
(Personalizar) en el ajuste Object Caching (Almacenamiento de objetos en caché).
57
Amazon CloudFront Guía para desarrolladores
Valores que especifica
El valor predeterminado de Default TTL (Tiempo de vida predeterminado) es 86 400 segundos (un
día). Si cambia el valor de Minimum TTL (Tiempo de vida mínimo) a más de 86 400 segundos, el valor
predeterminado de Default TTL (Tiempo de vida predeterminado) cambia al valor Minimum TTL (Tiempo
de vida mínimo).
Esta opción solo se aplica a los buckets de Amazon S3 configurados como punto de enlace del
sitio web.
Especifique si desea que CloudFront reenvíe las cookies al servidor de origen y, en tal caso, cuáles de
ellas. Si decide reenviar únicamente unas cookies determinadas (las contenidas en una lista blanca
de cookies), escriba sus nombres en el campo Whitelist Cookies (Lista blanca de cookies). Si elige All
(Todas), CloudFront reenvía todas las cookies independientemente de la cantidad que utilice la aplicación.
Amazon S3 no procesa las cookies, y reenviar cookies al origen reduce la capacidad de almacenamiento
en caché. Para comportamientos de la caché que reenvíen solicitudes a un origen de Amazon S3, elija
None (Ninguna) en Forward Cookies (Reenviar cookies).
Para obtener más información acerca del reenvío de cookies al origen, visite Almacenamiento en caché de
contenido en función de cookies (p. 277).
Esta opción solo se aplica a los buckets de Amazon S3 configurados como punto de enlace del
sitio web.
Si eligió Whitelist (Lista blanca) en la lista Forward Cookies (Reenviar cookies), escriba en el campo
Whitelist Cookies (Lista blanca de cookies) los nombres de las cookies que desea que CloudFront reenvíe
a su servidor de origen para este comportamiento de la caché. Escriba una cookie por línea.
Por ejemplo, supongamos que las solicitudes de un objeto enviadas por un espectador incluyen una cookie
con el nombre:
userid_member-number
Donde el valor de member-number es único para cada usuario. Desea que CloudFront almacene en
caché una versión independiente del objeto por cada miembro. Podría conseguirlo reenviando todas las
cookies al origen, pero las solicitudes de lectores incluyen algunas que no desea que CloudFront las
almacene en caché. Otra opción sería especificar el siguiente valor como nombre de cookie, lo que haría
que CloudFront reenviara al origen todas las cookies que comienzan por userid_:
userid_*
Para obtener información sobre el número máximo actual de nombres de cookies que puede incluir en la
lista blanca para cada comportamiento de la caché o para solicitar una cuota (antes denominada límite)
más alta, consulte Cuotas en las cookies de la lista blanca (p. 522).
58
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Seleccione esta opción si su servidor de origen devuelve distintas versiones de sus objetos en función
de uno o más parámetros de cadenas de consulta. A continuación, especifique los parámetros que
desee que CloudFront utilice como base para el almacenamiento en caché en el campo Lista blanca
de cadenas de consulta (p. 59).
Reenviar todo y almacenar todo en caché
Seleccione esta opción si su servidor de origen devuelve distintas versiones de sus objetos para todos
los parámetros de cadenas de consulta.
Para obtener más información acerca del almacenamiento en caché en función de los parámetros de las
cadenas de consulta y acerca de formas de mejorar el desempeño, consulte Almacenamiento en caché de
contenido en función de parámetros de cadenas de consulta (p. 274).
Smooth Streaming
Elija Yes (Sí) si desea distribuir archivos multimedia en el formato Microsoft Smooth Streaming y no
dispone de un servidor de IIS.
Elija No si tiene un servidor Microsoft IIS que desea utilizar como origen para distribuir archivos multimedia
en el formato Microsoft Smooth Streaming, o si no distribuye archivos multimedia Smooth Streaming.
Note
Si especifica Yes (Sí), puede seguir distribuyendo otro tipo de contenido con este comportamiento
de la caché si dicho contenido coincide con el valor de Path Pattern (Patrón de ruta).
Para obtener más información, consulte Configuración de vídeo bajo demanda para Microsoft Smooth
Streaming (p. 329).
Si desea que las solicitudes de objetos que coinciden con el valor de PathPattern en este
comportamiento de la caché utilicen direcciones URL firmadas, elija Yes (Sí). A continuación, especifique
las cuentas de AWS que desea utilizar para crear URL firmadas; a estas cuentas se les conoce como
signatarios de confianza.
59
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Para obtener más información acerca de los signatarios de confianza, consulte Especificación de los
signatarios que pueden crear URL firmadas y cookies firmadas (p. 166).
Signatarios de confianza
Seleccione las cuentas de AWS que desea utilizar como signatarios de confianza para este
comportamiento de la caché:
• Self (Automático): utilice la cuenta con la que tiene la sesión iniciada en la consola de administración
de AWS como signatario de confianza. Si actualmente su sesión está iniciada como usuario de IAM, la
cuenta de AWS asociada se añade como signatario de confianza.
• Specify Accounts (Especificar cuentas): escriba los números de cuenta de los signatarios de confianza
en el campo AWS Account Numbers (Números de cuenta de AWS).
Para crear URL firmadas, la cuenta de AWS debe tener al menos un par de claves de CloudFront activo.
Important
Si está actualizando una distribución que ya utiliza para distribuir contenido, añada signatarios
de confianza solo cuando esté listo para comenzar a generar URL firmadas para los objetos.
Después de añadir signatarios de confianza a una distribución, los usuarios deben utilizar las
URL firmadas para obtener acceso a los objetos que coincidan con PathPattern para este
comportamiento de la caché.
• Las cuentas que especifique deben tener al menos un par de claves de CloudFront activo. Para obtener
más información, consulte Creación de pares de claves para los signatarios (p. 168).
• No puede crear pares de claves de CloudFront para usuarios de IAM, lo que significa que no puede
utilizar usuarios de IAM como signatarios de confianza.
• Para obtener información acerca de cómo obtener el número de una cuenta de AWS, consulte ¿Cómo
obtengo credenciales de seguridad? en la Referencia general de Amazon Web Services.
• Si escribe el número de la cuenta actual, CloudFront marca automáticamente la casilla Self (Automático)
y elimina el número de cuenta de la lista AWS Account Numbers (Números de cuenta de AWS).
Evento CloudFront
Puede elegir ejecutar una función de Lambda cuando se produzcan uno o varios de los siguientes eventos
de CloudFront:
60
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Para obtener más información, consulte A continuación, se explica cómo decidir qué evento de CloudFront
utilizar para desencadenar una función de Lambda. (p. 361).
Ajustes de la distribución
Los siguientes valores se aplican a toda la distribución.
Clase de precio
Elija la clase de precio que corresponde al precio máximo que desea pagar por el servicio de CloudFront.
De forma predeterminada, CloudFront distribuye sus objetos desde ubicaciones de borde en todas las
regiones de CloudFront.
Para obtener más información acerca de las clases de precios y cómo la clase que elija afecta al
rendimiento de CloudFront para su distribución, consulte Elegir la clase de precio para una distribución de
CloudFront (p. 14). Para obtener más información acerca de los precios de CloudFront, incluido cómo se
asignan las clases de precios a las regiones de CloudFront, consulte Precios de Amazon CloudFront.
AWS WAF es un firewall de aplicaciones web que permite monitorizar las solicitudes HTTP y HTTPS que
se reenvían a CloudFront y permite controlar quién accede a su contenido. En función de las condiciones
que especifique, como las direcciones IP de las que provienen las solicitudes o los valores de las cadenas
de consulta, CloudFront responde a las solicitudes con el contenido solicitado o con un código de
estado HTTP 403 (Prohibido). También puede configurar CloudFront para devolver una página de error
personalizada cuando se bloquea una solicitud. Para obtener más información acerca de AWS WAF,
consulte la Guía para desarrolladores de AWS WAF.
/images/image.jpg
Sea así:
http://www.example.com/images/image.jpg
En lugar de así:
http://d111111abcdef8.cloudfront.net/images/image.jpg
61
Amazon CloudFront Guía para desarrolladores
Valores que especifica
Important
• Crear o actualizar un registro de CNAME en el servicio de DNS para dirigir las consultas de
www.example.com a d111111abcdef8.cloudfront.net.
• Agregar un certificado a CloudFront de una entidad de certificación (CA) de confianza emitido
para el nombre de dominio (CNAME) que va a agregar a la distribución, con el fin de demostrar
que dispone de autorización para utilizar el nombre de dominio.
Debe tener permiso para crear un registro CNAME con el proveedor de servicios de DNS para el
dominio. Por lo general, esto indica que es el propietario del dominio o que está desarrollando una
aplicación para el propietario del dominio.
Para obtener el número máximo actual de nombres de dominio alternativos que puede agregar a una
distribución o solicitar una cuota (antes denominada límite) más alta, consulte Cuotas generales de
distribuciones (p. 519).
Para obtener más información acerca de los nombres de dominio alternativos, consulte Uso de URL
personalizadas para archivos añadiendo nombres de dominio alternativos (CNAME) (p. 80). Para
obtener más información acerca de las direcciones URL de CloudFront, consulte Personalización del
formato de URL para archivos en CloudFront (p. 117).
Certificado SSL
Si ha especificado un nombre de dominio alternativo para usarlo con la distribución, seleccione Custom
SSL Certificate (Certificado SSL personalizado) y, a continuación, para validar su autorización para utilizar
el nombre de dominio alternativo, elija un certificado emitido para él. Si desea que los espectadores utilicen
HTTPS para obtener acceso a sus objetos, elija el ajuste correspondiente.
Note
Antes de que pueda especificar un certificado SSL personalizado, debe especificar un nombre
de dominio alternativo válido. Para obtener más información, consulte Requisitos para el
uso de nombres de dominio alternativos (p. 87) y Usar nombres de dominio alternativos y
HTTPS (p. 150).
Si elige esta opción, le recomendamos que utilice solo un nombre de dominio alternativo en las URL
de sus objetos (https://example.com/logo.jpg). Si utiliza el nombre de dominio de la distribución de
CloudFront (https://d111111abcdef8.cloudfront.net/logo.jpg) y un cliente utiliza un lector antiguo que
no admite SNI, la respuesta del lector depende del valor que elija para Clients Supported (Clientes
admitidos):
• All Clients (Todos los clientes): el lector muestra una advertencia, ya que el nombre de dominio de
CloudFront no coincide con el nombre de dominio del certificado SSL/TLS.
62
Amazon CloudFront Guía para desarrolladores
Valores que especifica
• Only Clients that Support Server Name Indication (SNI) (Solo los clientes que admiten indicación de
nombre de servidor (SNI)): CloudFront interrumpe la conexión con el lector sin devolver el objeto.
• Clientes compatibles con la indicación de nombre de servidor (SNI) - (recomendado): con esta
configuración, prácticamente todos los navegadores web y clientes modernos pueden conectarse a
la distribución, ya que admiten SNI. Sin embargo, algunos usuarios pueden utilizar navegadores web
antiguos o clientes que no admiten SNI, lo que significa que no pueden conectarse a la distribución.
Para aplicar esta configuración mediante la API de CloudFront, especifique sni-only en el campo
SSLSupportMethod. En AWS CloudFormation, el campo se denomina SslSupportMethod (tenga en
cuenta el uso de mayúsculas y minúsculas).
• Compatibilidad con clientes heredados: con esta configuración, los navegadores web antiguos y los
clientes que no admiten SNI pueden conectarse a la distribución. Sin embargo, a esta configuración se
le aplican cargos mensuales adicionales. Para obtener el precio exacto, vaya a la página Precios de
Amazon CloudFront y busque la página de SSL personalizado de IP dedicada.
Para aplicar esta configuración mediante la API de CloudFront, especifique vip en el campo
SSLSupportMethod. En AWS CloudFormation, el campo se denomina SslSupportMethod (tenga en
cuenta el uso de mayúsculas y minúsculas).
Para obtener más información, consulte Elegir cómo CloudFront atiende las solicitudes HTTPS (p. 150).
Política de seguridad
Especifique la política de seguridad que desea que utilice CloudFront para las conexiones HTTPS con
lectores (clientes). Una política de seguridad determina dos ajustes:
• El protocolo SSL/TLS mínimo que utiliza CloudFront para comunicarse con los lectores.
• El cifrado que puede utilizar CloudFront para cifrar el contenido que devuelve a los espectadores.
Para obtener más información acerca de las políticas de seguridad, incluidos los protocolos y los cifrados
que incluye cada una, consulte Protocolos y cifrados admitidos entre lectores y CloudFront (p. 145).
Las políticas de seguridad disponibles dependen de los valores que especifique para el Certificado SSL
y el Soporte de cliente SSL personalizado (conocidos como CloudFrontDefaultCertificate y
SSLSupportMethod en la API de CloudFront):
63
Amazon CloudFront Guía para desarrolladores
Valores que especifica
• TLSv1
• Cuando el Certificado SSL es el Certificado SSL personalizado (ejemplo.com) y el Soporte de cliente
SSL personalizado es el Soporte de clientes heredados (cuando CloudFrontDefaultCertificate
es false y SSLSupportMethod es vip en la API), puede elegir entre las siguientes políticas de
seguridad:
• TLSv1
• SSLv3
En general, configurar CloudFront para comunicarse con los lectores a través de HTTP/2 reduce la
latencia. Puede mejorar el desempeño si optimiza para HTTP/2. Para obtener más información, busque
"optimización http/2" en Internet.
64
Amazon CloudFront Guía para desarrolladores
Valores que especifica
La longitud máxima de un nombre es 255 caracteres. El nombre puede contener cualquiera de los
siguientes caracteres:
• A-Z, a-z
• 0-9
• _-.*$/~"'
• &, pasado y devuelto como &
Al especificar el objeto raíz predeterminado, escriba únicamente el nombre de objeto, por ejemplo,
index.html. No añada / antes del nombre del objeto.
Para obtener más información, consulte Especificar un objeto raíz predeterminado (p. 118).
Registro
Si desea que CloudFront registre información acerca de cada solicitud de un objeto y almacene los
archivos de registro en un bucket de Amazon S3. Puede habilitar o deshabilitar el registro de acceso
en cualquier momento. No se aplica ningún cargo adicional si activa los registros, pero se acumulan los
cargos típicos de Amazon S3 por almacenar y acceder a los archivos que se encuentren en el bucket de
Amazon S3. Puede eliminar los registros en cualquier momento. Para obtener más información sobre
los registros de acceso de CloudFront, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).
Si habilita el registro, CloudFront registra información acerca de las solicitudes de cada objeto realizadas
por cada usuario final y almacena los archivos en el bucket de Amazon S3 especificado. Puede habilitar
o deshabilitar el registro de acceso en cualquier momento. Para obtener más información sobre los
registros de acceso de CloudFront, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).
Note
Debe tener los permisos necesarios para obtener y actualizar ACL de buckets de Amazon S3 y la
ACL de S3 del bucket debe concederle FULL_CONTROL. Esto permite a CloudFront concederle
a awsdatafeeds permiso en la cuenta para guardar archivos de registro en el bucket. Para
obtener más información, consulte Permisos necesarios para configurar el registro estándar y el
acceso a los archivos de registro (p. 465).
Prefijo de registros
Opcional. Si eligió On (Act.) en Logging (Registro), especifique la cadena, de haberla, a la que CloudFront
debe agregar un prefijo para los nombres de archivo de los registros de acceso de esta distribución; por
65
Amazon CloudFront Guía para desarrolladores
Valores que especifica
ejemplo, exampleprefix/. La barra inclinada (/) al final es opcional pero recomendable para simplificar
la navegación de los archivos de registro. Para obtener más información sobre los registros de acceso de
CloudFront, consulte Configuración y uso de registros estándar (registros de acceso) (p. 463).
Cookie Logging
Si desea que CloudFront incluya cookies en los registros de acceso, elija On (Act.). Si decide incluir las
cookies en los registros, CloudFront registra todas las cookies independientemente de cómo configura los
comportamientos de la caché para esta distribución: para reenviar al origen todas las cookies, ninguna o
las que se determinen en una lista concreta.
Amazon S3 no procesa las cookies, por lo que, a menos que la distribución también incluya un origen de
Amazon EC2 u otro personalizado, le recomendamos que elija el valor Off (Desact.) en Cookie Logging
(Registros de cookies).
Para obtener más información acerca de cookies, visite Almacenamiento en caché de contenido en función
de cookies (p. 277).
Habilitar IPv6
IPv6 es una nueva versión del protocolo IP. Es la sustitución final de IPv4 y utiliza un espacio de
direcciones mayor. CloudFront siempre responde a las solicitudes por IPv4. Si desea que CloudFront
responda a las solicitudes de direcciones IP IPv4 (como 192.0.2.44) y a las de direcciones IPv6 (como
2001:0db8:85a3:0000:0000:8a2e:0370:7334), seleccione Enable IPv6 (Habilitar IPv6).
En general, debe habilitar IPv6 si tiene usuarios en redes IPv6 que desean obtener acceso a su contenido.
Sin embargo, si utiliza URL firmadas o cookies firmadas para restringir el acceso a su contenido además
de una política personalizada con el parámetro IpAddress para restringir las direcciones IP que pueden
obtener acceso a su contenido, no habilite IPv6. Si desea restringir el acceso a algún contenido por
dirección IP pero no restringir otro contenido (o restringir el acceso, pero no por dirección IP), puede crear
dos distribuciones. Para obtener información acerca de cómo crear URL firmadas mediante una política
personalizada, consulte Creación de una URL firmada mediante una política personalizada (p. 181). Para
obtener información acerca de cómo crear cookies firmadas mediante una política personalizada, consulte
Establecer cookies firmadas mediante una política personalizada (p. 196).
Si utiliza un conjunto de registros de recursos de alias de Amazon Route 53 para dirigir el tráfico a su
distribución de CloudFront, debe crear un segundo conjunto de registros de recursos de alias cuando las
dos condiciones siguientes se cumplan:
Para obtener más información, consulte Direccionamiento del tráfico a una distribución de Amazon
CloudFront mediante el nombre de dominio en la Guía para desarrolladores de Amazon Route 53.
Si ha creado un conjunto de registros de recursos de CNAME, ya sea con Route 53 o con otro servicio de
DNS, no es necesario realizar ningún cambio. Un registro CNAME dirige el tráfico hacia la distribución, sin
tener en cuenta el formato de la dirección IP de la solicitud del espectador.
Si habilita IPv6 y registros de acceso de CloudFront, la columna c-ip incluye valores en formato IPv4
e IPv6. Para obtener más información, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).
Note
Para mantener una alta disponibilidad para los clientes, CloudFront responde a solicitudes de los
lectores a través de IPv4 si nuestros datos sugieren que ese protocolo proporcionará una mejor
66
Amazon CloudFront Guía para desarrolladores
Valores que especifica
experiencia de usuario. Para saber qué porcentaje de solicitudes CloudFront atiende por IPv6,
habilite el registro de CloudFront para su distribución y analice la columna c-ip, que contiene
la dirección IP del lector que hizo la solicitud. Este porcentaje debería crecer con el paso del
tiempo, pero seguirá siendo una minoría de tráfico ya que IPv6 aún no es compatible con todas
las redes de espectadores en todo el mundo. Algunas redes de espectadores tienen excelente
compatibilidad con IPv6, pero otras no admiten IPv6 en absoluto. (En este sentido, una red de
espectadores es sinónimo de su red doméstica u operador de Internet).
Para obtener más información acerca de la compatibilidad con IPv6, consulte las preguntas
frecuentes de CloudFront. Para obtener más información acerca de la activación de registros
de acceso, consulte los campos Registro (p. 65), Bucket para registros (p. 65)y Prefijo de
registros (p. 65).
Comentario
Opcional. Al crear una distribución, puede incluir un comentario de hasta 128 caracteres. Puede
actualizarlo en cualquier momento.
Estado de la distribución
Indica si desea habilitar o deshabilitar la distribución una vez implementada:
• Enabled (Habilitada) significa que tan pronto como la distribución se implemente totalmente, podrá
implementar enlaces que utilizan el nombre de dominio de la distribución y los usuarios podrán recuperar
contenido. Cuando una distribución está habilitada, CloudFront acepta y gestiona cualquier solicitud
de contenido realizada por cualquier usuario final y que utilice el nombre de dominio asociado a esa
distribución.
Al crear, modificar o eliminar una distribución de CloudFront, lleva tiempo propagar los cambios a la base
de datos de CloudFront. Una solicitud inmediata para obtener información acerca de una distribución
puede no mostrar el cambio. La propagación suele completarse en cuestión de minutos, pero una carga
de sistema o una partición de red elevadas podrían aumentar este tiempo.
• Disabled (Deshabilitada) significa que, aunque la distribución puede haberse implementado y estar lista
para su uso, los usuarios no pueden utilizarla. Cuando una distribución está desactivada, CloudFront no
acepta ninguna solicitud realizada por ningún usuario final y que utilice el nombre de dominio asociado
a esa distribución. Hasta que no cambie la distribución de deshabilitada a habilitada (actualizando de la
distribución de la configuración), nadie podrá utilizarla.
Puede cambiar una distribución entre habilitada y deshabilitada tantas veces como quiera. Siga el proceso
para actualizar la configuración de una distribución. Para obtener más información, consulte Actualización
de una distribución (p. 71).
Los siguientes valores no se incluyen en el asistente Create Distribution, lo que significa que solo
puede configurar páginas de error personalizadas al actualizar una distribución.
67
Amazon CloudFront Guía para desarrolladores
Valores que especifica
• El valor de Path Pattern (Patrón de ruta) debe coincidir con la ruta de los mensajes de error
personalizados. Por ejemplo, supongamos que ha guardado páginas para errores 4xx personalizadas
en un bucket de Amazon S3 en un directorio llamado /4xx-errors. La distribución debe incluir
un comportamiento de caché cuyo patrón de ruta dirija las solicitudes de las páginas de error
personalizadas a esa ubicación, por ejemplo, /4xx-errors/*.
• El valor de Origin (Origen) especifica el valor de Origin ID (ID de origen) del origen que contiene las
páginas de error personalizadas.
Restricciones
Si necesita impedir que los usuarios de países concretos accedan a su contenido, puede configurar la
distribución de CloudFront para permitirle a los usuarios de una lista blanca de ciertos países el acceso a
su contenido o para no permitírselo a los usuarios de una lista negra de otros países. Para obtener más
información, consulte Restringir la distribución geográfica de su contenido (p. 238).
Note
Los siguientes valores no se incluyen en el asistente Create Distribution, lo que significa que solo
puede configurar restricciones geográficas al actualizar una distribución.
Tipo de restricción
Cómo desea especificar los países en los que los usuarios pueden acceder a su contenido:
• Lista blanca: la lista Countries (Países) incluye todos los países a cuyos usuarios desea permitirles
acceso a su contenido.
68
Amazon CloudFront Guía para desarrolladores
Valores que se muestran
• Lista negra: la lista Countries (Países) incluye todos los países a cuyos usuarios no desea permitirles
acceso a su contenido.
Países
Los países que desea añadir a la lista positiva o lista negra. Para añadir un país, selecciónelo en la lista de
la izquierda y elija Add (Añadir). Tenga en cuenta lo siguiente:
• Para añadir varios países consecutivos, seleccione el primer país, mantenga pulsada la tecla Mayús,
seleccione el último país y elija Add (Añadir).
• Para añadir varios países no consecutivos, seleccione el primer país, mantenga pulsada la tecla Ctrl,
seleccione cada uno de los demás países y elija Add (Añadir).
• Para encontrar un país en la lista de la izquierda, escriba los primeros caracteres del nombre completo
del país.
• El código de dos letras que aparece delante del nombre de cada país es el valor que debe escribir si
desea crear o actualizar una distribución de CloudFront mediante la API. Utilizamos los códigos de país
de la Organización Internacional de Normalización. Para obtener una lista sencilla y organizable por
código y nombre de país, consulte la entrada de Wikipedia ISO 3166-1 alpha-2.
Los signatarios de confianza activos, esto es, las cuentas de AWS con un par de claves de
CloudFront activas y que se pueden utilizar para crear URL firmadas válidas, actualmente no son
visibles en la consola de CloudFront.
Valor Descripción
Note
69
Amazon CloudFront Guía para desarrolladores
Prueba de una distribución
Si especificó uno o varios nombres de dominio alternativo (CNAME), puede utilizar sus propios nombres de
dominio en lugar del nombre de dominio de CloudFront para los enlaces a sus objetos. Para obtener más
información acerca de CNAME, consulte Nombres de dominio alternativos (CNAME) (p. 61).
Note
Los nombres de dominio de CloudFront son únicos. El nombre de dominio de la distribución nunca
se utilizó para una distribución anterior y nunca se reutilizará para otra distribución futura.
Deberá esperar hasta que el estado de la distribución cambie a Deployed (Implementada) antes
de poder probar sus enlaces.
1. Copie el siguiente código HTML a un nuevo archivo, sustituya domain-name con el nombre de
dominio de su distribución y sustituya object-name con el nombre de su objeto.
<html>
<head>My CloudFront Test</head>
<body>
<p>My text content goes here.</p>
<p><img src="http://domain-name/object-name" alt="my test image"
</body>
</html>
http://d111111abcdef8.cloudfront.net/image.jpg.
Si su objeto se encuentra en una carpeta del servidor de origen, la carpeta también deberá incluirse en
la URL. Por ejemplo, si image.jpg estaba situada en la carpeta de imágenes de su servidor de origen,
la URL debería ser:
http://d111111abcdef8.cloudfront.net/images/image.jpg
70
Amazon CloudFront Guía para desarrolladores
Actualización de una distribución
El navegador devolverá su página con el archivo de imagen integrado, ofrecido desde la ubicación de
borde que CloudFront determinó que era adecuada para servir el objeto.
Important
Al actualizar su distribución, tenga en cuenta que hay una serie de campos adicionales necesarios
que no se necesitan para crear una distribución. Para ver un resumen de los campos que son
necesarios para la creación o actualización de una distribución, consulte Campos obligatorios
para crear y actualizar distribuciones (p. 39). Para asegurarse de que todos los campos
obligatorios se incluyen al actualizar una distribución mediante la API de CloudFront, siga los
pasos que se describen en UpdateDistribution en la Referencia de la API de Amazon CloudFront.
Al guardar los cambios en la configuración de su distribución, CloudFront comienza a propagar los cambios
en todas las ubicaciones de borde. Hasta que la configuración se actualiza en una ubicación de borde,
71
Amazon CloudFront Guía para desarrolladores
Etiquetado de una distribución
CloudFront continúa ofreciendo el contenido desde dicha ubicación en función de la configuración anterior.
Después de que la configuración se actualiza en una ubicación de borde, CloudFront comienza a ofrecer el
contenido inmediatamente desde dicha ubicación en función de la configuración nueva.
Los cambios no se propagan a todas las ubicaciones de borde instantáneamente. Cuando finaliza la
propagación, el estado de la distribución cambia de InProgress a Deployed (Implementada). Aunque
CloudFront propaga los cambios, lamentablemente no podemos determinar si una ubicación de borde
concreta está ofreciendo su contenido en función de la configuración anterior o de la nueva.
A continuación se muestran dos ejemplos de cómo puede resultar útil trabajar con etiquetas en CloudFront:
Para consultar el máximo actual de la cantidad de etiquetas que puede agregar a una distribución web,
consulte Cuotas (p. 519). Para solicitar una cuota (antes denominada límite) más alta, cree un caso en el
Centro de soporte de AWS.
También puede aplicar etiquetas a los recursos mediante la API de CloudFront, la CLI de AWS, los
SDK y las herramientas de AWS para Windows PowerShell. Para obtener más información, consulte la
documentación siguiente:
72
Amazon CloudFront Guía para desarrolladores
Eliminar una distribución
Temas
• Restricciones de las etiquetas (p. 73)
• Añadir, editar y eliminar etiquetas para distribuciones (p. 73)
Cambie la clave, el valor o ambos. También puede eliminar el valor de una etiqueta, pero la clave
es necesaria.
Eliminar una etiqueta
Tenga en cuenta que para poder eliminar una distribución, debe deshabilitarla, lo que requiere permiso
para actualizar la distribución. Para obtener más información sobre la configuración de permisos para
trabajar con CloudFront, incluida la configuración de los permisos UpdateDistribution y DeleteDistribution,
consulte Ejemplos de políticas administradas por el cliente (p. 508).
73
Amazon CloudFront Guía para desarrolladores
Uso de orígenes diferentes
Note
Si desactiva una distribución que tiene asociado un nombre de dominio alternativo, CloudFront
deja de aceptar tráfico para ese nombre de dominio (por ejemplo, www.ejemplo.com), aunque
haya otra distribución que tenga un nombre de dominio alternativo con un carácter comodín (*)
que coincida con el mismo dominio (por ejemplo, *.example.com).
Si el valor de State (Estado) es Enabled (Habilitada) y el valor de Status (Estado) es InProgress (En
curso), espere hasta que Status (Estado) cambie a Deployed (Implementada). A continuación, siga
con el paso 4 para deshabilitar la distribución antes de eliminarla.
4. En el panel derecho de la consola de CloudFront, seleccione la casilla de la distribución que desea
eliminar.
5. Elija Disable (Deshabilitar) para deshabilitar la distribución y elija Yes, Disable (Sí, deshabilitar) para
confirmar la operación. A continuación, seleccione Close (Cerrar).
Note
Dado que CloudFront debe propagar este cambio a todas las ubicaciones de borde, es
posible que tenga que esperar unos minutos hasta que finalice la actualización para poder
eliminar la distribución.
6. El valor de la columna State (Estado) cambia inmediatamente a Disabled (Deshabilitada). Espere
hasta que el valor de la columna Status (Estado) cambie a Deployed (Implementada).
7. Marque la casilla de la distribución que desea eliminar.
8. Elija Delete (Eliminar) y, a continuación, elija Yes, Delete (Sí, eliminar) para confirmar la acción.
Después, haga clic en Close (Cerrar).
Note
También puede eliminar una distribución con la API de CloudFront. Para obtener más información,
consulte DeleteDistribution en la Referencia de la API de Amazon CloudFront.
Temas
74
Amazon CloudFront Guía para desarrolladores
Uso de buckets de Amazon S3 para su origen
Cuando especifique el bucket de Amazon S3 del que desee que CloudFront obtenga objetos, le
recomendamos que utilice el siguiente formato para acceder al bucket:
bucket-name.s3.region.amazonaws.com
Otra opción podría ser utilizar el siguiente formato más general, pero tenga en cuenta que este formato no
funciona para las regiones lanzadas en 2019 o con posterioridad:
bucket-name.s3.amazonaws.com
Cuando especifique el nombre del bucket en este formato, puede utilizar las siguientes características de
CloudFront:
• Configure CloudFront para que se comunique con su bucket de Amazon S3 mediante SSL. Para obtener
más información, consulte Uso de HTTPS con CloudFront (p. 138).
• Utilice una identidad de acceso de origen para solicitar que los usuarios obtengan acceso al contenido
utilizando la URL de CloudFront, y no mediante las URL de Amazon S3. Para obtener más información,
consulte Restricción del acceso a contenido de Amazon S3 utilizando una identidad de acceso de
origen (p. 223).
• Actualice el contenido de su bucket mediante el envío de las solicitudes POST y PUT a CloudFront. Para
obtener más información, consulte Métodos HTTP (p. 300) en el tema Cómo CloudFront procesa y
reenvía solicitudes a su servidor de origen de Amazon S3 (p. 299).
75
Amazon CloudFront Guía para desarrolladores
Uso de buckets de Amazon S3 configurados como
puntos de enlace de sitio web para su origen
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 para desarrolladores
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 sobre las
características de Amazon S3, consulte la documentación de Amazon S3. (CloudFront también
proporciona páginas de error personalizadas. Para obtener más información, consulte Creación de una
página de error personalizada para códigos de estado HTTP específicos (p. 134).)
Para obtener más información e instrucciones paso a paso, consulte los temas siguientes:
• Distribución de vídeo con AWS Elemental MediaStore como origen (p. 331)
• Servir vídeo en directo formateado con AWS Elemental MediaPackage (p. 333)
76
Amazon CloudFront Guía para desarrolladores
Uso de grupos de origen
de forma privada. Un origen de Amazon S3 configurado como punto de enlace de sitio web también se
considera un origen personalizado.
Al utilizar un origen personalizado que es su propio servidor HTTP, debe especificar el nombre de DNS del
servidor, junto con los puertos HTTP y HTTPS y el protocolo que desee que utilice CloudFront a la hora de
recuperar los objetos del origen.
• Contenido privado: aunque puede utilizar una URL firmada para distribuir contenido desde un origen
personalizado, para que CloudFront obtenga acceso al origen personalizado, el origen debe mantenerse
accesible públicamente. Para obtener más información, consulte Distribución de contenido privado con
URL firmadas y cookies firmadas (p. 164).
Siga estas directrices para utilizar 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 del origen (p. 45)
en el tema Valores que deben especificarse al crear o actualizar una distribución (p. 43).
• Registre las entradas del encabezado X-Amz-Cf-Id en todos los servidores; CloudFront requiere esta
información para depurar.
• Restrinja las solicitudes de acceso 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, por sus siglas en inglés) para las URL y cookies firmadas, para
los registros de acceso y los informes. Además, si monitorea la actividad de CloudFront mediante las
métricas de CloudWatch, tenga en cuenta que CloudWatch también utiliza 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 (p. 165).
• 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 (p. 298).
Si utiliza Amazon EC2 para sus orígenes personalizados, le recomendamos que haga lo siguiente:
1. 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.
2. 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.
3. Al crear su distribución de CloudFront, especifique la URL del balanceador de carga para el nombre
de dominio del servidor de origen. Para obtener más información, consulte Creación de una
distribución (p. 42).
77
Amazon CloudFront Guía para desarrolladores
Agregar CloudFront cuando tenga contenido de Amazon S3
origen al que CloudFront cambia automáticamente cuando el origen principal devuelve respuestas de error
de código de estado HTTP específicas.
Para ver los pasos para configurar un grupo de origen y para obtener más información, consulte
Optimización de alta disponibilidad con conmutación por error de origen de CloudFront (p. 263).
Usar CloudFront puede ser más rentable si sus usuarios obtienen acceso a sus objetos frecuentemente
porque si el uso es elevado, el precio de transferencia de datos de CloudFront es menor que el de Amazon
S3. Además, las descargas son más rápidas con CloudFront que con solo Amazon S3 porque sus objetos
se almacenan más cerca de sus usuarios.
Note
Si desea que CloudFront respete la configuración de uso compartido de recursos de origen
cruzado de Amazon S3, configure CloudFront para que reenvíe el encabezado Origin a Amazon
S3. Para obtener más información, consulte Almacenamiento en caché de contenido en función
de encabezados de solicitud (p. 280).
Si actualmente distribuye contenido directamente desde el bucket de Amazon S3 con nombre propio de
dominio (como example.com) en lugar del nombre de dominio del bucket de Amazon S3 (como DOC-
EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com), puede agregar CloudFront sin interrupciones con el
siguiente procedimiento.
1. Crear una distribución de CloudFront. Para obtener más información, consulte Pasos para crear una
distribución (Información general) (p. 41).
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, http://
d111111abcdef8.cloudfront.net/images/image.jpg.
Para obtener más información acerca del formato de las URL de CloudFront, consulte Personalización
del formato de URL para archivos en CloudFront (p. 117).
3. Si utiliza CNAME de Amazon S3, la aplicación utiliza 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
78
Amazon CloudFront Guía para desarrolladores
Cambiar un bucket de Amazon S3 de región
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:
http://example.com/images/image.jpg
http://DOC-EXAMPLE-BUCKET1.s3.amazonaws.com/images/image.jpg
Para dirigir consultas a su distribución de CloudFront en lugar a de su bucket de Amazon S3, deberá
utilizar el método proporcionado por su proveedor de servicios DNS para actualizar el conjunto de
registros de recursos de CNAME de su dominio. Este registro de CNAME actualizado comienza a
redirigir consultas de DNS de su dominio al nombre de dominio de CloudFront de su distribución. Para
obtener más información, consulte la documentación de su proveedor de servicios de DNS.
Note
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 los conjuntos de
registros de recursos. Para obtener más información acerca de los conjuntos de registros de
recursos de alias, consulte Elección entre conjuntos de registros de recursos 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 acerca del uso de CNAME con CloudFront, consulte Uso de URL
personalizadas para archivos añadiendo nombres de dominio alternativos (CNAME) (p. 80).
• Utiliza una identidad de acceso de origen (OAI) de CloudFront 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 utiliza OAI, CloudFront utiliza la región (entre otros valores) para calcular la firma que se utiliza
para solicitar los objetos de su bucket. Para obtener más información acerca de OAI, consulte Restricción
del acceso a contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 223). Para
obtener una lista de las regiones de Amazon S3 y las versiones de firma compatibles, consulte Amazon
Simple Storage Service (Amazon S3) en el capítulo «Regiones y puntos de enlace» de la Referencia
general de Amazon Web Services.
Para forzar una actualización más rápida de los registros de CloudFront, puede actualizar su distribución
de CloudFront, por ejemplo, al actualizar el campo Comment (Comentario) en la pestaña General de la
consola de CloudFront. Al actualizar una distribución, CloudFront comprueba inmediatamente la región
79
Amazon CloudFront Guía para desarrolladores
Uso de URL personalizadas
en la que se encuentra su bucket; la propagación del cambio a todas las ubicaciones de borde no debería
tomar más de 15 minutos.
Al crear una distribución, CloudFront, devuelve un nombre de dominio para la distribución, por ejemplo:
d111111abcdef8.cloudfront.net
Al utilizar el nombre de dominio de CloudFront para sus archivos, la URL de un archivo denominado /
images/image.jpg es:
https://d111111abcdef8.cloudfront.net/images/image.jpg
Si desea utilizar su propio nombre de dominio, como por ejemplo www.example.com, en lugar del
nombre de dominio cloudfront.net, puede añadir un nombre de dominio alternativo a la distribución,
como www.example.com. A continuación, puede utilizar la siguiente dirección URL para ver /images/
image.jpg:
https://www.example.com/images/image.jpg
Temas
• Añadir un nombre de dominio alternativo (p. 80)
• Mover un nombre de dominio alternativo a una distribución de CloudFront diferente (p. 83)
• Eliminar un nombre de dominio alternativo (p. 86)
• Uso de comodines en los nombres de dominio alternativos que se agregan a CloudFront (p. 87)
• Requisitos para el uso de nombres de dominio alternativos (p. 87)
• Restricciones de uso de nombres de dominio alternativos (p. 89)
Antes de comenzar: asegúrese de hacer lo siguiente antes de actualizar la distribución para añadir un
nombre de dominio alternativo:
80
Amazon CloudFront Guía para desarrolladores
Añadir un nombre de dominio alternativo
tiene autorización para utilizar el dominio. Para obtener más información, consulte Requisitos para el
uso de nombres de dominio alternativos (p. 87).
Agregue sus nombres de dominio alternativos. Separe los nombres de dominio con comas o
escriba uno por línea.
SSL Certificate
Si elige esta opción, le recomendamos que utilice solo un nombre de dominio alternativo en
las URL de sus objetos (https://www.example.com/logo.jpg). Si utiliza el nombre de
dominio de la distribución de CloudFront (https://d111111abcdef8.cloudfront.net/
logo.jpg), un lector podría comportarse del modo siguiente, en función del valor que elija para
Clients Supported (Clientes admitidos):
• All Clients (Todos los clientes): si el lector no admite SNI, se muestra una advertencia, ya que
el nombre de dominio de CloudFront no coincide con el nombre de dominio de su certificado
TLS/SSL.
• Only Clients that Support Server Name Indication (SNI) (Solo los clientes que admiten
indicación de nombre de servidor (SNI)): CloudFront interrumpe la conexión con el lector sin
devolver el objeto.
Cliente admitidos
Para obtener más información, consulte Elegir cómo CloudFront atiende las solicitudes
HTTPS (p. 150).
5. Elija Yes, Edit (Sí, editar).
6. En la pestaña General de la distribución, confirme que Distribution Status (Estado de la distribución)
ha cambiado a Deployed (Implementada). Si intenta utilizar un nombre de dominio alternativo antes de
81
Amazon CloudFront Guía para desarrolladores
Añadir un nombre de dominio alternativo
que las actualizaciones de la distribución se hayan implementado, los enlaces que cree en los pasos
siguientes probablemente no funcionen.
7. Configure el servicio de DNS para que el dominio dirija el tráfico del dominio (como
www.example.com) al nombre de dominio de CloudFront de su distribución (como
d111111abcdef8.cloudfront.net). El método que utilice dependerá de si está utilizando Route 53 como
proveedor de servicios de DNS para el dominio u otro proveedor.
Note
Si el registro de DNS ya apunta a una distribución que no es la que está actualizando, solo
añadirá el nombre de dominio alternativo a la distribución después de actualizar el DNS.
Para obtener más información, consulte Restricciones de uso de nombres de dominio
alternativos (p. 89).
Route 53
Cree un conjunto de registros de recursos de alias. Si cuenta con uno, no tendrá que pagar por
las consultas de Route 53. Además, puede crear un conjunto de registros de recursos de alias
del nombre de dominio raíz (example.com) cuyo DNS no permita CNAME. Para obtener más
información, consulte Direccionamiento del tráfico a una distribución web de Amazon CloudFront
mediante el nombre de dominio en la Guía para desarrolladores de Amazon Route 53.
Otro proveedor de servicios de DNS
Utilice el método proporcionado por el proveedor de servicios DNS para añadir un registro
CNAME a su dominio. Este nuevo registro de CNAME dirigirá las consultas de DNS de su
dominio (por ejemplo, www.example.com) al nombre de dominio de CloudFront de su distribución
(por ejemplo, d111111abcdef8.cloudfront.net). Para obtener más información, consulte la
documentación de su proveedor de servicios de DNS.
Important
El siguiente ejemplo muestra una solicitud de dig en un dominio llamado www.example.com y la parte
pertinente de la respuesta.
;; QUESTION SECTION:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 10800 IN CNAME d111111abcdef8.cloudfront.net.
...
• Para un subdominio como www.example.com, puede mover el dominio usted mismo. Para conocer los
pasos en detalle, consulte Mover un nombre de subdominio a otra distribución (p. 83).
• Para un dominio como example.com (un dominio de ápex), debe trabajar con AWS Support para mover
el dominio a otra distribución Mover un nombre de dominio de ápex a otra distribución (p. 85).
• Si utiliza Route 53, actualice los registros de alias o registros CNAME, en función de cómo haya
configurado el nombre de dominio alternativo originalmente. Para obtener más información, consulte
Edición de registros en la Guía para desarrolladores de Amazon Route 53.
83
Amazon CloudFront Guía para desarrolladores
Mover un nombre de dominio alternativo
a una distribución de CloudFront diferente
• Si utiliza otro proveedor de servicios de DNS, utilice el método proporcionado por el proveedor del
servicio DNS para actualizar el registro CNAME que dirige el tráfico hacia CloudFront. Para obtener
más información, consulte la documentación de su proveedor de servicios de DNS.
Note
En este punto, el subdominio sigue siendo atendido por la distribución original, ya que allí
es donde el dominio alternativo está configurado actualmente.
5. Con dig o una herramienta similar, confirme que el conjunto de registros de recursos que ha creado
en el paso 4 apunta al nombre de dominio de su distribución.
El siguiente ejemplo muestra una solicitud de dig en un dominio llamado www.example.com y la parte
pertinente de la respuesta.
;; QUESTION SECTION:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 10800 IN CNAME d111111abcdef8.cloudfront.net.
...
Cuando se utilizan registros de alias de Route 53, no es posible utilizar dig para confirmar
que el registro de recursos apunta a la nueva distribución. En este caso, puede cambiar el
tipo de registro de recursos de alias a CNAME, o esperar hasta que el valor de tiempo de vida
(TTL) del registro haya vencido.
6. Elimine el CNAME de la distribución existente y, a continuación, agréguelo a la nueva distribución de
CloudFront a la que se agregó previamente el nombre alternativo comodín.
Note
Mientras se propagan estos cambios, el nombre del dominio alternativo puede ser atendido
por la distribución original o por una nueva, lo que se determina al azar. Este comportamiento
puede persistir durante unos minutos después de que ambas distribuciones hayan alcanzado
el estado Deployed (Implementado).
7. Pruebe el nombre de dominio alternativo visitando algunas URL que usen su nombre de dominio en
lugar del nombre del dominio de CloudFront para su distribución.
8. (Opcional) Ahora se puede quitar el nombre alternativo comodín de la nueva distribución.
9. Si ya no utiliza la distribución original, elimínela. Para obtener más información, consulte Eliminar una
distribución (p. 73).
84
Amazon CloudFront Guía para desarrolladores
Mover un nombre de dominio alternativo
a una distribución de CloudFront diferente
Antes de comenzar, si no tiene una nueva distribución a la que mover el nombre de dominio, cree una.
Para obtener más información, consulte Creación de una distribución (p. 42).
Mover un nombre de dominio como example.com a una nueva distribución consta de dos pasos:
Paso 1: Proporcionar una prueba a AWS Support de que posee su propio nombre de dominio mediante la
creación de un registro TXT para su dominio en su proveedor de servicios de DNS. Esto ayuda a impedir
que otra persona realice cambios en su configuración de distribución.
Paso 2: Solicitar a AWS Support que mueva su dominio a la nueva distribución de CloudFront.
• Si su proveedor de servicios de DNS es Route 53, vaya al paso 3 para ver los pasos detallados.
• Si su dominio está alojado por otro proveedor de servicios de DNS, consulte la documentación en el
proveedor de servicios de DNS. Es posible que tenga que solicitar a su proveedor de servicios que
cree el registro TXT por usted.
Tip
85
Amazon CloudFront Guía para desarrolladores
Eliminar un nombre de dominio alternativo
Paso 2: solicitar a AWS Support que mueva su dominio a la nueva distribución de CloudFront
• Inicie sesión en AWS y póngase en contacto con AWS Support para solicitarles que verifiquen que es
propietario del dominio y que muevan el dominio a una nueva distribución de CloudFront.
Note
AWS Support no puede verificar su propiedad de dominio hasta que puedan ver el registro TXT
que creó para su dominio. Tenga en cuenta que los registros que cree en su proveedor de DNS
pueden tardar un tiempo (hasta varios días) en propagarse a través del sistema de DNS.
Es importante que elimine los nombres de dominio alternativos desde la distribución, además de actualizar
su configuración de DNS. Esto ayuda a evitar problemas más tarde si desea asociar el nombre de
dominio con otra distribución de CloudFront. Si un nombre de dominio alternativo ya está asociado a una
distribución, no se puede configurar con otra.
Note
Si desea eliminar el nombre de dominio alternativo de esta distribución para que pueda añadirlo a
otra, siga los pasos que se indican en Mover un nombre de dominio alternativo a una distribución
de CloudFront diferente (p. 83). Si sigue los pasos que se indican aquí (para eliminar un
dominio) y, a continuación, agrega el dominio a otra distribución, habrá un periodo de tiempo
durante el cual el dominio no se enlazará con la nueva distribución ya que CloudFront se está
propagando a las actualizaciones a las ubicaciones de borde.
1. Para empezar, dirija el tráfico de Internet de su dominio a otro recurso que no sea la distribución de
CloudFront, como un balanceador de carga de Elastic Load Balancing. O bien, puede eliminar el
registro DNS que está dirigiendo tráfico a CloudFront.
Lleve a cabo una de las siguientes acciones, en función del servicio DNS para su dominio:
• Si utiliza Route 53, actualice o elimine registros de alias o registros CNAME. Para obtener más
información, consulte Edición de registros o Eliminación de registros.
• Si utiliza otro proveedor de servicios de DNS, utilice el método proporcionado por el proveedor del
servicio DNS para actualizar o eliminar el registro CNAME que dirige el tráfico hacia CloudFront.
Para obtener más información, consulte la documentación de su proveedor de servicios de DNS.
2. Después de actualizar los registros DNS de su dominio, espere hasta que los cambios se hayan
propagado y los servicios de resolución de nombres DNS redirigen el tráfico al nuevo recurso. Puede
comprobar cuando se completa esto mediante la creación de algunos enlaces de prueba que utilicen
su dominio en la URL.
3. Inicie sesión en la consola de administración de AWS y abra la consola de CloudFront en https://
console.aws.amazon.com/cloudfront/, y actualice su distribución de CloudFront para eliminar el
nombre de dominio haciendo lo siguiente:
86
Amazon CloudFront Guía para desarrolladores
Uso de comodines en los nombres de dominio
alternativos que se agregan a CloudFront
www.example.com/images/image.jpg
product-name.example.com/images/image.jpg
marketing.product-name.example.com/images/image.jpg
Siga estos requisitos para nombres de dominio alternativos que incluyan comodines:
Un nombre de dominio alternativo comodín, como *.example.com, puede incluir un nombre de dominio
alternativo, como example.com, siempre y cuando ambos estén en la misma distribución de CloudFront o
en distribuciones creadas con la misma cuenta de AWS.
Para ser válidos, todos los nombres de dominio alternativos (CNAME) deben estar en minúsculas.
Se debe haber emitido un certificado SSL/TLS válido para los nombres de dominio alternativo
Para agregar un nombre de dominio alternativo (CNAME) para utilizarlo con una distribución de
CloudFront, se debe asociar a la distribución un certificado SSL/TLS válido de confianza que haya sido
emitido para el nombre de dominio alternativo. De este modo, se garantiza que solo las personas con
acceso al certificado del dominio pueden asociar a CloudFront un CNAME relacionado con el dominio.
87
Amazon CloudFront Guía para desarrolladores
Requisitos para el uso de nombres de dominio alternativos
Un certificado de confianza es aquel emitido por AWS Certificate Manager (ACM) o por otra entidad de
certificación (CA) válida; no se puede utilizar un certificado autofirmado. CloudFront admite las mismas
entidades de certificación que Mozilla. Para consultar la lista actualizada, visite Mozilla Included CA
Certificate List.
Para verificar un nombre de dominio alternativo mediante el certificado que se asocia, incluidos
los nombres de dominio alternativos que incluyen comodines, CloudFront comprueba el nombre
alternativo de asunto (SAN) en el certificado. El nombre de dominio alternativo que va a añadir debe
estar incluido en el SAN.
Note
Solo puede haber un certificado asociado a una distribución de CloudFront en cada momento.
Para demostrar que tiene autorización para añadir un nombre de dominio alternativo a la distribución,
realice una de las operaciones siguientes:
• Adjuntar un certificado que incluya el nombre de dominio alternativo, como product-
name.example.com.
• Asociar un certificado con un carácter comodín * al principio de un nombre de dominio, para que
incluya varios subdominios en un certificado. Si especifica un carácter comodín, puede agregar
varios subdominios como nombres de dominio alternativos a CloudFront.
Los siguientes ejemplos ilustran cómo el uso de caracteres comodín en los nombres de dominio de
un certificado sirven para permitirle que agregue otros nombres de dominio alternativos específicos a
CloudFront.
• Desea añadir marketing.example.com como nombre de dominio alternativo. El certificado
incluye el siguiente nombre de dominio: *.example.com. Si asocia este certificado a CloudFront,
puede agregar cualquier nombre de dominio alternativo a la distribución que sustituya el carácter
comodín en ese nivel, como marketing.example.com. También puede, por ejemplo, añadir los
siguientes nombres de dominio alternativos:
• product.example.com
• api.example.com
Sin embargo, no se puede añadir otros nombres de dominio que estén en niveles superiores o
inferiores al carácter comodín. Por ejemplo, no puede añadir los nombres de dominio alternativos
example.com ni marketing.product.example.com.
• Desea añadir example.com como nombre de dominio alternativo. Para ello, debe incluir el nombre
de dominio example.com en el certificado asociado a la distribución.
• Desea añadir marketing.product.example.com como nombre de dominio alternativo. Para
ello, puede incluir *.product.example.com o marketing.product.example.com en el
certificado.
Permiso para cambiar la configuración de DNS
Cuando agrega nombres de dominio alternativos, debe crear registros CNAME para dirigir las
consultas de DNS de los nombres de dominio a la distribución de CloudFront. Para ello, debe tener
permiso para crear registros CNAME en el proveedor de servicios de DNS para los nombres de
dominio alternativos que está utilizando. Por lo general, esto indicará que es el propietario de los
dominios, aunque también puede estar desarrollando una aplicación para el propietario del dominio.
Nombres de dominio alternativos y HTTPS
Si desea que los espectadores utilicen HTTPS con un nombre de dominio alternativo, debe configurar
ajustes adicionales. Para obtener más información, consulte Usar nombres de dominio alternativos y
HTTPS (p. 150).
88
Amazon CloudFront Guía para desarrolladores
Restricciones de uso de nombres de dominio alternativos
Para obtener el número máximo actual de nombres de dominio alternativos que puede agregar a una
distribución o solicitar una cuota (antes denominada límite) más alta, consulte Cuotas generales de
distribuciones (p. 519).
Nombres de dominio alternativos superpuestos y duplicados
Sin embargo, puede añadir un nombre de dominio alternativo comodín como, por ejemplo
*.example.com, que incluya (que se superponga a) un nombre de dominio alternativo no comodín,
como por ejemplo www.example.com. Los nombres de dominio alternativos superpuestos pueden
estar en la misma distribución o en distribuciones diferentes, siempre y cuando ambas distribuciones
se hayan creado con la misma cuenta de AWS.
Si el registro de DNS apunta a una distribución que no es la que está creando o modificando, no podrá
agregar el nombre de dominio alternativo a la distribución. En este caso, debe actualizar DNS en su
proveedor de DNS para poder agregar el nombre de dominio de su distribución de CloudFront.
Para corregirlo, inicie sesión en su proveedor de DNS y quite el registro DNS existente o póngase en
contacto con su proveedor de DNS para eliminarlo. A continuación, cree el registro de DNS correcto
para su distribución, de acuerdo con los pasos que se indican para agregar o cambiar el nombre de
dominio alternativo de una distribución. Para obtener más información, consulte Añadir un nombre
de dominio alternativo (p. 81) o Mover un nombre de dominio alternativo a una distribución de
CloudFront diferente (p. 83).
Domain Fronting
CloudFront incluye protección contra el domain fronting que se produce en diferentes cuentas de
AWS. Domain fronting es una situación en la que un cliente no estándar crea una conexión TLS/
SSL con un nombre de dominio de una cuenta de AWS, pero a continuación realiza una solicitud
HTTPS para un nombre no relacionado de otra cuenta de AWS. Por ejemplo, la conexión TLS puede
conectarse a y www.example.com, a continuación, enviar una solicitud para www.example.org.
Para evitar los casos en los que el domain fronting atraviesa distintas cuentas de AWS, CloudFront
se asegura de que la cuenta de AWS a la que pertenece el certificado que sirve para una conexión
específica siempre coincide con la cuenta de AWS a la que pertenece la solicitud que gestiona en esa
misma conexión.
Si los dos números de cuenta de AWS no coinciden, CloudFront responderá con una respuesta HTTP
421 de solicitud desencaminada para dar al cliente la oportunidad de conectarse mediante el dominio
correcto.
Agregar un nombre de dominio alternativo en el nodo principal (ápex de zona) para un dominio
Al agregar un nombre de dominio alternativo a una distribución, normalmente debe crear un registro
CNAME en su configuración de DNS para dirigir las consultas de DNS del nombre de dominio a su
89
Amazon CloudFront Guía para desarrolladores
Uso de Websockets
distribución de CloudFront. Sin embargo, no puede crear un registro CNAME para el nodo superior
de un espacio de nombres de DNS, también conocido como ápex de zona; el protocolo de DNS no lo
permite. Por ejemplo, si registra el nombre DNS example.com, el ápex de zona será example.com.
No se puede crear un registro CNAME para example.com, pero puede crear registros CNAME para
www.example.com, newproduct.example.comy así sucesivamente.
Si utiliza Route 53 como servicio de DNS, puede crear un conjunto de registros de recursos de alias,
que tiene dos ventajas con respecto a los registros CNAME. Puede crear un conjunto de registros de
recursos de alias para un nombre de dominio en el nodo principal (example.com). Además, al usar un
conjunto de registros de recursos de alias, no tiene que pagar por las consultas de Route 53.
Note
Si habilita IPv6, debe crear dos conjuntos de registros de recursos de alias: uno para dirigir
el tráfico IPv4 (un registro A) y otro para dirigir el tráfico IPv6 (un registro AAAA). Para
obtener más información, consulte Habilitar IPv6 (p. 66) en el tema Valores que deben
especificarse al crear o actualizar una distribución (p. 43).
Para obtener más información, consulte Direccionamiento del tráfico a una distribución web de
Amazon CloudFront mediante el nombre de dominio en la Guía para desarrolladores de Amazon
Route 53.
CloudFront admite conexiones WebSocket necesarias en todo el mundo sin configuración adicional
necesaria. Todas las distribuciones de CloudFront tienen compatibilidad del protocolo WebSocket
integrada, siempre y cuando el cliente y el servidor también admitan el protocolo.
Para establecer una conexión WebSocket regular, el cliente envía una solicitud HTTP que utiliza
actualización de semántica de HTTP para cambiar el protocolo. El servidor puede completar el protocolo
de enlace. La conexión WebSocket permanece abierta y el cliente o el servidor puede enviar marcos de
datos entre sí sin tener que establecer nuevas conexiones cada vez.
Requisitos de WebSocket
Las solicitudes de WebSocket deben cumplir con RFC 6455 (http://tools.ietf.org/html/rfc6455) en los
siguientes formatos estándar.
90
Amazon CloudFront Guía para desarrolladores
Requisitos de WebSocket
91
Amazon CloudFront Guía para desarrolladores
Cuando hay un error de caché (el objeto solicitado no se almacena en caché en la ubicación de borde),
CloudFront envía una solicitud al origen para recuperar el objeto. Esto se denomina una solicitud de origen.
Puede controlar por separado cuáles de estos valores (cadenas de consulta, encabezados y cookies) se
incluyen en la solicitud de origen.
Puede controlar la clave de caché con una política de caché y la solicitud de origen con una política de
solicitud de origen. Al controlar la clave de caché y la solicitud de origen por separado, puede reenviar los
valores de solicitud a su origen sin duplicar el contenido almacenado en caché cuando el contenido no
difiere en función de esos valores.
Contenido
• Control de la clave de caché (p. 93)
• Descripción de las políticas de caché (p. 93)
• Información de políticas (p. 94)
• Configuración del tiempo de vida (TTL) (p. 94)
• Configuración de la clave de caché (p. 94)
• Creación de políticas de caché (p. 98)
• Uso de las políticas de caché administradas (p. 101)
• Asociar una política de caché administrada (p. 102)
• Descripción de las políticas de caché administradas (p. 102)
• Descripción de la clave de caché (p. 103)
• La clave de caché predeterminada (p. 104)
• Personalización de la clave de caché (p. 104)
• Control de solicitudes de origen (p. 105)
• Descripción de políticas de solicitud de origen (p. 106)
• Información de políticas (p. 106)
• Configuración de solicitud de origen (p. 107)
• Creación de políticas de solicitud de origen (p. 108)
• Uso de las políticas de solicitud de origen administrada (p. 111)
• Asociar una política de solicitud de origen administrada (p. 112)
• Descripción de las políticas de solicitud de origen administrada (p. 112)
• Uso de los encabezados HTTP de CloudFront (p. 113)
• Encabezados para determinar el tipo de dispositivo del lector (p. 113)
• Encabezados para determinar la ubicación del lector (p. 114)
• Otros encabezados de CloudFront92(p. 114)
Amazon CloudFront Guía para desarrolladores
Control de la clave de caché
Puede obtener un mejor rendimiento de su sitio web o aplicación cuando tiene una proporción de aciertos
de caché más alta (una mayor proporción de solicitudes de lectores da como resultado un acierto de
caché). Una forma de mejorar la proporción de aciertos de caché es incluir solo los valores mínimos
necesarios en la clave de caché. Para obtener más información, consulte Descripción de la clave de
caché (p. 103).
Para controlar la clave de caché, se utiliza una política de caché de CloudFront. Puede asociar una política
de caché a uno o más comportamientos de caché en una distribución de CloudFront.
Contenido
• Descripción de las políticas de caché (p. 93)
• Información de políticas (p. 94)
• Configuración del tiempo de vida (TTL) (p. 94)
• Configuración de la clave de caché (p. 94)
• Creación de políticas de caché (p. 98)
• Uso de las políticas de caché administradas (p. 101)
• Asociar una política de caché administrada (p. 102)
• Descripción de las políticas de caché administradas (p. 102)
• Descripción de la clave de caché (p. 103)
• La clave de caché predeterminada (p. 104)
• Personalización de la clave de caché (p. 104)
Una política de caché contiene la siguiente configuración, que se clasifica en información de política,
configuración del tiempo de vida (TTL) y configuración de clave de caché.
93
Amazon CloudFront Guía para desarrolladores
Descripción de las políticas de caché
Información de políticas
Nombre
Un nombre para identificar la política de caché. En la consola, se utiliza el nombre para asociar la
política de caché a un comportamiento de caché.
Comentario
Un comentario para describir la política de caché. Esto es opcional, pero puede ayudarle a identificar
el propósito de la política de caché.
La cantidad de tiempo mínima, en segundos, que desea que los objetos permanezcan en la caché
de CloudFront antes de que CloudFront compruebe con el origen si el objeto se ha actualizado. Para
obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).
Tiempo de vida máximo
La cantidad de tiempo máxima, en segundos, que los objetos permanecen en la caché de CloudFront
antes de que CloudFront compruebe con el origen si el objeto se ha actualizado. CloudFront utiliza
esta configuración solo cuando el origen envía los encabezados Cache-Control o Expires con
el objeto. Para obtener más información, consulte Administración de cuánto tiempo se mantiene el
contenido en una caché (vencimiento) (p. 268).
Tiempo de vida (TTL) predeterminado
La cantidad de tiempo predeterminada, en segundos, que desea que los objetos permanezcan en la
caché de CloudFront antes de que CloudFront compruebe con el origen si el objeto se ha actualizado.
CloudFront utiliza este valor de configuración como TTL del objeto solo cuando el origen no envía
encabezados Cache-Control ni Expires con el objeto. Para obtener más información, consulte
Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).
94
Amazon CloudFront Guía para desarrolladores
Descripción de las políticas de caché
Cadenas de consulta
Las cadenas de consulta de URL en las solicitudes de lector que CloudFront incluye en la clave de
caché y en las solicitudes de origen. Para cadenas de consulta, puede elegir una de las opciones
siguientes:
• None (Ninguna): las cadenas de consulta de las solicitudes del lector no se incluyen en la clave de
caché y no se incluyen automáticamente en las solicitudes de origen.
• All (Todas): todas las cadenas de consulta de las solicitudes de lector se incluyen en la clave de
caché y también se incluyen automáticamente en las solicitudes de origen.
• Whitelist (Lista blanca): esta opción le permite especificar cuál de las cadenas de consulta en
las solicitudes de lector se incluyen en la clave de caché y se incluyen automáticamente en las
solicitudes de origen.
• All-Except (Todo excepto): esta opción le permite especificar cuál de las cadenas de consulta en las
solicitudes de lector no se incluyen en la clave de caché y no se incluyen automáticamente en las
solicitudes de origen. Todas las demás cadenas de consulta, excepto las especificadas, se incluyen
en la clave de caché y se incluyen automáticamente en las solicitudes de origen.
Cuando se utiliza la opción Whitelist (Lista blanca) o All-Except (Todo excepto), se especifican las
cadenas de consulta por su nombre, no por su valor. Por ejemplo, fíjese en la ruta URL siguiente:
/content/stories/example-story.html?split-pages=false
Los encabezados HTTP en las solicitudes del lector que CloudFront incluye en la clave de caché y en
las solicitudes de origen. En encabezados, puede elegir una de las siguientes configuraciones:
• None (Ninguno): los encabezados HTTP en las solicitudes de lector no se incluyen en la clave de
caché y no se incluyen automáticamente en las solicitudes de origen.
• Whitelist (Lista blanca): esta opción le permite especificar cuáles de los encabezados HTTP en
las solicitudes de lector se incluyen en la clave de caché y se incluyen automáticamente en las
solicitudes de origen.
Cuando se utiliza la opción Whitelist (Lista blanca), se especifican los encabezados HTTP por su
nombre, no por su valor. Por ejemplo, fíjese en el encabezado HTTP siguiente:
Accept-Language: en-US,en;q=0.5
También puede incluir ciertos encabezados generados por CloudFront en la clave de caché. Para
obtener más información, consulte Uso de los encabezados HTTP de CloudFront (p. 113).
Cookies
Las cookies en las solicitudes del lector que CloudFront incluye en la clave de caché y en las
solicitudes de origen. Para cookies, puede elegir una de las siguientes configuraciones:
• None (Ninguna): las cookies en las solicitudes de lector no se incluyen en la clave de caché y no se
incluyen automáticamente en las solicitudes de origen.
95
Amazon CloudFront Guía para desarrolladores
Descripción de las políticas de caché
• All (Todas): las cookies en las solicitudes de lector se incluyen en la clave de caché y se incluyen
automáticamente en las solicitudes de origen.
• Whitelist (Lista blanca): esta opción le permite especificar cuáles de las cookies en las solicitudes de
lector se incluyen en la clave de caché y se incluyen automáticamente en las solicitudes de origen.
• All-Except (Todo excepto): esta opción le permite especificar cuáles de las cookies en las solicitudes
del lector no se incluyen en la clave de caché y no se incluyen automáticamente en las solicitudes
de origen. Todas las demás cookies, excepto las que especifique, se incluyen en la clave de caché y
se incluyen automáticamente en las solicitudes de origen.
Cuando se utiliza la opción Whitelist (Lista blanca) o All-Except (Todo excepto), se especifican las
cookies por su nombre, no por su valor. Por ejemplo, fíjese en el encabezado Cookie siguiente:
Cookie: session_ID=abcd1234
Esta configuración permite a CloudFront solicitar y almacenar en caché objetos comprimidos en los
formatos de compresión Gzip o Brotli, cuando el lector lo admite. Esta configuración también permite
que la compresión de CloudFront (p. 128) funcione. Los lectores indican su compatibilidad con estos
formatos de compresión con el encabezado HTTP Accept-Encoding.
Note
Los navegadores web Chrome y Firefox admiten compresión Brotli solo cuando la solicitud se
envía mediante HTTPS. Estos navegadores no admiten Brotli con solicitudes HTTP.
96
Amazon CloudFront Guía para desarrolladores
Descripción de las políticas de caché
para objetos comprimidos. Si lo hace, es posible que provoque una disminución en la proporción de
aciertos de caché (p. 252).
A continuación, se explica cómo afecta esta configuración a una distribución de CloudFront. Todos los
escenarios que se muestran a continuación, suponen que la solicitud del lector incluye el encabezado
Accept-Encoding. Cuando la solicitud del lector no incluye el encabezado Accept-Encoding,
CloudFront no incluye este encabezado en la clave de caché y no lo incluye en la solicitud de origen
correspondiente.
Cuando se habilita el almacenamiento en caché de objetos comprimidos para ambos formatos de
compresión
Si el lector admite Gzip y Brotli, es decir, si los valores gzip y br están en el encabezado
Accept-Encoding de la solicitud del lector, CloudFront hace lo siguiente:
• Normaliza el encabezado en Accept-Encoding: br,gzip e incluye el encabezado
normalizado en la clave de caché. La clave de caché no incluye otros valores que estaban en el
encabezado Accept-Encoding enviado por el lector.
• Si la ubicación de borde tiene un objeto comprimido Brotli o Gzip en la caché que coincide con
la solicitud y no ha caducado, la ubicación de borde devuelve el objeto al lector.
• Si la ubicación de borde no tiene un objeto comprimido Brotli o Gzip en la caché que coincida
con la solicitud y no haya vencido, CloudFront incluye el encabezado normalizado (Accept-
Encoding: br,gzip) en la solicitud de origen correspondiente. La solicitud de origen no
incluye otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.
Si el lector admite un formato de compresión pero no el otro, por ejemplo, si gzip es un valor
en el encabezado Accept-Encoding de la solicitud del lector pero br no, CloudFront hace lo
siguiente:
• Normaliza el encabezado en Accept-Encoding: gzip e incluye el encabezado normalizado
en la clave de caché. La clave de caché no incluye otros valores que estaban en el encabezado
Accept-Encoding enviado por el lector.
• Si la ubicación de borde tiene un objeto comprimido Gzip en la caché que coincide con la
solicitud y no ha caducado, la ubicación de borde devuelve el objeto al lector.
• Si la ubicación de borde no tiene un objeto comprimido Gzip en la caché que coincida con
la solicitud y no haya vencido, CloudFront incluye el encabezado normalizado (Accept-
Encoding: gzip) en la solicitud de origen correspondiente. La solicitud de origen no incluye
otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.
Para entender lo que CloudFront hace si el lector admite Brotli pero no Gzip, reemplace los dos
formatos de compresión entre sí en el ejemplo anterior.
Si el lector admite el formato para el que está habilitado el almacenamiento en caché, por
ejemplo, si el almacenamiento en caché de objetos comprimidos está habilitado para Gzip y
el lector admite Gzip (gzip es uno de los valores del encabezado Accept-Encoding de la
solicitud del lector), CloudFront hace lo siguiente:
• Normaliza el encabezado en Accept-Encoding: gzip e incluye el encabezado normalizado
en la clave de caché.
97
Amazon CloudFront Guía para desarrolladores
Creación de políticas de caché
• Si la ubicación de borde tiene un objeto comprimido Gzip en la caché que coincide con la
solicitud y no ha caducado, la ubicación de borde devuelve el objeto al lector.
• Si la ubicación de borde no tiene un objeto comprimido Gzip en la caché que coincida con
la solicitud y no haya vencido, CloudFront incluye el encabezado normalizado (Accept-
Encoding: gzip) en la solicitud de origen correspondiente. La solicitud de origen no incluye
otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.
Este comportamiento es el mismo cuando el lector admite Gzip y Brotli (el encabezado Accept-
Encoding de la solicitud del lector incluye gzip y br como valores), porque en este escenario, el
almacenamiento en caché de objetos comprimidos para Brotli no está habilitado.
Después de crear una política de caché, puede asociarla a uno o más comportamientos de caché en una
distribución de CloudFront.
98
Amazon CloudFront Guía para desarrolladores
Creación de políticas de caché
O bien, para crear un nuevo comportamiento de caché, elija Create Behavior (Crear comportamiento).
4. En Cache and origin request settings (Configuración de la solicitud de origen y caché), asegúrese
de que se elige Use a cache policy and origin request policy (Usar una política de caché y política de
solicitud de origen).
5. En Cache Policy (Política de caché), elija la política de caché que se va a asociar a este
comportamiento de caché.
6. En la parte inferior de la página, elija Yes, Edit (Sí, editar).
1. Utilice el siguiente comando para crear un archivo denominado cache-policy.yaml que contenga
todos los parámetros de entrada del comando create-cache-policy.
Note
La opción yaml-input solo está disponible en la versión 2 de la CLI de AWS. Con la versión
1 de la CLI de AWS, puede generar un archivo de entrada en formato JSON. Para obtener
más información, consulte Generar el esqueleto y los parámetros de entrada de AWS CLI a
partir de un archivo de entrada JSON o YAML en la Guía del usuario de la interfaz de línea de
comandos de AWS.
99
Amazon CloudFront Guía para desarrolladores
Creación de políticas de caché
2. Abra el archivo llamado cache-policy.yaml que acaba de crear. Edite el archivo para especificar
la configuración de política de caché que desee y, a continuación, guarde el archivo. Puede eliminar
campos opcionales del archivo, pero no eliminar los campos obligatorios.
Para obtener más información acerca de la configuración de política de caché, consulte Descripción
de las políticas de caché (p. 93).
3. Utilice el siguiente comando para crear la política de caché utilizando parámetros de entrada del
archivo de cache-policy.yaml.
Anote el valor de Id en la salida del comando. Este es el ID de política de caché y lo necesita para
asociar la política de caché al comportamiento de caché de una distribución de CloudFront.
Para asociar una política de caché a una distribución existente (CLI con archivo de entrada)
Note
La opción --output yaml solo está disponible en la versión 2 de la CLI de AWS. Con la
versión 1 de la CLI de AWS, puede generar la salida en formato JSON. Para obtener más
información, consulte Control de la salida de comandos de la CLI de AWS en la Guía del
usuario de la interfaz de línea de comandos de AWS.
2. Abra el archivo llamado dist-config.yaml que acaba de crear. Edite el archivo, realizando los
siguientes cambios en cada comportamiento de caché que actualice para utilizar una política de
caché.
Para asociar una política de caché a una nueva distribución (CLI con archivo de entrada)
1. Utilice el siguiente comando para crear un archivo denominado distribution.yaml que contenga
todos los parámetros de entrada del comando create-distribution.
100
Amazon CloudFront Guía para desarrolladores
Uso de las políticas de caché administradas
Note
La opción yaml-input solo está disponible en la versión 2 de la CLI de AWS. Con la versión
1 de la CLI de AWS, puede generar un archivo de entrada en formato JSON. Para obtener
más información, consulte Generar el esqueleto y los parámetros de entrada de AWS CLI a
partir de un archivo de entrada JSON o YAML en la Guía del usuario de la interfaz de línea de
comandos de AWS.
2. Abra el archivo llamado distribution.yaml que acaba de crear. En el comportamiento de caché
predeterminado, en el campo CachePolicyId, escriba el ID de política de caché que anotó después
de crear la política. Siga editando el archivo para especificar la configuración de distribución que
desee y, a continuación, guarde el archivo cuando termine.
Para obtener más información acerca de la configuración de distribución, consulte Valores que deben
especificarse al crear o actualizar una distribución (p. 43).
3. Utilice el siguiente comando para crear la distribución mediante los parámetros de entrada del archivo
de distribution.yaml.
Después de crear una política de caché, puede asociarla a un comportamiento de caché mediante una de
las siguientes llamadas a la API:
Contenido
• Asociar una política de caché administrada (p. 102)
• Descripción de las políticas de caché administradas (p. 102)
101
Amazon CloudFront Guía para desarrolladores
Uso de las políticas de caché administradas
Para obtener más información, consulte Creación de políticas de caché (p. 98).
Esta política está diseñada para optimizar la eficacia de la caché minimizando los valores que
CloudFront incluye en la clave de caché. CloudFront no incluye cadenas de consulta ni cookies en
la clave de caché y solo incluye el encabezado Accept-Encoding normalizado. Esto permite a
CloudFront almacenar en caché objetos por separado en los formatos de compresión Gzip y Brotli
cuando el origen los devuelve o cuando se habilita la compresión de borde de CloudFront (p. 128).
Configuración de política
• MinTTL: 1 segundo.
• MaxTTL: 31 536 000 segundos (365 días).
• DefaultTTL: 86 400 segundos (24 horas).
• Cadenas de consulta incluidas en la clave de caché: ninguna.
• Encabezados incluidos en la clave de caché: no se incluye ninguno explícitamente. El encabezado
Accept-Encoding normalizado se incluye porque la configuración de objetos comprimidos en
caché está habilitada. Para obtener más información, consulte Objetos comprimidos en caché
(utiliza el encabezado Accept-Encoding) (p. 96).
• Cookies incluidas en la clave de caché: ninguna.
• Configuración de objetos comprimidos en caché: habilitada. Para obtener más información, consulte
Objetos comprimidos en caché (utiliza el encabezado Accept-Encoding) (p. 96).
Nombre: Managed-CachingOptimizedForUncompressedObjects, ID: b2884449-e4de-46a7-
ac36-70bc7f1ddd6d
Esta política está diseñada para optimizar la eficacia de la caché minimizando los valores incluidos
en la clave de caché. No se incluyen cadenas de consulta, encabezados ni cookies. Esta política es
idéntica a la anterior, pero desactiva la configuración de objetos comprimidos en caché.
Configuración de política
• MinTTL: 1 segundo
• MaxTTL: 31 536 000 segundos (365 días)
• DefaultTTL: 86 400 segundos (24 horas)
• Cadenas de consulta incluidas en la clave de caché: ninguna
• Encabezados incluidos en la clave de caché: ninguno
• Cookies incluidas en la clave de caché: ninguna
• Configuración de objetos comprimidos en caché: desactivada
Nombre: Managed-CachingDisabled, ID: 4135ea2d-6df8-44a3-9df3-4b5a84be39ad
Esta política desactiva el almacenamiento en caché. Esta política es útil para el contenido dinámico y
para las solicitudes que no se pueden almacenar en caché.
102
Amazon CloudFront Guía para desarrolladores
Descripción de la clave de caché
Configuración de política
• MinTTL: 0 segundos
• MaxTTL: 0 segundos
• DefaultTTL: 0 segundos
• Cadenas de consulta incluidas en la clave de caché: ninguna
• Encabezados incluidos en la clave de caché: ninguno
• Cookies incluidas en la clave de caché: ninguna
• Configuración de objetos comprimidos en caché: desactivada
Nombre: Managed-Elemental-MediaPackage, ID: 08627262-05a9-4f76-9ded-b50ca2e3a84f
Esta política está diseñada para su uso con un origen que es un punto de enlace de AWS Elemental
MediaPackage.
Configuración de política
• MinTTL: 0 segundos
• MaxTTL: 31 536 000 segundos (365 días)
• DefaultTTL: 86 400 segundos (24 horas)
• Cadenas de consulta incluidas en la clave de caché:
• m
• start
• end
• aws.manifestfilter
• Encabezados incluidos en la clave de caché:
• Origin
• Cookies incluidas en la clave de caché: ninguna
• Configuración de objetos comprimidos en caché: habilitada. Para obtener más información, consulte
Objetos comprimidos en caché (utiliza el encabezado Accept-Encoding) (p. 96).
Un acierto de caché se produce cuando una solicitud de lector genera la misma clave de caché que una
solicitud anterior y el objeto de esa clave de caché está en la caché de la ubicación de borde y es válido.
Cuando hay un acierto de caché, el objeto solicitado atiende al lector desde una ubicación de borde de
CloudFront, lo que tiene los siguientes beneficios:
Puede obtener un mejor rendimiento de su sitio web o aplicación cuando tiene una proporción de aciertos
de caché mayor (una mayor proporción de solicitudes de lectores que dan lugar a un acierto de caché).
Una forma de mejorar la proporción de aciertos de caché es incluir solo los valores mínimos necesarios en
la clave de caché. Para obtener más información, consulte las siguientes secciones.
Puede modificar los valores (cadenas de consulta de URL, encabezados HTTP y cookies) en la clave de
caché mediante una política de caché (p. 93). (También puede modificar la clave de caché usando
103
Amazon CloudFront Guía para desarrolladores
Descripción de la clave de caché
una función Lambda@Edge (p. 337)). Antes de modificar la clave de caché, es importante comprender
cómo se diseña la aplicación y cuándo y cómo es posible que sirva diferentes respuestas en función de las
características de la solicitud del lector. Cuando un valor de la solicitud del lector determina la respuesta
que devuelve el origen, debe incluir ese valor en la clave de caché. Pero si incluye un valor en la clave de
caché que no afecta a la respuesta que devuelve su origen, es posible que termine almacenando en caché
objetos duplicados.
Otros valores de la solicitud del lector no se incluyen en la clave de caché, de forma predeterminada.
Considere la siguiente solicitud HTTP desde un navegador web.
Cuando una solicitud de lector como esta entra en una ubicación de borde de CloudFront, CloudFront
usa la clave de caché para determinar si hay un acierto de caché. De forma predeterminada, solo la
información mostrada en negrita se incluye en la clave de caché. Si el objeto solicitado no está en la caché
(un error de caché), CloudFront envía una solicitud al origen para obtener el objeto. Después de obtener el
objeto, CloudFront lo devuelve al lector y lo almacena en la caché de la ubicación de borde.
Cuando CloudFront recibe otra solicitud para el mismo objeto, según lo determinado por la clave de caché,
CloudFront sirve el objeto almacenado en caché al lector inmediatamente, sin enviar una solicitud al
origen. Por ejemplo, considere la siguiente solicitud HTTP que aparece después de la solicitud anterior.
Esta solicitud es para el mismo objeto que la solicitud anterior, pero es diferente de la solicitud anterior.
Tiene una cadena de consulta de URL diferente, encabezados User-Agent y Referer diferentes y una
cookie de session_id diferente. Sin embargo, ninguno de estos valores forma parte de la clave de caché
de forma predeterminada, por lo que esta segunda solicitud da como resultado un acierto de caché.
104
Amazon CloudFront Guía para desarrolladores
Control de solicitudes de origen
Por ejemplo, si el servidor de origen utiliza el encabezado HTTP Accept-Language en las solicitudes
del lector para devolver contenido diferente en función del idioma del lector, es posible que desee incluir
este encabezado en la clave de caché. Al hacerlo, CloudFront utiliza este encabezado para determinar los
aciertos de caché e incluye el encabezado en solicitudes de origen (solicitudes que CloudFront envía al
origen cuando hay un error de caché).
Una consecuencia potencial de incluir valores adicionales en la clave de caché es que es posible que
CloudFront termine almacenando en caché objetos duplicados debido a la variación que puede ocurrir
en las solicitudes del lector. Por ejemplo, es posible que los lectores puedan enviar cualquiera de los
siguientes valores para el encabezado Accept-Language:
• en-US,en
• en,en-US
• en-US, en
• en-US
Todos estos valores diferentes indican que el idioma del lector es el inglés, pero la variación puede hacer
que CloudFront almacene en caché el mismo objeto varias veces. Esto puede reducir los aciertos de
caché y aumentar el número de solicitudes de origen. Se puede evitar esta duplicación si no se incluye el
encabezado Accept-Language en la clave de caché y, en su lugar, se configura su sitio web o aplicación
para utilizar diferentes URL para el contenido en diferentes idiomas (por ejemplo, /en-US/content/
stories/example-story.html).
Para cualquier valor dado que se pretenda incluir en la clave de caché, se debe estar seguro de
comprender cuántas variaciones diferentes de ese valor es posible que aparezcan en las solicitudes del
lector. Para ciertos valores de solicitud, rara vez tiene sentido incluirlos en la clave de caché. Por ejemplo,
el encabezado User-Agent puede tener miles de variaciones únicas, por lo que generalmente no es
un buen candidato para incluirlo en la clave de caché. Las cookies que tienen valores específicos del
usuario o específicos de la sesión y son únicas en miles (o incluso millones) de solicitudes tampoco son
buenos candidatos para la inclusión de claves de caché. Si incluye estos valores en la clave de caché,
cada variación única da como resultado otra copia del objeto en la caché. Si estas copias del objeto no
son únicas o si termina con un número tan grande de objetos ligeramente diferentes que cada objeto solo
obtiene un pequeño número de aciertos de caché, es posible que desee considerar un enfoque diferente.
Puede excluir estos valores altamente variables de la clave de caché o puede marcar objetos como no
almacenables en caché.
Tenga cuidado al personalizar la clave de caché. A veces es deseable, pero puede tener consecuencias
no deseadas como almacenar en caché objetos duplicados, reducir la proporción de aciertos de caché y
aumentar el número de solicitudes de origen. Si su sitio web o aplicación de origen necesita recibir ciertos
valores de las solicitudes del lector para análisis, telemetría u otros usos, pero estos valores no cambian el
objeto que devuelve el origen, utilice una política de solicitud de origen (p. 105) para incluir estos valores
en las solicitudes de origen pero no incluirlos en la clave de caché.
• La ruta de URL (solo la ruta, sin cadenas de consulta de URL ni el nombre de dominio)
• El cuerpo de la solicitud (si hay uno)
• Los encabezados HTTP que CloudFront incluye automáticamente en cada solicitud de origen, incluidos
Host, User-Agent y X-Amz-Cf-Id.
105
Amazon CloudFront Guía para desarrolladores
Descripción de políticas de solicitud de origen
Otra información de la solicitud del lector, como cadenas de consulta de URL, encabezados HTTP y
cookies, no se incluye en la solicitud de origen de forma predeterminada. Pero es posible que desee recibir
parte de esta otra información en el origen, por ejemplo, para recopilar datos para análisis o telemetría.
Puede utilizar una política de solicitud de origen para controlar la información que se incluye en una
solicitud de origen.
Las políticas de solicitud de origen son independientes de las políticas de caché (p. 93), que controlan
la clave de caché. Esta separación le permite recibir información adicional en el origen y también mantener
una buena proporción de aciertos de la caché (la proporción de solicitudes de lector que dan lugar a un
acierto de la caché). Para ello, controle por separado qué información se incluye en las solicitudes de
origen (mediante la política de solicitud de origen) y cuál se incluye en la clave de caché (mediante la
política de caché).
Aunque los dos tipos de políticas son independientes, están relacionadas. Todas las cadenas de consulta
de URL, encabezados HTTP y cookies que se incluyen en la clave de caché (mediante una política de
caché) se incluyen automáticamente en las solicitudes de origen. Utilice la política de solicitud de origen
para especificar la información que desea incluir en las solicitudes de origen, pero no en la clave de
caché. Al igual que una política de caché, puede asociar una política de solicitud de origen a uno o más
comportamientos de caché de una distribución de CloudFront.
También puede utilizar una política de solicitud de origen para agregar encabezados HTTP adicionales
a una solicitud de origen que no se incluyeron en la solicitud del lector. CloudFront agrega estos
encabezados adicionales antes de enviar la solicitud de origen, con valores de encabezado que se
determinan automáticamente en función de la solicitud del lector. Para obtener más información, consulte
Uso de los encabezados HTTP de CloudFront (p. 113).
Contenido
• Descripción de políticas de solicitud de origen (p. 106)
• Información de políticas (p. 106)
• Configuración de solicitud de origen (p. 107)
• Creación de políticas de solicitud de origen (p. 108)
• Uso de las políticas de solicitud de origen administrada (p. 111)
• Asociar una política de solicitud de origen administrada (p. 112)
• Descripción de las políticas de solicitud de origen administrada (p. 112)
Una política de solicitud de origen contiene la siguiente configuración, que se clasifica en información de
política y configuración de solicitud de origen.
Información de políticas
Nombre
Un nombre para identificar la política de solicitud de origen. En la consola, se utiliza el nombre para
asociar la política de solicitud de origen a un comportamiento de caché.
Comentario
106
Amazon CloudFront Guía para desarrolladores
Descripción de políticas de solicitud de origen
Cadenas de consulta
Las cadenas de consulta de URL en las solicitudes de lector que CloudFront incluye en las solicitudes
de origen. Para cadenas de consulta, puede elegir una de las opciones siguientes:
• None (Ninguna): las cadenas de consulta en las solicitudes de lector no se incluyen en las
solicitudes de origen.
• All (Todas): todas las cadenas de consulta de las solicitudes de lector se incluyen en las solicitudes
de origen.
• Whitelist (Lista blanca): esta opción le permite especificar cuál de las cadenas de consulta de las
solicitudes de lector se incluye en las solicitudes de origen.
Cuando se utiliza la opción Whitelist (Lista blanca), se especifican cadenas de consulta por su nombre,
no por su valor. Por ejemplo, fíjese en la ruta URL siguiente:
/content/stories/example-story.html?split-pages=false
Los encabezados HTTP en las solicitudes del lector que CloudFront incluye en solicitudes de origen.
En encabezados, puede elegir una de las siguientes configuraciones:
• None (Ninguna): los encabezados HTTP en las solicitudes de lector no se incluyen en solicitudes de
origen.
• All viewer headers (Todos los encabezados del lector): todos los encabezados HTTP de las
solicitudes de lector se incluyen en las solicitudes de origen.
• Whitelist (Lista blanca): esta opción le permite especificar qué encabezados HTTP se incluyen en
solicitudes de origen.
• All viewer headers and whitelisted CloudFront-* headers (Todos los encabezados del lector y
los encabezados CloudFront* incluidos en la lista blanca): todos los encabezados HTTP de las
solicitudes de lector se incluyen en las solicitudes de origen. Además, se especifica cuál de los
encabezados de CloudFront se desea agregar a las solicitudes de origen. Para obtener más
información acerca de los encabezados de CloudFront, consulte Uso de los encabezados HTTP de
CloudFront (p. 113).
Cuando se utiliza la configuración Whitelist (Lista blanca) o All viewer headers and whitelisted
CloudFront-* headers (Todos los encabezados del lector y los encabezados de CloudFront* incluidos
en la lista blanca), se especifican los encabezados HTTP por su nombre, no por su valor. Por ejemplo,
fíjese en el encabezado HTTP siguiente:
Accept-Language: en-US,en;q=0.5
107
Amazon CloudFront Guía para desarrolladores
Creación de políticas de solicitud de origen
Cookies
Las cookies en las solicitudes del lector que CloudFront incluye en solicitudes de origen. Para cookies,
puede elegir una de las siguientes configuraciones:
• None (Ninguna): las cookies en las solicitudes de lector no están incluidas en las solicitudes de
origen.
• All (Todas): las cookies en las solicitudes de lector se incluyen en las solicitudes de origen.
• Whitelist (Lista blanca): esta opción le permite especificar cuáles de las cookies en las solicitudes de
lector se incluyen en las solicitudes de origen.
Cuando utiliza la opción Whitelist (Lista blanca), se especifican las cookies por su nombre, no por su
valor. Por ejemplo, fíjese en el encabezado Cookie siguiente:
Cookie: session_ID=abcd1234
Después de crear una política de solicitud de origen, puede asociarla a uno o más comportamientos de
caché en una distribución de CloudFront.
Las políticas de solicitud de origen no son obligatorias. Cuando un comportamiento de caché no tiene una
política de solicitud de origen asociada, la solicitud de origen incluye todos los valores especificados en la
política de caché (p. 93), pero nada más.
Note
Para utilizar una política de solicitud de origen, el comportamiento de caché también debe utilizar
una política de caché (p. 93). No se puede utilizar una política de solicitud de origen en un
comportamiento de caché sin una política de caché.
Después de crear una política de solicitud de origen, puede asociarla a un comportamiento de caché.
108
Amazon CloudFront Guía para desarrolladores
Creación de políticas de solicitud de origen
Para asociar una política de solicitud de origen a una distribución existente (consola)
O bien, para crear un nuevo comportamiento de caché, elija Create Behavior (Crear comportamiento).
4. En Cache and origin request settings (Configuración de la solicitud de origen y caché), asegúrese
de que se elige Use a cache policy and origin request policy (Usar una política de caché y política de
solicitud de origen).
5. En Origin Request Policy (Política de solicitud de origen), elija la política de solicitud de origen que se
va a asociar a este comportamiento de caché.
6. En la parte inferior de la página, elija Yes, Edit (Sí, editar).
Para asociar una política de solicitud de origen con una nueva distribución (consola)
Para crear una política de solicitud de origen (CLI con archivo de entrada)
Note
La opción yaml-input solo está disponible en la versión 2 de la CLI de AWS. Con la versión
1 de la CLI de AWS, puede generar un archivo de entrada en formato JSON. Para obtener
más información, consulte Generar el esqueleto y los parámetros de entrada de AWS CLI a
partir de un archivo de entrada JSON o YAML en la Guía del usuario de la interfaz de línea de
comandos de AWS.
109
Amazon CloudFront Guía para desarrolladores
Creación de políticas de solicitud de origen
2. Abra el archivo llamado origin-request-policy.yaml que acaba de crear. Edite el archivo para
especificar la configuración de política de solicitud de origen que desee y, a continuación, guarde el
archivo. Puede eliminar campos opcionales del archivo, pero no eliminar los campos obligatorios.
Para obtener más información acerca de la configuración de política de solicitud de origen, consulte
Descripción de políticas de solicitud de origen (p. 106).
3. Utilice el siguiente comando para crear la política de solicitud de origen utilizando parámetros de
entrada del archivo de origin-request-policy.yaml.
Para asociar una política de solicitud de origen a una distribución existente (CLI con archivo de
entrada)
Note
La opción --output yaml solo está disponible en la versión 2 de la CLI de AWS. Con la
versión 1 de la CLI de AWS, puede generar la salida en formato JSON. Para obtener más
información, consulte Control de la salida de comandos de la CLI de AWS en la Guía del
usuario de la interfaz de línea de comandos de AWS.
2. Abra el archivo llamado dist-config.yaml que acaba de crear. Edite el archivo, realizando los
siguientes cambios en cada comportamiento de caché que actualice para utilizar una política de
solicitud de origen.
110
Amazon CloudFront Guía para desarrolladores
Uso de las políticas de solicitud de origen administrada
Para asociar una política de caché a una nueva distribución (CLI con archivo de entrada)
1. Utilice el siguiente comando para crear un archivo denominado distribution.yaml que contenga
todos los parámetros de entrada del comando create-distribution.
Note
La opción yaml-input solo está disponible en la versión 2 de la CLI de AWS. Con la versión
1 de la CLI de AWS, puede generar un archivo de entrada en formato JSON. Para obtener
más información, consulte Generar el esqueleto y los parámetros de entrada de AWS CLI a
partir de un archivo de entrada JSON o YAML en la Guía del usuario de la interfaz de línea de
comandos de AWS.
2. Abra el archivo llamado distribution.yaml que acaba de crear. En el comportamiento de caché
predeterminado, en el campo OriginRequestPolicyId, escriba el ID de política de solicitud
de origen que anotó después de crear la política. Siga editando el archivo para especificar la
configuración de distribución que desee y, a continuación, guarde el archivo cuando termine.
Para obtener más información acerca de la configuración de distribución, consulte Valores que deben
especificarse al crear o actualizar una distribución (p. 43).
3. Utilice el siguiente comando para crear la distribución mediante los parámetros de entrada del archivo
de distribution.yaml.
Después de crear una política de solicitud de origen, puede asociarla a un comportamiento de caché
mediante una de las siguientes llamadas a la API:
111
Amazon CloudFront Guía para desarrolladores
Uso de las políticas de solicitud de origen administrada
administrada, no es necesario escribir ni mantener su propia política de solicitud de origen. Las políticas
administradas utilizan configuraciones optimizadas para casos de uso específicos.
Contenido
• Asociar una política de solicitud de origen administrada (p. 112)
• Descripción de las políticas de solicitud de origen administrada (p. 112)
Para obtener más información, consulte Creación de políticas de solicitud de origen (p. 108).
Esta política incluye solo los encabezados User-Agent y Referer. No incluye cadenas de consulta
ni cookies.
Configuración de política
• Cadenas de consulta incluidas en las solicitudes de origen: ninguna
• Encabezados incluidos en las solicitudes de origen:
• User-Agent
• Referer
• Cookies incluidas en las solicitudes de origen: ninguna
Nombre: Managed-CORS-CustomOrigin, ID: 59781a5b-3903-41f3-afcb-af62929ccde1
Esta política incluye el encabezado que habilita las solicitudes de uso compartido de recursos de
origen cruzado (CORS) cuando el origen es un origen personalizado.
Configuración de política
• Cadenas de consulta incluidas en las solicitudes de origen: ninguna
• Encabezados incluidos en las solicitudes de origen:
• Origin
• Cookies incluidas en las solicitudes de origen: ninguna
Nombre: Managed-CORS-S3Origin, ID: 88a5eaf4-2fd4-4709-b370-b4c650ea3fcf
Esta política incluye los encabezados que habilitan las solicitudes de uso compartido de recursos de
origen cruzado (CORS) cuando el origen es un bucket de Amazon S3.
Configuración de política
• Cadenas de consulta incluidas en las solicitudes de origen: ninguna
• Encabezados incluidos en las solicitudes de origen:
• Origin
• Access-Control-Request-Headers
• Access-Control-Request-Method
112
Amazon CloudFront Guía para desarrolladores
Uso de los encabezados HTTP de CloudFront
Esta política incluye todos los valores (cadenas de consulta, encabezados y cookies) en la solicitud del
lector.
Configuración de política
• Cadenas de consulta incluidas en las solicitudes de origen: todas
• Encabezados incluidos en las solicitudes de origen: todos los encabezados de la solicitud del lector
• Cookies incluidas en las solicitudes de origen: todas
Nombre: Managed-Elemental-MediaTailor-PersonalizedManifests, ID: 775133bc-15f2-49f9-abea-
afb2e0bf67d2
Esta política está diseñada para su uso con un origen que es un punto de enlace de AWS Elemental
MediaTailor.
Configuración de política
• Cadenas de consulta incluidas en las solicitudes de origen: todas
• Encabezados incluidos en las solicitudes de origen:
• Origin
• Access-Control-Request-Headers
• Access-Control-Request-Method
• User-Agent
• X-Forwarded-For
• Cookies incluidas en las solicitudes de origen: ninguna
Para recibir estos encabezados en su origen, utilice una política de solicitud de origen. Para obtener más
información, consulte Control de solicitudes de origen (p. 105).
Para incluir estos encabezados en la clave de caché, utilice una política de caché. Para obtener más
información, consulte Control de la clave de caché (p. 93) y Descripción de la clave de caché (p. 103).
Temas
• Encabezados para determinar el tipo de dispositivo del lector (p. 113)
• Encabezados para determinar la ubicación del lector (p. 114)
• Otros encabezados de CloudFront (p. 114)
113
Amazon CloudFront Guía para desarrolladores
Encabezados para determinar la ubicación del lector
Si un dispositivo entra en más de una categoría, más de un valor podría ser true. Por ejemplo, en el
caso de algunas tabletas, CloudFront podría establecer tanto CloudFront-Is-Mobile-Viewer como
CloudFront-Is-Tablet-Viewer en true.
Para los caracteres no ASCII en los valores de estos encabezados, CloudFront aplica la
codificación de porcentaje de acuerdo con la sección 1.2 de RFC 3986.
114
Amazon CloudFront Guía para desarrolladores
Añadir y acceder al contenido
Temas
• Agregar y acceder al contenido que distribuye CloudFront (p. 115)
• Actualización del contenido existente con una distribución de CloudFront (p. 115)
• Eliminación de contenido para que CloudFront no lo distribuya (p. 117)
• Personalización del formato de URL para archivos en CloudFront (p. 117)
• Especificar un objeto raíz predeterminado (p. 118)
• Invalidar archivos (p. 121)
• Ofrecer archivos comprimidos (p. 128)
• Generación de respuestas de error personalizadas (p. 132)
Cuando agrega un archivo que desee que CloudFront distribuya, asegúrese de agregarlo a uno de los
buckets de Amazon S3 especificados en la distribución o, en el caso de un origen personalizado, a un
directorio en el dominio especificado. Confirme también que el patrón de ruta en el comportamiento de la
caché aplicable envía solicitudes al origen correcto.
Por ejemplo, suponga que el patrón de una ruta de comportamiento de la caché es *.html. Si no dispone
de ningún otro comportamiento de caché configurado para reenviar solicitudes a dicho origen, CloudFront
solo reenviará archivos *.html. En este caso, por ejemplo, CloudFront nunca distribuirá archivos .jpg que
carga al origen, ya que no ha creado un comportamiento de caché que incluya archivos .jpg.
Los servidores de CloudFront no determinan el tipo MIME de los objetos que distribuyen. Al cargar un
archivo en su origen, le recomendamos que establezca el campo de encabezado Content-Type del
mismo.
115
Amazon CloudFront Guía para desarrolladores
Actualización de archivos existentes
con versiones de nombres de archivos
Por ejemplo, en lugar de denominar un archivo de imagen image.jpg, puede llamarlo image_1.jpg. Cuando
desee comenzar a ofrecer una nueva versión del archivo, deberá llamarlo image_2.jpg y actualizar los
enlaces en su sitio o aplicación web para que apunten a image_2.jpg. De forma alternativa, puede colocar
todos los gráficos en un directorio images_v1 y, cuando desee comenzar a distribuir nuevas versiones de
uno o varios gráficos, crear un nuevo directorio images_v2 y actualizar los enlaces para apuntar a dicho
directorio. Con el control de versiones, no es necesario esperar a que un objeto caduque antes de que
CloudFront comience a ofrecer una nueva versión del mismo ni pagar por la invalidación de objetos.
Incluso si crea versiones de sus archivos, recomendamos que defina una fecha de vencimiento. Para
obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).
Note
Especificar nombres de archivo o de directorios con versiones no está relacionado con el control
de versiones de objetos de Amazon S3.
• La versión antigua del archivo en la caché caduque. Para obtener más información, consulte
Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).
• Dicha ubicación de borde reciba una solicitud del archivo de parte de un usuario.
Si utiliza los mismos nombres al sustituir los archivos, no puede controlar cuándo CloudFront comienza a
distribuir los nuevos archivos. De forma predeterminada, CloudFront almacena archivos en las cachés de
ubicaciones de borde durante 24 horas. (Para obtener más información, consulte Administración de cuánto
tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).) Por ejemplo, si sustituye todos los
archivos de un sitio web completo:
• Los archivos de las páginas menos populares pueden no estar en las ubicaciones de borde. Las nuevas
versiones de estos archivos comenzarán a ofrecerse a partir de la siguiente solicitud.
116
Amazon CloudFront Guía para desarrolladores
Eliminación de contenido para
que CloudFront no lo distribuya
• Los archivos de algunas páginas pueden estar en algunas ubicaciones de borde y no en otras, por lo
que los usuarios finales verán distintas versiones en función de la ubicación de borde desde la que los
reciben.
• Es posible que las versiones nuevas de los archivos de las páginas más populares no se ofrezcan
durante hasta 24 horas porque CloudFront puede haber recuperado los archivos de dichas páginas solo
antes de sustituir los archivos con nuevas versiones.
Si desea quitar un archivo de forma inmediata, debe realizar una de estas acciones:
• Invalidar el archivo. Para obtener más información, consulte Invalidar archivos (p. 121).
• Utilizar el control de versiones de archivos. Cuando se utiliza el control de versiones, las distintas
versiones de un archivo tienen diferentes nombres que puede usar en su distribución de CloudFront,
para cambiar el archivo que se devuelve a los lectores. Para obtener más información, consulte
Actualización de archivos existentes con versiones de nombres de archivos (p. 116).
El nombre de dominio que utiliza en las URL de los objetos en sus páginas web o en su aplicación web
puede ser uno de los siguientes:
Por ejemplo, puede utilizar una de las siguientes URL para devolver el archivo image.jpg:
http://d111111abcdef8.cloudfront.net/images/image.jpg
http://example.com/images/image.jpg
Puede utilizar el mismo formato de URL si almacena el contenido en buckets de Amazon S3 o en un origen
personalizado, como uno de sus servidores web.
Note
El formato de URL depende en parte del valor que especifique para Origin Path (Ruta de origen)
en su distribución. Este valor ofrece a CloudFront una ruta de directorio de nivel superior para sus
117
Amazon CloudFront Guía para desarrolladores
Uso de su propio nombre de dominio (Example.com)
objetos. Para obtener más información sobre la configuración de la ruta de origen al crear una
distribución, consulte Ruta de origen (p. 47).
Para obtener más información sobre los formatos de URL, consulte las siguientes secciones.
http://example.com/images/image.jpg
Si tiene previsto utilizar HTTPS entre los lectores y CloudFront, consulte Usar nombres de dominio
alternativos y HTTPS (p. 150).
http://d111111abcdef8.cloudfront.net/images/
http://d111111abcdef8.cloudfront.net/images
Ambos formatos son válidos para el enlace a objetos de CloudFront, pero el hecho de ser coherente puede
ayudar a prevenir problemas cuando desea invalidar un directorio más tarde. CloudFront almacena las
URL exactamente como se definen, incluidas las barras finales. Por tanto, si el formato es incoherente,
tendrá que invalidar las URL de directorio con y sin la barra, para garantizar que CloudFront quite el
directorio.
Resulta incómodo tener que invalidar ambos formatos de URL y puede suponer costos adicionales. Esto
se debe a que si hay que duplicar las invalidaciones para cubrir ambos tipos de URL, se podría exceder el
número máximo de invalidaciones gratuitas permitidas durante el mes. Y si esto ocurre, tendrá que pagar
por todas las invalidaciones, aunque solo exista en CloudFront un formato para cada URL de directorio.
Temas
118
Amazon CloudFront Guía para desarrolladores
Cómo especificar un objeto raíz predeterminado
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 Tipo
complejo DistributionConfig.
Note
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 Control de acceso en
la Guía para desarrolladores de Amazon Simple Storage Service. Para obtener información sobre el
uso de la consola de Amazon S3 para actualizar permisos, vaya a Guía del usuario de la consola 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.
Escriba solo el objeto, por ejemplo, index.html. No añada / antes del nombre del objeto.
e. Seleccione Yes, Edit (Sí, editar) para guardar los cambios.
119
Amazon CloudFront Guía para desarrolladores
Cómo funcionan los encabezados
con objetos raíz predeterminados
b. 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.
http://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:
http://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:
http://d111111abcdef8.cloudfront.net/
Devuelve:
http://d111111abcdef8.cloudfront.net/index.html
Sin embargo, si define un objeto raíz predeterminado, cualquier 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:
http://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 (http://example.com),
CloudFront envía la solicitud a http://example.com/index.php.
120
Amazon CloudFront Guía para desarrolladores
Cómo funciona CloudFront si no se define un objeto raíz
• 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 (p. 164).
• 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.
Invalidar archivos
Si necesita quitar un archivo de cachés de borde de CloudFront antes de que caduquen, puede elegir una
de las siguientes alternativas:
• Invalide el archivo de las cachés perimetrales. La vez siguiente que un lector solicita el archivo,
CloudFront vuelve al origen para recuperar la última versión.
• Utilice el control de versiones de archivos para ofrecer una versión diferente del archivo con un nombre
distinto. Para obtener más información, consulte Actualización de archivos existentes con versiones de
nombres de archivos (p. 116).
Para invalidar archivos, puede especificar la ruta de archivos individuales o una ruta que termine en el
comodín *, que puede ser aplicable a un archivo o a muchos, tal y como se muestra en los siguientes
ejemplos:
• /images/image1.jpg
• /images/image*
• /images/*
Note
Si utiliza la interfaz de línea de comandos de AWS (AWS CLI) para la invalidación de archivos y
especifica una ruta que incluye el comodín *, debe utilizar comillas (") en torno a la ruta.
Por ejemplo: aws cloudfront create-invalidation --distribution-id
distribution_ID --paths "/*"
Puede enviar una cierta cantidad de rutas de invalidación al mes de forma gratuita. Si supera la cantidad
de rutas de invalidación enviadas que se le asignan por mes, pagará un cargo por cada ruta que envíe.
121
Amazon CloudFront Guía para desarrolladores
Elegir entre invalidar archivos y utilizar
nombres de archivo con versiones
Para obtener más información acerca de los cargos por invalidaciones, consulte Cargos por invalidación de
archivo (p. 127).
Temas
• Elegir entre invalidar archivos y utilizar nombres de archivo con versiones (p. 122)
• Determinar qué archivos invalidar (p. 122)
• Especificar los archivos que invalidar (p. 122)
• Invalidar archivos con la consola (p. 125)
• Invalidar archivos mediante la API de CloudFront (p. 127)
• Máximo de solicitud de invalidación simultánea (p. 127)
• Cargos por invalidación de archivo (p. 127)
• El control de versiones le permite controlar qué archivo devuelve una solicitud incluso cuando el usuario
tiene una versión almacenada en caché, ya sea localmente o tras un proxy de almacenamiento en caché
de empresa. Si invalida el archivo, el usuario podría seguir viendo la versión antigua hasta que caduque
en esas cachés.
• Los registros de acceso de CloudFront incluyen los nombres de los archivos, así que el control de
versiones facilita el análisis de los resultados de los cambios de archivos.
• El control de versiones es una forma de ofrecer distintas versiones de archivos a diferentes usuarios.
• El control de versiones simplifica la progresión y restauración de archivos entre revisiones.
• El control de versiones es más económico. Todavía tendrá que pagar la transferencia que hace
CloudFront de las nuevas versiones de los archivos a ubicaciones de borde, pero no tendrá que pagar
por la invalidación de archivos.
Para obtener más información acerca del control de versiones, consulte Actualización de archivos
existentes con versiones de nombres de archivos (p. 116).
Si desea invalidar archivos seleccionados, pero los usuarios no necesariamente obtienen acceso a todos
los del origen, puede determinar qué archivos de CloudFront han sido solicitados por lectores e invalidar
solo esos. Para determinar qué archivos han solicitado los lectores, habilite el registro de acceso de
CloudFront. Para obtener más información acerca de los registros de acceso, consulte Configuración y uso
de registros estándar (registros de acceso) (p. 463).
122
Amazon CloudFront Guía para desarrolladores
Especificar los archivos que invalidar
Las rutas de invalidación diferencian mayúsculas de minúsculas, lo que quiere decir que /images/
image.jpg y /images/Image.jpg especifican dos archivos diferentes.
Cambiar el URI Usando una función Lambda
Si su distribución de CloudFront activa una función de Lambda en eventos de solicitud del lector, y si
la función cambia el URI del archivo solicitado, recomendamos que invalide ambos URI para quitar el
archivo de las cachés de borde de CloudFront:
• El URI de la solicitud del espectador
• El URI después de que la función lo cambiara
Por ejemplo, suponga que su función de Lambda cambia el URI de un archivo de lo siguiente:
https://d111111abcdef8.cloudfront.net/index.html
https://d111111abcdef8.cloudfront.net/en/index.html
Para invalidar el objeto raíz predeterminado (archivo), especifique la ruta del mismo modo que
especifica la de cualquier otro archivo.
Reenvío de cookies
Si configura CloudFront para reenviar cookies a su origen, las cachés de borde de CloudFront pueden
contener varias versiones del archivo. Al invalidar un archivo, CloudFront invalida todas las versiones
del archivo almacenado en caché independientemente de sus cookies asociadas. No se puede
invalidar de manera selectiva algunas versiones y otras no en función de las cookies asociadas.
Para obtener más información, consulte Almacenamiento en caché de contenido en función de
cookies (p. 277).
Reenvío de encabezados
Si ha configurado una lista blanca de CloudFront para reenviar encabezados al origen y para
almacenar en caché en función de los valores de los encabezados, las cachés de borde de
CloudFront pueden contener varias versiones del archivo. Al invalidar un archivo, CloudFront invalida
todas las versiones del archivo almacenado en caché independientemente de los valores de los
encabezados. No se puede invalidar de manera selectiva algunas versiones y otras no en función de
los valores de los encabezados. (Si configura CloudFront para reenviar todos los encabezados a su
origen, CloudFront no almacenará en caché los archivos). Para obtener más información, consulte
Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 280).
Reenvío de cadenas de consulta
Si configura CloudFront para que reenvíe cadenas de consultas a su origen, deberá incluir las
cadenas de consulta a la hora de invalidar archivos, tal y como se muestra en los siguientes ejemplos:
• /images/image.jpg?parameter1=a
• /images/image.jpg?parameter1=b
Si los clientes incluyen cinco cadenas de consulta diferentes para el mismo archivo, puede invalidar el
archivo cinco veces, una vez por cadena de consulta, o utilizar el comodín * en la ruta, tal y como se
muestra en el ejemplo siguiente:
123
Amazon CloudFront Guía para desarrolladores
Especificar los archivos que invalidar
/images/image.jpg*
Para obtener más información acerca del uso de comodines en la ruta de invalidación, consulte
Rutas de invalidación. Para obtener más información acerca de cadenas de consulta, consulte
Almacenamiento en caché de contenido en función de parámetros de cadenas de consulta (p. 274).
Para determinar qué cadenas de consulta están en uso, puede habilitar el registro de CloudFront.
Para obtener más información, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).
Máximo permitido
Para obtener información sobre el número máximo de invalidaciones permitidas, consulte Máximo de
solicitud de invalidación simultánea (p. 127).
Archivos de Microsoft Smooth Streaming
Si la ruta incluye caracteres no ASCII o no seguros, tal y como se define en RFC 1783, codifique los
caracteres como URL. No codifique como URL otros caracteres de la ruta, o CloudFront no invalidará
la versión antigua del archivo actualizado.
Rutas de invalidación
/images/image2.jpg
Note
En la consola de CloudFront, puede omitir la barra diagonal inicial en la ruta, así: images/
image2.jpg. Cuando se utiliza la API de CloudFront directamente, las rutas de invalidación
deben comenzar con una barra diagonal a la izquierda.
También puede invalidar varios archivos simultáneamente mediante el comodín *. El *, que sustituye
a 0 o más caracteres, debe ser el último carácter de la ruta de invalidación. Además, si utiliza la
interfaz de línea de comandos de AWS (AWS CLI) para la invalidación de archivos y especifica una
ruta que incluye el comodín *, debe utilizar comillas (") en torno a la ruta (de esta manera: "/*").
/ruta-directorio/*
• Para invalidar un directorio, todos sus subdirectorios y todos los archivos en el directorio y
subdirectorios:
/ruta-directorio*
• Para invalidar todos los archivos que tienen el mismo nombre, pero diferentes extensiones, como
logo.jpg, logo.png y logo.gif:
/ruta-directorio/nombre-archivo.*
• Para invalidar todos los archivos de un directorio cuyos nombres comienzan por los mismos
caracteres (como, por ejemplo, todos los archivos de video en formato HLS), independientemente
de la extensión del nombre del archivo:
/ruta-directorio/primeros-caracteres-nombre-archivo*
• Si ha configurado CloudFront para almacenar en caché en función de los parámetros de cadenas de
consulta y desea invalidar todas las versiones de un archivo:
124
Amazon CloudFront Guía para desarrolladores
Invalidar archivos con la consola
/ruta-directorio/nombre-archivo.extensión-nombre-archivo*
• Para invalidar todos los archivos de una distribución:
/*
La longitud máxima de una ruta es 4 000 caracteres. No se puede utilizar un comodín dentro de la
ruta; solo al final de la ruta.
Para obtener información sobre la invalidación de archivos si utiliza una función de Lambda para
cambiar el URI, consulte Cambio del URI mediante una función Lambda.
Si utiliza URL firmadas, invalide un archivo incluyendo solo la parte de la URL anterior al signo de
interrogación (?).
Invalidar archivos
Para invalidar archivos mediante la consola de CloudFront, haga lo siguiente.
125
Amazon CloudFront Guía para desarrolladores
Invalidar archivos con la consola
Important
Si copia una invalidación que sigue en curso, actualiza la lista de rutas de anulación y, a
continuación, ejecuta la invalidación actualizada, CloudFront no detiene ni elimina la invalidación
que ha copiado. Si aparece cualquier ruta de invalidación en el original y en la copia, CloudFront
intentará invalidar los archivos dos veces, y ambas invalidaciones se contabilizarán como parte de
la cantidad máxima de invalidaciones gratuitas del mes. Si ya se ha alcanzado la cantidad máxima
de invalidaciones gratuitas, se le facturarán las invalidaciones de ambos archivos. Para obtener
más información, consulte Máximo de solicitud de invalidación simultánea (p. 127).
Si no está seguro de qué invalidación desea copiar, puede elegir una invalidación y elegir Detalles
para mostrar información detallada acerca de la misma.
6. Elija Copy.
7. Actualice la lista de rutas de invalidación si procede.
8. Elija Invalidate (Invalidar).
Cancelación de invalidaciones
Al enviar una solicitud de invalidación a CloudFront, CloudFront reenvía la solicitud a todas las ubicaciones
de borde al cabo de unos segundos, y cada ubicación de borde comienza a procesar la invalidación de
forma inmediata. Por consiguiente, no puede cancelar una invalidación después de enviarla.
Listado de invalidaciones
Puede mostrar una lista de las 100 últimas invalidaciones que ha creado y ejecutado para una distribución
utilizando la consola de CloudFront. Si desea obtener una lista de más de 100 invalidaciones, utilice la
acción de la API ListInvalidations. Para obtener más información, consulte ListInvalidations en la
Referencia de la API de Amazon CloudFront.
126
Amazon CloudFront Guía para desarrolladores
Invalidar archivos mediante la API de CloudFront
Note
No puede eliminar las invalidaciones de la lista.
Si está utilizando el comodín *, puede tener solicitudes de hasta 15 patrones de invalidación ejecutándose
simultáneamente. También puede tener solicitudes de invalidación de hasta 3000 archivos individuales
por distribución ejecutándose simultáneamente; el máximo permitido de solicitudes de invalidación con
comodines es independiente del máximo de invalidación de archivos individuales.
127
Amazon CloudFront Guía para desarrolladores
Ofrecer archivos comprimidos
ejemplo, /images/logo.jpg) o a varios archivos (como, por ejemplo, /images/*). Cualquier ruta que
incluya el comodín * cuenta como una ruta incluso si hace que CloudFront invalide miles de archivos.
Este máximo de 1000 rutas de invalidación gratuitas al mes se aplica al número total de rutas de
invalidación de todas las distribuciones que haya creado con una cuenta de AWS. Por ejemplo, si utiliza
la cuenta de AWS [email protected] para crear tres distribuciones y envía 600 rutas de invalidación
por distribución en un mes (lo que generaría un total de 1 800 rutas de invalidación), AWS cobrará 800
rutas de invalidación ese mes. Para obtener información específica acerca de los precios de invalidación,
consulte Precios de Amazon CloudFront. Para obtener más información acerca de rutas de invalidación,
consulte Rutas de invalidación.
Los navegadores web Chrome y Firefox admiten compresión Brotli solo cuando la solicitud se
envía mediante HTTPS. Estos navegadores no admiten Brotli con solicitudes HTTP.
Al comprimir el contenido, las descargas son más rápidas, ya que los archivos son más pequeños: en
algunos casos: menos de una cuarta parte del original. Especialmente para archivos CSS y JavaScript,
descargas más rápidas pueden resultar en páginas web que se muestran más rápido a los usuarios.
Además, como el costo de transferencia de datos de CloudFront se basa en la cantidad total de datos que
se sirven, enviar archivos comprimidos puede ser más económico que distribuirlos sin comprimir.
Si utiliza un origen personalizado, puede configurar su origen para comprimir archivos. Es posible que su
origen pueda comprimir archivos que CloudFront no comprime (consulte Tipos de archivos que CloudFront
comprime (p. 131)). Si el origen devuelve un archivo comprimido a CloudFront, CloudFront detecta que
el archivo se ha comprimido en función del valor del encabezado Content-Encoding y no comprime el
archivo de nuevo.
Si configura CloudFront para servir contenido comprimido, también debería almacenar en caché objetos
comprimidos (p. 96).
1. Asegúrese de que la opción Compress Objects Automatically (Comprimir objetos automáticamente) está
activada. (En AWS CloudFormation o la API de CloudFront, establezca Compress en true).
2. Utilice una política de caché (p. 93) para especificar la configuración de almacenamiento en caché y
asegúrese de que la configuración de Gzip y Brotli estén habilitadas. (En AWS CloudFormation o la API
de CloudFront, establezca EnableAcceptEncodingGzip y EnableAcceptEncodingBrotli en
true).
3. Asegúrese de que los valores TTL de la política de caché estén establecidos en un valor superior
a cero. Cuando establece los valores de TTL en cero, el almacenamiento en caché se desactiva y
CloudFront no comprime el contenido.
128
Amazon CloudFront Guía para desarrolladores
Uso de CloudFront para comprimir el contenido
Para actualizar un comportamiento de caché, puede utilizar cualquiera de las siguientes herramientas:
• La consola de CloudFront
• AWS CloudFormation
• Los SDK de AWS y las herramientas de línea de comandos
Cuando configura CloudFront para comprimir su contenido, así es como CloudFront sirve su contenido:
1. Puede crear o actualizar una distribución de CloudFront y configurar CloudFront para comprimir
contenido. Para obtener más información, consulte la sección anterior.
2. Un espectador solicita un archivo. El lector incluye el encabezado HTTP Accept-Encoding en la
solicitud y los valores de encabezado incluyen gzip, br o ambos. Esto indica que el espectador admite
contenido comprimido. Cuando el lector admite ambos formatos, CloudFront utiliza Brotli.
Note
Los navegadores web Chrome y Firefox admiten compresión Brotli solo cuando la solicitud se
envía mediante HTTPS. Estos navegadores no admiten Brotli con solicitudes HTTP.
3. En la ubicación de borde, CloudFront comprueba la caché en busca de una versión comprimida del
archivo solicitado.
4. Si el archivo comprimido ya está en la caché, CloudFront lo devuelve al lector y omite los demás pasos.
5. Si el archivo comprimido no está en la caché, CloudFront reenvía la solicitud al servidor de origen, que
puede ser un bucket de Amazon S3 o un origen personalizado.
Note
Si CloudFront dispone de una versión sin comprimir del archivo en la caché, envía igualmente
una solicitud al origen.
6. El servidor de origen devuelve una versión sin comprimir del archivo solicitado a CloudFront.
7. CloudFront determina si el archivo es comprimible:
• El archivo debe ser de un tipo que CloudFront pueda comprimir. Para obtener más información,
consulte Tipos de archivos que CloudFront comprime (p. 131).
• El tamaño del archivo debe ser de entre 1 000 y 10 000 000 bytes.
• La respuesta debe incluir un encabezado Content-Length para que CloudFront pueda determinar
si el tamaño del archivo se encuentra en el intervalo que CloudFront comprime. Si no se encuentra el
encabezado Content-Length, CloudFront no comprime el archivo.
• La respuesta no debe incluir un encabezado Content-Encoding.
8. Si el archivo es comprimible, CloudFront lo comprime, lo devuelve comprimido al lector y lo agrega a la
caché.
9. El espectador descomprime el archivo.
CloudFront comprime archivos para una gran cantidad de tipos. Para ver una lista completa, consulte
Tipos de archivos que CloudFront comprime (p. 131).
129
Amazon CloudFront Guía para desarrolladores
Uso de CloudFront para comprimir el contenido
CloudFront comprime archivos con tamaños entre 1000 y 10 000 000 bytes.
Encabezado Content-Length
El origen debe incluir un encabezado Content-Length en la respuesta para que CloudFront pueda
determinar si el tamaño del archivo se encuentra en el intervalo que comprime. Si no se encuentra el
encabezado Content-Length, CloudFront no comprime el archivo.
Encabezado ETag
Cuando el objeto sin comprimir del origen incluye un encabezado HTTP ETag válido y seguro,
CloudFront convierte el valor de encabezado ETag fuerte en un ETag débil y devuelve el valor ETag
débil al lector. Los lectores pueden almacenar el valor ETag débil y utilizarlo para enviar solicitudes
condicionales con el encabezado HTTP If-None-Match. Esto permite a los lectores, a CloudFront
y al origen tratar las versiones comprimidas y no comprimidas de un objeto como semánticamente
equivalentes, lo que reduce la transferencia de datos innecesaria.
Un valor de encabezado ETag válido y fuerte comienza con un carácter de comillas dobles ("). Para
convertir el valor ETag fuerte en uno débil, CloudFront agrega los caracteres W/ al principio del valor
ETag fuerte.
Cuando el objeto del origen incluye un valor de encabezado ETag débil (un valor que comienza con
los caracteres W/), CloudFront no modifica este valor y lo devuelve al lector tal como se ha recibido del
origen.
Cuando el objeto del origen incluye un valor de encabezado ETag no válido (el valor no comienza por
" ni por W/), CloudFront elimina el encabezado ETag y devuelve el objeto al lector sin el encabezado
de respuesta ETag.
Para obtener más información, consulte las páginas siguientes en los documentos web de MDN:
• Directivas (encabezado HTTP ETag)
• Validación débil (solicitudes condicionales HTTP)
• Encabezado HTTP If-None-Match
Contenido presente en las ubicaciones de borde al configurar CloudFront para comprimir archivos
CloudFront comprime archivos en cada ubicación de borde cuando obtiene los archivos de su origen.
Al configurar CloudFront para comprimir el contenido, CloudFront no comprime los archivos que ya
se han almacenado en caché en ubicaciones de borde. Además, cuando un archivo caduca en una
ubicación de borde y CloudFront envía otra solicitud del archivo al origen, CloudFront no comprime
el archivo si el origen devuelve un código de estado HTTP 304, que significa que la ubicación de
borde ya tiene la última versión del archivo. Si desea que CloudFront comprima los archivos que ya
se han almacenado en ubicaciones de borde, tiene que invalidar esos archivos. Para obtener más
información, consulte Invalidar archivos (p. 121).
Origen ya configurado para comprimir archivos
Si configura CloudFront para comprimir archivos y el origen también comprime archivos, el origen
incluye un encabezado Content-Encoding, que indica que el archivo ya está comprimido.
CloudFront devuelve el archivo almacenado en caché al lector y lo almacena en caché en la ubicación
de borde.
Note
CloudFront no comprime un archivo si la respuesta incluye un encabezado Content-
Encoding, independientemente del valor del encabezado.
La solicitud no incluye el encabezado Accept-Encoding
130
Amazon CloudFront Guía para desarrolladores
Uso de CloudFront para comprimir el contenido
Si una solicitud a CloudFront utiliza HTTP 1.0, CloudFront elimina el encabezado Accept-Encoding
y sirve el contenido sin comprimir.
CloudFront está ocupado
En casos excepcionales, cuando una ubicación de borde de CloudFront está inusualmente ocupada,
algunos archivos no se comprimen.
• application/dash+xml
• application/eot
• application/font
• application/font-sfnt
• application/javascript
• application/json
• application/opentype
• application/otf
• application/pkcs7-mime
• application/protobuf
• application/rss+xml
• application/truetype
• application/ttf
• application/vnd.apple.mpegurl
• application/vnd.mapbox-vector-tile
• application/vnd.ms-fontobject
• application/xhtml+xml
• application/xml
• application/x-font-opentype
• application/x-font-truetype
• application/x-font-ttf
• application/x-httpd-cgi
• application/x-javascript
• application/x-mpegurl
• application/x-opentype
• application/x-otf
• application/x-perl
• application/x-ttf
• font/eot
• font/opentype
• font/otf
131
Amazon CloudFront Guía para desarrolladores
Generación de respuestas de error personalizadas
• font/ttf
• image/svg+xml
• text/css
• text/csv
• text/html
• text/javascript
• text/js
• text/plain
• text/richtext
• text/tab-separated-values
• text/xml
• text/x-component
• text/x-java-source
• text/x-script
• vnd.apple.mpegurl
Puede configurar CloudFront para que devuelva una respuesta de error personalizada al lector, si lo desea.
También tiene varias opciones para administrar cómo responde CloudFront cuando hay un error. Para
especificar opciones para mensajes de error personalizados, se actualiza la distribución de CloudFront
para especificar esos valores. Para obtener más información, consulte Configurar el comportamiento de
respuestas de error (p. 133).
Si configura CloudFront para devolver una página de error personalizada para un código de estado HTTP
pero la página de error personalizada no está disponible, CloudFront devuelve al lector el código de
estado que CloudFront recibió del origen que contiene las páginas de error personalizadas. Por ejemplo,
supongamos que el origen personalizado devuelve un código de estado 500 y que haya configurado
CloudFront para obtener de un bucket de Amazon S3 una página de error personalizada para un código
de estado 500. Sin embargo, alguien ha eliminado accidentalmente la página de error personalizada del
bucket. CloudFront devolverá un código de estado HTTP 404 (no encontrado) al lector que solicitó el
objeto.
Cuando CloudFront devuelve una página de error personalizada a un lector, paga los cargos estándar de
CloudFront por la página de error personalizada, no paga cargos por el objeto solicitado. Para obtener más
información acerca de los cargos de CloudFront, consulte Precios de Amazon CloudFront.
Temas
• Configurar el comportamiento de respuestas de error (p. 133)
• Creación de una página de error personalizada para códigos de estado HTTP específicos (p. 134)
• Almacenamiento de objetos y páginas de error personalizadas en diferentes lugares (p. 135)
• Cambio de códigos de respuesta devueltos por CloudFront (p. 135)
• Control de cuánto tiempo CloudFront almacena los errores en caché (p. 136)
132
Amazon CloudFront Guía para desarrolladores
Configurar el comportamiento de respuestas de error
• Guarde las páginas de error personalizadas en una ubicación accesible para CloudFront. Le
recomendamos que las almacene en un bucket de Amazon S3 y que no las almacene en el mismo
lugar que el resto del contenido de su sitio web o aplicación (p. 135). Si almacena las páginas de error
personalizadas en el mismo origen que su sitio web o aplicación y el origen comienza a devolver errores
5xx, CloudFront no puede obtener las páginas de error personalizadas porque el servidor de origen no
está disponible. Para obtener más información, consulte Almacenamiento de objetos y páginas de error
personalizadas en diferentes lugares (p. 135).
• Asegúrese de que CloudFront tenga permiso para obtener sus páginas de error personalizadas. Si las
páginas de error personalizadas se almacenan en Amazon S3, deben ser accesibles públicamente o
debe configurar una identidad de acceso de origen (OAI) (p. 223)de CloudFront. Si las páginas de error
personalizadas se almacenan en un origen personalizado, deben ser accesibles públicamente.
• (Opcional) Configure su origen para agregar un encabezado Cache-Control o Expires junto con
las páginas de error personalizadas, si lo desea. También puede utilizar la configuración TTL mínimo
de almacenamiento de errores en caché para controlar cuánto tiempo CloudFront almacena en caché
las páginas de error personalizadas. Para obtener más información, consulte Control de cuánto tiempo
CloudFront almacena los errores en caché (p. 136).
133
Amazon CloudFront Guía para desarrolladores
Creación de una página de error personalizada
para códigos de estado HTTP específicos
Para especificar el archivo que desea devolver y los errores por los que se debe devolver este archivo,
debe actualizar la distribución de CloudFront y especificar esos valores. Para obtener más información,
consulte Configurar el comportamiento de respuestas de error (p. 133).
Puede especificar un objeto diferente por código de estado HTTP admitido o el mismo objeto para todos
los códigos de estado admitidos. Puede elegir especificar páginas de error personalizadas para algunos
códigos de estado y no para otros.
Los objetos que ofrece a través de CloudFront pueden no estar disponibles por diversas razones. Estas se
dividen en dos amplias categorías:
• Errores de cliente, que indican un problema con la solicitud. Por ejemplo, un objeto con el nombre
especificado no está disponible o el usuario no tiene los permisos necesarios para obtener un objeto en
el bucket de Amazon S3. Cuando se produce un error de cliente, el origen devuelve a CloudFront un
código de estado HTTP en el intervalo de los 4xx.
• Errores de servidor, que indican un problema con el servidor de origen. Por ejemplo, el servidor HTTP
está ocupado o no disponible. Cuando se produce un error de servidor, el servidor de origen devuelve a
CloudFront un código de estado HTTP en el intervalo de los 5xx o CloudFront no obtiene respuesta del
servidor de origen durante un periodo determinado y supone un código de estado 504 (tiempo de espera
de gateway agotado).
Los códigos de estado HTTP para los que CloudFront puede devolver una página de error personalizada
son:
134
Amazon CloudFront Guía para desarrolladores
Almacenamiento de objetos y páginas de
error personalizadas en diferentes lugares
Puede crear una página de error personalizada para el código de estado HTTP 416 (Intervalo
solicitado no puede ser satisfecho) y puede cambiar el código de estado HTTP que CloudFront
proporciona a los lectores cuando el origen devuelve un código de estado 416 a CloudFront.
(Para obtener más información, consulte Cambio de códigos de respuesta devueltos por
CloudFront (p. 135).) Sin embargo, CloudFront no almacena en caché las respuestas de los
códigos de estado 416, así que, aunque especifique un valor para Error Caching Minimum
TTL (TTL mínimo de almacenamiento de errores en caché) para el código de estado 416,
CloudFront no lo utiliza.
• 500, 501, 502, 503, 504
Note
En algunos casos, CloudFront no devuelve una página de error personalizada para el código
de estado HTTP 503, incluso si configura CloudFront para hacerlo. Si el código de error de
CloudFront es Capacity Exceeded o Limit Exceeded, CloudFront devuelve un código de
estado 503 al lector sin utilizar la página de error personalizada.
Para obtener una explicación detallada acerca de cómo CloudFront gestiona las respuestas de error del
origen, consulte Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xx
desde el origen (p. 323).
• El valor de Path Pattern (Patrón de ruta) debe coincidir con la ruta de los mensajes de error
personalizados. Por ejemplo, supongamos que ha guardado páginas para errores 4xx personalizadas
en un bucket de Amazon S3 en un directorio llamado /4xx-errors. La distribución debe incluir
un comportamiento de la caché cuyo patrón de ruta dirija las solicitudes de las páginas de error
personalizadas a esa ubicación, por ejemplo, /4xx-errors/*.
• El valor de Origin (Origen) especifica el valor de Origin ID (ID de origen) del origen que contiene las
páginas de error personalizadas.
Para obtener más información, consulte Configuración del comportamiento de la caché (p. 52) en el tema
Valores que deben especificarse al crear o actualizar una distribución (p. 43).
• Algunos dispositivos de Internet (algunos firewalls y proxis corporativos, por ejemplo) interceptan los
códigos de estado HTTP 4xx y 5xx y evitan que la respuesta se devuelva al lector. En este escenario, si
sustituye 200, la respuesta no se intercepta.
135
Amazon CloudFront Guía para desarrolladores
Control de cuánto tiempo CloudFront
almacena los errores en caché
Si habilita los registros estándar de CloudFront (p. 463) y configura CloudFront para cambiar el código
de estado HTTP en la respuesta, el valor de la columna sc-status de los registros contiene el código
de estado que se especifique. Sin embargo, el valor de la columna x-edge-result-type no se ve
afectado. Contiene el tipo de resultado de la respuesta del origen. Por ejemplo: supongamos que configura
CloudFront para devolver un código de estado de 200 al espectador cuando el origen devuelve 404 (No
encontrado) a CloudFront. Cuando el origen responda a una solicitud con un código de estado 404, el
valor de la columna sc-status en el registro será 200, pero el valor de la columna x-edge-result-
type será Error.
Puede configurar CloudFront para devolver cualquiera de los siguientes códigos de estado HTTP junto con
una página de error personalizada:
• 200
• 400, 403, 404, 405, 414, 416
• 500, 501, 502, 503, 504
Puede crear una página de error personalizada para el código de estado HTTP 416 (Intervalo
solicitado no puede ser satisfecho) y puede cambiar el código de estado HTTP que CloudFront
proporciona a los lectores cuando el origen devuelve un código de estado 416 a CloudFront.
(Para obtener más información, consulte Cambio de códigos de respuesta devueltos por
CloudFront (p. 135).) Sin embargo, CloudFront no almacena en caché las respuestas de los
códigos de estado 416, así que, aunque especifique un valor para Error Caching Minimum TTL
(TTL mínimo de almacenamiento de errores en caché) para el código de estado 416, CloudFront
no lo utiliza.
Puede especificar la duración de almacenamiento en caché de errores (Error Caching Minimum TTL [TTL
mínimo de almacenamiento de errores en caché]) para cada código de estado 4xx y 5xx que CloudFront
almacena en las caché. Al especificar una duración, tenga en cuenta lo siguiente:
• Si se especifica una duración breve de almacenamiento de errores en caché, CloudFront reenvía más
solicitudes al origen que si se especifica una mayor duración. En el caso de errores 5xx, esto podría
agravar el problema que causó el origen para devolver un error.
• Cuando el origen devuelve un error por un objeto, CloudFront responde a las solicitudes de dicho
objeto con la respuesta de error o con la página de error personalizada hasta que finaliza la duración
de almacenamiento de errores en caché. Si especifica una duración de almacenamiento de errores en
caché mayor, es posible que CloudFront continúe respondiendo a las solicitudes con una respuesta de
error o la página de error personalizada durante mucho tiempo después de que el objeto vuelva a estar
disponible.
136
Amazon CloudFront Guía para desarrolladores
Control de cuánto tiempo CloudFront
almacena los errores en caché
Si desea controlar el tiempo durante el cual CloudFront almacena errores por objetos individuales en la
caché, puede configurar el servidor de origen para agregar el encabezado aplicable a la respuesta de error
por dicho objeto:
CloudFront almacena en caché respuestas de error para el valor mayor en el encabezado o el valor de
Error Caching Minimum TTL (TTL mínimo de almacenamiento de errores en caché).
CloudFront almacena en caché las respuestas de error para el valor de Error Caching Minimum TTL
(TTL mínimo de almacenamiento de errores en caché).
Si la fecha de vencimiento de un código de estado 4xx o 5xx de un objeto es más lejana de lo que desea y
el objeto está disponible nuevamente, puede invalidar el código de error almacenado en caché utilizando
la URL del objeto solicitado. Si el origen devuelve una respuesta de error para varios objetos, es necesario
invalidar cada uno de los objetos por separado. Para obtener más información acerca de las invalidaciones
de objetos, consulte Invalidar archivos (p. 121).
137
Amazon CloudFront Guía para desarrolladores
Uso de HTTPS con CloudFront
Temas
• Uso de HTTPS con CloudFront (p. 138)
• Usar nombres de dominio alternativos y HTTPS (p. 150)
• Distribución de contenido privado con URL firmadas y cookies firmadas (p. 164)
• Restricción del acceso a contenido de Amazon S3 utilizando una identidad de acceso de
origen (p. 223)
• Restringir el acceso a los balanceadores de carga de aplicaciones (p. 230)
• Utilizar AWS WAF para controlar el acceso al contenido (p. 237)
• Restringir la distribución geográfica de su contenido (p. 238)
• Uso del cifrado en el nivel de campo para ayudar a proteger la información confidencial (p. 241)
Si configura CloudFront para exigir HTTPS al comunicarse con lectores y con su origen, esto es lo que
ocurre cuando CloudFront recibe una solicitud de un objeto.
1. Un lector envía una solicitud HTTPS a CloudFront. Hay una negociación SSL/TLS entre el lector y
CloudFront. Al final, el espectador envía la solicitud en un formato cifrado.
2. Si el objeto se encuentra en la caché de borde de CloudFront, CloudFront cifra la respuesta y la
devuelve al lector, quien la descifra.
3. Si el objeto no se encuentra en la caché de CloudFront, CloudFront realiza la negociación SSL/TLS
con su origen y, cuando se haya completado la negociación, reenvía la solicitud al origen en un
formato cifrado.
4. Su origen descifra la solicitud, cifra el objeto solicitado y lo devuelve a CloudFront.
138
Amazon CloudFront Guía para desarrolladores
Exigir HTTPS entre lectores y CloudFront
5. CloudFront descifra la respuesta, vuelve a cifrarla y reenvía el objeto al lector. CloudFront también
guarda el objeto en la caché de borde para que esté disponible la próxima vez que lo solicite.
6. El espectador descifra la respuesta.
Para ayudar a frustrar los ataques de tipo SSL renegociación, CloudFront no admite
renegociación de lector y las solicitudes de origen.
Para obtener información acerca de cómo solicitar HTTPS entre lectores y CloudFront, y entre CloudFront
y su origen, consulte los siguientes temas.
Temas
• Exigir HTTPS para la comunicación entre lectores y CloudFront (p. 139)
• Exigir HTTPS para la comunicación entre CloudFront y su origen personalizado (p. 141)
• Requiriendo HTTPS para la comunicación entre CloudFront y su origen de Amazon S3 (p. 144)
• Protocolos y cifrados admitidos entre lectores y CloudFront (p. 145)
• Protocolos y cifrados admitidos entre CloudFront y el origen (p. 148)
• Cargos por conexiones HTTPS (p. 149)
Puede configurar uno o varios comportamientos de la caché en la distribución de CloudFront para que
requieran HTTPS en la comunicación entre los lectores y CloudFront. También puede configurar uno o
varios comportamientos de la caché para permitir HTTP y HTTPS, de forma que CloudFront requiera
HTTPS para algunos objetos, pero no para otros. Los pasos de configuración dependerán del nombre de
dominio objeto que use en URL de objetos:
• Si utiliza el nombre de dominio que CloudFront ha asignado a su distribución, como, por ejemplo,
d111111abcdef8.cloudfront.net, cambie la configuración de Viewer Protocol Policy (Política de protocolo
del lector) de uno o varios comportamientos de la caché para que exijan que la comunicación se realice
mediante HTTPS. En dicha configuración, CloudFront ofrece el certificado SSL/TLS.
Para cambiar el valor de Viewer Protocol Policy (Política de protocolo del lector) desde la consola de
CloudFront, consulte el procedimiento más adelante en esta sección.
Para obtener información acerca de cómo utilizar la API de CloudFront para cambiar el valor del
elemento ViewerProtocolPolicy, consulte UpdateDistribution en la Referencia de la API de Amazon
CloudFront.
• Si utiliza su propio nombre de dominio, como example.com, necesita cambiar varias configuraciones de
CloudFront. También debe utilizar un certificado SSL/TLS proporcionado por AWS Certificate Manager
139
Amazon CloudFront Guía para desarrolladores
Exigir HTTPS entre lectores y CloudFront
Note
Si desea asegurarse de que los objetos que los lectores obtienen de CloudFront se hayan cifrado
cuando CloudFront los obtenga del origen, utilice siempre HTTPS entre CloudFront y el origen. Si
ha cambiado recientemente de HTTP a HTTPS entre CloudFront y el origen, le recomendamos
que invalide objetos en ubicaciones de borde de CloudFront. CloudFront devolverá un objeto a un
lector independientemente de si el protocolo utilizado por dicho lector (HTTP o HTTPS) coincide
con el protocolo que CloudFront utilizó para obtener el objeto. Para obtener más información
acerca de la eliminación o la sustitución de objetos en una distribución, consulte Agregar, eliminar
o sustituir contenido que distribuye CloudFront (p. 115).
Para solicitar HTTPS entre los lectores y CloudFront para uno o varios comportamientos de la caché, siga
el siguiente procedimiento.
Para configurar CloudFront para que requiera HTTPS entre lectores y CloudFront
Los espectadores pueden utilizar ambos protocolos. Las solicitudes HTTP GET y HEAD se
redirigen automáticamente a solicitudes HTTPS. CloudFront devuelve el código de estado HTTP
301 (Movido permanentemente) junto con la nueva URL HTTPS. A continuación, el lector vuelve a
enviar la solicitud a CloudFront través de la nueva URL HTTPS.
Important
Cuando un lector realiza una solicitud HTTP que se redirige a una solicitud HTTPS, se aplican
cargos de CloudFront a ambas solicitudes. En el caso de la solicitud HTTP, el cargo es solo para
la solicitud y para los encabezados que CloudFront devuelve al lector. En el caso de la solicitud
HTTPS, el cargo es por la solicitud y por los encabezados y el objeto que devuelve el origen.
Solo HTTPS
Los espectadores pueden obtener acceso a su contenido solo si utilizan HTTPS. Si un lector
envía una solicitud HTTP en lugar de una solicitud HTTPS, CloudFront devuelve código de estado
HTTP 403 (Prohibido) y no devuelve el objeto.
5. Elija Yes, Edit (Sí, editar).
140
Amazon CloudFront Guía para desarrolladores
Exigir HTTPS en un origen personalizado
6. Repita los pasos 3 a 5 para cada comportamiento de la caché adicional para el que desee solicitar
HTTPS entre los lectores y CloudFront.
7. Confirme lo siguiente antes de utilizar la configuración actualizada en un entorno de producción:
Si utiliza el nombre de dominio que CloudFront ha asignado a la distribución en las URL de los objetos
(por ejemplo, https://d111111abcdef8.cloudfront.net/logo.jpg), puede hacer obligatorio el uso de
HTTPS siguiendo los procedimientos de este tema para hacer lo siguiente:
• Cambiar la configuración de Origin Protocol Policy (Política de protocolo de origen) para
determinados orígenes de su distribución
• Instalar un certificado SSL/TLS en su servidor de origen personalizado (no es necesario cuando se
utiliza un origen de Amazon S3)
Uso de un nombre de dominio alternativo
En lugar de utilizar el nombre de dominio predeterminado con la distribución, puede añadir un nombre
de dominio alternativo con el que le resulte más sencillo trabajar como, por ejemplo, example.com.
Para hacer obligatorio el uso de HTTPS para las comunicaciones cuando utilice un nombre de
dominio alternativo, siga los pasos y las instrucciones de Usar nombres de dominio alternativos y
HTTPS (p. 150).
Temas
• Cambiar la configuración de CloudFront (p. 141)
• Instalar un certificado SSL/TLS en su servidor de origen personalizado (p. 142)
• Acerca de los cifrados RSA y ECDSA (p. 143)
141
Amazon CloudFront Guía para desarrolladores
Exigir HTTPS en un origen personalizado
origen personalizado. Para obtener información sobre el uso de la API de CloudFront para actualizar una
distribución, consulte UpdateDistribution en la Referencia de la API de Amazon CloudFront.
Para configurar CloudFront para que requiera HTTPS entre CloudFront y su origen personalizado
Cambie Origin Protocol Policy (Política de protocolo de origen) para los orígenes aplicables en su
distribución:
• HTTPS Only (Solo HTTPS): CloudFront solo utiliza HTTPS para comunicarse con su origen
personalizado.
• Match Viewer (Coincidir con lector): CloudFront se comunica con su origen personalizado
mediante HTTP o HTTPS, en función del protocolo de la solicitud del lector. Por ejemplo, si
elige Match Viewer (Coincidir con lector) en Origin Protocol Policy (Política de protocolo de
origen) y el lector usa HTTPS para solicitar un objeto de CloudFront, CloudFront también usa
HTTPS para reenviar la solicitud al origen.
Elija Match Viewer (Coincidir con espectador) solo si especifica Redirect HTTP to HTTPS
(Redireccionamiento de HTTP a HTTPS) o HTTPS Only (Solo HTTPS) en Viewer Protocol
Policy (Política de protocolo del espectador).
Tenga en cuenta que CloudFront almacena en caché el objeto solo una vez, incluso si los
lectores realizan solicitudes a través de los protocolos HTTP y HTTPS.
Origin SSL Protocols
Elija Origin SSL Protocols (Protocolos SSL de orige) para los orígenes aplicables a su
distribución. El protocolo SSLv3 es menos seguro, así que le recomendamos que lo seleccione
únicamente si su origen no admite TLSv1 o una versión posterior. El protocolo de enlace TLSv1
es bidireccionalmente compatible con SSLv3, pero TLSv1.1 y TLSv1.2 no. Cuando selecciona
SSLv3, CloudFront solo envía solicitudes de protocolo de enlace SSLv3.
5. Elija Yes, Edit (Sí, editar).
6. Repita los pasos 3 a 5 para cada origen adicional para el que desee solicitar HTTPS entre CloudFront
y su origen personalizado.
7. Confirme lo siguiente antes de utilizar la configuración actualizada en un entorno de producción:
142
Amazon CloudFront Guía para desarrolladores
Exigir HTTPS en un origen personalizado
Cuando CloudFront utiliza HTTPS para comunicarse con su origen, CloudFront verifica que el certificado
haya sido emitido por una autoridad de certificados de confianza. CloudFront admite las mismas
autoridades de certificados que Mozilla. Para consultar la lista actualizada, consulte Mozilla Included CA
Certificate List. No se puede utilizar un certificado autofirmado para comunicación HTTPS entre CloudFront
y su origen.
Important
El certificado devuelto por el origen debe incluir el dominio que especificó en Origin Domain Name
(Nombre de dominio de origen) para el origen correspondiente en la distribución. Además, si configuró
CloudFront para reenviar el encabezado Host a su origen, el origen debe responder con un certificado que
coincida con el dominio en el encabezado Host.
Para las listas de cifrados RSA y ECDSA admitidos por CloudFront, consulte Protocolos y cifrados
admitidos entre CloudFront y el origen (p. 148).
Si desea mantener el nivel del cifrado mientras sigue utilizando RSA, una opción sería aumentar el tamaño
de sus claves RSA. Sin embargo, este enfoque no es escalable fácilmente ya que las claves más grandes
aumentan el costo de computación para criptografía.
143
Amazon CloudFront Guía para desarrolladores
Requiriendo HTTPS a un origen de Amazon S3
también conocido como Problema del logaritmo discreto de curva elíptica (ECDLP). Esto significa que
puede utilizar longitudes de clave más cortas para conseguir la seguridad equivalente a usar RSA con
tamaños de claves mucho mayores.
Además de proporcionar mejor seguridad, el uso de claves de ECDSA más pequeñas permite un cálculo
más rápido de algoritmos, certificados digitales más pequeños y menos bits para transmitir durante el
protocolo SSL/TLS. En consecuencia, las claves más pequeñas reducen el tiempo requerido para crear
y firmar certificados digitales para terminación SSL/TLS en servidores de origen. El uso de un tamaño
de clave más pequeño, por lo tanto, permite aumentar el desempeño reduciendo los ciclos informáticos
necesarios para criptografía, liberando recursos de servidor para procesar otros trabajos.
CloudFront sigue admitiendo RSA para conexiones SSL/TLS. Sin embargo, si le preocupa la intensidad de
su cifrado actual para la autenticación SSL/TLS en sus servidores de origen, ECDSA podría ser una opción
más recomendable. El esfuerzo para habilitar los certificados digitales de ECDSA en comparación con el
beneficio de seguridad que aporta ECDSA es una desventaja que tendrá que sopesar a la hora de tomar
una decisión. Además de permitir un cifrado más fuerte, la reducción de costo informático de la criptografía
al utilizar ECDSA en sus servidores de origen es una ventaja adicional.
1. Genere una clave privada mediante una de las curvas admitidas (prime256v1, secp384r1 o X25519).
2. Genere un certificado digital ECDSA en el formato PEM X.509 con una autoridad de certificación de
confianza.
3. Configure su origen para que prefiera el certificado ECDSA.
El uso de ECDSA no requiere ningún cambio de configuración en la consola de CloudFront o en las API y
no hay cuota adicional.
Cuando el origen es un bucket de Amazon S3 que permite la comunicación HTTPS, CloudFront siempre
reenvía las solicitudes a S3 con el protocolo que los lectores utilizaron para enviar las solicitudes. El valor
predeterminado para la configuración Origin Protocol Policy (p. 50) es Match Viewer (Coincidir con lector) y
no puede modificarse.
Si desea solicitar HTTPS para la comunicación entre CloudFront y Amazon S3, deberá cambiar el valor de
protocolo de Viewer Protocol Policy (Política de protocolo del lector) a Redirect HTTP to HTTPS (Redirigir
HTTP a HTTPS) o HTTPS Only (Solo HTTPS). En el procedimiento que se indica más adelante en esta
sección se explica cómo usar la consola de CloudFront para cambiar Viewer Protocol Policy (Política de
protocolo del lector). Para obtener información sobre el uso de la API de CloudFront para actualizar el
144
Amazon CloudFront Guía para desarrolladores
Protocolos y cifrados admitidos entre lectores y CloudFront
Si utiliza HTTPS con un bucket de Amazon S3 que admite comunicaciones HTTPS, Amazon S3
proporciona el certificado SSL/TLS para que no tenga hacerlo usted.
Los espectadores pueden usar tanto el protocolo HTTP como el HTTPS, pero las solicitudes
HTTP se redirigirán automáticamente a solicitudes HTTPS. CloudFront devuelve el código de
estado HTTP 301 (Movido permanentemente) junto con la nueva URL HTTPS. A continuación, el
lector vuelve a enviar la solicitud a CloudFront través de la nueva URL HTTPS.
Important
CloudFront no redirige las solicitudes DELETE, OPTIONS, PATCH, POST ni PUT de HTTP
a HTTPS. Si configura un comportamiento de la caché para que redirija a HTTPS,
CloudFront responde a solicitudes HTTP DELETE, OPTIONS, PATCH, POST o PUT de ese
comportamiento de la caché con el código de estado HTTP 403 (Prohibido).
Cuando un lector realiza una solicitud HTTP que se redirige a una solicitud HTTPS, se aplican
cargos de CloudFront a ambas solicitudes. En el caso de la solicitud HTTP, el cargo es solo para
la solicitud y para los encabezados que CloudFront devuelve al lector. En el caso de la solicitud
HTTPS, el cargo es por la solicitud y por los encabezados y el objeto devueltos por el origen.
Solo HTTPS
Los espectadores pueden obtener acceso a su contenido solo si utilizan HTTPS. Si un lector
envía una solicitud HTTP en lugar de una solicitud HTTPS, CloudFront devuelve código de estado
HTTP 403 (Prohibido) y no devuelve el objeto.
5. Elija Yes, Edit (Sí, editar).
6. Repita los pasos 3 a 5 para cada comportamiento de la caché adicional para el que desee solicitar
HTTPS entre los lectores y CloudFront, y entre CloudFront y S3.
7. Confirme lo siguiente antes de utilizar la configuración actualizada en un entorno de producción:
145
Amazon CloudFront Guía para desarrolladores
Protocolos y cifrados admitidos entre lectores y CloudFront
• El protocolo SSL/TLS mínimo que utiliza CloudFront para comunicarse con los lectores.
• Los cifrados que CloudFront puede utilizar para cifrar la comunicación con los lectores.
Para elegir una política de seguridad, especifique el valor aplicable para Política de seguridad (p. 63). En
la siguiente tabla se muestran los protocolos y los cifrados que CloudFront puede utilizar para cada política
de seguridad.
Un lector debe admitir al menos uno de los cifrados compatibles para establecer una conexión HTTPS con
CloudFront. Si utiliza un certificado SSL/TLS en AWS Certificate Manager, un lector debe admitir alguno de
los cifrados *-RSA-*. CloudFront elige un cifrado en el orden mostrado de entre los cifrados que admite el
lector. Véase también Nombres de cifrado OpenSSL, s2n y RFC (p. 147).
Política de seguridad
TLSv1.3¹ ♦ ♦ ♦ ♦ ♦ ♦
TLSv1.2 ♦ ♦ ♦ ♦ ♦ ♦
TLSv1.1 ♦ ♦ ♦ ♦
TLSv1 ♦ ♦ ♦
SSLv3 ♦
Cifrados admitidos
TLS_AES_128_GCM_SHA256 ♦ ♦ ♦ ♦ ♦ ♦
TLS_AES_256_GCM_SHA384 ♦ ♦ ♦ ♦ ♦ ♦
TLS_CHACHA20_POLY1305_SHA256
♦ ♦ ♦ ♦ ♦ ♦
ECDHE-RSA-AES128-GCM- ♦ ♦ ♦ ♦ ♦ ♦
SHA256
ECDHE-RSA-AES128-SHA256 ♦ ♦ ♦ ♦ ♦ ♦
ECDHE-RSA-AES128-SHA ♦ ♦ ♦ ♦
ECDHE-RSA-AES256-GCM- ♦ ♦ ♦ ♦ ♦ ♦
SHA384
ECDHE-RSA-CHACHA20- ♦ ♦ ♦ ♦ ♦ ♦
POLY1305
ECDHE-RSA-AES256-SHA384 ♦ ♦ ♦ ♦ ♦ ♦
ECDHE-RSA-AES256-SHA ♦ ♦ ♦ ♦
AES128-GCM-SHA256 ♦ ♦ ♦ ♦ ♦
AES256-GCM-SHA384 ♦ ♦ ♦ ♦ ♦
AES128-SHA256 ♦ ♦ ♦ ♦ ♦
AES256-SHA ♦ ♦ ♦ ♦
AES128-SHA ♦ ♦ ♦ ♦
146
Amazon CloudFront Guía para desarrolladores
Protocolos y cifrados admitidos entre lectores y CloudFront
Política de seguridad
DES-CBC3-SHA ♦ ♦
RC4-MD5 ♦
¹CloudFront admite un protocolo de enlace de tiempo de ida y vuelta (1-RTT) para TLSv1.3, pero no admite
protocolos de enlace de tiempo de ida y vuelta cero (0-RTT).
Para todos los cifrados de curvas elípticas, CloudFront admite las siguientes curvas elípticas:
• prime256v1
• secp384r1
• X25519
TLS_AES_128_GCM_SHA256 TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384 TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256 TLS_CHACHA20_POLY1305_SHA256
ECDHE-RSA-AES128-GCM-SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
ECDHE-RSA-AES128-SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
ECDHE-RSA-AES128-SHA TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
ECDHE-RSA-AES256-GCM-SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
ECDHE-RSA-CHACHA20-POLY1305 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
ECDHE-RSA-AES256-SHA384 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
ECDHE-RSA-AES256-SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
AES128-GCM-SHA256 TLS_RSA_WITH_AES_128_GCM_SHA256
AES256-GCM-SHA384 TLS_RSA_WITH_AES_256_GCM_SHA384
AES128-SHA256 TLS_RSA_WITH_AES_128_CBC_SHA256
AES256-SHA TLS_RSA_WITH_AES_256_CBC_SHA
AES128-SHA TLS_RSA_WITH_AES_128_CBC_SHA
DES-CBC3-SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA
RC4-MD5 TLS_RSA_WITH_RC4_128_MD5
147
Amazon CloudFront Guía para desarrolladores
Protocolos y cifrados admitidos entre CloudFront y el origen
• TLS_SIGNATURE_SCHEME_RSA_PSS_RSAE_SHA256
• TLS_SIGNATURE_SCHEME_RSA_PSS_RSAE_SHA384
• TLS_SIGNATURE_SCHEME_RSA_PSS_RSAE_SHA512
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA256
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA384
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA512
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA224
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA1
CloudFront puede reenviar solicitudes HTTPS al servidor de origen utilizando los cifrados ECDSA o
RSA mostrados en las siguientes tablas. El servidor de origen debe admitir al menos uno de estos
códigos cifrados de CloudFront para establecer una conexión HTTPS a su origen. Para obtener más
información sobre los dos tipos de cifrados que admite CloudFront, consulte Acerca de los cifrados RSA y
ECDSA (p. 143).
OpenSSL y s2n usan nombres diferentes para cifrar que los estándares de TLS (RFC 2246, RFC 4346,
RFC 5246, y RFC 8446). En las siguientes tablas se mapean los nombres de OpenSSL y s2n al nombre de
RFC para cada uno de los cifrados.
CloudFront admite los siguientes cifrados de RSA para las conexiones con un origen.
Para todos los cifrados de curvas elípticas, CloudFront admite las siguientes curvas elípticas:
• prime256v1
• secp384r1
• X25519
ECDHE-RSA-AES256-GCM-SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
ECDHE-RSA-AES256-SHA384 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
ECDHE-RSA-AES256-SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
ECDHE-RSA-AES128-GCM-SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
ECDHE-RSA-AES128-SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
ECDHE-RSA-AES128-SHA TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
148
Amazon CloudFront Guía para desarrolladores
Cargos por conexiones HTTPS
AES256-SHA TLS_RSA_WITH_AES_256_CBC_SHA
AES128-SHA TLS_RSA_WITH_AES_128_CBC_SHA
DES-CBC3-SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA
RC4-MD5 TLS_RSA_WITH_RC4_128_MD5
CloudFront admite los siguientes cifrados de ECDSA para las conexiones con un origen.
Para todos los cifrados de curvas elípticas, CloudFront admite las siguientes curvas elípticas:
• prime256v1
• secp384r1
• X25519
ECDHE-ECDSA-AES256-GCM-SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
ECDHE-ECDSA-AES256-SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
ECDHE-ECDSA-AES256-SHA TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
ECDHE-ECDSA-AES128-GCM-SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
ECDHE-ECDSA-AES128-SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
ECDHE-ECDSA-AES128-SHA TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
CloudFront admite los siguientes esquemas de firma para las conexiones entre CloudFront y el origen.
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA256
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA384
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA512
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA224
• TLS_SIGNATURE_SCHEME_ECDSA_SHA256
• TLS_SIGNATURE_SCHEME_ECDSA_SHA384
• TLS_SIGNATURE_SCHEME_ECDSA_SHA512
• TLS_SIGNATURE_SCHEME_ECDSA_SHA224
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA1
• TLS_SIGNATURE_SCHEME_ECDSA_SHA1
149
Amazon CloudFront Guía para desarrolladores
Usar nombres de dominio alternativos y HTTPS
Temas
• Elegir cómo CloudFront atiende las solicitudes HTTPS (p. 150)
• Requisitos para la utilización de certificados SSL/TLS con CloudFront (p. 152)
• Cuotas al usar certificados SSL/TLS con CloudFront (solo HTTPS entre lectores y
CloudFront) (p. 155)
• Configurar nombres de dominio alternativos y HTTPS (p. 157)
• Determinar el tamaño de la clave pública en un certificado SSL/TLS (p. 160)
• Ampliar las cuotas de certificados SSL/TLS (p. 160)
• Rotar certificados SSL/TLS (p. 162)
• Volver de un certificado SSL/TLS personalizado al certificado de CloudFront predeterminado (p. 162)
• Cambiar de un certificado SSL/TLS personalizado con direcciones IP dedicadas a SNI (p. 163)
150
Amazon CloudFront Guía para desarrolladores
Elegir cómo CloudFront atiende las solicitudes HTTPS
Para obtener una lista actualizada de los navegadores que admiten SNI, consulte la entrada de Wikipedia
de Server Name Indication.
Si desea utilizar SNI pero algunos de los navegadores de los usuarios no lo admiten, dispone de varias
opciones:
• Configure CloudFront para atender solicitudes HTTPS a través de direcciones IP dedicadas en lugar de
SNI. Para obtener más información, consulte Uso de direcciones IP dedicadas para atender solicitudes
HTTPS (funciona en todos los clientes) (p. 151).
• Utilice el certificado SSL/TLS de CloudFront en lugar de un certificado personalizado. Esto requiere que
utilice el nombre de dominio de CloudFront para la distribución en las URL de los archivos; por ejemplo,
https://d111111abcdef8.cloudfront.net/logo.png.
Si utiliza el certificado de CloudFront predeterminado, los lectores deben admitir el protocolo SSL TLSv1
o versiones posteriores. CloudFront no admite SSLv3 con el certificado de CloudFront predeterminado.
También debe cambiar el certificado SSL/TLS que CloudFront utiliza, de un certificado personalizado al
certificado de CloudFront predeterminado:
• Si no ha usado su distribución para distribuir su contenido, puede simplemente cambiar la
configuración. Para obtener más información, consulte Actualización de una distribución (p. 71).
• Si ha usado su distribución para distribuir el contenido, debe crear una nueva distribución de
CloudFront y cambiar las URL de los archivos para reducir o eliminar la cantidad de tiempo que el
contenido no va a estar disponible. Para obtener más información, consulte Volver de un certificado
SSL/TLS personalizado al certificado de CloudFront predeterminado (p. 162).
• Si puede controlar qué navegador utilizarán los usuarios, haga que lo actualicen a uno que admita SNI.
• Utilice HTTP en lugar de HTTPS.
Si configura CloudFront para atender solicitudes HTTPS mediante direcciones IP dedicadas, CloudFront
asocia el nombre de dominio alternativo a una dirección IP dedicada en cada ubicación de borde de
CloudFront. Cuando un espectador envía una solicitud HTTPS de contenido, esto es lo que ocurre:
151
Amazon CloudFront Guía para desarrolladores
Requisitos para la utilización de
certificados SSL/TLS con CloudFront
Este método funciona con cualquier solicitud HTTPS, independientemente del navegador o espectador que
esté utilizando el usuario.
Temas
• Emisor de certificados (p. 152)
• Región de AWS en la que solicita un certificado (para AWS Certificate Manager) (p. 153)
• Formato del certificado (p. 153)
• Certificados intermedios (p. 153)
• Tipo de clave (p. 153)
• Clave privada (p. 154)
• Permisos (p. 154)
• Tamaño de la clave pública (p. 154)
• Tipos de certificados admitidos (p. 154)
• Fecha de vencimiento y renovación de certificados (p. 154)
• Nombres de dominio en la distribución de CloudFront y en el certificado (p. 155)
• Versión mínima de protocolo SSL (p. 155)
• Versiones de HTTP compatibles (p. 155)
Emisor de certificados
El emisor del certificado que debe utilizar depende de si desea solicitar HTTPS entre los lectores y
CloudFront o entre CloudFront y el origen:
• HTTPS entre los lectores y CloudFront: puede utilizar un certificado emitido por una entidad de
certificación (CA) de confianza como Comodo, DigiCert o Symantec o puede utilizar un certificado
proporcionado por AWS Certificate Manager (ACM).
Important
152
Amazon CloudFront Guía para desarrolladores
Requisitos para la utilización de
certificados SSL/TLS con CloudFront
Cuando CloudFront utiliza HTTPS para comunicarse con el origen, CloudFront comprueba
que una entidad de certificación de confianza ha emitido el certificado. CloudFront admite las
mismas autoridades de certificación que Mozilla; para la lista actualizada, consulte Mozilla
Included CA Certificate List. No puede utilizar un certificado autofirmado para comunicación
HTTPS entre CloudFront y el origen.
Para obtener más información acerca de cómo obtener e instalar un certificado SSL/TLS, consulte la
documentación de su software del servidor HTTP y la de la autoridad de certificados. Para obtener
información sobre ACM, consulte la Guía del usuario de AWS Certificate Manager.
Si desea solicitar HTTPS entre CloudFront y el origen y utiliza un balanceador de carga ELB como origen,
puede solicitar o importar un certificado en cualquier región.
Certificados intermedios
Si utiliza una entidad de certificación (CA) de terceros, en el archivo .pem, incluya una lista de todos
los certificados intermedios de la cadena de certificados, comenzando por uno para el CA que firmó el
certificado para el dominio. Normalmente, en el sitio web de la CA encontrará un archivo que enumera los
certificados intermedios y raíz encadenados de la manera correcta.
Important
No incluya lo siguiente: el certificado raíz y los certificados intermedios que no estén en la ruta de
confianza, ni el certificado de clave pública de la CA.
-----BEGIN CERTIFICATE-----
Intermediate certificate 2
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Intermediate certificate 1
-----END CERTIFICATE-----
Tipo de clave
CloudFront solo admite pares de claves públicas/privadas de RSA.
153
Amazon CloudFront Guía para desarrolladores
Requisitos para la utilización de
certificados SSL/TLS con CloudFront
Clave privada
Si utiliza un certificado de una entidad de certificación (CA) de terceros, tenga en cuenta lo siguiente:
• La clave privada debe coincidir con la clave pública que se encuentra en el certificado.
• La clave privada también debe ser una clave privada RSA en formato PEM, donde el encabezado PEM
es BEGIN RSA PRIVATE KEY y la nota al pie de página es END RSA PRIVATE KEY.
• La clave privada no puede cifrarse con una contraseña.
Si AWS Certificate Manager (ACM) ha proporcionado el certificado, ACM no libera la clave privada. La
clave privada se almacena en ACM para que la usen los servicios de AWS integrados con ACM.
Permisos
Debe tener permiso para usar e importar el certificado SSL/TLS. Si utiliza AWS Certificate Manager (ACM),
le recomendamos que utilice los permisos de AWS Identity and Access Management para restringir el
acceso a los certificados. Para obtener más información, consulte Permisos y políticas en la Guía del
usuario de AWS Certificate Manager.
• Importación de un certificado a AWS Certificate Manager (ACM): la longitud de la clave pública debe ser
de 1024 bits o 2048 bits. La longitud máxima de un certificado que se utiliza con CloudFront es de 2048
bits, aunque ACM admite claves más grandes.
• Cargar un certificado en el almacén de certificados de AWS Identity and Access Management (IAM): el
tamaño máximo de la clave pública es de 2048 bits.
Para obtener información acerca de las claves públicas de los certificados proporcionados por ACM,
consulte Características de los certificados de ACM en la Guía del usuario de AWS Certificate Manager.
Para obtener información acerca de cómo determinar el tamaño de la clave pública, consulte Determinar el
tamaño de la clave pública en un certificado SSL/TLS (p. 160).
154
Amazon CloudFront Guía para desarrolladores
Cuotas al usar certificados SSL/TLS con CloudFront
(solo HTTPS entre lectores y CloudFront)
Si utiliza certificados proporcionados por ACM, ACM administra las renovaciones de esos certificados por
usted. Para obtener más información, consulte Renovación administrada en la Guía del usuario de AWS
Certificate Manager.
Uno de los nombres de dominio del certificado debe coincidir con el nombre de dominio que especifique en
Origin Domain Name. Si no coincide ningún nombre de dominio, CloudFront devuelve al lector el código de
estado HTTP 502 (Bad Gateway).
Para obtener más información, consulte Política de seguridad (p. 63) en el tema Valores que deben
especificarse al crear o actualizar una distribución (p. 43).
155
Amazon CloudFront Guía para desarrolladores
Cuotas al usar certificados SSL/TLS con CloudFront
(solo HTTPS entre lectores y CloudFront)
• AWS Certificate Manager: para la cuota actual del número de certificados de ACM, consulte Cuotas
en la Guía del usuario de AWS Certificate Manager. La cuota mostrada es un total que incluye los
certificados que aprovisione mediante ACM y los que importe a ACM.
• Almacén de certificados de IAM: para la cuota (antes denominada límite) actual en cuanto al número
de certificados que puede cargar en el almacén de certificados de IAM de una cuenta de AWS,
consulte Límites de IAM y STS en la Guía del usuario de IAM. Puede solicitar una cuota más alta en
la consola de administración de AWS.
Cantidad máxima de certificados por cuenta de AWS (solo direcciones IP dedicadas)
Si utiliza una entidad de certificación de terceros y si desea utilizar el mismo certificado con varias
distribuciones de CloudFront creadas con diferentes cuentas de AWS, debe importar el certificado a
ACM o cargarlo en el almacén de certificados de IAM una vez por cada cuenta de AWS.
Si utiliza certificados proporcionados por ACM, no puede configurar CloudFront para utilizar
certificados creados por una cuenta de AWS diferente.
Utilizar el mismo certificado para CloudFront y para otros servicios de AWS (solo almacén de certificados
de IAM)
Puede utilizar el mismo certificado para una o todas las distribuciones de CloudFront que utilice para
atender solicitudes HTTPS. Tenga en cuenta lo siguiente:
• Puede utilizar el mismo certificado tanto para atender solicitudes mediante direcciones IP dedicadas
como para proporcionar solicitudes con SNI.
• Puede asociar solo un certificado a cada distribución.
• Cada distribución debe incluir uno o varios nombres de dominio alternativos que también
aparecerán en los campos Common Name o Subject Alternative Names del certificado.
• Si está atendiendo solicitudes HTTPS mediante direcciones IP dedicadas y ha creado todas
sus distribuciones desde la misma cuenta de AWS, puede reducir significativamente sus costos
utilizando el mismo certificado para todas las distribuciones. CloudFront aplica cargos por cada
certificado, no por cada distribución.
Por ejemplo, suponga que crea tres distribuciones desde la misma cuenta de AWS y que utiliza el
mismo certificado para las tres distribuciones. Se le aplicará solo un cargo por el uso de direcciones
IP dedicadas.
Sin embargo, si atiende solicitudes HTTPS con direcciones IP dedicadas y con el mismo certificado
para crear distribuciones de CloudFront en diferentes cuentas de AWS, a cada cuenta se le aplica
el cargo de utilizar direcciones IP dedicadas. Por ejemplo, si crea tres distribuciones desde tres
156
Amazon CloudFront Guía para desarrolladores
Configurar nombres de dominio alternativos y HTTPS
cuentas de AWS diferentes y utiliza el mismo certificado para las tres distribuciones, a cada cuenta
se cobra la tarifa completa de uso de direcciones IP dedicadas.
Temas
• Solicitar permiso para utilizar tres o más certificados SSL/TLS de direcciones IP dedicadas (p. 157)
• Obtener un certificado SSL/TLS (p. 157)
• Importar un certificado SSL/TLS (p. 158)
• Actualización de la distribución de CloudFront (p. 158)
Este es el procedimiento que se debe seguir para utilizar tres o más certificados de direcciones
IP dedicadas en las distribuciones de CloudFront. El valor predeterminado es 2. Tenga en cuenta
que no puede vincular más de un certificado SSL a una distribución.
Solo puede asociar un único certificado SSL/TLS a una distribución de CloudFront cada vez. Este
es el total de certificados SSL de IP dedicadas que puede utilizar en todas las distribuciones de
CloudFront.
Para solicitar permiso para utilizar tres o más certificados con una distribución de CloudFront
• Para utilizar un certificado proporcionado por AWS Certificate Manager (ACM), consulte la Guía
del usuario de AWS Certificate Manager. A continuación, vaya a Actualización de la distribución de
CloudFront (p. 158).
Note
Le recomendamos que utilice ACM para aprovisionar, administrar e implementar los certificados
SSL/TLS en los recursos administrados de AWS. Debe solicitar un certificado de ACM en la
región EE. UU. Este (Norte de Virginia).
• Para obtener un certificado de una entidad de certificación (CA) de terceros, consulte la documentación
que proporciona. Cuando tenga el certificado, continúe con el siguiente procedimiento.
157
Amazon CloudFront Guía para desarrolladores
Configurar nombres de dominio alternativos y HTTPS
• Para crear un certificado autofirmado, consulte la documentación de la aplicación que está utilizando
para crear y firmar el certificado. A continuación, pase al siguiente procedimiento.
ACM (recomendado)
ACM le permite importar certificados de terceros desde la consola de ACM y de forma programada.
Para obtener información sobre la importación de un certificado a ACM, consulte Importación de
certificados a AWS Certificate Manager en la Guía del usuario de AWS Certificate Manager. Debe
importar el certificado en la región EE. UU. Este (Norte de Virginia).
Almacén de certificados de IAM
(No recomendado) Utilice el siguiente comando de la CLI de AWS para cargar el certificado de
terceros en el almacén de certificados de IAM.
Para obtener más información acerca de la CLI de AWS, consulte la Guía del usuario de la interfaz de
línea de comandos de AWS y la Referencia de comandos de la CLI de AWS.
158
Amazon CloudFront Guía para desarrolladores
Configurar nombres de dominio alternativos y HTTPS
Añada los nombres de dominio alternativos aplicables. Separe los nombres de dominio con
comas o escriba uno por línea.
SSL Certificate
Aquí se enumeran hasta 100 certificados. Si tiene más de 100 certificados y no ve el certificado
que desea añadir, puede escribir un ARN de certificado en el campo para elegirlo.
Para obtener más información, consulte Elegir cómo CloudFront atiende las solicitudes
HTTPS (p. 150).
5. Elija Yes, Edit (Sí, editar).
6. Configure CloudFront para que solicite HTTPS entre lectores y CloudFront:
Los espectadores pueden usar tanto el protocolo HTTP como el HTTPS, pero las solicitudes
HTTP se redirigirán automáticamente a solicitudes HTTPS. CloudFront devuelve el código de
estado HTTP 301 (Moved Permanently) junto con la nueva URL HTTPS. A continuación,
el lector vuelve a enviar la solicitud a CloudFront través de la URL HTTPS.
Important
159
Amazon CloudFront Guía para desarrolladores
Determinar el tamaño de la clave
pública en un certificado SSL/TLS
o PUT para ese comportamiento de la caché con el código de estado HTTP 403
(Forbidden).
Cuando un lector realiza una solicitud HTTP que se redirige a una solicitud HTTPS, se
aplican cargos de CloudFront a ambas solicitudes. En el caso de la solicitud HTTP, el cargo
es solo para la solicitud y para los encabezados que CloudFront devuelve al lector. En el
caso de la solicitud HTTPS, el cargo es por la solicitud y por los encabezados y el archivo
que el origen devuelve.
Solo HTTPS
Los espectadores pueden obtener acceso a su contenido solo si utilizan HTTPS. Si un lector
envía una solicitud HTTP en lugar de una solicitud HTTPS, CloudFront devuelve el código de
estado HTTP 403 (Forbidden) y no devuelve el archivo.
c. Elija Yes, Edit (Sí, editar).
d. Repita los pasos de la "a" a la "c" para cada comportamiento de la caché adicional para el que
desee exigir HTTPS entre los lectores y CloudFront.
7. Confirme lo siguiente antes de utilizar la configuración actualizada en un entorno de producción:
openssl x509 -in path and filename of SSL/TLS certificate -text -noout
Donde:
Ejemplo de resultados:
160
Amazon CloudFront Guía para desarrolladores
Ampliar las cuotas de certificados SSL/TLS
configurar CloudFront para atender solicitudes HTTPS con direcciones IP dedicadas. Sin embargo, puede
solicitar una ampliación de dichas cuotas.
Temas
• Certificados que puede importar a ACM (p. 161)
• Certificados que puede cargar en IAM (p. 161)
• Certificados que puede usar con direcciones IP dedicadas (p. 161)
Para solicitar una cuota más alta, cree un caso en el Centro de soporte de AWS. Especifique los valores
siguientes:
• Acepte el valor predeterminado de Service limit increase (Aumento del límite del servicio).
• Limit type (Tipo de límite): elija Certificate Manager.
• En Region (Región), elija la región de AWS a la que desea importar certificados.
• En Limit (Límite), elija Number of ACM Certificates (Número de certificados de ACM).
Para solicitar una cuota más alta, cree un caso en el Centro de soporte de AWS. Especifique los valores
siguientes:
• Acepte el valor predeterminado de Service limit increase (Aumento del límite del servicio).
• Limit type (Tipo de límite): elija Certificate Manager.
• En Region (Región), elija la región de AWS a la que desea importar certificados.
• En Limit (Límite), elija Server Certificate Limit (IAM) (Límite de certificados del servidor (IAM)).
Para solicitar una cuota más alta, cree un caso en el Centro de soporte de AWS. Especifique los valores
siguientes:
• Acepte el valor predeterminado de Service limit increase (Aumento del límite del servicio).
• En Limit Type (Tipo de límite), elija CloudFront Distributions (Distribuciones de CloudFront).
• En Limit (Límite), elija Dedicated IP SSL Certificate Limit per Account (Límite de certificados SSL con IP
dedicadas por cuenta).
161
Amazon CloudFront Guía para desarrolladores
Rotar certificados SSL/TLS
Si utiliza una autoridad de certificación de terceros y ha importado certificados a ACM (recomendado) o los
ha cargado en el almacén de certificados de IAM, debe sustituir ocasionalmente un certificado por otro. Por
ejemplo, debe sustituir un certificado cuando se aproxime la fecha de vencimiento del certificado.
Important
Para rotar certificados, realice el siguiente procedimiento. Los espectadores pueden seguir obteniendo
acceso a su contenido mientras rota certificados y también una vez completado el proceso.
1. Ampliar las cuotas de certificados SSL/TLS (p. 160) para determinar si necesita permiso para utilizar
más certificados SSL. En caso afirmativo, solicite el permiso y espere hasta que se le conceda antes
de continuar con el paso 2.
2. Importe el nuevo certificado a ACM o cárguelo a IAM. Para obtener más información, consulte
Importación de un certificado SSL/TLS en la Guía para desarrolladores de Amazon CloudFront.
3. Actualice sus distribuciones de una en una para utilizar el nuevo certificado. Para obtener más
información, consulte Descripción, consulta y actualización de distribuciones de CloudFront en la Guía
para desarrolladores de Amazon CloudFront.
4. Después de actualizar todas las distribuciones de CloudFront, puede eliminar el certificado anterior de
ACM o IAM (opcional).
Important
No elimine un certificado SSL/TLS hasta eliminarlo de todas las distribuciones y hasta que el
estado de las distribuciones que ha actualizado haya cambiado a Deployed.
162
Amazon CloudFront Guía para desarrolladores
Cambiar de un certificado SSL/TLS personalizado
con direcciones IP dedicadas a SNI
1. Cree una nueva distribución de CloudFront con la configuración deseada. En SSL Certificate
(Certificado SSL), elija Default CloudFront Certificate (*.cloudfront.net) (Certificado de CloudFront
predeterminado [*.cloudfront.net]).
Para obtener más información, consulte Pasos para crear una distribución (Información
general) (p. 41).
2. En el caso de los archivos distribuidos con CloudFront, actualice las URL en la aplicación
para que utilicen el nombre de dominio que CloudFront ha asignado a la nueva distribución.
Por ejemplo, cambie https://www.example.com/images/logo.png a https://
d111111abcdef8.cloudfront.net/images/logo.png.
3. Elimine la distribución asociada con un certificado SSL/TLS personalizado o actualice la distribución
para cambiar el valor de SSL Certificate (Certificado SSL) a Default CloudFront Certificate
(*.cloudfront.net) (Certificado de CloudFront predeterminado [*.cloudfront.net]). Para obtener más
información, consulte Actualización de una distribución (p. 71).
Important
Hasta que complete este paso, AWS seguirá acumulando cargos por utilizar un certificado
SSL/TLS personalizado.
4. Elimine su certificado SSL/TLS personalizado (opcional).
Esta actualización de la configuración de CloudFront no afecta a los lectores que admiten SNI.
Los lectores pueden acceder al contenido antes y después del cambio, así como mientras el
cambio se propaga a las ubicaciones de borde de CloudFront. Los espectadores que no admiten
SNI no podrán obtener acceso a su contenido tras el cambio. Para obtener más información,
consulte Elegir cómo CloudFront atiende las solicitudes HTTPS (p. 150).
163
Amazon CloudFront Guía para desarrolladores
Restricción de contenido con
URL firmadas y cookies firmadas
• Solicite que los usuarios accedan al contenido privado mediante URL firmadas o cookies firmadas
especiales de CloudFront.
• Solicite que los usuarios accedan al contenido a través de URL de CloudFront, no URL que accedan al
contenido directamente en el servidor de origen (por ejemplo, Amazon S3 o un servidor HTTP privado).
No es necesario solicitar URL de CloudFront, pero lo recomendamos para impedir que los usuarios
eludan las restricciones que especifique en URL firmadas o cookies firmadas.
Temas
• Información general acerca de la distribución de contenido privado (p. 164)
• Lista de tareas para la distribución de contenido privado (p. 166)
• Especificación de los signatarios que pueden crear URL firmadas y cookies firmadas (p. 166)
• Elegir entre URL firmadas y cookies firmadas (p. 173)
• Uso de URL firmadas (p. 174)
• Uso de cookies firmadas (p. 188)
• Uso de comandos de Linux y OpenSSL para codificación y cifrado base64 (p. 204)
• Ejemplos de código para la creación de una firma para una URL firmada (p. 204)
Si crea URL o cookies firmadas para controlar el acceso a sus archivos, puede especificar las siguientes
restricciones:
164
Amazon CloudFront Guía para desarrolladores
Información general acerca de la
distribución de contenido privado
A una parte de una URL firmada o una cookie firmada se le aplica el algoritmo hash y se firma con la
clave privada de un par de claves públicas-privadas. Cuando alguien utiliza una URL firmada o una cookie
firmada para acceder a un archivo, CloudFront compara las partes firmadas y sin firmar de la URL o de la
cookie. Si no coinciden, CloudFront no envía el archivo.
Debe utilizar RSA-SHA1 para firmar URL o cookies. CloudFront no acepta otros algoritmos.
Para solicitar que los usuarios accedan al contenido a través de URL de CloudFront, realice las siguientes
tareas:
• Cree un usuario de CloudFront especial denominado identidad de acceso de origen y asócielo con la
distribución de CloudFront.
• Conceda a la identidad de acceso de origen permiso para leer los archivos del bucket.
• Quite a todos los demás el permiso para usar URL de Amazon S3 para leer los archivos.
Para obtener más información, consulte Restricción del acceso a contenido de Amazon S3 utilizando una
identidad de acceso de origen (p. 223).
Para solicitar que los usuarios accedan al contenido a través de CloudFront, cambie la siguiente
configuración de las distribuciones de CloudFront:
Configure la distribución para solicitar a los lectores que utilicen HTTPS para acceder a CloudFront.
Consulte Viewer Protocol Policy (p. 55).
Origin Protocol Policy
Configure la distribución para solicitar a CloudFront que utilice el mismo protocolo que los lectores
para reenviar solicitudes al origen. Consulte Origin Protocol Policy (p. 50).
165
Amazon CloudFront Guía para desarrolladores
Lista de tareas para la distribución de contenido privado
Después de haber realizado estos cambios, actualice la aplicación en el origen personalizado para aceptar
solo solicitudes que incluyan los encabezados personalizados que ha configurado para que CloudFront los
envíe.
La combinación de Viewer Protocol Policy (Política de protocolo del lector) y Origin Protocol Policy
(Política de protocolo de origen) garantiza que los encabezados personalizados se cifren en tránsito. Sin
embargo, le recomendamos realizar periódicamente las siguientes acciones para rotar los encabezados
personalizados que CloudFront reenvía al origen:
1. Solicite a los usuarios que accedan al contenido solo a través de CloudFront (opcional pero
recomendado). El método que utilice depende de si utiliza Amazon S3 u orígenes personalizados:
• Amazon S3: consulte Restricción del acceso a contenido de Amazon S3 utilizando una identidad de
acceso de origen (p. 223).
• Origen personalizado: consulte Restricción del acceso a archivos en orígenes
personalizados (p. 165).
Los orígenes personalizados incluyen Amazon EC2, buckets de Amazon S3 configurados como
puntos de enlace del sitio web, Elastic Load Balancing y sus propios servidores web HTTP.
2. Especifique los grupos de claves de confianza o los signatarios de confianza que desea utilizar para
crear URL firmadas o cookies firmadas. Le recomendamos que utilice grupos de claves de confianza.
Para obtener más información, consulte Especificación de los signatarios que pueden crear URL
firmadas y cookies firmadas (p. 166).
3. Escriba la aplicación para responder a las solicitudes de los usuarios autorizados con URL firmadas
o con encabezados Set-Cookie que establezcan cookies firmadas. Siga los pasos en uno de los
siguientes temas:
Si no está seguro de qué método utilizar, consulte Elegir entre URL firmadas y cookies
firmadas (p. 173).
166
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios
• Elegir entre grupos de claves de confianza (recomendado) y cuentas de AWS (p. 167)
• Creación de pares de claves para los signatarios (p. 168)
• Volver a formatear la clave privada (solo .NET y Java) (p. 171)
• Agregar un signatario a una distribución (p. 171)
• Rotación de pares de claves (p. 173)
Para crear URL firmadas o cookies firmadas, necesita un signatario. Un signatario es un grupo de
claves de confianza que se crea en CloudFront o una cuenta de AWS que contiene un par de claves
de CloudFront. Le recomendamos que utilice grupos de claves de confianza con URL firmadas y
cookies firmadas. Para obtener más información, consulte Elegir entre grupos de claves de confianza
(recomendado) y cuentas de AWS (p. 167).
• Tan pronto como agregue el signatario a la distribución, CloudFront comienza a requerir que los lectores
utilicen URL firmadas o cookies firmadas para acceder a los archivos.
• Al crear URL firmadas o cookies firmadas, se utiliza la clave privada del par de claves del signatario
para firmar una parte de la URL o la cookie. Cuando alguien solicita un archivo restringido, CloudFront
compara la firma de la URL o la cookie con la URL o la cookie sin firmar, para verificar que no se ha
manipulado. CloudFront también verifica que la URL o la cookie sean válidas, es decir, por ejemplo, que
la fecha y la hora de vencimiento no han pasado todavía.
Cuando se especifica un signatario, también se especifican indirectamente los archivos que requieren URL
firmadas o cookies firmadas al agregar el signatario a un comportamiento de la caché. Si la distribución
solo dispone de un comportamiento de la caché, los lectores deben utilizar URL o cookies firmadas para
acceder a cualquier archivo de la distribución. Si crea varios comportamientos de la caché y agrega
signatarios a algunos de ellos pero no a otros, puede exigir que los lectores utilicen URL o cookies
firmadas para acceder a algunos archivos y no a otros.
Para especificar los signatarios (las claves privadas) autorizados para crear URL firmadas o cookies
firmadas y para agregar los signatarios a la distribución de CloudFront, realice las siguientes tareas:
1. Decida si utilizar un grupo de claves de confianza o una cuenta de AWS como signatario.
Recomendamos utilizar un grupo de claves de confianza. Para obtener más información, consulte
Elegir entre grupos de claves de confianza (recomendado) y cuentas de AWS (p. 167).
2. Para el signatario que eligió en el paso 1, cree un par de claves privadas-públicas. Para obtener más
información, consulte Creación de pares de claves para los signatarios (p. 168).
3. Si utiliza .NET o Java para crear URL firmadas o cookies firmadas, vuelva a formatear la clave
privada. Para obtener más información, consulte Volver a formatear la clave privada (solo .NET y
Java) (p. 171).
4. En la distribución para la que va a crear URL firmadas o cookies firmadas, especifique el signatario.
Para obtener más información, consulte Agregar un signatario a una distribución (p. 171).
• Con los grupos de claves de CloudFront, no es necesario utilizar el usuario raíz de la cuenta de AWS
para administrar las claves públicas de las URL firmadas y las cookies firmadas de CloudFront. Las
prácticas recomendadas de AWS recomiendan no utilizar el usuario raíz cuando no sea necesario.
167
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios
• Con los grupos de claves de CloudFront, puede administrar claves públicas, grupos de claves y
signatarios de confianza mediante la API de CloudFront. Puede usar la API para automatizar la creación
de claves y la rotación de claves. Cuando utiliza el usuario raíz de AWS, debe utilizar la consola de
administración de AWS para administrar los pares de claves de CloudFront, de modo que no puede
automatizar el proceso.
• Dado que puede administrar grupos de claves con la API de CloudFront, también puede utilizar las
políticas de permisos de AWS Identity and Access Management (IAM) para limitar lo que los distintos
usuarios pueden hacer. Por ejemplo, puede permitir a los usuarios cargar claves públicas, pero no
eliminarlas. También puede permitir que los usuarios eliminen claves públicas, pero solo cuando se
cumplen ciertas condiciones, como el uso de la autenticación multifactor, el envío de la solicitud desde
una red determinada o el envío de la solicitud dentro de un intervalo de fecha y hora determinado.
Cuando utiliza el usuario raíz de la cuenta de AWS para administrar pares de claves de CloudFront,
no puede restringir lo que puede hacer el usuario raíz ni las condiciones en las que puede hacerlo. No
puede aplicar políticas de permisos de IAM al usuario raíz, que es una de las razones por las que las
prácticas recomendadas de AWS recomiendan no usar el usuario raíz.
• Con los grupos de claves de CloudFront, puede asociar un número mayor de claves públicas con la
distribución de CloudFront, lo que le concede más flexibilidad en la forma de usar y administrar las
claves públicas. De forma predeterminada, puede asociar hasta cuatro grupos de claves con una sola
distribución y puede tener hasta cinco claves públicas en un grupo de claves.
Cuando utiliza el usuario raíz para administrar pares de claves de CloudFront, solo puede tener hasta
dos pares de claves activos de CloudFront por cuenta de AWS.
La forma en que se crea un par de claves depende de si se utiliza un grupo de claves de confianza como
el signatario (recomendado) o un par de claves de CloudFront. Para obtener más información, consulte las
siguientes secciones. El par de claves que cree debe cumplir los siguientes requisitos:
Para ayudar a proteger las aplicaciones, le recomendamos que cambie los pares de claves
periódicamente. Para obtener más información, consulte Rotación de pares de claves (p. 173).
168
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios
En los siguientes pasos se utiliza OpenSSL como ejemplo de una forma de crear un par de
claves. Hay muchas otras formas de crear un par de claves RSA.
1. El siguiente comando de ejemplo utiliza OpenSSL para generar un par de claves RSA con una
longitud de 2048 bits y guardarlo en el archivo denominado private_key.pem.
2. El archivo resultante contiene tanto la clave pública como la privada. El siguiente comando de ejemplo
extrae la clave pública del archivo denominado private_key.pem.
a. En Key name (Nombre de la clave), escriba un nombre para identificar la clave pública.
b. En Key value (Valor de clave), pegue la clave pública. Si ha seguido los pasos del procedimiento
anterior, la clave pública se encuentra en el archivo denominado public_key.pem. Para copiar
y pegar el contenido de la clave pública, puede:
cat public_key.pem
Copie el resultado de ese comando y péguelo en el campo Key value (Valor de clave).
• Abra el archivo public_key.pem con un editor de texto sin formato como el Bloc de notas (en
Windows) o TextEdit (en macOS). Copie el contenido del archivo y péguelo en el campo Key
value (Valor de clave).
c. (Opcional) En Comment (Comentario), agregue un comentario para describir la clave pública.
169
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios
a. En Key group name (Nombre del grupo de claves), escriba un nombre para identificar el grupo de
claves.
b. (Opcional) En Comment (Comentario), escriba un comentario para describir el grupo de claves.
c. En Public keys (Claves públicas), seleccione la clave pública que desea agregar al grupo de
claves y, a continuación, elija Add (Agregar). Repita este paso para cada clave pública que desee
agregar al grupo de claves.
5. Elija Create key group (Crear grupo de claves).
6. Registre el nombre del grupo de claves. Se utiliza más adelante para asociar el grupo de claves con
un comportamiento de la caché en una distribución de CloudFront. (En la API de CloudFront, se utiliza
el ID del grupo de claves para asociar el grupo de claves con un comportamiento de la caché).
Crear un par de claves de CloudFront (no recomendado, requiere el usuario raíz de la cuenta de
AWS)
Important
Se recomienda crear una clave pública para un grupo de claves de confianza en lugar de seguir
estos pasos. Para obtener información sobre la forma recomendada de crear claves públicas para
URL firmadas y cookies firmadas, consulte Crear un par de claves para un grupo de claves de
confianza (recomendado) (p. 168).
• Cree un par de claves en la consola de administración de AWS y descargue la clave privada. Consulte el
procedimiento siguiente.
• Cree un par de claves RSA mediante una aplicación como OpenSSL y, a continuación, cargue la clave
pública en la consola de administración de AWS. Para obtener más información acerca de la creación
de un par de claves RSA, consulte Crear un par de claves para un grupo de claves de confianza
(recomendado) (p. 168).
1. Inicie sesión en la consola de administración de AWS utilizando las credenciales del usuario raíz de la
cuenta de AWS.
Important
Los usuarios de IAM no pueden crear pares de claves de CloudFront. Debe iniciar sesión con
credenciales de usuario raíz para crear pares de claves.
2. Elija el nombre de la cuenta y, a continuación, elija My Security Credentials (Mis credenciales de
seguridad).
3. Elija CloudFront key pairs (Pares de claves de CloudFront).
4. Confirme que no tiene más de un par de claves activas. No se puede crear un par de claves si ya
dispone de dos pares de claves activos.
5. Elija Create New Key Pair (Crear un nuevo par de claves).
Note
También puede elegir crear su propio par de claves y cargar la clave pública. Los pares de
claves de CloudFront admiten claves de 1024, 2048 o 4096 bits.
170
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios
6. En el cuadro de diálogo Create Key Pair (Crear par de claves), elija Download Private Key File
(Descargar archivo de claves privadas) y, a continuación, guarde el archivo en el equipo.
Important
Guarde la clave privada del par de claves de CloudFront en un lugar seguro y establezca
permisos en el archivo para que solo los administradores que usted decida puedan leerlo. Si
alguien obtiene su clave privada, puede generar URL y cookies firmadas válidas y descargar
su contenido. No podrá obtener la clave privada de nuevo, por lo que si la pierde o la elimina,
deberá crear un nuevo par de claves de CloudFront.
7. Registre el ID de su par de claves. (En la consola de administración de AWS, esto se denomina
Access Key ID [ID de clave de acceso]). Lo utilizará al crear URL firmadas o cookies firmadas.
• .NET framework: convierte la clave privada en el formato XML que utiliza .NET Framework. Hay varias
herramientas disponibles.
• Java: convierte la clave privada en formato DER. Una forma de hacerlo es con el siguiente comando de
OpenSSL. En el siguiente comando, private_key.pem es el nombre del archivo que contiene la clave
privada con formato PEM y private_key.der es el nombre del archivo que contiene la clave privada
con formato DER después de ejecutar el comando.
openssl pkcs8 -topk8 -nocrypt -in private_key.pem -inform PEM -out private_key.der -
outform DER
Para asegurarse de que el codificador funciona correctamente, agregue el recurso JAR de la API de
criptografía Java Bouncy Castle a su proyecto y, a continuación, agregue el proveedor Bouncy Castle.
Los signatarios se asocian con comportamientos de la caché. Esto le permite exigir URL firmadas o
cookies firmadas para algunos archivos y no para otros dentro de la misma distribución. Una distribución
requiere URL o cookies firmadas solo para los archivos asociados con los comportamientos de la caché
correspondientes.
Del mismo modo, un signatario solo puede firmar URL o cookies para archivos asociados con
los comportamientos de la caché correspondientes. Por ejemplo, si tiene un signatario para un
comportamiento de la caché y un signatario diferente para un comportamiento de la caché diferente,
ninguno de los dos signatarios puede crear URL o cookies firmadas para los archivos asociados con el otro
comportamiento de la caché.
Important
171
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios
Supongamos que una solicitud coincide con el patrón de ruta de dos comportamientos de la
caché. El primer comportamiento de la caché no requiere URL firmadas ni cookies firmadas y
el segundo comportamiento de la caché sí. Los usuarios podrán acceder a los archivos sin usar
URL ni cookies firmadas porque CloudFront procesa el comportamiento de la caché que está
asociado con la primera coincidencia.
Para obtener más información acerca de patones de rutas, consulte Patrón de ruta (p. 53).
• Para una distribución que ya utiliza para distribuir contenido, asegúrese de que está listo para
comenzar a generar URL firmadas y cookies firmadas antes de agregar un signatario. Cuando
se agrega un signatario, CloudFront rechaza las solicitudes que no incluyen una URL firmada o
una cookie firmada válidas.
Temas
• Agregar un signatario a una distribución mediante la consola de CloudFront (p. 172)
• Agregar un signatario a una distribución mediante la API de CloudFront (p. 173)
1. Registre el ID del grupo de claves del grupo de claves que desea utilizar como signatario de confianza.
Para obtener más información, consulte Crear un par de claves para un grupo de claves de confianza
(recomendado) (p. 168).
2. Abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.
3. Elija la distribución cuyos archivos desea proteger con URL firmadas o cookies firmadas.
Note
a. En Restrict Viewer Access (Use Signed URLs or Signed Cookies) (Restringir el acceso a lectores
[mediante URL o cookies firmadas]), elija Yes (Sí).
b. En Trusted Key Groups or Trusted Signer (Grupos de claves de confianza o signatario de
confianza), elija Trusted Key Groups (Grupos de claves de confianza).
c. En Trusted Key Groups (Grupos de claves de confianza), elija el grupo de claves que desea
agregar y, a continuación, elija Add (Agregar). Repita el procedimiento si desea agregar más de
un grupo de claves.
7. Elija Yes, Edit (Sí, Editar) para actualizar el comportamiento de la caché.
172
Amazon CloudFront Guía para desarrolladores
Elegir entre URL firmadas y cookies firmadas
También puede agregar una cuenta de AWS como signatario de confianza, pero no es recomendable.
1. Cree un nuevo par de claves y agregue la clave pública a un grupo de claves. Para obtener
más información, consulte Crear un par de claves para un grupo de claves de confianza
(recomendado) (p. 168).
2. Si ha creado un nuevo grupo de claves en el paso anterior, agregue el grupo de claves a la distribución
como signatario (p. 172).
Important
No elimine ninguna clave pública existente del grupo de claves ni ningún grupo de claves de la
distribución todavía. Solo agregue los nuevos.
3. Actualice la aplicación para crear firmas con la clave privada del nuevo par de claves. Confirme que las
URL firmadas o las cookies firmadas con las nuevas claves privadas funcionan.
4. Espere hasta que pase la fecha de vencimiento de las URL o las cookies firmadas con la clave privada
anterior. A continuación, elimine la clave pública anterior del grupo de claves. Si ha creado un nuevo
grupo de claves en el paso 2, elimine el grupo de claves anterior de la distribución.
• Si desea restringir el acceso a archivos individuales, por ejemplo, una descarga de instalación para su
aplicación.
• Si sus usuarios utilizan un cliente (por ejemplo, un cliente HTTP personalizado) que no admite cookies.
• Si desea proporcionar acceso a varios archivos restringidos (por ejemplo, a todos los archivos de un
vídeo en formato HLS o a todos los archivos del área de suscriptores de un sitio web).
• Si no quiere cambiar las URL actuales.
173
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
Si en la actualidad no utiliza URL firmadas y si sus URL (sin firmar) contienen cualquiera de los siguientes
parámetros de cadenas de consulta, no puede utilizar cookies firmadas ni URL firmadas:
• Expires
• Policy
• Signature
• Key-Pair-Id
CloudFront asume que las URL que contienen cualquiera de los parámetros de cadenas de consulta son
URL firmadas y, por lo tanto, no examina las cookies firmadas.
Una URL firmada incluye información adicional, por ejemplo, una fecha y hora de vencimiento, lo que
permite un mayor control sobre el acceso a su contenido. Esta información adicional aparece en una
instrucción de política basada en una política predefinida o personalizada. Las diferencias entre las
políticas personalizadas y las predefinidas se explican en las próximas dos secciones.
Note
Puede crear algunas URL firmadas con políticas predefinidas y crear otras con políticas
personalizadas para la misma distribución.
174
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
Para obtener información acerca de cómo crear URL firmadas mediante una política predefinida, consulte
Creación de una URL firmada mediante una política predefinida (p. 177).
Para obtener información acerca de cómo crear URL firmadas mediante una política personalizada,
consulte Creación de una URL firmada mediante una política personalizada (p. 181).
1. En la distribución de CloudFront, especifique uno o más grupos de claves de confianza, que contienen
las claves públicas que CloudFront puede utilizar para comprobar la firma de URL. Se utilizan las
claves privadas correspondientes para firmar las URL.
Para obtener más información, consulte Especificación de los signatarios que pueden crear URL
firmadas y cookies firmadas (p. 166).
2. Desarrolle la aplicación para determinar si un usuario debe tener acceso al contenido y crear URL
firmadas para los archivos o partes de la aplicación a las que desea restringir el acceso. Para obtener
más información, consulte los siguientes temas:
• Creación de una URL firmada mediante una política predefinida (p. 177)
• Creación de una URL firmada mediante una política personalizada (p. 181)
3. Un usuario solicita un archivo que va a requerir URL firmadas.
4. La aplicación verifica si el usuario tiene derecho para obtener acceso al archivo: si ha iniciado sesión,
si ha pagado por obtener acceso al contenido o si ha cumplido algún otro requisito para obtener
acceso.
5. Su aplicación crea una URL firmada y la devuelve el usuario.
6. Las URL firmadas permiten al usuario descargar o transmitir el contenido.
Este paso es automático; el usuario normalmente no tiene que hacer nada más para obtener acceso
al contenido. Por ejemplo, si un usuario accede a su contenido desde un navegador web, la aplicación
devuelve la URL firmada al navegador. El navegador utiliza inmediatamente la URL firmada para
acceder al archivo de la caché de borde de CloudFront sin necesidad de que el usuario intervenga.
7. CloudFront utiliza la clave pública para validar la firma y confirmar que la URL no se ha manipulado. Si
la firma no es válida, se rechaza la solicitud.
175
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
Si la firma es válida, CloudFront examina la instrucción de la política en la URL (o crea una si utiliza
una política predefinida) para confirmar que la solicitud sigue siendo válida. Por ejemplo, si especifica
una fecha y hora de inicio y fin de la URL, CloudFront confirma que el usuario intenta acceder al
contenido durante el periodo que usted ha decidido permitir dicho acceso.
Si la solicitud cumple los requisitos de la instrucción de política, CloudFront realiza las operaciones
estándar: determina si el archivo ya está en la caché de borde, reenvía la solicitud al origen en caso
necesario y devuelve el archivo al usuario.
Note
Si una URL sin firmar contiene parámetros de cadena de consulta, asegúrese de incluirlos en
la parte de la dirección URL que firma. Si agrega una cadena de consulta a una URL firmada
después de firmarla, la URL devuelve un estado HTTP 403.
También puede distribuir contenido privado mediante una URL firmada con un periodo de validez más
largo, de incluso años. Las URL válidas durante periodos largos resultan útiles para distribuir contenido
privado a usuarios conocidos, como, por ejemplo, la distribución de un plan de negocio a inversores o la
distribución de materiales de formación a los empleados. Puede desarrollar una aplicación para generar
estas URL firmadas a largo plazo para usted.
Si un cliente utiliza rangos GET para obtener un archivo en partes más pequeñas, cualquier solicitud GET
que se produzca después de la fecha de vencimiento no se procesará. Para obtener más información
acerca de Range GET, consulte Cómo CloudFront procesa las solicitudes parciales de un objeto (rango
GET). (p. 322).
176
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
1. Si utiliza. NET o Java para crear URL firmadas y no ha reformateado la clave privada del par de claves
del formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo ahora. Para
obtener más información, consulte Volver a formatear la clave privada (solo .NET y Java) (p. 171).
2. Concatene los siguientes valores en el orden especificado y elimine el espacio en blanco (incluidos
tabuladores y caracteres de línea nueva) entre las partes. Es posible que tenga que incluir caracteres
de escape en la cadena del código de la aplicación. Todos los valores tienen un tipo de cadena. Cada
parte está marcada con un número ( ) en los dos ejemplos que se muestran a continuación.
La URL base es la URL de CloudFront que utilizaría para acceder al archivo si no utilizara las
URL firmadas, incluidos los parámetros de la cadena de consulta propios, si los hay. Para obtener
más información acerca del formato de las URL para distribuciones, consulte Personalización del
formato de URL para archivos en CloudFront (p. 117).
• La siguiente URL de CloudFront es para un archivo de imagen en una distribución (utilizando el
nombre de dominio de CloudFront). image.jpg está en un directorio images. La ruta hacia el
archivo de la URL debe coincidir con la ruta hacia el archivo del servidor HTTP o del bucket de
Amazon S3.
http://d111111abcdef8.cloudfront.net/images/image.jpg
• La siguiente URL de CloudFront incluye una cadena de consulta:
http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large
• Las siguientes URL de CloudFront corresponden a archivos de imagen de una distribución.
Ambas utilizan un nombre de dominio alternativo; la segunda incluye una cadena de consulta:
http://www.example.com/images/image.jpg
http://www.example.com/images/image.jpg?color=red
• La siguiente URL de CloudFront corresponde a un archivo de imagen de una distribución que
utiliza un nombre de dominio alternativo y el protocolo HTTPS:
https://www.example.com/images/image.jpg
? indica que los parámetros de la cadena de consulta siguen a la URL base. Incluya ? aunque no
tenga sus propios parámetros de cadena de consulta.
Este valor es opcional. Si desea añadir sus propios parámetros de cadena de consulta, por
ejemplo:
color=red&size=medium
añada los parámetros después de ? (consulte ) y antes del parámetro Expires. En algún
caso poso frecuente, posiblemente tenga que añadir los parámetros de cadena de consulta
después de Key-Pair-Id.
177
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
Important
Si añade sus propios parámetros, incluya un & después de cada uno, incluso después del último.
La fecha y la hora en las que desea que la URL deje de permitir el acceso al archivo.
Especifique la fecha y la hora de vencimiento en formato de tiempo Unix (en segundos) y hora
universal coordinada (UTC). Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser
1357034400 en formato de tiempo Unix. Para utilizar el formato de tiempo Unix, use un entero
de 32 bits para una fecha que no puede ser posterior a 2147483647 (19 de enero de 2038 a las
03:14:07 UTC). Para obtener información acerca de UTC, consulte RFC 3339, fecha y hora en
Internet: marcas temporales, https://tools.ietf.org/html/rfc3339.
Una versión firmada, a la que se le ha aplicado una función hash y codificada en base64 de la
instrucción de política JSON. Para obtener más información, consulte Creación de una firma para
una URL firmada que utiliza una política predefinida (p. 178).
Esta clave pública debe pertenecer a un grupo de claves que tiene un signatario de confianza
en la distribución. Para obtener más información, consulte Especificación de los signatarios que
pueden crear URL firmadas y cookies firmadas (p. 166).
http://d111111abcdef8.cloudfront.net/image.jpg
? color=red&size=medium& Expires=1357034400
&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-
j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-
TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6
&Key-Pair-Id=K2JCJMDEHXQW5F
Creación de una firma para una URL firmada que utiliza una política predefinida
Para crear la firma para una URL firmada que utilice una política predefinida, siga los siguientes
procedimientos:
1. Cree una instrucción de política. Consulte Creación de una instrucción de política para una URL
firmada que utiliza una política predefinida (p. 179).
2. Firme la instrucción de política para crear una firma. Consulte Creación de una firma para una URL
firmada que utiliza una política predefinida (p. 180).
178
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
Creación de una instrucción de política para una URL firmada que utiliza una política predefinida
Al crear una URL firmada mediante una política predefinida, el parámetro Signature es una versión
firmada y a la que se le ha aplicado una función hash de una instrucción de política. En el caso de URL
firmadas que utilizan una política predefinida, la instrucción de política no se incluye en la URL, a diferencia
de las URL firmadas que utilizan una política personalizada. Para crear la instrucción de política, siga el
procedimiento que se indica a continuación.
Para crear una instrucción de política para una URL firmada que use una política predefinida
{
"Statement": [
{
"Resource": "base URL or stream name",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": ending date and time in Unix time format and UTC
}
}
}
]
}
2. Elimine todos los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la
instrucción de la política. Es posible que tenga que incluir caracteres de escape en la cadena del
código de la aplicación.
Valores que se especifican en la instrucción de política de una URL firmada que utiliza una política
predefinida
Al crear una instrucción de política para una política predefinida, debe especificar los siguientes valores.
Recurso
Note
La URL base incluye las cadenas de consulta, de haberlas, pero excluye los parámetros de
CloudFront Expires, Signature y Key-Pair-Id, por ejemplo:
http://d111111abcdef8.cloudfront.net/images/horizon.jpg?
size=large&license=yes
179
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
DateLessThan
La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universal
coordinada (UTC). Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser 1357034400 en
formato de tiempo Unix.
Este valor debe coincidir con el valor del parámetro de cadena de consulta Expires de la URL
firmada. No incluya el valor entre comillas.
Para obtener más información, consulte ¿Cuándo comprueba CloudFront la fecha y hora de
vencimiento de una URL firmada? (p. 176).
Ejemplo de instrucción de política para una URL firmada que utiliza una política predefinida
Cuando se utiliza la siguiente instrucción de política de ejemplo en una URL firmada, un usuario puede
acceder al archivo http://d111111abcdef8.cloudfront.net/horizon.jpg hasta el 1 de enero de
2013 a las 10:00 h UTC:
{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/horizon.jpg?
size=large&license=yes",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": 1357034400
}
}
}
]
}
Creación de una firma para una URL firmada que utiliza una política predefinida
Para crear el valor del parámetro Signature en una URL firmada, aplique una función hash y firme la
instrucción de política que ha creado en Creación de una instrucción de política para una URL firmada que
utiliza una política predefinida (p. 179).
Para obtener más información y ejemplos de cómo resumir, aplicar una función hash y codificar la
instrucción de política, consulte:
• Uso de comandos de Linux y OpenSSL para codificación y cifrado base64 (p. 204)
• Ejemplos de código para la creación de una firma para una URL firmada (p. 204)
1. Use la función hash SHA-1 y RSA para resumir y firmar la instrucción de política creada en el
procedimiento Para crear una instrucción de política para una URL firmada que use una política
predefinida (p. 179). Utilice la versión de la instrucción de política que ya no incluye espacios en
blanco.
Para la clave privada requerida por la función hash, utilice una clave privada cuya clave pública esté
en un grupo de claves de confianza activo para la distribución.
Note
El método que utilice para resumir y aplicar una función hash la instrucción de política
depende de su lenguaje de programación y plataforma. Para ver código de muestra, consulte
Ejemplos de código para la creación de una firma para una URL firmada (p. 204).
180
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
2. Elimine los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la cadena a la
que se le ha aplicado una función hash y firmada.
3. Codifique la cadena con codificación base64 de MIME. Para obtener más información, consulte la
Section 6.8, Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose Internet Mail
Extensions) Part One: Format of Internet Message Bodies.
4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En la
siguiente tabla se muestran los caracteres válidos y no válidos.
+ - (guion)
= _ (guion bajo)
/ ~ (tilde)
5. Añada el valor resultante a la URL firmada después de &Signature= y vuelva a Para crear una URL
firmada mediante una política predefinida (p. 177) para terminar de encadenar las partes de la URL
firmada.
Para crear una URL firmada mediante una política personalizada, siga el procedimiento que se indica a
continuación.
1. Si utiliza. NET o Java para crear URL firmadas y no ha reformateado la clave privada del par de claves
del formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo ahora. Para
obtener más información, consulte Volver a formatear la clave privada (solo .NET y Java) (p. 171).
2. Concatene los siguientes valores en el orden especificado y elimine el espacio en blanco (incluidos
tabuladores y caracteres de línea nueva) entre las partes. Es posible que tenga que incluir caracteres
de escape en la cadena del código de la aplicación. Todos los valores tienen un tipo de cadena. Cada
parte está marcada con un número ( ) en los dos ejemplos que se muestran a continuación.
La URL base es la URL de CloudFront que utilizaría para acceder al archivo si no utilizara las
URL firmadas, incluidos los parámetros de la cadena de consulta propios, si los hay. Para obtener
más información acerca del formato de las URL para distribuciones, consulte Personalización del
formato de URL para archivos en CloudFront (p. 117).
181
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
archivo de la URL debe coincidir con la ruta hacia el archivo del servidor HTTP o del bucket de
Amazon S3.
http://d111111abcdef8.cloudfront.net/images/image.jpg
• La siguiente URL de CloudFront incluye una cadena de consulta:
http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large
• Las siguientes URL de CloudFront corresponden a archivos de imagen de una distribución.
Ambas utilizan un nombre de dominio alternativo; la segunda incluye una cadena de consulta:
http://www.example.com/images/image.jpg
http://www.example.com/images/image.jpg?color=red
• La siguiente URL de CloudFront corresponde a un archivo de imagen de una distribución que
utiliza un nombre de dominio alternativo y el protocolo HTTPS:
https://www.example.com/images/image.jpg
? indica que los parámetros de la cadena de consulta siguen a la URL base. Incluya ? aunque no
tenga sus propios parámetros de cadena de consulta.
Este valor es opcional. Si desea añadir sus propios parámetros de cadena de consulta, por
ejemplo:
color=red&size=medium
añádalos después de ? (consulte ) y antes del parámetro Policy. En algún caso poso
frecuente, posiblemente tenga que añadir los parámetros de cadena de consulta después de
Key-Pair-Id.
Important
Si añade sus propios parámetros, incluya un & después de cada uno, incluso después del último.
La instrucción de política en formato JSON después de haber eliminado los espacios en blanco y,
a continuación, codificada con base64. Para obtener más información, consulte Creación de una
instrucción de política para una URL firmada que utiliza una política personalizada (p. 183).
La instrucción de política controla el acceso que una URL firmada concede a un usuario. Incluye
la URL del archivo, una fecha y hora de vencimiento, una fecha y hora opcionales en que la URL
se convierte en válida y una dirección IP opcional o un intervalo de direcciones IP a las que se
permite acceder al archivo.
Una versión firmada, a la que se le ha aplicado una función hash y codificada en base64 de la
instrucción de política JSON. Para obtener más información, consulte Creación de una firma para
una URL firmada que utiliza una política personalizada (p. 188).
182
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
Esta clave pública debe pertenecer a un grupo de claves que tiene un signatario de confianza
en la distribución. Para obtener más información, consulte Especificación de los signatarios que
pueden crear URL firmadas y cookies firmadas (p. 166).
http://d111111abcdef8.cloudfront.net/image.jpg ?
color=red&size=medium&
Policy=eyANCiAgICEXAMPLEW1lbnQiOiBbeyANCiAgICAgICJSZXNvdXJjZSI6Imh0dHA
6Ly9kemJlc3FtN3VuMW0wLmNsb3VkZnJvbnQubmV0L2RlbW8ucGhwIiwgDQogICAgICAiQ
29uZGl0aW9uIjp7IA0KICAgICAgICAgIklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiI
yMDcuMTcxLjE4MC4xMDEvMzIifSwNCiAgICAgICAgICJEYXRlR3JlYXRlclRoYW4iOnsiQ
VdTOkVwb2NoVGltZSI6MTI5Njg2MDE3Nn0sDQogICAgICAgICAiRGF0ZUxlc3NUaGFuIjp
7IkFXUzpFcG9jaFRpbWUiOjEyOTY4NjAyMjZ9DQogICAgICB9IA0KICAgfV0gDQp9DQo
&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~
-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmat
EXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 &Key-Pair-
Id=K2JCJMDEHXQW5F
Creación de una instrucción de política para una URL firmada que utiliza una
política personalizada
Para crear una instrucción de política para una política personalizada, siga el procedimiento que se indica
a continuación. Para consultar varias instrucciones de políticas de ejemplo que controlan el acceso a
archivos de distintas maneras, consulte Instrucciones de políticas de ejemplo para una URL firmada que
utiliza una política personalizada (p. 186).
Para crear una instrucción de política para una URL firmada que use una política personalizada
1. Cree la instrucción de política en el siguiente formato JSON. Para obtener más información, consulte
Valores que se especifican en la instrucción de política de una URL firmada que utiliza una política
personalizada (p. 184).
{
"Statement": [
{
"Resource": "URL or stream name of the file",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": required ending date and time in Unix time format
and UTC
},
"DateGreaterThan": {
"AWS:EpochTime": optional beginning date and time in Unix time
format and UTC
},
"IpAddress": {
183
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
+ - (guion)
= _ (guion bajo)
/ ~ (tilde)
Valores que se especifican en la instrucción de política de una URL firmada que utiliza una política
personalizada
Al crear una instrucción de política para una política personalizada, debe especificar los siguientes valores.
Recurso
Note
La URL base incluye las cadenas de consulta, de haberlas, pero excluye los parámetros de
CloudFront Policy, Signature y Key-Pair-Id, por ejemplo:
http://d111111abcdef8.cloudfront.net/images/horizon.jpg?
size=large&license=yes
184
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
Important
Si omite el parámetro Resource en una distribución, los usuarios podrán obtener acceso a
todos los archivos asociados a cualquier distribución que esté vinculada al par de claves
utilizado para crear la URL firmada.
http://d111111abcdef8.cloudfront.net/*game_download.zip*
La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universal
coordinada (UTC). No incluya el valor entre comillas. Para obtener información acerca de UTC,
consulte RFC 3339, fecha y hora en Internet: marcas temporales, https://tools.ietf.org/html/rfc3339.
Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser 1357034400 en formato de tiempo
Unix.
Este es el único parámetro requerido en la sección Condition. CloudFront requiere este valor para
impedir que los usuarios tengan acceso permanente al contenido privado.
Para obtener más información, consulte ¿Cuándo comprueba CloudFront la fecha y hora de
vencimiento de una URL firmada? (p. 176)
DateGreaterThan (opcional)
Una fecha y hora de inicio opcionales de la URL en formato de tiempo Unix (en segundos) y hora
universal coordinada (UTC). Los usuarios no tienen permiso para obtener acceso al archivo antes de
la fecha y la hora especificadas. No incluya el valor entre comillas.
IpAddress (opcional)
La dirección IP del cliente que hace la solicitud GET. Tenga en cuenta lo siguiente:
• Para permitir que cualquier dirección IP obtenga acceso al archivo, omita el parámetro IpAddress.
• Puede especificar una dirección IP o a un rango de direcciones IP. Por ejemplo, no puede configurar
la política para permitir el acceso si la dirección IP del cliente está en uno de dos rangos separados.
• Para permitir el acceso desde una única dirección IP, especifique:
"Dirección IP IPv4/32"
• Debe especificar rangos de direcciones IP en formato estándar IPv4 CIDR (por ejemplo,
192.0.2.0/24). Para obtener más información, consulte RFC 4632, Classless Inter-domain
185
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
Routing (CIDR): The Internet Address Assignment and Aggregation Plan, https://tools.ietf.org/html/
rfc4632.
Important
Direcciones IP en formato IPv6, como 2001:0db8:85a3:0000:0000:8a2e:0370:7334, no son
compatibles.
Si está utilizando una política personalizada que incluya IpAddress, no habilite IPv6 para la
distribución. Si desea restringir el acceso a algún contenido por dirección IP y admite solicitudes
IPv6 de otro contenido, puede crear dos distribuciones. Para obtener más información, consulte
Habilitar IPv6 (p. 66) en el tema Valores que deben especificarse al crear o actualizar una
distribución (p. 43).
Instrucciones de políticas de ejemplo para una URL firmada que utiliza una
política personalizada
En los siguientes ejemplos de instrucciones de políticas, se muestra cómo controlar el acceso a un archivo
específico, a todos los archivos de un directorio o a todos los archivos asociados a un ID de par de claves.
Los ejemplos también muestran cómo controlar el acceso desde una dirección IP individual o a un rango
de direcciones IP, y cómo impedir que los usuarios utilicen la URL firmada después de una fecha y hora
específicas.
Si copia y pega cualquiera de estos ejemplos, elimine los espacios en blanco (incluidos los tabuladores y
los caracteres de línea nueva), sustituya los valores por sus propios valores e incluya un carácter de línea
nueva después de la llave de cierre ( } ).
Para obtener más información, consulte Valores que se especifican en la instrucción de política de una
URL firmada que utiliza una política personalizada (p. 184).
Temas
• Ejemplo de instrucción de política: acceso a un archivo desde un intervalo de direcciones IP (p. 186)
• Ejemplo de instrucción de política: acceso a todos los archivos de un directorio desde un intervalo de
direcciones IP (p. 187)
• Ejemplo de instrucción de política: acceso a todos los archivos asociados con un ID de par de claves
desde una dirección IP (p. 187)
{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/game_download.zip",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.0/24"
},
"DateLessThan": {
"AWS:EpochTime": 1357034400
}
}
}
]
}
186
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas
Ejemplo de instrucción de política: acceso a todos los archivos de un directorio desde un intervalo
de direcciones IP
La siguiente política personalizada de ejemplo le permite crear URL firmadas para cualquier archivo del
directorio training, tal y como indica el carácter comodín * del parámetro Resource. Los usuarios
podrán obtener acceso al archivo desde una dirección IP incluida en el rango 192.0.2.0/24 hasta el 1
de enero de 2013 a las 10:00 h UTC:
{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/training/*",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.0/24"
},
"DateLessThan": {
"AWS:EpochTime": 1357034400
}
}
}
]
}
Cada URL firmada en la que utilice esta política contendrá una URL base que identificará a un archivo
específico: por ejemplo:
http://d111111abcdef8.cloudfront.net/training/orientation.pdf
Ejemplo de instrucción de política: acceso a todos los archivos asociados con un ID de par de
claves desde una dirección IP
La siguiente política personalizada de ejemplo le permite crear URL firmadas para cualquier archivo
asociado a cualquier distribución, tal y como indica el carácter comodín * del parámetro Resource. El
usuario debe utilizar la dirección IP 192.0.2.10/32. (El valor 192.0.2.10/32 en notación CIDR se
refiere a la dirección IP individual 192.0.2.10). Los archivos solo van a estar disponibles desde el 1 de
enero de 2013 a las 10:00 h UTC hasta el 2 de enero de 2013 a las 10:00 h UTC:
{
"Statement": [
{
"Resource": "http://*",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.10/32"
},
"DateGreaterThan": {
"AWS:EpochTime": 1357034400
},
"DateLessThan": {
"AWS:EpochTime": 1357120800
}
}
}
]
}
Cada URL firmada en la que utilice esta política incluye una URL base que identifica un archivo específico
de una distribución de CloudFront específica; por ejemplo:
http://d111111abcdef8.cloudfront.net/training/orientation.pdf
187
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
La URL firmada también incluye un ID de par de claves que debe asociarse con un grupo de claves de
confianza en la distribución (d111111abcdef8.cloudfront.net) que se especifica en la URL base.
Creación de una firma para una URL firmada que utiliza una política
personalizada
La firma de una URL firmada que utiliza una política personalizada es una versión de la instrucción de
política a la que se le ha aplicado una función hash, firmada y codificada con base64. Para crear una firma
para una política personalizada, complete los pasos siguientes.
Para obtener más información y ejemplos de cómo resumir, aplicar una función hash y codificar la
instrucción de política, consulte:
• Uso de comandos de Linux y OpenSSL para codificación y cifrado base64 (p. 204)
• Ejemplos de código para la creación de una firma para una URL firmada (p. 204)
1. Use la función hash SHA-1 y RSA para resumir y firmar la instrucción de política JSON creada en
el procedimiento Para crear una instrucción de política para una URL firmada que use una política
personalizada (p. 183). Utilice la versión de la instrucción de política que ya no incluye espacios en
blanco pero que aún no se ha codificado con base64.
Para la clave privada requerida por la función hash, utilice una clave privada cuya clave pública esté
en un grupo de claves de confianza activo para la distribución.
Note
El método que utilice para resumir y aplicar una función hash la instrucción de política
depende de su lenguaje de programación y plataforma. Para ver código de muestra, consulte
Ejemplos de código para la creación de una firma para una URL firmada (p. 204).
2. Elimine los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la cadena a la
que se le ha aplicado una función hash y firmada.
3. Codifique la cadena con codificación base64 de MIME. Para obtener más información, consulte la
Section 6.8, Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose Internet Mail
Extensions) Part One: Format of Internet Message Bodies.
4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En la
siguiente tabla se muestran los caracteres válidos y no válidos.
+ - (guion)
= _ (guion bajo)
/ ~ (tilde)
5. Añada el valor resultante a la URL firmada después de &Signature= y vuelva a Para crear una URL
firmada mediante una política personalizada (p. 181) para terminar de encadenar las partes de la
URL firmada.
188
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
ejemplo, todos los archivos del área de suscriptores de un sitio web. En este tema se explica qué tomar
en cuenta al utilizar cookies firmadas y describe cómo configurarlas mediante políticas predefinidas o
personalizadas.
Temas
• Elegir entre políticas predefinidas y personalizadas para cookies firmadas (p. 189)
• Cómo funcionan las cookies firmadas (p. 189)
• Prevención del uso indebido de cookies firmadas (p. 190)
• ¿Cuándo comprueba CloudFront la fecha y hora de vencimiento de una cookie firmada? (p. 191)
• Código de muestra y herramientas de terceros (p. 191)
• Establecer cookies firmadas mediante una política predefinida (p. 191)
• Establecer cookies firmadas mediante una política personalizada (p. 196)
Para obtener información acerca de cómo crear cookies firmadas mediante una política predefinida,
consulte Establecer cookies firmadas mediante una política predefinida (p. 191).
Para obtener información acerca de cómo crear cookies firmadas mediante una política personalizada,
consulte Establecer cookies firmadas mediante una política personalizada (p. 196).
189
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
1. En la distribución de CloudFront, especifique uno o más grupos de claves de confianza, que contienen
las claves públicas que CloudFront puede utilizar para comprobar la firma de URL. Se utilizan las
claves privadas correspondientes para firmar las URL.
Para obtener más información, consulte Especificación de los signatarios que pueden crear URL
firmadas y cookies firmadas (p. 166).
2. Desarrolle una aplicación para determinar si un usuario debe obtener acceso a su contenido y, en
caso de que sí, que envíe 3 encabezados Set-Cookie al espectador. (Cada encabezado Set-
Cookie puede contener solo un par de nombre-valor y una cookie de CloudFront firmada requiere
tres pares de nombre-valor). Debe enviar los encabezados Set-Cookie al espectador antes de que
el usuario solicite su contenido privado. Si configura un periodo de vencimiento corto en la cookie, le
recomendamos enviar tres encabezados Set-Cookie más en respuesta a solicitudes posteriores, de
modo que el usuario continúe teniendo acceso.
El navegador del usuario o cualquier otro espectador obtiene los pares nombre-valor del paso 4 y los
añade a la solicitud en un encabezado Cookie. Esta es la cookie firmada.
6. CloudFront utiliza la clave pública para validar la firma en la cookie firmada y confirmar que dicha
cookie no se ha manipulado. Si la firma no es válida, se rechaza la solicitud.
• Excluya los atributos de cookies Expires y Max-Age para que el encabezado Set-Cookie cree
una cookie de sesión. Las cookies de sesión se eliminan automáticamente cuando el usuario cierra el
navegador, lo que reduce la posibilidad de alguien obtenga acceso no autorizado a su contenido.
• Incluya el atributo Secure para que la cookie se cifre cuando un espectador la incluya en una solicitud.
• De ser posible, utilice una política personalizada e incluya la dirección IP del espectador.
190
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
Si un cliente utiliza rangos GET para obtener un archivo en partes más pequeñas, cualquier solicitud GET
que se produzca después de la fecha de vencimiento no se procesará. Para obtener más información
acerca de Range GET, consulte Cómo CloudFront procesa las solicitudes parciales de un objeto (rango
GET). (p. 322).
1. Si utiliza. NET o Java para crear cookies firmadas y no ha reformateado la clave privada del par
de claves del formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo
ahora. Para obtener más información, consulte Volver a formatear la clave privada (solo .NET y
Java) (p. 171).
2. Programe su aplicación para enviar tres encabezados Set-Cookie a los espectadores aprobados.
Necesita tres encabezados Set-Cookie porque cada encabezado Set-Cookie puede contener solo
un par de nombre-valor y una cookie firmada de CloudFront requiere tres pares de nombre-valor. Los
pares de nombre-valor son: CloudFront-Expires, CloudFront-Signature y CloudFront-
Key-Pair-Id. Los valores deben estar presentes en el lector antes de que un usuario realice la
primera solicitud de un archivo cuyo acceso desea controlar.
Note
191
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
Los nombres de los atributos de las cookies distinguen entre mayúsculas y minúsculas.
Los saltos de línea se incluyen únicamente para que los atributos sean más legibles.
Set-Cookie:
CloudFront-Expires=date and time in Unix time format (in seconds) and Coordinated
Universal Time (UTC);
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly
Set-Cookie:
CloudFront-Signature=hashed and signed version of the policy statement;
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly
Set-Cookie:
CloudFront-Key-Pair-Id=public key ID for the CloudFront public key whose corresponding
private key you're using to generate the signature;
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly
(Opcional) Domain
Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe
añadir dicho nombre de dominio a su distribución independientemente de que especifique el
atributo Domain. Para obtener más información, consulte Nombres de dominio alternativos
(CNAME) (p. 61) en el tema Valores que deben especificarse al crear o actualizar una
distribución (p. 43).
(Opcional) Path
Ruta del archivo solicitado. Si no especifica un atributo Path, el valor predeterminado será la ruta
de la URL.
Secure
Requiere que el espectador cifre cookies antes de enviar una solicitud. Recomendamos que
envíe el encabezado Set-Cookie a través de una conexión HTTPS para asegurarse de que los
atributos de la cookie estén protegidos contra ataques man-in-the-middle.
HttpOnly
192
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
CloudFront-Expires
Especifique la fecha y la hora de vencimiento en formato de tiempo Unix (en segundos) y hora
universal coordinada (UTC). Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser
1357034400 en formato de tiempo Unix. Para utilizar el formato de tiempo Unix, use un entero
de 32 bits para una fecha que no puede ser posterior a 2147483647 (19 de enero de 2038 a las
03:14:07 UTC). Para obtener información acerca de UTC, consulte RFC 3339, fecha y hora en
Internet: marcas temporales, https://tools.ietf.org/html/rfc3339.
CloudFront-Signature
Una versión de una instrucción de política JSON firmada, a la que se le ha aplicado una función
hash y codificada en base64. Para obtener más información, consulte Creación de una firma para
una cookie firmada que utiliza una política predefinida (p. 193).
CloudFront-Key-Pair-Id
Esta clave pública debe pertenecer a un grupo de claves que tiene un signatario de confianza
en la distribución. Para obtener más información, consulte Especificación de los signatarios que
pueden crear URL firmadas y cookies firmadas (p. 166).
En el ejemplo siguiente, se muestran los encabezados Set-Cookie de una cookie firmada cuando se usa
el nombre de dominio asociado a la distribución en las URL de los archivos:
En el ejemplo siguiente, se muestran los encabezados Set-Cookie de una cookie firmada cuando se usa
el nombre de dominio alternativo example.org en las URL de los archivos:
Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe añadir dicho
nombre de dominio a su distribución independientemente de que especifique el atributo Domain. Para
obtener más información, consulte Nombres de dominio alternativos (CNAME) (p. 61) en el tema Valores
que deben especificarse al crear o actualizar una distribución (p. 43).
Creación de una firma para una cookie firmada que utiliza una política predefinida
Para crear la firma para una cookie firmada que utilice una política predefinida, haga lo siguiente:
1. Cree una instrucción de política. Consulte Creación de una instrucción de política para una cookie
firmada que utiliza una política predefinida (p. 194).
2. Firme la instrucción de política para crear una firma. Consulte Firma de la instrucción de política para
crear una firma para una cookie firmada que utiliza una política predefinida (p. 195).
193
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
Creación de una instrucción de política para una cookie firmada que utiliza una política predefinida
Al establecer una cookie firmada que use una política predefinida, el atributo CloudFront-Signature
es una versión de una instrucción de política firmada y a la que se le ha aplicado una función hash. En el
caso de cookies firmadas que utilizan una política predefinida, la instrucción de política no se incluye en
el encabezado Set-Cookie, a diferencia de las cookies firmadas que utilizan una política personalizada.
Para crear la instrucción de política, complete los pasos siguientes.
Para crear una instrucción de política para una cookie firmada que use una política predefinida
{
"Statement": [
{
"Resource": "base URL or stream name",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": ending date and time in Unix time format and UTC
}
}
}
]
}
2. Elimine todos los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la
instrucción de la política. Es posible que tenga que incluir caracteres de escape en la cadena del
código de la aplicación.
Valores que se especifican en la instrucción de política de una política predefinida para cookies
firmadas
Al crear una instrucción de una política predefinida, debe especificar los siguientes valores:
Recurso
http://d111111abcdef8.cloudfront.net/images/horizon.jpg?
size=large&license=yes
La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universal
coordinada (UTC). No incluya el valor entre comillas.
194
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
Por ejemplo, 16 de marzo de 2015 a las 10:00 h UTC pasa a ser 1426500000 en formato de tiempo
Unix.
Este valor debe coincidir con el valor del atributo CloudFront-Expires en el encabezado Set-
Cookie. No incluya el valor entre comillas.
Para obtener más información, consulte ¿Cuándo comprueba CloudFront la fecha y hora de
vencimiento de una cookie firmada? (p. 191).
{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/horizon.jpg?
size=large&license=yes",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": 1426500000
}
}
}
]
}
Firma de la instrucción de política para crear una firma para una cookie firmada que utiliza una
política predefinida
Para crear el valor del atributo CloudFront-Signature en un encabezado Set-Cookie, aplique una
función hash y firme la instrucción de política creada en Para crear una instrucción de política para una
cookie firmada que use una política predefinida (p. 194).
Para obtener más información y ejemplos de cómo aplicar una función hash, firmar y codificar la
instrucción de política, consulte los siguientes temas:
• Uso de comandos de Linux y OpenSSL para codificación y cifrado base64 (p. 204)
• Ejemplos de código para la creación de una firma para una URL firmada (p. 204)
Para crear una firma para una cookie firmada que use una política predefinida
1. Use la función hash SHA-1 y RSA para resumir y firmar la instrucción de política creada en el
procedimiento Para crear una instrucción de política para una cookie firmada que use una política
predefinida (p. 194). Utilice la versión de la instrucción de política que ya no incluye espacios en
blanco.
Para la clave privada requerida por la función hash, utilice una clave privada cuya clave pública esté
en un grupo de claves de confianza activo para la distribución.
Note
El método que utilice para resumir y aplicar una función hash la instrucción de política
depende de su lenguaje de programación y plataforma. Para ver código de muestra, consulte
Ejemplos de código para la creación de una firma para una URL firmada (p. 204).
2. Elimine los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la cadena a la
que se le ha aplicado una función hash y firmada.
195
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
3. Codifique la cadena con codificación base64 de MIME. Para obtener más información, consulte la
Section 6.8, Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose Internet Mail
Extensions) Part One: Format of Internet Message Bodies.
4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En la
siguiente tabla se muestran los caracteres válidos y no válidos.
+ - (guion)
= _ (guion bajo)
/ ~ (tilde)
5. Incluya el valor resultante en el encabezado Set-Cookie para el par nombre-valor CloudFront-
Signature. A continuación, vuelva a Para establecer cookies firmadas mediante una política
predefinida (p. 191) y añada el encabezado Set-Cookie en CloudFront-Key-Pair-Id.
Para establecer una cookie firmada que utiliza una política personalizada, complete los siguientes pasos.
1. Si utiliza. NET o Java para crear URL firmadas y no ha reformateado la clave privada del par de claves
del formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo ahora. Para
obtener más información, consulte Volver a formatear la clave privada (solo .NET y Java) (p. 171).
2. Programe su aplicación para enviar tres encabezados Set-Cookie a los espectadores aprobados.
Necesita tres encabezados Set-Cookie porque cada encabezado Set-Cookie puede contener solo
un par de nombre-valor y una cookie firmada de CloudFront requiere tres pares de nombre-valor. Los
pares de nombre-valor son: CloudFront-Policy, CloudFront-Signature y CloudFront-Key-
Pair-Id. Los valores deben estar presentes en el lector antes de que un usuario realice la primera
solicitud de un archivo cuyo acceso desea controlar.
Note
En general, recomendamos que excluya los atributos Expires y Max-Age. Al excluirlos,
el navegador elimina la cookie cuando el usuario lo cierra, lo que reduce la posibilidad
de alguien obtenga acceso no autorizado a su contenido. Para obtener más información,
consulte Prevención del uso indebido de cookies firmadas (p. 190).
Los nombres de los atributos de las cookies distinguen entre mayúsculas y minúsculas.
Los saltos de línea se incluyen únicamente para que los atributos sean más legibles.
Set-Cookie:
CloudFront-Policy=base64 encoded version of the policy statement;
Domain=optional domain name;
Path=/optional directory path;
196
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
Secure;
HttpOnly
Set-Cookie:
CloudFront-Signature=hashed and signed version of the policy statement;
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly
Set-Cookie:
CloudFront-Key-Pair-Id=public key ID for the CloudFront public key whose corresponding
private key you're using to generate the signature;
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly
(Opcional) Domain
Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe
añadir dicho nombre de dominio a su distribución independientemente de que especifique el
atributo Domain. Para obtener más información, consulte Nombres de dominio alternativos
(CNAME) (p. 61) en el tema Valores que deben especificarse al crear o actualizar una
distribución (p. 43).
(Opcional) Path
Ruta del archivo solicitado. Si no especifica un atributo Path, el valor predeterminado será la ruta
de la URL.
Secure
Requiere que el espectador cifre cookies antes de enviar una solicitud. Recomendamos que
envíe el encabezado Set-Cookie a través de una conexión HTTPS para asegurarse de que los
atributos de la cookie estén protegidos contra ataques man-in-the-middle.
HttpOnly
La instrucción de política en formato JSON después de haber eliminado los espacios en blanco y,
a continuación, codificada con base64. Para obtener más información, consulte Creación de una
firma para una cookie firmada que utiliza una política personalizada (p. 203).
La instrucción de política controla el acceso que una cookie firmada concede a un usuario. Incluye
los archivos a los que el usuario puede acceder, una fecha y hora de vencimiento, una fecha y
hora opcionales a las que la URL se convierte en válida y una dirección IP opcional o un intervalo
de direcciones IP a las que se permite acceder al archivo.
197
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
CloudFront-Signature
Una versión firmada, a la que se le ha aplicado una función hash y codificada en base64 de la
instrucción de política JSON. Para obtener más información, consulte Creación de una firma para
una cookie firmada que utiliza una política personalizada (p. 203).
CloudFront-Key-Pair-Id
Esta clave pública debe pertenecer a un grupo de claves que tiene un signatario de confianza
en la distribución. Para obtener más información, consulte Especificación de los signatarios que
pueden crear URL firmadas y cookies firmadas (p. 166).
Encabezados Set-Cookie de ejemplo de una cookie firmada cuando se usa el nombre de dominio
asociado a la distribución en las URL de los archivos:
Set-Cookie: CloudFront-
Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93
Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_;
Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net;
Path=/; Secure; HttpOnly
Encabezados Set-Cookie de ejemplo de una cookie firmada cuando se usa el nombre de dominio
alternativo example.org en las URL de los archivos:
Set-Cookie: CloudFront-
Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93
Domain=example.org; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/;
Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure;
HttpOnly
Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe añadir dicho
nombre de dominio a su distribución independientemente de que especifique el atributo Domain. Para
obtener más información, consulte Nombres de dominio alternativos (CNAME) (p. 61) en el tema Valores
que deben especificarse al crear o actualizar una distribución (p. 43).
Creación de una instrucción de política para una cookie firmada que utiliza una
política personalizada
Para crear una instrucción de política para una política personalizada, complete los siguientes pasos.
Para consultar varias instrucciones de políticas de ejemplo que controlan el acceso a archivos de distintas
maneras, consulte Ejemplos de instrucciones de políticas para una cookie firmada que utiliza una política
personalizada (p. 201).
Para crear una instrucción de política para una cookie firmada que use una política personalizada
198
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
"Statement": [
{
"Resource": "URL of the file",
"Condition": {
"DateLessThan": {
"AWS:EpochTime":required ending date and time in Unix time format
and UTC
},
"DateGreaterThan": {
"AWS:EpochTime":optional beginning date and time in Unix time
format and UTC
},
"IpAddress": {
"AWS:SourceIp": "optional IP address"
}
}
}
]
}
+ - (guion)
= _ (guion bajo)
/ ~ (tilde)
5. Incluya el valor resultante en el encabezado Set-Cookie después de CloudFront-Policy=.
6. Cree una firma para el encabezado Set-Cookie en CloudFront-Signature aplicando una
función hash, firmando y codificando con base64 la instrucción de política. Para obtener más
información, consulte Creación de una firma para una cookie firmada que utiliza una política
personalizada (p. 203).
Valores que se especifican en la instrucción de política de una política personalizada para cookies
firmadas
Al crear una instrucción de política para una política personalizada, debe especificar los siguientes valores.
199
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
Recurso
http://d111111abcdef8.cloudfront.net/images/horizon.jpg?
size=large&license=yes
Important
Si omite el parámetro Resource, los usuarios podrán obtener acceso a todos los archivos
asociados a cualquier distribución que esté asociada al par de claves utilizado para crear la
URL firmada.
http://d111111abcdef8.cloudfront.net/*game_download.zip*
La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universal
coordinada (UTC). No incluya el valor entre comillas.
Por ejemplo, 16 de marzo de 2015 a las 10:00 h UTC pasa a ser 1426500000 en formato de tiempo
Unix.
Para obtener más información, consulte ¿Cuándo comprueba CloudFront la fecha y hora de
vencimiento de una cookie firmada? (p. 191).
DateGreaterThan (opcional)
Una fecha y hora de inicio opcionales de la URL en formato de tiempo Unix (en segundos) y hora
universal coordinada (UTC). Los usuarios no tienen permiso para obtener acceso al archivo antes de
la fecha y la hora especificadas. No incluya el valor entre comillas.
IpAddress (opcional)
La dirección IP del cliente que hace la solicitud GET. Tenga en cuenta lo siguiente:
• Para permitir que cualquier dirección IP obtenga acceso al archivo, omita el parámetro IpAddress.
• Puede especificar una dirección IP o a un rango de direcciones IP. Por ejemplo, no puede configurar
la política para permitir el acceso si la dirección IP del cliente está en uno de dos rangos separados.
200
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
"Dirección IP IPv4/32"
• Debe especificar rangos de direcciones IP en formato estándar IPv4 CIDR (por ejemplo,
192.0.2.0/24). Para obtener más información, consulte RFC 4632, Classless Inter-domain
Routing (CIDR): The Internet Address Assignment and Aggregation Plan, https://tools.ietf.org/html/
rfc4632.
Important
Si está utilizando una política personalizada que incluya IpAddress, no habilite IPv6 para la
distribución. Si desea restringir el acceso a algún contenido por dirección IP y admite solicitudes
IPv6 de otro contenido, puede crear dos distribuciones. Para obtener más información, consulte
Habilitar IPv6 (p. 66) en el tema Valores que deben especificarse al crear o actualizar una
distribución (p. 43).
Ejemplos de instrucciones de políticas para una cookie firmada que utiliza una
política personalizada
En los siguientes ejemplos de instrucciones de políticas, se muestra cómo controlar el acceso a un archivo
específico, a todos los archivos de un directorio o a todos los archivos asociados a un ID de par de claves.
Los ejemplos también muestran cómo controlar el acceso de una dirección IP individual o a un rango de
direcciones IP, y cómo impedir que los usuarios utilicen la cookie firmada después de una fecha y hora
específicas.
Si copia y pega cualquiera de estos ejemplos, elimine los espacios en blanco (incluidos los tabuladores y
los caracteres de línea nueva), sustituya los valores por sus propios valores e incluya un carácter de línea
nueva después de la llave de cierre ( } ).
Para obtener más información, consulte Valores que se especifican en la instrucción de política de una
política personalizada para cookies firmadas (p. 199).
Temas
• Ejemplo de instrucción de política: acceso a un archivo desde un intervalo de direcciones IP (p. 201)
• Ejemplo de instrucción de política: acceso a todos los archivos de un directorio desde un intervalo de
direcciones IP (p. 202)
• Ejemplo de instrucción de política: acceso a todos los archivos asociados con un ID de par de claves
desde una dirección IP (p. 202)
En la siguiente política personalizada de ejemplo de una cookie firmada se especifica que un usuario
puede acceder al archivo http://d111111abcdef8.cloudfront.net/game_download.zip desde
las direcciones IP incluidas en el intervalo 192.0.2.0/24 hasta el 1 de enero de 2013 a las 10:00 h UTC:
{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/game_download.zip",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.0/24"
},
201
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
"DateLessThan": {
"AWS:EpochTime": 1357034400
}
}
}
]
}
Ejemplo de instrucción de política: acceso a todos los archivos de un directorio desde un intervalo
de direcciones IP
La siguiente política personalizada de ejemplo le permite crear cookies firmadas para cualquier archivo
del directorio training, tal y como indica el carácter comodín * del parámetro Resource. Los usuarios
podrán obtener acceso al archivo desde una dirección IP incluida en el rango 192.0.2.0/24 hasta el 1
de enero de 2013 a las 10:00 h UTC:
{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/training/*",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.0/24"
},
"DateLessThan": {
"AWS:EpochTime": 1357034400
}
}
}
]
}
Cada cookie firmada en la que utilice esta política tendrá una URL base que identificará un archivo
específico; por ejemplo:
http://d111111abcdef8.cloudfront.net/training/orientation.pdf
Ejemplo de instrucción de política: acceso a todos los archivos asociados con un ID de par de
claves desde una dirección IP
La siguiente política personalizada de ejemplo le permite establecer cookies firmadas para cualquier
archivo asociado a cualquier distribución, tal y como indica el carácter comodín * del parámetro Resource.
El usuario debe utilizar la dirección IP 192.0.2.10/32. (El valor 192.0.2.10/32 en notación CIDR se
refiere a la dirección IP individual 192.0.2.10). Los archivos solo van a estar disponibles desde el 1 de
enero de 2013 a las 10:00 h UTC hasta el 2 de enero de 2013 a las 10:00 h UTC:
{
"Statement": [
{
"Resource": "http://*",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.10/32"
},
"DateGreaterThan": {
"AWS:EpochTime": 1357034400
},
"DateLessThan": {
"AWS:EpochTime": 1357120800
}
202
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas
}
}
]
}
Cada cookie firmada en la que utiliza esta política incluye una URL base que identifica un archivo
específico de una distribución de CloudFront específica; por ejemplo:
http://d111111abcdef8.cloudfront.net/training/orientation.pdf
La cookie firmada también incluye un ID de par de claves que se debe asociar con un grupo de claves de
confianza en la distribución (d111111abcdef8.cloudfront.net) que se especifica en la URL base.
Creación de una firma para una cookie firmada que utiliza una política
personalizada
La firma de una cookie firmada que utiliza una política personalizada es una versión de la instrucción de
política a la que se le ha aplicado una función hash, firmada y codificada con base64.
Para obtener más información y ejemplos de cómo resumir, aplicar una función hash y codificar la
instrucción de política, consulte:
• Uso de comandos de Linux y OpenSSL para codificación y cifrado base64 (p. 204)
• Ejemplos de código para la creación de una firma para una URL firmada (p. 204)
Para crear una firma para una cookie firmada con una política personalizada
1. Use la función hash SHA-1 y RSA para resumir y firmar la instrucción de política JSON creada en
el procedimiento Para crear una instrucción de política para una URL firmada que use una política
personalizada (p. 183). Utilice la versión de la instrucción de política que ya no incluye espacios en
blanco pero que aún no se ha codificado con base64.
Para la clave privada requerida por la función hash, utilice una clave privada cuya clave pública esté
en un grupo de claves de confianza activo para la distribución.
Note
El método que utilice para resumir y aplicar una función hash la instrucción de política
depende de su lenguaje de programación y plataforma. Para ver código de muestra, consulte
Ejemplos de código para la creación de una firma para una URL firmada (p. 204).
2. Elimine los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la cadena a la
que se le ha aplicado una función hash y firmada.
3. Codifique la cadena con codificación base64 de MIME. Para obtener más información, consulte la
Section 6.8, Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose Internet Mail
Extensions) Part One: Format of Internet Message Bodies.
4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En la
siguiente tabla se muestran los caracteres válidos y no válidos.
+ - (guion)
= _ (guion bajo)
/ ~ (tilde)
203
Amazon CloudFront Guía para desarrolladores
Uso de comandos de Linux y OpenSSL
para codificación y cifrado base64
donde:
tr -d "\n" | tr -d " \t\n\r" elimina el carácter de nueva línea y los espacios en blanco
añadidos por cat.
OpenSSL codifica el archivo con el hash SHA-1 y lo firma con RSA y con el archivo de clave privada
private_key.pem.
OpenSSL codifica en base64 la instrucción de política a la que se le ha aplicado una función hash y
que se ha firmado.
tr sustituye los caracteres no válidos de los parámetros de cadenas de consulta de URL por
caracteres válidos.
Para consultar ejemplos de código que demuestren la creación de una firma en varios lenguajes de
programación, consulte Ejemplos de código para la creación de una firma para una URL firmada (p. 204).
Para obtener un código de ejemplo en JavaScript (Node.js), consulte Creación de URL firmadas de
Amazon CloudFront en Node.js en el blog para desarrolladores de AWS.
Temas
204
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
Crear una firma de URL es solo una parte del proceso de entrega de contenido privado mediante
una URL firmada. Para obtener más información acerca del proceso completo, consulte Uso de
URL firmadas (p. 174).
Temas
• Código fuente del script Perl para crear una URL firmada (p. 205)
Código fuente del script Perl para crear una URL firmada
El siguiente código fuente Perl puede utilizarse para crear una URL firmada para CloudFront. Los
comentarios del código incluyen información acerca de los conmutadores de las líneas de comandos y las
características de la herramienta.
#!/usr/bin/perl -w
# Copyright 2008 Amazon Technologies, Inc. Licensed under the Apache License, Version 2.0
(the "License");
# you may not use this file except in compliance with the License. You may obtain a copy of
the License at:
#
# http://aws.amazon.com/apache2.0
#
# This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.
# See the License for the specific language governing permissions and limitations under the
License.
=head1 cfsign.pl
=head1 SYNOPSIS
This script uses an existing RSA key pair to sign and verify Amazon CloudFront signed URLs
View the script source for details as to which CPAN packages are required beforehand.
cfsign.pl --help
205
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
To generate an RSA key pair, you can use openssl and the following commands:
=head1 OPTIONS
=over 8
=item B<--help>
=item B<--url>
=item B<--stream>
=item B<--private-key>
=item B<--key-pair-id>
=item B<--policy>
=item B<--expires>
The Unix epoch time when the URL is to expire. If both this option and
the --policy option are specified, --policy will be used. Otherwise, this
option alone will use a canned policy.
=back
=cut
use strict;
use warnings;
206
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
my $CANNED_POLICY
= '{"Statement":[{"Resource":"<RESOURCE>","Condition":{"DateLessThan":
{"AWS:EpochTime":<EXPIRES>}}}]}';
my $POLICY_PARAM = "Policy";
my $EXPIRES_PARAM = "Expires";
my $SIGNATURE_PARAM = "Signature";
my $KEY_PAIR_ID_PARAM = "Key-Pair-Id";
my $verbose = 0;
my $policy_filename = "";
my $expires_epoch = 0;
my $action = "";
my $help = 0;
my $key_pair_id = "";
my $url = "";
my $stream = "";
my $private_key_filename = "";
if ($help or !$result) {
pod2usage(1);
exit;
}
if ($stream ne "") {
exit unless is_stream_valid($stream);
207
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
$url = $stream;
}
if ($action eq "encode") {
# The encode action will generate a private content URL given a base URL,
# a policy file (or an expires timestamp) and a key pair id parameter
my $private_key;
my $public_key;
my $public_key_file;
my $policy;
if ($policy_filename eq "") {
if ($expires_epoch == 0) {
print STDERR "Must include policy filename with --policy argument or an
expires" .
"time using --expires\n";
}
$policy = $CANNED_POLICY;
$policy =~ s/<EXPIRES>/$expires_epoch/g;
$policy =~ s/<RESOURCE>/$url/g;
} else {
if (! -e $policy_filename) {
print STDERR "Policy file $policy_filename does not exist\n";
exit;
}
$expires_epoch = 0; # ignore if set
$policy = read_file($policy_filename);
}
if ($private_key_filename eq "") {
print STDERR "You must specific the path to your private key file with --private-
key\n";
exit;
}
if (! -e $private_key_filename) {
print STDERR "Private key file $private_key_filename does not exist\n";
exit;
}
if ($key_pair_id eq "") {
print STDERR "You must specify a key pair id with --key-pair-id\n";
exit;
}
my $encoded_policy = url_safe_base64_encode($policy);
my $signature = rsa_sha1_sign($policy, $private_key_filename);
my $encoded_signature = url_safe_base64_encode($signature);
if ($stream ne "") {
print "Encoded stream (for use within a swf):\n" . $generated_url . "\n";
print "Encoded and escaped stream (for use on a webpage):\n" .
escape_url_for_webpage($generated_url) . "\n";
} else {
print "Encoded URL:\n" . $generated_url . "\n";
}
} elsif ($action eq "decode") {
my $decoded = decode_url($url);
if (!$decoded) {
print STDERR "Improperly formed URL\n";
exit;
208
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
print_decoded_url($decoded);
} else {
# No action specified, print help. But only if this is run as a program (caller will
be empty)
pod2usage(1) unless caller();
}
if ($url =~ /(.*)\?(.*)/) {
my $base_url = $1;
my $params = $2;
my $encoded_signature = "";
if (exists $params{$SIGNATURE_PARAM}) {
$encoded_signature = $params{"Signature"};
} else {
print STDERR "Missing Signature URL parameter\n";
return 0;
}
my $encoded_policy = "";
if (exists $params{$POLICY_PARAM}) {
$encoded_policy = $params{$POLICY_PARAM};
} else {
if (!exists $params{$EXPIRES_PARAM}) {
print STDERR "Either the Policy or Expires URL parameter needs to be
specified\n";
return 0;
}
my $expires = $params{$EXPIRES_PARAM};
my $policy = $CANNED_POLICY;
$policy =~ s/<EXPIRES>/$expires/g;
my $url_without_cf_params = $url;
$url_without_cf_params =~ s/$SIGNATURE_PARAM=[^&]*&?//g;
$url_without_cf_params =~ s/$POLICY_PARAM=[^&]*&?//g;
$url_without_cf_params =~ s/$EXPIRES_PARAM=[^&]*&?//g;
$url_without_cf_params =~ s/$KEY_PAIR_ID_PARAM=[^&]*&?//g;
if ($url_without_cf_params =~ /(.*)\?$/) {
$url_without_cf_params = $1;
}
$policy =~ s/<RESOURCE>/$url_without_cf_params/g;
$encoded_policy = url_safe_base64_encode($policy);
}
my $key = "";
if (exists $params{$KEY_PAIR_ID_PARAM}) {
$key = $params{$KEY_PAIR_ID_PARAM};
} else {
209
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
my $policy = url_safe_base64_decode($encoded_policy);
my %ret = ();
$ret{"base_url"} = $base_url;
$ret{"policy"} = $policy;
$ret{"key"} = $key;
return \%ret;
} else {
return 0;
}
}
# Encode a string with base 64 encoding and replace some invalid URL characters
sub url_safe_base64_encode {
my ($value) = @_;
my $result = encode_base64($value);
$result =~ tr|+=/|-_~|;
return $result;
}
$value =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;
$value =~ tr|-_~|+=/|;
my $result = decode_base64($value);
return $result;
}
my $result;
my $separator = $path =~ /\?/ ? '&' : '?';
if ($expires) {
$result = "$path$separator$EXPIRES_PARAM=$expires&$SIGNATURE_PARAM=$signature&
$KEY_PAIR_ID_PARAM=$key_pair_id";
} else {
$result = "$path$separator$POLICY_PARAM=$policy&$SIGNATURE_PARAM=$signature&
$KEY_PAIR_ID_PARAM=$key_pair_id";
}
$result =~ s/\n//g;
return $result;
}
210
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
write_file("temp_policy.dat", $data);
my $output = read_file("temp_sign.dat");
return $output;
}
return $str;
}
sub is_url_valid {
my ($url) = @_;
# HTTP distributions start with http[s]:// and are the correct thing to sign
if ($url =~ /^https?:\/\//) {
return 1;
} else {
print STDERR "CloudFront requires absolute URLs for HTTP distributions\n";
return 0;
}
}
sub is_stream_valid {
my ($stream) = @_;
# flash requires that the query parameters in the stream name are url
# encoded when passed in through javascript, etc. This sub handles the minimal
# required url encoding.
sub escape_url_for_webpage {
211
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
my ($url) = @_;
$url =~ s/\?/%3F/g;
$url =~ s/=/%3D/g;
$url =~ s/&/%26/g;
return $url;
}
1;
También puede crear URL firmadas mediante la clase UrlSigner en el AWS SDK para PHP. Para
obtener más información, consulte Class UrlSigner en la Referencia de la API de AWS SDK para PHP.
Note
Crear una firma de URL es solo una parte del proceso de entrega de contenido privado mediante
una URL firmada. Para obtener más información acerca de todo el proceso, consulte Uso de URL
firmadas (p. 174).
Temas
• Ejemplo: firma RSA SHA-1 (p. 212)
• Ejemplo: crear política predefinida (p. 213)
• Ejemplo: crear una política personalizada (p. 213)
• Ejemplo de código completo (p. 214)
// compute signature
openssl_sign($policy, $signature, $pkeyid);
return $signature;
}
212
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
function url_safe_base64_encode($value) {
$encoded = base64_encode($value);
// replace unsafe characters +, = and / with
// the safe characters -, _ and ~
return str_replace(
array('+', '=', '/'),
array('-', '_', '~'),
$encoded);
}
La variable $expires es una marca temporal fecha/hora que debe ser un número entero, no una
cadena.
213
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
<?php
// compute signature
openssl_sign($policy, $signature, $pkeyid);
return $signature;
}
function url_safe_base64_encode($value) {
$encoded = base64_encode($value);
// replace unsafe characters +, = and / with the safe characters -, _ and ~
return str_replace(
array('+', '=', '/'),
array('-', '_', '~'),
$encoded);
}
function encode_query_params($stream_name) {
// Adobe Flash Player has trouble with query parameters being passed into it,
// so replace the bad characters with their URL-encoded forms
return str_replace(
array('?', '=', '&'),
array('%3F', '%3D', '%26'),
$stream_name);
}
214
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
// Path to your private key. Be very careful that this file is not accessible
// from the web!
$private_key_filename = '/home/test/secure/example-priv-key.pem';
$key_pair_id = 'K2JCJMDEHXQW5F';
$video_path = 'example.mp4';
$client_ip = $_SERVER['REMOTE_ADDR'];
$policy =
'{'.
'"Statement":['.
'{'.
'"Resource":"'. $video_path . '",'.
'"Condition":{'.
'"IpAddress":{"AWS:SourceIp":"' . $client_ip . '/32"},'.
'"DateLessThan":{"AWS:EpochTime":' . $expires . '}'.
'}'.
'}'.
']' .
'}';
$custom_policy_stream_name = get_custom_policy_stream_name($video_path,
$private_key_filename, $key_pair_id, $policy);
215
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
?>
<html>
<head>
<title>CloudFront</title>
<script type='text/javascript' src='https://example.cloudfront.net/player/swfobject.js'></
script>
</head>
<body>
<h1>Amazon CloudFront</h1>
<h2>Canned Policy</h2>
<h3>Expires at <?= gmdate('Y-m-d H:i:s T', $expires) ?></h3>
<br />
<h2>Custom Policy</h2>
<h3>Expires at <?= gmdate('Y-m-d H:i:s T', $expires) ?> only viewable by IP <?=
$client_ip ?></h3>
<div id='custom'>The custom policy video will be here</div>
<!-- ************** Have to update the player.swf path to a real JWPlayer instance.
The fake one means that external people cannot watch the video right now -->
<script type='text/javascript'>
var so_canned = new SWFObject('https://files.example.com/
player.swf','mpl','640','360','9');
so_canned.addParam('allowfullscreen','true');
so_canned.addParam('allowscriptaccess','always');
so_canned.addParam('wmode','opaque');
so_canned.addVariable('file','<?= $canned_policy_stream_name ?>');
so_canned.addVariable('streamer','rtmp://example.cloudfront.net/cfx/st');
so_canned.write('canned');
</html>
Véase también:
216
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
También puede crear URL firmadas y cookies firmadas a través de AWS SDK para .NET. En la Referencia
de la API de AWS SDK para .NET, consulte los siguientes temas:
Note
Crear una firma de URL es solo una parte del proceso de entrega de contenido privado mediante
una URL firmada. Para obtener más información acerca de todo el proceso, consulte Uso de URL
firmadas (p. 174).
Para utilizar una clave RSA en .NET Framework, debe convertir el archivo .pem suministrado por AWS al
formato XML que utiliza .NET Framework.
<RSAKeyValue>
<Modulus>
wO5IvYCP5UcoCKDo1dcspoMehWBZcyfs9QEzGi6Oe5y+ewGr1oW+vB2GPB
ANBiVPcUHTFWhwaIBd3oglmF0lGQljP/jOfmXHUK2kUUnLnJp+oOBL2NiuFtqcW6h/L5lIpD8Yq+NRHg
Ty4zDsyr2880MvXv88yEFURCkqEXAMPLE=
</Modulus>
<Exponent>AQAB</Exponent>
<P>
5bmKDaTz
npENGVqz4Cea8XPH+sxt+2VaAwYnsarVUoSBeVt8WLloVuZGG9IZYmH5KteXEu7fZveYd9UEXAMPLE==
</P>
<Q>
1v9l/WN1a1N3rOK4VGoCokx7kR2SyTMSbZgF9IWJNOugR/WZw7HTnjipO3c9dy1Ms9pUKwUF4
6d7049EXAMPLE==
</Q>
<DP>
RgrSKuLWXMyBH+/l1Dx/I4tXuAJIrlPyo+VmiOc7b5NzHptkSHEPfR9s1
OK0VqjknclqCJ3Ig86OMEtEXAMPLE==
</DP>
<DQ>
pjPjvSFw+RoaTu0pgCA/jwW/FGyfN6iim1RFbkT4
z49DZb2IM885f3vf35eLTaEYRYUHQgZtChNEV0TEXAMPLE==
</DQ>
<InverseQ>
nkvOJTg5QtGNgWb9i
cVtzrL/1pFEOHbJXwEJdU99N+7sMK+1066DL/HSBUCD63qD4USpnf0myc24in0EXAMPLE==</InverseQ>
<D>
Bc7mp7XYHynuPZxChjWNJZIq+A73gm0ASDv6At7F8Vi9r0xUlQe/v0AQS3ycN8QlyR4XMbzMLYk
3yjxFDXo4ZKQtOGzLGteCU2srANiLv26/imXA8FVidZftTAtLviWQZBVPTeYIA69ATUYPEq0a5u5wjGy
UOij9OWyuEXAMPLE=
</D>
</RSAKeyValue>
El siguiente código C# crea una URL firmada que utiliza una política predefinida siguiendo los pasos que
se indican a continuación:
217
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
• Codifica con base64 la instrucción de política a la que se le ha aplicado una función hash y firmada y
sustituye caracteres especiales para que la cadena se pueda usar tranquilamente como parámetro de
solicitud de URL.
• Encadena los valores.
Para ver la implementación completa, consulte el ejemplo disponible en Código de firma en C#.
218
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
El siguiente código C# crea una URL firmada que utiliza una política personalizada siguiendo los pasos
que se indican a continuación:
Para ver la implementación completa, consulte el ejemplo disponible en Código de firma en C#.
219
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
return urlString +
"?Policy=" +
urlSafePolicy +
"&Signature=" +
strSignedPolicy +
"&Key-Pair-Id=" +
PrivateKeyId;
}
}
Los siguientes métodos obtienen la instrucción de política de un archivo y analizan intervalos de tiempo
para generar firmas.
{
// Create the policy statement.
FileStream streamPolicy = new FileStream(policyStmnt, FileMode.Open, FileAccess.Read);
using (StreamReader reader = new StreamReader(streamPolicy))
220
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
{
string strPolicy = reader.ReadToEnd();
221
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas
default:
return new TimeSpan(0, 0, 0, 0);
}
}
Véase también
La creación de una URL firmada es solo una parte del proceso de entrega de contenido privado
con CloudFront (p. 164). Para obtener más información acerca de todo el proceso, consulte Uso
de URL firmadas (p. 174).
En el ejemplo siguiente se muestra cómo crear una URL firmada de CloudFront. Debe convertir la clave
privada de formato PEM a formato DER para que las implementaciones de Java puedan usarla.
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
222
Amazon CloudFront Guía para desarrolladores
Restricción del acceso al contenido de Amazon S3
Véase también:
1. Cree un usuario de CloudFront especial denominado identidad de acceso de origen (OAI) y asócielo a la
distribución.
223
Amazon CloudFront Guía para desarrolladores
Información general de la configuración de OAI
2. Configure los permisos del bucket de S3 para que CloudFront pueda usar la OAI para acceder a los
archivos del bucket y distribuirlos a los usuarios. Asegúrese de que los usuarios no pueden usar una
URL directa al bucket de S3 para acceder a un archivo allí.
Después de realizar estos pasos, los usuarios solo pueden acceder a los archivos a través de CloudFront,
no directamente desde el bucket de S3.
En general, si utiliza un bucket de Amazon S3 como origen de una distribución de CloudFront, puede
permitir que todo el mundo tenga acceso a los archivos allí o puede restringir el acceso. Si restringe el
acceso utilizando, por ejemplo, URL o cookies firmadas de CloudFront, tampoco querrá que nadie pueda
consultar los archivos utilizando únicamente la URL de Amazon S3 directa para el archivo. En su lugar,
querrá que solo puedan acceder a los archivos utilizando la URL de CloudFront para que las protecciones
funcionen. Para obtener más información sobre el uso de URL firmadas y cookies firmadas, consulte
Distribución de contenido privado con URL firmadas y cookies firmadas (p. 164).
En este tema se explica en detalle cómo configurar la OAI y le conceden permisos para mantener un
acceso seguro a los archivos de S3.
Important
Si utiliza un bucket de Amazon S3 configurado como punto de enlace de un sitio web, debe
configurarlo con CloudFront como origen personalizado. No puede utilizar la característica
de identidad de acceso de origen descrita en este tema. Sin embargo, puede restringir el
acceso a contenido en un origen personalizado a través de la configuración de encabezados
personalizados y configurando su origen para que los requiera. Para obtener más información,
consulte Restricción del acceso a archivos en orígenes personalizados (p. 165).
Temas
• Información general de la configuración de OAI (p. 224)
• Crear una OAI de CloudFront y agregarla a la distribución (p. 225)
• Concesión de permiso a la OAI para leer los archivos del bucket de Amazon S3 (p. 227)
• Uso de una OAI en regiones de Amazon S3 que solo admiten autenticación Signature Version
4 (p. 230)
Si utiliza URL firmadas de CloudFront o cookies firmadas para restringir el acceso a los archivos del bucket
de Amazon S3, probablemente también desee impedir que los usuarios accedan a los archivos de Amazon
S3 mediante las URL de Amazon S3. Si los usuarios acceden a los archivos directamente en Amazon S3,
eludirán los controles proporcionados por las URL o las cookies firmadas por CloudFront. Esto incluye el
control sobre la fecha y la hora en que un usuario ya no puede acceder a su contenido y el control sobre
qué direcciones IP se pueden usar para acceder al contenido. Además, si los usuarios acceden a los
archivos a través de CloudFront y directamente mediante las URL de Amazon S3, los registros de acceso
de CloudFront son menos útiles porque están incompletos.
Para asegurarse de que los usuarios acceden a los archivos solo con las URL de CloudFront,
independientemente de que dichas URL estén firmadas o no, haga lo siguiente:
224
Amazon CloudFront Guía para desarrolladores
Crear una OAI de CloudFront y agregarla a la distribución
1. Cree una identidad de acceso de origen, que es un usuario de CloudFront especial y asocie dicha
identidad con la distribución. Se asocia la identidad de acceso de origen con los orígenes para que
pueda proteger todo o parte del contenido de Amazon S3. También puede crear una identidad de
acceso de origen y añadirla a la distribución que cree posteriormente. Para obtener más información,
consulte Crear una OAI de CloudFront y agregarla a la distribución (p. 225).
2. Cambie los permisos del bucket de Amazon S3 o de los archivos del bucket para que solo la identidad
de acceso de origen tenga permisos de lectura (o de lectura y descarga). Cuando los usuarios
acceden a los archivos de Amazon S3 a través de CloudFront, la identidad de acceso de origen
de CloudFront obtiene los archivos en nombre de los usuarios. Si los usuarios solicitan archivos
directamente mediante las URL de Amazon S3, se les deniega el acceso. La identidad de acceso de
origen tiene permiso para acceder a los archivos del bucket de Amazon S3, pero los usuarios no. Para
obtener más información, consulte Concesión de permiso a la OAI para leer los archivos del bucket de
Amazon S3 (p. 227).
Si no creó ninguna OAI ni la agregó a la distribución cuando creó la distribución, puede crear y agregar una
ahora mediante la consola de CloudFront o la API de CloudFront:
• Para utilizar la consola de CloudFront: puede crear una OAI y agregarla a la distribución en el mismo
momento. Para obtener instrucciones paso a paso, consulte Cómo crear una OAI y añadirla a la
distribución (p. 225).
• Para usar la API de CloudFront: se crea una OAI y, a continuación, se agrega a la distribución. Para
obtener instrucciones paso a paso, consulte lo siguiente:
• Creación de una OAI mediante la API de CloudFront (p. 226)
• Agregar una OAI a la distribución mediante la API de CloudFront (p. 226)
Note
Para crear OAI, debe utilizar la consola de CloudFront o la versión 2009-09-09 de la API de
CloudFront o posterior.
225
Amazon CloudFront Guía para desarrolladores
Crear una OAI de CloudFront y agregarla a la distribución
Note
Si desea crear una OAI, elija Create a New Identity (Crear una identidad). Puede sustituir el nombre
del bucket en el campo Comment (Comentario), por una descripción personalizada.
7. Si desea que CloudFront conceda automáticamente a la OAI permiso de lectura para los archivos del
bucket de Amazon S3 especificado en Origin Domain Name (Nombre de dominio de origen), elija Yes,
Update Bucket Policy (Sí, actualizar la política de bucket).
Important
Si elige Yes, Update Bucket Policy (Sí, actualizar la política de bucket), CloudFront actualiza
los permisos del bucket para conceder a la OAI especificada permiso de lectura a los
archivos del bucket. Sin embargo, CloudFront no elimina los permisos existentes. Si los
usuarios tienen actualmente permisos de acceso a los archivos del bucket mediante las
URL de Amazon S3, los conservarán después de que CloudFront actualice los permisos
del bucket. Para consultar o eliminar los permisos del bucket existentes, utilice un método
proporcionado por Amazon S3.
Si desea actualizar manualmente los permisos del bucket de Amazon S3, elija No, I Will Update
Permissions (No, yo actualizaré los permisos). Para obtener más información, consulte Concesión de
permiso a la OAI para leer los archivos del bucket de Amazon S3 (p. 227).
8. Elija Yes, Edit (Sí, editar).
9. Si tiene más de un origen, repita los pasos con el fin de agregar una OAI para cada uno.
Para crear una OAI de CloudFront mediante la API de CloudFront, utilice la acción de la API POST
Origin Access Identity. La respuesta incluye los valores de Id y S3CanonicalUserId para la
nueva OAI. Tome nota de estos valores, porque los necesitará más adelante en este proceso:
• Id element (Elemento Id): el valor del elemento Id se usa para asociar la OAI a la distribución.
• S3CanonicalUserId element (Elemento S3CanonicalUserId): el valor del elemento
S3CanonicalUserId se usa al utilizar las ACL del objeto de Amazon S3 para proporcionar acceso a
las OAI a los objetos de Amazon S3.
226
Amazon CloudFront Guía para desarrolladores
Concesión de permiso a la OAI para leer
los archivos del bucket de Amazon S3
Sea cual sea el método que utilice, debe revisar los permisos para asegurarse de que:
• La OAI de CloudFront puede acceder a los archivos del bucket en nombre de los lectores que los
soliciten a través de CloudFront.
• Los lectores no pueden utilizar las URL de Amazon S3 para acceder a los archivos fuera de CloudFront.
Important
Si configura CloudFront para que acepte y reenvíe todos los métodos HTTP compatibles con
CloudFront, asegúrese de conceder a la OAI de CloudFront los permisos deseados. Por ejemplo,
si configura CloudFront para aceptar y reenviar solicitudes que utilizan el método DELETE,
configure la política de bucket o ACL de objetos para que gestionen las solicitudes DELETE de
forma adecuada para que los lectores solo puedan eliminar archivos que quiera que se eliminen.
• Es posible que le resulte más sencillo usar las políticas del bucket de Amazon S3 que las ACL de
objetos porque puede agregar archivos al bucket sin necesidad de actualizar los permisos. Sin embargo,
las ACL ofrecen un control más minucioso, ya que los permisos se conceden para cada archivo.
• De forma predeterminada, el bucket de Amazon S3 y todos los archivos que este contiene son privados.
Solo la cuenta de AWS que creó el bucket tiene permiso para leer o escribir los archivos incluidos en él.
• Si otra cuenta de AWS carga archivos en el bucket, esa cuenta es la propietaria de esos archivos. Las
políticas de los buckets solo se aplican a los archivos del propietario del bucket. Esto significa que si otra
cuenta carga archivos en su bucket, la política del bucket que creó para su OAI no se tendrá en cuenta
con dichos archivos. En ese caso, use ACL de objeto para conceder permisos a su OAI.
• Si va a agregar una OAI a una distribución existente, modifique la política de bucket o cualquier ACL de
objeto según proceda para asegurarse de que los archivos no estén disponibles públicamente fuera de
CloudFront.
• Conceda permisos adicionales a una o más cuentas de administrador seguras para poder continuar
actualizando el contenido del bucket de Amazon S3.
Important
Es posible que se produzca un breve retraso entre el momento de guardado de los cambios de
permisos de Amazon S3 y el momento en el que surten efecto. Hasta que los cambios surtan
efecto, puede que se produzcan errores de denegación de permiso al intentar obtener acceso a
los archivos del bucket.
• Mediante la pestaña Permissions (Permisos) del bucket de Amazon S3 en la consola de Amazon S3.
• Mediante PutBucketPolicy en la API de Amazon S3.
227
Amazon CloudFront Guía para desarrolladores
Concesión de permiso a la OAI para leer
los archivos del bucket de Amazon S3
• Mediante la consola de CloudFront. Cuando agrega una OAI a la configuración de origen en la consola
de CloudFront, puede elegir Yes, Update Bucket Policy (Sí, actualizar política de bucket) para indicar a
CloudFront que actualice la política del bucket en su nombre.
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC"
}
Para utilizar el ejemplo anterior, reemplace EH1HDMB1FH2TC por el ID de la OAI. Para encontrar el
ID de la OAI, consulte la página Identidad de acceso de origen en la consola de CloudFront o utilice
ListCloudFrontOriginAccessIdentities en la API de CloudFront.
También puede especificar una OAI como Principal mediante el ID canónico de Amazon S3. Por
ejemplo:
"Principal": {
"CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"
}
Una ventaja de usar el ARN de la OAI para especificarla como Principal es que es más fácil
entender a quién concede acceso la política de bucket. Los ID canónicos de Amazon S3 pueden
referirse a diferentes tipos de identidades de AWS, no solo a las OAI de CloudFront y puede
resultar difícil determinar a qué identidad se refiere un ID canónico. Cuando se usa del ARN de la
OAI puede ser más fácil entender la política del bucket.
Además, cuando utiliza el ID canónico de la OAI en una política de bucket, AWS reemplaza el ID
canónico por el ARN de la OAI. Cuando escribe una política que especifica un ID canónico de la
OAI y luego ve la misma política, verá que el ID canónico ha sido reemplazado por el ARN de la
OAI correspondiente. Por esta razón, podría tener sentido escribir la política usando el ARN de la
OAI.
228
Amazon CloudFront Guía para desarrolladores
Concesión de permiso a la OAI para leer
los archivos del bucket de Amazon S3
El siguiente ejemplo permite a la OAI leer objetos del bucket especificado (s3:GetObject).
{
"Version": "2012-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access
Identity EH1HDMB1FH2TC"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
}
]
}
Example Política de bucket de Amazon S3 que concede acceso de lectura y escritura a la OAI
{
"Version": "2012-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access
Identity EH1HDMB1FH2TC"
},
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
}
]
}
229
Amazon CloudFront Guía para desarrolladores
Uso de una OAI en regiones de Amazon S3 que
solo admiten autenticación Signature Version 4
• Mediante la pestaña Permissions (Permisos) del objeto de Amazon S3 en la consola de Amazon S3.
• Mediante PutObjectAcl en la API de Amazon S3.
Cuando concede acceso a una OAI mediante una ACL, debe especificar la OAI mediante el ID de usuario
canónico de Amazon S3. Este es el valor de Amazon S3 Canonical User ID (ID de usuario canónico de
Amazon S3) en la página de identidad de acceso de origen de la consola de CloudFront. Si utiliza la
API de CloudFront, use el valor del elemento S3CanonicalUserId devuelto al crear la OAI o llame a
ListCloudFrontOriginAccessIdentities en la API de CloudFront.
Para obtener más información acerca de las ACL de objetos de Amazon S3, consulte Administración de
acceso con ACL en la Guía para desarrolladores de Amazon Simple Storage Service.
• Las solicitudes DELETE, GET, HEAD, OPTIONS y PATCH se admiten sin cualificación.
• Si desea enviar solicitudes PUT a CloudFront para cargar archivos en el bucket de Amazon S3, debe
agregar un encabezado x-amz-content-sha256 a la solicitud. El valor del encabezado debe contener
un hash SHA256 del cuerpo de la solicitud. Para obtener más información, consulte la documentación
sobre el encabezado x-amz-content-sha256 en la página Encabezados de solicitud comunes de la
Referencia de la API de Amazon Simple Storage Service.
• Las solicitudes POST no están admitidas.
Para evitar que los usuarios accedan directamente a un balanceador de carga de aplicaciones y permitir el
acceso solo a través de CloudFront, siga estos pasos de alto nivel:
1. Configure CloudFront para agregar un encabezado HTTP personalizado a las solicitudes que envía al
balanceador de carga de aplicaciones.
230
Amazon CloudFront Guía para desarrolladores
Configuración de CloudFront para agregar un
encabezado HTTP personalizado a las solicitudes
2. Configure el balanceador de carga de aplicaciones para que solo reenvíe solicitudes que contengan el
encabezado HTTP personalizado.
3. (Opcional) Requiera HTTPS para mejorar la seguridad de esta solución.
Para obtener más información, consulte los siguientes temas. Después de completar estos pasos, los
usuarios solo pueden acceder a su balanceador de carga de aplicaciones a través de CloudFront.
Temas
• Configuración de CloudFront para agregar un encabezado HTTP personalizado a las
solicitudes (p. 231)
• Configuración de un balanceador de carga de aplicaciones para que solo reenvíe solicitudes que
contengan un encabezado específico (p. 232)
• (Opcional) Mejore la seguridad de esta solución (p. 236)
Este caso de uso se basa en mantener el nombre del encabezado personalizado y el valor en
secreto. Si el nombre y el valor del encabezado no son secretos, otros clientes HTTP podrían
incluirlos en las solicitudes que envían directamente al balanceador de carga de aplicaciones.
Esto puede hacer que el balanceador de carga de aplicaciones se comporte como si las
solicitudes vinieran de CloudFront cuando no lo hacen. Para evitar esto, mantenga el nombre del
encabezado personalizado y el valor en secreto.
Puede configurar CloudFront para agregar un encabezado HTTP personalizado a las solicitudes de origen
con la consola de CloudFront, AWS CloudFormation o la API de CloudFront.
El nombre del encabezado y el valor de este ejemplo son solo para demostración. En
producción, use valores generados aleatoriamente. Trate el nombre y el valor del encabezado
como una credencial segura, como un nombre de usuario y una contraseña.
231
Amazon CloudFront Guía para desarrolladores
Configuración de un balanceador de carga de
aplicaciones para que solo reenvíe solicitudes
que contengan un encabezado específico
Para agregar un encabezado HTTP personalizado (AWS CloudFormation)
El nombre del encabezado y el valor de este ejemplo son solo para demostración. En
producción, use valores generados aleatoriamente. Trate el nombre y el valor del encabezado
como una credencial segura, como un nombre de usuario y una contraseña.
AWSTemplateFormatVersion: '2010-09-09'
Resources:
TestDistribution:
Type: 'AWS::CloudFront::Distribution'
Properties:
DistributionConfig:
Origins:
- DomainName: app-load-balancer.example.com
Id: Example-ALB
CustomOriginConfig:
OriginProtocolPolicy: https-only
OriginSSLProtocols:
- TLSv1.2
OriginCustomHeaders:
- HeaderName: X-Custom-Header
HeaderValue: random-value-1234567890
Enabled: 'true'
DefaultCacheBehavior:
TargetOriginId: Example-ALB
ViewerProtocolPolicy: allow-all
CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6
PriceClass: PriceClass_All
ViewerCertificate:
CloudFrontDefaultCertificate: 'true'
Para obtener más información, consulte las propiedades Origin y OriginCustomHeader en la Guía del
usuario de AWS CloudFormation.
Para agregar un encabezado HTTP personalizado (API de CloudFront)
En la API de CloudFront, utilice el CustomHeaders objeto interior Origin. Para obtener más
información, consulte CreateDistribution and UpdateDistribution en la Referencia de la API de Amazon
CloudFront y la documentación del SDK u otro cliente de API.
Hay algunos nombres de encabezados que no se pueden especificar como encabezados personalizados
de origen. Para obtener más información, consulte Encabezados personalizados que CloudFront no puede
agregar a solicitudes de origen (p. 321).
232
Amazon CloudFront Guía para desarrolladores
Configuración de un balanceador de carga de
aplicaciones para que solo reenvíe solicitudes
que contengan un encabezado específico
Requisitos previos
Para utilizar los siguientes procedimientos, necesita un balanceador de carga de aplicaciones con al
menos un agente de escucha. Si aún no ha creado uno, consulte Crear un balanceador de carga de
aplicaciones en la Guía del usuario de balanceadores de carga de aplicaciones.
Los siguientes procedimientos modifican un agente de escucha HTTPS. Puede utilizar el mismo proceso
para modificar un agente de escucha HTTP.
Para actualizar las reglas en un agente de escucha del balanceador de carga de aplicaciones
a. Elija Add condition (Agregar condición) y, a continuación, elija Http header (Encabezado
Http). Especifique el nombre del encabezado HTTP y el valor que agregó como encabezado
personalizado de origen en CloudFront.
b. Elija Add action (Agregar acción) y, a continuación, seleccione Forward to (Reenviar a). Elija el
grupo de destino al que desea reenviar las solicitudes.
c. Seleccione Save (Guardar) para crear la regla nueva.
233
Amazon CloudFront Guía para desarrolladores
Configuración de un balanceador de carga de
aplicaciones para que solo reenvíe solicitudes
que contengan un encabezado específico
234
Amazon CloudFront Guía para desarrolladores
Configuración de un balanceador de carga de
aplicaciones para que solo reenvíe solicitudes
que contengan un encabezado específico
b. Elija Add action (Agregar acción) y, a continuación, elija Return fixed response (Devolver
respuesta fija).
c. En Response code (Código de respuesta), escriba 403.
235
Amazon CloudFront Guía para desarrolladores
(Opcional) Mejore la seguridad de esta solución
Después de completar estos pasos, el agente de escucha del balanceador de carga tiene dos reglas, como
se muestra en la imagen siguiente. La primera regla reenvía las solicitudes que contienen el encabezado
HTTP (solicitudes que provienen de CloudFront). La segunda regla envía una respuesta fija a todas las
demás solicitudes (solicitudes que no provienen de CloudFront).
Puede verificar que la solución funcione si envía una solicitud a su distribución de CloudFront y una a su
balanceador de carga de aplicaciones. La solicitud a CloudFront devuelve su aplicación web o contenido y
la que se envía directamente al balanceador de carga de aplicaciones devuelve una respuesta 403 con el
mensaje de texto sin formato Access denied.
Para configurar CloudFront a fin de que utilice HTTPS para solicitudes de origen, establezca la
configuración Origin Protocol Policy (Política de protocolo de origen) en HTTPS Only (Solo HTTPS). Esta
236
Amazon CloudFront Guía para desarrolladores
Utilizar AWS WAF para controlar el acceso al contenido
Cuando configura CloudFront a fin de utilizar HTTPS para solicitudes de origen, debe asegurarse de que
el balanceador de carga de aplicaciones tenga un agente de escucha HTTPS (como se muestra en la
sección anterior (p. 232)). Esto requiere que tenga un certificado SSL/TLS que coincida con el nombre de
dominio que se enruta al balanceador de carga de aplicaciones. Para obtener más información, consulte
Crear un agente de escucha HTTPS en la Guía del usuario de balanceadores de carga de aplicaciones.
Si los usuarios finales (también conocidos como lectoreso clientes) de su aplicación web pueden usar
HTTPS, también puede configurar CloudFront para que prefiera (o incluso requiera) conexiones HTTPS
de los usuarios finales. Para ello, utilice la configuración Viewer Protocol Policy (Política de protocolo del
lector). Puede configurarla para redirigir a los usuarios finales de HTTP a HTTPS o rechazar las solicitudes
que utilizan HTTP. Esta configuración está disponible en la consola de CloudFront, AWS CloudFormation y
la API de CloudFront. Para obtener más información, consulte Viewer Protocol Policy (p. 55).
Además de usar HTTPS, también recomendamos cambiar el nombre y el valor del encabezado
periódicamente. Los pasos de alto nivel para hacerlo son los siguientes:
1. Configure CloudFront para agregar un encabezado HTTP personalizado adicional a las solicitudes que
envía al balanceador de carga de aplicaciones.
2. Actualice la regla del agente de escucha del balanceador de carga de aplicaciones para reenviar
solicitudes que contengan este encabezado HTTP personalizado adicional.
3. Configure CloudFront para dejar de agregar el encabezado HTTP personalizado original a las
solicitudes que envía al balanceador de carga de aplicaciones.
4. Actualice la regla del agente de escucha del balanceador de carga de aplicaciones para detener el
reenvío de solicitudes que contengan el encabezado HTTP personalizado original.
Para obtener más información sobre cómo realizar estos pasos, consulte las secciones anteriores.
Después de crear una lista de control de acceso web (ACL web) de AWS WAF, cree o actualice una
distribución web para asociar la distribución a la ACL web. Puede asociar tantas distribuciones de
CloudFront como desee con la misma ACL web o con diferentes ACL web. Para obtener información
acerca la creación de una distribución y su asociación a una ACL web, consulte Creación de una
distribución (p. 42).
Para asociar una ACL web a una distribución existente o desvincularlas, o cambiar la ACL web asociada a
una distribución, realice el siguiente procedimiento.
237
Amazon CloudFront Guía para desarrolladores
Restricción geográfica de contenido
Para asociar o desasociar una ACL web de AWS WAF y una distribución de CloudFront existente
mediante la consola de CloudFront
Si desea desvincular la distribución de todas las ACL web, elija None (Ninguna). Si desea asociar la
distribución a otra ACL web, elija la nueva ACL web.
5. Elija Yes, Edit (Sí, editar).
6. Repita los pasos 2 al 5 para otras distribuciones, de haberlas, a las que desee añadir, eliminar o
cambiar asociaciones con las ACL web de AWS WAF.
7. Después de cambiar la configuración, el valor de la columna Status (Estado) de las distribuciones
que ha actualizado cambia a InProgress (En curso) mientras CloudFront propaga los cambios a
ubicaciones de borde. Cuando el Status (Estado) cambia a Deployed (Implementado) para una
distribución, la distribución está lista para utilizar AWS WAF al procesar solicitudes. (El valor de la
columna State (Estado) de la distribución también deberá ser Enabled (Habilitado)). El cambio debería
tomar menos de 15 minutos en aplicarse después de guardar el último cambio en una distribución.
Note
• Utilice la característica de restricción geográfica de CloudFront. Utilice esta opción para restringir el
acceso a todos los archivos asociados a una distribución y según el país.
• Utilice un servicio de geolocalización de terceros. Utilice esta opción para restringir el acceso a un
subconjunto de los archivos asociados a una distribución o para restringirlo a un nivel más detallado que
por país.
Temas
• Uso de la restricción geográfica de CloudFront (p. 238)
• Utilizar un servicio de geolocalización de terceros (p. 240)
238
Amazon CloudFront Guía para desarrolladores
Uso de la restricción geográfica de CloudFront
puede usar la característica de restricción geográfica de CloudFront para realizar una de las siguientes
acciones:
• Permita a los usuarios obtener acceso a su contenido solo si están en uno de los países aprobados e
incluidos en una lista blanca.
• Evite que los usuarios obtengan acceso a su contenido si están en uno de los países prohibidos e
incluidos en una lista negra.
Por ejemplo, si una solicitud proviene de un país en el que, por motivos de derechos de autor, no está
autorizado a distribuir el contenido, puede utilizar la restricción geográfica de CloudFront para bloquear la
solicitud.
Note
CloudFront determina la ubicación de los usuarios mediante una base de datos GeoIP de
terceros. La precisión del mapeo entre direcciones IP y países varía en función de la región.
Según pruebas recientes, la precisión global es del 99,8 %. Si CloudFront no puede determinar la
ubicación de un usuario, CloudFront ofrece el contenido que el usuario ha solicitado.
1. Supongamos que tiene derechos para distribuir su contenido únicamente en Liechtenstein. Se actualiza
la distribución de CloudFront y se agrega una lista blanca que contiene solo Liechtenstein. (También
puede añadir una lista negra que contenga todos los países excepto Liechtenstein).
2. Un usuario en Mónaco solicita el contenido y DNS dirige la solicitud a la ubicación de borde de
CloudFront en Milán, Italia.
3. La ubicación de borde en Milán revisa su distribución y determina que el usuario en Mónaco no está
autorizado a descargar el contenido.
4. CloudFront devuelve un código de estado HTTP 403 (Forbidden) al usuario.
Si lo desea, puede configurar CloudFront para devolver un mensaje de error personalizado al usuario
y puede especificar el tiempo durante el cual desea que CloudFront almacene en caché la respuesta
de error del archivo solicitado. El valor de predeterminado es de 10 segundos. Para obtener más
información, consulte Creación de una página de error personalizada para códigos de estado HTTP
específicos (p. 134).
Si habilita el registro de acceso de CloudFront, puede identificar las solicitudes que CloudFront rechaza
buscando las entradas de registro cuyo valor de sc-status (el código de estado HTTP) sea 403. Sin
embargo, si solo utiliza los registros de acceso, no puede distinguir entre las solicitudes que CloudFront
rechace a causa de la ubicación del usuario y las que CloudFront rechace porque el usuario no tenga
permiso de acceso al archivo debido a otro motivo. Si tiene un servicio de geolocalización de terceros
como Digital Element o MaxMind, puede identificar la ubicación de las solicitudes en función de la dirección
IP en la columna c-ip (IP del cliente) de los registros de acceso. Para obtener más información sobre
los registros de acceso de CloudFront, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).
En el siguiente procedimiento se explica cómo utilizar la consola de CloudFront para agregar la restricción
geográfica a una distribución existente. Para obtener más información acerca de cómo crear una
distribución, consulte Creación de una distribución (p. 42).
239
Amazon CloudFront Guía para desarrolladores
Utilizar un servicio de geolocalización de terceros
Los siguientes pasos explican cómo controlar el acceso a sus archivos mediante un servicio de
geolocalización de terceros.
Para utilizar la ubicación geográfica para restringir el acceso a los archivos de una distribución de
CloudFront
Para obtener más información, consulte la documentación del servicio de geolocalización que está
utilizando.
Puede utilizar una variable de servidor web para obtener las direcciones IP de los usuarios que visitan su
sitio web. Sin embargo, tenga en cuenta lo siguiente:
240
Amazon CloudFront Guía para desarrolladores
Uso del cifrado en el nivel de campo para
ayudar a proteger la información confidencial
• Si su servidor web no está conectado a Internet a través de un balanceador de carga, puede utilizar una
variable de servidor web para obtener la dirección IP remota. Sin embargo, esta dirección IP no siempre
es la dirección IP del usuario. También puede ser la dirección IP de un servidor proxy, dependiendo de
cómo esté el usuario conectado a Internet.
• Si su servidor web está conectado a Internet a través de un balanceador de carga, una variable de
servidor web podría contener la dirección IP del balanceador de carga en lugar de la dirección IP del
usuario. En esta configuración, le recomendamos utilizar la última dirección IP del encabezado HTTP X-
Forwarded-For. Este encabezado normalmente contiene más de una dirección IP, la mayoría de los
cuales son de proxis o balanceadores de carga. La última dirección IP de la lista tiene más posibilidades
de ser asociada a la ubicación geográfica del usuario.
Si su servidor web no está conectado a un balanceador de carga, le recomendamos que utilice variables
de servidor web en lugar del encabezado X-Forwarded-For para evitar la suplantación de direcciones
IP.
El cifrado en el nivel de campo le permite facilitar a sus usuarios que carguen de manera segura
información sensible a los servidores web. La información confidencial proporcionada por los usuarios
se cifra en el borde, cerca del usuario y permanece cifrada en toda la pila de la aplicación. Este cifrado
garantiza que solo las aplicaciones que necesitan los datos y que tienen las credenciales para descifrarlos
puedan hacerlo.
Para utilizar cifrado en el nivel de campo, cuando configure la distribución de CloudFront, especifique el
conjunto de campos de las solicitudes POST que desea cifrar y la clave pública que se va a usar para
cifrarlos. Puede cifrar hasta 10 campos de datos en cada solicitud. (No puede cifrar todos los datos de una
solicitud mediante el cifrado en el nivel de campo, debe especificar campos individuales).
Cuando la solicitud HTTPS con el cifrado en el nivel de campo se reenvía al origen y se transfiere por
toda la aplicación o subsistema de origen, la información confidencial sigue estando cifrada, lo que reduce
el riesgo de una infracción de los datos o una pérdida accidental de la información confidencial. Los
componentes que necesitan obtener acceso a la información confidencial por motivos empresariales,
como un sistema de procesamiento de pagos que necesita tener acceso a un número de tarjeta de crédito,
pueden utilizar la clave privada apropiada para descifrar los datos y obtener acceso a ellos.
Note
Para utilizar el cifrado en el nivel de campo, el origen debe admitir la codificación fragmentada.
241
Amazon CloudFront Guía para desarrolladores
Uso del cifrado en el nivel de campo para
ayudar a proteger la información confidencial
El cifrado en el nivel de campo de CloudFront utiliza cifrado asimétrico, también denominado cifrado
de clave pública. Se proporciona una clave pública a CloudFront y toda la información confidencial
especificada se cifra automáticamente. La clave proporcionada a CloudFront no se puede utilizar para
descifrar los valores cifrados; esto solo puede hacerlo la clave privada.
242
Amazon CloudFront Guía para desarrolladores
Información general del cifrado en el nivel de campo
Temas
• Información general del cifrado en el nivel de campo (p. 243)
• Configuración del cifrado en el nivel de campo (p. 244)
• Descifrado de campos de datos en el origen (p. 248)
1. Obtener un par clave pública-clave privada. Debe obtener y agregar la clave pública antes de empezar
a configurar el cifrado en el nivel de campo en CloudFront.
2. Crear un perfil de cifrado en el nivel de campo. Los perfiles de cifrado en el nivel de campo que se
crean en CloudFront, definen los campos que se deben cifrar.
3. Crear una configuración de cifrado en el nivel de campo. Una configuración especifica los perfiles
que se van a utilizar en función del tipo de contenido de la solicitud o de un argumento de consulta
para cifrar campos de datos específicos. También puede elegir las opciones de comportamiento
de reenvío de solicitudes que desee para diferentes escenarios. Por ejemplo: puede establecer el
243
Amazon CloudFront Guía para desarrolladores
Configuración del cifrado en el nivel de campo
comportamiento para cuando el nombre del perfil especificado por el argumento de consulta en una
URL de solicitud no exista en CloudFront.
4. Enlazar a un comportamiento de la caché. Enlace la configuración a un comportamiento de la caché
de una distribución para especificar cuándo CloudFront debería cifrar los datos.
Por ejemplo, si utiliza OpenSSL, puede ejecutar el siguiente comando para generar un par de claves con
una longitud de 2048 bits y guardarlo en el archivo private_key.pem:
El archivo resultante contiene tanto la clave pública como la privada. Para extraer la clave pública de dicho
archivo, ejecute el siguiente comando:
El archivo de clave pública (public_key.pem) contiene el valor de clave cifrada que se pega en el paso
siguiente.
244
Amazon CloudFront Guía para desarrolladores
Configuración del cifrado en el nivel de campo
6. En Comment (Comentario), añada un comentario opcional. Por ejemplo, podría incluir la fecha de
vencimiento de la clave pública.
7. Elija Add.
Puede agregar más claves para utilizar con CloudFront repitiendo los pasos del procedimiento.
Escriba un nombre único para el perfil. El nombre no puede tener espacios y solo puede incluir
caracteres alfanuméricos, guiones bajos (_) y guiones (-). El número máximo de caracteres es
128.
Public key name (Nombre de clave pública)
Escriba una frase para ayudar a identificar la clave, como el proveedor del que ha obtenido el
par de claves. Necesita esta información, junto con la clave privada, cuando las aplicaciones
descifran los campos de datos. El nombre del proveedor no puede tener espacios y solo puede
incluir caracteres alfanuméricos, dos puntos (:), guiones bajos (_) y guiones (-). El número máximo
de caracteres es 128.
Field name pattern to match (Patrón de coincidencia de nombres de campo)
Escriba los nombres de los campos de datos o los patrones que identifican los nombres de los
campos de datos de la solicitud que desea que CloudFront cifre. Elija la opción + para añadir
todos los campos que desea cifrar con esta clave.
Para el patrón de nombre de campo, puede escribir el nombre completo del campo de datos,
como DateOfBirth, o solo la primera parte del nombre con un carácter comodín (*), como
CreditCard*. El patrón de nombre de campo solo puede incluir caracteres alfanuméricos,
corchetes ([ y ]), puntos (.), guiones bajos (_) y guiones (-), además del carácter comodín opcional
(*).
Asegúrese de que no utiliza caracteres solapados para diferentes patrones de nombre de campo.
Por ejemplo, si tiene el patrón de nombre de campo ABC*, no puede añadir otro patrón de nombre
de campo que sea AB*. Además, los nombres de los campos distinguen entre mayúsculas y
minúsculas, y que el número máximo de caracteres que puede utilizar es de 128.
Comentario
(Opcional) Escriba un comentario sobre este perfil. El número máximo de caracteres que puede
utilizar es 128.
4. Tras rellenar los campos, elija Create profile (Crear perfil).
5. Si desea añadir más perfiles, elija Add profile (Añadir perfil).
245
Amazon CloudFront Guía para desarrolladores
Configuración del cifrado en el nivel de campo
Por ejemplo, si CloudFront no puede cifrar los datos, puede especificar si CloudFront debería bloquear o
reenviar una solicitud al origen en los siguientes casos:
• Cuando el tipo de contenido de una solicitud no está en una configuración: si no ha agregado un tipo de
contenido a una configuración, puede especificar si CloudFront debería reenviar la solicitud con ese tipo
de contenido al origen sin cifrar los campos de datos o bloquear la solicitud y devolver un error.
Note
Si agrega un tipo de contenido a una configuración pero no ha especificado el perfil con el que
utilizarlo, CloudFront siempre reenvía las solicitudes con ese tipo de contenido al origen.
• Cuando se desconoce el nombre de perfil proporcionado en un argumento de consulta: si especifica
el argumento de consulta de fle-profile con un nombre de perfil que no existe para la distribución,
puede especificar si CloudFront debería enviar la solicitud al origen sin cifrar los campos de datos o
bloquear la solicitud y devolver un error.
Así, por ejemplo, puede especificar (en la configuración) SampleProfile como el perfil de argumento de
consulta que se va a utilizar. A continuación, puede utilizar la URL https://d1234.cloudfront.net?
fle-profile=SampleProfile en lugar de https://d1234.cloudfront.net, para que CloudFront
utilice SampleProfile para esta solicitud y no el perfil que ha configurado para el tipo de contenido de la
solicitud.
Puede crear hasta 10 configuraciones para una única cuenta y, a continuación, asociar una de ellas al
comportamiento de la caché de cualquier distribución para la cuenta.
1. En la página Field-level encryption (Cifrado en el nivel de campo), elija Create configuration (Crear
configuración).
Nota: para poder ver la opción para crear una configuración, debe haber creado al menos un perfil.
2. Rellene los siguientes campos para especificar el perfil que se va a usar. (Algunos campos no se
pueden cambiar).
En la lista desplegable, elija el perfil al que desea mapear al tipo de contenido en el campo
Content type (Tipo de contenido).
Content format (no se puede cambiar)
246
Amazon CloudFront Guía para desarrolladores
Configuración del cifrado en el nivel de campo
Forward request to origin when request’s content type is not configured (Reenviar solicitud al origen
cuando el tipo de contenido de la solicitud no está configurado)
Seleccione la casilla si desea permitir que la solicitud vaya al origen si no ha especificado el perfil
que se va a utilizar para el tipo de contenido de la solicitud.
Override the profile for a content type with a provided query argument (Invalidar el perfil de un tipo de
contenido con un argumento de consulta proporcionado)
Escriba el valor que desea incluir en las URL para el argumento de consulta fle-profile. Este
valor indica a CloudFront que debe utilizar el ID de perfil (que especificará en el campo siguiente)
asociado con este argumento de consulta para el cifrado en el nivel de campo de esta consulta.
El número máximo de caracteres que puede utilizar es 128. El valor no puede incluir espacios, y
solo se pueden utilizar caracteres alfanuméricos además de los siguientes caracteres: guion (-),
punto (.), guion bajo (_), asterisco (*), signo más (+), porcentaje (%).
Profile ID (ID de perfil)
En la lista desplegable, elija el perfil que desea asociar al valor que ha especificado para Query
argument (Argumento de consulta).
Forward request to origin when the profile specified in a query argument does not exist (Reenviar
solicitud al origen cuando el perfil especificado en una consulta no exista)
Seleccione la casilla de verificación si desea permitir que la solicitud vaya al origen si el perfil
especificado en un argumento de consulta no está definido en CloudFront.
• La Viewer Protocol Policy (política del protocolo del espectador) del comportamiento de
la caché debe establecerse en Redirect HTTP to HTTPS (Redireccionamiento de HTTP a
HTTPS) o HTTPS Only (solo HTTPS). (En AWS CloudFormation o la API de CloudFront,
ViewerProtocolPolicy debe establecerse en redirect-to-https o https-only).
• Los métodos HTTP permitidos del comportamiento de la caché deben establecerse en GET,
HEAD, OPTIONS, PUT, POST, PATCH, DELETE. (En AWS CloudFormation o la API de
CloudFront, AllowedMethods debe establecerse en GET, HEAD, OPTIONS, PUT, POST, PATCH,
DELETE. Estos se pueden especificar en cualquier orden).
247
Amazon CloudFront Guía para desarrolladores
Descifrado de campos de datos en el origen
• La Origin Protocol Policy (política del protocolo de origen) de la configuración de origen debe
establecerse en Match Viewer (coincidir con espectador) o HTTPS Only (solo HTTPS). (En
AWS CloudFormation o la API de CloudFront, OriginProtocolPolicy debe establecerse en
match-viewer o https-only).
Para obtener más información, consulte Valores que deben especificarse al crear o actualizar una
distribución (p. 43).
Tras el cifrado, el texto cifrado se codifica en base64. Cuando las aplicaciones descifran el texto en el
origen, primero deben descodificar el texto cifrado y, a continuación, utilizar el SDK de cifrado de AWS
para descifrar los datos.
El siguiente código de ejemplo ilustra cómo las aplicaciones pueden descifrar datos en el origen. Tenga en
cuenta lo siguiente:
• Para simplificar el ejemplo, esta muestra carga claves públicas y privadas (en formato DER) desde
archivos que se encuentran en el directorio de trabajo. En la práctica, debería almacenar la clave privada
en una ubicación segura sin conexión, como un módulo de seguridad de hardware sin conexión, y
distribuir la clave pública a su equipo de desarrollo.
• CloudFront utiliza información específica al cifrar los datos y se debería utilizar el mismo conjunto de
parámetros en el origen para descifrarlos. Entre los parámetros que CloudFront utiliza al inicializar la
clave maestra se incluyen los siguientes:
• PROVIDER_NAME: este valor se especificó al crear un perfil de cifrado en el nivel de campo. Utilice
aquí el mismo valor.
• KEY_NAME: el nombre para la clave pública se creó al cargarla en CloudFront y, a continuación, se
especificó el nombre de la clave en el perfil. Utilice aquí el mismo valor.
• ALGORITHM: CloudFront utiliza RSA/ECB/OAEPWithSHA-256AndMGF1Padding como algoritmo
para cifrar, por lo que debe usar el mismo algoritmo para descifrar los datos.
• Si ejecuta el siguiente programa de muestra con texto cifrado como entrada, los datos descifrados se
muestran en la consola. Para obtener más información, consulte el código de ejemplo de Java del SDK
de cifrado de AWS.
Código de muestra
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import org.apache.commons.codec.binary.Base64;
import com.amazonaws.encryptionsdk.AwsCrypto;
import com.amazonaws.encryptionsdk.CryptoResult;
import com.amazonaws.encryptionsdk.jce.JceMasterKey;
248
Amazon CloudFront Guía para desarrolladores
Descifrado de campos de datos en el origen
/**
* Sample example of decrypting data that has been encrypted by CloudFront Field-Level
Encryption.
*/
public class DecryptExample {
// CloudFront uses the following values to encrypt data, and your origin must use same
values to decrypt it.
// In your own code, for PROVIDER_NAME, use the provider name that you specified when
you created your Field Level
// Encryption Profile. This sample uses 'DEMO' for the value.
private static final String PROVIDER_NAME = "DEMO";
// In your own code, use the Key name that you specified when you added your public key
to CloudFront. This sample
// uses 'DEMOKEY' for the Key name.
private static final String KEY_NAME = "DEMOKEY";
// CloudFront uses this algorithm when encrypting data.
private static final String ALGORITHM = "RSA/ECB/OAEPWithSHA-256AndMGF1Padding";
System.out.println(decrypt(debase64(dataToDecrypt)));
}
249
Amazon CloudFront Guía para desarrolladores
Descifrado de campos de datos en el origen
privateKey = KeyFactory.getInstance("RSA").generatePrivate(new
PKCS8EncodedKeySpec(privateKeyBytes));
}
}
250
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché con ubicaciones de borde
Para obtener información sobre cómo agregar y eliminar el contenido que desea que CloudFront distribuya,
consulte Agregar, eliminar o sustituir contenido que distribuye CloudFront (p. 115).
Temas
• Cómo funciona el almacenamiento en caché con ubicaciones de borde de CloudFront (p. 251)
• Incrementar la proporción de solicitudes que se atienden directamente desde las cachés de CloudFront
(tasa de aciertos de caché) (p. 252)
• Uso de Amazon CloudFront Origin Shield (p. 255)
• Optimización de alta disponibilidad con conmutación por error de origen de CloudFront (p. 263)
• Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268)
• Almacenamiento en caché de contenido en función de parámetros de cadenas de consulta (p. 274)
• Almacenamiento en caché de contenido en función de cookies (p. 277)
• Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 280)
Cuantas más solicitudes pueda atender CloudFront desde cachés de borde, menos solicitudes de lector
debe reenviar CloudFront al origen para obtener la versión más reciente o una versión única de un
objeto. Para optimizar CloudFront y realizar el menor número posible de solicitudes al origen, considere la
posibilidad de utilizar CloudFront Origin Shield. Para obtener más información, consulte Uso de Amazon
CloudFront Origin Shield (p. 255).
Hay una serie de factores que afectan a la tasa de aciertos de caché. Puede ajustar la configuración
de distribución de CloudFront para mejorar la tasa de aciertos de caché siguiendo las instrucciones de
Incrementar la proporción de solicitudes que se atienden directamente desde las cachés de CloudFront
(tasa de aciertos de caché) (p. 252).
251
Amazon CloudFront Guía para desarrolladores
Mejora de la tasa de aciertos de caché
Temas
• Especificar cuánto tiempo CloudFront almacena en caché los objetos (p. 252)
• Uso del escudo de origen (p. 252)
• Almacenamiento en caché en función de parámetros de cadenas de consulta (p. 252)
• Almacenamiento en caché en función de valores de cookies (p. 253)
• Almacenamiento en caché en función de encabezados de solicitud (p. 254)
• No es necesario eliminar el encabezado Accept-Encoding al comprimir (p. 254)
• Ofrecer contenido multimedia a través de HTTP (p. 255)
Para obtener más información, consulte Uso de Amazon CloudFront Origin Shield (p. 255).
• Configure CloudFront para reenviar solo los parámetros de cadenas de consulta para los que el origen
devolverá objetos únicos.
252
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché en función de valores de cookies
• Utilice el mismo tipo de letra (mayúscula o minúscula) para todas las instancias del mismo parámetro.
Por ejemplo, si una solicitud contiene parameter1=A y otra contiene parameter1=a, CloudFront
reenvía solicitudes independientes al origen cuando una solicitud contiene parameter1=A y otra
contiene parameter1=a. A continuación, CloudFront almacena en caché de forma independiente los
objetos correspondientes devueltos por el origen por separado incluso si los objetos son idénticos. Si
utiliza solo A o a, CloudFront reenvía menos solicitudes al origen.
• Enumere los parámetros en el mismo orden. Al igual que con las diferencias de
mayúsculas y minúsculas, si una solicitud de un objeto contiene la cadena de
consulta parameter1=a¶meter2=b y otra solicitud del mismo objeto contiene
parameter2=b¶meter1=a, CloudFront reenvía ambas solicitudes al origen y almacena en caché
los objetos correspondientes de forma independiente aunque sean idénticos. Si ordena los parámetros
siempre de la misma manera, CloudFront reenvía menos solicitudes al origen.
Para obtener más información, consulte Almacenamiento en caché de contenido en función de parámetros
de cadenas de consulta (p. 274). Si desea revisar las cadenas de consulta que CloudFront reenvía al
origen, consulte los valores en la columna cs-uri-query de los archivos de registro de CloudFront.
Para obtener más información, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).
• Configure CloudFront para reenviar solo las cookies especificadas en lugar de todas. Para las cookies
que configura que CloudFront reenvíe al origen, CloudFront reenvía cada combinación de nombre y
valor de las cookies. A continuación, almacena en caché por separado los objetos que devuelve su
origen, incluso si todos son idénticos.
Supongamos que los espectadores incluyen dos cookies en cada solicitud, que cada cookie tiene tres
valores posibles y que todas las combinaciones de valores de cookie son posibles. CloudFront reenvía
hasta seis solicitudes diferentes al origen para cada uno de los objetos. Si el origen devuelve distintas
versiones de un objeto en función de solo una de las cookies, CloudFront reenvía más solicitudes al
origen de lo necesario y almacena en caché varias versiones idénticas del objeto innecesariamente.
• Cree diferentes comportamientos de la caché para contenido estático y dinámico y configure CloudFront
para reenviar las cookies al origen solo para contenido dinámico.
Por ejemplo, supongamos que tiene un comportamiento de la caché para la distribución y que utiliza la
distribución para contenido dinámico, como archivos .js y para archivos .css que raramente cambian.
CloudFront almacena en caché versiones independientes de los archivos .css en función de los valores
de cookies, de modo que cada ubicación de borde de CloudFront reenvía una solicitud al origen por
cada nuevo valor de cookie o por cada combinación de valores de cookies.
Si crea un comportamiento de la caché cuyo patrón de ruta es *.css y para el que CloudFront no
almacena en caché en función de los valores de las cookies, CloudFront reenviará las solicitudes de
archivos .css al origen solo para la primera solicitud que reciba desde una ubicación de borde de un
archivo .css determinado y para la primera solicitud después de que un archivo .css venza.
• Si es posible, cree diferentes comportamientos de la caché para contenido dinámico cuyos valores de
cookie sean exclusivos para cada usuario (como un ID de usuario) y para contenido dinámico que varíe
en función de una cantidad más reducida de valores únicos.
253
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché en
función de encabezados de solicitud
columna cs(Cookie) de los archivos de registro de CloudFront. Para obtener más información, consulte
Configuración y uso de registros estándar (registros de acceso) (p. 463).
CloudFront siempre reenvía al origen los encabezados especificados en los siguientes temas:
• Cómo CloudFront procesa y reenvía solicitudes al servidor de origen de Amazon S3 >
Encabezados de solicitud HTTP que CloudFront elimina o actualiza (p. 301)
• Cómo CloudFront procesa y reenvía solicitudes al servidor de origen personalizado >
Encabezados de solicitudes HTTP y comportamiento de CloudFront (personalizado y
orígenes de S3) (p. 309)
Por ejemplo, si desea enviar diferentes tamaños de una imagen en función del dispositivo del usuario,
no configura CloudFront para almacenar en caché en función del encabezado User-Agent, que
tiene gran cantidad de valores posibles. En su lugar, configure CloudFront para almacenar en caché
en función de los encabezados de tipo de dispositivo de CloudFront CloudFront-Is-Desktop-
Viewer, CloudFront-Is-Mobile-Viewer, CloudFront-Is-SmartTV-Viewer y CloudFront-
Is-Tablet-Viewer. Además, si va a devolver la misma versión de la imagen para tablets y equipos
de escritorio, reenvíe solo el encabezado CloudFront-Is-Tablet-Viewer, no el CloudFront-Is-
Desktop-Viewer.
254
Amazon CloudFront Guía para desarrolladores
Ofrecer contenido multimedia a través de HTTP
Origin Shield puede contribuir a mejorar la tasa de aciertos de caché de su distribución de CloudFront,
ya que proporciona una capa adicional de almacenamiento en caché delante del origen. Cuando utiliza
Origin Shield, todas las solicitudes de todas las capas de almacenamiento en caché de CloudFront a
su origen pasan por Origin Shield, lo que aumenta la probabilidad de que se produzca un acierto de
caché. CloudFront puede recuperar cada objeto con una sola solicitud de origen desde Origin Shield al
origen, y todas las demás capas de la caché de CloudFront (ubicaciones de borde y cachés de borde
regionales (p. 6)) pueden recuperar el objeto desde Origin Shield.
Carga de origen reducida
El escudo de origen puede reducir aún más el número de solicitudes simultáneas (p. 314) que
se envían a su origen para el mismo objeto. Las solicitudes de contenido que no están en la caché
del escudo de origen se consolidan con otras solicitudes para el mismo objeto, por lo que solo
una solicitud va a su origen. La gestión de menos solicitudes en su origen puede preservar la
disponibilidad del origen durante las cargas máximas o picos de tráfico inesperados y puede reducir
los costos de cosas como el empaquetado justo a tiempo, las transformaciones de imágenes y la
transferencia de datos (DTO).
Mejor rendimiento de red
Cuando se habilita Origin Shield en la región de AWS que tiene la latencia más baja en el
origen (p. 259), puede obtener un mejor rendimiento de red. Para los orígenes de una región de
AWS, el tráfico de red de CloudFront permanece en la red de alto rendimiento de CloudFront hasta
el origen. Para los orígenes fuera de AWS, el tráfico de red de CloudFront permanece en la red de
CloudFront hasta Origin Shield, que tiene una conexión de baja latencia con su origen.
Se incurre en cargos adicionales por usar el escudo de origen. Para obtener más información, consulte los
Precios de CloudFront.
Temas
• Casos de uso para el escudo de origen (p. 256)
• Elegir la región de AWS para Origin Shield (p. 259)
• Activación del escudo de origen (p. 260)
• Estimación de los costos del escudo de origen (p. 262)
• Alta disponibilidad del escudo de origen (p. 262)
• Cómo interactúa Origin Shield con otras características de CloudFront (p. 263)
255
Amazon CloudFront Guía para desarrolladores
Casos de uso para el escudo de origen
El escudo de origen puede no ser adecuado en otros casos, como el contenido dinámico que se remite al
origen, el contenido con poca capacidad de caché o el contenido que se solicita con poca frecuencia.
En las siguientes secciones se explican los beneficios del escudo de origen para los siguientes casos de
uso.
Casos de uso
• Lectores en distintas regiones geográficas (p. 256)
• Varias CDN (p. 257)
Cuando los lectores se encuentran en distintas regiones geográficas, las solicitudes se pueden dirigir
a través de distintas cachés de borde regionales, cada una de las cuales puede enviar una solicitud
a su origen para el mismo contenido. Pero con el escudo de origen, obtiene una capa adicional de
almacenamiento en caché entre las cachés de borde regionales y su origen. Todas las solicitudes de todas
las cachés de borde regionales pasan a través de Origin Shield, lo que reduce aún más la carga en el
origen. Los siguientes diagramas lo ilustran. En los siguientes diagramas, el origen es AWS Elemental
MediaPackage.
Sin escudo de origen, es posible que su origen reciba solicitudes duplicadas para el mismo contenido,
como se muestra en el siguiente diagrama.
256
Amazon CloudFront Guía para desarrolladores
Casos de uso para el escudo de origen
El uso del escudo de origen puede contribuir a reducir la carga sobre el origen, como se muestra en el
siguiente diagrama.
Varias CDN
Para ofrecer eventos de vídeo en directo o contenido popular bajo demanda, puede utilizar varias redes de
entrega de contenido (CDN). El uso de varias CDN puede ofrecer ciertos beneficios, pero también significa
que su origen puede recibir muchas solicitudes duplicadas para el mismo contenido, cada una proveniente
de CDN diferentes o diferentes ubicaciones dentro de la misma CDN. Estas solicitudes redundantes
257
Amazon CloudFront Guía para desarrolladores
Casos de uso para el escudo de origen
Al combinar Origin Shield con el uso de su distribución de CloudFront como origen para otras CDN, puede
obtener los siguientes beneficios:
• Menos solicitudes redundantes recibidas en su origen, lo que ayuda a reducir los efectos negativos del
uso de varias CDN.
• Una clave de caché (p. 93) común en las CDN y administración centralizada para características
orientadas al origen.
• Mejora del rendimiento de la red. El tráfico de red de otras CDN finaliza en una ubicación de borde
de CloudFront cercana, lo que podría proporcionar un acierto de la caché local. Si el objeto solicitado
no está en la caché de ubicación de borde, la solicitud al origen permanece en la red de CloudFront
hasta Origin Shield, lo que proporciona un alto rendimiento y una baja latencia en el origen. Si el objeto
solicitado está en la caché del escudo de origen, la solicitud a su origen se evita por completo.
Important
Si está interesado en utilizar Origin Shield en una arquitectura de CDN múltiple y tiene precios
reducidos, contacte con nosotros o con su representante de ventas de AWS para obtener más
información. Podrían aplicarse cargos adicionales.
Los siguientes diagramas muestran cómo puede ayudar esta configuración a minimizar la carga en
su origen cuando se ofrecen eventos de vídeo en vivo populares con varias CDN. En los siguientes
diagramas, el origen es AWS Elemental MediaPackage.
Sin el escudo de origen, es posible que su origen reciba muchas solicitudes duplicadas para el mismo
contenido, cada una proveniente de una CDN diferente, como se muestra en el siguiente diagrama.
258
Amazon CloudFront Guía para desarrolladores
Elegir la región de AWS para Origin Shield
Usar Origin Shield con CloudFront como origen para las demás CDN puede ayudar a reducir la carga en
su origen, como se muestra en el siguiente diagrama.
Si su origen se encuentra en una región de AWS en la que CloudFront ofrece Origin Shield
Si el origen se encuentra en una región de AWS en la que CloudFront ofrece Origin Shield (véase la lista
anterior), habilite Origin Shield en la misma región que su origen.
Si su origen no se encuentra en una región de AWS en la que CloudFront ofrece Origin Shield
259
Amazon CloudFront Guía para desarrolladores
Activación del escudo de origen
Si el origen no se encuentra en una región de AWS en la que CloudFront ofrece Origin Shield, consulte la
siguiente tabla para determinar en qué región debe habilitar Origin Shield.
EE. UU. Oeste (Norte de California): us-west-1 EE. UU. Oeste (Oregón) (us-west-2)
• Puede consultar la tabla anterior para obtener una aproximación de la región de AWS que podría tener la
menor latencia en su origen, en función de la ubicación geográfica de su origen.
• Puede lanzar instancias Amazon EC2 en algunas regiones de AWS distintas que estén geográficamente
próximas a su origen y ejecutar algunas pruebas utilizando ping para medir las latencias de red típicas
entre esas regiones y su origen.
Puede habilitar Origin Shield en la consola de CloudFront, con AWS CloudFormation o con la API de
CloudFront.
260
Amazon CloudFront Guía para desarrolladores
Activación del escudo de origen
6. En Origin Shield Region (Región de Origin Shield), elija la región de AWS donde desea habilitar Origin
Shield. Para obtener ayuda para elegir una región, consulte Elegir la región de AWS para Origin
Shield (p. 259).
7. En la parte inferior de la página, elija Yes, Edit (Sí, editar).
Cuando el estado de distribución esté Deployed (Implementado), el escudo de origen estará listo. Esto
lleva unos minutos.
Si va a crear una nueva distribución, siga configurando la distribución utilizando los demás parámetros
de la página. Para obtener más información, consulte Valores que deben especificarse al crear o
actualizar una distribución (p. 43).
5. Asegúrese de guardar los cambios seleccionando Create (Crear) (para un nuevo origen en una
distribución existente) o Create Distribution (Crear distribución) (para un nuevo origen en una nueva
distribución).
Cuando el estado de distribución esté Deployed (Implementado), el escudo de origen estará listo. Esto
lleva unos minutos.
Origins:
- DomainName: 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com
Id: Example-EMP-3ae97e9482b0d011
OriginShield:
Enabled: true
OriginShieldRegion: us-west-2
CustomOriginConfig:
261
Amazon CloudFront Guía para desarrolladores
Estimación de los costos del escudo de origen
OriginProtocolPolicy: match-viewer
OriginSSLProtocols: TLSv1
• OriginShield (tipo)
• Origin (tipo)
• DistributionConfig (tipo)
• UpdateDistribution (operación)
• CreateDistribution (operación)
La sintaxis específica para usar estos tipos y operaciones varía en función del SDK, de la CLI o cliente de
API. Para obtener más información, consulte la documentación de referencia de su SDK, CLI o cliente.
Para las solicitudes dinámicas (no almacenables en caché) que se envían como proxy al origen, el escudo
de origen es siempre una capa incremental. Las solicitudes dinámicas utilizan los siguientes métodos
HTTP: PUT, POST, PATCH y DELETE.
Para calcular los cargos del escudo de origen para solicitudes dinámicas, utilice la siguiente fórmula:
Número total de solicitudes dinámicas x cargo de escudo de origen por 10 000 solicitudes / 10 000
Para las solicitudes que se pueden almacenar en caché (métodos HTTP GET, HEAD y OPTIONS), el escudo
de origen es a veces una capa incremental. Al activar Origin Shield, debe elegir la región de AWS para
Origin Shield. Para las solicitudes que van naturalmente a la caché de borde regional (p. 6) en la misma
región que el escudo de origen, el escudo de origen no es una capa incremental. No acumula cargos del
escudo de origen por estas solicitudes. Para las solicitudes que van a una caché de borde regional en una
región diferente del escudo de origen y, a continuación, a escudo de origen, escudo de origen es una capa
incremental. Se acumulan cargos del escudo de origen por estas solicitudes.
Para calcular los cargos del escudo de origen para solicitudes que se pueden almacenar en caché, utilice
la siguiente fórmula:
Número total de solicitudes que se pueden almacenar en caché x (1: tasa de aciertos de caché) x
porcentaje de solicitudes que van a Origin Shield desde una caché de borde regional en una región
diferente x cargo de Origin Shield por 10 000 solicitudes / 10 000
Para obtener más información sobre el cargo por cada 10 000 solicitudes de Origin Shield, consulte
Precios de CloudFront.
262
Amazon CloudFront Guía para desarrolladores
Cómo interactúa Origin Shield con
otras características de CloudFront
de instancias Amazon EC2 de escalado automático. Las conexiones originadas en las ubicaciones de
CloudFront hacia Origin Shield también usan el seguimiento activo de errores en cada solicitud para
direccionar automáticamente la solicitud a una ubicación de Origin Shield secundaria si la principal no está
disponible.
• Registros estándar de CloudFront (registros de acceso) (p. 463). Los registros estándar se
proporcionan de forma gratuita.
• Registros en tiempo real de CloudFront (p. 476). Incurre en cargos adicionales por el uso de registros
en tiempo real. Consulte Precios de Amazon CloudFront.
Los aciertos de caché de Origin Shield se muestran como OriginShieldHit en el campo x-edge-
detailed-result-type de los registros de CloudFront. Origin Shield utiliza las cachés regionales de
borde (p. 6) de Amazon CloudFront. Si una solicitud se dirige desde una ubicación de borde de CloudFront
a la caché de borde regional que actúa como Origin Shield, se notifica como un Hit en los registros, no
como un OriginShieldHit.
263
Amazon CloudFront Guía para desarrolladores
Aumento de alta disponibilidad con conmutación por error
Si el origen principal no está disponible o devuelve códigos de estado de respuesta HTTP específicos que
indican un error, CloudFront cambia automáticamente al origen secundario.
Para configurar la conmutación por error de origen, debe tener una distribución con al menos dos orígenes.
A continuación, cree un grupo de origen para su distribución que incluya dos orígenes, configurando uno
como principal. Por último, cree o actualice un comportamiento de caché para utilizar el grupo de origen.
Para consultar los pasos para configurar grupos de origen y configurar opciones de conmutación por error
de origen específicas, consulte Creación de un grupo de origen (p. 265).
Después de configurar la conmutación por error de origen para un comportamiento de la caché, CloudFront
hace lo siguiente para las solicitudes del lector:
En algunos casos de uso, como el streaming de contenido de vídeo, es posible que CloudFront
conmute por error rápidamente al origen secundario. Para ajustar la rapidez con la que
CloudFront conmuta por error al origen secundario, consulte Control de los tiempos de espera
de origen y los intentos (p. 266).
CloudFront dirige todas las solicitudes entrantes al origen principal, incluso cuando una solicitud anterior ha
conmutado por error al origen secundario. CloudFront solo envía solicitudes al origen secundario después
de que se produzca un error en una solicitud al origen principal.
CloudFront conmuta por error al origen secundario solo cuando el método HTTP de la solicitud del lector
es GET, HEAD o OPTIONS. CloudFront no realiza una conmutación por error cuando el lector envía un
método HTTP diferente (por ejemplo POST, PUT, etc.).
264
Amazon CloudFront Guía para desarrolladores
Creación de un grupo de origen
• Aciertos y errores de caché: Cómo funciona el almacenamiento en caché con ubicaciones de borde de
CloudFront (p. 251)
• Comportamiento de solicitud y de respuesta con conmutación por error de origen: Comportamiento de
solicitudes y respuestas para grupos de origen (p. 319)
Temas
• Creación de un grupo de origen (p. 265)
• Control de los tiempos de espera de origen y los intentos (p. 266)
• Utilizar la conmutación por error de origen con funciones de Lambda@Edge (p. 267)
• Utilizar páginas de error personalizadas con conmutación por error de origen (p. 268)
265
Amazon CloudFront Guía para desarrolladores
Control de los tiempos de espera de origen y los intentos
Note
CloudFront conmuta por error al origen secundario solo cuando el método HTTP de la
solicitud del lector es GET, HEAD o OPTIONS. CloudFront no realiza una conmutación por
error cuando el lector envía un método HTTP diferente (por ejemplo POST, PUT, etc.).
7. Introduzca un identificador único para el grupo de origen. No puede utilizar un identificador que ya esté
en uso para un origen u grupo de origen diferente en su cuenta de AWS.
Para obtener información sobre cómo especificar un grupo de origen para una distribución, consulte ID de
origen (p. 47).
Para conmutar por error más rápidamente, especifique un tiempo de espera de conexión más breve,
menos intentos de conexión o ambas opciones. Para orígenes personalizados (incluidos los orígenes de
bucket de Amazon S3 configurados con alojamiento de sitio web estático), también puede ajustar el tiempo
de espera de respuesta de origen.
La configuración de tiempo de espera de conexión de origen afecta al tiempo que CloudFront espera
al intentar establecer una conexión con el origen. De forma predeterminada, CloudFront espera 10
segundos para establecer una conexión, pero puede especificar de 1 a 10 segundos (inclusive). Para
obtener más información, consulte Tiempo de espera de conexión de origen (p. 48).
Intentos de conexión de origen
La configuración de intentos de conexión de origen afecta al número de veces que CloudFront intenta
conectarse al origen. De forma predeterminada, CloudFront intenta conectarse 3 veces, pero puede
especificar de 1 a 3 (inclusive). Para obtener más información, consulte Intentos de conexión de
origen (p. 48).
Para un origen personalizado (incluido un bucket de Amazon S3 configurado con alojamiento de sitios
web estático), esta configuración también afecta al número de veces que CloudFront intenta obtener
una respuesta del origen en el caso de un tiempo de espera de respuesta del origen.
Tiempo de espera de respuesta de origen
Note
La configuración de tiempo de espera de respuesta de origen afecta al tiempo que CloudFront espera
para recibir una respuesta (o para recibir la respuesta completa) del origen. De forma predeterminada,
CloudFront espera 30 segundos, pero puede especificar de 1 a 60 segundos (inclusive). Para obtener
más información, consulte Tiempo de espera de respuesta del origen (p. 51).
266
Amazon CloudFront Guía para desarrolladores
Utilizar la conmutación por error de
origen con funciones de Lambda@Edge
• Para un nuevo origen o una nueva distribución, especifique estos valores al crear el recurso.
• En el caso de un origen existente en una distribución existente, debe especificar estos valores al editar el
origen.
Para obtener más información, consulte Valores que deben especificarse al crear o actualizar una
distribución (p. 43).
El siguiente diagrama ilustra cómo funciona la conmutación por error de origen cuando se incluye una
función de Lambda@Edge en una solicitud de origen o desencadenador de respuesta.
Para obtener más información sobre el uso de desencadenadores de Lambda@Edge, consulte Adición de
disparadores para una función de Lambda@Edge (p. 359).
267
Amazon CloudFront Guía para desarrolladores
Utilizar páginas de error personalizadas
con conmutación por error de origen
Cuando se utiliza la conmutación por error de origen, puede configurar CloudFront para que devuelva una
página de error personalizada para el origen principal o secundario (o ambos):
• Devolver una página de error personalizada para el origen principal: si el origen principal devuelve un
código de estado HTTP que no está configurado para la conmutación por error, CloudFront devuelve la
página de error personalizada a los lectores.
• Devolver una página de error personalizada para el origen secundario: si CloudFront recibe un código de
estado de error del origen secundario, CloudFront devuelve la página de error personalizada.
Para obtener más información acerca del uso de páginas de error personalizadas con CloudFront, consulte
Generación de respuestas de error personalizadas (p. 132).
Normalmente, CloudFront ofrece un archivo desde una ubicación de borde durante el tiempo de
almacenamiento en caché especificado por usted, es decir, hasta que el archivo venza. Después de que
venza, la próxima vez que la ubicación de borde reciba una solicitud de un archivo por parte de un usuario,
CloudFront reenviará la solicitud al servidor de origen para comprobar que la caché contiene la versión
más reciente del archivo. La respuesta del origen depende de si el archivo ha cambiado:
• Si la caché de CloudFront ya tiene la versión más reciente, el origen devuelve un código de estado 304
Not Modified.
• Si la caché de CloudFront no tiene la versión más reciente, el origen devuelve un código de estado 200
OK y la versión más reciente del archivo.
Si un archivo de una ubicación de borde no se solicita con frecuencia, es posible que CloudFront lo
desaloje (lo elimine antes de su fecha de vencimiento) con el fin de dejar espacio para otros archivos que
se hayan solicitado más recientemente.
De forma predeterminada, cada archivo caduca automáticamente después de 24 horas, pero puede
cambiar el comportamiento predeterminado de dos maneras:
• Para cambiar la duración del almacenamiento en caché de todos los archivos que coinciden con el
mismo patrón de ruta, puede cambiar la configuración de CloudFront para Minimum TTL (TTL mínimo),
Maximum TTL (TTL máximo) y Default TTL (TTL predeterminado) de un comportamiento de la caché.
Para obtener información sobre los ajustes individuales, consulte Minimum TTL (TTL mínimo), Maximum
TTL (TTL máximo) y Default TTL (TTL predeterminado) en Valores que deben especificarse al crear
o actualizar una distribución (p. 43). Para utilizar estos ajustes, debe elegir la opción Customize
268
Amazon CloudFront Guía para desarrolladores
Utilizar encabezados para controlar la duración del
almacenamiento en caché de objetos individuales
Para obtener más información acerca de cómo Minimum TTL (TTL mínimo), Default TTL (TTL
predeterminado) y Maximum TTL (TTL máximo) interactúan con las políticas Cache-Control max-age
y Cache-Control s-maxage y con el campo de encabezado Expires, consulte Especificar durante
cuánto tiempo CloudFront almacena objetos en caché (p. 270).
También puede controlar durante cuánto tiempo los errores (como 404, Not Found) permanecen en una
caché de CloudFront antes de que CloudFront intente obtener de nuevo el objeto solicitado reenviando
otra solicitud al origen. Para obtener más información, consulte Cómo CloudFront procesa y almacena en
caché los códigos de estado HTTP 4xx y 5xx desde el origen (p. 323).
Temas
• Utilizar encabezados para controlar la duración del almacenamiento en caché de objetos
individuales (p. 269)
• Especificar durante cuánto tiempo CloudFront almacena objetos en caché (p. 270)
• Agregar encabezados a los objetos con la consola de Amazon S3 (p. 274)
• La política Cache-Control max-age le permite especificar durante cuánto tiempo (en segundos)
desea que un objeto permanezca en la caché antes de que CloudFront obtenga el objeto de nuevo del
servidor de origen. El tiempo mínimo de caducidad compatible con CloudFront es de 0 segundos. El
valor máximo es 100 años. Especifique el valor en el siguiente formato:
Cache-Control: max-age=segundos
Por ejemplo, la siguiente política indica a CloudFront que debe mantener el objeto asociado en la caché
durante 3600 segundos (una hora):
Cache-Control: max-age=3600
Si desea que los objetos permanezcan en las cachés de borde de CloudFront por un tiempo distinto del
que permanecen en las cachés de navegadores, puede utilizar las políticas Cache-Control max-age
y Cache-Control s-maxage de forma conjunta. Para obtener más información, consulte Especificar
durante cuánto tiempo CloudFront almacena objetos en caché (p. 270).
• El campo del encabezado Expires le permite especificar una fecha y hora de vencimiento con el
formato indicado en RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 Section 3.3.1, Full Date, por
ejemplo:
269
Amazon CloudFront Guía para desarrolladores
Especificar durante cuánto tiempo
CloudFront almacena objetos en caché
Le recomendamos que utilice la directiva Cache-Control max-age en lugar del campo de encabezado
Expires para controlar el almacenamiento de objetos en caché. Si especifica valores para Cache-
Control max-age y para Expires, CloudFront utiliza solo el valor de Cache-Control max-age.
Para obtener más información, consulte Especificar durante cuánto tiempo CloudFront almacena objetos
en caché (p. 270).
No puede utilizar los campos de encabezado HTTP Cache-Control ni Pragma en una solicitud GET de
un lector para obligar a CloudFront a volver al servidor de origen para obtener el objeto. CloudFront ignora
los campos de encabezado de las solicitudes de los lectores.
Para obtener más información acerca de los campos de encabezado Cache-Control y Expires, visite
las siguientes secciones de RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1:
• Establecer los valores TTL mínimo, máximo y predeterminado en el comportamiento de la caché de una
distribución de CloudFront. Puede establecer estos valores en una política de caché (p. 93) adjunta al
comportamiento de caché (recomendado) o en la configuración de caché heredada.
• Incluya los encabezados Cache-Control o Expires en las respuestas del origen. Estos encabezados
también ayudan a determinar cuánto tiempo un explorador mantiene un objeto en la caché del
explorador antes de enviar otra solicitud a CloudFront.
En la tabla siguiente se explica cómo los encabezados Cache-Control y Expires enviados desde
el origen funcionan junto con la configuración TTL en un comportamiento de caché para afectar al
almacenamiento en caché.
270
Amazon CloudFront Guía para desarrolladores
Especificar durante cuánto tiempo
CloudFront almacena objetos en caché
Almacenamiento en caché de
navegadores
271
Amazon CloudFront Guía para desarrolladores
Especificar durante cuánto tiempo
CloudFront almacena objetos en caché
Almacenamiento en caché de
navegadores
272
Amazon CloudFront Guía para desarrolladores
Especificar durante cuánto tiempo
CloudFront almacena objetos en caché
Almacenamiento en caché de
navegadores
Warning
Si CloudFront obtiene un objeto del origen que incluye las directivas Cache-Control: no-
cache, no-store y/o private, y luego CloudFront obtiene otra solicitud de lector para el mismo
objeto, CloudFront intenta ponerse en contacto con el origen para cumplir la solicitud del lector.
Si se puede acceder al origen, CloudFront obtiene el objeto del origen y lo devuelve al lector.
Si el origen es inalcanzable y el TTL mínimo es mayor que 0, CloudFront sirve el objeto que
obtuvo del origen anteriormente. Para evitar este comportamiento, incluya la directiva Cache-
Control: stale-if-error=0 con el objeto devuelto desde el origen. Esto hace que
273
Amazon CloudFront Guía para desarrolladores
Agregar encabezados a los objetos
con la consola de Amazon S3
Para obtener información acerca de cómo cambiar la configuración de distribuciones mediante la consola
de CloudFront, consulte Actualización de una distribución (p. 71). Para obtener información sobre cómo
cambiar la configuración de las distribuciones con la API de Cloudfront; consulte UpdateDistribution.
http://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large
Para distribuciones, puede elegir si desea que CloudFront reenvíe cadenas de consultas al origen y
si desea almacenar en caché el contenido en función de todos los parámetros o de los parámetros
seleccionados. ¿Por qué podría resultar útil? Considere el siguiente ejemplo.
Supongamos que su sitio web está disponible en cinco idiomas. La estructura de directorios y los nombres
de archivo de las cinco versiones del sitio web son idénticos. Cuando un usuario consulta el sitio web,
las solicitudes que se reenvían a CloudFront incluyen un parámetro de cadena de consulta de idioma
en función del idioma elegido por el usuario. Puede configurar CloudFront para reenviar cadenas de
consulta al origen y almacenar en caché en función del parámetro de idioma. Si configura el servidor web
para devolver la versión de una página determinada que se corresponda con el idioma seleccionado,
274
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché y
parámetros de cadenas de consulta
CloudFront almacena en la caché cada versión del idioma por separado, en función del valor del parámetro
de cadena de consulta del idioma.
En este ejemplo, si la página principal para el sitio web es main.html, las siguientes cinco solicitudes
hacen que CloudFront almacene cinco veces en la caché main.html, una vez por cada valor de
parámetro de cadena de consulta de idioma:
• http://d111111abcdef8.cloudfront.net/main.html?language=de
• http://d111111abcdef8.cloudfront.net/main.html?language=en
• http://d111111abcdef8.cloudfront.net/main.html?language=es
• http://d111111abcdef8.cloudfront.net/main.html?language=fr
• http://d111111abcdef8.cloudfront.net/main.html?language=jp
• Algunos servidores HTTP no procesan parámetros de cadenas de consulta y, por lo tanto, no devuelven
distintas versiones de un objeto en función de los valores de los parámetros. Para estos orígenes, si
configura CloudFront para reenviar los parámetros de cadenas de consulta al origen, CloudFront sigue
almacenando en caché en función de los valores de los parámetros a pesar de que el origen devuelva
versiones idénticas del objeto a CloudFront para cada valor del parámetro.
• Para que los parámetros de cadenas de consulta funcionen tal y como se describe en el ejemplo anterior
con los idiomas, debe utilizar el carácter & como delimitador entre parámetros de cadenas de consulta.
Si utiliza un delimitador diferente, es posible que obtenga resultados imprevistos, en función de los
parámetros que especifique para que CloudFront utilice como base para el almacenamiento en caché y
del orden en el que aparecen los parámetros en la cadena de consulta.
Los siguientes ejemplos muestran lo que ocurre si utiliza un delimitador diferente y configura CloudFront
para almacenar en caché solo en función del parámetro color:
• En la siguiente solicitud, CloudFront almacena en caché el contenido en función del valor del
parámetro color, pero CloudFront interpreta el valor como red;size=large:
http://d111111abcdef8.cloudfront.net/images/image.jpg?color=red;size=large
• En la siguiente solicitud, CloudFront almacena en caché el contenido pero no en función de los
parámetros de cadenas de consulta. Esto se debe a que ha configurado CloudFront para almacenar
en caché en función del parámetro color, pero CloudFront interpreta la siguiente cadena como que
contiene solo un parámetro size con el valor large;color=red:
http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large;color=red
Puede configurar CloudFront para que realice una de las siguientes acciones:
Para obtener más información, consulte Optimización del almacenamiento en caché (p. 276).
Temas
• Configuración de la consola y de la API para el reenvío de cadenas de consulta y almacenamiento en
caché (p. 276)
• Optimización del almacenamiento en caché (p. 276)
275
Amazon CloudFront Guía para desarrolladores
Configuración de la consola y de la API para el reenvío
de cadenas de consulta y almacenamiento en caché
• Parámetros de cadena de consulta y registros estándar de CloudFront (registros de acceso) (p. 277)
• QueryString
• QueryStringCacheKeys
Almacenar en caché solo en función de parámetros por los que su origen devuelve diferentes versiones de
un objeto
Por cada parámetro de cadena de consulta que la aplicación web reenvía a CloudFront, CloudFront
reenvía solicitudes al origen por cada valor del parámetro y almacena en caché una versión
independiente del objeto por cada valor del parámetro. Esto ocurre incluso si el origen siempre
devuelve el mismo objeto independientemente del valor del parámetro. Para varios parámetros, el
número de solicitudes y el número de objetos se multiplican. Por ejemplo, si las solicitudes de un
objeto incluyen dos parámetros que tienen tres valores diferentes, CloudFront almacena en caché seis
versiones de ese objeto, suponiendo que siga las demás recomendaciones de esta sección.
Le recomendamos configurar CloudFront para almacenar en caché solo los parámetros de cadenas
de consulta para los que el origen devuelve distintas versiones y que piense detenidamente en las
ventajas de almacenar en caché en función de cada parámetro. Supongamos que tiene un sitio web
de venta al por menor. Dispone de imágenes de una chaqueta en seis colores diferentes y la chaqueta
está disponible en diez tallas distintas. Sus imágenes de la chaqueta muestran los distintos colores,
pero no las distintas tallas. Para optimizar el almacenamiento en caché, debe configurar CloudFront
para almacenar en caché solo en función del parámetro de color, no el de tamaño. Esto aumenta la
probabilidad de que CloudFront pueda atender una solicitud de la caché, lo que mejora el rendimiento
y reduce la carga en el origen.
Organice los parámetros siempre en el mismo orden
276
Amazon CloudFront Guía para desarrolladores
Parámetros de cadena de consulta y registros
estándar de CloudFront (registros de acceso)
que CloudFront reenvíe dos solicitudes de image.jpg independientes al origen y que almacene en
caché dos versiones independientes del objeto:
• http://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large
• http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large&color=red
Le recomendamos enumerar los nombres de los parámetros siempre en el mismo orden, por ejemplo,
por orden alfabético.
Utilice siempre el mismo tipo de letra (mayúsculas o minúsculas) en los nombres y valores de parámetros
Si utiliza URL firmadas para restringir el acceso al contenido (si ha agregado signatarios de confianza
a la distribución), CloudFront elimina los siguientes parámetros de cadenas de consulta antes de
reenviar el resto de la URL al origen:
• Expires
• Key-Pair-Id
• Policy
• Signature
Si utiliza URL firmadas y desea configurar CloudFront para reenviar cadenas de consulta al origen,
sus propios parámetros de cadenas de consulta no pueden denominarse Expires, Key-Pair-Id,
Policy ni Signature.
277
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché de
contenido en función de cookies
que sean idénticas excepto por lo que está en el encabezado de Cookie, de forma predeterminada,
CloudFront trata las solicitudes como idénticas y devuelve el mismo objeto para ambas solicitudes.
Puede configurar CloudFront para reenviar al origen algunas o todas las cookies de las solicitudes de los
lectores y para almacenar en caché diferentes versiones de los objetos en función de los valores de las
cookies de las solicitudes que reenvía. Al hacerlo, CloudFront utiliza algunas o todas las cookies de las
solicitudes de lectores (las que esté configurado para reenviar) para identificar de forma única un objeto en
la caché.
Supongamos que las solicitudes de locations.html contienen una cookie country con un valor de
uk o fr. Al configurar CloudFront para almacenar los objetos en la caché en función del valor de la cookie
country, CloudFront reenvía al origen las solicitudes de locations.html e incluye la cookie country
y su valor. El origen devuelve locations.html y CloudFront almacena el objeto una vez en la caché
para las solicitudes cuyo valor de la cookie country sea uk y otra vez para las solicitudes cuyo valor de la
cookie sea fr.
Important
Puede configurar cada comportamiento de la caché para realizar una de las siguientes acciones:
• Reenviar todas las cookies al origen: CloudFront incluye todas las cookies enviadas por el lector cuando
reenvía las solicitudes al origen. Cuando el origen devuelve una respuesta, CloudFront almacena
en caché la respuesta utilizando los nombres y valores de las cookies en la solicitud del lector. Si la
respuesta de origen incluye encabezados Set-Cookie, CloudFront los devuelve al lector con el objeto
solicitado. CloudFront también almacena en caché los encabezados Set-Cookie con el objeto devuelto
desde el origen y envía esos encabezados Set-Cookie a los lectores en todos los aciertos de caché.
• Reenviar una lista blanca de cookies que especifique: CloudFront elimina las cookies que el lector envía
y que no están en la lista blanca antes de que reenvíe una solicitud al origen. CloudFront almacena en
caché la respuesta utilizando los nombres y valores de las cookies permitidos de la solicitud del lector.
Si la respuesta de origen incluye encabezados Set-Cookie, CloudFront los devuelve al lector con el
objeto solicitado. CloudFront también almacena en caché los encabezados Set-Cookie con el objeto
devuelto desde el origen y envía esos encabezados Set-Cookie a los lectores en todos los aciertos de
caché.
Para obtener información sobre cómo especificar caracteres comodín en nombres de cookies en una
lista blanca, consulte Whitelist Cookies (Lista blanca de cookies) (p. 58).
Para consultar la cuota actual de la cantidad de nombres de cookies que puede agregar a una lista
blanca para cada comportamiento de la caché o para solicitar una ampliación de la cuota, consulte
Cuotas de cadenas de consulta incluidas en la lista blanca (solo para distribuciones web) (p. 522).
• No reenviar las cookies al origen: CloudFront no almacena los objetos en la caché en función de cookies
enviadas por el lector. Además, CloudFront elimina las cookies antes de reenviar las solicitudes al
278
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché de
contenido en función de cookies
origen y elimina los encabezados Set-Cookie de las respuestas antes de devolver las respuestas a los
lectores.
Tenga en cuenta lo siguiente acerca de especificar las cookies que desea reenviar:
Logs de acceso
Si configura CloudFront para registrar solicitudes y cookies, CloudFront registra todas las cookies y
todos los atributos de cookies, incluso si configura CloudFront para no reenviar cookies al origen o si
configura CloudFront para reenviar solo una lista blanca de cookies específicas. Para obtener más
información acerca del registro de CloudFront, consulte Configuración y uso de registros estándar
(registros de acceso) (p. 463).
Sensibilidad de mayúsculas y minúsculas
Los nombres y valores de las cookies distinguen entre mayúsculas y minúsculas. Por ejemplo, si se
configura CloudFront para reenviar todas las cookies y dos solicitudes de lector para el mismo objeto
tienen cookies que son idénticas excepto por el caso, CloudFront almacena el objeto dos veces en la
caché.
CloudFront ordena las cookies
Si se configura CloudFront para reenviar las cookies (todas o una lista blanca), CloudFront ordena las
cookies en orden natural por nombre de cookie antes de reenviar la solicitud al origen.
If-Modified-Since y If-None-Match
CloudFront reenvía un encabezado de cookie solo si el valor se ajusta al formato estándar de pares de
nombre-valor, por ejemplo: "Cookie: cookie1=value1; cookie2=value2"
Deshabilitar el almacenamiento en caché de los encabezados Set-Cookie
Si se configura CloudFront para reenviar cookies al origen (todas o una lista blanca), también
almacena en caché los encabezados Set-Cookie recibidos en la respuesta de origen. CloudFront
incluye estos encabezados Set-Cookie en la respuesta al lector original y también los incluye en las
respuestas posteriores que se sirven desde la caché de CloudFront.
Si desea recibir cookies en el origen pero no desea que CloudFront almacene en caché los
encabezados Set-Cookie en las respuestas del origen, configure el origen para agregar un
encabezado Cache-Control con una política de no-cache que especifique Set-Cookie como
nombre de campo. Por ejemplo: Cache-Control: no-cache="Set-Cookie". Para obtener más
información, consulte Directivas de respuesta de control de caché en el protocolo de transferencia de
hipertexto (HTTP/1.1): almacenamiento en caché estándar.
Longitud máxima de los nombres de las cookies
Si configura CloudFront para reenviar una lista blanca de cookies específicas al origen, el número total
de bytes en todos los nombres de cookies que configure CloudFront para reenviar no puede superar
los 512 menos el número de cookies que reenvía. Por ejemplo, si configura CloudFront para reenviar
10 cookies al origen, la longitud combinada de los nombres de las 10 cookies no puede superar los
502 bytes (512-10).
Si configura CloudFront para reenviar todas las cookies al origen, la longitud de los nombres de las
cookies no importa.
Para obtener más información acerca del uso de la consola de CloudFront para actualizar una distribución
de modo que CloudFront reenvíe las cookies al origen, consulte Actualización de una distribución (p. 71).
279
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché de contenido
en función de encabezados de solicitud
Para obtener información sobre el uso de la API de CloudFront para actualizar una distribución, consulte
UpdateDistribution en la Referencia de la API de Amazon CloudFront.
Temas
• Encabezados y distribuciones: información general (p. 280)
• Selección de los encabezados para basar el almacenamiento en caché (p. 281)
• Configuración de CloudFront para respetar la configuración CORS (p. 282)
• Configuración del almacenamiento en caché en función del tipo de dispositivo (p. 282)
• Configuración del almacenamiento en caché en función del idioma del lector (p. 283)
• Configurar el almacenamiento en caché en función de la ubicación del lector (p. 283)
• Configurar el almacenamiento en caché en función del protocolo de la solicitud (p. 283)
• Configuración del almacenamiento en caché para archivos comprimidos (p. 283)
• Cómo afecta al rendimiento el almacenamiento en caché en función de los encabezados (p. 283)
• Cómo afectan al almacenamiento en caché las mayúsculas o minúsculas de los encabezados y sus
valores (p. 284)
• Encabezados que CloudFront devuelve al lector (p. 284)
Puede configurar CloudFront para reenviar los encabezados al origen, lo que hace que CloudFront
almacene en caché varias versiones de un objeto en función de los valores en uno o varios encabezados
de solicitud. Para configurar CloudFront para almacenar en caché los objetos en función de los valores
de encabezados específicos, se especifica la configuración del comportamiento de la caché para la
distribución. Para obtener más información, consulte Caché en función de encabezados de solicitud
seleccionados.
Puede configurar cada comportamiento de la caché en una distribución para realizar una de las siguientes
acciones:
280
Amazon CloudFront Guía para desarrolladores
Selección de los encabezados para
basar el almacenamiento en caché
Important
Para consultar la cuota actual de la cantidad de encabezados que puede agregar a una lista blanca
para cada comportamiento de la caché o para solicitar una ampliación de la cuota, consulte Cuotas en
encabezados personalizados (p. 522).
Para obtener información acerca del uso de la consola de CloudFront para actualizar una distribución de
modo que CloudFront reenvíe encabezados al origen, consulte Actualización de una distribución (p. 71).
Para obtener información sobre el uso de la API de CloudFront para actualizar una distribución existente,
consulte Actualizar distribución en la Referencia de la API de Amazon CloudFront.
• Amazon S3: puede configurar CloudFront para reenviar y almacenar en caché los objetos en función
de un número de encabezados específicos (consulte la lista de excepciones que se muestra a
continuación). Sin embargo, le recomendamos que evite los encabezados de lista blanca con un origen
de Amazon S3 a no ser que necesite implementar el uso compartido de recursos entre orígenes (CORS)
o desee personalizar contenido mediante Lambda@Edge en eventos producidos en el origen.
• Para configurar CORS, debe reenviar encabezados que permitan a CloudFront distribuir contenido
para sitios web que están habilitados para el uso compartido de recursos entre orígenes (CORS).
Para obtener más información, consulte Configuración de CloudFront para respetar la configuración
CORS (p. 282).
• Para personalizar el contenido mediante el uso de encabezados que reenvía al origen de Amazon
S3, debe escribir y agregar funciones Lambda@Edge y asociarlas a la distribución de CloudFront
para desencadenarlas mediante un evento producido en el origen. Para obtener más información
acerca del uso de encabezados para personalizar contenido, consulte Personalizar contenido por
encabezados de tipo de dispositivo o país: ejemplos (p. 397).
Le recomendamos que evite los encabezados de lista blanca que no esté utilizando para personalizar
contenido ya que el reenvío de encabezados adicionales puede reducir la tasa de aciertos de
caché. Es decir, CloudFront; no puede atender tantas solicitudes de cachés perimetrales, como una
proporción de todas las solicitudes.
• Origen personalizado: puede configurar CloudFront para almacenar en caché en función del valor de
cualquier encabezado de solicitud, excepto los siguientes:
• Connection
• Cookie: si desea reenviar y almacenar en caché en función de las cookies, utilice otra configuración
diferente en la distribución. Para obtener más información, consulte Almacenamiento en caché de
contenido en función de cookies (p. 277).
• Host (for Amazon S3 origins)
281
Amazon CloudFront Guía para desarrolladores
Configuración de CloudFront para
respetar la configuración CORS
• Proxy-Authorization
• TE
• Upgrade
Puede configurar CloudFront para almacenar en caché los objetos en función de los valores de los
encabezados Date y User-Agent, pero no lo recomendamos. Estos encabezados tienen muchos
valores posibles y el almacenamiento en caché en función de los valores podría hacer que CloudFront
reenvíe una cantidad de solicitudes significativamente mayor al origen.
Para obtener una lista completa de encabezados de solicitudes HTTP y cómo los procesa CloudFront,
consulte Encabezados de solicitudes HTTP y comportamiento de CloudFront (personalizado y orígenes de
S3) (p. 309).
Amazon S3
Orígenes personalizados: reenvíe el encabezado Origin junto con los demás encabezados exigidos por
el origen.
Debe configurar CloudFront para reenviar los encabezados creando una lista blanca de los encabezados
en un comportamiento de la caché para la distribución de CloudFront. Para obtener más información
acerca de cómo trabajar con el reenvío de encabezados, consulte Encabezados y distribuciones:
información general (p. 280).
Para obtener más información acerca de CORS y Amazon S3, consulte Habilitación del uso compartido de
recursos entre orígenes en la Guía para desarrolladores de Amazon Simple Storage Service.
• CloudFront-Is-Desktop-Viewer
• CloudFront-Is-Mobile-Viewer
282
Amazon CloudFront Guía para desarrolladores
Configuración del almacenamiento en
caché en función del idioma del lector
• CloudFront-Is-SmartTV-Viewer
• CloudFront-Is-Tablet-Viewer
En función del valor del encabezado User-Agent, CloudFront establece el valor de estos encabezados
en true o false antes de reenviar la solicitud al origen. Si un dispositivo entra en más de una categoría,
más de un valor podría ser true. Por ejemplo, para algunas tabletas, es posible que CloudFront
establezca CloudFront-Is-Mobile-Viewer y CloudFront-Is-Tablet-Viewer en true.
Si configura CloudFront para reenviar más de un encabezado, el orden de los encabezados de las
solicitudes de los lectores no afecta al almacenamiento en caché siempre y cuando los valores sean los
283
Amazon CloudFront Guía para desarrolladores
Cómo afectan al almacenamiento en caché las mayúsculas
o minúsculas de los encabezados y sus valores
mismos. Por ejemplo, si una solicitud contiene los encabezados A:1,B:2 y otra solicitud contiene B:2,A:1,
CloudFront almacena en caché solo una copia del objeto.
• Orígenes de Amazon S3: consulte Encabezados de respuesta HTTP que CloudFront elimina o
actualiza (p. 304).
• Orígenes personalizados: consulte Encabezados de respuesta HTTP que CloudFront elimina o
reemplaza (p. 317).
284
Amazon CloudFront Guía para desarrolladores
Solucionar problemas de distribuciones
Solución de problemas
Solucione problemas comunes que podría encontrar al configurar Amazon CloudFront para distribuir su
contenido o al utilizar Lambda@Edge, y encuentre posibles soluciones.
Temas
• Solucionar problemas de distribuciones (p. 285)
• Solucionar respuestas de error del origen (p. 288)
• Pruebas de carga de CloudFront (p. 297)
Temas
• CloudFront devuelve un error InvalidViewerCertificate al intentar agregar un nombre de dominio
alternativo (p. 285)
• No puedo ver los archivos de mi distribución (p. 286)
• Mensaje de error: Certificate: <id-certificado> is being used by CloudFront (p. 288)
Los siguientes errores se enumeran en el orden en que CloudFront comprueba la autorización para
agregar un nombre de dominio alternativo. Esto puede ayudarle a solucionar problemas porque puede
saber qué comprobaciones de verificación se han realizado correctamente en función del error que
devuelva CloudFront.
There's no certificate attached to your distribution. (No hay ningún certificado asociado a la distribución).
Para añadir un nombre de dominio alternativo (CNAME), debe asociar un certificado de confianza
válido a la distribución. Revise los requisitos, obtenga un certificado válido que los cumpla, asócielo a
la distribución e inténtelo de nuevo. Para obtener más información, consulte Requisitos para el uso de
nombres de dominio alternativos (p. 87).
There are too many certificates in the certificate chain for the certificate that you've attached. (Hay
demasiados certificados en la cadena de certificados del certificado que ha asociado).
Solo puede tener cinco certificados como máximo en una cadena de certificados. Reduzca el número
de certificados de la cadena y, a continuación, vuelva a intentarlo.
The certificate chain includes one or more certificates that aren't valid for the current date. (La cadena de
certificados incluye uno o varios certificados que no son válidos para la fecha actual).
La cadena de certificados de un certificado que ha añadido tiene uno o varios certificados que no
son válidos, ya sea porque un certificado todavía no es válida o porque un certificado ha caducado.
285
Amazon CloudFront Guía para desarrolladores
No puedo ver los archivos de mi distribución
Compruebe los campos Not Valid Before (No válido antes del) y Not Valid After (No válido después
del) en los certificados de la cadena de certificados para asegurarse de que todos los certificados son
válidos para las fechas que ha indicado.
The certificate that you've attached isn't signed by a trusted Certificate Authority (CA). (El certificado que ha
asociado no está firmado por una entidad de certificación (CA) de confianza).
El certificado que se asocia a CloudFront para verificar un nombre de dominio alternativo no puede
ser un certificado autofirmado. Debe estar firmado por una CA de confianza. Para obtener más
información, consulte Requisitos para el uso de nombres de dominio alternativos (p. 87).
The certificate that you've attached isn't formatted correctly (El certificado que ha asociado no tiene el
formato correcto)
El formato del nombre de dominio y de la dirección IP que se incluyen en el certificado y el formato del
certificado deben seguir el estándar para los certificados.
Se produjo un error interno de CloudFront.
Para cada nombre de dominio alternativo que agregue, CloudFront requiere que asocie un certificado
SSL/TLS válido de una entidad de certificación (CA) de confianza que cubra el nombre de dominio,
para validar su autorización para utilizarlo. Actualice el certificado para que incluya un nombre de
dominio que cubra el CNAME que intenta añadir. Para obtener más información y ejemplos de uso de
nombres de dominio con caracteres comodín, consulte Requisitos para el uso de nombres de dominio
alternativos (p. 87).
Si su contenido no es legible de forma pública, tendrá que crear una identidad de acceso de origen (OAI)
de CloudFront para que CloudFront pueda obtener acceso a él. Para obtener más información acerca
de las identidades de acceso de origen de CloudFront, consulte Restricción del acceso a contenido de
Amazon S3 utilizando una identidad de acceso de origen (p. 223).
286
Amazon CloudFront Guía para desarrolladores
No puedo ver los archivos de mi distribución
Las propiedades del objeto y las del bucket son independientes. Debe otorgar privilegios de forma explícita
a cada uno de los objetos de Amazon S3. Los objetos no heredan las propiedades de los buckets y las
propiedades de los objetos deben establecerse de forma independiente del bucket.
[prompt]>
dig images.example.com
Para obtener más información acerca de CNAME, consulte Uso de URL personalizadas para archivos
añadiendo nombres de dominio alternativos (CNAME) (p. 80).
287
Amazon CloudFront Guía para desarrolladores
Mensaje de error: Certificate: <id-
certificado> is being used by CloudFront
Temas
• Código de estado HTTP 400 (solicitud errónea) (p. 288)
• Código de estado HTTP 500 (Error de ejecución de Lambda) (p. 289)
• Código de estado HTTP 502 (Puerta de enlace incorrecta) (p. 289)
• Código de estado HTTP 502 (Error de validación de Lambda) (p. 292)
• Código de estado HTTP 503 (Se ha superado el límite de Lambda) (p. 292)
• Código de estado HTTP 503 (Servicio no disponible) (p. 293)
• Código de estado HTTP 504 (tiempo de espera de gateway agotado) (p. 293)
Por ejemplo:
Para solucionar este error, actualice la distribución de CloudFront para que encuentre el bucket de S3 en la
región de AWS actual del bucket.
288
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 500 (Error de ejecución de Lambda)
Temas
• Error de negociación SSL/TLS entre CloudFront y un servidor de origen personalizado (p. 289)
• El origen no responde con protocolos ni cifrados admitidos (p. 290)
• El certificado SSL/TLS del origen ha caducado, no es válido, es autofirmado o el orden de la cadena de
certificados es incorrecto (p. 291)
• El origen no responde en puertos especificados en la configuración de origen (p. 291)
• CloudFront no puede resolver el dominio de origen debido a problemas de DNS (p. 292)
• Errores de validación de funciones Lambda@Edge (p. 292)
289
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 502 (Puerta de enlace incorrecta)
• El valor que especificó en Origin Domain Name (Nombre de dominio de origen) para el origen aplicable a
la distribución.
• El valor del encabezado Host si ha configurado CloudFront para reenviar el encabezado Host al
origen. Para obtener más información acerca del reenvío del encabezado Host al origen, consulte
Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 280).
Si los nombres de dominio no coinciden, el protocolo SSL/TLS devuelve un error, y CloudFront devuelve
un código de estado HTTP 502 (gateway incorrecta) y establece el encabezado X-Cache en Error from
cloudfront.
Para determinar si los nombres de dominio del certificado coinciden con el Origin Domain Name (Nombre
de dominio de origen) en la distribución o con el encabezado Host, utilice un comprobador SSL online u
OpenSSL. Si los nombres de dominio no coinciden, tiene dos opciones:
• Obtener un nuevo certificado SSL/TLS que incluya los nombres de dominio aplicables.
Si utiliza AWS Certificate Manager (ACM), consulte Solicitar un certificado en la Guía del usuario de
AWS Certificate Manager para solicitar un nuevo certificado.
• Cambie la configuración de la distribución para que CloudFront deje de intentar utilizar SSL para
conectarse al origen.
OpenSSL
Como ayuda para solucionar los errores HTTP 502 desde CloudFront, puede utilizar OpenSSL para
intentar realizar una conexión SSL/TLS con el servidor de origen. Si OpenSSL no puede establecer una
conexión, puede indicar un problema con la configuración de SSL/TLS del servidor de origen. Si OpenSSL
puede establecer una conexión, devuelve información sobre el certificado del servidor de origen, incluido el
nombre común (campo Subject CN) y el nombre alternativo del sujeto (campo Subject Alternative
Name) del certificado.
Utilice el siguiente comando OpenSSL para probar la conexión con el servidor de origen (reemplace
nombre de dominio de origen por el nombre de dominio del servidor de origen, como example.com):
• El servidor de origen admite varios nombres de dominio con varios certificados SSL/TLS
• Su distribución está configurada para reenviar el encabezado Host al origen
Agregue la opción -servername al comando OpenSSL, como en el siguiente ejemplo (reemplace CNAME
por el CNAME configurado en su distribución):
290
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 502 (Puerta de enlace incorrecta)
criptográficos o protocolos en el intercambio SSL/TLS, CloudFront no puede conectarse. Use SSL Labs
para comprobar si el origen es compatible con los cifrados y protocolos:
• SSL Labs
Escriba el nombre de dominio del origen en el campo Hostname (Nombre de host) y, a continuación, elija
Submit (Enviar). Revise los campos Common names (Nombres comunes) y Alternative names (Nombres
alternativos) de la prueba para ver si coinciden con el nombre de dominio del origen.
Una vez finalizada la prueba, busque las secciones Protocols (Protocolos) y Cipher Suites (Conjuntos de
cifrado) del resultado de las pruebas para saber qué protocolos o cifrados admite el origen. Compárelos
con la lista que aparece en Protocolos y cifrados admitidos (p. 145).
Note
Si utiliza Elastic Load Balancing, consulte Políticas de seguridad SSL para Elastic Load
Balancing en la Guía del usuario de Elastic Load Balancing para obtener información sobre cómo
establecer los algoritmos criptográficos y protocolos. Mediante la Política de seguridad predefinida
ELBSecurityPolicy-2016-08 puede permitir que CloudFront acceda a su balanceador de carga.
Si desea restringirlo aún más mediante una política personalizada, debe permitir los algoritmos
criptográficos admitidos por CloudFront.
• Un certificado caducado
• Un certificado no válido
• Un certificado autofirmado
• Orden incorrecto en una cadena de certificados
Note
Para obtener más información acerca de cómo instalar un certificado SSL/TLS en su servidor de
origen personalizado, consulte Exigir HTTPS para la comunicación entre CloudFront y su origen
personalizado (p. 141).
Para solucionar estos problemas, revise los firewalls de su infraestructura y compruebe que no estén
bloqueando los rangos de IP admitidos. Para obtener más información, consulte Intervalos de direcciones
IP de AWS en la Referencia general de Amazon Web Services. Compruebe también si su servidor web se
ejecuta en el origen.
291
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 502
(Error de validación de Lambda)
Para solucionar este problema, asegúrese de que los servidores de nombres autoritativos del dominio raíz
o ápex de zona (como example.com) del origen funcionan correctamente. Los servidores de nombres
autoritativos reciben a continuación la solicitud y devuelven la dirección IP asociada al dominio, y son los
mismos que los servidores de DNS que utilizó para configurar la distribución de CloudFront. Utilice los
siguientes comandos para encontrar los servidores de nombres de su origen de ápex:
Una vez tenga los nombres de los servidores de nombres, utilice los siguientes comandos para consultar el
nombre de dominio del origen ante ellos para asegurarse de que cada uno de ellos genera una respuesta:
• El número de ejecuciones de la función superó una de las cuotas (denominadas anteriormente "límites")
de Lambda establecidas para restringir las ejecuciones en una región de AWS (ejecuciones simultáneas
o frecuencia de invocación).
• La función superó la cuota de tiempo de espera de la función Lambda.
292
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 503 (Servicio no disponible)
Para obtener más información acerca de las cuotas de AWS Lambda, consulte Límites de AWS Lambda
en la Guía para desarrolladores de AWS Lambda. Para obtener más información sobre la resolución de
errores de Lambda@Edge, consulte Prueba y depuración de funciones de Lambda@Edge (p. 364).
Temas
• El servidor de origen no tiene capacidad suficiente para soportar la tasa de solicitudes (p. 293)
• CloudFront ha causado el error debido a las restricciones de recursos en la ubicación de
borde (p. 293)
293
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 504 (tiempo
de espera de gateway agotado)
CloudFront devolverá un código de estado HTTP 504 si un firewall o grupo de seguridad bloquea el tráfico
al origen o si el origen no es accesible en Internet. Compruebe en primer lugar si ocurren estos problemas.
A continuación, si el acceso no es el problema, explore los retrasos de la aplicación y los tiempos de
espera del servidor para ayudarle a identificar y corregir los problemas.
Temas
• Configurar el firewall en su servidor de origen para permitir el tráfico de CloudFront (p. 294)
• Configurar los grupos de seguridad en su servidor de origen para permitir el tráfico de
CloudFront (p. 294)
• Hacer que su servidor de origen personalizado sea accessible en Internet (p. 294)
• Buscar y corregir respuestas con retado desde aplicaciones en su servidor de origen (p. 295)
El método que se utiliza para determinar si se trata de un problema con su firewall depende del sistema
que utiliza su servidor de origen:
• Si utiliza un firewall IPTable en un servidor Linux, puede buscar herramientas e información para
ayudarle a trabajar con IPTables.
• Si utiliza Windows Firewall en un servidor de Windows, consulte Agregar o editar regla de firewall en
Microsoft Technet.
Al evaluar la configuración del firewall en su servidor de origen, busque las reglas de firewalls o de
seguridad que bloquean el tráfico desde ubicaciones de borde de CloudFront, en función del intervalo de
direcciones IP publicado.
También puede utilizar AWS Lambda para actualizar de manera automática sus grupos de seguridad para
permitir el tráfico entrante desde CloudFront.
294
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 504 (tiempo
de espera de gateway agotado)
Las ubicaciones de borde de CloudFront se conectan con los servidores de origen a través de Internet. Si
su origen personalizado se encuentra en una red privada, CloudFront no puede tener acceso a él. Por este
motivo, no puede utilizar servidores privados, incluidos balanceadores de carga clásicos internos, como
servidores de origen con CloudFront.
Para comprobar que el tráfico de Internet puede conectarse a su servidor de origen, ejecute los siguientes
comandos (donde NombreDominioOrigen es el nombre de dominio de su servidor):
• nc -zv NombreDominioOrigen 80
• telnet NombreDominioOrigen 80
Una solución rápida que ayuda a evitar errores HTTP 504 consiste sencillamente en establecer un valor de
tiempo de espera de CloudFront mayor para su distribución. Sin embargo, le recomendamos que primero
se asegure de corregir los problemas de desempeño y de latencia con la aplicación y el servidor de origen.
A continuación, puede establecer un valor de tiempo de espera razonable que ayude a evitar errores HTTP
504 y proporcione buena capacidad de respuesta a los usuarios.
A continuación, se muestra información general de los pasos que puede seguir para buscar problemas de
desempeño y corregirlos:
Si ejecuta Windows en sus servidores, puede buscar y descargar curl para Windows para ejecutar
un comando similar.
295
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 504 (tiempo
de espera de gateway agotado)
A medida que mide y evalúa la latencia de una aplicación que se ejecuta en su servidor, tenga en cuenta lo
siguiente:
• Los valores de latencia son relativos a cada aplicación. Sin embargo, un valor de Tiempo hasta el primer
byte en milisegundos en lugar de segundos o más, es razonable.
• Si mide la latencia de la aplicación con carga normal y está bien, tenga en cuenta que los espectadores
podrían seguir sufriendo tiempos de espera con cargas elevadas. Cuando hay una demanda alta, es
posible que los servidores tengan respuestas con retraso o que no respondan. Para ayudarle a evitar
problemas de latencia de carga elevada, compruebe los recursos de su servidor tales como CPU,
memoria y lecturas y escrituras en disco para asegurarse de que sus servidores tengan la capacidad de
escalar una carga elevada.
Puede ejecutar los siguientes comandos de Linux para comprobar la memoria que utilizan los procesos
de Apache:
• Si tiene su propio servidor, asegúrese de tener suficiente CPU, memoria y espacio en disco para
gestionar las solicitudes de los espectadores, en función de su evaluación.
• Si utiliza una instancia Amazon EC2 como servidor backend, asegúrese de que el tipo de instancia
cuente con los recursos apropiados para responder adecuadamente a las solicitudes entrantes. Para
obtener más información, consulte Tipos de instancia en la Guía del usuario de Amazon EC2.
Además, tenga en cuenta los siguientes pasos de ajuste para ayudar a evitar tiempos de espera:
• Si el valor Tiempo hasta el primer byte que devuelve el comando curl parece alto, tome medidas para
mejorar el desempeño de su aplicación. Mejorar la capacidad de respuesta de la aplicación a su vez
reduce los errores de tiempo de espera.
• Ajuste las consultas de la base de datos para asegurarse de que puedan administrar volúmenes de
solicitudes elevados sin un desempeño lento.
• Configure conexiones keep-alive (persistente) en su servidor de backend. Esta opción ayuda a evitar
las latencias que se producen cuando las conexiones deben volver a establecerse para las solicitudes o
usuarios posteriores.
• Si utiliza ELB como origen, aprenda a reducir la latencia revisando las sugerencias que se incluyen en el
siguiente artículo del Knowledge Center: Cómo solucionar una alta latencia de ELB.
296
Amazon CloudFront Guía para desarrolladores
Pruebas de carga de CloudFront
CloudFront se ha diseñado para escalarse en función de los lectores que tienen diferentes direcciones IP
de cliente y diferentes resoluciones de DNS en varias regiones geográficas. Para realizar pruebas de carga
que evalúen el rendimiento de CloudFront con precisión, le recomendamos que haga todo lo siguiente:
297
Amazon CloudFront Guía para desarrolladores
Comportamiento de solicitudes y
respuestas para orígenes de Amazon S3
Comportamiento de solicitudes y
respuestas
En las secciones siguientes se explica cómo CloudFront procesa solicitudes de lectores y reenvía
solicitudes al origen de Amazon S3 o personalizado, y cómo procesa respuestas desde su origen, incluido
el procesamiento y almacenamiento en caché códigos de estado HTTP 4xx y 5xx.
Temas
• Comportamiento de solicitudes y respuestas para orígenes de Amazon S3 (p. 298)
• Comportamiento de solicitudes y respuestas para orígenes personalizados (p. 305)
• Comportamiento de solicitudes y respuestas para grupos de origen (p. 319)
• Agregar encabezados personalizados a solicitudes de origen (p. 319)
• Cómo CloudFront procesa las solicitudes parciales de un objeto (rango GET). (p. 322)
• Cómo CloudFront procesa los códigos de estado HTTP 3xx desde el origen (p. 323)
• Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xx desde el
origen (p. 323)
Para obtener información acerca de cómo restringir la distribución para que los usuarios finales solo
puedan obtener acceso a los objetos a través de HTTPS, consulte Uso de HTTPS con CloudFront (p. 138).
Note
El cargo por solicitudes HTTPS es superior al de solicitudes HTTP. Para obtener más información
acerca de tarifas de facturación, consulte el plan de precios de CloudFront.
298
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen de Amazon S3
Temas
• Duración de almacenamiento en caché y TTL mínimo (p. 299)
• Direcciones IP de clientes (p. 299)
• GET condicionales (p. 300)
• Cookies (p. 300)
• Cross-Origin Resource Sharing (CORS, Uso compartido de recursos entre orígenes) (p. 300)
• Solicitudes GET que incluyen un cuerpo (p. 300)
• Métodos HTTP (p. 300)
• Encabezados de solicitud HTTP que CloudFront elimina o actualiza (p. 301)
• Longitud máxima de una solicitud y de una URL (p. 301)
• Asociación de OCSP (p. 301)
• Protocolos (p. 302)
• Cadenas de consulta (p. 302)
• Tiempo de espera e intentos de conexión de origen (p. 302)
• Tiempo de espera de respuesta del origen (p. 302)
• Solicitudes simultáneas del mismo objeto (picos de tráfico) (p. 303)
• Configure su origen para añadir un Cache-Control o un encabezado Expires para cada objeto.
• Especificar un valor de TTL mínimo en comportamientos de la caché de CloudFront.
• Utilice el valor de predeterminado de 24 horas.
Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).
Direcciones IP de clientes
Si un lector envía una solicitud a CloudFront y no incluye un encabezado de solicitud X-Forwarded-For,
CloudFront obtiene la dirección IP del lector de la conexión TCP, agrega un encabezado X-Forwarded-
For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, si CloudFront obtiene la
dirección IP 192.0.2.2 de la conexión TCP, reenvía el siguiente encabezado al origen:
X-Forwarded-For: 192.0.2.2
299
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen de Amazon S3
X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2
Note
GET condicionales
Cuando CloudFront recibe una solicitud de un objeto que ha caducado en una caché perimetral, reenvía la
solicitud al origen de Amazon S3 para obtener la última versión del objeto o para obtener la confirmación
de Amazon S3 de que la caché perimetral de CloudFront ya dispone de la última versión. Cuando Amazon
S3 envió el objeto originalmente a CloudFront, incluyó un valor ETag y un valor LastModified en la
respuesta. En la nueva solicitud que CloudFront reenvía a Amazon S3, CloudFront agrega uno o ambos de
los siguientes elementos:
• Un encabezado If-Match o If-None-Match que contenga el valor ETag para la versión caducada del
objeto.
• Un encabezado If-Modified-Since que contenga el valor LastModified para la versión caducada
del objeto.
Cookies
Amazon S3 no procesa cookies. Si configura un comportamiento de caché para reenviar las cookies a un
origen de Amazon S3, CloudFront reenvía las cookies, pero Amazon S3 las ignora. Todas las solicitudes
futuras del mismo objeto, independientemente si varía la cookie, se atienden desde el objeto existente en
la caché.
Métodos HTTP
Si configura CloudFront para procesar todos los métodos de HTTP que admite, CloudFront acepta las
siguientes solicitudes de los lectores y los reenvía al origen de Amazon S3:
• DELETE
• GET
• HEAD
• OPTIONS
• PATCH
300
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen de Amazon S3
• POST
• PUT
CloudFront siempre almacena en caché las respuestas a las solicitudes GET y HEAD. También puede
configurar CloudFront para almacenar en caché las respuestas a solicitudes OPTIONS. CloudFront no
almacena en caché las respuestas a las solicitudes que utilizan los otros métodos.
Si utiliza un bucket de Amazon S3 como origen de la distribución y, además, usa identidades de acceso
de origen de CloudFront, las solicitudes POST no se admiten en algunas regiones de Amazon S3 y las
solicitudes PUT en esas regiones necesitarán un encabezado adicional. Para obtener más información,
consulte Uso de una OAI en regiones de Amazon S3 que solo admiten autenticación Signature Version
4 (p. 230).
Si desea utilizar cargas multiparte para agregar objetos a un bucket de Amazon S3, debe agregar una
identidad de acceso de origen de CloudFront a su distribución y conceder los permisos necesarios a la
identidad de acceso de origen. Para obtener más información, consulte Restricción del acceso a contenido
de Amazon S3 utilizando una identidad de acceso de origen (p. 223).
Important
Si configura CloudFront para que acepte y reenvíe a Amazon S3 todos los métodos HTTP que
CloudFront admite, debe crear una identidad de acceso de origen de CloudFront para restringir
el acceso a su contenido de Amazon S3 y conceder los permisos necesarios a la identidad de
acceso de origen. Por ejemplo, si configura CloudFront para aceptar y reenviar estos métodos
porque desea utilizar PUT, debe configurar también políticas de bucket de Amazon S3 o ACL para
administrar solicitudes DELETE adecuadamente, de forma que los lectores no puedan eliminar
los recursos que no desee que eliminen. Para obtener más información, consulte Restricción del
acceso a contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 223).
Para obtener más información acerca de las operaciones admitidas por Amazon S3, consulte la
documentación de Amazon S3.
CloudFront crea una URL a partir de la solicitud. La longitud máxima de esta URL es de 8 192 bytes.
Si una solicitud o una URL supera estos máximos, CloudFront devuelve el código de estado HTTP 413
(entidad de solicitud demasiado grande), al lector y, a continuación, interrumpe la conexión TCP con el
lector.
Asociación de OCSP
Cuando un lector envía una solicitud de un objeto HTTPS, CloudFront o el lector deben confirmar con la
autoridad de certificación (CA) que el certificado SSL del dominio no se ha revocado. La asociación de
301
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen de Amazon S3
La mejora en el rendimiento de la asociación de OCSP es más notoria cuando CloudFront recibe una gran
cantidad de solicitudes de HTTPS de objetos en el mismo dominio. Cada servidor en una ubicación de
borde de CloudFront debe enviar una solicitud de validación independiente. Cuando CloudFront recibe
una gran cantidad de solicitudes HTTPS para el mismo dominio, cada servidor de la ubicación de borde
obtiene pronto una respuesta de la CA que puede asociar a un paquete en el protocolo de enlace de SSL;
cuando el lector considera que el certificado es válido, CloudFront puede ofrecer el objeto solicitado. Si la
distribución no recibe mucho tráfico en una ubicación de borde de CloudFront, es más probable que las
nuevas solicitudes se dirijan a un servidor que todavía no haya validado el certificado con la CA. En ese
caso, el lector realiza el paso de validación por separado y el servidor de CloudFront ofrece el objeto. Este
servidor de CloudFront también envía una solicitud de validación a la CA, por lo que la próxima vez que
recibe una solicitud que incluye el mismo nombre de dominio, cuenta con una respuesta de validación de
la CA.
Protocolos
CloudFront reenvía las solicitudes de HTTP o HTTPS al servidor de origen en función del protocolo de la
solicitud del lector, ya sea HTTP o HTTPS.
Important
Cadenas de consulta
Puede configurar si CloudFront reenvía parámetros de cadenas de consulta a su origen Amazon S3. Para
obtener más información, consulte Almacenamiento en caché de contenido en función de parámetros de
cadenas de consulta (p. 274).
Origin connection attempts (Intentos de conexión de origen) es el número de veces que CloudFront intenta
conectarse al origen.
Juntos, estos parámetros determinan cuánto tiempo intenta CloudFront conectarse al origen antes de
realizar una conmutación al origen secundario (en el caso de un grupo de orígenes) o devolver una
respuesta de error al lector. De forma predeterminada, CloudFront espera hasta 30 segundos (3 intentos
de 10 segundos cada uno) antes de intentar conectarse al origen secundario o devolver una respuesta de
error. Puede reducir este tiempo si especifica menos intentos, un tiempo de espera de conexión más corto
o ambas opciones.
Para obtener más información, consulte Control de los tiempos de espera de origen y los intentos (p. 266).
• El periodo de tiempo, en segundos, que CloudFront espera una respuesta después de enviar una
solicitud al origen.
302
Amazon CloudFront Guía para desarrolladores
Cómo procesa CloudFront las respuestas
de su servidor de origen de Amazon S3
• El periodo de tiempo, en segundos, que CloudFront espera después de recibir un paquete de una
respuesta del origen y antes de recibir el paquete siguiente.
No puede cambiar el tiempo de espera de respuesta para un origen de Amazon S3 (un bucket de S3 que
no está configurado con alojamiento de sitio web estático).
Cuando la respuesta del origen incluye un encabezado Cache-Control: no-cache, CloudFront suele
reenviar la siguiente solicitud del mismo objeto al origen para determinar si dicho objeto se ha actualizado.
Sin embargo, cuando hay un pico de tráfico y CloudFront se pone en pausa después de reenviar la primera
solicitud al origen, pueden llegar varias solicitudes antes de que CloudFront reciba una respuesta del
origen. Cuando CloudFront recibe una respuesta que contiene un encabezado Cache-Control: no-
cache, envía el objeto en la respuesta al lector que realizó la solicitud original y a todos los lectores que
solicitaron el objeto durante la pausa. Una vez que la respuesta llega desde el origen, CloudFront reenvía
la siguiente solicitud del lector del mismo objeto al origen. En los registros de acceso de CloudFront, la
primera solicitud se identifica como Miss en la columna x-edge-result-type y todas las solicitudes
posteriores recibidas por CloudFront durante la pausa se identifican como Hit. Para obtener más
información acerca del formato de archivo de registros de acceso, consulte Campos de archivo de registro
estándar (p. 469).
Temas
• Solicitudes canceladas (p. 304)
• Encabezados de respuesta HTTP que CloudFront elimina o actualiza (p. 304)
• Tamaño máximo de archivo (p. 304)
303
Amazon CloudFront Guía para desarrolladores
Cómo procesa CloudFront las respuestas
de su servidor de origen de Amazon S3
Solicitudes canceladas
Si un objeto no está en la caché perimetral y un lector termina una sesión (por ejemplo, cierra un
navegador) después de que CloudFront obtiene el objeto solicitado del origen, pero antes de que pueda
entregarlo, CloudFront no almacena el objeto en la caché de la ubicación de borde.
• Set-Cookie: si configura CloudFront para reenviar cookies, reenviará el campo del encabezado Set-
Cookie a los clientes. Para obtener más información, consulte Almacenamiento en caché de contenido
en función de cookies (p. 277).
• Trailer
• Transfer-Encoding: si el origen de Amazon S3 devuelve este campo de encabezado CloudFront
establece el valor en chunked antes de devolver la respuesta al lector.
• Upgrade
• Via: CloudFront establece el valor en lo siguiente en la respuesta al lector:
Por ejemplo, si el cliente realiza una solicitud a través de HTTP/1.1, el valor es algo parecido a lo
siguiente:
Redireccionamientos
Puede configurar un bucket de Amazon S3 para redirigir todas las solicitudes a otro nombre de host;
este puede ser otro bucket de Amazon S3 o un servidor HTTP. Si configura un bucket para redirigir todas
las solicitudes y es el origen de una distribución de CloudFront, le recomendamos configurarlo para
redirigirlas a una distribución de CloudFront utilizando el nombre de dominio para la distribución (por
ejemplo, d111111abcdef8.cloudfront.net) o un nombre alternativo de dominio (un CNAME) asociado a una
distribución (por ejemplo, ejemplo.com). De lo contrario, las solicitudes de los lectores eluden CloudFront y
los objetos se sirven directamente desde el nuevo origen.
Note
Esto es lo que ocurre cuando configura un bucket para redirigir todas las solicitudes:
304
Amazon CloudFront Guía para desarrolladores
Comportamiento de solicitudes y
respuestas para orígenes personalizados
• Si el bucket de Amazon S3 está redirigiendo todas las solicitudes a una distribución de CloudFront
usando el nombre de dominio para la distribución o un nombre de dominio alternativo, CloudFront
solicita el objeto del bucket de Amazon S3 o del servidor HTTP en la nueva ubicación. Cuando la
nueva ubicación devuelve el objeto, CloudFront lo devuelve al lector y lo almacena en caché en una
ubicación de borde.
• Si el bucket de Amazon S3 está redirigiendo las solicitudes a otra ubicación, la segunda solicitud
elude CloudFront. El bucket de Amazon S3 o el servidor HTTP de la nueva ubicación devuelven el
objeto directamente al lector, por lo que el objeto nunca se almacena en una caché perimetral de
CloudFront.
Temas
• Autenticación (p. 306)
• Duración de almacenamiento en caché y TTL mínimo (p. 306)
• Direcciones IP de clientes (p. 306)
• Autenticación SSL en el cliente (p. 307)
• Compresión (p. 307)
• Solicitudes condicionales (p. 307)
• Cookies (p. 307)
• Cross-Origin Resource Sharing (CORS, Uso compartido de recursos entre orígenes) (p. 307)
• Cifrado (p. 307)
• Solicitudes GET que incluyen un cuerpo (p. 308)
• Métodos HTTP (p. 308)
• Encabezados de solicitudes HTTP y comportamiento de CloudFront (personalizado y orígenes de
S3) (p. 309)
• Versión de HTTP (p. 312)
• Longitud máxima de una solicitud y de una URL (p. 312)
305
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado
Autenticación
Para las solicitudes DELETE, GET, HEAD, PATCH, POST y PUT, si configura CloudFront para reenviar el
encabezado Authorization a su origen (p. 321), puede configurar su servidor de origen para solicitar
autenticación del cliente.
Para las solicitudes OPTIONS, puede configurar su servidor de origen para solicitar autenticación del
cliente solo si utiliza los siguientes ajustes de CloudFront:
• Configure CloudFront para que reenvíe el encabezado Authorization a su origen (p. 321).
• Configure CloudFront para que no almacene en caché la respuesta a solicitudes OPTIONS.
Puede configurar CloudFront para que reenvíe las solicitudes a su origen mediante HTTP o HTTPS; para
obtener más información, consulte Uso de HTTPS con CloudFront (p. 138).
• Configure su origen para añadir un Cache-Control o un encabezado Expires para cada objeto.
• Especificar un valor de TTL mínimo en comportamientos de la caché de CloudFront.
• Utilice el valor de predeterminado de 24 horas.
Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).
Direcciones IP de clientes
Si un lector envía una solicitud a CloudFront y no incluye un encabezado de solicitud X-Forwarded-For,
CloudFront obtiene la dirección IP del lector de la conexión TCP, agrega un encabezado X-Forwarded-
For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, si CloudFront obtiene la
dirección IP 192.0.2.2 de la conexión TCP, reenvía el siguiente encabezado al origen:
X-Forwarded-For: 192.0.2.2
X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2
306
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado
Algunas aplicaciones, como, por ejemplo, balanceadores de carga (incluido Elastic Load Balancing),
firewalls de aplicaciones web, proxis inversos, sistemas de prevención de intrusos y gateways de la
API, agregan la dirección IP del servidor de borde de CloudFront que reenvía la solicitud al extremo del
encabezado X-Forwarded-For. Por ejemplo, si CloudFront incluye X-Forwarded-For: 192.0.2.2
en una solicitud que reenvía a ELB y si la dirección IP del servidor de borde de CloudFront es 192.0.2.199,
la solicitud que recibe su instancia EC2 contiene el siguiente encabezado:
X-Forwarded-For: 192.0.2.2,192.0.2.199
Note
El encabezado X-Forwarded-For contiene direcciones IPv4 (como 192.0.2.44) e IPv6 (como
2001:0db8:85a3:0000:0000:8a2e:0370:7334).
Compresión
Para obtener más información, consulte Ofrecer archivos comprimidos (p. 128).
Solicitudes condicionales
Cuando CloudFront recibe una solicitud de un objeto que ha caducado en una caché perimetral, reenvía
la solicitud al origen para obtener la última versión del objeto o para obtener la confirmación del origen
de que la caché perimetral de CloudFront ya dispone de la última versión. Por lo general, la última vez
que el origen envía el objeto a CloudFront, incluye un valor ETag, un valor LastModified o ambos en la
respuesta. En la nueva solicitud que CloudFront reenvía al origen, CloudFront agrega uno o ambos de los
siguientes elementos:
• Un encabezado If-Match o If-None-Match que contenga el valor ETag para la versión caducada del
objeto.
• Un encabezado If-Modified-Since que contenga el valor LastModified para la versión caducada
del objeto.
Cookies
Puede configurar CloudFront para que reenvíe cookies al origen. Para obtener más información, consulte
Almacenamiento en caché de contenido en función de cookies (p. 277).
Cifrado
Puede requerir que los lectores utilicen HTTPS para enviar solicitudes a CloudFront y exigir a CloudFront
que reenvíe las solicitudes a su origen personalizado mediante el protocolo que utiliza el lector. Para
obtener más información, consulte la siguiente configuración de distribución:
307
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado
CloudFront reenvía las solicitudes HTTPS al servidor de origen mediante los protocolos SSLv3, TLSv1.0,
TLSv1.1 y TLSv1.2. En el caso de orígenes personalizados, puede elegir los protocolos SSL que desea
que CloudFront utilice al comunicarse con su origen:
• Si utiliza la consola de CloudFront, elija los protocolos en las casillas Origin SSL Protocols (Protocolos
SSL de origen). Para obtener más información, consulte Creación de una distribución (p. 42).
• Si utiliza la API de CloudFront, especifique los protocolos mediante el elemento OriginSslProtocols.
Para obtener más información, consulte OriginSslProtocols y DistributionConfig en la Referencia de la
API de Amazon CloudFront.
Para obtener más información acerca del uso de HTTPS con CloudFront, consulte Uso de HTTPS con
CloudFront (p. 138). Para obtener listas de los algoritmos criptográficos que CloudFront admite para la
comunicación HTTPS entre lectores y CloudFront, y entre CloudFront y su origen, consulte Protocolos y
cifrados admitidos entre lectores y CloudFront (p. 145).
Métodos HTTP
Si configura CloudFront para procesar todos los métodos de HTTP que admite, CloudFront acepta las
siguientes solicitudes de los lectores y las reenvía al origen personalizado:
• DELETE
• GET
• HEAD
• OPTIONS
• PATCH
• POST
• PUT
CloudFront siempre almacena en caché las respuestas a las solicitudes GET y HEAD. También puede
configurar CloudFront para almacenar en caché las respuestas a solicitudes OPTIONS. CloudFront no
almacena en caché las respuestas a las solicitudes que utilizan los otros métodos.
Para obtener más información acerca de la configuración para que su origen personalizado procese estos
métodos, consulte la documentación de su origen.
Important
Si configura CloudFront para aceptar y reenviar al origen todos los métodos HTTP que admite
CloudFront, configure su servidor de origen para administrar todos los métodos. Por ejemplo, si
configura CloudFront para aceptar y reenviar estos métodos porque desea utilizar POST, debe
configurar también su servidor de origen para administrar las solicitudes DELETE adecuadamente,
308
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado
de forma que los lectores no puedan eliminar los recursos que no desee que eliminen. Para
obtener más información, consulte la documentación de su servidor HTTP.
Puede configurar CloudFront para almacenar en caché los objetos en función de los valores de los
encabezados Date y User-Agent, pero no lo recomendamos. Estos encabezados tienen muchos
valores posibles y el almacenamiento en caché en función de sus valores podría hacer que CloudFront
reenvíe una cantidad de solicitudes significativamente mayor a su origen.
Para obtener más información acerca del almacenamiento en caché en función de valores de encabezado,
consulte Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 280).
309
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado
310
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado
311
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado
Versión de HTTP
CloudFront reenvía las solicitudes a su origen personalizado mediante HTTP/1.1.
CloudFront crea una URL a partir de la solicitud. La longitud máxima de esta URL es de 8 192 bytes.
Si una solicitud o una URL supera estos máximos, CloudFront devuelve el código de estado HTTP 413
(entidad de solicitud demasiado grande), al lector y, a continuación, interrumpe la conexión TCP con el
lector.
312
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado
Asociación de OCSP
Cuando un lector envía una solicitud de un objeto HTTPS, CloudFront o el lector deben confirmar con la
autoridad de certificación (CA) que el certificado SSL del dominio no se ha revocado. La asociación de
OCSP agiliza la validación de certificados al permitir a CloudFront validar el certificado y almacenar en
caché la respuesta de la CA, por lo que el cliente no tiene por qué validar el certificado directamente con la
CA.
Conexiones persistentes
Cuando CloudFront obtiene una respuesta de su origen, intenta mantener la conexión durante varios
segundos en caso de que otra solicitud llegue durante ese periodo. Garantizar una conexión persistente
ahorra el tiempo necesario para restablecer la conexión TCP y realizar otro protocolo de enlace TLS para
solicitudes posteriores.
Para obtener más información, incluido el modo de configurar la duración de las conexiones persistentes,
consulte Tiempo de conexión persistente del origen (p. 52) en la sección Valores que deben especificarse
al crear o actualizar una distribución (p. 43).
Protocolos
CloudFront reenvía solicitudes HTTP o HTTPS al servidor de origen en función de lo siguiente:
Si especifica HTTP Only (Solo HTTP) o HTTPS Only (Solo HTTPS), CloudFront reenvía las solicitudes al
servidor de origen mediante el protocolo especificado, independientemente del protocolo de la solicitud del
lector.
Si especifica Match Viewer (Coincidir con lector), CloudFront reenvía las solicitudes al servidor de origen
mediante el protocolo especificado en la solicitud del lector. Tenga en cuenta que CloudFront almacena en
caché el objeto solo una vez, incluso si los lectores realizan solicitudes a través de los protocolos HTTP y
HTTPS.
Important
Si CloudFront reenvía una solicitud al origen mediante el protocolo HTTPS, y si el servidor de
origen devuelve un certificado no válido o autofirmado, CloudFront interrumpe la conexión TCP.
Para obtener más información acerca de cómo actualizar una distribución desde la consola de CloudFront,
consulte Actualización de una distribución (p. 71). Para obtener información acerca de cómo actualizar
313
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado
Cadenas de consulta
Puede configurar si CloudFront reenvía parámetros de cadenas de consulta a su origen. Para obtener más
información, consulte Almacenamiento en caché de contenido en función de parámetros de cadenas de
consulta (p. 274).
Origin connection attempts (Intentos de conexión de origen) es el número de veces que CloudFront intenta
conectarse al origen.
Juntos, estos parámetros determinan cuánto tiempo intenta CloudFront conectarse al origen antes de
realizar una conmutación al origen secundario (en el caso de un grupo de orígenes) o devolver una
respuesta de error al lector. De forma predeterminada, CloudFront espera hasta 30 segundos (3 intentos
de 10 segundos cada uno) antes de intentar conectarse al origen secundario o devolver una respuesta de
error. Puede reducir este tiempo si especifica menos intentos, un tiempo de espera de conexión más corto
o ambas opciones.
Para obtener más información, consulte Control de los tiempos de espera de origen y los intentos (p. 266).
• El periodo de tiempo, en segundos, que CloudFront espera una respuesta después de enviar una
solicitud al origen.
• El periodo de tiempo, en segundos, que CloudFront espera después de recibir un paquete de una
respuesta del origen y antes de recibir el paquete siguiente.
• Solicitudes GET y HEAD: si el origen no responde o deja de responder durante el tiempo de espera de
la respuesta, CloudFront interrumpe la conexión. Si el número especificado de intentos de conexión de
origen (p. 48) es superior a 1, CloudFront intenta obtener de nuevo una respuesta completa. CloudFront
lo intenta hasta tres veces, según lo determinado por el valor de la opciónOrigin connection attempts
(Intentos de conexión de origen). Si el origen no responde en el último intento, CloudFront no vuelve a
intentarlo hasta que recibe una nueva solicitud de contenido en el mismo origen.
• Solicitudes DELETE, OPTIONS, PATCH, PUT y POST: si el origen no responde en 30 segundos,
CloudFront interrumpe la conexión y no vuelve a intentar ponerse en contacto con el origen. El cliente
puede volver a enviar la solicitud en caso de que sea necesario.
Para obtener más información, incluido el modo de configurar el tiempo de espera de la respuesta del
origen, consulte Tiempo de espera de respuesta del origen (p. 51).
314
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa las respuestas
desde el servidor de origen personalizado
Si hay un pico de tráfico (es decir, si llegan solicitudes adicionales del mismo objeto a la ubicación de
borde antes de que el origen responda a la primera solicitud), CloudFront se pone en pausa brevemente
antes de reenviar las solicitudes adicionales del objeto a su origen. La respuesta a la primera solicitud
suele llegar a la ubicación de borde de CloudFront antes que la respuesta a las solicitudes posteriores.
Esta breve pausa ayuda a reducir la carga innecesaria en su servidor de origen. Si las solicitudes
adicionales no son idénticas, porque, por ejemplo, ha configurado CloudFront para almacenar en caché en
función de los encabezados de solicitudes o cookies, CloudFront reenvía todas las solicitudes únicas a su
origen.
Encabezado usuario-agente
Si desea que CloudFront almacene en caché diversas versiones de sus objetos según el dispositivo que el
usuario utilice para ver su contenido, le recomendamos que configure CloudFront para que reenvíe uno o
varios de los siguientes encabezados a su origen personalizado:
• CloudFront-Is-Desktop-Viewer
• CloudFront-Is-Mobile-Viewer
• CloudFront-Is-SmartTV-Viewer
• CloudFront-Is-Tablet-Viewer
En función del valor del encabezado User-Agent, CloudFront establece el valor de estos encabezados
en true o false antes de reenviar la solicitud al origen. Si un dispositivo entra en más de una categoría,
más de un valor podría ser true. Por ejemplo, en el caso de algunas tabletas, CloudFront podría
establecer tanto CloudFront-Is-Mobile-Viewer como CloudFront-Is-Tablet-Viewer en true.
Para obtener más información acerca de la configuración de CloudFront para almacenar en caché en
función de los encabezados de solicitud, consulte Almacenamiento en caché de contenido en función de
encabezados de solicitud (p. 280).
Puede configurar CloudFront para almacenar en caché los objetos en función de los valores del
encabezado User-Agent, pero no lo recomendamos. El encabezado User-Agent tiene muchos valores
posibles y el almacenamiento en caché en función de esos valores podría hacer que CloudFront reenvíe
una cantidad de solicitudes significativamente mayor a su origen.
Si no configura CloudFront para almacenar en caché los objetos en función de los valores del encabezado
User-Agent, CloudFront agrega un encabezado User-Agent con el siguiente valor antes de reenviar
una solicitud al origen:
Temas
• Respuestas de 100-continue (p. 316)
• Almacenamiento en caché (p. 316)
• Solicitudes canceladas (p. 316)
315
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa las respuestas
desde el servidor de origen personalizado
Respuestas de 100-continue
Su origen no puede enviar más de una respuesta 100-Continue a CloudFront. Después de la primera
respuesta 100-Continue, CloudFront espera una respuesta HTTP 200 OK. Si el origen envía otra respuesta
100-Continue después de la primera, CloudFront devolverá un error.
Almacenamiento en caché
• Asegúrese de que el servidor de origen establece valores válidos y precisos para los campos de
encabezado Date y Last-Modified.
• Si las solicitudes de los espectadores incluyen los campos de encabezado de solicitud If-Match o
If-None-Match, defina el campo de encabezado de respuesta ETag. Si no especifica un valor ETag,
CloudFront pasa por alto los encabezados If-Match o If-None-Match posteriores.
• CloudFront normalmente respeta un encabezado Cache-Control: no-cache en la respuesta
del origen. Para ver una excepción, consulte Solicitudes simultáneas del mismo objeto (picos de
tráfico) (p. 314).
Solicitudes canceladas
Si un objeto no está en la caché perimetral y un lector termina una sesión (por ejemplo, cierra un
navegador) después de que CloudFront obtiene el objeto solicitado del origen, pero antes de que pueda
entregarlo, CloudFront no almacena el objeto en la caché de la ubicación de borde.
Negociación de contenido
Si el origen devuelve Vary:* en la respuesta y si el valor de Minimum TTL (TTL mínimo) para el
comportamiento de la caché correspondiente es 0, CloudFront almacena en caché el objeto, pero
igualmente reenvía cada solicitud posterior del objeto al origen para confirmar que la caché contiene la
última versión de dicho objeto. CloudFront no incluye encabezados condicionales, como If-None-Match
o If-Modified-Since. Por tanto, el origen devuelve el objeto a CloudFront como respuesta a cada
solicitud.
Si el origen devuelve Vary:* en la respuesta y si el valor de Minimum TTL (TTL mínimo) para
el comportamiento de la caché correspondiente es cualquier otro valor, CloudFront procesa el
encabezado Vary tal y como se describe en Encabezados de respuesta HTTP que CloudFront elimina o
reemplaza (p. 317).
Cookies
Si habilita cookies para un comportamiento de la caché y si el origen devuelve las cookies con un objeto,
CloudFront almacena en la caché tanto el objeto como las cookies. Tenga en cuenta que este reduce
316
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa las respuestas
desde el servidor de origen personalizado
la capacidad de almacenamiento en caché para un objeto. Para obtener más información, consulte
Almacenamiento en caché de contenido en función de cookies (p. 277).
• Encabezado Content-Length: CloudFront devuelve el objeto al lector mientras lo obtiene del origen.
Sin embargo, si el valor del encabezado Content-Length no coincide con el tamaño del objeto,
CloudFront no lo almacena en caché.
• Transfer-Encoding: Chunked: CloudFront devuelve el objeto al lector mientras lo obtiene del origen. Sin
embargo, si la respuesta fragmentada no está completa, CloudFront no almacena el objeto en la caché.
• Encabezado No Content-Length: CloudFront devuelve el objeto al lector y lo almacena en la caché,
pero el objeto puede no estar completo. Sin un encabezado Content-Length, CloudFront no puede
determinar si la conexión TCP se interrumpió de forma accidental o intencionadamente.
Le recomendamos que configure su servidor HTTP para agregar un encabezado Content-Length y así
evitar que CloudFront almacene en caché objetos parciales.
• Set-Cookie: si configura CloudFront para reenviar cookies, reenviará el campo del encabezado Set-
Cookie a los clientes. Para obtener más información, consulte Almacenamiento en caché de contenido
en función de cookies (p. 277).
• Trailer
• Transfer-Encoding: si el origen devuelve este campo de encabezado, CloudFront establece el valor
en chunked antes de devolver la respuesta al lector.
• Upgrade
• Vary: tenga en cuenta lo siguiente:
• Si configura CloudFront para reenviar cualquiera de los encabezados específicos del dispositivo al
origen (CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer, CloudFront-
Is-SmartTV-Viewer, CloudFront-Is-Tablet-Viewer) y configura su origen para devolver
Vary:User-Agent a CloudFront, CloudFront devuelve Vary:User-Agent al lector. Para obtener
más información, consulte Configuración del almacenamiento en caché en función del tipo de
dispositivo (p. 282).
• Si configura su origen para incluir bien Accept-Encoding o Cookie en el encabezado Vary,
CloudFront incluye los valores en la respuesta al lector.
• Si configura CloudFront para que reenvíe una lista blanca de encabezados al origen y, además,
configura el origen para devolver los nombres de encabezado a CloudFront en el encabezado Vary
(por ejemplo, Vary:Accept-Charset,Accept-Language), CloudFront devuelve el encabezado
Vary con ese valor al lector.
• Para obtener más información acerca de cómo CloudFront procesa un valor de * en el encabezado
Vary, consulte Negociación de contenido (p. 316).
• Si configura su origen para incluir cualquier otro valor en el encabezado Vary, CloudFront eliminará
dichos valores antes de devolver la respuesta al lector.
• Via: CloudFront establece el valor en lo siguiente en la respuesta al lector:
317
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa las respuestas
desde el servidor de origen personalizado
Por ejemplo, si el cliente realiza una solicitud a través de HTTP/1.1, el valor es algo parecido a lo
siguiente:
Origen no disponible
Si el servidor de origen no está disponible y CloudFront obtiene una solicitud de un objeto que se
encuentra en la caché perimetral, pero que ha caducado (por ejemplo, porque el periodo especificado
en la política Cache-Control max-age ya ha transcurrido), CloudFront ofrece esa versión caducada
del objeto o una página de error personalizada. Para obtener más información sobre el comportamiento
de CloudFront cuando se han configurado páginas de error personalizadas, consulte Cómo CloudFront
procesa los errores cuando las páginas de error personalizadas están configuradas (p. 324).
En algunos casos, un objeto poco solicitado es desalojado y deja de estar disponible en la caché
perimetral. CloudFront no puede servir un objeto que haya sido desalojado.
Redireccionamientos
Si cambia la ubicación de un objeto en el servidor de origen, puede configurar su servidor web para
redirigir las solicitudes a la nueva ubicación. Después de configurar el redireccionamiento, la primera vez
que un lector envía una solicitud del objeto, CloudFront envía la solicitud al origen y el origen responde
con un redireccionamiento (por ejemplo, 302 Moved Temporarily). CloudFront almacena en caché el
redireccionamiento y lo devuelve al lector. CloudFront no sigue el redireccionamiento.
Puede configurar su servidor web para redirigir las solicitudes a una de las siguientes ubicaciones:
• La nueva URL del objeto en el servidor de origen. Cuando el lector sigue el redireccionamiento a la
nueva URL, el lector elude CloudFront y va directamente al origen. Por tal motivo, le recomendamos que
no redirija las solicitudes a la nueva URL del objeto en el origen.
• La nueva URL de CloudFront para el objeto. Cuando el lector envía la solicitud que contiene la nueva
URL de CloudFront, CloudFront obtiene el objeto de la nueva ubicación de su origen, lo almacena en
la caché de la ubicación de borde y lo devuelve al lector. Las solicitudes posteriores del objeto serán
atendidas por la ubicación de borde. Esto evita la latencia y carga asociadas a la solicitud del objeto al
origen por parte de los espectadores. Sin embargo, cada nueva solicitud del objeto implicará cargos por
concepto de dos solicitudes a CloudFront.
Codificación de transferencia
CloudFront admite únicamente el valor chunked del encabezado Transfer-Encoding. Si el origen
devuelve Transfer-Encoding: chunked, CloudFront devuelve el objeto al cliente tan pronto como lo
recibe la ubicación de borde y lo almacena en caché en formato fragmentado para solicitudes posteriores.
Si un lector envía una solicitud Range GET y el origen devuelve Transfer-Encoding: chunked,
CloudFront devuelve el objeto entero al lector en lugar del intervalo solicitado.
318
Amazon CloudFront Guía para desarrolladores
Comportamiento de solicitudes y
respuestas para grupos de origen
El comportamiento de solicitud y respuesta para el origen principal es igual que un origen que no es un
grupo de orígenes. Para obtener más información, consulte Comportamiento de solicitudes y respuestas
para orígenes de Amazon S3 (p. 298) y Comportamiento de solicitudes y respuestas para orígenes
personalizados (p. 305).
• Código de estado HTTP 2xx (éxito): CloudFront almacena en caché el archivo y lo devuelve al lector.
• Código de estado HTTP 3xx (redirección): CloudFront devuelve el código de estado al lector.
• Código de estado HTTP 4xx o 5xx (error de cliente/servidor): si el código de estado devuelto se ha
configurado para la conmutación por error, CloudFront envía la misma solicitud al origen secundario del
grupo de orígenes.
• Código de estado HTTP 4xx o 5xx (error de cliente/servidor): si el código de estado devuelto no se ha
configurado para conmutación por error, CloudFront devuelve el error al lector.
CloudFront conmuta por error al origen secundario solo cuando el método HTTP de la solicitud del lector
es GET, HEAD u OPTIONS. CloudFront no realiza una conmutación por error cuando el lector envía un
método HTTP diferente (por ejemplo POST, PUT, etc.).
Para obtener más información acerca de los grupos de orígenes, consulte Optimización de alta
disponibilidad con conmutación por error de origen de CloudFront (p. 263).
Temas
• Casos de uso de encabezados personalizados de origen (p. 320)
• Configurar CloudFront para agregar encabezados personalizados a solicitudes de origen (p. 320)
• Encabezados personalizados que CloudFront no puede agregar a solicitudes de origen (p. 321)
• Configuración de CloudFront para reenviar el encabezado Authorization (p. 321)
319
Amazon CloudFront Guía para desarrolladores
Casos de uso de encabezados personalizados de origen
Puede identificar las solicitudes que su origen recibe de CloudFront. Esto resulta útil si desea saber
si los usuarios están eludiendo CloudFront o si está utilizando más de una CDN y desea obtener
información acerca de qué solicitudes provienen de cada CDN.
Note
Si utiliza un origen de Amazon S3 y habilita el registro de acceso del servidor de Amazon S3,
los registros no incluyen información del encabezado.
Determinar qué solicitudes provienen de una distribución en concreto
Si configura más de una distribución de CloudFront para que utilice el mismo origen, puede agregar
distintos encabezados personalizados a cada distribución. A continuación, puede utilizar los registros
de su origen para determinar qué solicitudes provenían de cada distribución de CloudFront.
Habilitar el uso compartido de recursos entre orígenes (CORS)
Si algunos de sus lectores no admite el uso compartido de recursos entre orígenes (CORS), puede
configurar CloudFront para que agregue siempre el encabezado Origin a las solicitudes que envía
al origen. A continuación, puede configurar su origen para que devuelva el encabezado Access-
Control-Allow-Origin de cada solicitud. También debe configurar CloudFront para que respete la
configuración de CORS (p. 282).
Controlar el acceso al contenido
• Consola de CloudFront: al crear o actualizar una distribución, especifique los nombres y los valores
de encabezado en la opción Origin Custom Headers (Encabezados personalizados de origen).
Para obtener más información, consulte Creación de una distribución (p. 42) o Actualización de una
distribución (p. 71).
• API de CloudFront: para cada origen al que desee agregar encabezados personalizados, especifique los
nombres y valores del encabezado en el campo CustomHeaders dentro de Origin. Para obtener más
información, consulte CreateDistribution o UpdateDistribution.
Si los nombres y valores del encabezado que especifica ya no están presentes en la solicitud del lector,
CloudFront los agrega a la solicitud de origen. Si hay un encabezado, CloudFront sobrescribe el valor de
encabezado antes de reenviar la solicitud al origen.
320
Amazon CloudFront Guía para desarrolladores
Encabezados personalizados que CloudFront
no puede agregar a solicitudes de origen
Para ver las cuotas (antes denominadas límites) que se aplican a los encabezados personalizados de
origen, consulte Cuotas en encabezados personalizados (p. 522).
• Cache-Control
• Connection
• Content-Length
• Cookie
• Host
• If-Match
• If-Modified-Since
• If-None-Match
• If-Range
• If-Unmodified-Since
• Max-Forwards
• Pragma
• Proxy-Authorization
• Proxy-Connection
• Range
• Request-Range
• TE
• Trailer
• Transfer-Encoding
• Upgrade
• Via
• Encabezados que comiencen por X-Amz-
• Encabezados que comiencen por X-Edge-
• X-Real-Ip
• Agregue el encabezado Authorization a la clave de caché mediante una política de caché. Todos
los encabezados de la clave de caché se incluyen automáticamente en las solicitudes de origen. Para
obtener más información, consulte Control de la clave de caché (p. 93).
• Utilice una política de solicitud de origen que reenvíe todos los encabezados del lector al origen.
No puede reenviar el encabezado Authorization individualmente en una política de solicitud de
321
Amazon CloudFront Guía para desarrolladores
Cómo se procesan los Range GET
origen, pero cuando reenvíe todos los encabezados del lector CloudFront incluye el encabezado
Authorization en las solicitudes de lector. CloudFront proporciona una política de solicitud de origen
administrada para este caso de uso, denominada Managed-AllViewer. Para obtener más información,
consulte Uso de las políticas de solicitud de origen administrada (p. 111).
Cuando CloudFront recibe una solicitud Range GET, revisa la caché de la ubicación de borde que recibe
la solicitud. Si la caché de dicha ubicación de borde ya contiene todo el objeto o la parte solicitada,
CloudFront envía inmediatamente el intervalo solicitado desde la caché.
Si la caché no contiene el intervalo solicitado, CloudFront reenvía la solicitud al origen. (Para optimizar el
rendimiento, CloudFront puede solicitar un intervalo superior al solicitado en Range GET). Lo que ocurre a
continuación depende de si el origen admite solicitudes Range GET:
• Si el origen admite solicitudes Range GET: devuelve el intervalo solicitado. CloudFront sirve el intervalo
solicitado y lo almacena en la caché para futuras solicitudes. (Amazon S3 admite solicitudes Range GET
al igual que algunos servidores HTTP, por ejemplo, Apache y IIS. Para saber si su servidor HTTP admite
dichas solicitudes, consulte su documentación).
• Si el origen no admite solicitudes Range GET: devuelve todo el objeto. CloudFront sirve la solicitud
actual enviando todo el objeto almacenándolo también en caché para futuras solicitudes. Después de
que CloudFront almacene en caché todo el objeto en una caché perimetral, responde a las nuevas
solicitudes Range GET enviando el intervalo solicitado.
En cualquier caso, CloudFront comienza a enviar el intervalo o el objeto solicitado al usuario final en
cuanto llega el primer byte del origen.
Note
Por lo general, CloudFront sigue la especificación RFC en el encabezado Range. Sin embargo, si sus
encabezados Range no cumplen con los siguientes requisitos, CloudFront devuelve el código de estado
HTTP 200 con el objeto entero en lugar del código de estado 206 con los intervalos especificados:
• Los rangos deben publicarse en orden ascendente. Por ejemplo, 100-200,300-400 es válido;
300-400,100-200 no es válido.
• Los rangos no deben superponerse. Por ejemplo, 100-200,150-250 no es válido.
• Todas las especificaciones de los rangos deben ser válidas. Por ejemplo, no puede especificar valores
negativos como parte de un rango.
Para obtener más información acerca del encabezado de solicitud Range, consulte "Section 14.35
Range" en Hypertext Transfer Protocol -- HTTP/1.1, en http://www.w3.org/Protocols/rfc2616/rfc2616-
sec14.html#sec14.35.
322
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa los códigos
de estado HTTP 3xx desde el origen
• La dirección URL del objeto ha cambiado (por ejemplo, códigos de estado 301, 302, 307 o 308)
• El objeto no ha cambiado desde la última vez que CloudFront lo solicitó (código de estado 304)
CloudFront almacena en caché las respuestas 3xx de acuerdo con la configuración de su distribución de
CloudFront y los encabezados de la respuesta. Para obtener más información, consulte Administración de
cuánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).
Si su origen devuelve un código de estado de redireccionamiento (por ejemplo, 301 o 307), CloudFront
no sigue el redireccionamiento. CloudFront pasa la respuesta 301 o 307 al lector, que puede seguir el
redireccionamiento enviando una nueva solicitud.
CloudFront siempre almacena en caché las respuestas a las solicitudes GET y HEAD. También puede
configurar CloudFront para almacenar en caché las respuestas a solicitudes OPTIONS. CloudFront no
almacena en caché las respuestas a las solicitudes que utilizan los otros métodos.
323
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa los errores cuando las
páginas de error personalizadas están configuradas
CloudFront sigue ofreciendo contenido almacenado en caché. Para obtener más información, consulte
Origen no disponible (p. 318).
Si ha activado el registro, CloudFront escribe los resultados en registros independientemente del código de
estado HTTP.
Para obtener más información acerca de las características y las opciones relacionadas con el mensaje de
error devuelto por CloudFront, consulte lo siguiente:
• Para obtener más información acerca de la configuración de páginas de error personalizadas desde
la consola de CloudFront, consulte Páginas de error personalizadas y almacenamiento de errores en
caché (p. 67).
• Para obtener información acerca del TTL mínimo de almacenamiento de errores en la caché
desde la consola de CloudFront, consulte TTL mínimo de almacenamiento de errores en caché
(segundos) (p. 68).
• Para obtener una lista de los códigos de estado HTTP que CloudFront almacena en caché, consulte
Códigos de estado HTTP 4xx y 5xx que CloudFront almacena en caché (p. 327).
1. En la caché perimetral de CloudFront que recibió la solicitud del lector, CloudFront comprueba la
configuración de la distribución y obtiene la ruta de la página de error personalizada que corresponde al
código de estado devuelto por su origen.
2. CloudFront comprueba el primer comportamiento de la caché de la distribución que tenga un patrón de
ruta que coincida con la ruta de la página de error personalizada.
3. La ubicación de borde de CloudFront envía una solicitud de la página de error personalizada al origen
especificado en el comportamiento de la caché.
324
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa los errores cuando las
páginas de error personalizadas no están configuradas
1. Si el origen devuelve un código de estado 5xx, CloudFront sirve el objeto a pesar de que haya
caducado. Durante el TTL mínimo de almacenamiento de errores en caché, CloudFront continúa
respondiendo a las solicitudes de los lectores ofreciendo el objeto de la caché perimetral.
Si el origen devuelve un código de estado 4xx, CloudFront devuelve el código de estado al lector en
lugar del objeto solicitado.
2. Una vez finalizado el TTL mínimo de almacenamiento de errores en caché, CloudFront intenta obtener
el objeto solicitado una vez más reenviando otra solicitud al origen. Tenga en cuenta que si el objeto no
se solicita con frecuencia, CloudFront podría desalojarlo de la caché perimetral mientras el servidor de
origen sigue devolviendo respuestas 5xx. Para obtener más información acerca de por cuánto tiempo
pueden permanecer los objetos en las cachés perimetrales de CloudFront, consulte Administración de
cuánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).
325
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa los errores cuando las
páginas de error personalizadas no están configuradas
• Su origen devuelve un código de estado HTTP 4xx o 5xx y se cumple alguna de las condiciones
siguientes:
• Su origen devuelve un código de estado HTTP 5xx en lugar de devolver un código 304 (No
modificado) o una versión actualizada del objeto.
• Su origen devuelve un código de estado HTTP 4xx que no está restringido por un encabezado de
control de la caché y está incluido en la siguiente lista de códigos de estado: Códigos de estado HTTP
4xx y 5xx que CloudFront siempre almacena en caché (p. 327)
• Su origen devuelve un código de estado HTTP 4xx sin un encabezado Cache-Control max-age o
un encabezado Cache-Control s-maxage y el código de estado está incluido en la siguiente lista
de códigos de estado: Control Códigos de estado HTTP 4xx que CloudFront almacena en caché en
función de los encabezados de control de caché (p. 327).
1. CloudFront devuelve un código de estado 4xx o 5xx al lector y también almacena el código de estado en
la caché perimetral que recibió la solicitud durante el tiempo máximo siguiente:
• La cantidad de tiempo especificado por el TTL mínimo de almacenamiento en caché de errores (10
segundos de forma predeterminada)
• El periodo de tiempo especificado por un encabezado Cache-Control max-age o un encabezado
Cache-Control s-maxage que devuelve el origen cuando la primera solicitud generó el error
2. Para la duración del tiempo de almacenamiento en caché (determinado en el paso 1), CloudFront
responde a las solicitudes de los lectores posteriores del mismo objeto con el código de estado
almacenado en caché 4xx o 5xx.
3. Una vez transcurrido el tiempo de almacenamiento en caché (determinado en el paso 1), CloudFront
intenta de nuevo obtener el objeto solicitado reenviando otra solicitud a su origen. CloudFront continúa
intentándolo a intervalos especificados por el TTL mínimo de almacenamiento de errores en caché.
1. Si el origen devuelve un código de error 5xx, CloudFront sirve el objeto a pesar de que haya caducado.
Durante la vigencia del TTL mínimo de almacenamiento en caché de errores (10 segundos de forma
predeterminada), CloudFront continúa respondiendo a las solicitudes de los lectores sirviendo el objeto
de la caché perimetral.
Si el origen devuelve un código de estado 4xx, CloudFront devuelve el código de estado al lector en
lugar del objeto solicitado.
2. Una vez finalizado el TTL mínimo de almacenamiento de errores en caché, CloudFront intenta obtener
el objeto solicitado una vez más reenviando otra solicitud al origen. Tenga en cuenta que si el objeto no
se solicita con frecuencia, CloudFront podría desalojarlo de la caché perimetral mientras el servidor de
origen sigue devolviendo respuestas 5xx. Para obtener más información acerca de por cuánto tiempo
pueden permanecer los objetos en las cachés perimetrales de CloudFront, consulte Administración de
cuánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).
326
Amazon CloudFront Guía para desarrolladores
Códigos de estado HTTP 4xx y 5xx
que CloudFront almacena en caché
404 no encontrado
501 No implementado
403 Prohibido
327
Amazon CloudFront Guía para desarrolladores
Acerca del vídeo en streaming: vídeo
bajo demanda y streaming en directo
Temas
• Acerca del vídeo en streaming: vídeo bajo demanda y streaming en directo (p. 328)
• Distribución de vídeo bajo demanda (VOD) con CloudFront (p. 329)
• Distribución de streaming de vídeo en directo con CloudFront y AWS Media Services (p. 331)
Un vez que el vídeo esté empaquetado en los formatos adecuados, puede almacenarlo en un servidor
o en un bucket de Amazon S3 y, a continuación, distribuirlo con CloudFront a medida que lo soliciten
los lectores.
Streaming de vídeo en directo
Una vez codificado el vídeo, puede almacenarlo en AWS Elemental MediaStore o convertirlo en
diferentes formatos de entrega mediante AWS Elemental MediaPackage. Con estos orígenes, puede
configurar una distribución de CloudFront para distribuir el contenido. Si desea conocer los pasos
específicos y obtener orientación para crear distribuciones que funcionen con estos servicios, consulte
Distribución de vídeo con AWS Elemental MediaStore como origen (p. 331) y Servir vídeo en directo
formateado con AWS Elemental MediaPackage (p. 333).
328
Amazon CloudFront Guía para desarrolladores
Distribución de vídeo bajo demanda
Wowza y Unified Streaming también proporcionan herramientas que puede utilizar para transmitir vídeo en
streaming con CloudFront. Para obtener más información acerca de cómo utilizar Wowza con CloudFront,
consulte el artículo sobre cómo llevar su licencia de Wowza Streaming Engine a streaming HTTP en
directo con CloudFront en el sitio web de documentación de Wowza. Para obtener información sobre el
uso de Unified Streaming con CloudFront para la transmisión en streaming de VOD, consulte Amazon
CloudFront en el sitio web de documentación de Unified Streaming.
1. Cargue su contenido a un bucket de Amazon S3. Para obtener más información sobre cómo trabajar
con Amazon S3, consulte la Guía para desarrolladores de Amazon Simple Storage Service.
2. Transcodifique su contenido mediante un trabajo de MediaConvert. El trabajo convierte el vídeo a
los formatos requeridos por los reproductores que utilizan los espectadores. También puede utilizar
el trabajo para crear recursos con diferentes resoluciones y velocidades de bits. Estos activos se
utilizan para la transmisión en streaming a velocidad de bits adaptable (ABR), que ajusta la calidad de
visualización en función del ancho de banda disponible del lector. MediaConvert almacena el vídeo
transcodificado en un bucket de S3.
3. Distribuya su contenido convertido mediante una distribución de CloudFront. Los espectadores
pueden ver el contenido en cualquier dispositivo y en cualquier momento.
Tip
Puede explorar cómo utilizar una plantilla de AWS CloudFormation para implementar una
solución de AWS de VOD junto con todos los componentes asociados. Para ver los pasos que se
requieren para utilizar la plantilla, consulte Implementación automatizada en la guía sobre vídeo
bajo demanda en AWS.
• Especifique un servidor web que ejecute Microsoft IIS y sea compatible con Smooth Streaming como
origen de la distribución.
• Habilite Smooth Streaming en los comportamientos de la caché de una distribución de CloudFront.
Debido a que puede utilizar varios comportamientos de la caché en una distribución, puede utilizar una
distribución para archivos multimedia de Smooth Streaming y también para otros contenidos.
329
Amazon CloudFront Guía para desarrolladores
Configuración de vídeo bajo demanda
para Microsoft Smooth Streaming
Important
Si especifica un servidor web que ejecuta Microsoft IIS como origen, no habilite Smooth Streaming
en los comportamientos de caché de la distribución de CloudFront. CloudFront no puede usar
un servidor Microsoft IIS como origen si habilita Smooth Streaming como comportamiento de la
caché.
Si habilita Smooth Streaming en un comportamiento de la caché (es decir, no tiene un servidor que ejecute
Microsoft IIS), tenga en cuenta lo siguiente:
Para obtener más información acerca de los clientes de Smooth Streaming, consulte Smooth Streaming en
el sitio web de documentación de Microsoft.
Para utilizar CloudFront con el fin de distribuir archivos de Smooth Streaming cuando el origen no
es un servidor web de Microsoft IIS
• Si está utilizando la consola de CloudFront: al crear o actualizar una distribución, habilite Smooth
Streaming en uno o varios de los comportamientos de la caché de la distribución.
• Si está utilizando la API de CloudFront: agregue el elemento SmoothStreaming al tipo complejo
DistributionConfig para uno o más de los comportamientos de la caché de la distribución.
3. Cargue los archivos de Smooth Streaming en su origen.
4. Cree un archivo clientaccesspolicy.xml o crossdomainpolicy.xml y añádalo
a una ubicación accesible en la raíz de su distribución, por ejemplo, https://
d111111abcdef8.cloudfront.net/clientaccesspolicy.xml. A continuación se muestra un
ejemplo de política:
Para obtener más información, consulte la sección sobre cómo hacer que un servicio esté disponible
en los límites del dominio en el sitio web de Microsoft Developer Network.
5. Para los enlaces de la aplicación (por ejemplo, un reproductor multimedia), especifique la dirección
URL del archivo multimedia en el formato siguiente:
330
Amazon CloudFront Guía para desarrolladores
Distribución de streaming de video en directo
https://d111111abcdef8.cloudfront.net/video/presentation.ism/Manifest
Utilice AWS Elemental MediaLive para codificar transmisiones de vídeo en directo en tiempo real. Para
codificar una transmisión en streaming de vídeo de gran tamaño, MediaLive la comprime en versiones más
pequeñas (la codifica) que se pueden distribuir a los lectores.
Después de comprimir una transmisión en streaming de vídeo en directo, puede utilizar cualquiera de las
dos opciones principales siguientes para preparar y distribuir el contenido:
Una vez que haya configurado el origen mediante una de estas opciones, ya puede distribuir streaming de
vídeo en directo a los lectores con CloudFront.
Tip
Puede obtener información sobre una solución de AWS que implementa automáticamente
servicios para crear una experiencia de visualización en tiempo real de alta disponibilidad. Si
desea ver los pasos para implementar automáticamente esta solución, consulte Implementación
automatizada de streaming en directo.
Temas
• Distribución de vídeo con AWS Elemental MediaStore como origen (p. 331)
• Servir vídeo en directo formateado con AWS Elemental MediaPackage (p. 333)
Para empezar, conceda a CloudFront acceso a su contenedor de MediaStore. A continuación, cree una
distribución de CloudFront y configúrela para que funcione con MediaStore.
331
Amazon CloudFront Guía para desarrolladores
Distribución de vídeo con AWS
Elemental MediaStore como origen
1. Siga el procedimiento que se describe en Cómo permitir que Amazon CloudFront obtenga acceso a
un contenedor de AWS Elemental MediaStore, y, a continuación, vuelva a estos pasos para crear su
distribución.
2. Cree una distribución con la siguiente configuración:
Elija Redirect HTTP to HTTPS (Redireccionamiento de HTTP a HTTPS). Para obtener más
información, consulte Viewer Protocol Policy (p. 55).
Almacenamiento de objetos en caché
Si el codificador que utiliza no puede establecer controles de caché en todos los objetos, elija
Customize (Personalizar). Si el codificador puede establecer controles de caché en todos los
objetos, elija Origin Cache Headers (Encabezados de caché de origen).
Tiempo de vida mínimo, tiempo de vida máximo y tiempo de vida predeterminado
Para el resto de la configuración, puede establecer valores específicos en función de otros requisitos
técnicos o de las necesidades de su empresa. Para ver una lista de todas las opciones de las
distribuciones e información sobre su configuración, consulte Valores que deben especificarse al crear
o actualizar una distribución (p. 43).
3. Una vez que CloudFront haya aprovisionado la distribución, edite el comportamiento de la caché para
configurar el intercambio de recursos entre orígenes (CORS) para su origen:
332
Amazon CloudFront Guía para desarrolladores
Servir vídeo en directo formateado
con AWS Elemental MediaPackage
Para obtener más información acerca de CORS, consulte Configurar CloudFront para respetar la
configuración de intercambio de recursos entre orígenes (CORS) en Almacenamiento en caché de
contenido en función de encabezados de solicitud (p. 280).
4. Para los enlaces de su aplicación (por ejemplo, un reproductor multimedia), especifique el nombre del
archivo multimedia en el mismo formato que utiliza para otros objetos que distribuye con CloudFront.
Para crear una distribución de CloudFront para MediaPackage manualmente, siga estos pasos:
Pasos
• Paso 1: Cree y configure una distribución de CloudFront (p. 333)
• Paso 2: Añadir los demás puntos de enlace como orígenes (p. 334)
• Paso 3: Configurar los comportamientos de la caché para todos los puntos de enlace (p. 334)
• Paso 4: Utilice CloudFront para servir el canal de transmisión en directo (p. 336)
El origen donde están el canal de vídeo en directo y los puntos de enlace de MediaPackage. Elija
el campo de texto y, a continuación, en la lista desplegable, elija el canal de MediaPackage para
su vídeo en directo. Puede mapear un canal a varios puntos de enlace de origen.
Si ha creado el canal con otra cuenta de AWS, escriba el valor de la URL de origen en el campo.
El origen debe ser una URL HTTPS.
Para obtener más información, consulte Nombre de dominio de origen (p. 46) en la Valores que
deben especificarse al crear o actualizar una distribución (p. 43).
333
Amazon CloudFront Guía para desarrolladores
Servir vídeo en directo formateado
con AWS Elemental MediaPackage
Ruta de origen
Si ha usado un canal de otra cuenta de AWS en Origin Domain Name (Nombre de dominio de
origen), el campo Origin Path (Ruta de origen) no se rellenará automáticamente. Debe obtener la
ruta de origen correcta de la otra cuenta para poder introducirla manualmente.
Para obtener más información sobre el funcionamiento de una ruta de origen, consulte Ruta de
origen (p. 47) en Valores que deben especificarse al crear o actualizar una distribución (p. 43).
Cuando termine de elegir la otra configuración de distribución, elija Create Distribution (Crear
distribución).
5. Elija la distribución que acaba de crear y, a continuación, elija la pestaña Behaviors
(Comportamientos).
6. Elija el comportamiento de la caché predeterminado y especifique la configuración correcta del
comportamiento de la caché para el canal que eligió para el origen. Más adelante, añadirá uno o
varios orígenes adicionales y editará la configuración de comportamiento de la caché para ellos.
7. Vaya a la página Distribuciones de CloudFront.
8. Espere hasta que el valor de la columna Status (Estado) de la distribución cambie de In Progress (En
curso) a Deployed (Implementado), lo que indicará que CloudFront ha creado la distribución.
334
Amazon CloudFront Guía para desarrolladores
Servir vídeo en directo formateado
con AWS Elemental MediaPackage
formato de video que distribuya. El siguiente procedimiento incluye la información del patrón de ruta que se
utilizará para los formatos Apple HLS, CMAF, DASH y Microsoft Smooth Streaming.
Patrones de ruta
Para un punto de enlace HLS, cree los dos siguientes comportamientos de la caché:
• Para manifiestos principales y secundarios, use *.m3u8.
• Para los segmentos de contenido, use *.ts.
Para un punto de enlace CMAF, cree los dos siguientes comportamientos de la caché:
• Para manifiestos principales y secundarios, use *.m3u8.
• Para los segmentos de contenido, use *.mp4.
Para un punto de enlace DASH, cree los dos siguientes comportamientos de la caché:
• Para el manifiesto principal, use *.mpd.
• Para los segmentos de contenido, use *.mp4.
Para obtener más información sobre cómo mejorar el almacenamiento en caché, consulte
Incrementar la proporción de solicitudes que se atienden directamente desde las cachés de
CloudFront (tasa de aciertos de caché) (p. 252).
Almacenamiento de objetos en caché
Elija Forward all, cache based on whitelist (Reenviar todo y almacenar en caché en función de la
lista blanca).
Lista blanca de cadenas de consulta
Especifique m como parámetro de cadena de consulta que desea que CloudFront utilice como
base para el almacenamiento en caché. La respuesta de MediaPackage siempre incluye la
etiqueta ?m=### para capturar la hora de modificación del punto de enlace. Si el contenido ya se
encuentra en la memoria caché con un valor diferente para esta etiqueta, CloudFront solicita un
nuevo manifiesto en lugar de distribuir la versión en caché.
Para los enlaces de la aplicación (por ejemplo, un reproductor multimedia), especifique la dirección URL
del archivo multimedia en el formato estándar de las URL de CloudFront. Para obtener más información,
consulte Personalización del formato de URL para archivos en CloudFront (p. 117).
336
Amazon CloudFront Guía para desarrolladores
Cuando asocia una distribución de CloudFront con una función de Lambda@Edge, CloudFront intercepta
solicitudes y respuestas en ubicaciones de borde de CloudFront. Puede ejecutar funciones de Lambda
cuando se producen los siguientes eventos de CloudFront:
Existe una gran variedad de usos para el procesamiento con Lambda@Edge. Por ejemplo:
• Una función de Lambda puede inspeccionar las cookies y reescribir URL, a fin de que los usuarios vean
distintas versiones de un sitio para pruebas A/B.
• CloudFront puede devolver diferentes objetos a lectores en función del dispositivo que estén utilizando
comprobando el encabezado User-Agent, que incluye información acerca de los dispositivos. Por
ejemplo, CloudFront puede devolver imágenes diferentes en función del tamaño de las pantallas de
su dispositivo. Del mismo modo, la función podría tener en cuenta el valor del encabezado Referer y
hacer que CloudFront devuelva a bots las imágenes con la menor resolución disponible.
• O bien, podría comprobar las cookies para otros criterios. Por ejemplo, en un sitio web minorista que
vende ropa, si utiliza cookies para indicar el color de chaqueta que eligió un usuario, la función de
Lambda puede cambiar la solicitud para que CloudFront devuelva la imagen de una chaqueta del color
seleccionado.
• Una función de Lambda puede generar respuestas HTTP cuando ocurran eventos de solicitudes al
origen o del lector de CloudFront.
• Una función puede inspeccionar encabezados o tokens de autorización e insertar un encabezado para
controlar el acceso a su contenido antes de que CloudFront reenvíe una solicitud a su origen.
• Una función de Lambda también puede realizar llamadas de red a recursos externos para confirmar
credenciales de usuarios o buscar contenido adicional para personalizar una respuesta.
Para el código de muestra y otros ejemplos, consulte Funciones de ejemplo de Lambda@Edge (p. 387).
Temas
• Primeros pasos para la creación y uso de funciones de Lambda@Edge (p. 338)
• Configuración de permisos y roles de IAM para Lambda@Edge (p. 349)
337
Amazon CloudFront Guía para desarrolladores
Primeros pasos para la creación y
uso de funciones de Lambda@Edge
Cuando esté familiarizado con el funcionamiento de Lambda@Edge y haya creado una función
de Lambda@Edge, puede obtener más información sobre cómo puede utilizar Lambda@Edge
para sus propias soluciones personalizadas. Obtenga más información sobre la creación y
actualización de funciones (p. 355), la estructura de los eventos (p. 372) y la adición de
desencadenadores de CloudFront (p. 359). También puede encontrar más ideas y obtener
ejemplos de código en Funciones de ejemplo de Lambda@Edge (p. 387).
A continuación se muestra información general de cómo crear y usar funciones de Lambda con
CloudFront:
1. En la consola de AWS Lambda, cree una función de Lambda en la región EE. UU. Este (Norte de
Virginia). (Además, puede crear la función mediante programación, por ejemplo, utilizando uno de los
SDK de AWS).
2. Guarde y publique una versión numerada de la función.
Si desea cambiar la función, debe editar la versión $LATEST de la función en la región EE. UU. Este
(Norte de Virginia). A continuación, antes de configurarla para usarla con CloudFront, publique una
nueva versión numerada.
3. Elija la distribución de CloudFront y el comportamiento de caché al que se aplica la función. A
continuación, especifique uno o varios eventos de CloudFront (desencadenadores) que provoquen la
ejecución de la función. Por ejemplo, puede crear un desencadenador para que la función se ejecute
cuando CloudFront reciba una solicitud de un lector.
4. Cuando se crea un desencadenador, Lambda replica la función en las ubicaciones de AWS de todo el
mundo.
338
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla
Temas
• Tutorial: Creación de una función de Lambda@Edge sencilla (p. 339)
En este ejemplo se describen los pasos para crear y configurar una función Lambda@Edge. Seguirá pasos
similares y elegirá entre las mismas opciones cuando cree su propia solución de Lambda@Edge.
Temas
• Paso 1: Inscribirse en una cuenta de AWS (p. 340)
339
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla
¿Es la primera vez que utiliza CloudFront? CloudFront entrega el contenido a través de una red mundial
de ubicaciones de borde. Cuando se configura una función de Lambda con CloudFront, la función puede
personalizar el contenido más cercano a los lectores, lo que mejora el rendimiento. Si no está familiarizado
con CloudFront, antes de realizar el tutorial, dedique unos minutos a leer una breve información general y a
aprender algo acerca de cómo CloudFront almacena el contenido en caché y lo distribuye.
En este ejemplo, creará una distribución de CloudFront que utilice un bucket de Amazon S3 como origen
de la distribución. Si ya dispone de un entorno, puede omitir este paso.
1. Cree un bucket de Amazon S3 con un archivo o dos, como, por ejemplo, archivos de imágenes para
usarlos como contenido de muestra. Puede seguir los pasos que se detallan en Cargar su contenido
en Amazon S3. Asegúrese de que establece permisos para conceder acceso de lectura público a los
objetos del bucket.
2. Cree una distribución de CloudFront y agregue el bucket de S3 como un origen, siguiendo los pasos
que se describen Crear una distribución web de CloudFront. Si ya tiene una distribución, solo es
necesario que añada el bucket como origen para esa distribución.
Tip
¿Es la primera vez que utiliza Lambda o Lambda@Edge? Lambda @Edge le permite utilizar los
desencadenadores de CloudFront para invocar una función de Lambda. Cuando asocia una distribución
de CloudFront con una función de Lambda, CloudFront intercepta solicitudes y respuestas en ubicaciones
340
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla
de borde de CloudFront y ejecuta la función. Las funciones de Lambda pueden mejorar la seguridad o
personalizar la información según la ubicación de los lectores, para mejorar el rendimiento. La función que
se crea en este tutorial actualiza los encabezados de seguridad de una respuesta de CloudFront.
Existen varios pasos que se deben dar al crear una función de Lambda. En este tutorial, se parte de
una plantilla de proyecto para crear la función y, a continuación, se actualiza la función con código
que establece los encabezados de seguridad. Por último, tendrá que agregar e implementar un
desencadenador de CloudFront para que ejecute la función.
1. Inicie sesión en la consola de administración de AWS y abra la consola de AWS Lambda en https://
console.aws.amazon.com/lambda/.
Important
Asegúrese de que está en la región US-East-1 (Norte de Virginia) (us-east-1). Debe estar en
esta región para crear funciones de Lambda@Edge.
2. Elija Create function (Crear función).
3. En la página Create function (Crear función), elija Use a blueprint (Usar un proyecto) y, a continuación,
filtre los proyectos de CloudFront especificando cloudfront en el campo de búsqueda. Se muestra
Keyword : cloudfront (Palabra clave: cloudfront) y aparecen todos los proyectos etiquetados para
CloudFront.
Note
Los proyectos de CloudFront solo están disponibles en la región US-East-1 (N. Virginia)
(EE. UU. Este (Norte de Virginia) (us-east-1).
4. Elija el proyecto cloudfront-modify-response-header como la plantilla para su función.
5. Escriba la siguiente información sobre su función:
Nombre
Elija cómo se deben establecer los permisos para la función. Para utilizar la plantilla de política
de permisos de Lambda @Edge básica recomendada, elija Create a new role from AWS policy
templates (Crear un nuevo rol a partir de plantillas de política de AWS).
Role name (Nombre de rol)
341
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla
8. Desplácese hacia abajo hasta la sección Function code (Código de función) de la página, como se
muestra en la siguiente imagen.
342
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla
343
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla
Reemplace el código de la plantilla por una función que modifique los encabezados de seguridad que
devuelve el origen. Por ejemplo, puede utilizar código similar al siguiente:
'use strict';
exports.handler = (event, context, callback) => {
Continúe con la siguiente sección para agregar un desencadenador de CloudFront para ejecutar la función.
344
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla
345
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla
Distribución
El comportamiento de la caché que se debe utilizar con el disparador. En este ejemplo, deje el
valor establecido en * es decir, el comportamiento de caché predeterminado de la distribución.
Para obtener más información, consulte Configuración del comportamiento de la caché (p. 52) en
el tema Valores que deben especificarse al crear o actualizar una distribución (p. 43).
Evento CloudFront
1. En un navegador, escriba la dirección URL de un archivo de su bucket de S3. Por ejemplo, puede
utilizar una URL similar a http://d111111abcdef8.cloudfront.net/image.jpg.
Para obtener más información sobre el nombre de dominio de CloudFront que se debe utilizar en la
URL del archivo, consulte Personalización del formato de URL para archivos en CloudFront (p. 117).
2. Abra la barra de herramientas para desarrolladores web del navegador. Por ejemplo, en la ventana del
navegador Chrome, abra el menú contextual (haga clic con el botón derecho) y, a continuación, elija
Inspect (Inspeccionar).
3. Elija la pestaña Network (Red).
4. Vuelva a cargar la página para ver la imagen y, a continuación, elija una solicitud HTTP en el panel
izquierdo. Verá que los encabezados HTTP se muestran en un panel independiente.
346
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla
5. Examine la lista de encabezados HTTP para verificar que incluye los encabezados de seguridad
esperados. Por ejemplo, es posible que vea encabezados similares a los que se muestran en la
siguiente captura de pantalla.
Por ejemplo, si ve el archivo desde Londres, pruebe a cambiar la región en la consola de CloudWatch a UE
(Londres).
Para obtener más información, consulte Monitoreo de CloudFront con Amazon CloudWatch (p. 452).
347
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla
Tareas
Ahora ya puede eliminar el bucket. Para obtener más información, consulte ¿Cómo elimino un bucket de
S3? en la Guía del usuario de la consola de Amazon Simple Storage Service.
348
Amazon CloudFront Guía para desarrolladores
Configuración de permisos y roles de IAM
Temas
• Permisos de IAM necesarios para asociar funciones de Lambda con distribuciones de
CloudFront (p. 349)
• Rol de ejecución de funciones para las entidades principales del servicio (p. 350)
• Roles vinculados a servicios para Lambda@Edge (p. 350)
• lambda:GetFunction
Permite al usuario obtener información de configuración para la función Lambda y una URL prefirmada
para descargar un archivo .zip que contiene la función.
Para el recurso, especifique el ARN de la versión de la función que desea ejecutar cuando se produzca
un evento de CloudFront, tal como se muestra en el ejemplo siguiente:
arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2
• lambda:EnableReplication*
Para el recurso, especifique el ARN de la función (sin el número de versión) que desea ejecutar cuando
se produzca un evento de CloudFront, tal como se muestra en el ejemplo siguiente:
arn:aws:lambda:us-east-1:123456789012:function:TestFunction
• iam:CreateServiceLinkedRole
Permite que el usuario cree un rol vinculado a un que utiliza Lambda@Edge para replicar funciones
Lambda en CloudFront. Después de que la primera distribución que utilice con Lambda@Edge
haya creado este rol, no es necesario que añada permisos a otras distribuciones que utilice con
Lambda@Edge.
• cloudfront:UpdateDistribution o bien cloudfront:CreateDistribution
349
Amazon CloudFront Guía para desarrolladores
Rol de ejecución de funciones para
las entidades principales del servicio
Agregue esta función en la pestaña Trust Relationship (Relación de confianza) en IAM (no la añada en la
pestaña Permissions (Permisos)).
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"lambda.amazonaws.com",
"edgelambda.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
Para obtener información acerca de los permisos que debe conceder al rol de ejecución, consulte
Administración de permisos mediante un rol de IAM (rol de ejecución) en la Guía para desarrolladores de
AWS Lambda. Tenga en cuenta lo siguiente:
• De forma predeterminada, siempre que un evento de CloudFront desencadene una función de Lambda,
los datos se escriben en CloudWatch Logs. Si desea utilizar estos registros, el rol de ejecución
necesita permiso para escribir datos en CloudWatch Logs. Puede utilizar la política predefinida
AWSLambdaBasicExecutionRole para conceder permisos al rol de ejecución.
Para obtener más información acerca de CloudWatch Logs, consulte Métricas de CloudWatch y
CloudWatch Logs para funciones de Lambda (p. 370).
• Si el código de la función de Lambda tiene acceso a otros recursos de AWS, como, por ejemplo,
la lectura de un objeto de un bucket de S3, el rol de ejecución necesita permiso para realizar esa
operación.
350
Amazon CloudFront Guía para desarrolladores
Roles vinculados a servicios para Lambda@Edge
arn:aws:iam::123456789012:role/aws-service-role/
replicator.lambda.amazonaws.com/AWSServiceRoleForLambdaReplicator
arn:aws:iam::account_number:role/aws-service-role/
logger.cloudfront.amazonaws.com/AWSServiceRoleForCloudFrontLogger
Los roles vinculados a servicios simplifican la configuración y el uso de Lambda@Edge porque no será
necesario añadir manualmente los permisos necesarios. Lambda@Edge define los permisos de sus roles
vinculados a servicios y solo Lambda@Edge puede asumir estos roles. Los permisos definidos incluyen la
política de confianza y la política de permisos. La política de permisos no se puede asociar a ninguna otra
entidad de IAM.
Debe eliminar los recursos de CloudFront o de Lambda@Edge asociados para poder eliminar un rol
vinculado a servicio. Esto ayuda a proteger sus recursos de Lambda@Edge al asegurarse de que no
elimina un rol vinculado a un servicio que sigue siendo necesario para obtener acceso a los recursos
activos.
Para obtener información sobre otros servicios que admiten roles vinculados a servicios, consulte Servicios
de AWS que funcionan con IAM y busque los servicios que tienen Sí en la columna Rol vinculado a
servicio.
• replicator.lambda.amazonaws.com
La política de permisos del rol permite que Lambda@Edge realice las siguientes acciones en los recursos
especificados:
351
Amazon CloudFront Guía para desarrolladores
Roles vinculados a servicios para Lambda@Edge
• logger.cloudfront.amazonaws.com
La política de permisos del rol permite que Lambda@Edge realice las siguientes acciones en los recursos
especificados:
Debe configurar permisos para permitir que una entidad de IAM (como un usuario, grupo o rol) elimine los
roles vinculados a servicios de Lambda@Edge. Para obtener más información, consulte Permisos de roles
vinculados a servicios en la Guía del usuario de IAM.
Si elimina el rol vinculado a servicio, el rol se creará de nuevo al añadir un nuevo disparador para
Lambda@Edge en una distribución.
• Cuando actualiza o crea una distribución de CloudFront que tiene una asociación Lambda@Edge,
el servicio crea un rol, AWSServiceRoleForCloudFrontLogger, si el rol no existe ya, que permite a
CloudFront enviar los archivos de registro a CloudWatch.
Si elimina el rol vinculado al servicio, el rol se creará de nuevo al actualizar o crear una distribución de
CloudFront que tiene una asociación de Lambda@Edge.
Si debe crear manualmente estos roles vinculados a servicios, ejecute los siguientes comandos con la CLI
de AWS:
352
Amazon CloudFront Guía para desarrolladores
Roles vinculados a servicios para Lambda@Edge
Para eliminar todas las asociaciones de Lambda@Edge de sus distribuciones, actualice las distribuciones
con el fin de eliminar todos los disparadores de funciones de Lambda@Edge o elimine las distribuciones
que utilizan funciones de Lambda@Edge. Para obtener más información, consulte Eliminación de
funciones de Lambda@Edge y réplicas (p. 371).
Una vez que haya eliminado todas las asociaciones de funciones de Lambda@Edge de las distribuciones
y que CloudFront haya eliminado las réplicas de las funciones de las ubicaciones de AWS, puede eliminar
los roles vinculados a servicios.
Note
Debe seguir procedimientos distintos para eliminar manualmente cada rol vinculado al servicio:
3. Elija Eliminar.
353
Amazon CloudFront Guía para desarrolladores
Roles vinculados a servicios para Lambda@Edge
354
Amazon CloudFront Guía para desarrolladores
Escritura y creación de funciones
Puede utilizar la consola de AWS para trabajar con funciones de Lambda y desencadenadores de
CloudFront, o puede trabajar con Lambda@Edge mediante programación utilizando las API.
• Si utiliza la consola, tenga en cuenta que solo puede usar la consola de AWS Lambda para crear
funciones de Lambda. No puede utilizar la consola de Amazon CloudFront para crear una función.
• Si desea trabajar con Lambda@Edge mediante programación, existen varios recursos para ayudarle.
Para obtener más información, consulte Creación de funciones de Lambda y desencadenadores de
CloudFront mediante programación (p. 359).
Note
Temas
• Creación de funciones para Lambda@Edge (p. 355)
• Creación de una función de Lambda@Edge en la consola de Lambda (p. 356)
• Edición de una función de Lambda para Lambda@Edge (p. 357)
• Creación de funciones de Lambda y desencadenadores de CloudFront mediante
programación (p. 359)
• Para obtener más información acerca de cómo escribir funciones de Lambda que puede utilizar con
Lambda@Edge, consulte Requisitos y restricciones en funciones de Lambda (p. 414).
• Para obtener más información acerca de la estructura del evento que se va a utilizar con las funciones
de Lambda@Edge, consulte Estructura de eventos (p. 372).
• Para ver ejemplos de las funciones de Lambda@Edge, como, por ejemplo, funciones para pruebas A/B
y generar un redireccionamiento de HTTP, consulte Funciones de ejemplo de Lambda@Edge (p. 387).
El modelo de programación para utilizar Node.js o Python con Lambda@Edge es el mismo que para
utilizar Lambda en una región de AWS. Para obtener más información, consulte Creación de funciones de
Lambda con Node.js o Creación de funciones de Lambda con Python.
355
Amazon CloudFront Guía para desarrolladores
Creación de una función de
Lambda@Edge en la consola de Lambda
Si está generando una respuesta, incluya el objeto cf.response en ella. Para obtener más
información, consulte Generación de respuestas HTTP en los disparadores de solicitud (p. 383).
• Eventos de respuesta: incluya el objeto cf.response en la respuesta.
1. Inicie sesión en la consola de administración de AWS y abra la consola de AWS Lambda en https://
console.aws.amazon.com/lambda/.
2. Si ya tiene una o varias funciones de Lambda, elija Create function (Crear función).
• Para crear una función utilizando su propio código, elija Author from scratch (Crear desde cero).
• Para mostrar una lista de proyectos de CloudFront;, escriba cloudfront en el campo de filtro y, a
continuación, pulse Enter (Intro).
Nombre
Elija Create new role from template(s) (Crear una nueva función a partir de plantilla(s)).
Note
Elija este valor para empezar a trabajar rápidamente. También puede elegir Choose
an existing role (Elegir una función existente) o Create a custom role (Crear un rol
personalizado). Si elige alguna de estas opciones, siga las instrucciones para completar
la información de esta sección.
Nombre de rol
356
Amazon CloudFront Guía para desarrolladores
Edición de una función de Lambda para Lambda@Edge
Important
¿Por qué añadir disparadores en otro momento? Generalmente es mejor que pruebe y
depure la función antes de añadir disparadores. Si elige añadir un disparador ahora, la
función comenzará su ejecución una vez creada la función, terminará de replicarse en las
ubicaciones de AWS en todo el mundo y se implementará la distribución correspondiente.
7. Elija Create function.
Lambda crea dos versiones de su función: $LATEST y Version 1. Solo puede editar la versión
$LATEST, pero la consola muestra inicialmente Version 1.
8. Para editar la función, elija Version 1 (Versión 1) cerca de la parte superior de la página, bajo el ARN
de la función. A continuación, en la pestaña Versions (Versiones), elija $LATEST. (Si abandona la
función y vuelve a ella más tarde, el botón de etiqueta será Qualifiers (Cualificadores)).
9. En la pestaña Configuration (Configuración), elija el valor correspondiente para Code entry type (Tipo
de entrada de código). A continuación, siga las instrucciones para editar o cargar el código.
10. En Runtime (Tiempo de ejecución), elija el valor según el código de la función.
11. En la sección Tags (Etiquetas), añada todas las etiquetas aplicables.
12. Elija Actions (Acciones) y, a continuación, Publish new version (Publicar nueva versión).
13. Escriba una descripción para la nueva versión de la función.
14. Elija Publish.
15. Pruebe y depure la función. Para obtener más información sobre las pruebas en la consola de
Lambda, consulte la sección Invocar la función Lambda y verificar los resultados, los registros y
las métricas en Crear una función Lambda con la consola en la Guía para desarrolladores de AWS
Lambda.
16. Cuando esté listo para que la función se ejecute para eventos de CloudFront, publique otra versión y
edite la función para agregar desencadenadores. Para obtener más información, consulte Adición de
disparadores para una función de Lambda@Edge (p. 359).
357
Amazon CloudFront Guía para desarrolladores
Edición de una función de Lambda para Lambda@Edge
1. Inicie sesión en la consola de administración de AWS y abra la consola de AWS Lambda en https://
console.aws.amazon.com/lambda/.
2. En la lista Región de la parte superior de la página, elija US East (N. Virginia) (EE. UU. Este (Norte de
Virginia)).
3. En la lista de funciones, elija el nombre de la función que desea editar.
De forma predeterminada, la consola muestra la versión $LATEST. Puede ver las versiones anteriores
(elija Qualifiers (Cualificadores)), pero solo puede editar $LATEST.
4. En la pestaña Code (Código), en Code entry type (Tipo de entrada de código), elija si desea editar el
código en el navegador, cargar un archivo .zip o cargar un archivo desde Amazon S3.
5. Elija Save (Guardar) o Save and test (Guardar y probar).
6. Elija Actions (Acciones) y, a continuación, Publish new version (Publicar nueva versión).
7. En el cuadro de diálogo Publish new version from $LATEST (Publicar una nueva versión desde
$LATEST), introduzca una descripción de la nueva versión. Esta descripción aparece en la lista de
versiones, junto con un número de versión generado de forma automática.
8. Elija Publish.
ID de distribución
Elija el comportamiento de la caché que especifica los objetos en los que desea ejecutar la
función.
Evento CloudFront
Seleccione esta casilla para que Lambda replique la función a las regiones de todo el mundo.
13. Elija Submit.
14. Para añadir más disparadores para esta función, repita los pasos del 10 al 13.
358
Amazon CloudFront Guía para desarrolladores
Creación de funciones de Lambda y desencadenadores
de CloudFront mediante programación
Si no está familiarizado con los comportamientos de la caché de CloudFront, aquí tiene una breve
descripción general. Al crear una distribución de CloudFront, debe especificar la configuración
que indica a CloudFront cómo responder al recibir distintas solicitudes. La configuración
predeterminada se denomina comportamiento de la caché predeterminado para la distribución.
Puede configurar más comportamientos de la caché que definen cómo responde CloudFront
en circunstancias específicas, por ejemplo, cuando recibe una solicitud para un tipo de archivo
específico. Para obtener más información, consulte Configuración del comportamiento de caché.
En el momento de crear una función de Lambda, solo se puede especificar un desencadenador. Pero se
pueden agregar más desencadenadores a la misma función más adelante por medio de uno de estos dos
métodos: con la consola de Lambda o editando la distribución en la consola de CloudFront.
• El uso de la consola de Lambda funciona bien si desea agregar más desencadenadores a una función
para la misma distribución de CloudFront.
• El uso de la consola de CloudFront puede ser mejor si desea agregar desencadenadores para varias
distribuciones, ya que es más sencillo encontrar la distribución que desea actualizar. También puede
actualizar otros ajustes de CloudFront simultáneamente.
359
Amazon CloudFront Guía para desarrolladores
Eventos de CloudFront que pueden
desencadenar una función de Lambda
Note
Si desea trabajar con Lambda@Edge mediante programación, existen varios recursos para
ayudarle. Para obtener más información, consulte Creación de funciones de Lambda y
desencadenadores de CloudFront mediante programación (p. 359).
Temas
• Eventos de CloudFront que pueden desencadenar una función de Lambda (p. 360)
• A continuación, se explica cómo decidir qué evento de CloudFront utilizar para desencadenar una
función de Lambda. (p. 361)
• Agregar desencadenadores mediante la consola de Lambda (p. 362)
• Agregar desencadenadores mediante la consola de CloudFront (p. 363)
El eventos de CloudFront que pueden utilizarse para activar funciones de Lambda@Edge son los
siguientes:
La función se ejecuta cuando CloudFront recibe una solicitud de un lector y antes de comprobar si el
objeto solicitado está en la caché de CloudFront.
Solicitud al origen
La función se ejecuta solo cuando CloudFront reenvía una solicitud a su origen. Cuando el objeto
solicitado está en la caché de CloudFront, la función no se ejecuta.
Respuesta del origen
La función se ejecuta después de que CloudFront recibe una respuesta del origen y antes de
almacenar el objeto en caché en la respuesta. Tenga en cuenta que la función se ejecuta aunque el
origen devuelva un error.
360
Amazon CloudFront Guía para desarrolladores
A continuación, se explica cómo decidir
qué evento de CloudFront utilizar para
desencadenar una función de Lambda.
Respuesta al espectador
La función se ejecuta antes de devolver el archivo solicitado al espectador. Tenga en cuenta que la
función se ejecuta independientemente de si el archivo ya está en la caché de CloudFront.
Si añade varios disparadores al mismo comportamiento de la caché, puede utilizarlos para ejecutar la
misma función o distintas funciones para cada disparador. También puede asociar la misma función a más
de una distribución.
Note
¿Desea que CloudFront almacene en caché los objetos modificados por una función de Lambda?
Si desea que CloudFront almacene en caché un objeto modificado por una función de Lambda para
que CloudFront pueda enviarlo desde la ubicación de borde la próxima vez que se solicite, utilice los
eventos de solicitud al origen o respuesta del origen. Esto reduce la carga en el origen, la latencia de
las solicitudes posteriores y los costos de invocación de Lambda@Edge en las solicitudes posteriores.
Por ejemplo, si desea agregar, eliminar o cambiar los encabezados de los objetos devueltos por el
origen y que CloudFront almacene el resultado en caché, utilice el evento de respuesta del origen.
¿Desea que la función se ejecute por cada solicitud?
Si desea que la función se ejecute para cada solicitud que CloudFront reciba para la distribución,
utilice los eventos de solicitud del lector o de respuesta al lector. Los eventos de solicitud al origen
y respuesta del origen ocurren solo cuando un objeto solicitado no se almacena en caché en una
ubicación de borde y CloudFront reenvía una solicitud al origen.
¿La función cambia la clave de caché?
Si desea que la función cambie un valor que está utilizando como base para el almacenamiento en
caché, utilice el evento de solicitud del espectador. Por ejemplo, si una función cambia la URL para
incluir una abreviatura de idioma en la ruta (por ejemplo, porque el usuario había elegido su idioma en
una lista desplegable), utilice el evento de solicitud del espectador:
361
Amazon CloudFront Guía para desarrolladores
Agregar desencadenadores mediante la consola de Lambda
También puede utilizar el evento de solicitud del espectador si está almacenando en caché en función
de cookies o encabezados de solicitudes.
Note
Si desea que la función cambie la solicitud para que afecte la respuesta del origen, utilice el evento de
solicitud al origen. Normalmente, la mayoría de los eventos de solicitud de lectores no se reenvían al
origen, sino que CloudFront responde a una solicitud con un objeto que ya está en la caché de borde.
Si la función modifica la solicitud basándose en un evento de solicitud al origen, CloudFront almacena
en caché la respuesta a la solicitud al origen modificada.
1. Inicie sesión en la consola de administración de AWS y abra la consola de AWS Lambda en https://
console.aws.amazon.com/lambda/.
2. En la lista Región de la parte superior de la página, elija US East (N. Virginia) (EE. UU. Este (Norte de
Virginia)).
3. En la página Functions (Funciones), elija el nombre de la función a la que desee añadir disparadores.
4. Elija Qualifiers (Cualificadores) y, a continuación, elija la pestaña Versions (Versiones).
5. Elija la versión a la que desea añadir disparadores.
Important
No puede crear disparadores para la versión $LATEST, debe crearlos para una versión
numerada.
Una vez elegida una versión, el nombre del botón cambia a Version: $LATEST (Versión: $LATEST) o
Version: número de versión.
6. Elija la pestaña Triggers (Disparadores).
7. Elija Add triggers (Añadir disparadores).
8. En el cuadro de diálogo Add trigger (Agregar desencadenador), elija el cuadro con puntos y, a
continuación, CloudFront.
Note
ID de distribución
362
Amazon CloudFront Guía para desarrolladores
Agregar desencadenadores
mediante la consola de CloudFront
Comportamiento de la caché
Elija el comportamiento de la caché que especifica los objetos en los que desea ejecutar la
función.
Note
Seleccione esta casilla de verificación para que AWS Lambda replique la función en las regiones
de todo el mundo.
10. Elija Submit.
arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2
363
Amazon CloudFront Guía para desarrolladores
Comprobación y depuración
5. Seleccione la casilla del comportamiento de caché al que desee añadir disparadores y, a continuación,
elija Edit (Editar).
6. En Lambda Function Associations (Asociaciones de función Lambda), en la lista Event Type (Tipo de
evento), elija cuándo desea que se ejecute la función: con solicitudes de espectador, respuestas de
espectador, solicitudes de origen o respuestas de origen.
Para obtener más información, consulte A continuación, se explica cómo decidir qué evento de
CloudFront utilizar para desencadenar una función de Lambda. (p. 361).
7. Pegue el ARN de la función de Lambda que desea ejecutar cuando ocurra el evento seleccionado.
Este es el valor que ha copiado en el paso 1.
8. Seleccione Include Body (Incluir cuerpo) si desea obtener acceso al cuerpo de la solicitud en la
función.
Durante las pruebas de integración o una vez implementada su función, es posible que deba depurar
errores de CloudFront, como errores HTTP 5xx. Los errores pueden ser una respuesta no válida que
devuelve la función de Lambda, errores de ejecución cuando se desencadena la función o errores debido
a limitación controlada de ejecución por parte del servicio de Lambda. En las secciones de este tema
se explican estrategias para determinar qué tipo de error es la causa del problema y, a continuación, se
ofrecen pasos que puede seguir para corregir el problema.
Note
Temas
• Prueba de sus funciones de Lambda@Edge (p. 365)
364
Amazon CloudFront Guía para desarrolladores
Prueba de sus funciones de Lambda@Edge
Es importante realizar pruebas de integración, donde la función está asociada a una distribución y se
ejecuta en función de un evento de CloudFront. Asegúrese de que la función se activa para el evento
adecuado y devuelve una respuesta que es válida y correcta para CloudFront. Por ejemplo, asegúrese
de que la estructura del evento es correcta, que solo se incluyen encabezados válidos, etc.
Mientras realiza la iteración en las pruebas de integración con la función en la consola de Lambda,
consulte los pasos que se indican en el tutorial de Lambda@Edge a medida que modifica el código o
cambia el desencadenador de CloudFront que llama a su función. Por ejemplo, asegúrese de que está
trabajando en una versión numerada de su función, tal y como se describe en este paso del tutorial:
Paso 4: Agregue un desencadenador de CloudFront para ejecutar la función (p. 344).
A medida que realiza cambios y los implementa, tenga en cuenta que pasarán varios minutos hasta
que su función actualizada y los desencadenadores de CloudFront se repliquen en todas las regiones.
Esto suele hacerse en unos minutos, pero puede tardar hasta 15 minutos.
Tenga en cuenta que las pruebas en la consola solo validan la lógica de la función, pero no aplican
cuotas (antes denominadas límites) de servicio específicas de Lambda@Edge.
365
Amazon CloudFront Guía para desarrolladores
Identificación de errores de
función de Lambda en CloudFront
pueden devolver por diversas razones, que puede incluir errores de las funciones de Lambda u otros
problemas en CloudFront.
• Si utiliza las funciones de Lambda@Edge, puede utilizar gráficos en la consola de CloudFront para
ayudar a localizar lo que está provocando el error y, a continuación, trabajar para solucionarlo. Por
ejemplo, puede ver si los errores HTTP 5xx están provocados por CloudFront o funciones de Lambda y,
a continuación, en el caso de funciones específicas, puede ver los archivos de registro relacionados para
investigar el problema.
• Para solucionar los errores HTTP en general en CloudFront, consulte los pasos de solución de
problemas en el siguiente tema: Solucionar respuestas de error del origen (p. 288).
Después de ejecutar la función, CloudFront recibe una respuesta de Lambda. Se devuelve un error
si la estructura de objetos de la respuesta no se ajusta a la Estructura de eventos (p. 372) o si la
respuesta contiene encabezados no válidos u otros campos no válidos.
La ejecución en CloudFront se limita debido a las cuotas de servicio de Lambda (anteriormente conocidas
como límites)
El servicio de Lambda limita las ejecuciones en cada región y devuelve un error si se supera la cuota.
Los siguientes gráficos pueden resultar especialmente útiles cuando desea realizar un seguimiento de los
errores devueltos por orígenes o por una función de Lambda y para acotar el tipo de problema cuando se
trata de un error de una función de Lambda.
Uno de los gráficos que puede ver en la pestaña Overview (Descripción general) de cada una de las
distribuciones es un gráfico de Error rates (Índices de error). Este gráfico muestra la tasa de errores
como porcentaje de las solicitudes totales próximas a su distribución. El gráfico se muestra la tasa
de error total, errores 4xx totales, errores 5xx totales y errores 5xx totales de funciones Lambda. En
función del tipo de error y del volumen, puede seguir los pasos para investigar y solucionar la causa.
366
Amazon CloudFront Guía para desarrolladores
Identificación de errores de
función de Lambda en CloudFront
• Si ve errores de Lambda, puede seguir investigando mirando los tipos de error específicos que
devuelve la función. La pestaña Lambda@Edge errors (Errores de Lambda@Edge) incluye gráficos
que clasifican los errores de función por tipo para ayudar a identificar el problema para una función
específica.
• Si ve errores de CloudFront, puede solucionar el problema y trabajar para corregir los errores de
origen o cambiar la configuración de CloudFront. Para obtener más información, consulte Solucionar
respuestas de error del origen (p. 288).
Gráficos de respuestas de función no válida y errores de ejecución
La pestaña Lambda@Edge errors (Errores de Lambda@Edge) incluye gráficos que clasifican los
errores de Lambda@Edge de una distribución específica, por tipo. Por ejemplo, un gráfico muestra
todos los errores de ejecución por región de AWS. Para facilitar la resolución de problemas, en la
misma página, puede buscar problemas específicos abriendo y examinando los archivos de registro
de funciones específicas por región. En los registros View execution error logs (Ver registros de error
de ejecución) o View invalid function response (Ver respuesta de función no válida), elija una región (y,
para los errores de ejecución, una función) y, a continuación, elija View logs (Ver registros).
367
Amazon CloudFront Guía para desarrolladores
Solución de problemas de respuestas no válidas
de funciones de Lambda (errores de validación)
Además, lea las siguientes secciones de este capítulo para obtener más recomendaciones acerca de
la solución de problemas y la corrección de errores.
Gráfico de limitaciones
Para ver un ejemplo sobre cómo utilizar esta información en la solución de problemas de errores HTTP,
consulte Cuatro pasos para depurar la entrega de contenido en AWS.
• La respuesta de Lambda debe ajustarse a la estructura de objetos necesaria. Estos son algunos
ejemplos de estructura de objetos incorrecta: JSON que no se puede analizar, campos obligatorios
que faltan y un objeto no válido en la respuesta. Para obtener más información, consulte Estructura de
eventos (p. 372).
• La respuesta solo debe incluir valores de objetos válidos. Se producirá un error si la respuesta incluye un
objeto válido pero tiene valores que no se admiten. Por ejemplo: agregar o actualizar encabezados que
están en la lista negra o son de solo lectura (consulte Encabezados (p. 415) en el tema Requisitos y
restricciones en funciones de Lambda), superar el tamaño máximo del cuerpo (consulte Restricciones en
el tamaño de la respuesta generada en el tema Errores (p. 386) de respuesta de Lambda) y caracteres
o valores no válidos (consulte Estructura de eventos (p. 372)).
Cuando Lambda devuelve una respuesta no válida a CloudFront, los mensajes de error se escriben en
los archivos de registro que CloudFront envía a CloudWatch en la región donde se ejecutó la función de
Lambda. El comportamiento predeterminado es enviar los archivos de registro a CloudWatch cuando hay
una respuesta no válida. Sin embargo, si asoció una función de Lambda con CloudFront antes de que se
lanzara la funcionalidad, es posible que no esté habilitada para la función. Para obtener más información,
consulte Determinación de si su cuenta inserta registros en CloudWatch más adelante en este tema.
368
Amazon CloudFront Guía para desarrolladores
Solución de errores de ejecución de funciones de Lambda
CloudFront envía los archivos de registro a la región correspondiente donde se ejecutó la función, al
grupo de registros asociado a su distribución. Los grupos de registros tienen el siguiente formato: /aws/
cloudfront/LambdaEdge/DistributionId, donde DistributionId es el ID de su distribución.
Para determinar la región donde se encuentran los archivos de registro de CloudWatch, consulte
Determinación de la región de Lambda@Edge más adelante en este tema.
Si el error es reproducible, puede crear una nueva solicitud que produzca el error y, a continuación, buscar
el ID de solicitud en una respuesta fallida de CloudFront (encabezado X-Amz-Cf-Id) para encontrar un
error en los archivos de registro. La entrada del archivo de registro incluye información que puede ayudarle
a identificar por qué se devuelve el error, y también muestra el ID de solicitud de Lambda correspondiente
para que pueda analizar la causa raíz en el contexto de una única solicitud.
Si se trata de un error intermitente, puede utilizar los registros de acceso de CloudFront para encontrar
el ID de una solicitud que ha generado un error y, a continuación, buscar en los registros de CloudWatch
los mensajes de error correspondientes. Para obtener más información, consulte la sección anterior,
Determinación del tipo de error.
Para empezar, puede usar los gráficos proporcionada en la sección Monitoring (Monitoreo) de la consola
de CloudFront, consulte Monitoreo de CloudFront con Amazon CloudWatch (p. 452).
369
Amazon CloudFront Guía para desarrolladores
Métricas de CloudWatch y CloudWatch Logs
Haga lo siguiente para verificar que el envío de los archivos de registro a CloudWatch está habilitado para
su cuenta:
• Compruebe si los registros aparecen en CloudWatch. Asegúrese de mirar en la región donde se ejecutó
la función de Lambda@Edge. Para obtener más información, consulte Determinación de la región de
Lambda@Edge (p. 369).
• Determine si el rol vinculado al servicio relacionado existe en su cuenta en IAM. Para ello,
abra la consola de IAM en https://console.aws.amazon.com/iam/, y, a continuación, elija
Roles para ver la lista de roles vinculados a servicios de su cuenta. Busque el siguiente rol:
AWSServiceRoleForCloudFrontLogger.
Temas
• Métricas de CloudWatch (p. 370)
• Registros de CloudWatch (p. 370)
Métricas de CloudWatch
Cuando crea un desencadenador para un evento CloudFront, Lambda comienza a enviar métricas a
CloudWatch automáticamente. Las métricas están disponibles para todas las regiones de Lambda,
pero para ver las métricas en la consola de CloudWatch u obtener los datos de métricas de la API de
CloudWatch, debe utilizar la región EE. UU. Este (Norte de Virginia) (us-east-1). El nombre del grupo de
métricas tiene el formato de: AWS/CloudFront/distribution-ID, donde ID-distribución es el ID
de la distribución de CloudFront a la que está asociada la función de Lambda @Edge.
Para obtener más información sobre las métricas de CloudWatch, consulte la Guía del usuario de Amazon
CloudWatch.
Registros de CloudWatch
Lambda envía automáticamente registros de funciones a CloudWatch Logs. Puede acceder a los archivos
de registro mediante la consola de CloudWatch o la API de CloudWatch Logs.
Lambda crea flujos de registro de CloudWatch Logs en las regiones de AWS más cercanas a las
ubicaciones donde se ejecuta la función. El nombre del grupo de registros tiene el formato /aws/lambda/
us-east-1.nombre-función, donde nombre-función es el nombre que asignó a la función cuando la
creó.
Note
Lambda@Edge limita los registros en función del volumen de solicitudes y el tamaño de los
registros.
Debe revisar los archivos de registro de CloudWatch en la región de AWS correcta para ver sus archivos
de registro de las funciones de Lambda@Edge. Para ver las regiones donde la función de Lambda@Edge
370
Amazon CloudFront Guía para desarrolladores
Eliminación de funciones y réplicas
está recibiendo tráfico, consulte los gráficos de métricas para la función en la consola de CloudFront.
Las métricas se muestran para cada región de AWS. En la misma página, puede elegir una región y, a
continuación, ver los archivos de registro para dicha región a fin de poder investigar problemas.
Para obtener más información acerca cómo utilizar CloudWatch Logs con las funciones de
Lambda@Edge, consulte lo siguiente:
• Para empezar, puede usar los gráficos proporcionada en la sección Monitoring (Monitoreo) de la consola
de CloudFront, consulte Monitoreo de CloudFront con Amazon CloudWatch (p. 452).
• Para obtener información acerca de los permisos necesarios para enviar datos a los registros de
CloudWatch, consulte Configuración de permisos y roles de IAM para Lambda@Edge (p. 349).
• Para obtener información acerca de cómo agregar el registro a una función de AWS Lambda, consulte
Registro de funciones en Node.js o Registro de funciones en Python de AWS Lambda en la Guía para
desarrolladores de AWS Lambda.
• Para obtener información acerca de las cuotas de CloudWatch Logs (anteriormente conocidas como
límites), consulte Cuotas de CloudWatch Logs en la Guía del usuario de Amazon CloudWatch Logs.
• Una vez que elimine la última asociación de la función desde todas sus distribuciones de CloudFront.
Si más de una distribución utiliza una función, las réplicas se eliminan solo después de que elimine la
asociación de la función desde la última distribución.
• Después de eliminar la última distribución a la que se asoció una función.
Las réplicas suelen eliminarse al cabo de unas horas. No puede eliminar manualmente las réplicas de
las funciones Lambda@Edge. Esto contribuye a evitar una situación en la que se elimina una réplica que
todavía está en uso, lo que daría lugar a un error.
No cree aplicaciones que utilicen réplicas de funciones de Lambda@Edge fuera de CloudFront. Estas
réplicas se eliminan cuando se eliminan sus asociaciones con distribuciones o cuando se eliminan las
propias distribuciones. La réplica de la que depende una aplicación externa puede eliminarse sin ningún
tipo de advertencia, lo que provocaría un error.
371
Amazon CloudFront Guía para desarrolladores
Estructura de eventos
Estructura de eventos
En los temas siguientes se describen los objetos de evento de solicitud y respuesta que CloudFront pasa a
una función de Lambda @Edge cuando se desencadena.
Temas
• Selección dinámica del origen (p. 372)
• Eventos de solicitud (p. 372)
• Eventos de respuesta (p. 377)
Esta selección dinámica del origen puede resultar útil en varios casos. Por ejemplo, puede distribuir
solicitudes entre orígenes de diferentes zonas geográficas para facilitar el balanceo de carga global.
También puede direccionar solicitudes selectivamente a varios orígenes, cada uno de ellos con un
propósito distinto: control de bots, optimización SEO, autenticación, etc. Para obtener ejemplos de
código que muestran cómo utilizar esta característica, consulte Selección de origen dinámico basada en
contenido: ejemplos (p. 401).
Eventos de solicitud
En los temas siguientes se muestra la estructura del objeto que CloudFront pasa a una función de Lambda
para los eventos de solicitud de lector y de origen (p. 360). Estos ejemplos muestran una solicitud GET
sin cuerpo. Después de los ejemplos, se muestra una lista de todos los campos posibles en eventos de
solicitud de lector y de origen.
Temas
• Ejemplo de solicitud de lector (p. 372)
• Ejemplo de solicitud de origen (p. 373)
• Campos de eventos de solicitud (p. 374)
372
Amazon CloudFront Guía para desarrolladores
Eventos de solicitud
{
"Records": [
{
"cf": {
"config": {
"distributionDomainName": "d111111abcdef8.cloudfront.net",
"distributionId": "EDFDVBD6EXAMPLE",
"eventType": "viewer-request",
"requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
},
"request": {
"clientIp": "203.0.113.178",
"headers": {
"host": [
{
"key": "Host",
"value": "d111111abcdef8.cloudfront.net"
}
],
"user-agent": [
{
"key": "User-Agent",
"value": "curl/7.66.0"
}
],
"accept": [
{
"key": "accept",
"value": "*/*"
}
]
},
"method": "GET",
"querystring": "",
"uri": "/"
}
}
}
]
}
{
"Records": [
{
"cf": {
"config": {
"distributionDomainName": "d111111abcdef8.cloudfront.net",
"distributionId": "EDFDVBD6EXAMPLE",
"eventType": "origin-request",
"requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
},
"request": {
"clientIp": "203.0.113.178",
"headers": {
"x-forwarded-for": [
{
"key": "X-Forwarded-For",
"value": "203.0.113.178"
}
373
Amazon CloudFront Guía para desarrolladores
Eventos de solicitud
],
"user-agent": [
{
"key": "User-Agent",
"value": "Amazon CloudFront"
}
],
"via": [
{
"key": "Via",
"value": "2.0 2afae0d44e2540f472c0635ab62c232b.cloudfront.net (CloudFront)"
}
],
"host": [
{
"key": "Host",
"value": "example.org"
}
],
"cache-control": [
{
"key": "Cache-Control",
"value": "no-cache, cf-no-cache"
}
]
},
"method": "GET",
"origin": {
"custom": {
"customHeaders": {},
"domainName": "example.org",
"keepaliveTimeout": 5,
"path": "",
"port": 443,
"protocol": "https",
"readTimeout": 30,
"sslProtocols": [
"TLSv1",
"TLSv1.1",
"TLSv1.2"
]
}
},
"querystring": "",
"uri": "/"
}
}
}
]
}
374
Amazon CloudFront Guía para desarrolladores
Eventos de solicitud
Una cadena cifrada que identifica de forma inequívoca una solicitud de lector a CloudFront. El valor
requestId también aparece en los registros de acceso de CloudFront como x-edge-request-
id. Para obtener más información, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463) y Campos de archivo de registro estándar (p. 469).
La dirección IP del espectador que ha realizado la solicitud. Si el espectador utiliza un proxy HTTP o
un balanceador de carga para enviar la solicitud, el valor es la dirección IP del proxy o del balanceador
de carga.
headers (lectura y escritura)
Por ejemplo, puede agregar un encabezado como el siguiente, sin la clave de encabezado key:
"user-agent": [
{
"value": "ExampleCustomUserAgent/1.X.0"
}
]
375
Amazon CloudFront Guía para desarrolladores
Eventos de solicitud
La ruta relativa del objeto solicitado. Si su función Lambda modifica el valor uri, tenga en cuenta lo
siguiente:
• El nuevo valor uri debe comenzar con una barra diagonal (/).
• Si una función cambia el valor de uri, se cambia el objeto que el lector solicita.
• Si una función cambia el valor de uri, no cambia el comportamiento de la caché de la solicitud ni
del origen al que se envía la solicitud.
body (lectura y escritura)
El cuerpo de la solicitud HTTP. La estructura body puede contener los siguientes campos:
inputTruncated (solo lectura)
Un indicador booleano que indica si Lambda@Edge truncó el cuerpo. Para obtener más
información, consulte Cuotas de tamaño para el cuerpo de la solicitud con la opción Include Body
(Incluir cuerpo) (p. 419).
action (lectura y escritura)
La acción que va a realizar con el cuerpo. Las opciones de action son las siguientes:
• read-only: Esta es la opción predeterminada. Cuando se devuelve la respuesta de la
función de Lambda, si action es solo lectura, Lambda@Edge omite los cambios realizados en
encoding o data.
• replace: Especifique este valor cuando desee reemplazar el cuerpo enviado al origen.
encoding (lectura y escritura)
El origen al que se envía la solicitud. La estructura origin debe contener exactamente un origen, que
puede ser un origen personalizado o un origen de Amazon S3. La estructura de origen puede contener
los siguientes campos:
customHeaders (lectura/escritura) (orígenes personalizados y de Amazon S3)
376
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta
La ruta de directorio del servidor donde la solicitud debería encontrar el contenido. La ruta debe
comenzar con una barra diagonal (/), pero no debe terminar con una (por ejemplo, no debería
terminar con example-path/). Solo para los orígenes personalizados: la ruta debe estar
codificada como una URL y tener una longitud máxima de 255 caracteres.
keepaliveTimeout (lectura y escritura) (solo orígenes personalizados)
El periodo de tiempo, en segundos, que CloudFront debería intentar mantener la conexión con
el origen después de recibir el último paquete de la respuesta. El valor debe ser un número
comprendido entre 1 y 60, ambos inclusive.
port (lectura y escritura) (solo orígenes personalizados)
El puerto al que CloudFront debe conectarse en el origen personalizado. Este valor debe ser 80,
443 o un número comprendido entre 1024 y 65535, ambos inclusive.
protocol (lectura y escritura) (solo orígenes personalizados)
El protocolo de conexión que CloudFront debe usar al conectarse a su origen. El valor puede ser
http o https.
readTimeout (lectura y escritura) (solo orígenes personalizados)
El tiempo, en segundos, que CloudFront debe esperar una respuesta después de enviar una
solicitud a su origen. También especifica cuánto tiempo debe esperar CloudFront después de
recibir un paquete de una respuesta antes de recibir el siguiente paquete. El valor debe ser un
número comprendido entre 4 y 60, ambos inclusive.
sslProtocols (lectura y escritura) (solo orígenes personalizados)
El protocolo SSL/TLS mínimo que CloudFront puede utilizar al establecer una conexión HTTPS
con su origen. Los valores pueden ser alguno de los siguientes: TLSv1.2, TLSv1.1, TLSv1 o
SSLv3.
authMethod (lectura/escritura) (solo orígenes de Amazon S3)
Si utiliza una identidad de acceso de origen (OAI) (p. 223), establezca este campo en origin-
access-identity o en none si no utiliza una OAI. Si establece authMethod en origin-
access-identity, se aplican varios requisitos:
• Debe especificar el elemento region (consulte el siguiente campo).
• Debe utilizar la misma OAI cuando cambie la solicitud de un origen de Amazon S3 a otro.
• No se puede utilizar una OAI cuando se cambia la solicitud de un origen personalizado a un
origen de Amazon S3.
region (lectura/escritura) (solo orígenes de Amazon S3)
La región de AWS de su bucket de Amazon S3. Esto solo es necesario cuando se establece
authMethod en origin-access-identity.
Eventos de respuesta
En los temas siguientes se muestra la estructura del objeto que CloudFront pasa a una función Lambda
para los eventos de respuesta de lector y de origen (p. 360). Después de los ejemplos, se muestra una
lista de todos los campos posibles en eventos de respuesta de lector y de origen.
377
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta
Temas
• Respuesta de origen de ejemplo (p. 378)
• Respuesta de lector de ejemplo (p. 380)
• Campos del evento de respuesta (p. 382)
{
"Records": [
{
"cf": {
"config": {
"distributionDomainName": "d111111abcdef8.cloudfront.net",
"distributionId": "EDFDVBD6EXAMPLE",
"eventType": "origin-response",
"requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
},
"request": {
"clientIp": "203.0.113.178",
"headers": {
"x-forwarded-for": [
{
"key": "X-Forwarded-For",
"value": "203.0.113.178"
}
],
"user-agent": [
{
"key": "User-Agent",
"value": "Amazon CloudFront"
}
],
"via": [
{
"key": "Via",
"value": "2.0 8f22423015641505b8c857a37450d6c0.cloudfront.net (CloudFront)"
}
],
"host": [
{
"key": "Host",
"value": "example.org"
}
],
"cache-control": [
{
"key": "Cache-Control",
"value": "no-cache, cf-no-cache"
}
]
},
"method": "GET",
"origin": {
"custom": {
"customHeaders": {},
"domainName": "example.org",
"keepaliveTimeout": 5,
"path": "",
"port": 443,
"protocol": "https",
378
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta
"readTimeout": 30,
"sslProtocols": [
"TLSv1",
"TLSv1.1",
"TLSv1.2"
]
}
},
"querystring": "",
"uri": "/"
},
"response": {
"headers": {
"access-control-allow-credentials": [
{
"key": "Access-Control-Allow-Credentials",
"value": "true"
}
],
"access-control-allow-origin": [
{
"key": "Access-Control-Allow-Origin",
"value": "*"
}
],
"date": [
{
"key": "Date",
"value": "Mon, 13 Jan 2020 20:12:38 GMT"
}
],
"referrer-policy": [
{
"key": "Referrer-Policy",
"value": "no-referrer-when-downgrade"
}
],
"server": [
{
"key": "Server",
"value": "ExampleCustomOriginServer"
}
],
"x-content-type-options": [
{
"key": "X-Content-Type-Options",
"value": "nosniff"
}
],
"x-frame-options": [
{
"key": "X-Frame-Options",
"value": "DENY"
}
],
"x-xss-protection": [
{
"key": "X-XSS-Protection",
"value": "1; mode=block"
}
],
"content-type": [
{
"key": "Content-Type",
"value": "text/html; charset=utf-8"
}
379
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta
],
"content-length": [
{
"key": "Content-Length",
"value": "9593"
}
]
},
"status": "200",
"statusDescription": "OK"
}
}
}
]
}
{
"Records": [
{
"cf": {
"config": {
"distributionDomainName": "d111111abcdef8.cloudfront.net",
"distributionId": "EDFDVBD6EXAMPLE",
"eventType": "viewer-response",
"requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
},
"request": {
"clientIp": "203.0.113.178",
"headers": {
"host": [
{
"key": "Host",
"value": "d111111abcdef8.cloudfront.net"
}
],
"user-agent": [
{
"key": "User-Agent",
"value": "curl/7.66.0"
}
],
"accept": [
{
"key": "accept",
"value": "*/*"
}
]
},
"method": "GET",
"querystring": "",
"uri": "/"
},
"response": {
"headers": {
"access-control-allow-credentials": [
{
"key": "Access-Control-Allow-Credentials",
"value": "true"
}
],
380
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta
"access-control-allow-origin": [
{
"key": "Access-Control-Allow-Origin",
"value": "*"
}
],
"date": [
{
"key": "Date",
"value": "Mon, 13 Jan 2020 20:14:56 GMT"
}
],
"referrer-policy": [
{
"key": "Referrer-Policy",
"value": "no-referrer-when-downgrade"
}
],
"server": [
{
"key": "Server",
"value": "ExampleCustomOriginServer"
}
],
"x-content-type-options": [
{
"key": "X-Content-Type-Options",
"value": "nosniff"
}
],
"x-frame-options": [
{
"key": "X-Frame-Options",
"value": "DENY"
}
],
"x-xss-protection": [
{
"key": "X-XSS-Protection",
"value": "1; mode=block"
}
],
"age": [
{
"key": "Age",
"value": "2402"
}
],
"content-type": [
{
"key": "Content-Type",
"value": "text/html; charset=utf-8"
}
],
"content-length": [
{
"key": "Content-Length",
"value": "9593"
}
]
},
"status": "200",
"statusDescription": "OK"
}
}
}
381
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta
]
}
Una cadena cifrada que identifica de forma inequívoca la solicitud del lector a CloudFront a la que
está asociada esta respuesta. El valor requestId también aparece en los registros de acceso de
CloudFront como x-edge-request-id. Para obtener más información, consulte Configuración
y uso de registros estándar (registros de acceso) (p. 463) y Campos de archivo de registro
estándar (p. 469).
382
Amazon CloudFront Guía para desarrolladores
Trabajo con solicitudes y respuestas
Por ejemplo, puede agregar un encabezado como el siguiente, sin la clave de encabezado key:
"content-type": [
{
"value": "text/html;charset=UTF-8"
}
]
383
Amazon CloudFront Guía para desarrolladores
Generación de respuestas HTTP
en los disparadores de solicitud
de respuestas HTTP reduce la carga en el origen, y normalmente también reduce la latencia para el
espectador.
Entre las situaciones más comunes para generar respuestas HTTP se incluyen las siguientes:
Una función de Lambda@Edge puede generar una respuesta HTTP cuando ocurren los siguientes eventos
de CloudFront:
Cuando un evento de solicitud del lector activa una función, CloudFront devuelve la respuesta al lector
y no la almacena en caché.
Eventos de solicitud al origen
Cuando un evento de solicitud al origen activa una función, CloudFront busca en la caché de borde
una respuesta generada previamente por la función.
• Si la respuesta está en la caché, la función no se ejecuta y CloudFront devuelve al lector la
respuesta almacenada en la caché.
• Si la respuesta no está en la caché, la función se ejecuta, CloudFront devuelve la respuesta al lector
y también la almacena en la caché.
Para ver algunos ejemplos de código para generar respuestas HTTP, consulte Funciones de ejemplo de
Lambda@Edge (p. 387). También puede sustituir las respuestas HTTP en disparadores de respuesta.
Para obtener más información, consulte Actualización de respuestas HTTP en disparadores de respuesta
del origen (p. 386).
Modelo de programación
En esta sección se describe el modelo de programación a seguir para usar Lambda@Edge con el fin de
generar respuestas HTTP.
Temas
• Objeto de respuesta (p. 384)
• Errores (p. 386)
• Campos obligatorios (p. 386)
Objeto de respuesta
La respuesta que devuelva como parámetro result del método callback debe tener la siguiente
estructura (tenga en cuenta que solo es obligatorio el campo status).
const response = {
body: 'content',
bodyEncoding: 'text' | 'base64',
headers: {
'header name in lowercase': [{
key: 'header name in standard case',
value: 'header value'
384
Amazon CloudFront Guía para desarrolladores
Generación de respuestas HTTP
en los disparadores de solicitud
}],
...
},
status: 'HTTP status code',
statusDescription: 'status description'
};
body
La codificación del valor especificado en body. Las únicas codificaciones válidas son text y base64.
Si incluye body en el objeto response pero omite bodyEncoding, CloudFront trata el cuerpo como
texto.
Si especifica bodyEncoding como base64 pero el cuerpo no tiene una codificación base64 válida,
CloudFront devuelve un error.
headers
Los encabezados que desea que devuelva CloudFront en la respuesta generada. Tenga en cuenta lo
siguiente:
• Las claves del objeto headers son nombres de encabezado HTTP estándar en minúsculas. El
uso de claves en minúsculas le proporciona acceso a los valores del encabezado sin diferenciar
mayúsculas de minúsculas.
• Cada encabezado (por ejemplo, headers["accept"] or headers["host"]) es una matriz de
pares clave-valor. Para un encabezado determinado, la matriz contiene un par de clave-valor para
cada valor de la respuesta generada.
• key (opcional) es el nombre del encabezado que diferencia mayúsculas de minúsculas tal como
aparece en una solicitud HTTP; por ejemplo, accept u host.
• Especifique value como un valor de encabezado.
• Si no incluye la parte de clave de encabezado del par de clave-valor, Lambda@Edge insertará
automáticamente una clave de encabezado utilizando el nombre de encabezado que proporcione.
Independientemente de cómo haya formateado el nombre del encabezado, la clave de encabezado
que se inserta automáticamente se formatea con mayúscula inicial para cada parte, separada por
guiones (-).
Por ejemplo, puede añadir un encabezado como el siguiente, sin una clave de encabezado:
'content-type': [{ value: 'text/html;charset=UTF-8' }]
385
Amazon CloudFront Guía para desarrolladores
Actualización de respuestas HTTP en
disparadores de respuesta del origen
Si el valor status no está comprendido entre 200 y 599, CloudFront devuelve un error al lector.
statusDescription
La descripción que desea que CloudFront devuelva en la respuesta, y que acompañará al código
de estado HTTP. No es obligatorio utilizar descripciones estándar, como OK en un código de estado
HTTP 200.
Errores
Los siguientes son posibles errores de respuestas HTTP generadas.
Cuando una solicitud del lector activa una función, CloudFront devuelve un código de estado HTTP
502 (Gateway incorrecta) al lector cuando se cumplen las dos condiciones siguientes:
• El valor de status es 204 (Sin contenido)
• La respuesta incluye un valor para body
Esto se debe a que Lambda@Edge impone la restricción opcional de RFC 2616 que establece que
una respuesta HTTP 204 no necesita contener cuerpo de mensaje.
Restricciones en el tamaño de la respuesta generada
El tamaño máximo de una respuesta generada por una función de Lambda depende del evento que
desencadenó la función:
• Eventos de solicitud del lector: 40 KB
• Eventos de solicitud al origen: 1 MB
Si la respuesta supera el tamaño permitido, CloudFront devuelve un código de estado HTTP 502
(Gateway incorrecta) al lector.
Campos obligatorios
El campo status es obligatorio.
Entre las situaciones más comunes para actualizar respuestas HTTP se incluyen las siguientes:
• Cambiar el estado para establecer un código de estado HTTP 200 y crear un cuerpo con contenido
estático para devolverlo al espectador cuando un origen devuelva un código de estado de error (4xx o
5xx). Para ver código de muestra, consulte Ejemplo: Uso de un disparador de respuesta del origen para
actualizar el código de estado de error a 200-OK (p. 408).
• Cambiar el estado para establecer un código de estado HTTP 301 o 302, con objeto de redirigir al
usuario a otro sitio web cuando un origen devuelve un código de estado de error (4xx o 5xx). Para ver
código de muestra, consulte Ejemplo: Uso de un disparador de respuesta del origen para actualizar el
código de estado de error a 302-Found (p. 409).
386
Amazon CloudFront Guía para desarrolladores
Acceso al cuerpo de una solicitud eligiendo
la opción Include Body (Incluir cuerpo)
También puede sustituir las respuestas HTTP en eventos de solicitud al origen y del espectador.
Para obtener más información, consulte Generación de respuestas HTTP en los disparadores de
solicitud (p. 383).
Cuando trabaja con la respuesta HTTP, Lambda@Edge no expone el cuerpo que devuelve el servidor
de origen al desencadenador de respuesta del origen. Puede generar un cuerpo con contenido estático
estableciéndolo en el valor deseado, o eliminar el cuerpo dentro de la función estableciendo un valor vacío.
Si no actualiza el campo de cuerpo de la función, se devolverá al espectador el cuerpo original devuelto
por el servidor de origen.
Para habilitar esta opción, elija Include Body (Incluir cuerpo) al crear un desencadenador de CloudFront
para la función que corresponde a un evento de solicitud al origen o del lector. Para obtener más
información, consulte Adición de disparadores para una función de Lambda@Edge (p. 359); para obtener
información acerca de cómo utilizar Include Body (Incluir cuerpo) con su función, consulte Estructura de
eventos (p. 372).
Entre los escenarios en los que es conveniente utilizar esta característica se incluyen los siguientes:
• Procesamiento de formularios web, como formularios de tipo "póngase en contacto con nosotros", sin
devolver los datos de entrada de los clientes a los servidores de origen.
• Recopilación de datos de balizas web enviados por los navegadores de los espectadores y que se
procesan en el borde.
Para ver código de muestra, consulte Funciones de ejemplo de Lambda@Edge (p. 387).
Note
Si el cuerpo de la solicitud es grande, Lambda@Edge lo trunca. Para obtener información
detallada sobre el tamaño máximo y el truncamiento, consulte Tamaño máximo del cuerpo con la
opción Include Body (Incluir cuerpo) (p. 420).
Temas
• Ejemplos generales (p. 388)
• Generación de respuestas: ejemplos (p. 391)
• Trabajar con cadenas de consulta: ejemplos (p. 393)
• Personalizar contenido por encabezados de tipo de dispositivo o país: ejemplos (p. 397)
• Selección de origen dinámico basada en contenido: ejemplos (p. 401)
• Actualización de estados de error: ejemplos (p. 408)
387
Amazon CloudFront Guía para desarrolladores
Ejemplos generales
Ejemplos generales
En los ejemplos de esta sección se muestran algunas formas habituales de usar Lambda@Edge en
CloudFront.
Temas
• Ejemplo: prueba A/B (p. 388)
• Ejemplo: sobrescritura de un encabezado de respuesta (p. 390)
Node.js
'use strict';
/*
* Lambda at the Edge headers are array objects.
*
* Client may send multiple Cookie headers, i.e.:
* > GET /viewerRes/test HTTP/1.1
* > User-Agent: curl/7.18.1 (x86_64-unknown-linux-gnu) libcurl/7.18.1
OpenSSL/1.0.1u zlib/1.2.3
* > Cookie: First=1; Second=2
* > Cookie: ClientCode=abc
* > Host: example.com
*
* You can access the first Cookie header at headers["cookie"][0].value
* and the second at headers["cookie"][1].value.
*
* Header values are not parsed. In the example above,
* headers["cookie"][0].value is equal to "First=1; Second=2"
*/
let experimentUri;
if (headers.cookie) {
for (let i = 0; i < headers.cookie.length; i++) {
if (headers.cookie[i].value.indexOf(cookieExperimentA) >= 0) {
console.log('Experiment A cookie found');
experimentUri = pathExperimentA;
388
Amazon CloudFront Guía para desarrolladores
Ejemplos generales
break;
} else if (headers.cookie[i].value.indexOf(cookieExperimentB) >= 0) {
console.log('Experiment B cookie found');
experimentUri = pathExperimentB;
break;
}
}
}
if (!experimentUri) {
console.log('Experiment cookie has not been found. Throwing dice...');
if (Math.random() < 0.75) {
experimentUri = pathExperimentA;
} else {
experimentUri = pathExperimentB;
}
}
request.uri = experimentUri;
console.log(`Request uri set to "${request.uri}"`);
callback(null, request);
};
Python
import json
import random
if request['uri'] != '/experiment-pixel.jpg':
# Not an A/B Test
return request
'''
Lambda at the Edge headers are array objects.
experimentUri = ""
389
Amazon CloudFront Guía para desarrolladores
Ejemplos generales
break
elif cookieExperimentB in cookie['value']:
print("Experiment B cookie found")
experimentUri = pathExperimentB
break
if not experimentUri:
print("Experiment cookie has not been found. Throwing dice...")
if random.random() < 0.75:
experimentUri = pathExperimentA
else:
experimentUri = pathExperimentB
request['uri'] = experimentUri
print(f"Request uri set to {experimentUri}")
return request
Node.js
'use strict';
if (headers[headerNameSrc.toLowerCase()]) {
headers[headerNameDst.toLowerCase()] = [
headers[headerNameSrc.toLowerCase()][0],
];
console.log(`Response header "${headerNameDst}" was set to ` +
`"${headers[headerNameDst.toLowerCase()][0].value}"`);
}
callback(null, response);
};
Python
import json
headerNameSrc = "X-Amz-Meta-Last-Modified"
headerNameDst = "Last-Modified"
if headers.get(headerNameSrc.lower(), None):
headers[headerNameDst.lower()] = [headers[headerNameSrc.lower()][0]]
print(f"Response header {headerNameDst.lower()} was set to
{headers[headerNameSrc.lower()][0]}")
return response
390
Amazon CloudFront Guía para desarrolladores
Generación de respuestas: ejemplos
Temas
• Ejemplo: envío de contenido estático (respuesta generada) (p. 391)
• Ejemplo: generación de una redirección HTTP (respuesta generada) (p. 392)
Puede generar respuestas HTTP para los eventos de solicitud del espectador y al origen. Para
obtener más información, consulte Generación de respuestas HTTP en los disparadores de
solicitud (p. 383). También puede sustituir la respuesta HTTP en eventos de respuesta del
origen y al espectador. Para obtener más información, consulte Actualización de respuestas HTTP
en disparadores de respuesta del origen (p. 386).
Node.js
'use strict';
const content = `
<\!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Simple Lambda@Edge Static Content Response</title>
</head>
<body>
<p>Hello from Lambda@Edge!</p>
</body>
</html>
`;
391
Amazon CloudFront Guía para desarrolladores
Generación de respuestas: ejemplos
Python
import json
CONTENT = """
<\!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Simple Lambda@Edge Static Content Response</title>
</head>
<body>
<p>Hello from Lambda@Edge!</p>
</body>
</html>
"""
Puede generar respuestas HTTP para los eventos de solicitud del espectador y al origen. Para
obtener más información, consulte Generación de respuestas HTTP en los disparadores de
solicitud (p. 383).
Node.js
'use strict';
392
Amazon CloudFront Guía para desarrolladores
Trabajar con cadenas de consulta: ejemplos
statusDescription: 'Found',
headers: {
location: [{
key: 'Location',
value: 'http://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html',
}],
},
};
callback(null, response);
};
Python
# Generate HTTP redirect response with 302 status code and Location header.
response = {
'status': '302',
'statusDescription': 'Found',
'headers': {
'location': [{
'key': 'Location',
'value': 'http://docs.aws.amazon.com/lambda/latest/dg/lambda-
edge.html'
}]
}
}
return response
Temas
• Ejemplo: agregar un encabezado en función de un parámetro de la cadena de consulta (p. 393)
• Ejemplo: normalizar parámetros de cadenas de consulta para mejorar la tasa de acceso a la
caché (p. 394)
• Ejemplo: redireccionamiento de los usuarios sin autenticar a una página de inicio de sesión (p. 396)
Node.js
'use strict';
/* When a request contains a query string key-value pair but the origin server
* expects the value in a header, you can use this Lambda function to
393
Amazon CloudFront Guía para desarrolladores
Trabajar con cadenas de consulta: ejemplos
* convert the key-value pair to a header. Here's what the function does:
* 1. Parses the query string and gets the key-value pair.
* 2. Adds a header to the request using the key-value pair that the function got
in step 1.
*/
callback(null, request);
}
Python
'''
When a request contains a query string key-value pair but the origin server
expects the value in a header, you can use this Lambda function to
convert the key-value pair to a header. Here's what the function does:
1. Parses the query string and gets the key-value pair.
2. Adds a header to the request using the key-value pair that the function got
in step 1.
'''
return request
394
Amazon CloudFront Guía para desarrolladores
Trabajar con cadenas de consulta: ejemplos
Para obtener más información, consulte Almacenamiento en caché de contenido en función de parámetros
de cadenas de consulta (p. 274).
Node.js
'use strict';
callback(null, request);
};
Python
This function normalizes query strings so that parameter names and values
are lowercase and parameter names are in alphabetical order.
395
Amazon CloudFront Guía para desarrolladores
Trabajar con cadenas de consulta: ejemplos
return request
Node.js
'use strict';
function parseCookies(headers) {
const parsedCookie = {};
if (headers.cookie) {
headers.cookie[0].value.split(';').forEach((cookie) => {
if (cookie) {
const parts = cookie.split('=');
parsedCookie[parts[0].trim()] = parts[1].trim();
}
});
}
return parsedCookie;
}
396
Amazon CloudFront Guía para desarrolladores
Personalizar contenido por encabezados
de tipo de dispositivo o país: ejemplos
},
};
callback(null, response);
};
Python
import urllib
def parseCookies(headers):
parsedCookie = {}
if headers.get('cookie'):
for cookie in headers['cookie'][0]['value'].split(';'):
if cookie:
parts = cookie.split('=')
parsedCookie[parts[0].strip()] = parts[1].strip()
return parsedCookie
'''
Check for session-id in request cookie in viewer-request event,
if session-id is absent, redirect the user to sign in page with original
request sent as redirect_url in query params.
'''
response = {
'status': '302',
'statusDescription': 'Found',
'headers': {
'location': [{
'key': 'Location',
'value': 'https://www.example.com/signin?redirect_url=%s' %
encodedRedirectUrl
}]
}
}
return response
Temas
• Ejemplo: redireccionamiento de solicitudes de espectadores a una URL específica del país (p. 398)
397
Amazon CloudFront Guía para desarrolladores
Personalizar contenido por encabezados
de tipo de dispositivo o país: ejemplos
• Ejemplo: ofrecer distintas versiones de un objeto en función del dispositivo (p. 399)
• Debe configurar la distribución para almacenar en la caché en función del encabezado CloudFront-
Viewer-Country. Para obtener más información, consulte Caché en función de encabezados de
solicitud seleccionados (p. 56).
• CloudFront agrega el encabezado CloudFront-Viewer-Country después del evento de solicitud del
lector. Para utilizar este ejemplo, debe crear un activador para el evento de solicitud al origen.
Node.js
'use strict';
/*
* Based on the value of the CloudFront-Viewer-Country header, generate an
* HTTP status code 302 (Redirect) response, and return a country-specific
* URL in the Location header.
* NOTE: 1. You must configure your distribution to cache based on the
* CloudFront-Viewer-Country header. For more information, see
* http://docs.aws.amazon.com/console/cloudfront/cache-on-selected-headers
* 2. CloudFront adds the CloudFront-Viewer-Country header after the viewer
* request event. To use this example, you must create a trigger for the
* origin request event.
*/
const response = {
status: '302',
statusDescription: 'Found',
headers: {
398
Amazon CloudFront Guía para desarrolladores
Personalizar contenido por encabezados
de tipo de dispositivo o país: ejemplos
location: [{
key: 'Location',
value: url,
}],
},
};
callback(null, response);
};
Python
'''
Based on the value of the CloudFront-Viewer-Country header, generate an
HTTP status code 302 (Redirect) response, and return a country-specific
URL in the Location header.
NOTE: 1. You must configure your distribution to cache based on the
CloudFront-Viewer-Country header. For more information, see
http://docs.aws.amazon.com/console/cloudfront/cache-on-selected-headers
2. CloudFront adds the CloudFront-Viewer-Country header after the viewer
request event. To use this example, you must create a trigger for the
origin request event.
'''
url = 'https://example.com/'
viewerCountry = headers.get('cloudfront-viewer-country')
if viewerCountry:
countryCode = viewerCountry[0]['value']
if countryCode == 'TW':
url = 'https://tw.example.com/'
elif countryCode == 'US':
url = 'https://us.example.com/'
response = {
'status': '302',
'statusDescription': 'Found',
'headers': {
'location': [{
'key': 'Location',
'value': url
}]
}
}
return response
399
Amazon CloudFront Guía para desarrolladores
Personalizar contenido por encabezados
de tipo de dispositivo o país: ejemplos
• CloudFront agrega los encabezados CloudFront-Is-*-Viewer después del evento de solicitud del
lector. Para utilizar este ejemplo, debe crear un activador para el evento de solicitud al origen.
Node.js
'use strict';
/*
* Serve different versions of an object based on the device type.
* NOTE: 1. You must configure your distribution to cache based on the
* CloudFront-Is-*-Viewer headers. For more information, see
* the following documentation:
* http://docs.aws.amazon.com/console/cloudfront/cache-on-selected-headers
* http://docs.aws.amazon.com/console/cloudfront/cache-on-device-type
* 2. CloudFront adds the CloudFront-Is-*-Viewer headers after the viewer
* request event. To use this example, you must create a trigger for the
* origin request event.
*/
if (headers['cloudfront-is-desktop-viewer']
&& headers['cloudfront-is-desktop-viewer'][0].value === 'true') {
request.uri = desktopPath + request.uri;
} else if (headers['cloudfront-is-mobile-viewer']
&& headers['cloudfront-is-mobile-viewer'][0].value === 'true') {
request.uri = mobilePath + request.uri;
} else if (headers['cloudfront-is-tablet-viewer']
&& headers['cloudfront-is-tablet-viewer'][0].value === 'true') {
request.uri = tabletPath + request.uri;
} else if (headers['cloudfront-is-smarttv-viewer']
&& headers['cloudfront-is-smarttv-viewer'][0].value === 'true') {
request.uri = smarttvPath + request.uri;
}
console.log(`Request uri set to "${request.uri}"`);
callback(null, request);
};
Python
'''
Serve different versions of an object based on the device type.
NOTE: 1. You must configure your distribution to cache based on the
CloudFront-Is-*-Viewer headers. For more information, see
the following documentation:
http://docs.aws.amazon.com/console/cloudfront/cache-on-selected-headers
http://docs.aws.amazon.com/console/cloudfront/cache-on-device-type
2. CloudFront adds the CloudFront-Is-*-Viewer headers after the viewer
request event. To use this example, you must create a trigger for the
400
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos
desktopPath = '/desktop';
mobilePath = '/mobile';
tabletPath = '/tablet';
smarttvPath = '/smarttv';
return request
Temas
• Ejemplo: uso de un desencadenador de solicitud al origen para cambiar desde un origen personalizado
a un origen de Amazon S3 (p. 401)
• Ejemplo: uso de un desencadenador de solicitud al origen para cambiar la región del origen de
Amazon S3 (p. 403)
• Ejemplo: uso de un desencadenador de solicitud al origen para cambiar desde un origen de Amazon
S3 a un origen personalizado (p. 405)
• Ejemplo: uso de un desencadenador de solicitud al origen para transferir gradualmente el tráfico desde
un bucket de Amazon S3 a otro (p. 406)
• Ejemplo: Uso de un disparador de solicitud al origen para cambiar el nombre del dominio de origen en
función del encabezado de país (p. 407)
Node.js
'use strict';
401
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos
/**
* Reads query string to check if S3 origin should be used, and
* if true, sets S3 origin properties.
*/
if (params['useS3Origin']) {
if (params['useS3Origin'] === 'true') {
const s3DomainName = 'my-bucket.s3.amazonaws.com';
callback(null, request);
};
Python
402
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos
En este ejemplo, utilizamos el valor del encabezado CloudFront-Viewer-Country para actualizar el nombre
de dominio del bucket de S3 por un bucket de una región que está más cerca del lector. Esto puede
resultar útil de varias maneras:
• Reduce las latencias cuando la región especificada está más cerca del país del lector.
• Proporciona soberanía de los datos, al asegurarse de que los datos se distribuyen desde un origen que
está en el país del que provino la solicitud.
Node.js
'use strict';
/**
* This blueprint demonstrates how an origin-request trigger can be used to
* change the origin from which the content is fetched, based on request
properties.
* In this example, we use the value of the CloudFront-Viewer-Country header
* to update the S3 bucket domain name to a bucket in a Region that is closer to
* the viewer.
*
* This can be useful in several ways:
* 1) Reduces latencies when the Region specified is nearer to the viewer’s
* country.
* 2) Provides data sovereignty by making sure that data is served from an
* origin that’s in the same country that the request came from.
*
* NOTE: 1. You must configure your distribution to cache based on the
* CloudFront-Viewer-Country header. For more information, see
* http://docs.aws.amazon.com/console/cloudfront/cache-on-selected-headers
* 2. CloudFront adds the CloudFront-Viewer-Country header after the viewer
* request event. To use this example, you must create a trigger for the
* origin request event.
*/
const countryToRegion = {
'DE': 'eu-central-1',
'IE': 'eu-west-1',
'GB': 'eu-west-2',
'FR': 'eu-west-3',
'JP': 'ap-northeast-1',
'IN': 'ap-south-1'
};
403
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos
if (request.headers['cloudfront-viewer-country']) {
const countryCode = request.headers['cloudfront-viewer-country'][0].value;
const region = countryToRegion[countryCode];
/**
* If the viewer's country is not in the list you specify, the request
* goes to the default S3 bucket you've configured.
*/
if (region) {
/**
* If you’ve set up OAI, the bucket policy in the destination bucket
* should allow the OAI GetObject operation, as configured by default
* for an S3 origin with OAI. Another requirement with OAI is to provide
* the Region so it can be used for the SIGV4 signature. Otherwise, the
* Region is not required.
*/
request.origin.s3.region = region;
const domainName = `my-bucket-in-${region}.s3.amazonaws.com`;
request.origin.s3.domainName = domainName;
request.headers['host'] = [{ key: 'host', value: domainName }];
}
}
callback(null, request);
};
Python
'''
This blueprint demonstrates how an origin-request trigger can be used to
change the origin from which the content is fetched, based on request properties.
In this example, we use the value of the CloudFront-Viewer-Country header
to update the S3 bucket domain name to a bucket in a Region that is closer to
the viewer.
countryToRegion = {
'DE': 'eu-central-1',
'IE': 'eu-west-1',
'GB': 'eu-west-2',
'FR': 'eu-west-3',
'JP': 'ap-northeast-1',
'IN': 'ap-south-1'
}
viewerCountry = request['headers'].get('cloudfront-viewer-country')
if viewerCountry:
countryCode = viewerCountry[0]['value']
404
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos
region = countryToRegion.get(countryCode)
# If the viewer's country in not in the list you specify, the request
# goes to the default S3 bucket you've configured
if region:
'''
If you’ve set up OAI, the bucket policy in the destination bucket
should allow the OAI GetObject operation, as configured by default
for an S3 origin with OAI. Another requirement with OAI is to provide
the Region so it can be used for the SIGV4 signature. Otherwise, the
Region is not required.
'''
request['origin']['s3']['region'] = region
domainName = 'my-bucket-in-%s.s3.amazonaws.com' % region
request['origin']['s3']['domainName'] = domainName
request['headers']['host'] = [{'key': 'host', 'value': domainName}]
return request
Node.js
'use strict';
/**
* Reads query string to check if custom origin should be used, and
* if true, sets custom origin properties.
*/
if (params['useCustomOrigin']) {
if (params['useCustomOrigin'] === 'true') {
405
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos
callback(null, request);
};
Python
if params.get('useCustomOrigin') == 'true':
# Set custom origin fields
request['origin'] = {
'custom': {
'domainName': 'www.example.com',
'port': 443,
'protocol': 'https',
'path': '',
'sslProtocols': ['TLSv1', 'TLSv1.1'],
'readTimeout': 5,
'keepaliveTimeout': 5,
'customHeaders': {}
}
}
request['headers']['host'] = [{'key': 'host', 'value': 'www.example.com'}]
return request
Node.js
'use strict';
/**
* This Lambda function demonstrates how to gradually transfer traffic from
* one S3 bucket to another in a controlled way.
* We define a variable BLUE_TRAFFIC_PERCENTAGE which can take values from
* 1 to 100. If the generated randomNumber less than or equal to
BLUE_TRAFFIC_PERCENTAGE, traffic
* is re-directed to blue-bucket. If not, the default bucket that we've configured
406
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos
* is used.
*/
Python
import math
import random
'''
This Lambda function demonstrates how to gradually transfer traffic from
one S3 bucket to another in a controlled way.
We define a variable BLUE_TRAFFIC_PERCENTAGE which can take values from
1 to 100. If the generated randomNumber less than or equal to
BLUE_TRAFFIC_PERCENTAGE, traffic
is re-directed to blue-bucket. If not, the default bucket that we've configured
is used.
'''
return request
La implementación de esta funcionalidad para su distribución puede tener ventajas como las siguientes:
• Reducir las latencias cuando la región especificada está más cerca del país del lector
• Proporcionar soberanía de los datos, al asegurarse de que los datos se distribuyen desde un origen que
está en el país del que provino la solicitud
407
Amazon CloudFront Guía para desarrolladores
Actualización de estados de error: ejemplos
Tenga en cuenta que para habilitar esta funcionalidad, debe configurar su distribución para almacenar en
la caché en función del encabezado CloudFront-Viewer-Country. Para obtener más información, consulte
Caché en función de encabezados de solicitud seleccionados (p. 56).
Node.js
'use strict';
if (request.headers['cloudfront-viewer-country']) {
const countryCode = request.headers['cloudfront-viewer-country'][0].value;
if (countryCode === 'GB' || countryCode === 'DE' || countryCode === 'IE' ) {
const domainName = 'eu.example.com';
request.origin.custom.domainName = domainName;
request.headers['host'] = [{key: 'host', value: domainName}];
}
}
callback(null, request);
};
Python
viewerCountry = request['headers'].get('cloudfront-viewer-country')
if viewerCountry:
countryCode = viewerCountry[0]['value']
if countryCode == 'GB' or countryCode == 'DE' or countryCode == 'IE':
domainName = 'eu.example.com'
request['origin']['custom']['domainName'] = domainName
request['headers']['host'] = [{'key': 'host', 'value': domainName}]
return request
Temas
• Ejemplo: Uso de un disparador de respuesta del origen para actualizar el código de estado de error a
200-OK (p. 408)
• Ejemplo: Uso de un disparador de respuesta del origen para actualizar el código de estado de error a
302-Found (p. 409)
408
Amazon CloudFront Guía para desarrolladores
Actualización de estados de error: ejemplos
Node.js
'use strict';
/**
* This function updates the response status to 200 and generates static
* body content to return to the viewer in the following scenario:
* 1. The function is triggered in an origin response
* 2. The response status from the origin server is an error status code (4xx or
5xx)
*/
callback(null, response);
};
Python
'''
This function updates the response status to 200 and generates static
body content to return to the viewer in the following scenario:
1. The function is triggered in an origin response
2. The response status from the origin server is an error status code (4xx or 5xx)
'''
Node.js
'use strict';
409
Amazon CloudFront Guía para desarrolladores
Acceso al cuerpo de la solicitud: ejemplos
/**
* This function updates the HTTP status code in the response to 302, to redirect
to another
* path (cache behavior) that has a different origin configured. Note the
following:
* 1. The function is triggered in an origin response
* 2. The response status from the origin server is an error status code (4xx or
5xx)
*/
response.status = 302;
response.statusDescription = 'Found';
callback(null, response);
};
Python
'''
This function updates the HTTP status code in the response to 302, to redirect to
another
path (cache behavior) that has a different origin configured. Note the following:
1. The function is triggered in an origin response
2. The response status from the origin server is an error status code (4xx or 5xx)
'''
response['status'] = 302
response['statusDescription'] = 'Found'
return response
Para utilizar estos ejemplos, debe habilitar la opción incluir cuerpo en la asociación de funciones
Lambda de la distribución. No está habilitada de forma predeterminada.
410
Amazon CloudFront Guía para desarrolladores
Acceso al cuerpo de la solicitud: ejemplos
Temas
• Ejemplo: Uso de un desencadenador de solicitud para leer un formulario HTML (p. 411)
• Ejemplo: Uso de un desencadenador de solicitud para modificar un formulario HTML (p. 412)
<html>
<form action="http://example.com" method="post">
Param 1: <input type="text" name="name1"><br>
Param 2: <input type="text" name="name2"><br>
input type="submit" value="Submit">
</form>
</html>
Para la función de ejemplo que se indica a continuación, la función se debe desencadenar en una solicitud
al origen o del lector de CloudFront.
Node.js
'use strict';
/**
* This function demonstrates how you can read the body of a POST request
* generated by an HTML form (web form). The function is triggered in a
* CloudFront viewer request or origin request event type.
*/
/* HTML forms send the data in query string format. Parse it. */
const params = querystring.parse(body);
411
Amazon CloudFront Guía para desarrolladores
Acceso al cuerpo de la solicitud: ejemplos
}
return callback(null, request);
};
Python
import base64
from urllib.parse import parse_qs
'''
Say there is a POST request body generated by an HTML such as:
<html>
<form action="http://example.com" method="post">
Param 1: <input type="text" name="name1"><br>
Param 2: <input type="text" name="name2"><br>
input type="submit" value="Submit">
</form>
</html>
'''
'''
This function demonstrates how you can read the body of a POST request
generated by an HTML form (web form). The function is triggered in a
CloudFront viewer request or origin request event type.
'''
if request['method'] == 'POST':
# HTTP body is always passed as base64-encoded string. Decode it
body = base64.b64decode(request['body']['data'])
'''
For demonstration purposes, we only log the form fields here.
You can put your custom logic here. For example, you can store the
fields in a database, such as Amazon DynamoDB, and generate a response
right from your Lambda@Edge function.
'''
for key, value in params.items():
print("For %s use submitted %s" % (key, value))
return request
Node.js
'use strict';
412
Amazon CloudFront Guía para desarrolladores
Acceso al cuerpo de la solicitud: ejemplos
function getUpdatedBody(request) {
/* HTTP body is always passed as base64-encoded string. Decode it. */
const body = Buffer.from(request.body.data, 'base64').toString();
Python
import base64
from urllib.parse import parse_qs, urlencode
413
Amazon CloudFront Guía para desarrolladores
Requisitos y restricciones
request['body']['data'] = getUpdatedBody(request)
return request
def getUpdatedBody(request):
# HTTP body is always passed as base64-encoded string. Decode it
body = base64.b64decode(request['body']['data'])
# You can put your custom logic here. For example, you can truncate long
# bodies from malicious requests
params['new-param-name'] = 'new-param-value'
return urlencode(params)
Temas
• Distribuciones y asociaciones de CloudFront (p. 414)
• Desencadenadores de CloudFront para funciones de Lambda (p. 414)
• Registros de CloudWatch (p. 415)
• Encabezados (p. 415)
• Códigos de estado HTTP (p. 417)
• Configuración y tiempos de ejecución admitidos de la función Lambda (p. 417)
• Cuotas (p. 418)
• Microsoft Smooth Streaming (p. 420)
• Network Access (p. 420)
• Parámetros de cadenas de consulta (p. 420)
• Tamaño máximo del cuerpo con la opción Include Body (Incluir cuerpo) (p. 420)
• Etiquetado (p. 420)
• URI (p. 421)
• Codificación de los URI y las cadenas de consulta (p. 421)
414
Amazon CloudFront Guía para desarrolladores
Registros de CloudWatch
Registros de CloudWatch
Para obtener información acerca de las cuotas de Amazon CloudWatch Logs (anteriormente conocidas
como límites), consulte Cuotas de CloudWatch Logs en la Guía del usuario de Amazon CloudWatch.
Encabezados
Tenga en cuenta los siguientes requisitos y restricciones de uso de encabezados en Lambda@Edge.
Temas
• Encabezados de listas negras (p. 415)
• Encabezados de solo lectura (p. 415)
• Encabezados CloudFront-* (p. 416)
• Connection
• Expect
• Keep-Alive
• Proxy-Authenticate
• Proxy-Authorization
• Proxy-Connection
• Trailer
• Upgrade
• X-Accel-Buffering
• X-Accel-Charset
• X-Accel-Limit-Rate
• X-Accel-Redirect
• X-Amz-Cf-*
• X-Amzn-*
• X-Cache
• X-Edge-*
• X-Forwarded-Proto
• X-Real-IP
415
Amazon CloudFront Guía para desarrolladores
Encabezados
de encabezado, pero no puede cambiarlos. Si la función de Lambda agrega o edita un encabezado de solo
lectura, ocurrirá un error al validar la solicitud en CloudFront. CloudFront devuelve código de estado HTTP
502 (Gateway incorrecta) al lector.
Encabezados CloudFront-*
Una función de Lambda puede leer, editar, quitar o agregar cualquiera de los siguientes encabezados.
• CloudFront-Forwarded-Proto
• CloudFront-Is-Desktop-Viewer
• CloudFront-Is-Mobile-Viewer
• CloudFront-Is-SmartTV-Viewer
• CloudFront-Is-Tablet-Viewer
• CloudFront-Viewer-Country
416
Amazon CloudFront Guía para desarrolladores
Códigos de estado HTTP
• Si desea que CloudFront agregue estos encabezados, debe configurar CloudFront para que almacene
en caché en función de estos encabezados. Para obtener información acerca de cómo configurar
CloudFront para almacenar en caché en función de los encabezados especificados, consulte Caché en
función de encabezados de solicitud seleccionados (p. 56) en el tema Valores que deben especificarse
al crear o actualizar una distribución (p. 43).
• CloudFront agrega los encabezados después del evento de solicitud del lector.
• Si el lector agrega encabezados que tienen estos nombres, CloudFront sobrescribe los valores de los
encabezados.
• Para los eventos de lector, CloudFront-Viewer-Country está en la lista negra. Los encabezados
de listas negras no se exponen y las funciones de Lambda@Edge no pueden añadirlos. Si su función
de Lambda agrega un encabezado incluido en la lista negra, la solicitud no supera la validación de
CloudFront y CloudFront devuelve código de estado HTTP 502 (Gateway incorrecta) al lector.
• Ejemplo: redireccionamiento de solicitudes de espectadores a una URL específica del país (p. 398)
• Ejemplo: ofrecer distintas versiones de un objeto en función del dispositivo (p. 399)
Sin embargo, puede ejecutar funciones Lambda para los errores de respuesta de origen, incluidos los
códigos de estado HTTP 4xx y 5xx. Para obtener más información, consulte Actualización de respuestas
HTTP en disparadores de respuesta del origen (p. 386).
Las versiones 8 y 6 de Node.js han llegado al final de su vida útil. No puede crear ni
actualizar funciones con estos runtimes. Si tiene una función existente con uno de estos
runtimes, puede asociarla a una distribución de CloudFront, y las funciones que ya están
asociadas a una distribución seguirán ejecutándose. Sin embargo, le recomendamos que
mueva su función a una versión más reciente de Node.js. Para obtener más información,
consulte Runtime Support Policy (Política de soporte del tiempo de ejecución en la Guía para
desarrolladores de AWS Lambda y la programación de versiones de Node.js en GitHub.
• Python 3.8
• Python 3.7
• No puede configurar su función de Lambda para obtener acceso a recursos dentro de la VPC.
• No puede asociar su función de Lambda a una distribución de CloudFront propiedad de otra cuenta de
AWS.
417
Amazon CloudFront Guía para desarrolladores
Cuotas
Cuotas
Las cuotas de esta sección se aplican a Lambda@Edge. Estas cuotas se suman a las cuotas
predeterminadas de CloudFront y Lambda, que también se aplican. Para conocer las cuotas
predeterminadas, consulte Cuotas (p. 519) en esta guía y Cuotas en la Guía para desarrolladores de
AWS Lambda.
Note
Lambda escala dinámicamente la capacidad en respuesta al aumento del tráfico, según las cuotas
de la cuenta. Para obtener más información, consulte Escalado de funciones en la Guía para
desarrolladores de AWS Lambda.
Además, tenga en cuenta que existen algunas otras restricciones al utilizar las funciones de
Lambda@Edge. Para obtener más información, consulte Requisitos y restricciones en funciones de
Lambda (p. 414).
Otras cuotas
Distribuciones por cuenta de AWS para los que puede crear disparadores 25
418
Amazon CloudFront Guía para desarrolladores
Cuotas
Para obtener más información, consulte Escalado de funciones en la Guía Solicitar una ampliación
para desarrolladores de AWS Lambda. de la cuota
Tipo de codificación del cuerpo Tamaño del cuerpo Tamaño del cuerpo
permitido: solicitud permitido: solicitud
del espectador del origen
text 40 KB 1 MB
419
Amazon CloudFront Guía para desarrolladores
Microsoft Smooth Streaming
Network Access
Tanto las funciones desencadenadas por los eventos de solicitud al origen y respuesta del origen así como
las desencadenadas por los eventos de solicitud del lector y respuesta al lector pueden efectuar llamadas
de red a recursos de Internet y a servicios de AWS, como buckets de Amazon S3, tablas de DynamoDB o
instancias de Amazon EC2.
Para obtener más información, consulte Almacenamiento en caché de contenido en función de parámetros
de cadenas de consulta (p. 274).
Etiquetado
Algunos servicios de AWS, como Amazon CloudFront y AWS Lambda, admiten agregar etiquetas a
los recursos del servicio. Sin embargo, en este momento, no puede aplicar etiquetas a los recursos de
420
Amazon CloudFront Guía para desarrolladores
URI
Lambda@Edge. Para obtener más información sobre el etiquetado en CloudFront, consulte Etiquetado de
distribuciones de Amazon CloudFront (p. 72).
URI
Si una función cambia la URI de una solicitud, eso no cambia el comportamiento de la caché frente a la
solicitud ni el origen al que se reenvía la solicitud.
• La codificación del URI y la cadena de consulta que CloudFront recibió en la solicitud del lector
• Si una función activada por un evento de solicitud al origen o del espectador cambió el URI o la cadena
de consulta
Si los valores están codificados mediante cualquier otra codificación de caracteres, CloudFront supone
que tienen la codificación ISO 8859-1 e intenta convertir esa codificación de ISO 8859-1 a UTF-8.
Important
La versión convertida podría ser una interpretación inexacta de los valores de la solicitud
original. Esto puede hacer que una función de Lambda o su origen produzca un resultado no
deseado.
El valor que CloudFront reenvía a su servidor de origen depende de si las funciones desencadenadas por
los eventos de solicitud del lector o al origen cambian el URI o la cadena de consulta:
• Si las funciones no cambian el URI o la cadena de consulta: CloudFront reenvía a su servidor de origen
los valores que recibió CloudFront en la solicitud del lector.
• Si las funciones cambian el URI o la cadena de consulta: CloudFront reenvía el valor con codificación
UTF-8.
421
Amazon CloudFront Guía para desarrolladores
Informes de uso y facturación de AWS para CloudFront
Temas
• Informes de uso y facturación de AWS para CloudFront (p. 422)
• Informes de CloudFront en la consola (p. 426)
• Monitoreo de CloudFront con Amazon CloudWatch (p. 452)
• Registro de CloudFront (p. 462)
• Seguimiento de los cambios en la configuración mediante AWS Config (p. 494)
• El informe de facturación es una vista general de toda la actividad de los servicios de AWS que utiliza,
incluido CloudFront. Para obtener más información, consulte Informe de facturación de AWS para
CloudFront (p. 422).
• El informe de uso es un resumen de la actividad de un servicio específico, agrupado por hora, día o mes.
También incluye gráficos de uso que proporcionan una representación gráfica del uso de CloudFront.
Para obtener más información, consulte Informe de uso de AWS para CloudFront (p. 423).
Temas
• Informe de facturación de AWS para CloudFront (p. 422)
• Informe de uso de AWS para CloudFront (p. 423)
• Interpretación de la factura de AWS y el informe de uso de AWS para CloudFront (p. 424)
También puede descargar una versión más detallada del informe en formato CSV. El informe de
facturación detallado incluye los siguientes valores que se aplican a CloudFront:
• ProductCode: AmazonCloudFront
422
Amazon CloudFront Guía para desarrolladores
Informe de uso de AWS para CloudFront
Para obtener más información, consulte Interpretación de la factura de AWS y el informe de uso de AWS
para CloudFront (p. 424).
• ItemDescription: una descripción de la tarifa de facturación de UsageType.
• Usage Start Date/Usage End Date: el día correspondiente al uso en horario universal coordinado (UTC).
• Usage Quantity: uno de los siguientes valores:
• El número de solicitudes durante el periodo especificado.
• La cantidad de datos transferidos en gigabytes.
• La cantidad de objetos invalidados.
• La suma de los meses prorrateados en los que tuvo certificados SSL asociados con distribuciones
de CloudFront habilitadas. Por ejemplo, si tiene un certificado asociado a una distribución habilitada
por un mes entero y otro certificado asociado a una distribución habilitado para la mitad del mes, este
valor será 1,5.
• Service: AmazonCloudFront
• Operation: método HTTP. Entre los valores se incluyen DELETE, GET, HEAD, OPTIONS, PATCH, POST y
PUT.
• UsageType: uno de los siguientes valores
• Un código que identifica el tipo de transferencia de datos.
• Invalidations
• SSL-Cert-Custom
Para obtener más información, consulte Interpretación de la factura de AWS y el informe de uso de AWS
para CloudFront (p. 424).
• Resource: el ID de la distribución de CloudFront asociada con el uso o el ID de un certificado SSL que
haya asociado a una distribución de CloudFront.
423
Amazon CloudFront Guía para desarrolladores
Interpretación de la factura de AWS y el
informe de uso de AWS para CloudFront
Si utiliza Amazon S3 como origen de CloudFront, considere la posibilidad de ejecutar también el informe de
uso de Amazon S3. Sin embargo, si utiliza Amazon S3 para fines que no sean de origen de distribución de
CloudFront, es posible que no esté claro qué parte se aplica al uso de CloudFront.
Tip
Para obtener información detallada acerca de cada solicitud que CloudFront recibe de sus
objetos, active los registros de acceso de CloudFront de su distribución. Para obtener más
información, consulte Configuración y uso de registros estándar (registros de acceso) (p. 463).
• Usage Types (Tipos de uso): para obtener una explicación detallada de los tipos de uso de
CloudFront, consulte the section called “Interpretación de la factura de AWS y el informe de uso de
AWS para CloudFront” (p. 424).
Para Amazon S3, seleccione All Usage Types (Todos los tipos de uso).
• Operation (Operación): seleccione All Operations (Todas las operaciones).
• Time Period (Periodo): seleccione el periodo que desea que el informe abarque.
• Report Granularity (Detalle del informe): seleccione si desea que el informe incluya subtotales por
hora, por día o por mes.
7. Haga clic en el botón para descargar el informe en el formato deseado.
8. Siga las indicaciones que aparecen en pantalla para ver o guardar el informe.
Además, puede obtener un informe de uso de AWS para CloudFront más detallado que la factura de
AWS para CloudFront. En la segunda columna de la tabla se enumeran los elementos que aparecen en el
informe de uso y se muestra la correlación entre los elementos de la factura y los del informe de uso.
La mayoría de códigos de ambas columnas incluyen una abreviatura de dos letras que indica la ubicación
de la actividad. En la siguiente tabla, la región de un código se sustituirá en su factura de AWS y en el
informe de uso por una de las siguientes abreviaturas de dos letras:
• AP: Hong Kong, Filipinas, Corea del Sur, Taiwán, y Singapur (Asia Pacífico)
424
Amazon CloudFront Guía para desarrolladores
Interpretación de la factura de AWS y el
informe de uso de AWS para CloudFront
• AU: Australia
• CA: Canadá
• UE: Europa e Israel
• IN: India
• JP: Japón
• ME: Oriente Medio
• SA: América del Sur
• US: Estados Unidos
• ZA: Sudáfrica
Para obtener más información acerca de los precios por región, consulte Precios de Amazon CloudFront.
Note
En esta tabla no se incluyen cargos por transferencia de objetos desde un bucket de Amazon S3
a ubicaciones de borde de CloudFront. Estos cargos, de haberlos, aparecen en la sección AWS
Data Transfer (Transferencia de datos de AWS) de su factura de AWS.
Elementos de la factura de CloudFront Valores de la columna de tipo de uso del informe de uso de
CloudFront
región-DataTransfer-Out-OBytes región-Out-OBytes-HTTP-Proxy
Total de bytes transferidos desde las Total de bytes transferidos por HTTP desde las ubicaciones
ubicaciones de borde de CloudFront de borde de CloudFront al origen en respuesta a solicitudes
al origen en respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.
DELETE, OPTIONS, PATCH, POST y PUT.
Los cargos incluyen la transferencia región-Out-OBytes-HTTPS-Proxy
de datos para datos de WebSocket de
cliente a servidor. Total de bytes transferidos por HTTPS desde las ubicaciones
de borde de CloudFront al origen en respuesta a solicitudes
DELETE, OPTIONS, PATCH, POST y PUT.
región-Requests-Tier1 región-Requests-HTTP-Static
Número de solicitudes HTTP GET y Cantidad de solicitudes HTTP GET y HEAD para la que se
HEAD distribuyeron objetos con TTL ≥ 3 600 segundos.
región-Requests-HTTP-Dynamic
425
Amazon CloudFront Guía para desarrolladores
Informes de la consola de CloudFront
Elementos de la factura de CloudFront Valores de la columna de tipo de uso del informe de uso de
CloudFront
Cantidad de solicitudes HTTP GET y HEAD para las que se
distribuyeron objetos con TTL < 3 600 segundos
región-Requests-Tier2-HTTPS región-Requests-HTTPS-Static
Cantidad de solicitudes HTTPS GET y Cantidad de solicitudes HTTPS GET y HEAD para la que se
HEAD distribuyeron objetos con TTL ≥ 3 600 segundos.
región-Requests-HTTPS-Dynamic
región-Requests-HTTP-Proxy región-Requests-HTTP-Proxy
región-Requests-HTTPS-Proxy región-Requests-HTTPS-Proxy
región-Requests-HTTPS-Proxy-FLE región-Requests-HTTPS-Proxy-FLE
Invalidaciones Invalidaciones
SSL-Cert-Custom SSL-Cert-Custom
El cargo por el uso de un certificado SSL El mismo que el elemento correspondiente en la factura de
con un nombre de dominio alternativo de CloudFront
CloudFront como example.com en lugar
del certificado SSL predeterminado de
CloudFront y el nombre de dominio que
CloudFront asignó a la distribución.
426
Amazon CloudFront Guía para desarrolladores
Informes de la consola de CloudFront
La mayoría de estos informes se basa en los datos de los registros de acceso de CloudFront, que
contienen información detallada sobre cada solicitud de usuario que CloudFront recibe. No es necesario
habilitar los registros de acceso para ver los informes. Para obtener más información, consulte
Configuración y uso de registros estándar (registros de acceso) (p. 463). El informe de uso de CloudFront
se basa en el informe de uso de AWS para CloudFront, que tampoco requiere ninguna configuración
especial. Para obtener más información, consulte Informe de uso de AWS para CloudFront (p. 423).
• Total Requests (Solicitudes totales): indica la cantidad total de solicitudes de todos los códigos de estado
HTTP (por ejemplo, 200 o 404) y todos los métodos (por ejemplo, GET, HEAD o POST).
• Percentage of Viewer Requests by Result Type (Porcentaje de solicitudes de lector por tipo de
resultado): muestra los aciertos, los fallos y los errores como porcentaje del total de solicitudes de lector
para la distribución de CloudFront seleccionada.
• Bytes Transferred to Viewers (Bytes transferidos a los lectores): muestra la cantidad total de bytes y la
de bytes de fallos.
• HTTP Status Codes (Códigos de estado HTTP): muestra las solicitudes de lector por código de estado
HTTP.
• Percentage of GET Requests that Didn't Finish Downloading (Porcentaje de solicitudes GET que no
terminaron de descargar): muestra las solicitudes GET de lector que no terminaron de descargar el
objeto solicitado, como un porcentaje del total.
Para obtener más información, consulte Informes estadísticos de caché de CloudFront (p. 428).
El informe de objetos populares de CloudFront enumera los 50 objetos más populares y las estadísticas
de esos objetos, incluida la cantidad de solicitudes del objeto, el número de aciertos y fallos, la tasa de
aciertos, la cantidad de bytes enviados que resultaron en fallos, el total de bytes enviados, la cantidad de
descargas incompletas y la cantidad de solicitudes por código de estado HTTP (2xx, 3xx, 4xx y 5xx).
Para obtener más información, consulte Informe de objetos populares de CloudFront (p. 432).
Para obtener más información, consulte Informe de remitentes principales de CloudFront (p. 436).
• Number of Requests (Cantidad de solicitudes): muestra la cantidad total de solicitudes a las que
responde CloudFront desde ubicaciones de borde en la región seleccionada durante cada intervalo de
tiempo para la distribución de CloudFront especificada.
427
Amazon CloudFront Guía para desarrolladores
Informes estadísticos de caché de CloudFront
• Data Transferred by Protocol (Datos transferidos por protocolo) y Data Transferred by Destination
(Datos transferidos por destino): muestra la cantidad total de datos transferidos desde ubicaciones de
borde de CloudFront en la región seleccionada durante cada intervalo de tiempo para la distribución de
CloudFront especificada. Separan los datos de manera diferente, como se indica a continuación:
• By Protocol (Por protocolo): separa los datos por protocolo: HTTP o HTTPS.
• By Destination (Por destino): separa los datos por destino: a sus usuarios o a su origen.
Para obtener más información, consulte Informes de uso de CloudFront (p. 439).
• Devices (Dispositivos): muestra los tipos de dispositivo (por ejemplo, de escritorio o móvil) que los
usuarios utilizan para obtener acceso a su contenido.
• Browsers (Navegadores): muestra el nombre (o el nombre y la versión) de los navegadores que los
usuarios utilizan con mayor frecuencia para obtener acceso a su contenido (por ejemplo, Chrome o
Firefox).
• Operating Systems (Sistemas operativos): muestra el nombre (o el nombre y la versión) del sistema
operativo desde el que los lectores obtienen acceso a su contenido con mayor frecuencia, por ejemplo,
Linux, Mac OS X o Windows.
• Locations (Ubicaciones): muestra la ubicación, por país o estado o territorio de EE. UU., desde la que los
lectores obtienen acceso a su contenido con mayor frecuencia.
Para obtener más información, consulte Informe de lectores de CloudFront (p. 444).
• Daily (Por día): para ver gráficos con un punto de datos por día, seleccione un intervalo de fechas
dentro de los últimos 60 días.
• Hourly (Por hora): para ver gráficos con un punto de datos por cada hora, seleccione un intervalo de
fechas igual o inferior a 14 días en los últimos 60 días.
428
Amazon CloudFront Guía para desarrolladores
Informes estadísticos de caché de CloudFront
• Una distribución individual: los gráficos muestran los datos de la distribución web de CloudFront
seleccionada. La lista Distribution (Distribución) muestra el ID de distribución y los nombres de
dominio alternativos (CNAME), de haberlos. Si una distribución no tiene otros nombres de dominio,
la lista incluye los nombres de dominio de origen para la distribución.
• Todas las distribuciones: los gráficos muestran el total de datos de todas las distribuciones web
asociadas a la cuenta de AWS actual, excluyendo las distribuciones que ha eliminado.
7. Haga clic en Update (Actualizar).
8. Para ver la información contenida en los puntos de datos por día o por hora de un gráfico, pase el
ratón por encima del punto de datos correspondiente.
9. Tome en cuenta que puede cambiar el escalado vertical a gigabytes, megabytes o kilobytes en los
gráficos que muestran los datos transferidos.
Temas
• Descargar datos en formato CSV (p. 429)
• Cómo los gráficos estadísticos de caché están relacionados con los datos contenidos en los registros
de acceso de CloudFront (p. 431)
1. Mientras consulta el informe Cache Statistics (Estadísticas de caché), haga clic en CSV.
2. En el cuadro de diálogo Opening file name (Abriendo nombre de archivo), decida si desea abrir o
guardar el archivo.
Version
429
Amazon CloudFront Guía para desarrolladores
Informes estadísticos de caché de CloudFront
DistributionID
El principio del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
EndDateUTC
El fin del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
GeneratedTimeUTC
El continente desde el que se originan las solicitudes de los espectadores, o ALL si ha decidido
descargar un informe de todas las ubicaciones.
DistributionID
El continente desde el que se originan las solicitudes de los espectadores, o ALL si ha decidido
descargar un informe de todas las ubicaciones.
TimeBucket
La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).
RequestCount
La cantidad total de solicitudes de todos los códigos de estado HTTP (por ejemplo, 200 o 404) y todos
los métodos (por ejemplo, GET, HEAD o POST).
HitCount
La cantidad de solicitudes de lectores para las que se ofrece el objeto desde una caché de borde de
CloudFront.
MissCount
La cantidad de solicitudes de lectores para las cuales el objeto no se encuentra actualmente en una
caché de borde, por lo que CloudFront debe obtener el objeto desde su origen.
430
Amazon CloudFront Guía para desarrolladores
Informes estadísticos de caché de CloudFront
ErrorCount
La cantidad de solicitudes de lectores que generaron un error, por lo que CloudFront no pudo servir el
objeto.
IncompleteDownloadCount
La cantidad de solicitudes de espectadores comenzadas por ellos mismos, pero en las que no terminó
de descargarse el objeto.
HTTP2xx
La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 2xx (realizado
correctamente).
HTTP3xx
La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 3xx (acción
adicional requerida).
HTTP4xx
La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 4xx (error del
cliente).
HTTP5xx
La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 5xx (error del
servidor).
TotalBytes
La cantidad total de bytes enviados por CloudFront a los lectores en respuesta a todas las solicitudes
para todos los métodos de HTTP.
BytesFromMisses
La cantidad de bytes enviados a espectadores para objetos que no estaban en la caché perimetral
en el momento de la solicitud. Este valor es una buena estimación de los bytes transferidos desde el
origen hasta las cachés de borde de CloudFront. Sin embargo, excluye las solicitudes de objetos que
ya están en la caché perimetral, pero que han caducado.
Total Requests
Este gráfico muestra la cantidad total de solicitudes de todos los códigos de estado HTTP (por
ejemplo, 200 o 404) y todos los métodos (por ejemplo, GET, HEAD, or POST). El total de solicitudes
que se muestran en esta tabla es igual a la cantidad total de solicitudes en los archivos de registro del
mismo periodo.
Percentage of Viewer Requests by Result Type
Este gráfico muestra los aciertos, fallos y errores como porcentaje del total de solicitudes de los
lectores a la distribución de CloudFront seleccionada:
• Hit (Acierto): una solicitud del lector cuyo objeto se envió desde una caché de borde de CloudFront.
En los registros de acceso, estas son solicitudes cuyo valor de x-edge-response-result-type
es Hit.
431
Amazon CloudFront Guía para desarrolladores
Informe de objetos populares de CloudFront
• Miss (Fallo): una solicitud del lector para la cual el objeto no se encuentra en ese momento en una
caché de borde, por lo que CloudFront debe obtener el objeto desde su origen. En los registros de
acceso, estas son solicitudes cuyo valor de x-edge-response-result-type es Miss.
• Error: una solicitud del lector en la que ocurrió un error, por lo que CloudFront no pudo ofrecer
el objeto. En los registros de acceso, estas son solicitudes cuyo valor de x-edge-response-
result-type es Error, LimitExceeded o CapacityExceeded.
El gráfico no incluye visitas de actualización (solicitudes de objetos que están en la caché de borde,
pero que han caducado). En los registros de acceso, las visitas de actualización son solicitudes cuyo
valor de x-edge-response-result-type es RefreshHit.
Bytes Transferred to Viewers
Este gráfico muestra las solicitudes de los espectadores por código de estado HTTP. En los registros
de acceso de CloudFront, los códigos de estado aparecen en la columna sc-status:
• 2xx: la solicitud se ha realizado correctamente.
• 3xx: se requiere una acción adicional. Por ejemplo, 301 (Movido permanentemente) significa que el
objeto solicitado se ha movido a otra ubicación.
• 4xx: aparentemente, el cliente ha cometido un error. Por ejemplo, 404 (No encontrado) significa que
el cliente solicitó un objeto que no se pudo encontrar.
• 5xx: el servidor de origen no pudo satisfacer la solicitud. Por ejemplo, 503 (Servicio no disponible)
significa que el servidor de origen no está disponible en ese momento.
Percentage of GET Requests that Didn't Finish Downloading
Este gráfico muestra el porcentaje del total de solicitudes que corresponde a las solicitudes de
espectadores GET que no terminaron de descargar el objeto solicitado. Normalmente, la descarga de
un objeto no finaliza correctamente porque el espectador cancela la descarga, por ejemplo, al hacer
clic en un enlace diferente o cerrar el navegador. En los registros de acceso de CloudFront, estas
solicitudes tienen un valor de 200 en la columna sc-status y un valor de Error en la columna x-
edge-result-type.
Los datos del informe de objetos populares procede del mismo origen que los registros de acceso de
CloudFront. Para obtener un recuento preciso de los 50 objetos más populares, CloudFront cuenta las
solicitudes de todos los objetos en intervalos de 10 minutos a partir de la medianoche y mantiene un
recuento actual de los 150 objetos más populares durante las próximas 24 horas. (CloudFront también
432
Amazon CloudFront Guía para desarrolladores
Informe de objetos populares de CloudFront
retiene los totales diarios de los 150 objetos más populares durante 60 días). Cerca de la parte inferior de
la lista, los objetos suben y bajan puestos constantemente o salen de la lista, así que los totales de dichos
objetos son aproximados. Los cincuenta objetos de la parte superior de la lista de 150 objetos pueden
subir o bajar, pero no suelen salir de la lista, así que el total de los objetos de esa parte suele ser más
fiable.
Cuando un objeto sale de la lista de los 150 objetos más populares y vuelve a entrar pasado un día,
CloudFront agrega un número estimado de solicitudes para el período durante el cual el objeto no estuvo
en la lista. La estimación se basa en el número de solicitudes recibidas por cualquier objeto de la parte
inferior de la lista durante dicho periodo. Si el objeto sube a la parte de los primeros 50 objetos más tarde
el mismo día, las estimaciones de la cantidad de solicitudes que CloudFront recibió mientras el objeto
estaba fuera de la parte de los primeros 150 objetos suele provocar que la cantidad de solicitudes de
ese objeto reflejada en el informe de objetos populares sea mayor que la que aparece en los registros de
acceso.
Note
No es necesario habilitar el registro de accesos para ver una lista de objetos populares.
Temas
• Descargar datos en formato CSV (p. 433)
• Cómo los datos del informe de objetos populares están relacionados con los datos de los registros de
acceso de CloudFront (p. 435)
1. Mientras consulta el informe Popular Objects (Objetos populares), haga clic en CSV.
2. En el cuadro de diálogo Opening file name (Abriendo nombre de archivo), decida si desea abrir o
guardar el archivo.
433
Amazon CloudFront Guía para desarrolladores
Informe de objetos populares de CloudFront
Version
El principio del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
EndDateUTC
El fin del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
GeneratedTimeUTC
DistributionID
La cantidad de solicitudes de lectores para las que se ofrece el objeto desde una caché de borde de
CloudFront.
MissCount
La cantidad de solicitudes de lectores para las cuales el objeto no se encuentra actualmente en una
caché de borde, por lo que CloudFront debe obtener el objeto desde su origen.
HitCountPct
La cantidad de bytes enviados a espectadores para este objeto mientras no estaba en la caché
perimetral en el momento de la solicitud.
434
Amazon CloudFront Guía para desarrolladores
Informe de objetos populares de CloudFront
TotalBytes
La cantidad total de bytes enviados por CloudFront a los lectores para este objeto en respuesta a
todas las solicitudes para todos los métodos de HTTP.
IncompleteDownloadCount
La cantidad de solicitudes de ese objeto comenzadas por los espectadores, pero en las que no
terminó de descargarse dicho objeto.
HTTP2xx
La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 2xx (realizado
correctamente).
HTTP3xx
La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 3xx (acción
adicional requerida).
HTTP4xx
La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 4xx (error del
cliente).
HTTP5xx
La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 5xx (error del
servidor).
URL
Los últimos 500 caracteres de la URL que los espectadores utilizan para obtener acceso al objeto.
Solicitudes
La cantidad total de solicitudes del objeto. Este valor suele corresponderse estrechamente con la
cantidad de solicitudes GET del objeto en los registros de acceso de CloudFront.
Hits
La cantidad de solicitudes de lectores para las que se envió el objeto desde una caché de borde de
CloudFront. En los registros de acceso, estas son solicitudes cuyo valor de x-edge-response-
result-type es Hit.
Misses
La cantidad de solicitudes de lectores para las cuales el objeto no se encontraba en una caché de
borde, por lo que CloudFront debe obtener el objeto desde su origen. En los registros de acceso, estas
son solicitudes cuyo valor de x-edge-response-result-type es Miss.
Hit Ratio
El valor de la columna Hits (Aciertos) como porcentaje del valor de la columna Requests (Solicitudes).
435
Amazon CloudFront Guía para desarrolladores
Informe de remitentes principales de CloudFront
La cantidad de bytes enviados a espectadores para objetos que no estaban en la caché perimetral
en el momento de la solicitud. En los registros de acceso de CloudFront, Bytes from Misses (Bytes de
fallos) es la suma de los valores de la columna sc-bytes de las solicitudes cuyo valor de x-edge-
result-type es Miss.
Total Bytes
La cantidad total de bytes que CloudFront ha enviado a los lectores en respuesta a todas las
solicitudes del objeto por todos los métodos HTTP. En los registros de acceso de CloudFront, Total
Bytes (Bytes en total) es la suma de los valores de la columna sc-bytes de todas las solicitudes
realizadas durante el mismo periodo.
Incomplete Downloads
La cantidad de solicitudes cuyo código de estado HTTP es 2xx, Successful. En los registros de
acceso de CloudFront, los códigos de estado aparecen en la columna sc-status.
3xx
La cantidad de solicitudes cuyo valor de código de estado HTTP es 3xx, Redirection. Los
códigos de estado 3xx indican que se requiere una acción adicional. Por ejemplo, 301 (Movido
permanentemente) significa que el objeto solicitado se ha movido a otra ubicación.
4xx
La cantidad de solicitudes cuyo valor de código de estado HTTP es 4xx, Client Error. Los códigos
de estado 4xx indican que el cliente pudo haber cometido un error. Por ejemplo, 404 (No encontrado)
significa que el cliente solicitó un objeto que no se pudo encontrar.
5xx
La cantidad de solicitudes cuyo valor de código de estado HTTP es 5xx, Server Error. Los códigos
de estado 5xx indican que el servidor de origen no pudo satisfacer la solicitud. Por ejemplo, 503
(Servicio no disponible) significa que el servidor de origen no está disponible en ese momento.
Si un usuario escribe una URL directamente en el navegador, no hay remitente para el objeto
solicitado.
Los datos del informe de remitentes principales proceden de la misma fuente que los registros de acceso
de CloudFront. Para obtener un conteo preciso de los 25 remitentes principales, CloudFront cuenta
las solicitudes de todos los objetos en intervalos de 10 minutos y mantiene un recuento actual de los
436
Amazon CloudFront Guía para desarrolladores
Informe de remitentes principales de CloudFront
75 remitentes principales. Cerca de la parte inferior de la lista, los remitentes suben y bajan puestos
constantemente o salen de la lista, así que los totales de dichos remitentes son aproximados. Los 25
remitentes de la parte superior de la lista de 75 remitentes pueden subir o bajar, pero no suelen salir de la
lista, así que el total de los remitentes de esa parte suele ser más fiable.
Note
No es necesario habilitar el registro de accesos para ver una lista de remitentes populares.
Temas
• Descargar datos en formato CSV (p. 437)
• Cómo los datos del informe de remitentes principales están relacionados con los datos de los registros
de acceso de CloudFront (p. 438)
1. Mientras consulta el informe Top Referrers (Remitentes principales), haga clic en CSV.
2. En el cuadro de diálogo Opening file name (Abriendo nombre de archivo), decida si desea abrir o
guardar el archivo.
Version
437
Amazon CloudFront Guía para desarrolladores
Informe de remitentes principales de CloudFront
StartDateUTC
El principio del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
EndDateUTC
El fin del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
GeneratedTimeUTC
DistributionID
La cantidad de solicitudes enviadas por el remitente como porcentaje de las solicitudes realizadas en
un periodo específico.
Remitente
El nombre del dominio del remitente. En los registros de acceso, los remitentes se enumeran en la
columna cs(Referer).
Request Count
La cantidad total de solicitudes desde el nombre de dominio de la columna Referrer (Remitente). Este
valor suele corresponderse estrechamente con la cantidad de solicitudes GET del remitente en los
registros de acceso de CloudFront.
438
Amazon CloudFront Guía para desarrolladores
Informes de uso de CloudFront
Solicitud %
La cantidad de solicitudes enviadas por el remitente como porcentaje de las solicitudes realizadas
en un periodo específico. Si tiene más de 25 remitentes, no podrá calcular el valor Request % (%
de solicitudes) en función de los datos de esta tabla, ya que la columna Request Count (Número de
solicitudes) no incluye todas las solicitudes del período especificado.
Para obtener más información, consulte Cómo los gráficos de uso están relacionados con los datos
contenidos en el informe de uso de CloudFront (p. 442).
• Daily (Por día): para ver gráficos con un punto de datos por día, seleccione un intervalo de fechas
dentro de los últimos 60 días.
• Hourly (Por hora): para ver gráficos con un punto de datos por cada hora, seleccione un intervalo de
fechas igual o inferior a 14 días en los últimos 60 días.
• Una distribución individual: los gráficos muestran los datos de la distribución web de CloudFront
seleccionada. La lista Distribution (Distribución) muestra el ID de distribución y los nombres de
439
Amazon CloudFront Guía para desarrolladores
Informes de uso de CloudFront
dominio alternativos (CNAME), de haberlos. Si una distribución no tiene otros nombres de dominio,
la lista incluye los nombres de dominio de origen para la distribución.
• Todas las distribuciones (excluidas las eliminadas): los gráficos muestran el total de datos de todas
las distribuciones web asociadas a la cuenta actual de AWS, excluyendo las distribuciones web que
ha eliminado.
• Todas las distribuciones eliminadas: los gráficos muestran el total de datos de todas las
distribuciones asociadas a la cuenta actual de AWS y que se eliminaron durante los últimos 60 días.
7. Haga clic en Update Graphs (Actualizar gráficos).
8. Para ver la información contenida en los puntos de datos por día o por hora de un gráfico, pase el
ratón por encima del punto de datos correspondiente.
9. Tome en cuenta que puede cambiar el escalado vertical a gigabytes, megabytes o kilobytes en los
gráficos que muestran los datos transferidos.
Temas
• Descargar datos en formato CSV (p. 440)
• Cómo los gráficos de uso están relacionados con los datos contenidos en el informe de uso de
CloudFront (p. 442)
Version
El principio del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
EndDateUTC
El fin del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
440
Amazon CloudFront Guía para desarrolladores
Informes de uso de CloudFront
GeneratedTimeUTC
El continente desde el que se han originado las solicitudes de los espectadores; o ALL si ha decidido
descargar un informe de todas las regiones de facturación.
DistributionID
La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).
HTTP
La cantidad de solicitudes HTTP a las que CloudFront ha respondido desde ubicaciones de borde en
la región seleccionada durante cada intervalo de tiempo, en la distribución de CloudFront especificada.
Entre los valores se encuentran:
• La cantidad de solicitudes GET y HEAD que activan la transferencia de datos de CloudFront a sus
usuarios
• La cantidad de solicitudes DELETE, OPTIONS, PATCH, POST y PUT que activan la transferencia de
datos de CloudFront a su origen
HTTPS
La cantidad de solicitudes HTTPS a las que CloudFront ha respondido desde ubicaciones de borde en
la región seleccionada durante cada intervalo de tiempo, en la distribución de CloudFront especificada.
Entre los valores se encuentran:
• La cantidad de solicitudes GET y HEAD que activan la transferencia de datos de CloudFront a sus
usuarios
• La cantidad de solicitudes DELETE, OPTIONS, PATCH, POST y PUT que activan la transferencia de
datos de CloudFront a su origen
HTTPBytes
La cantidad total de datos transferidos a través de HTTP desde las ubicaciones de borde de
CloudFront en la región de facturación seleccionada durante el periodo de tiempo especificado para la
distribución de CloudFront. Entre los valores se encuentran:
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes GET y HEAD
441
Amazon CloudFront Guía para desarrolladores
Informes de uso de CloudFront
• Los datos que se han transferido desde CloudFront hasta el origen en respuesta a las solicitudes
DELETE, OPTIONS, PATCH, POST y PUT.
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes DELETE, OPTIONS, PATCH, POST y PUT
HTTPSBytes
La cantidad total de datos transferidos a través de HTTPS desde las ubicaciones de borde de
CloudFront en la región de facturación seleccionada durante el periodo de tiempo especificado para la
distribución de CloudFront. Entre los valores se encuentran:
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes GET y HEAD
• Los datos que se han transferido desde CloudFront hasta el origen en respuesta a las solicitudes
DELETE, OPTIONS, PATCH, POST y PUT.
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes DELETE, OPTIONS, PATCH, POST y PUT
BytesIn
La cantidad total de datos transferidos desde CloudFront hasta el origen en respuesta a las solicitudes
DELETE, OPTIONS, PATCH, POST y PUT en la región seleccionada durante cada intervalo de tiempo
especificado para la distribución de CloudFront.
BytesOut
La cantidad total de datos transferidos a través de HTTP y HTTPS desde CloudFront hasta sus
usuarios en la región seleccionada durante cada intervalo de tiempo especificado para la distribución
de CloudFront. Entre los valores se encuentran:
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes GET y HEAD
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes DELETE, OPTIONS, PATCH, POST y PUT
Temas
• Cantidad de solicitudes (p. 442)
• Datos transferidos por protocolo (p. 443)
• Datos transferidos por destino (p. 443)
Cantidad de solicitudes
Este gráfico muestra la cantidad total de solicitudes a las que responde CloudFront desde ubicaciones
de borde en la región seleccionada durante cada intervalo de tiempo para la distribución de CloudFront
especificada, separadas por protocolo (HTTP o HTTPS) y tipo (estático, dinámico o proxy).
442
Amazon CloudFront Guía para desarrolladores
Informes de uso de CloudFront
443
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront
• Devices (Dispositivos): los tipos de dispositivo que los usuarios utilizan con mayor frecuencia para
obtener acceso a su contenido, como por ejemplo, de escritorio o móvil.
• Browsers (Navegadores): el nombre (o el nombre y la versión) de los navegadores que los usuarios
utilizan con mayor frecuencia para obtener acceso a su contenido (por ejemplo, Chrome o Firefox). El
informe muestra los 10 navegadores principales.
• Operating Systems (Sistemas operativos): el nombre (o el nombre y la versión) del sistema operativo
desde el que los lectores obtienen acceso a su contenido con mayor frecuencia, por ejemplo, Linux, Mac
OS X o Windows. El informe muestra los 10 sistemas operativos principales.
• Locations (Ubicaciones): la ubicación, por país o estado o territorio de EE. UU., desde la que los lectores
obtienen acceso a su contenido con mayor frecuencia. El informe muestra los 50 países principales de
los Estados Unidos o de los estados y territorios.
Puede visualizar los cuatro informes de espectadores para cualquier intervalo de fechas de los últimos
60 días. En el informe Locations también puede visualizar los puntos de datos de cada hora dentro de
cualquier intervalo de fechas de hasta 14 días en los últimos 60 días.
Note
Temas
• Visualización de gráficos e informes de espectadores (p. 444)
• Descargar datos en formato CSV (p. 445)
• Cómo los datos del informe Locations están relacionados con los datos de los registros de acceso de
CloudFront (p. 451)
444
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront
En el gráfico Locations (Ubicaciones), los intervalos disponibles dependen del valor seleccionado en
Granularity (Grado de detalle):
• Daily (Por día): para ver gráficos con un punto de datos por día, seleccione un intervalo de fechas
dentro de los últimos 60 días.
• Hourly (Por hora): para ver gráficos con un punto de datos por cada hora, seleccione un intervalo de
fechas igual o inferior a 14 días en los últimos 60 días.
• Una distribución individual: los gráficos muestran los datos de la distribución web de CloudFront
seleccionada. La lista Distribution (Distribución) muestra el ID de distribución y un nombre de
dominio alternativo (CNAME), de haberlo. Si una distribución no tiene otros nombres de dominio, la
lista incluye un nombre de dominio de origen para la distribución.
• Todas las distribuciones (excluidas las eliminadas): los gráficos muestran el total de datos de todas
las distribuciones web asociadas a la cuenta actual de AWS, excluyendo las distribuciones web que
ha eliminado.
8. Haga clic en Update (Actualizar).
9. Para ver la información contenida en los puntos de datos por día o por hora de un gráfico, pase el
ratón por encima del punto de datos correspondiente.
Temas
• información acerca de los informes (p. 446)
• Informe Devices (p. 446)
• Informe Device Trends (p. 447)
• Informe Browsers (p. 447)
• Browser Trends Report (p. 448)
445
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront
Version
El principio del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
EndDateUTC
El fin del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
GeneratedTimeUTC
Forma de agrupación de los datos: por el nombre del navegador o sistema operativo, o por su nombre
y versión.
Granularity
Forma de listar las solicitudes: por país o por estado de los Estados Unidos.
Informe Devices
El informe incluye los siguientes valores:
DistributionID
446
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront
RequestsPct
La cantidad de solicitudes que CloudFront ha recibido desde cada tipo de dispositivo como porcentaje
del total de solicitudes que CloudFront ha recibido de todos los dispositivos.
DistributionID
La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).
Escritorio
La cantidad de solicitudes que CloudFront ha recibido desde equipos de escritorio durante el periodo
establecido.
Móvil
La cantidad de solicitudes que CloudFront ha recibido desde dispositivos móviles durante el periodo
establecido. Entre los dispositivos móviles se pueden incluir tablets y teléfonos móviles. Si CloudFront
no puede determinar si una solicitud se ha originado desde un dispositivo móvil o una tableta, se
refleja en la columna Mobile.
Smart-TV
La cantidad de solicitudes que CloudFront ha recibido desde televisores inteligentes durante el periodo
establecido.
Tablet
La cantidad de solicitudes que CloudFront ha recibido desde tabletas durante el periodo establecido.
Si CloudFront no puede determinar si una solicitud se ha originado desde un dispositivo móvil o una
tableta, se refleja en la columna Mobile.
Desconocido
Solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció con uno de los tipos de
dispositivo estándar, por ejemplo, Desktop o Mobile.
Vacío
Informe Browsers
El informe incluye los siguientes valores:
DistributionID
447
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront
FriendlyName
El navegador o el navegador y la versión desde los que CloudFront ha recibido solicitudes en función
del valor de Grouping. Además de los nombres de los navegadores, otros valores son:
• Bot/Crawler (Bot/Rastreador): sobre todo solicitudes de motores de búsqueda que están indexando
su contenido.
• Empty (Vacío): solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.
• Other (Otros): navegadores que CloudFront ha identificado pero que no se encuentran entre los
más populares. Si Bot/Crawler, Empty o Unknown no aparecen entre los nueve primeros valores,
también se incluyen en Other.
• Unknown (Desconocidos): solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció
con uno de los navegadores estándar. La mayoría de las solicitudes de esta categoría proceden de
aplicaciones personalizadas o secuencias de comandos.
Solicitudes
La cantidad de solicitudes que CloudFront ha recibido desde cada tipo de navegador como porcentaje
del total de solicitudes que CloudFront ha recibido durante el período determinado.
DistributionID
La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).
(Browsers)
Las demás columnas del informe reflejan los navegadores o navegadores y sus versiones, en función
del valor de Grouping. Además de los nombres de los navegadores, otros valores son:
• Bot/Crawler (Bot/Rastreador): sobre todo solicitudes de motores de búsqueda que están indexando
su contenido.
• Empty (Vacío): solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.
• Other (Otros): navegadores que CloudFront ha identificado pero que no se encuentran entre los
más populares. Si Bot/Crawler, Empty o Unknown no aparecen entre los nueve primeros valores,
también se incluyen en Other.
• Unknown (Desconocidos): solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció
con uno de los navegadores estándar. La mayoría de las solicitudes de esta categoría proceden de
aplicaciones personalizadas o secuencias de comandos.
448
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront
DistributionID
El sistema operativo o el sistema operativo y la versión desde los que CloudFront ha recibido
solicitudes en función del valor de Grouping. Además de los nombres de los sistemas operativos,
otros valores son:
• Bot/Crawler (Bot/Rastreador): sobre todo solicitudes de motores de búsqueda que están indexando
su contenido.
• Empty (Vacío): solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.
• Other (Otros): sistemas operativos que CloudFront ha identificado pero que no se encuentran entre
los más populares. Si Bot/Crawler, Empty o Unknown no aparecen entre los nueve primeros
valores, también se incluyen en Other.
• Unknown (Desconocidos): solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció
con uno de los navegadores estándar. La mayoría de las solicitudes de esta categoría proceden de
aplicaciones personalizadas o secuencias de comandos.
Solicitudes
La cantidad de solicitudes que CloudFront ha recibido desde cada tipo de sistema operativo como
porcentaje del total de solicitudes que CloudFront ha recibido durante el período determinado.
DistributionID
La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).
(Operating systems)
Las demás columnas del informe reflejan los sistemas operativos o sistemas operativos y sus
versiones en función del valor de Grouping. Además de los nombres de los sistemas operativos,
otros valores son:
• Bot/Crawler (Bot/Rastreador): sobre todo solicitudes de motores de búsqueda que están indexando
su contenido.
449
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront
• Empty (Vacío): solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.
• Other (Otros): sistemas operativos que CloudFront ha identificado pero que no se encuentran entre
los más populares. Si Bot/Crawler, Empty o Unknown no aparecen entre los nueve primeros
valores, también se incluyen en Other.
• Unknown (Desconocido): solicitudes cuyo sistema operativo no se especifica en el encabezado
HTTP User-Agent.
Informe Locations
El informe incluye los siguientes valores:
DistributionID
La abreviatura de la ubicación desde la que CloudFront recibe solicitudes. Para obtener más
información acerca de los valores posibles, consulte la descripción de Location en Cómo los
datos del informe Locations están relacionados con los datos de los registros de acceso de
CloudFront (p. 451).
LocationName
La cantidad de solicitudes que CloudFront ha recibido desde cada ubicación como porcentaje del total
de solicitudes que CloudFront ha recibido de todas las ubicaciones durante el período determinado.
TotalBytes
La cantidad total de bytes que CloudFront ha enviado a los lectores en el estado o país, en la
distribución y el periodo especificados.
DistributionID
La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).
450
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront
(Locations)
Las demás columnas del informe reflejan las ubicaciones desde las que CloudFront ha recibido
solicitudes. Para obtener más información acerca de los valores posibles, consulte la descripción de
Location en Cómo los datos del informe Locations están relacionados con los datos de los registros de
acceso de CloudFront (p. 451).
Cómo los datos del informe Locations están relacionados con los
datos de los registros de acceso de CloudFront
La siguiente lista muestra cómo los datos del informe Locations de la consola de CloudFront se
corresponden con los valores contenidos en los registros de acceso de CloudFront. Para obtener más
información sobre los registros de acceso de CloudFront, consulte Configuración y uso de registros
estándar (registros de acceso) (p. 463).
Ubicación
El país o estado de EE. UU. en el que se encuentra el espectador. En los registros de acceso, la
columna c-ip contiene la dirección IP del dispositivo en el que se está ejecutando el espectador.
Utilizamos los datos de geolocalización para identificar la ubicación geográfica del dispositivo en
función de la dirección IP.
Si consulta el informe Locations (Ubicaciones) por país, tenga en cuenta que la lista se basa en los
códigos de la norma ISO 3166-2 de representación de nombres de países y sus subdivisiones (parte
2: código de subdivisión de país). La lista de países incluye los siguientes valores adicionales:
• Anonymous Proxy (Proxy anónimo): la solicitud se ha originado en un proxy anónimo.
• Satellite Provider (Proveedor satelital); la solicitud se ha originado desde un proveedor satelital que
ofrece servicios de Internet a varios países. Los usuarios pueden estar en países con un alto riesgo
de fraude.
• Europe (Unknown) (Europa) (Desconocido): la solicitud se ha originado desde una IP en un bloque
utilizado por varios países europeos. No se puede determinar el país en el que se ha originado la
solicitud. CloudFront utiliza Europe (Unknown) (Europa (desconocido)) como valor predeterminado.
• Asia/Pacific (Unknown) (Asia/Pacífico (Desconocido)): la solicitud se ha originado desde una IP
en un bloque utilizado por varios países de la región Asia/Pacífico. No se puede determinar el
país en el que se ha originado la solicitud. CloudFront utiliza Asia/Pacific (Unknown) (Asia/Pacífico
(desconocido)) como valor predeterminado.
Si consulta el informe Locations (Ubicaciones) por estado de Estados Unidos, tenga en cuenta que
puede incluir regiones de territorios y zonas militares estadounidenses.
Note
La cantidad total de solicitudes del país o estado de Estados Unidos en el que se encuentra
el espectador, en la distribución y el periodo especificados. Este valor suele corresponderse
estrechamente con la cantidad de solicitudes GET desde direcciones IP en ese país o estado en los
registros de acceso de CloudFront.
Solicitud %
Una de las siguientes, en función del valor que haya seleccionado para Details (Detalles):
• Countries (Países): las solicitudes de este país como porcentaje del total de solicitudes.
451
Amazon CloudFront Guía para desarrolladores
Monitoreo de CloudFront con Amazon CloudWatch
• U.S. States (Estados de Estados Unidos): las solicitudes de este estado como porcentaje del total
de solicitudes de Estados Unidos.
Si las solicitudes han venido de más de 50 países, no podrá calcular el valor Request % (% de
solicitudes) en función de los datos de esta tabla, ya que la columna Request Count (Número de
solicitudes) no incluye todas las solicitudes del período especificado.
Bytes
La cantidad total de bytes que CloudFront ha enviado a los lectores en el estado o país, en la
distribución y el periodo especificados. Para cambiar la visualización de datos en esta columna a KB,
MB o GB, haga clic en el enlace del encabezado.
Además de las métricas predeterminadas, puede habilitar métricas adicionales por un coste adicional. Las
métricas adicionales se aplican a distribuciones de CloudFront y deben habilitarse para cada distribución
por separado. Para obtener más información sobre el costo, consulte Estimación del costo de las métricas
adicionales de CloudFront (p. 455).
Ver estas métricas puede ayudarle a solucionar problemas, a realizar un seguimiento y a depurar. Para ver
estas métricas en la consola de CloudFront, consulte la página Monitoring (Monitoreo). Para ver gráficos
sobre la actividad de una distribución de CloudFront o una función Lambda@Edge específica, elija una y, a
continuación, seleccione ver las métricas.
También puede establecer alarmas basadas en estas métricas en la consola de CloudFront o en la consola
de CloudWatch, la API o la CLI (se aplican losprecios estándar de CloudWatch). Por ejemplo, puede
configurar una alarma basada en la métrica de 5xxErrorRate, que representa el porcentaje de todas
las solicitudes de espectador para las cuales el código de estado HTTP de la respuesta está en el rango
de 500 a 599, inclusive. Cuando la tasa de error alcanza un valor determinado durante una determinada
cantidad de tiempo (por ejemplo, el 5 % de las solicitudes durante 5 minutos seguidos), se activa la alarma.
Especifique el valor de la alarma y su unidad de tiempo al crear la alarma. Para obtener más información,
consulte Configurar las alarmas (p. 456).
Temas
• Visualización de métricas de CloudFront y Lambda @Edge (p. 452)
• Configuración de alarmas para recibir notificaciones (p. 456)
• Descargar datos en formato CSV (p. 457)
• Obtener métricas mediante la API de CloudWatch (p. 459)
452
Amazon CloudFront Guía para desarrolladores
Visualización de métricas de CloudFront y Lambda @Edge
Temas
• Visualización de las métricas de distribución predeterminadas de CloudFront (p. 453)
• Visualización de métricas de distribución adicionales de CloudFront (p. 454)
• Visualización de las métricas de la función Lambda@Edge predeterminada (p. 456)
Solicitudes
La cantidad total de solicitudes de lector recibidas por CloudFront, para todos los métodos HTTP y
para las solicitudes HTTP y HTTPS.
Bytes descargados
La cantidad total de bytes descargados por los espectadores para las solicitudes GET, HEAD y
OPTIONS.
Bytes cargados
La cantidad total de bytes que los lectores cargaron en su origen con CloudFront mediante las
solicitudes POST y PUT.
Tasa de errores 4xx
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 4xx.
Tasa de errores 5xx
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 5xx.
Tasa de errores total
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 4xx o 5xx.
Estas métricas se muestran en gráficos para cada distribución de CloudFront en la página Monitoring
(Monitoreo) de la consola de CloudFront. En cada gráfico, los totales se muestran con una granularidad
de un minuto. Además de ver los gráficos, también puede descargar informes de métricas como archivos
CSV (p. 457).
Puede personalizar los gráficos por medio de uno de los siguientes procedimientos:
• Para cambiar el intervalo de tiempo de la información que se muestra en los gráficos, seleccione 1h (1
hora), 3h (3 horas), u otro rango o especifique un rango personalizado.
• Para cambiar la frecuencia con la que CloudFront actualiza la información en el gráfico, elija la flecha
hacia abajo junto al icono de actualización y, a continuación, seleccione una frecuencia de actualización.
El valor predeterminado de actualización es de 1 minuto, pero puede elegir 10 segundos, 2 minutos u
otras opciones.
Para ver los gráficos de CloudFront en la consola de CloudWatch, elija Add to dashboard (Agregar al
panel).
453
Amazon CloudFront Guía para desarrolladores
Visualización de métricas de CloudFront y Lambda @Edge
Estas métricas adicionales deben habilitarse para cada distribución por separado:
El porcentaje de todas las solicitudes almacenables en caché para las que CloudFront distribuyó el
contenido desde su caché. Las solicitudes HTTP POST y PUT, así como los errores, no se consideran
solicitudes almacenables en caché.
Latencia de origen
El tiempo total transcurrido desde que CloudFront recibe una solicitud hasta que comienza a
proporcionar una respuesta a la red (no al lector) en las solicitudes que se distribuyen desde el origen,
no desde la caché de CloudFront. Esto también se conoce como latencia de primer byte o time-to-first-
byte.
Tasa de error por código de estado
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es un código particular en el rango de 4xx o 5xx. Esta métrica está disponible para todos
estos códigos de error: 401, 403, 404, 502, 503 y 504.
Cuando haya habilitado las métricas adicionales, se mostrarán en gráficos. En cada gráfico, los totales
se muestran con una granularidad de un minuto. Además de ver los gráficos, también puede descargar
informes de métricas como archivos CSV (p. 457).
Puede personalizar los gráficos por medio de uno de los siguientes procedimientos:
• Para cambiar el intervalo de tiempo de la información que se muestra en los gráficos, seleccione 1h (1
hora), 3h (3 horas), u otro rango o especifique un rango personalizado.
• Para cambiar la frecuencia con la que CloudFront actualiza la información en el gráfico, elija la flecha
hacia abajo junto al icono de actualización y, a continuación, seleccione una frecuencia de actualización.
El valor predeterminado de actualización es de 1 minuto, pero puede elegir 10 segundos, 2 minutos u
otras opciones.
454
Amazon CloudFront Guía para desarrolladores
Visualización de métricas de CloudFront y Lambda @Edge
Para ver los gráficos de CloudFront en la consola de CloudWatch, elija Add to dashboard (Agregar al
panel).
Para administrar métricas adicionales con la interfaz de línea de comandos de AWS (CLI de AWS), utilice
uno de los siguientes comandos.
Para ver si las métricas adicionales están habilitadas para una distribución
Para administrar métricas adicionales con la API de CloudFront, utilice una de las siguientes operaciones
de la API.
Para obtener más información acerca de estas llamadas a la API, consulte la documentación de referencia
de la API para su AWS SDK u otro cliente de la API.
455
Amazon CloudFront Guía para desarrolladores
Configurar las alarmas
métrica. Esta tarifa se cobra solo una vez al mes por métrica (hasta 8 métricas por distribución). Se trata de
una tarifa fija, por lo que el costo sigue siendo el mismo independientemente del número de solicitudes o
respuestas que reciba o envíe la distribución de CloudFront. Para conocer la tarifa por métrica, consulte la
página de precios de Amazon CloudWatch y la calculadora de precios de CloudWatch. Se aplican cargos
adicionales de la API al recuperar las métricas con la API de CloudWatch.
Los gráficos incluyen la cantidad de invocaciones, errores, limitaciones, etc. En cada gráfico, los totales se
muestran con una granularidad de un minuto, agrupados por región de AWS.
Si ve un aumento de errores que desea investigar, puede elegir una función y, a continuación, consultar
los archivos de registro por región de AWS hasta que determine qué función está causando los problemas
y en qué región de AWS. Para obtener más información sobre la resolución de errores Lambda@Edge,
consulte:
Puede personalizar los gráficos por medio de uno de los siguientes procedimientos:
• Para cambiar el intervalo de tiempo de la información que se muestra en los gráficos, seleccione 1h (1
hora), 3h (3 horas), u otro rango o especifique un rango personalizado.
• Para cambiar la frecuencia con la que CloudFront actualiza la información en el gráfico, elija la flecha
hacia abajo junto al icono de actualización y, a continuación, seleccione una frecuencia de actualización.
El valor predeterminado de actualización es de 1 minuto, pero puede elegir 10 segundos, 2 minutos u
otras opciones.
Para ver los gráficos en la consola de CloudWatch, elija Add to dashboard (Agregar al panel). Debe utilizar
la región EE. UU. Este (Norte de Virginia) (us-east-1) para ver los gráficos en la consola de CloudWatch.
Métrica
456
Amazon CloudFront Guía para desarrolladores
Descargar datos
El tema de Amazon SNS al que se envía la notificación si esta métrica desencadena una alarma.
Siempre que <metric> <operator> <value>
Especifique cuándo debe activar CloudWatch una alarma y enviar una notificación al tema de Amazon
SNS. Por ejemplo, para recibir una notificación cuando el intervalo de error de 5xx supera el 1 %,
especifique lo siguiente:
Especifique por cuántos periodos consecutivos de la duración especificada debe cumplir la métrica los
criterios antes de que CloudWatch envíe una notificación. Cuando elija un valor, apunte a un equilibrio
adecuado entre un valor que no active la alarma por problemas menores o temporales, pero sí por
problemas constantes o reales.
Version
El principio del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
EndDateUTC
El fin del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
GeneratedTimeUTC
457
Amazon CloudFront Guía para desarrolladores
Descargar datos
Granularity
El periodo de tiempo para cada fila del informe, por ejemplo, ONE_MINUTE.
DistributionID
La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).
Solicitudes
La cantidad total de solicitudes de todos los códigos de estado HTTP (por ejemplo, 200, 404, etc.) y
todos los métodos (por ejemplo, GET, HEAD, POST, etc.) durante ese periodo de tiempo.
BytesDownloaded
La cantidad de bytes que los espectadores han descargado mediante la distribución especificada
durante el periodo de tiempo definido.
BytesUploaded
La cantidad de bytes que los espectadores han cargado mediante la distribución especificada durante
el periodo de tiempo definido.
TotalErrorRatePct
El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 4xx o 5xx para la
distribución especificada durante el periodo de tiempo definido.
4xxErrorRatePct
El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 4xx para la distribución
especificada durante el periodo de tiempo definido.
5xxErrorRatePct
El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 5xx para la distribución
especificada durante el periodo de tiempo definido.
Si ha habilitado métricas adicionales (p. 454) para su distribución, el informe también incluye los
siguientes valores adicionales:
401ErrorRatePct
El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 401 para la distribución
especificada durante el periodo de tiempo definido.
403ErrorRatePct
El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 403 para la distribución
especificada durante el periodo de tiempo definido.
458
Amazon CloudFront Guía para desarrolladores
Obtención de métricas mediante la API
404ErrorRatePct
El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 404 para la distribución
especificada durante el periodo de tiempo definido.
502ErrorRatePct
El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 502 para la distribución
especificada durante el periodo de tiempo definido.
503ErrorRatePct
El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 503 para la distribución
especificada durante el periodo de tiempo definido.
504ErrorRatePct
El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 504 para la distribución
especificada durante el periodo de tiempo definido.
OriginLatency
El tiempo total empleado en milisegundos desde que CloudFront recibió una solicitud hasta que
comenzó a proporcionar una respuesta a la red (no al lector) en las solicitudes que se distribuyeron
desde el origen, no desde la caché de CloudFront. Esto también se conoce como latencia de primer
byte o time-to-first-byte.
CacheHitRate
El porcentaje de todas las solicitudes almacenables en caché para las que CloudFront distribuyó el
contenido desde su caché. Las solicitudes HTTP POST y PUT, así como los errores, no se consideran
solicitudes almacenables en caché.
Temas
• Valores para todas las métricas de CloudFront (p. 459)
• Valores para métricas individuales de CloudFront (p. 460)
Namespace
459
Amazon CloudFront Guía para desarrolladores
Obtención de métricas mediante la API
Region
Note
Para obtener las métricas de CloudFront desde la API de CloudWatch, debe utilizar la región
EE. UU. Este (Norte de Virginia) (us-east-1).
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 4xx.
• Nombre de métrica: 4xxErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 401
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 401. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 401ErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 403
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 403. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 403ErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 404
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 404. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 404ErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 5xx
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 5xx.
• Nombre de métrica: 5xxErrorRate
• Estadística válida: Average
• Unidad: Percent
460
Amazon CloudFront Guía para desarrolladores
Obtención de métricas mediante la API
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 502. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 502ErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 503
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 503. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 503ErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 504
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 504. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 504ErrorRate
• Estadística válida: Average
• Unidad: Percent
Bytes descargados
La cantidad total de bytes descargados por los espectadores para las solicitudes GET, HEAD y
OPTIONS.
• Nombre de métrica: BytesDownloaded
• Estadística válida: Sum
• Unidad: None
Bytes cargados
La cantidad total de bytes que los lectores cargaron en su origen con CloudFront mediante las
solicitudes POST y PUT.
• Nombre de métrica: BytesUploaded
• Estadística válida: Sum
• Unidad: None
Tasa de aciertos de caché
El porcentaje de todas las solicitudes almacenables en caché para las que CloudFront distribuyó el
contenido desde su caché. Las solicitudes HTTP POST y PUT, así como los errores, no se consideran
solicitudes almacenables en caché. Para obtener esta métrica, primero debe habilitar métricas
adicionales (p. 454).
• Nombre de métrica: CacheHitRate
• Estadística válida: Average
• Unidad: Percent
Latencia de origen
El tiempo total empleado en milisegundos desde que CloudFront recibe una solicitud hasta que
comienza a proporcionar una respuesta a la red (no al lector) en las solicitudes que se distribuyeron
desde el origen, no desde la caché de CloudFront. Esto también se conoce como latencia
de primer byte o time-to-first-byte. Para obtener esta métrica, primero debe habilitar métricas
adicionales (p. 454).
• Nombre de métrica: OriginLatency
• Estadística válida: Percentile
461
Amazon CloudFront Guía para desarrolladores
Registro de CloudFront
• Unidad: Milliseconds
Note
Para obtener la estadística de Percentile desde la API de CloudWatch, use el parámetro
ExtendedStatistics, no Statistics. Para obtener más información, consulte
GetMetricStatistics en la Referencia de la API de Amazon CloudWatch o la documentación de
referencia de los SDK de AWS.
Solicitudes
La cantidad total de solicitudes de lector recibidas por CloudFront, para todos los métodos HTTP y
para las solicitudes HTTP y HTTPS.
• Nombre de métrica: Requests
• Estadística válida: Sum
• Unidad: None
Tasa de errores total
El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 4xx o 5xx.
• Nombre de métrica: TotalErrorRate
• Estadística válida: Average
• Unidad: Percent
Registro de CloudFront
Amazon CloudFront proporciona diferentes tipos de registro. Puede registrar las solicitudes que llegan a
las distribuciones de CloudFront o puede registrar la actividad del servicio de CloudFront en la cuenta de
AWS.
Solicitudes de registro
CloudFront proporciona las siguientes formas de registrar las solicitudes que llegan a las distribuciones.
Los registros estándar de CloudFront proporcionan registros detallados sobre cada solicitud que se
realiza en una distribución. Estos registros son útiles para muchos escenarios, incluidas las auditorías
de seguridad y acceso.
Para obtener más información, consulte Uso de registros estándar (registros de acceso) (p. 463).
Registros en tiempo real
Los registros en tiempo real de CloudFront proporcionan información sobre las solicitudes realizadas a
una distribución, en tiempo real (las entradas de registros se envían en cuestión de segundos después
de recibir las solicitudes). Puede elegir la frecuencia de muestreo de los registros en tiempo real,
es decir, el porcentaje de solicitudes de las que desea recibir entradas de registros en tiempo real.
También puede elegir los campos específicos de los que desea recibir registros de log.
Para obtener más información, consulte Registros en tiempo real (p. 476).
462
Amazon CloudFront Guía para desarrolladores
Registro de la actividad del servicio
Para obtener más información, consulte Captura de solicitudes a la API con CloudTrail (p. 488).
Temas
• Configuración y uso de registros estándar (registros de acceso) (p. 463)
• Registros en tiempo real (p. 476)
• Uso de AWS CloudTrail para capturar solicitudes enviadas a la API de CloudFront (p. 488)
Puede habilitar los registros estándar al crear o actualizar una distribución. Para obtener más información,
consulte Valores que deben especificarse al crear o actualizar una distribución (p. 43).
CloudFront también ofrece registros en tiempo real, que le proporcionan información sobre las solicitudes
realizadas a una distribución en tiempo real (los registros se envían en cuestión de segundos después de
recibir las solicitudes). Puede usar registros en tiempo real para monitorear, analizar y tomar medidas en
función del rendimiento de entrega de contenido. Para obtener más información, consulte Registros en
tiempo real (p. 476).
Temas
• Cómo funciona el registro estándar (p. 463)
• Elección de un bucket de Amazon S3 para los registros estándar (p. 464)
• Permisos necesarios para configurar el registro estándar y el acceso a los archivos de
registro (p. 465)
• Política de claves CMK necesarias para usar con buckets de SSE-KMS (p. 466)
• Formato del nombre de archivo (p. 466)
• Tiempo de entrega de archivos de registro estándar (p. 467)
• Cómo se registran las solicitudes cuando la URL o los encabezados de la solicitud sobrepasan el
tamaño máximo (p. 467)
• Análisis de registros estándar (p. 467)
• Edición de la configuración de registro estándar (p. 468)
• Eliminación de archivos de registro estándar de un bucket de Amazon S3 (p. 468)
• Formato de archivo de registro estándar (p. 468)
• Cargos por registros estándar (p. 475)
463
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)
A continuación, se explica cómo CloudFront registra información sobre solicitudes para los objetos, tal y
como se muestra en el diagrama anterior.
Si ningún usuario obtiene acceso a su contenido durante una hora determinada, no se reciben archivos de
registro de esa hora.
Cada entrada del archivo de registro ofrece información acerca de una única solicitud. Para obtener
más información acerca del formato del archivo de registro, consulte Formato de archivo de registro
estándar (p. 468).
Important
Recomendamos utilizar los registros de acceso para comprender la naturaleza de las solicitudes
hechas a su contenido y no como una relación exhaustiva de todas las solicitudes. CloudFront
envía registros de acceso en la medida en que sea posible. La entrada de registro de una solicitud
determinada puede entregarse mucho después de la solicitud se haya procesado realmente y, en
casos contados, es probable que una entrada de registro no se entregue en absoluto. Cuando se
omite una entrada de registro de los registros de acceso, la cantidad de entradas de los registros
de acceso no coincide con el uso que aparece en el uso de AWS y en los informes de facturación.
464
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)
no utilice el mismo bucket para los archivos de registro. El uso de un bucket independiente simplifica el
mantenimiento.
Note
Puede almacenar los archivos de registro de varias distribuciones en el mismo bucket. Al habilitar el
registro, puede especificar un prefijo para los nombres de archivo, para así realizar un seguimiento de que
los archivos de registro que se asocian con las distribuciones.
Al crear o actualizar una distribución y habilitar el registro, CloudFront utiliza estos permisos
para actualizar ACL para que el bucket le conceda a la cuenta awslogsdelivery permiso
FULL_CONTROL. La cuenta awslogsdelivery escribe archivos de registro en el bucket. Si su cuenta
no tiene los permisos necesarios para actualizar la ACL, se producirá un error al crear o actualizar la
distribución.
En determinadas circunstancias, si envía una solicitud de forma programada para crear un bucket
con un nombre específico, pero ya existe uno con ese nombre, S3 restablece los permisos del bucket
a sus valores predeterminados. Si configura CloudFront para guardar los registros de acceso en un
bucket de S3 y los registros dejan de guardarse en ese bucket, compruebe los permisos del bucket
para asegurarse de que CloudFront dispone de los permisos necesarios.
Restauración de la ACL para el bucket
465
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)
c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0
Para obtener más información acerca de cómo agregar ACL a buckets de S3, consulte ¿Cómo
configuro permisos para buckets con ACL? en la Guía del usuario de la consola de Amazon Simple
Storage Service.
ACL para cada archivo de registro
Además de la ACL del bucket, hay una ACL en cada archivo de registro. El propietario del bucket
tiene permisos FULL_CONTROL en cada archivo de registro, el propietario de la distribución (si no es el
mismo que el del bucket) no tiene permiso, y la cuenta awslogsdelivery tiene permisos de lectura y
escritura.
Deshabilitar los registros
Si desactiva el registro, CloudFront no elimina las ACL del bucket ni de los archivos de registro. Si lo
desea, puede hacerlo usted mismo.
{
"Sid": "Allow CloudFront Flow Logs to use the key",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "kms:GenerateDataKey*",
"Resource": "*"
}
example-prefix/EMLARXS9EXAMPLE.2019-11-14-20.RT4KCN4SGK9.gz
Al habilitar el registro para una distribución, puede especificar un prefijo para los nombres de archivo, para
así realizar un seguimiento de que los archivos de registro que se asocian a las distribuciones. Si incluye
un valor para el prefijo del archivo de registro y el prefijo no termina con una barra inclinada (/), CloudFront
agrega una automáticamente. Si el prefijo termina con una barra inclinada, CloudFront no agrega otra.
466
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)
.gz al final del nombre del archivo indica que CloudFront ha comprimido el archivo de registro con gzip.
Al crear un archivo de registro, CloudFront consolida información para la distribución desde todas las
ubicaciones de borde que recibieron solicitudes de los objetos durante el periodo que abarca dicho archivo
de registro.
CloudFront puede guardar más de un archivo por periodo en función de la cantidad de solicitudes de
objetos asociados con una distribución que recibe CloudFront.
CloudFront comienza a enviar de forma fiable los registros de acceso unas cuatro horas después de
habilitar los registros. Es posible obtener algunos registros de acceso antes del momento de envío.
Note
Si ningún usuario solicita sus objetos durante un periodo, no recibirá archivos de registro para ese
periodo.
CloudFront también ofrece registros en tiempo real, que le proporcionan información sobre las solicitudes
realizadas a una distribución en tiempo real (los registros se envían en cuestión de segundos después de
recibir las solicitudes). Puede usar registros en tiempo real para monitorear, analizar y tomar medidas en
función del rendimiento de entrega de contenido. Para obtener más información, consulte Registros en
tiempo real (p. 476).
Si el cuerpo de la solicitud supera el tamaño máximo, se registra la solicitud, incluido el código de estado
de error de HTTP.
Una forma de analizar los registros de acceso consiste en utilizar Amazon Athena. Athena es un servicio
de consultas interactivo que puede ayudarle a analizar datos de los servicios de AWS, incluido CloudFront.
Para obtener más información, consulte Consulta de los registros de Amazon CloudFront en la Guía del
usuario de Amazon Athena.
Además, en las siguientes publicaciones del blog de AWS se explican algunas formas de analizar registros
de acceso.
467
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)
Important
Recomendamos utilizar los registros de acceso para comprender la naturaleza de las solicitudes
hechas a su contenido y no como una relación exhaustiva de todas las solicitudes. CloudFront
envía registros de acceso en la medida en que sea posible. La entrada de registro de una solicitud
determinada puede entregarse mucho después de la solicitud se haya procesado realmente y, en
casos contados, es probable que una entrada de registro no se entregue en absoluto. Cuando se
omite una entrada de registro de los registros de acceso, la cantidad de entradas de los registros
de acceso no coincide con el uso que aparece en el uso de AWS y en los informes de facturación.
• Para actualizar una distribución mediante la consola de CloudFront, consulte Actualización de una
distribución (p. 71).
• Para actualizar una distribución mediante la API de CloudFront, consulte UpdateDistribution en la
Referencia de la API de Amazon CloudFront.
• Uso de la consola de Amazon S3: Eliminación de objetos en la Guía del usuario de la consola de
Amazon Simple Storage Service.
• Uso de la API de REST: DeleteObject en la Referencia de la API de Amazon Simple Storage Service.
468
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)
%3C <
%3E >
%22 "
%23 #
%25 %
%7B {
%7D }
%7C |
%5C \
%5E ^
%7E ~
%5B [
%5D ]
%60 `
%27 '
%20 espacio
1. date
La fecha en que se produjo el evento en el formato YYYY-MM-DD. Por ejemplo, 2019-06-30. La fecha
y la hora se muestran según la hora universal coordinada (UTC). Para conexiones de WebSockets,
indica la fecha de cierre de la conexión.
2. time
La hora a la que el servidor de CloudFront terminó de responder a la solicitud (en UTC), por ejemplo,
01:42:39. Para conexiones de WebSockets, indica la hora de cierre de la conexión.
3. x-edge-location
La ubicación de borde que atendió la solicitud. Cada ubicación de borde se identifica mediante un
código de tres letras y un número asignado arbitrariamente (por ejemplo, DFW3). El código de tres
letras normalmente se corresponde con el código del aeropuerto de la Asociación de Transporte Aéreo
Internacional (IATA) más cercano a la ubicación geográfica de la ubicación de borde. Estas abreviaturas
pueden cambiar en el futuro.
469
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)
4. sc-bytes
El número total de bytes que el servidor ha enviado al lector en respuesta a la solicitud, incluidos los
encabezados. Para conexiones WebSockets, se trata del número total de bytes enviados desde el
servidor al cliente a través de la conexión.
5. c-ip
La parte de la URL de solicitud que identifica la ruta y el objeto (por ejemplo, /images/cat.jpg). Los
signos de interrogación (?) de las URL y las cadenas de consulta no están incluidas en el registro.
9. sc-status
El valor del encabezado Referer de la solicitud. Este es el nombre del dominio que ha originado
la solicitud. Entre los remitentes principales se incluyen motores de búsqueda, otros sitios web que
enlazan directamente con sus objetos y su propio sitio web.
11.cs(User-Agent)
Cuando una URL no contiene una cadena de consulta, el valor de este campo es un guion (-). Para
obtener más información, consulte Almacenamiento en caché de contenido en función de parámetros de
cadenas de consulta (p. 274).
13.cs(Cookie)
El encabezado Cookie de la solicitud, incluidos los pares nombre-valor y los atributos asociados.
Si habilita el registro de cookies, CloudFront registra las cookies de todas las solicitudes
independientemente de qué cookies elija reenviar al origen. Cuando una solicitud no incluye un
encabezado de cookie, el valor de este campo es un guion (-). Para obtener más información acerca de
cookies, consulte Almacenamiento en caché de contenido en función de cookies (p. 277).
14.x-edge-result-type
470
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)
Cómo el servidor ha clasificado la respuesta después de que el último byte abandonara el servidor. En
algunos casos, el tipo de resultado puede cambiar entre el momento en que el servidor está listo para
enviar la respuesta y el momento en que termina el envío de la respuesta. Consulte también el campo
x-edge-response-result-type.
Las conexiones WebSocket tendrán un valor de Miss para este campo porque el contenido no se
puede almacenar en caché y se asigna directamente al origen.
Una cadena opaca que identifica una solicitud de forma única. CloudFront también envía esta cadena
en el encabezado de respuesta x-amz-cf-id.
16.x-host-header
El valor que el lector ha incluido en el encabezado Host de la solicitud. Si utiliza el nombre de dominio
CloudFront en las URL de los objetos (como d111111abcdef8.cloudfront.net), este campo contiene
ese nombre de dominio. Si utiliza nombres de dominio alternativos (CNAME) en las URL de los objetos
(como www.example.com), este campo contiene el nombre de dominio alternativo.
Si está utilizando nombres de dominio alternativo, consulte cs(Host) en el campo 7 para ver el nombre
de dominio asociado con su distribución.
17.cs-protocol
El número total de bytes de datos que el lector ha incluido en la solicitud, incluidos los encabezados.
Para conexiones WebSockets, se trata del número total de bytes enviados desde el cliente al servidor
en la conexión.
471
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)
19.time-taken
El número de segundos (hasta la milésima de segundo, por ejemplo, 0,082) desde que el servidor
recibe la solicitud del lector hasta que el servidor escribe el último byte de la respuesta en la cola de
salida, según se mide en el servidor. Desde el punto de vista del lector, el tiempo total para obtener la
respuesta completa será superior a este valor a causa de la latencia de la red y el almacenamiento en
búfer de TCP.
20.x-forwarded-for
Si el lector no utiliza un proxy HTTP o un balanceador de carga, el valor de este campo es un guion (-).
21.ssl-protocol
Cuando la solicitud ha utilizado HTTPS, este campo contiene el protocolo SSL/TLS que el lector y el
servidor han negociado para transmitir la solicitud y la respuesta. Para obtener una lista de valores
posibles, consulte los protocolos SSL/TLS compatibles en Protocolos y cifrados admitidos entre lectores
y CloudFront (p. 145).
Cuando la solicitud ha utilizado HTTPS, este campo contiene el cifrado SSL/TLS que el lector y
el servidor han negociado para cifrar la solicitud y la respuesta. Para obtener una lista de valores
posibles, consulte los cifrados SSL/TLS compatibles en Protocolos y cifrados admitidos entre lectores y
CloudFront (p. 145).
Cómo el servidor ha clasificado la respuesta antes de devolver la respuesta al lector. Consulte también
el campo x-edge-result-type. Entre los valores posibles se incluyen:
• Hit: el servidor ofreció el objeto al lector desde la caché.
• RefreshHit: el servidor encontró el objeto en la caché pero el objeto había vencido, por lo que el
servidor se puso en contacto con el origen para comprobar que la caché tenía la versión más reciente
del objeto.
• Miss: un objeto en la caché no ha podido satisfacer la solicitud, así que el servidor ha reenviado la
solicitud al servidor de origen y ha devuelto el resultado al lector.
• LimitExceeded: se ha denegado la solicitud porque se superó una cuota (antes denominada límite)
de CloudFront.
• CapacityExceeded: el servidor ha devuelto un error 503 porque no disponía de capacidad
suficiente en el momento de la solicitud para prestar servicio al objeto.
• Error: normalmente, esto significa que la solicitud ha dado lugar a un error de cliente (el valor del
campo sc-status está en el intervalo 4xx) o un error de servidor (el valor del campo sc-status
está en el intervalo 5xx).
La versión de HTTP que el espectador especificó en la solicitud. Entre los valores posibles se incluyen:
HTTP/0.9, HTTP/1.0, HTTP/1.1 y HTTP/2.0.
25.fle-status
Cuando se configura el cifrado en el nivel de campo para una distribución, este campo contiene un
código que indica si el cuerpo de la solicitud se ha procesado correctamente. Cuando el servidor
procesa correctamente el cuerpo de la solicitud, cifra los valores de los campos especificados y reenvía
la solicitud al origen, el valor de este campo es Processed. El valor de x-edge-result-type todavía
puede indicar un error del lado del cliente o del lado del servidor en este caso.
Si la solicitud supera una cuota de cifrado en el nivel de campo (anteriormente denominada límite), este
campo contiene uno de los siguientes códigos de error y el servidor devuelve el código de estado HTTP
400 al lector. Para obtener una lista de las cuotas actuales del cifrado en el nivel de campo, consulte
Cuotas de cifrado en el nivel de campo (p. 524).
• FieldLengthLimitClientError: un campo que se ha configurado como cifrado ha superado la
longitud máxima permitida.
• FieldNumberLimitClientError: una solicitud que la distribución ha configurado para cifrar
contiene un número de campos mayor del permitido.
• RequestLengthLimitClientError: la longitud del cuerpo de la solicitud ha superado el máximo
permitido cuando se ha configurado el cifrado en el nivel de campo.
El número de campos de cifrado en el nivel de campo (p. 241) que el servidor ha cifrado y reenviado al
origen. Los servidores de CloudFront transmiten la solicitud procesada al origen a medida que cifran los
datos, por lo que este campo puede tener un valor incluso si el valor de fle-status es un error.
473
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)
El número de segundos entre la recepción de la solicitud y la escritura del primer byte de la respuesta,
medido en el servidor.
29.x-edge-detailed-result-type
Cuando el campo x-edge-result-type no es Error, este campo contiene el mismo valor que x-
edge-result-type. Cuando el campo x-edge-result-type es Error, este campo contiene el tipo
específico de error. Entre los valores posibles se incluyen:
• AbortedOrigin: el servidor ha encontrado un problema con el origen.
• ClientCommError: la respuesta al lector se ha interrumpido debido a un problema de comunicación
entre el servidor y el lector.
• ClientGeoBlocked: la distribución está configurada para rechazar solicitudes desde la ubicación
geográfica del espectador.
• ClientHungUpRequest: el espectador se ha detenido prematuramente mientras enviaba la
solicitud.
• Error: se ha producido un error cuyo tipo de error no se ajusta a ninguna de las otras categorías.
Este tipo de error puede producirse cuando el servidor envía una respuesta de error desde la caché.
• InvalidRequest: el servidor ha recibido una solicitud no válida desde el lector.
• InvalidRequestBlocked: el acceso al recurso solicitado está bloqueado.
• InvalidRequestCertificate: la distribución no coincide con el certificado SSL/TLS para el que
se ha establecido la conexión HTTPS.
• InvalidRequestHeader: la solicitud contenía un encabezado no válido.
• InvalidRequestMethod: la distribución no está configurada para gestionar el método de solicitud
HTTP que se ha utilizado. Esto puede suceder cuando la distribución solo admite solicitudes que se
pueden almacenar en caché.
• OriginConnectError: el servidor no ha podido conectarse al origen.
• OriginContentRangeLengthError: el encabezado Content-Length de la respuesta del origen
no coincide con la longitud del encabezado Content-Range.
• OriginDnsError: el servidor no ha podido resolver el nombre de dominio del origen.
• OriginError: el origen ha devuelto una respuesta incorrecta.
• OriginHeaderTooBigError: un encabezado devuelto por el origen es demasiado grande para que
el servidor de borde lo procese.
• OriginInvalidResponseError: el origen ha devuelto una respuesta no válida.
• OriginReadError: el servidor no ha podido leer desde el origen.
• OriginWriteError: el servidor no ha podido escribir en el origen.
• OriginZeroSizeObjectError: un objeto de tamaño cero enviado desde el origen ha provocado
un error.
• SlowReaderOriginError: el espectador ha sido al leer el mensaje que ha provocado el error de
origen.
30.sc-content-type
474
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)
32.sc-range-start
Cuando la respuesta contiene el encabezado HTTP Content-Range, este campo contiene el valor
inicial del intervalo.
33.sc-range-end
Cuando la respuesta contiene el encabezado HTTP Content-Range, este campo contiene el valor final
del intervalo.
#Version: 1.0
#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status
cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id
x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-
edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-
to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-
range-end
2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html
200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,
%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit
SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ== d111111abcdef8.cloudfront.net
https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit
text/html 78 - -
2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html
200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,
%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit
k6WGMNkEzR5BEM_SaF47gjtX9zBDO2m349OY2an0QPEaUum1ZOLrow== d111111abcdef8.cloudfront.net
https 23 0.000 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.000 Hit
text/html 78 - -
2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html
200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,
%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit
f37nTMVvnKvV2ZSvEsivup_c2kZ7VXzYdjC-GUQZ5qNs-89BlWazbw== d111111abcdef8.cloudfront.net
https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit
text/html 78 - -
2019-12-13 22:36:27 SEA19-C1 900 192.0.2.200 GET d111111abcdef8.cloudfront.net /
favicon.ico 502 http://www.example.com/ Mozilla/5.0%20(Windows
%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,
%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Error
1pkpNfBQ39sYMnjjUQjmH2w1wdJnbHYTbag21o_3OfcQgPzdL2RSSQ== www.example.com http 675 0.102 -
- - Error HTTP/1.1 - - 25260 0.102 OriginDnsError text/html 507 - -
2019-12-13 22:36:26 SEA19-C1 900 192.0.2.200 GET d111111abcdef8.cloudfront.net / 502
- Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,
%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Error
3AqrZGCnF_g0-5KOvfA7c9XLcf4YGvMFSeFdIetR1N_2y8jSis8Zxg== www.example.com http 735 0.107 -
- - Error HTTP/1.1 - - 3802 0.107 OriginDnsError text/html 507 - -
2019-12-13 22:37:02 SEA19-C2 900 192.0.2.200 GET d111111abcdef8.cloudfront.net / 502
- curl/7.55.1 - - Error kBkDzGnceVtWHqSCqBUqtA_cEs2T3tFUBbnBNkB9El_uVRhHgcZfcw==
www.example.com http 387 0.103 - - - Error HTTP/1.1 - - 12644 0.103 OriginDnsError text/
html 507 - -
Para obtener más información acerca de los precios de Amazon S3, consulte Precios de Amazon S3.
Para obtener más información acerca de los precios de CloudFront, consulte Precios de CloudFront.
475
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real
• La frecuencia de muestreo de los registros en tiempo real, es decir, el porcentaje de solicitudes de las
que desea recibir entradas de registro en tiempo real.
• Los campos específicos que desea recibir en los registros de log.
• Los comportamientos de caché específicos (patrones de ruta) para los que desea recibir registros en
tiempo real.
CloudFront aplica cargos por los registros en tiempo real, que se suman a los cargos que se le apliquen
por el uso de Kinesis Data Streams. Para obtener más información acerca de los precios, consulte Precios
de Amazon CloudFront y Precios de Amazon Kinesis Data Streams.
En concreto, una configuración de registro en tiempo real contiene los siguientes valores de configuración:
Nombre
La frecuencia de muestreo es un número entero entre 1 y 100 (inclusive) que determina el porcentaje
de solicitudes de lector que se envían a Kinesis Data Streams como entradas de registro en tiempo
real. Para incluir todas las solicitudes de lector en los registros en tiempo real, especifique 100 para
la frecuencia de muestreo. Es posible que elija una frecuencia de muestreo más baja para reducir los
costos mientras recibe un ejemplo representativo de datos de solicitudes en los registros en tiempo
real.
476
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real
Campos
Una lista de campos que se incluyen en cada registro de log en tiempo real. Cada registro de log
puede contener hasta 40 campos y puede optar por recibir todos los campos disponibles, o solo los
campos necesarios para monitorear y analizar el rendimiento.
La lista siguiente contiene el nombre de cada campo y una descripción de la información de ese
campo. Los campos se muestran en el orden en que aparecen en las entradas de registros que se
entregan a Kinesis Data Streams.
1. timestamp
El número de segundos entre la recepción de la solicitud y la escritura del primer byte de la respuesta,
medido en el servidor.
4. sc-status
El número total de bytes que el servidor ha enviado al lector en respuesta a la solicitud, incluidos los
encabezados. Para conexiones WebSockets, se trata del número total de bytes enviados desde el
servidor al cliente a través de la conexión.
6. cs-method
El valor que el lector ha incluido en el encabezado Host de la solicitud. Si utiliza el nombre de dominio
CloudFront en las URL de los objetos (como d111111abcdef8.cloudfront.net), este campo contiene
ese nombre de dominio. Si utiliza nombres de dominio alternativos (CNAME) en las URL de los objetos
(como www.example.com), este campo contiene el nombre de dominio alternativo.
9. cs-uri-stem
La dirección URL completa de la solicitud, incluida la cadena de consulta (si existe), pero sin el nombre
de dominio. Por ejemplo, /images/cat.jpg?mobile=true.
477
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real
Note
En standard logs (registros estándar) (p. 463), el valor cs-uri-stem no incluye la cadena de
consulta.
10.cs-bytes
El número total de bytes de datos que el lector ha incluido en la solicitud, incluidos los encabezados.
Para conexiones WebSockets, se trata del número total de bytes enviados desde el cliente al servidor
en la conexión.
11.x-edge-location
La ubicación de borde que atendió la solicitud. Cada ubicación de borde se identifica mediante un
código de tres letras y un número asignado arbitrariamente (por ejemplo, DFW3). El código de tres
letras normalmente se corresponde con el código del aeropuerto de la Asociación de Transporte Aéreo
Internacional (IATA) más cercano a la ubicación geográfica de la ubicación de borde. Estas abreviaturas
pueden cambiar en el futuro.
12.x-edge-request-id
Una cadena opaca que identifica una solicitud de forma única. CloudFront también envía esta cadena
en el encabezado de respuesta x-amz-cf-id.
13.x-host-header
El número de segundos (hasta la milésima de segundo, por ejemplo, 0,082) desde que el servidor
recibe la solicitud del lector hasta que el servidor escribe el último byte de la respuesta en la cola de
salida, según se mide en el servidor. Desde el punto de vista del lector, el tiempo total para obtener la
respuesta completa será superior a este valor a causa de la latencia de la red y el almacenamiento en
búfer de TCP.
15.cs-protocol-version
La versión de HTTP que el espectador especificó en la solicitud. Entre los valores posibles se incluyen:
HTTP/0.9, HTTP/1.0, HTTP/1.1 y HTTP/2.0.
16.c-ip-version
El valor del encabezado Referer de la solicitud. Este es el nombre del dominio que ha originado
la solicitud. Entre los remitentes principales se incluyen motores de búsqueda, otros sitios web que
enlazan directamente con sus objetos y su propio sitio web.
19.cs-cookie
El encabezado Cookie de la solicitud, incluidos los pares nombre-valor y los atributos asociados.
Note
Cómo el servidor ha clasificado la respuesta antes de devolver la respuesta al lector. Consulte también
el campo x-edge-result-type. Entre los valores posibles se incluyen:
• Hit: el servidor ofreció el objeto al lector desde la caché.
• RefreshHit: el servidor encontró el objeto en la caché pero el objeto había vencido, por lo que el
servidor se puso en contacto con el origen para comprobar que la caché tenía la versión más reciente
del objeto.
• Miss: un objeto en la caché no ha podido satisfacer la solicitud, así que el servidor ha reenviado la
solicitud al servidor de origen y ha devuelto el resultado al lector.
• LimitExceeded: se ha denegado la solicitud porque se superó una cuota (antes denominada límite)
de CloudFront.
• CapacityExceeded: el servidor ha devuelto un error 503 porque no disponía de capacidad
suficiente en el momento de la solicitud para prestar servicio al objeto.
• Error: normalmente, esto significa que la solicitud ha dado lugar a un error de cliente (el valor del
campo sc-status está en el intervalo 4xx) o un error de servidor (el valor del campo sc-status
está en el intervalo 5xx).
Cuando la solicitud ha utilizado HTTPS, este campo contiene el protocolo SSL/TLS que el lector y el
servidor han negociado para transmitir la solicitud y la respuesta. Para obtener una lista de valores
posibles, consulte los protocolos SSL/TLS compatibles en Protocolos y cifrados admitidos entre lectores
y CloudFront (p. 145).
24.ssl-cipher
Cuando la solicitud ha utilizado HTTPS, este campo contiene el cifrado SSL/TLS que el lector y
el servidor han negociado para cifrar la solicitud y la respuesta. Para obtener una lista de valores
posibles, consulte los cifrados SSL/TLS compatibles en Protocolos y cifrados admitidos entre lectores y
CloudFront (p. 145).
25.x-edge-result-type
Cómo el servidor ha clasificado la respuesta después de que el último byte abandonara el servidor. En
algunos casos, el tipo de resultado puede cambiar entre el momento en que el servidor está listo para
enviar la respuesta y el momento en que termina el envío de la respuesta. Consulte también el campo
x-edge-response-result-type.
479
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real
Las conexiones WebSocket tendrán un valor de Miss para este campo porque el contenido no se
puede almacenar en caché y se asigna directamente al origen.
El número de campos de cifrado en el nivel de campo (p. 241) que el servidor ha cifrado y reenviado al
origen. Los servidores de CloudFront transmiten la solicitud procesada al origen a medida que cifran los
datos, por lo que este campo puede tener un valor incluso si el valor de fle-status es un error.
27.fle-status
Cuando se configura el cifrado en el nivel de campo para una distribución, este campo contiene un
código que indica si el cuerpo de la solicitud se ha procesado correctamente. Cuando el servidor
procesa correctamente el cuerpo de la solicitud, cifra los valores de los campos especificados y reenvía
la solicitud al origen, el valor de este campo es Processed. El valor de x-edge-result-type todavía
puede indicar un error del lado del cliente o del lado del servidor en este caso.
480
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real
Si la solicitud supera una cuota de cifrado en el nivel de campo (anteriormente denominada límite), este
campo contiene uno de los siguientes códigos de error y el servidor devuelve el código de estado HTTP
400 al lector. Para obtener una lista de las cuotas actuales del cifrado en el nivel de campo, consulte
Cuotas de cifrado en el nivel de campo (p. 524).
• FieldLengthLimitClientError: un campo que se ha configurado como cifrado ha superado la
longitud máxima permitida.
• FieldNumberLimitClientError: una solicitud que la distribución ha configurado para cifrar
contiene un número de campos mayor del permitido.
• RequestLengthLimitClientError: la longitud del cuerpo de la solicitud ha superado el máximo
permitido cuando se ha configurado el cifrado en el nivel de campo.
28.sc-content-type
Cuando la respuesta contiene el encabezado HTTP Content-Range, este campo contiene el valor
inicial del intervalo.
31.sc-range-end
Cuando la respuesta contiene el encabezado HTTP Content-Range, este campo contiene el valor final
del intervalo.
32.c-port
Cuando el campo x-edge-result-type no es Error, este campo contiene el mismo valor que x-
edge-result-type. Cuando el campo x-edge-result-type es Error, este campo contiene el tipo
específico de error. Entre los valores posibles se incluyen:
• AbortedOrigin: el servidor ha encontrado un problema con el origen.
• ClientCommError: la respuesta al lector se ha interrumpido debido a un problema de comunicación
entre el servidor y el lector.
• ClientGeoBlocked: la distribución está configurada para rechazar solicitudes desde la ubicación
geográfica del espectador.
• ClientHungUpRequest: el espectador se ha detenido prematuramente mientras enviaba la
solicitud.
• Error: se ha producido un error cuyo tipo de error no se ajusta a ninguna de las otras categorías.
Este tipo de error puede producirse cuando el servidor envía una respuesta de error desde la caché.
• InvalidRequest: el servidor ha recibido una solicitud no válida desde el lector.
• InvalidRequestBlocked: el acceso al recurso solicitado está bloqueado.
• InvalidRequestCertificate: la distribución no coincide con el certificado SSL/TLS para el que
se ha establecido la conexión HTTPS.
481
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real
Un código de país que representa la ubicación geográfica del lector, según lo determinado por la
dirección IP del lector.
35.cs-accept-encoding
El patrón de ruta que identifica el comportamiento de caché que coincidió con la solicitud del lector.
38.cs-headers
Los nombres de los encabezados HTTP (no los valores) en la solicitud del lector.
Note
El punto de enlace contiene información sobre la secuencia de datos de Kinesis en la que desea
enviar registros en tiempo real. Se proporciona el nombre de recurso de Amazon (ARN) de la
secuencia de datos.
482
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real
Para obtener más información acerca de la creación de una secuencia de datos de Kinesis, consulte
los siguientes temas en la Guía para desarrolladores de Amazon Kinesis Data Streams.
• Administración de secuencias a través de la consola
• Realizar operaciones básicas en Kinesis Data Stream con la AWS CLI
• Creación de una secuencia (utiliza AWS SDK para Java)
Cuando crea una secuencia de datos, debe especificar el número de particiones. Utilice la siguiente
información que le ayudará a estimar el número de particiones que necesita.
1. Calcule (o estime) la cantidad de solicitudes por segundo que la distribución de CloudFront recibe.
Puede utilizar los informes de uso de CloudFront (en la consola de CloudFront) y las métricas
de CloudFront (p. 453) (en las consolas CloudFront y Amazon CloudWatch) que le ayudarán a
calcular las solicitudes por segundo.
2. Determine el tamaño normal de un único registro de log en tiempo real.
En general, un único registro de log es de unos 500 bytes. Un registro grande que incluye todos
los campos suele pesar aproximadamente 1KB.
Si no está seguro de cuál es el tamaño de su registro, puede habilitar los registros en tiempo real
con una frecuencia de muestro baja (por ejemplo, 1 %) y luego calcular el promedio de tamaño de
registro a través de los datos de monitoreo en Kinesis Data Streams (cantidad total de registros
dividida por el total de bytes entrantes).
3. En la Calculadora de precios de la página de precios de Amazon Kinesis Data Streams,
introduzca el número de solicitudes (registros) por segundo y el tamaño promedio de registro de
un único registro. Luego, elija Show calculations (Mostrar cálculos).
En el siguiente ejemplo se muestra que para un tamaño promedio de registro de 0,5 KB y 50 000
solicitudes por segundo, necesita 50 particiones.
483
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real
Rol de IAM
El rol de AWS Identity and Access Management (IAM) que concede permiso a CloudFront para enviar
registros en tiempo real a la secuencia de datos de Kinesis.
Cuando se crea una configuración de registro en tiempo real con la consola de CloudFront, se puede
elegir Create new service role (Crear un nuevo rol de servicio) para permitir a la consola crear el rol de
IAM automáticamente.
Cuando se crea una configuración de registro en tiempo real con AWS CloudFormation o la API de
CloudFront (CLI o SDK de AWS), se debe crear el rol de IAM uno mismo y proporcionar el ARN del rol.
Para crear IAM usted mismo, utilice las siguientes políticas.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Política de permisos del rol de IAM para una secuencia de datos no cifrada
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kinesis:DescribeStreamSummary",
"kinesis:DescribeStream",
"kinesis:PutRecord",
"kinesis:PutRecords"
],
"Resource": [
"Kinesis data stream ARN"
]
}
]
}
Política de permisos del rol de IAM para una secuencia de datos cifrada
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
484
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real
"Action": [
"kinesis:DescribeStreamSummary",
"kinesis:DescribeStream",
"kinesis:PutRecord",
"kinesis:PutRecords"
],
"Resource": [
"Kinesis data stream ARN"
]
},
{
"Effect": "Allow",
"Action": [
"kms:GenerateDataKey"
],
"Resource": [
"AWS KMS key"
]
}
]
}
Para utilizar una configuración de registro en tiempo real, puede asociarla a uno o más comportamientos
de caché en una distribución de CloudFront.
1. Inicie sesión en la consola de administración de AWS y abra la página Logs (Registros) en la consola
de CloudFront en https://console.aws.amazon.com/cloudfront/v2/home?#/logs.
2. Elija Real-time log configurations (Configuraciones de registro en tiempo real).
3. Seleccione Create configuration (Crear configuración).
4. Elija la configuración deseada para la configuración de registro en tiempo real. Tenga en cuenta lo
siguiente:
• De forma predeterminada, se eligen todos los Fields (Campos). Para eliminar un campo, realice una
de las acciones siguientes:
• Utilice el menú desplegable Choose fields (Elegir campos) para eliminar la selección de los
campos que no desea incluir en la configuración del registro en tiempo real.
• Utilice el botón expandir ( ) para consultar todos los campos y, a continuación, utilice el botón
quitar ( ) para eliminar los campos que no desea incluir en la configuración de registro en tiempo
real.
• Para IAM role (Rol de IAM), puede elegir Create new service role (Crear un nuevo rol de servicio)
para permitir que la consola cree el rol de IAM automáticamente. Debe tener permiso para crear
roles de IAM.
• Puede utilizar la configuración de la sección Distribution (Distribución) para elegir una distribución
y el comportamiento de caché de CloudFront que desee asociar a la configuración de registro en
tiempo real.
485
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real
Para obtener más información, consulte Descripción de las configuraciones de registros en tiempo
real (p. 476).
5. Cuando haya terminado, elija Create configuration (Crear configuración).
Si se realiza correctamente, la consola muestra los detalles de la configuración de registro en tiempo real
que acaba de crear.
Para crear una configuración de registro en tiempo real con la interfaz de línea de comandos de AWS
(AWS CLI), utilice el comando aws cloudfront create-realtime-log-config. Puede utilizar un archivo de
entrada para proporcionar los parámetros de entrada del comando, en lugar de especificar cada parámetro
individual como entrada de línea de comandos.
Para crear una configuración de registro en tiempo real (CLI con archivo de entrada)
1. Utilice el siguiente comando para crear un archivo denominado rtl-config.yaml que contenga
todos los parámetros de entrada del comando create-realtime-log-config.
Note
La opción yaml-input solo está disponible en la versión 2 de la CLI de AWS. Con la versión
1 de la CLI de AWS, puede generar un archivo de entrada en formato JSON. Para obtener
más información, consulte Generar el esqueleto y los parámetros de entrada de AWS CLI a
partir de un archivo de entrada JSON o YAML en la Guía del usuario de la interfaz de línea de
comandos de AWS.
2. Abra el archivo llamado rtl-config.yaml que acaba de crear. Edite el archivo para especificar los
ajustes de configuración del registro en tiempo real que desee y, a continuación, guarde el archivo.
Tenga en cuenta lo siguiente:
Para obtener más información acerca de los ajustes de configuración largos en tiempo real, consulte
Descripción de las configuraciones de registros en tiempo real (p. 476).
3. Utilice el siguiente comando para crear la configuración de registro en tiempo real utilizando los
parámetros de entrada del archivo de rtl-config.yaml.
Si se realiza correctamente, la salida del comando muestra los detalles de la configuración de registro en
tiempo real que acaba de crear.
Para asociar una configuración de registro en tiempo real a una distribución existente (CLI con
archivo de entrada)
486
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real
Note
La opción --output yaml solo está disponible en la versión 2 de la CLI de AWS. Con la
versión 1 de la CLI de AWS, puede generar la salida en formato JSON. Para obtener más
información, consulte Control de la salida de comandos de la CLI de AWS en la Guía del
usuario de la interfaz de línea de comandos de AWS.
2. Abra el archivo llamado dist-config.yaml que acaba de crear. Edite el archivo, realizando los
siguientes cambios en cada comportamiento de caché que actualice para utilizar una configuración de
registro en tiempo real.
Si tiene éxito, la salida del comando muestra los detalles de la distribución que acaba de actualizar.
Para crear una configuración de registro en tiempo real con la API de CloudFront, utilice
CreateRealtimeLogConfig. Para obtener más información acerca de los parámetros que especifique en
esta llamada a la API, consulte Descripción de las configuraciones de registros en tiempo real (p. 476) y
la documentación de referencia de la API para su AWS SDK u otro cliente de la API.
Después de crear una configuración de registro en tiempo real, puede asociarla a un comportamiento de
caché mediante una de las siguientes llamadas a la API:
Para ambas llamadas a la API, proporcione el ARN de la configuración de registro en tiempo real del
campo RealtimeLogConfigArn, dentro de un comportamiento de caché. Para obtener más información
acerca de los otros campos que especifique en estas llamadas a la API, consulte Valores que deben
especificarse al crear o actualizar una distribución (p. 43) y la documentación de referencia de la API para
el SDK de AWS u otro cliente de la API.
487
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail
muestra en la sección Campos (p. 477). Asegúrese de crear su consumidor para acomodar este pedido
fijo.
Por ejemplo, considere una configuración de registro en tiempo real que incluya solo estos tres campos:
time-to-first-byte, sc-status y c-country. En este escenario, el último campo, c-country,
siempre es el campo número 3 en cada registro de log. Sin embargo, si posteriormente agrega campos a
la configuración de registro en tiempo real, la ubicación de cada campo en un registro puede cambiar.
Por ejemplo, si agrega los campos sc-bytes y time-taken a la configuración de registro en tiempo
real, estos campos se insertan en cada entrada de registro según el orden mostrado en la sección
Campos (p. 477). El orden resultante de los cinco campos es time-to-first-byte, sc-status, sc-
bytes, time-taken y c-country. El campo c-country era originalmente el campo número 3, pero
ahora es el campo número 5. Asegúrese de que su aplicación de consumidor puede gestionar campos que
cambian de posición en un registro de log, en caso de que agregue campos a su configuración de registro
en tiempo real.
Para enviar entradas de registros en tiempo real a la secuencia de datos de Kinesis, CloudFront
utiliza el rol de IAM de la configuración de registro en tiempo real. Asegúrese de que la política de
confianza de roles y la política de permisos de roles coinciden con las políticas mostradas en Rol de
IAM (p. 484).
Limitación controlada de Kinesis Data Streams
Puede utilizar la información de los archivos de registro de CloudTrail para determinar las solicitudes que
se realizaron a CloudFront, la dirección IP de origen desde la que se realizó cada solicitud, quién la realizó,
cuándo, etc. Para obtener más información sobre CloudTrail, incluido cómo configurarlo y habilitarlo,
consulte la Guía del usuario de AWS CloudTrail.
Note
CloudFront es un servicio global. Para consultar las solicitudes de CloudFront en los registros de
CloudTrail, debe actualizar un registro de seguimiento existente para incluir servicios globales.
488
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail
Temas
• Información de CloudFront en CloudTrail (p. 489)
• Descripción de las entradas del archivo de registro de CloudFront (p. 489)
Para mantener un registro continuo de eventos de la cuenta de AWS, incluidos los eventos de CloudFront,
cree un registro de seguimiento. Su registro de seguimiento incluye eventos de servicio globales. Un
registro de seguimiento permite a CloudTrail enviar archivos de registro a un bucket de Amazon S3. De
forma predeterminada, cuando se crea un registro de seguimiento en la consola, el registro de seguimiento
se aplica a todas las regiones e incluye eventos de servicio globales. El registro de seguimiento registra los
eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket de Amazon
S3 especificado. También es posible configurar otros servicios de AWS para analizar en profundidad y
actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Para obtener más
información, consulte:
CloudTrail registra todas las acciones de la API de CloudFront y se documentan en la Referencia de la API
de Amazon CloudFront. Por ejemplo, las llamadas a las API CreateDistribution, GetDistribution
y ListInvalidations generan entradas en los archivos de registro de CloudTrail.
Cada entrada de registro o evento contiene información acerca de quién generó la solicitud. La información
de identidad del usuario le ayuda a determinar lo siguiente:
489
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail
El elemento eventName identifica la acción que se ha producido y la versión de la API que se utilizó
para realizar dicha acción. Por ejemplo, el siguiente valor eventName indica que una distribución se ha
actualizado y que se utilizó la versión de API 2014-01-31 para realizar la acción:
UpdateDistribution2014_01_31
En el ejemplo siguiente se muestra una entrada de registro de CloudTrail que refleja cinco acciones:
{
"Records": [{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:00:32Z",
"eventName": "UpdateDistribution2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": {
"id": "EDFDVBD6EXAMPLE",
"ifMatch": "E9LHASXEXAMPLE",
"distributionConfig": {
"restrictions": {
"geoRestriction": {
"quantity": 0,
"restrictionType": "none"
}
},
"customErrorResponses": {
"quantity": 0
},
"defaultRootObject": "index.html",
"aliases": {
"quantity": 1,
"items": ["example.com"]
},
"logging": {
"bucket": "",
"enabled": false,
"prefix": "",
"includeCookies": false
},
"viewerCertificate": {
"iAMCertificateId": "A1B2C3D4E5F6G7EXAMPLE",
"sSLSupportMethod": "sni-only"
},
"callerReference": "2014-05-06 64832",
"defaultCacheBehavior": {
490
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail
"targetOriginId": "Images",
"allowedMethods": {
"items": ["GET",
"HEAD"],
"quantity": 2
},
"forwardedValues": {
"cookies": {
"forward": "none"
},
"queryString": false
},
"minTTL": 300,
"trustedSigners": {
"enabled": false,
"quantity": 0
},
"viewerProtocolPolicy": "redirect-to-https",
"smoothStreaming": false
},
"origins": {
"items": [{
"customOriginConfig": {
"hTTPSPort": 443,
"originProtocolPolicy": "http-only",
"hTTPPort": 80
},
"domainName": "myawsbucket.s3-website-us-east-2.amazonaws.com",
"id": "Web page origin"
},
{
"customOriginConfig": {
"hTTPSPort": 443,
"originProtocolPolicy": "http-only",
"hTTPPort": 80
},
"domainName": "myotherawsbucket.s3-website-us-west-2.amazonaws.com",
"id": "Images"
}],
"quantity": 2
},
"enabled": true,
"cacheBehaviors": {
"allowedMethods": {
"items": ["GET",
"HEAD"],
"quantity": 2
},
"trustedSigners": {
"enabled": false,
"quantity": 0
},
"targetOriginId": "Web page origin",
"smoothStreaming": false,
"viewerProtocolPolicy": "redirect-to-https",
"minTTL": 300,
"forwardedValues": {
"cookies": {
"forward": "none"
},
"queryString": false
},
"pathPattern": "*.html"
}],
"quantity": 1
},
491
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail
"priceClass": "PriceClass_All",
"comment": "Added an origin and a cache behavior"
}
},
"responseElements": {
"eTag": "E2QWRUHEXAMPLE",
"distribution": {
"domainName": "d111111abcdef8.cloudfront.net",
"status": "InProgress",
"distributionConfig": {
distributionConfig response omitted
},
"id": "EDFDVBD6EXAMPLE",
"lastModifiedTime": "May 6, 2014 6:00:32 PM",
"activeTrustedSigners": {
"quantity": 0,
"enabled": false
},
"inProgressInvalidationBatches": 0
}
},
"requestID": "4e6b66f9-d548-11e3-a8a9-73e33example",
"eventID": "5ab02562-0fc5-43d0-b7b6-90293example"
},
{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:01:35Z",
"eventName": "ListDistributions2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": null,
"responseElements": null,
"requestID": "52de9f97-d548-11e3-8fb9-4dad0example",
"eventID": "eb91f423-6dd3-4bb0-a148-3cdfbexample"
},
{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:01:59Z",
"eventName": "GetDistribution2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": {
"id": "EDFDVBD6EXAMPLE"
},
"responseElements": null,
"requestID": "497b3622-d548-11e3-8fb9-4dad0example",
"eventID": "c32289c7-005a-46f7-9801-cba41example"
},
{
"eventVersion": "1.01",
492
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:02:27Z",
"eventName": "CreateInvalidation2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": {
"invalidationBatch": {
"callerReference": "2014-05-06 64947",
"paths": {
"quantity": 3,
"items": ["/images/new.jpg",
"/images/logo.jpg",
"/images/banner.jpg"]
}
},
"distributionId": "EDFDVBD6EXAMPLE"
},
"responseElements": {
"invalidation": {
"createTime": "May 6, 2014 6:02:27 PM",
"invalidationBatch": {
"callerReference": "2014-05-06 64947",
"paths": {
"quantity": 3,
"items": ["/images/banner.jpg",
"/images/logo.jpg",
"/images/new.jpg"]
}
},
"status": "InProgress",
"id": "ISRZ85EXAMPLE"
},
"location": "https://cloudfront.amazonaws.com/2014-01-31/distribution/
EDFDVBD6EXAMPLE/invalidation/ISRZ85EXAMPLE"
},
"requestID": "4e200613-d548-11e3-a8a9-73e33example",
"eventID": "191ebb93-66b7-4517-a741-92b0eexample"
},
{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:03:08Z",
"eventName": "ListCloudFrontOriginAccessIdentities2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": null,
"responseElements": null,
"requestID": "42ca4299-d548-11e3-8fb9-4dad0example",
"eventID": "7aeb434f-eb55-4e2a-82d8-417d5example"
}]
}
493
Amazon CloudFront Guía para desarrolladores
Seguimiento de los cambios en la
configuración mediante AWS Config
Es posible que haya un retraso en la grabación de recursos con AWS Config. AWS Config registra
los recursos solo después de detectarlos.
1. Inicie sesión en la consola de administración de AWS y abra la consola de AWS Config en https://
console.aws.amazon.com/config/.
2. Seleccione Get Started Now.
3. En la página Settings (Configuración), para Resource types to record (Tipos de recursos que se van
a registrar), especifique los tipos de recursos de AWS que desea que registre AWS Config. Si desea
registrar solo los cambios de CloudFront, elija Specific types (Tipos específicos) y, a continuación, en
CloudFront, elija la distribución o distribución de streaming para la que desea realizar un seguimiento
de los cambios.
Para añadir o cambiar las distribuciones en las que realizar un seguimiento, elija Settings
(Configuración) a la izquierda, después de completar su configuración inicial.
4. Especifique las opciones necesarias adicionales para AWS Config: configure una notificación,
especifique una ubicación para la información de configuración y agregue reglas para evaluar tipos de
recursos.
Para obtener más información, consulte Configuración de AWS Config con la consola en la Guía para
desarrolladores de AWS Config.
Para configurar AWS Config con CloudFront mediante la CLI de AWS o mediante una API, consulte una de
las siguientes opciones:
• Utilice la CLI de AWS: Configuración de AWS Config con la CLI de AWS en la Guía para desarrolladores
de AWS Config
• Utilizar una API: la acción StartConfigurationRecorder y otra información en la Referencia de la API de
AWS Config
494
Amazon CloudFront Guía para desarrolladores
Consultar historial de configuración de CloudFront
Para ver los historiales de configuración, use cualquiera de las siguientes formas:
• Utilice la consola de AWS Config. Para cada recurso registrado, puede ver una página de escala de
tiempo que proporciona un historial con detalles de la configuración. Para ver esta página, elija el icono
gris en la columna Config Timeline (Escala de tiempo de configuración) de la página Dedicated Hosts
(Hosts dedicados). Para obtener más información, consulte Visualización de detalles de configuración en
la consola de AWS Config en la Guía para desarrolladores de AWS Config.
• Ejecute comandos de la CLI de AWS. Para obtener una lista de todas las distribuciones, utilice el
comando list-discovered-resources. Para obtener los detalles de configuración de una distribución
para un intervalo de tiempo específico, utilice el comando get-resource-config-history. Para obtener
más información, consulte Consultar detalles de configuración mediante la CLI en la Guía para
desarrolladores de AWS Config.
• Utilice la API de AWS Config en las aplicaciones. Para obtener una lista de todas las distribuciones,
utilice la acción ListDiscoveredResources. Para obtener los detalles de configuración de una distribución
para un intervalo de tiempo específico, utilice la acción GetResourceConfigHistory. Para obtener más
información, consulte la Referencia de la API de AWS Config.
Por ejemplo, para obtener una lista de todas las distribuciones de AWS Config, podría ejecutar un
comando de la CLI como el siguiente:
495
Amazon CloudFront Guía para desarrolladores
Protección de los datos
• Seguridad en la nube: AWS es responsable de proteger la infraestructura que ejecuta los servicios de
AWS en la nube de AWS. AWS también le proporciona servicios que puede utilizar de forma segura.
Auditores de terceros prueban y verifican periódicamente la eficacia de nuestra seguridad en el marco
de los programas de conformidad de AWS. Para obtener más información acerca de los programas
de conformidad que se aplican a Amazon CloudFront, consulte Servicios de AWS en el ámbito del
programa de conformidad.
• Seguridad en la nube: su responsabilidad viene determinada por el servicio de AWS que utilice. Usted
también es responsable de otros factores incluida la confidencialidad de los datos, los requisitos de la
empresa y la legislación y los reglamentos aplicables.
Esta documentación le ayuda a comprender cómo puede aplicar el modelo de responsabilidad compartida
cuando se utiliza CloudFront. En los siguientes temas se muestra cómo configurar CloudFront para
satisfacer los objetivos de seguridad y conformidad. También obtendrá información sobre cómo utilizar
otros servicios de AWS que le ayudarán a monitorear y proteger los recursos de CloudFront.
Temas
• Protección de datos en Amazon CloudFront (p. 496)
• Administración de identidades y accesos en CloudFront (p. 499)
• Registro y monitoreo en Amazon CloudFront (p. 515)
• Validación de conformidad para Amazon CloudFront (p. 515)
• Resiliencia de Amazon CloudFront (p. 517)
• Seguridad de la infraestructura en Amazon CloudFront (p. 517)
A efectos de la protección de datos, se recomienda que proteja las credenciales de la cuenta de AWS
y configure cuentas de usuario individuales con AWS Identity and Access Management (IAM). De esta
manera,solo se otorgan a cada usuario los permisos necesarios para cumplir con sus obligaciones
laborales. También le recomendamos proteger sus datos de las siguientes formas:
496
Amazon CloudFront Guía para desarrolladores
Cifrado en tránsito
Amazon CloudFront ofrece varias opciones que puede utilizar para ayudar a proteger el contenido que
ofrece:
Temas
• Cifrado en tránsito (p. 497)
• Cifrado en reposo (p. 498)
• Restricción del acceso a contenido (p. 498)
Cifrado en tránsito
Para cifrar los datos durante el transporte, configure Amazon CloudFront para solicitar que los lectores
utilicen HTTPS para solicitar los archivos, de modo que las conexiones se cifren cuando CloudFront se
comunique con los lectores. También puede configurar CloudFront para utilizar HTTPS para obtener
archivos del origen, de modo que las conexiones se cifran cuando CloudFront se comunica con el origen.
Para obtener más información, consulte Uso de HTTPS con CloudFront (p. 138).
El cifrado en el nivel de campo añade una capa de seguridad adicional que, junto con HTTPS, le permite
proteger datos específicos durante su procesamiento en el sistema de forma que solo determinadas
aplicaciones puedan verlos. Al configurar el cifrado en el nivel de campo en CloudFront, puede cargar
de manera segura información confidencial enviada por el usuario a los servidores web. La información
confidencial proporcionada por los clientes se cifra en el borde más cercano al usuario. Sigue cifrada en
toda la pila de aplicaciones, lo que garantiza que solo las aplicaciones que necesitan los datos y disponen
de las credenciales para descifrarlos, son capaces de hacerlo.
497
Amazon CloudFront Guía para desarrolladores
Cifrado en reposo
Para obtener más información, consulte Uso del cifrado en el nivel de campo para ayudar a proteger la
información confidencial (p. 241).
Cifrado en reposo
CloudFront utiliza SSD que se cifran para los puntos de presencia (POP) de ubicación de borde y los
volúmenes de EBS cifrados para las cachés de borde regionales (REC).
Puede restringir el acceso a contenido que está destinado a usuarios determinados, por ejemplo,
que hayan pagado una tarifa, ofreciendo este contenido privado a través de CloudFront mediante
URL firmadas o cookies firmadas. Para obtener más información, consulte Distribución de contenido
privado con URL firmadas y cookies firmadas (p. 164).
Restringir el acceso al contenido en los buckets de Amazon S3
Si restringe el acceso al contenido utilizando, por ejemplo, URL o cookies firmadas de CloudFront,
tampoco querrá que nadie consulte los archivos utilizando la URL directa para el archivo. En su lugar,
deseará que solo puedan obtener acceso a los archivos utilizando la URL de CloudFront, para que las
medidas de protección funcionen.
Si utiliza un bucket de Amazon S3 como origen de una distribución de CloudFront, puede configurar
una identidad de acceso de origen (OAI) para administrar el acceso directo al contenido. Una identidad
de acceso de origen es una identidad de usuario de CloudFront especial que se puede asociar con la
distribución de modo que puede proteger todo o parte del contenido de Amazon S3. Para obtener más
información acerca de cómo configurarlo, consulte Restricción del acceso a contenido de Amazon S3
utilizando una identidad de acceso de origen (p. 223).
Restringir el acceso al contenido proporcionado por un balanceador de carga de aplicaciones
Cuando utiliza CloudFront con un balanceador de carga de aplicaciones en Elastic Load Balancing
como origen, puede configurar CloudFront para evitar que los usuarios accedan directamente al
balanceador de carga de aplicaciones. Esto permite a los usuarios acceder al balanceador de carga
de aplicaciones solo a través de CloudFront, lo que garantiza que obtenga los beneficios de utilizar
CloudFront. Para obtener más información, consulte Restringir el acceso a los balanceadores de carga
de aplicaciones (p. 230).
Uso de ACL web de AWS WAF
Puede utilizar AWS WAF, un servicio de firewall de aplicación web, para crear una lista de control
de acceso web (ACL web) para restringir el acceso al contenido. En función de las condiciones que
especifique, como las direcciones IP de las que provienen las solicitudes o los valores de las cadenas
de consulta, CloudFront responde a las solicitudes con el contenido solicitado o con un código de
estado HTTP 403 (Prohibido). Para obtener más información, consulte Utilizar AWS WAF para
controlar el acceso al contenido (p. 237).
Restricción geográfica
Puede usar geo restriction (restricción geográfica), también conocida como geo blocking (bloqueo
geográfico), para evitar que usuarios de ubicaciones geográficas específicas obtengan acceso a
contenido que ofrece a través de una distribución de CloudFront. Existen varias opciones entre las
498
Amazon CloudFront Guía para desarrolladores
Identity and Access Management
que elegir al configurar restricciones geográficas. Para obtener más información, consulte Restringir la
distribución geográfica de su contenido (p. 238).
Después de autenticar su identidad, IAM controla su acceso a AWS verificando que tiene permisos para
realizar operaciones y obtener acceso a los recursos. Si es un administrador de la cuenta, puede utilizar
IAM para controlar el acceso de otros usuarios a los recursos que están asociados a dicha cuenta.
En este capítulo se explica cómo utilizar AWS Identity and Access Management (IAM) y CloudFront para
ayudar a proteger sus recursos.
Temas
Autenticación
Puede obtener acceso a AWS con los siguientes tipos de identidades:
• Usuario de la cuenta raíz de AWS: cuando se crea por primera vez una cuenta de AWS, se comienza
con una identidad de inicio de sesión único que tiene acceso completo a todos los servicios y recursos
de AWS de la cuenta. Esta identidad recibe el nombre de usuario raíz de la cuenta de AWS y para
obtener acceso a ella se inicia sesión con la dirección de correo electrónico y la contraseña que
utilizó para crear la cuenta. Le recomendamos que no utilice el usuario raíz en sus tareas cotidianas,
incluso las tareas administrativas. En lugar de ello, es mejor ceñirse a la práctica recomendada de
utilizar el usuario final exclusivamente para crear al primer usuario de IAM. A continuación, guarde
las credenciales del usuario raíz en un lugar seguro y utilícelas tan solo para algunas tareas de
administración de cuentas y servicios.
• Usuario de IAM: un usuario de IAM es una identidad dentro de su cuenta de AWS que tiene permisos
personalizados específicos (por ejemplo, permisos para crear una distribución en CloudFront). Puede
utilizar un nombre de usuario de IAM y una contraseña para iniciar sesión en páginas web seguras de
AWS, como la consola de administración de AWS, los foros de debate de AWS o el Centro de soporte
de AWS.
Además de un nombre de usuario y una contraseña, también puede generar claves de acceso para
cada usuario. Puede utilizar estas claves cuando obtenga acceso a los servicios de AWS mediante
programación, ya sea a través de uno de los varios SDK o mediante la interfaz de línea de comandos
(CLI) de AWS. El SDK y las herramientas de CLI usan claves de acceso para firmar criptográficamente
su solicitud. Si no utiliza las herramientas de AWS, debe firmar usted mismo la solicitud. CloudFront es
compatible con Signature Version 4, un protocolo para autenticar solicitudes de API de entrada. Para
obtener más información sobre las solicitudes de autenticación, consulte Proceso de firma de Signature
Version 4 en la Referencia general de AWS.
499
Amazon CloudFront Guía para desarrolladores
Control de acceso
• Rol de IAM: un rol de IAM es una identidad de IAM que puede crear en la cuenta y que tiene permisos
específicos. Un rol de IAM es similar a un usuario de IAM, ya que se trata de una AWS Identity con
políticas de permisos que determinan lo que la identidad puede hacer y lo que no en AWS. Sin embargo,
en lugar de asociarse exclusivamente a una persona, la intención es que cualquier usuario pueda asumir
un rol que necesite. Además, un rol no tiene asociadas credenciales a largo plazo estándar, como una
contraseña o claves de acceso. En su lugar, cuando se asume un rol, este proporciona credenciales de
seguridad temporales para la sesión de rol. Los roles de IAM con credenciales temporales son útiles en
las siguientes situaciones:
• Acceso de usuarios federados: en lugar de crear un usuario de IAM, puede usar identidades
existentes de AWS Directory Service, el directorio de usuarios de la compañía o un proveedor de
identidad web. Esto se conoce como usuarios federados. AWS asigna un rol a un usuario federado
cuando se solicita acceso a través de un proveedor de identidad. Para obtener más información
acerca de los usuarios federados, consulte Usuarios y roles federados en la Guía del usuario de IAM.
• Acceso a los servicios de AWS: un rol de servicio es un rol de IAM que un servicio asume para realizar
acciones en su nombre. Los roles de servicio ofrecen acceso solo dentro de su cuenta y no se pueden
utilizar para otorgar acceso a servicios en otras cuentas. Un administrador de IAM puede crear,
modificar y eliminar un rol de servicio desde IAM. Para obtener más información, consulte Creación de
un rol para delegar permisos a un servicio de AWS en la Guía del usuario de IAM.
• Aplicaciones que se ejecutan en Amazon EC2: puede utilizar un rol de IAM para administrar
credenciales temporales para las aplicaciones que se ejecutan en una instancia EC2 y realizan
solicitudes de la API y la CLI de AWS. Es preferible hacerlo de este modo a almacenar claves de
acceso en la instancia EC2. Para asignar un rol de AWS a una instancia EC2 y ponerla a disposición
de todas las aplicaciones, cree un perfil de instancia asociado a la misma. Un perfil de instancia
contiene el rol y permite a los programas que se ejecutan en la instancia EC2 obtener credenciales
temporales. Para obtener más información, consulte Uso de un rol de IAM para conceder permisos a
aplicaciones que se ejecutan en instancias Amazon EC2 en la Guía del usuario de IAM.
Control de acceso
Para crear, actualizar, eliminar o enumerar recursos de CloudFront, necesita permisos para realizar la
operación y obtener acceso a los recursos correspondientes. Además, para realizar la operación mediante
programación, necesita claves de acceso válidas.
En las secciones siguientes se describe cómo administrar los permisos para CloudFront:
• Introducción a la administración de permisos de acceso para sus recursos de CloudFront (p. 500)
• Usar políticas basadas en identidad (políticas de IAM) para CloudFront (p. 505)
• Permisos de la API de CloudFront: referencia de acciones, recursos y condiciones (p. 510)
500
Amazon CloudFront Guía para desarrolladores
Información general sobre la administración de acceso
Note
Al conceder permisos, puede decidir a quién concederlos, los recursos para los que los concede y las
acciones que se les permiten realizar.
Temas
• ARN de recursos de CloudFront (p. 501)
• Titularidad de los recursos (p. 501)
• Administración del acceso a los recursos (p. 501)
• Especificar elementos de políticas: recursos, acciones, efectos y entidades principales (p. 505)
• Especificación de las condiciones de una política (p. 505)
arn:aws:cloudfront::optional-account-id:*
CloudFront ofrece acciones de la API para trabajar con cada uno de estos tipos de recursos. Para obtener
más información, consulte la Referencia de la API de Amazon CloudFront. Para consultar una lista de
acciones y el ARN a especificar para conceder o denegar permisos para ejecutar cada acción, visite
Permisos de la API de CloudFront: referencia de acciones, recursos y condiciones (p. 510).
• Si utiliza las credenciales de cuenta raíz de su cuenta de AWS para crear una distribución, esta cuenta
será la propietaria de la distribución.
• Si crea un usuario de IAM en su cuenta de AWS y concede permisos para crear una distribución para
ese usuario, el usuario puede crear una distribución. La cuenta de AWS que creó el usuario es la
propietaria de la distribución.
• Si crea un rol de IAM en su cuenta de AWS con permisos para crear una distribución, cualquier persona
que pueda asumir el rol podrá crear una distribución. Sin embargo, la propietaria de la distribución será
su cuenta de AWS, a la que pertenece el rol.
Las políticas asociadas a una identidad de IAM se denominan "políticas basadas en identidad" (políticas
de IAM) y las políticas asociadas a un recurso se denominan "políticas basadas en recursos". CloudFront
501
Amazon CloudFront Guía para desarrolladores
Información general sobre la administración de acceso
no admite políticas basadas en recursos, pero sí admite políticas de nivel de recursos. Para obtener más
información acerca de los tipos de políticas de permisos que admite CloudFront, consulte Administración
del acceso a los recursos (p. 501).
Temas
• Políticas basadas en identidad (políticas de IAM) (p. 502)
• Políticas de nivel de recursos (p. 503)
• Políticas basadas en etiquetas (p. 503)
Para obtener más información acerca de cómo delegar permisos a usuarios de otra cuenta de AWS,
consulte Administración de acceso en la Guía del usuario de IAM.
La siguiente política de ejemplo permite un usuario realizar la acción CreateDistribution para crear
una distribución de forma programada para su cuenta de AWS:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudfront:CreateDistribution"
],
"Resource":"*"
}
]
}
Para obtener información acerca de los permisos necesarios para llevar a cabo operaciones desde la
consola de CloudFront, consulte Permisos necesarios para utilizar la consola de CloudFront (p. 506).
Para obtener más información acerca de cómo asociar políticas a identidades de CloudFront, consulte
Usar políticas basadas en identidad (políticas de IAM) para CloudFront (p. 505). Para obtener más
información sobre usuarios, grupos, roles y permisos, consulte Identidades (usuarios, grupos y roles) en la
Guía del usuario de IAM.
502
Amazon CloudFront Guía para desarrolladores
Información general sobre la administración de acceso
Por ejemplo, la siguiente política muestra cómo puede permitir el acceso de actualización, eliminación y
creación de invalidaciones a una distribución que especifique mediante su ARN. Esta política concede los
permisos necesarios para llevar a cabo estas acciones únicamente desde la API de AWS o la CLI de AWS.
(Para utilizar esta política, sustituya el texto en cursiva de la política de ejemplo por la información de su
recurso).
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"cloudfront:CreateDistribution",
"cloudfront:Get*",
"cloudfront:List*"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"cloudfront:UpdateDistribution",
"cloudfront:DeleteDistribution",
"cloudfront:CreateInvalidation",
],
"Resource": "arn:aws:cloudfront::123456789012:distribution/EDFDVBD6EXAMPLE"
}
]
}
Las etiquetas se pueden asociar al recurso o pasarse dentro de la solicitud a los servicios que admiten
etiquetado. En CloudFront, los recursos pueden tener etiquetas y algunas acciones pueden incluir
etiquetas. Al crear una política de IAM, puede utilizar las claves de condición de etiqueta para controlar:
503
Amazon CloudFront Guía para desarrolladores
Información general sobre la administración de acceso
• Qué usuarios pueden realizar acciones en una distribución, en función de las etiquetas que tiene.
• Las etiquetas que se pueden pasar en la solicitud de una acción.
• Si se pueden utilizar claves de etiqueta específicas en una solicitud.
Para conocer la sintaxis y la semántica completa de las claves de condición de las etiquetas, consulte
Control del acceso mediante etiquetas de IAM en la Guía del usuario de IAM.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"cloudfront:CreateDistribution",
"cloudfront:TagResource"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestTag/stage": [
"gamma",
"prod"
]
}
}
},
{
"Effect": "Deny",
"Action": [
"cloudfront:TagResource",
"cloudfront:UntagResource"
],
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"aws:TagKeys": [
"stage"
]
},
"StringEquals": {
"aws:ResourceTag/stage": [
"gamma",
"prod"
]
}
}
}
]
}
504
Amazon CloudFront Guía para desarrolladores
Uso de políticas de IAM para CloudFront
• Recurso: use un Nombre de recurso de Amazon (ARN) para identificar el recurso al que se aplica la
política. Para obtener más información, consulte ARN de recursos de CloudFront (p. 501).
• Acción: utilice palabras clave de acción para identificar las operaciones del recurso que desea
permitir o denegar. Por ejemplo, en función del elemento Effect especificado, el permiso
cloudfront:CreateDistribution permite o deniega los permisos de usuario para realizar la acción
CreateDistribution de CloudFront.
• Efecto: especifique el efecto (permitir o denegar) cuando un usuario intente realizar la acción en el
recurso especificado. Si no concede acceso de forma explícita a una acción, el acceso se deniega
implícitamente. También puede denegar explícitamente el acceso a un recurso para asegurarse de que
un usuario no pueda obtener acceso a él, aunque otra política le conceda acceso.
• Entidad principal: en las políticas basadas en identidades (políticas de IAM), el usuario al que se asocia
esta política es la entidad principal implícita. Para las políticas basadas en recursos, debe especificar el
usuario, la cuenta, el servicio u otra entidad que desee que reciba permisos (se aplica solo a las políticas
basadas en recursos).
CloudFront no admite políticas basadas en recursos, pero sí admite políticas de nivel de recursos. Para
obtener más información acerca de los tipos de políticas de permisos que admite CloudFront, consulte
Administración del acceso a los recursos (p. 501).
Para obtener más información sobre la sintaxis y descripciones de las políticas de IAM, consulte la
Referencia de políticas de AWS IAM en la Guía del usuario de IAM.
Para ver una lista con todas las operaciones de la API de CloudFront y los recursos a los que
son aplicables, consulte Permisos de la API de CloudFront: referencia de acciones, recursos y
condiciones (p. 510).
Para expresar condiciones, se usan claves de condición predefinidas. No hay claves de condición
específicas para CloudFront. No obstante, existen claves de condición que se aplican a todo AWS que
puede utilizar cuando corresponda. Para ver una lista completa de claves generales de AWS, consulte
Claves disponibles para las condiciones en la Guía del usuario de IAM.
505
Amazon CloudFront Guía para desarrolladores
Uso de políticas de IAM para CloudFront
Important
Le recomendamos que consulte primero los temas de introducción en los que se explican los
conceptos básicos y las opciones disponibles para administrar el acceso a sus recursos de
CloudFront. Para obtener más información, consulte Introducción a la administración de permisos
de acceso para sus recursos de CloudFront (p. 500).
Temas
• Permisos necesarios para utilizar la consola de CloudFront (p. 506)
• Políticas administradas por AWS (predefinidas) para CloudFront (p. 508)
• Ejemplos de políticas administradas por el cliente (p. 508)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAllCloudFrontPermissions",
"Effect": "Allow",
"Action": ["cloudfront:*"],
"Resource": "*"
}
]
}
La política concede permisos para realizar todas las operaciones de CloudFront, que son suficientes para
acceder a CloudFront mediante programación. Si utiliza la consola para acceder a CloudFront, consulte
Permisos necesarios para utilizar la consola de CloudFront (p. 506).
Para consultar una lista de acciones y el ARN a especificar para conceder o denegar permisos para
ejecutar cada acción, visite Permisos de la API de CloudFront: referencia de acciones, recursos y
condiciones (p. 510).
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"acm:ListCertificates",
"cloudfront:*",
"cloudwatch:DescribeAlarms",
"cloudwatch:PutMetricAlarm",
"cloudwatch:GetMetricStatistics",
"elasticloadbalancing:DescribeLoadBalancers",
"iam:ListServerCertificates",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"waf:GetWebACL",
"waf:ListWebACLs"
],
"Resource":"*"
},
506
Amazon CloudFront Guía para desarrolladores
Uso de políticas de IAM para CloudFront
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets",
"s3:PutBucketPolicy"
],
"Resource":"arn:aws:s3:::*"
}
]
}
acm:ListCertificates
Al crear y actualizar las distribuciones, le permite ver una lista de balanceadores de carga Elastic Load
Balancing en la lista de orígenes disponibles.
507
Amazon CloudFront Guía para desarrolladores
Uso de políticas de IAM para CloudFront
CloudFront. Para obtener más información, consulte Restricción del acceso a contenido de Amazon
S3 utilizando una identidad de acceso de origen (p. 223).
Cuando crea alarmas de CloudWatch en la consola de CloudFront, le permite elegir un tema de SNS
para las notificaciones.
Le permite ver una lista de ACL web de AWS WAF en la consola de CloudFront.
Si desea que CloudFront cree y guarde registros de acceso, debe conceder permisos
adicionales. Para obtener más información, consulte Permisos necesarios para configurar el
registro estándar y el acceso a los archivos de registro (p. 465).
• CloudFrontReadOnlyAccess: concede acceso de solo lectura a los recursos de CloudFront.
Note
Para consultar estas políticas de permisos, inicie sesión en la consola de IAM y busque las
políticas específicas. También puede crear sus propias políticas de IAM personalizadas con el fin
de conceder permisos para realizar operaciones de la API de CloudFront. Puede asociar estas
políticas personalizadas a los usuarios o grupos de IAM que requieran esos permisos.
Ejemplos
• Ejemplo 1: permitir acceso de lectura a todas las distribuciones (p. 509)
• Ejemplo 2: Creación, actualización y eliminación de distribuciones (p. 509)
• Ejemplo 3: Permitir crear y publicar invalidaciones (p. 510)
508
Amazon CloudFront Guía para desarrolladores
Uso de políticas de IAM para CloudFront
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"acm:ListCertificates",
"cloudfront:GetDistribution",
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions",
"cloudfront:ListCloudFrontOriginAccessIdentities",
"elasticloadbalancing:DescribeLoadBalancers",
"iam:ListServerCertificates",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"waf:GetWebACL",
"waf:ListWebACLs"
],
"Resource":"*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets"
],
"Resource":"arn:aws:s3:::*"
}
]
}
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"acm:ListCertificates",
"cloudfront:CreateDistribution",
"cloudfront:DeleteDistribution",
"cloudfront:GetDistribution",
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions",
"cloudfront:UpdateDistribution",
"cloudfront:ListCloudFrontOriginAccessIdentities",
"elasticloadbalancing:DescribeLoadBalancers",
"iam:ListServerCertificates",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"waf:GetWebACL",
"waf:ListWebACLs"
],
"Resource":"*"
},
509
Amazon CloudFront Guía para desarrolladores
Referencia de permisos de la API de CloudFront
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets",
"s3:PutBucketPolicy"
],
"Resource":"arn:aws:s3:::*"
}
]
}
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"acm:ListCertificates",
"cloudfront:GetDistribution",
"cloudfront:GetStreamingDistribution",
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions",
"cloudfront:ListCloudFrontOriginAccessIdentities",
"cloudfront:CreateInvalidation",
"cloudfront:GetInvalidation",
"cloudfront:ListInvalidations",
"elasticloadbalancing:DescribeLoadBalancers",
"iam:ListServerCertificates",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"waf:GetWebACL",
"waf:ListWebACLs"
],
"Resource":"*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets"
],
"Resource":"arn:aws:s3:::*"
}
]
}
510
Amazon CloudFront Guía para desarrolladores
Referencia de permisos de la API de CloudFront
La lista incluye cada operación de la API de CloudFront, las acciones correspondientes a las que puede
conceder permisos para realizar la acción y el recurso de AWS al que puede conceder los permisos. Las
acciones se especifican en el campo Action de la política y el valor del recurso se especifica en el campo
Resource de la política.
Puede utilizar claves de condición generales de AWS en sus políticas de CloudFront para expresar
condiciones. Para ver una lista completa de claves generales de AWS, consulte Claves disponibles en la
Guía del usuario de IAM.
Temas
• Permisos necesarios para realizar acciones en distribuciones (p. 511)
• Permisos necesarios para realizar acciones en las invalidaciones (p. 512)
• Permisos necesarios para acciones en identidades de acceso de origen (p. 513)
• Permisos necesarios para acciones de CloudFront relacionadas con Lambda@Edge (p. 513)
• Permisos necesarios para realizar acciones en etiquetas (p. 514)
Recursos:
• CloudFront: *
• ACM: *
• Amazon S3: si configura CloudFront para guardar los registros de acceso, tiene la opción de
restringir el acceso a un bucket especificado.
CreateDistributionWithTags
Recursos:
• CloudFront: *
• ACM: *
• Amazon S3: si configura CloudFront para guardar los registros de acceso, tiene la opción de
restringir el acceso a un bucket especificado.
511
Amazon CloudFront Guía para desarrolladores
Referencia de permisos de la API de CloudFront
GetDistribution
Recursos: *
GetDistributionConfig
Recursos: *
ListDistributions
Recursos: *
UpdateDistribution
Recursos:
• CloudFront: *
• ACM: *
• Amazon S3: si configura CloudFront para guardar los registros de acceso, tiene la opción de
restringir el acceso a un bucket especificado.
DeleteDistribution
Recursos: *
Recursos: *
GetInvalidation
Recursos: *
ListInvalidations
Recursos: *
512
Amazon CloudFront Guía para desarrolladores
Referencia de permisos de la API de CloudFront
Recursos: *
GetCloudFrontOriginAccessIdentity
Recursos: *
GetCloudFrontOriginAccessIdentityConfig
Recursos: *
ListCloudFrontOriginAccessIdentities
Recursos: *
UpdateCloudFrontOriginAccessIdentity
Recursos: *
DeleteCloudFrontOriginAccessIdentity
Recursos: *
CreateDistribution
513
Amazon CloudFront Guía para desarrolladores
Referencia de permisos de la API de CloudFront
Recursos:
• CloudFront: *
• ACM: *
• Amazon S3: si configura CloudFront para guardar los registros de acceso, tiene la opción de
restringir el acceso a un bucket especificado.
CreateDistributionWithTags
Recursos:
• CloudFront: *
• ACM: *
• Amazon S3: si configura CloudFront para guardar los registros de acceso, tiene la opción de
restringir el acceso a un bucket especificado.
UpdateDistribution
Recursos:
• CloudFront: *
• ACM: *
• Amazon S3: si configura CloudFront para guardar los registros de acceso, tiene la opción de
restringir el acceso a un bucket especificado.
Recursos: *
UntagResource
Recursos: *
ListTagsForResource
514
Amazon CloudFront Guía para desarrolladores
Registro y monitorización
Recursos: *
Las alarmas de Amazon CloudWatch le permiten ver una sola métrica durante el período de tiempo
que especifique. Si la métrica supera un umbral determinado, se envía una notificación a un tema
de Amazon SNS o a una política de AWS Auto Scaling. Las alarmas de CloudWatch no invocan
acciones cuando una métrica se encuentra en un estado determinado. En su lugar, el estado debe
haber cambiado y debe mantenerse durante el número de periodos especificado. Para obtener más
información, consulte Monitoreo de CloudFront con Amazon CloudWatch (p. 452).
Registros de AWS CloudTrail
Cloudtrail proporciona un registro de las medidas adoptadas por un usuario, un rol o un servicio de
AWS en CloudFront. Mediante la información recopilada por CloudTrail, puede determinar la solicitud
que se realizó a CloudFront, la dirección IP desde la que se realizó, quién la realizó y cuándo, etc.
Para obtener más información, consulte Uso de AWS CloudTrail para capturar solicitudes enviadas a
la API de CloudFront (p. 488).
Registros de acceso CloudFront
Los registros de acceso del servidor proporcionan registros detallados sobre las solicitudes que
se realizan a una distribución. Los registros de acceso al servidor resultan útiles para muchas
aplicaciones. Por ejemplo, la información del registro de acceso puede ser útil en auditorías de acceso
y seguridad. Para obtener más información, consulte Configuración y uso de registros estándar
(registros de acceso) (p. 463).
Informes de la consola de CloudFront
La consola de CloudFront incluye una serie de informes, incluido el informe de estadísticas de caché,
el informe de objetos populares y el informe de remitentes principales. La mayoría de los informes
de la consola de CloudFront se basan en los datos de los registros de acceso de CloudFront, que
contienen información detallada sobre cada solicitud de usuario que CloudFront recibe. No obstante,
no es necesario habilitar los registros de acceso para ver los informes. Para obtener más información,
consulte Informes de CloudFront en la consola (p. 426).
Para obtener una lista de los servicios de AWS en el ámbito de programas de conformidad específicos,
consulte Servicios de AWS en el ámbito del programa de conformidad. Para obtener información general,
consulte AWS Compliance Programs (Programas de conformidad de AWS).
Puede descargar los informes de auditoría de terceros utilizando AWS Artifact. Para obtener más
información, consulte Descarga de informes en AWS Artifact.
515
Amazon CloudFront Guía para desarrolladores
Prácticas recomendadas de conformidad de CloudFront
El programa de AWS de conformidad con HIPAA incluye CloudFront como un servicio válido de HIPAA.
Si ha firmado un anexo para socios empresariales (BAA) con AWS, puede utilizar CloudFront para
entregar contenido que incluya información sanitaria protegida (PHI). Para obtener más información,
consulte Conformidad con HIPAA.
• Recursos de conformidad de AWS: es posible que este conjunto de guías y libros de ejercicios se
apliquen a su sector y ubicación.
• AWS Config: este servicio de AWS evalúa cómo las configuraciones de los recursos cumplen con las
prácticas internas, las pautas del sector y las regulaciones.
• AWS Security Hub: este servicio de AWS ofrece una perspectiva integral acerca de su estado de
seguridad dentro de AWS que ayuda a verificar la conformidad con los estándares de seguridad del
sector y las prácticas recomendadas.
Si ejecuta cargas de trabajo conformes con HIPAA o PCI que se basan en el Modelo de responsabilidad
compartida de AWS, le recomendamos que registre los datos de uso de CloudFront de los últimos 365 días
para posibles auditorías futuras. Para registrar datos de uso, puede hacer lo siguiente:
• Habilitar registros de acceso de CloudFront Para obtener más información, consulte Configuración y uso
de registros estándar (registros de acceso) (p. 463).
• Capture las solicitudes que se envían a la API de CloudFront. Para obtener más información, consulte
Uso de AWS CloudTrail para capturar solicitudes enviadas a la API de CloudFront (p. 488).
Además, consulte lo siguiente para obtener más información acerca de cómo CloudFront cumple con los
estándares PCI DSS y SOC.
PCI DSS
CloudFront admite el procesamiento, el almacenamiento y la transmisión de datos de tarjetas de crédito
por parte de un comerciante o proveedor de servicios, y se ha validado como conforme con el Estándar de
Seguridad de los Datos de la Industria de las Tarjetas de Pago (DSS PCI). Para obtener más información
acerca de PCI DSS y sobre cómo solicitar una copia del Paquete de conformidad con PCI de AWS,
consulte PCI DSS Nivel 1.
516
Amazon CloudFront Guía para desarrolladores
Resiliencia
Para obtener más información sobre las zonas de disponibilidad y las regiones de AWS, consulte
Infraestructura global de AWS.
Puede utilizar llamadas a la API publicadas de AWS para obtener acceso a CloudFront a través de la
red. Los clientes deben ser compatibles con Transport Layer Security (TLS) 1.0 o una versión posterior.
Le recomendamos TLS 1.2 o una versión posterior. Los clientes también deben ser compatibles con
517
Amazon CloudFront Guía para desarrolladores
Seguridad de la infraestructura
conjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE)
o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La mayoría de los sistemas modernos como Java 7
y posteriores son compatibles con estos modos. Además, las solicitudes deben estar firmadas mediante
un ID de clave de acceso y una clave de acceso secreta que esté asociada a una entidad principal de
IAM. También puede utilizar AWS Security Token Service (AWS STS) si desea generar credenciales de
seguridad temporales para firmar solicitudes.
518
Amazon CloudFront Guía para desarrolladores
Cuotas generales
Cuotas
CloudFront está supeditado a las siguientes cuotas (anteriormente denominadas límites). Tenga en
cuenta que Lambda@Edge también tiene cuotas específicas, además de las cuotas predeterminadas de
CloudFront.
Temas
• Cuotas generales (p. 519)
• Cuotas generales de distribuciones (p. 519)
• Cuotas generales sobre políticas (p. 520)
• Cuotas de conexiones WebSocket (p. 521)
• Cuotas en las cookies de la lista blanca (p. 522)
• Cuotas de cadenas de consulta incluidas en la lista blanca (solo para distribuciones web) (p. 522)
• Cuotas en encabezados personalizados (p. 522)
• Cuotas en certificados SSL (p. 523)
• Cuotas de invalidaciones (p. 523)
• Cuotas en grupos de claves (p. 523)
• Cuotas de cifrado en el nivel de campo (p. 524)
• Cuotas de Lambda@Edge (p. 524)
• Tiempo de espera de la solicitud (p. 526)
Cuotas generales
Entidad Cuota predeterminada
La longitud máxima es de una solicitud, incluidos los encabezados y las 20 480 bytes
cadenas de consulta, pero sin incluir el contenido del cuerpo
519
Amazon CloudFront Guía para desarrolladores
Cuotas generales sobre políticas
Para obtener más información, consulte Tiempo de espera de respuesta del Solicitar una ampliación
origen (p. 51). de la cuota
Compresión de archivos: intervalo de tamaños de archivos que CloudFront 1 000 a 10 000 000
comprime bytes
Para obtener más información, consulte Uso de URL personalizadas para Solicitar una ampliación
archivos añadiendo nombres de dominio alternativos (CNAME) (p. 80). de la cuota
520
Amazon CloudFront Guía para desarrolladores
Cuotas de conexiones WebSocket
Si CloudFront no ha
detectado ningún
byte enviado desde
el origen al cliente en
los últimos 10 minutos,
se presupone que la
conexión esta inactiva y
se cierra.
521
Amazon CloudFront Guía para desarrolladores
Cuotas en las cookies de la lista blanca
Para obtener más información, consulte Almacenamiento en caché de Solicitar una ampliación
contenido en función de cookies (p. 277). de la cuota
Cantidad total de bytes en nombres de cookies incluidos en listas blancas (no 512 menos la cantidad
es aplicable si configura CloudFront para reenviar todas las cookies al origen) de cookies incluidas en
listas blancas
Número máximo de caracteres en una cadena de consulta de lista blanca 128 caracteres
Número máximo de caracteres en total para todas las cadenas de consulta de 512 caracteres
lista blanca en el mismo parámetro
Para obtener más información, consulte Almacenamiento en caché de Solicitar una ampliación
contenido en función de parámetros de cadenas de consulta (p. 274). de la cuota
Para obtener más información, consulte Almacenamiento en caché de Solicitar una ampliación
contenido en función de encabezados de solicitud (p. 280). de la cuota
522
Amazon CloudFront Guía para desarrolladores
Cuotas en certificados SSL
Cuotas de invalidaciones
Entidad Cuota predeterminada
Invalidación de archivos: cantidad máxima de archivos que puede procesar Sin cuota
una invalidación comodín
523
Amazon CloudFront Guía para desarrolladores
Cuotas de cifrado en el nivel de campo
Para obtener más información, consulte Uso del cifrado en el nivel de campo
para ayudar a proteger la información confidencial (p. 241).
Cuotas de Lambda@Edge
Las cuotas de esta sección se aplican a Lambda@Edge. Estas cuotas se suman a las cuotas
predeterminadas de CloudFront y Lambda, que también se aplican. Para conocer las cuotas
predeterminadas, consulte Cuotas (p. 519) en esta guía y Cuotas en la Guía para desarrolladores de
AWS Lambda.
Note
Lambda escala dinámicamente la capacidad en respuesta al aumento del tráfico, según las cuotas
de la cuenta. Para obtener más información, consulte Escalado de funciones en la Guía para
desarrolladores de AWS Lambda.
Además, tenga en cuenta que existen algunas otras restricciones al utilizar las funciones de
Lambda@Edge. Para obtener más información, consulte Requisitos y restricciones en funciones de
Lambda (p. 414).
524
Amazon CloudFront Guía para desarrolladores
Cuotas de tamaño en URI y cadena de consulta
Otras cuotas
Distribuciones por cuenta de AWS para los que puede crear disparadores 25
Para obtener más información, consulte Escalado de funciones en la Guía Solicitar una ampliación
para desarrolladores de AWS Lambda. de la cuota
525
Amazon CloudFront Guía para desarrolladores
Cuotas de tamaño para el cuerpo de la solicitud
con la opción Include Body (Incluir cuerpo)
Tipo de codificación del cuerpo Tamaño del cuerpo Tamaño del cuerpo
permitido: solicitud permitido: solicitud
del espectador del origen
text 40 KB 1 MB
Para obtener más información, consulte Tiempo de espera de respuesta del Solicitar una ampliación
origen (p. 314). de la cuota
526
Amazon CloudFront Guía para desarrolladores
Documentación adicional de Amazon CloudFront
Temas
• Documentación adicional de Amazon CloudFront (p. 527)
• Cómo obtener soporte (p. 527)
• SDK y herramientas para desarrolladores de CloudFront (p. 528)
• Consejos del blog de Amazon Web Services (p. 528)
• Foros de debate: un foro de la comunidad en el que los desarrolladores pueden debatir aspectos
técnicos relacionados con CloudFront.
• Centro de soporte de AWS: este sitio aúna información acerca de casos de soporte recientes y
resultados de AWS Trusted Advisor y comprobaciones de estado. Además, proporciona enlaces a foros
de debate, preguntas técnicas más frecuentes, panel de estado del servicio e información acerca de los
planes de soporte de AWS.
• información acerca de AWS Premium Support: página web principal con información acerca de AWS
Premium Support, un canal de soporte individualizado y de respuesta rápida que le ayudará a crear y
ejecutar aplicaciones en AWS Infrastructure Services.
• AWS IQ: obtenga ayuda de profesionales y expertos certificados por AWS.
• Contacte con nosotros: enlaces para hacernos llegar sus preguntas sobre facturación o su cuenta. Para
preguntas técnicas, utilice los foros de debate o los enlaces de soporte previamente proporcionados.
527
Amazon CloudFront Guía para desarrolladores
SDK y herramientas para desarrolladores de CloudFront
Además, Amazon Web Services proporciona kits de desarrollo de software para acceder a CloudFront
mediante programación. Las bibliotecas de SDK automatizan una serie de tareas comunes, incluida la
firma criptográfica de las solicitudes de servicio, de nuevos intentos o la gestión de las respuestas de error.
528
Amazon CloudFront Guía para desarrolladores
Historial de revisión
Las siguientes entradas describen cambios importantes realizados en la documentación de CloudFront.
Quitar Amazon CloudFront dio de baja las distribuciones del protocolo de 10 de febrero de
documentación mensajería en tiempo real (RTMP) el 31 de diciembre de 2020. La 2021
para documentación para las distribuciones RTMP ahora se elimina de la
distribuciones Guía para desarrolladores de Amazon CloudFront.
RTMP
Nuevo tutorial La Guía para desarrolladores de Amazon CloudFront incluye ahora 18 de diciembre
un tutorial sobre el uso de Amazon CloudFront para restringir el de 2020
acceso a un balanceador de carga de aplicaciones en Elastic Load
Balancing. Para obtener más información, consulte Restringir el
acceso a los balanceadores de carga de aplicaciones (p. 230).
Nueva CloudFront ahora admite CloudFront Origin Shield, una capa 20 de octubre de
característica: adicional en la infraestructura de almacenamiento en caché de 2020
Origin Shield CloudFront que ayuda a minimizar la carga del origen, mejorar la
disponibilidad y reducir los costos de explotación. Para obtener
más información, consulte Uso de Amazon CloudFront Origin
Shield (p. 255).
Nuevo CloudFront ahora es compatible con el protocolo TLS 1.3 para 3 de septiembre
protocolo TLS conexiones HTTPS entre lectores y distribuciones de CloudFront. de 2020
529
Amazon CloudFront Guía para desarrolladores
Nueva política CloudFront ahora admite una nueva política de seguridad, 8 de julio de
de seguridad TLSv1.2_2019, con un conjunto más pequeño de algoritmos 2020
criptográficos compatibles. Para obtener más información, consulte
Protocolos y cifrados admitidos entre lectores y CloudFront (p. 145).
Nueva Comience a trabajar con CloudFront creando un sitio web estático 2 de junio de
documentación seguro con Amazon S3, CloudFront, Lambda @Edge, etc., todo 2020
para comenzar ello implementado con AWS CloudFormation. Para obtener
a usar más información, consulte Introducción a un sitio web seguro
CloudFront estático (p. 33).
mediante la
creación de
un sitio web
estático seguro
530
Amazon CloudFront Guía para desarrolladores
Nuevos CloudFront agrega siete nuevos campos para obtener acceso a 12 de diciembre
campos en los los registros. Para obtener más información, consulte Campos de de 2019
registros de archivo de registro estándar (p. 469).
acceso
531
Amazon CloudFront Guía para desarrolladores
Nueva Ahora puede usar Amazon CloudFront para negociar conexiones 15 de marzo de
característica HTTPS con orígenes mediante el algoritmo de firma digital de 2018
curva elíptica (ECDSA). ECDSA utiliza claves más pequeñas que
son más rápidas, aunque, tan seguras como el algoritmo de RSA
más antiguo. Para obtener más información, consulte Protocolos
y cifrados SSL/TLS admitidos para la comunicaciones entre
CloudFront y su origen y Acerca de los algoritmos critpográficos
RSA y ECDSA.
532
Amazon CloudFront Guía para desarrolladores
533
Amazon CloudFront Guía para desarrolladores
Glosario de AWS
Para ver la terminología más reciente de AWS, consulte el glosario de AWS en la referencia general de
AWS.
534