Amazon CloudFront - Guía para desarrolladores · Protocolos y cifrados admitidos ... Volver de un...

432
Amazon CloudFront Guía para desarrolladores Versión de API 2016-09-29

Transcript of Amazon CloudFront - Guía para desarrolladores · Protocolos y cifrados admitidos ... Volver de un...

Amazon CloudFrontGuía para desarrolladoresVersión de API 2016-09-29

Amazon CloudFront Guía para desarrolladores

Amazon CloudFront: Guía para desarrolladoresCopyright © 2018 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any mannerthat is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks notowned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored byAmazon.

Amazon CloudFront Guía para desarrolladores

Table of Contents¿Qué es Amazon CloudFront? ............................................................................................................. 1

Cómo configurar CloudFront para entregar contenido ....................................................................... 1Casos de uso ............................................................................................................................ 3

Acelerar la entrega de contenidos de sitio web estático ............................................................ 3Distribuir vídeo bajo demanda o en streaming ......................................................................... 4Cifrar campos específicos a través del procesamiento del sistema ............................................. 4Personalizar en el borde ...................................................................................................... 4Distribuir contenido privado mediante personalizaciones de Lambda@Edge ................................. 4

Cómo CloudFront entrega contenido ............................................................................................. 5Cómo CloudFront entrega contenido a los usuarios ................................................................. 5Cómo funciona CloudFront con cachés perimetrales regionales ................................................. 6

Ubicaciones y rangos de direcciones IP de servidores de borde de CloudFront .................................... 7Acceso a CloudFront .................................................................................................................. 8Primeros pasos con Amazon CloudFront ........................................................................................ 8AWS Identity and Access Management (IAM) ................................................................................. 8Precios de CloudFront ................................................................................................................. 9

Elegir la clase de precio de una distribución de CloudFront ..................................................... 10Conformidad de CloudFront ........................................................................................................ 11

PCI DSS ......................................................................................................................... 11HIPAA ............................................................................................................................. 11SOC 1, SOC 2 y SOC 3 .................................................................................................... 11

Configuración ................................................................................................................................... 13Inscripción en AWS ................................................................................................................... 13Acceso a la cuenta ................................................................................................................... 13

Acceso a la consola .......................................................................................................... 14Acceso a la API, la AWS CLI, las Herramientas de AWS para Windows PowerShell o los SDKde AWS .......................................................................................................................... 14

Creación de un usuario de IAM .................................................................................................. 14Configuración de AWS Command Line Interface o Herramientas de AWS para Windows PowerShell ...... 16Descargar un SDK de AWS ....................................................................................................... 16

Introducción ..................................................................................................................................... 17Requisitos previos ..................................................................................................................... 17Paso 1: Cargar contenido en Amazon S3 y conceder permisos para los objetos .................................. 17Paso 2: Crear una distribución de CloudFront ............................................................................... 18Paso 3: Comprobar los enlaces .................................................................................................. 25

Trabajar con distribuciones ................................................................................................................. 26Información general de distribuciones .......................................................................................... 26

Acciones que puede usar con distribuciones ......................................................................... 27Creación, actualización y eliminación de distribuciones ................................................................... 28

Pasos para crear una distribución ....................................................................................... 28Creación de una distribución .............................................................................................. 29Valores que especifica ....................................................................................................... 30Valores que se muestran ................................................................................................... 52Prueba de una distribución ................................................................................................. 53Visualizar y actualizar distribuciones .................................................................................... 53Eliminar una distribución .................................................................................................... 54

Uso de orígenes diferentes ........................................................................................................ 55Usar buckets de Amazon S3 como origen ............................................................................ 55Uso de buckets de Amazon S3 configurados como puntos de enlace de sitio web para su origen .... 56Uso de un contenedor de AWS Elemental MediaStore o un canal de AWS ElementalMediaPackage como origen ............................................................................................... 57Usar Amazon EC2 u otros orígenes personalizados ............................................................... 57Añadir CloudFront si distribuye contenido desde Amazon S3 ................................................... 58Cambiar un bucket de Amazon S3 de región ........................................................................ 60

Versión de API 2016-09-29iii

Amazon CloudFront Guía para desarrolladores

Uso de URL personalizadas ....................................................................................................... 60Añadir un nombre de dominio alternativo .............................................................................. 61Mover un nombre de dominio alternativo a una distribución de CloudFront diferente .................... 63Eliminar un nombre de dominio alternativo ........................................................................... 66Utilizar el comodín * en nombres de dominio alternativos ........................................................ 67Restricciones de uso de nombres de dominio alternativos ....................................................... 68

Añadir, eliminar o sustituir contenido .................................................................................................... 70Añadir y acceder al contenido .................................................................................................... 70Actualización de contenido existente ............................................................................................ 70

Actualización de archivos existentes con versiones de nombres de archivos ............................... 71Actualizar contenidos existentes con los mismos nombres de archivos ...................................... 71

Eliminación de contenido para que CloudFront no lo distribuya ........................................................ 72Personalización de las URL de archivo ........................................................................................ 72

Uso de su propio nombre de dominio (Example.com) ............................................................. 73Uso de una barra final (/) en las URL .................................................................................. 73Creación de URL firmadas para contenido restringido ............................................................. 73Creación de URL para distribución RTMP de archivo multimedia .............................................. 73

Invalidar archivos ...................................................................................................................... 73Elegir entre invalidar archivos y utilizar nombres de archivo con versiones ................................. 74Determinar qué archivos invalidar ........................................................................................ 75Especificar los archivos que invalidar ................................................................................... 75Invalidar archivos con la consola ......................................................................................... 78Invalidar archivos con la API de CloudFront .......................................................................... 80Herramientas de terceros para invalidar archivos ................................................................... 80Límites de solicitud de invalidación simultánea ...................................................................... 80Cargos por invalidación de archivo ...................................................................................... 80

Ofrecer archivos comprimidos ..................................................................................................... 81Usar CloudFront para comprimir su contenido ....................................................................... 81Usar un origen personalizado para comprimir contenido .......................................................... 84

Configuración de seguridad y limitación de acceso a contenido ................................................................ 85Usar HTTPS con CloudFront ...................................................................................................... 85

Exigir HTTPS entre espectadores y CloudFront ..................................................................... 86Exigir HTTPS entre CloudFront y su origen personalizado ....................................................... 87Exigir HTTPS entre CloudFront y su origen de Amazon S3 ..................................................... 91Protocolos y cifrados admitidos ........................................................................................... 92Cargos por conexiones HTTPS ........................................................................................... 95

Usar nombres de dominio alternativos y HTTPS ............................................................................ 95Decidir cómo CloudFront atiende solicitudes HTTPS .............................................................. 96Requisitos para la utilización de certificados SSL/TLS con CloudFront ....................................... 98Límites de utilización de certificados SSL/TLS con CloudFront (solo para HTTPS entreespectadores y CloudFront) .............................................................................................. 101Configurar nombres de dominio alternativos y HTTPS ........................................................... 102Determinar el tamaño de la clave pública en un certificado SSL/TLS ....................................... 106Ampliar el límite de certificados SSL/TLS ............................................................................ 106Rotar certificados SSL/TLS ............................................................................................... 107Volver de un certificado SSL/TLS personalizado al certificado de CloudFront predeterminado ....... 108Cambiar de un certificado SSL/TLS personalizado con direcciones IP dedicadas a SNI ............... 109

Utilizar AWS WAF para controlar el acceso al contenido ............................................................... 109Restricción del acceso a contenido de Amazon S3 ....................................................................... 110

Crear una identidad de acceso de origen de CloudFront y añadirla a la distribución .................... 111Otorgar a la identidad de acceso de origen permisos de lectura de objetos del bucket de AmazonS3 ................................................................................................................................. 113Usar una identidad de acceso de origen en regiones de Amazon S3 que solo admitenautenticación mediante Signature Version 4 ........................................................................ 115

Uso del cifrado en el nivel de campo para ayudar a proteger la información confidencial ..................... 115Información general del cifrado en el nivel de campo ............................................................ 117Configuración del cifrado en el nivel de campo .................................................................... 118

Versión de API 2016-09-29iv

Amazon CloudFront Guía para desarrolladores

Descifrado de campos de datos en el origen ....................................................................... 121Restricción geográfica de contenido ........................................................................................... 123

Usar la restricción geográfica de CloudFront ....................................................................... 123Utilizar un servicio de geolocalización de terceros ................................................................ 125

Limitación de contenido con URL firmadas y cookies firmadas ....................................................... 126Información general acerca de contenido privado ................................................................. 126Utilizar un servidor HTTP para contenido privado ................................................................. 128Lista de tareas: Distribución de contenido privado ................................................................ 129Especificar las cuentas de AWS que pueden crear URL firmadas y cookies firmadas (signatariosde confianza) .................................................................................................................. 130Elegir entre URL firmadas y cookies firmadas ...................................................................... 137Usar URL firmadas .......................................................................................................... 138Usar cookies firmadas ..................................................................................................... 158Utilizar una instancia de Linux Command y OpenSSL para codificar y cifrar con base64 .............. 174Ejemplos de código para crear una firma para una URL firmada ............................................. 175

Optimización del almacenamiento en caché de contenidos .................................................................... 193Cómo funciona el almacenamiento en caché con cachés perimetrales de CloudFront ......................... 193Incrementar la proporción de solicitudes que atienden las cachés perimetrales de CloudFront .............. 193

Especificar durante cuánto tiempo CloudFront debe almacenar en caché sus objetos ................. 194Almacenar en caché en función de parámetros de cadenas de consulta ................................... 194Almacenar en caché en función de valores de cookies ......................................................... 194Almacenamiento en caché en función de encabezados de solicitud ......................................... 195Ofrecer contenido multimedia a través de HTTP .................................................................. 196

Almacenar en caché contenido en función de parámetros de cadenas de consulta ............................. 196Configurar la consola y de la API para el reenvío de cadenas de consulta y almacenamiento encaché ............................................................................................................................ 197Optimizar el almacenamiento en caché .............................................................................. 198Parámetros de cadenas de consulta y registros de acceso de CloudFront ................................ 199

Almacenamiento en caché de contenido en función de cookies ...................................................... 199Almacenamiento en caché de contenido en función de encabezados de solicitud .............................. 201

Encabezados y distribuciones - Información general ............................................................. 202Seleccionar los encabezados en función de los desea que CloudFront almacené en caché .......... 203Configurar CloudFront para respetar la configuración de uso compartido de recursos entreorígenes (CORS) ............................................................................................................ 204Configurar CloudFront para almacenar objetos en la caché en función del tipo de dispositivo ....... 204Configurar CloudFront para almacenar en la caché objetos en función del lenguaje delespectador ..................................................................................................................... 204Configurar CloudFront para almacenar en la caché objetos en función de la ubicación delespectador ..................................................................................................................... 205Configurar CloudFront para almacenar en la caché objetos en función del protocolo de lasolicitud ......................................................................................................................... 205Cómo el almacenamiento en caché en función de los encabezados afecta el desempeño ............ 205Cómo las mayúsculas o minúsculas de los encabezados y sus valores afectan elalmacenamiento en caché ................................................................................................ 205Encabezados de CloudFront devuelve al espectador ............................................................ 206

Administración de cuánto tiempo se mantiene el contenido en una caché perimetral (Vencimiento) ....... 206Utilizar encabezados para controlar la duración del almacenamiento en caché de objetosindividuales .................................................................................................................... 207Especificar durante cuánto tiempo CloudFront almacena en caché objetos para distribucionesweb ............................................................................................................................... 208Especificar el tiempo mínimo durante el cual CloudFront almacena en caché objetos paradistribuciones RTMP ........................................................................................................ 212Añadir encabezados a sus objetos con la consola de Amazon S3 ........................................... 212

Cómo CloudFront procesa las solicitudes parciales de objetos (Range GET) .................................... 212Especificar un objeto raíz predeterminado ................................................................................... 213

Cómo especificar un objeto raíz predeterminado .................................................................. 214Cómo funcionan los encabezados con objetos raíz predeterminados ....................................... 215

Versión de API 2016-09-29v

Amazon CloudFront Guía para desarrolladores

Cómo funciona CloudFront si no se define un objeto raíz ...................................................... 215Solución de problemas ..................................................................................................................... 217

Solucionar problemas de distribuciones ...................................................................................... 217No puedo ver los archivos de mi distribución ....................................................................... 217No puedo ver los archivos de mi distribución RTMP ............................................................. 219Mensaje de error: Certificate: <certificate-id> is being used by CloudFront ................................ 219

Solucionar respuestas de error del origen ................................................................................... 219Código de estado HTTP 502 (Puerta de enlace incorrecta) .................................................... 220Código de estado HTTP 503 (Servicio no disponible) ........................................................... 223Código de estado HTTP 504 (tiempo de espera de gateway agotado) ..................................... 224

Probar la carga de CloudFront .................................................................................................. 228Comportamiento de solicitudes y respuestas ....................................................................................... 229

Comportamiento de solicitudes y respuestas para orígenes de Amazon S3 ...................................... 229Cómo CloudFront procesa solicitudes HTTP y HTTPS .......................................................... 229Cómo CloudFront procesa y reenvía solicitudes a su servidor de origen de Amazon S3 .............. 230Cómo CloudFront procesa las respuestas desde el servidor de origen de Amazon S3 ................ 234

Comportamiento de solicitudes y respuestas para orígenes personalizados ...................................... 236Cómo CloudFront procesa y reenvía solicitudes a su servidor de origen personalizado ............... 236Cómo CloudFront procesa las respuestas desde el servidor de origen personalizado .................. 245

Reenviar encabezados personalizados al origen (solo para distribuciones web) ................................. 249Configurar CloudFront para reenviar encabezados personalizados a su origen .......................... 249Encabezados personalizados que CloudFront no puede reenviar al origen ............................... 250Usar encabezados personalizados para uso compartido de recursos entre orígenes (CORS) ....... 250Utilizar encabezados personalizados para restringir el acceso a contenido en un origenpersonalizado ................................................................................................................. 250

Cómo CloudFront procesa los códigos de estado HTTP 3xx desde el origen .................................... 251Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xx desde elorigen .................................................................................................................................... 251

Cómo CloudFront procesa errores cuando las páginas de error personalizadas estánconfiguradas ................................................................................................................... 252Cómo CloudFront procesa errores cuando las páginas de error personalizadas no estánconfiguradas ................................................................................................................... 253Códigos de estado HTTP 4xx y 5xx almacenados en caché por CloudFront .............................. 254

Generación de respuestas personalizadas a errores ............................................................................. 256Creación de una página de error personalizada para códigos de estado HTTP específicos .................. 256Crear o actualizar un comportamiento de la caché para páginas de error personalizadas .................... 258Modificar códigos de respuesta ................................................................................................. 258Cómo controlar durante cuánto tiempo CloudFront almacena errores en la caché .............................. 259Cómo CloudFront responde cuando una página de error personalizadas no está disponible ................. 260Precios de páginas de error personalizadas ................................................................................ 260Configurar el comportamiento de respuestas de error ................................................................... 260

Vídeo bajo demanda y en streaming .................................................................................................. 262Acerca del vídeo en streaming: streaming bajo demanda y en directo ............................................. 262Distribución de vídeo bajo demanda .......................................................................................... 263

Configuración de Microsoft Smooth Streaming bajo demanda ................................................ 263Distribución de streaming de vídeo en directo ............................................................................. 265

Distribución de vídeo con AWS Elemental MediaStore como origen ........................................ 266Distribución de vídeo en directo formateado con AWS Elemental MediaPackage ....................... 267

Trabajar con distribuciones de RTMP ......................................................................................... 270Distribuciones RTMP ....................................................................................................... 271Cómo funcionan las distribuciones RTMP ........................................................................... 271Lista de tareas para transmitir archivos multimedia mediante RTMP ........................................ 273Crear una distribución RTMP desde la consola de CloudFront ................................................ 273Valores que especifica al crear o actualizar una distribución RTMP ......................................... 274Valores que CloudFront muestra en la consola al crear o actualizar una distribución RTMP ......... 278Configurar el reproductor multimedia .................................................................................. 279Utilizar un bucket de Amazon S3 como origen de una distribución RTMP ................................. 280

Versión de API 2016-09-29vi

Amazon CloudFront Guía para desarrolladores

Crear varias distribuciones RTMP para un servidor de origen ................................................. 281Restringir el acceso con crossdomain.xml ........................................................................... 281Códigos de error de distribuciones RTMP ........................................................................... 281Solucionar problemas de distribuciones RTMP .................................................................... 282

Personalización con Lambda@Edge .................................................................................................. 283Primeros pasos para la creación y uso de funciones de Lambda@Edge .......................................... 284

Tutorial: Creación de una función sencilla ........................................................................... 285Establecer permisos y roles de IAM ........................................................................................... 295

Permisos de IAM necesarios para asociar funciones de Lambda a distribuciones de CloudFront ... 295Rol de ejecución de funciones para las entidades principales del servicio ................................ 296Rol vinculado a servicio para Lambda@Edge ...................................................................... 296

Escritura y creación de funciones .............................................................................................. 299Creación de funciones para Lambda@Edge ........................................................................ 299Creación de una función de Lambda@Edge en la consola de Lambda .................................... 300Edición de una función de Lambda para Lambda@Edge ....................................................... 301Creación de funciones de Lambda y disparadores de CloudFront mediante programación ........... 303

Adición de disparadores ........................................................................................................... 303Eventos de CloudFront que pueden disparar una función de Lambda ...................................... 304Cómo decidir el evento de CloudFront que utilizar para disparar una función de Lambda ............. 305Añadir disparadores mediante la consola de Lambda ........................................................... 306Añadir disparadores mediante la consola de CloudFront ....................................................... 307

Comprobación y depuración ..................................................................................................... 308Métricas de CloudWatch y CloudWatch Logs .............................................................................. 308

Métricas de CloudWatch .................................................................................................. 308CloudWatch Logs ............................................................................................................ 309

Eliminación de funciones y réplicas ............................................................................................ 309Estructura de eventos .............................................................................................................. 309

Selección de origen dinámico basada en contenido ............................................................. 310Evento de solicitud .......................................................................................................... 310Evento de respuesta ........................................................................................................ 314

Generación de respuestas HTTP en los disparadores de solicitud ................................................... 316Modelo de programación .................................................................................................. 316

Actualización de respuestas HTTP en disparadores de respuesta del origen ..................................... 318Funciones de ejemplo .............................................................................................................. 319

Ejemplos generales ......................................................................................................... 319Generación de respuestas: ejemplos .................................................................................. 321Trabajar con cadenas de consulta: ejemplos ....................................................................... 323Personalizar contenido por encabezados de tipo de dispositivo o país: ejemplos ....................... 325Selección de origen dinámico basada en contenido: ejemplos ................................................ 327Actualización de estados de error: ejemplos ........................................................................ 332

Requisitos y restricciones ......................................................................................................... 333Distribuciones y asociaciones de CloudFront ....................................................................... 333Disparadores de CloudFront de funciones de Lambda .......................................................... 333CloudWatch Logs ............................................................................................................ 334Encabezados .................................................................................................................. 334HTTP Status Codes ........................................................................................................ 336Entorno de ejecución y configuración de función de Lambda .................................................. 336Límites ........................................................................................................................... 336Microsoft Smooth Streaming ............................................................................................. 336Network Access .............................................................................................................. 337Parámetros de cadenas de consulta .................................................................................. 337Etiquetado ...................................................................................................................... 337URI ............................................................................................................................... 337Codificación de los URI y las cadenas de consulta ............................................................... 337

Informes, registros de acceso y monitoreo .......................................................................................... 339Informes de uso y facturación de AWS para CloudFront ................................................................ 339

Informe de facturación de AWS para CloudFront .................................................................. 339

Versión de API 2016-09-29vii

Amazon CloudFront Guía para desarrolladores

Informe de uso de AWS para CloudFront ........................................................................... 340Interpretar su factura de AWS y el informe de uso de AWS para CloudFront ............................. 341

Informes de CloudFront ............................................................................................................ 344Informes CloudFront Cache Statistics ................................................................................. 345Informe CloudFront Popular Objects ................................................................................... 349Informe Top Referrers de CloudFront ................................................................................. 353Informes de uso de CloudFront ......................................................................................... 355Informes de espectadores de CloudFront ............................................................................ 360

Seguimiento de los cambios en la configuración mediante AWS Config ........................................... 368Configurar AWS Config con CloudFront .............................................................................. 368Visualización del historial de configuración de CloudFront ..................................................... 369

Etiquetar distribuciones de Amazon CloudFront ........................................................................... 370Restricciones de las etiquetas ........................................................................................... 370Añadir, editar y eliminar etiquetas para distribuciones ........................................................... 371

Uso de registros de acceso ...................................................................................................... 371Cómo funciona el proceso de registro ................................................................................ 372Elección de un bucket de Amazon S3 para sus registros de acceso ........................................ 372Permisos necesarios para configurar el registro y el acceso a sus archivos de registro ................ 373Formato del nombre de archivo ......................................................................................... 374Intervalo de entrega de archivos de registro ........................................................................ 374Análisis de registros de acceso ......................................................................................... 374Editar la configuración de registro ...................................................................................... 375Eliminar archivos de registro de un bucket de Amazon S3 ..................................................... 375Formato de archivo de registro ......................................................................................... 376Cargos por los registros de acceso .................................................................................... 386

Capturar solicitudes de la API con CloudTrail .............................................................................. 387Información de CloudFront en CloudTrail ............................................................................ 387Comprender las entradas de los archivos de registro de CloudFront ........................................ 388

Monitorizar la actividad de CloudFront en CloudWatch .................................................................. 392Visualizar métricas de una distribución ............................................................................... 392Recibir notificaciones ....................................................................................................... 393Descargar datos en formato CSV ...................................................................................... 394Métricas de Amazon CloudFront ........................................................................................ 395Dimensiones de métricas de CloudFront ............................................................................. 396

Autenticación y control de acceso de AWS ......................................................................................... 397Autenticación .......................................................................................................................... 397Control de acceso ................................................................................................................... 398Información general sobre la administración de acceso ................................................................. 398

ARN para recursos de CloudFront ..................................................................................... 399Titularidad de los recursos ................................................................................................ 399Administración del acceso a los recursos ............................................................................ 399Especificar elementos de políticas: recursos, acciones, efectos y entidades principales ............... 401Especificación de condiciones en una política ...................................................................... 401

Utilizar políticas de IAM para CloudFront .................................................................................... 401Permisos necesarios para usar la consola de CloudFront ...................................................... 402Políticas administradas (predefinidas) por AWS para CloudFront ............................................ 404Ejemplos de políticas administradas por el cliente ................................................................ 404

Referencia de permisos de la API de CloudFront ......................................................................... 407Permisos necesarios para realizar acciones en distribuciones web .......................................... 407Permisos necesarios para realizar acciones en distribuciones RTMP ....................................... 408Permisos necesarios para realizar acciones en las invalidaciones ........................................... 410Permisos necesarios para acciones en identidades de acceso de origen .................................. 410Permisos necesarios para acciones de CloudFront relacionadas con Lambda@Edge ................. 411Permisos necesarios para realizar acciones en etiquetas ...................................................... 412

Límites ........................................................................................................................................... 413Límites generales .................................................................................................................... 413Límites generales de las distribuciones web ................................................................................ 414

Versión de API 2016-09-29viii

Amazon CloudFront Guía para desarrolladores

Límites de cookies incluidas en listas blancas (solo para distribuciones web) .................................... 414Límites de las cadenas de consulta incluidas en listas blancas (solo para distribuciones web) .............. 415Límites de encabezados personalizados (solo para distribuciones web) ........................................... 415Límites de certificados SSL (solo para distribuciones web) ............................................................ 415Límites de invalidaciones ......................................................................................................... 416Límites del cifrado en el nivel de campo ..................................................................................... 416Límites de Lambda@Edge ....................................................................................................... 417Tiempo de espera de la solicitud ............................................................................................... 418Límites de las distribuciones RTMP ........................................................................................... 418

Recursos ....................................................................................................................................... 419Documentación adicional de Amazon CloudFront ......................................................................... 419Cómo obtener soporte ............................................................................................................. 419Herramientas para desarrolladores de CloudFront y SDK .............................................................. 420Sugerencias adicionales del blog de Amazon Web Services .......................................................... 420Invalidar objetos ...................................................................................................................... 420Herramientas y ejemplos de código para configurar contenido privado ............................................. 421

Historial de revisión ......................................................................................................................... 422AWS Glossary ................................................................................................................................ 423

Versión de API 2016-09-29ix

Amazon CloudFront Guía para desarrolladoresCómo configurar CloudFront para entregar contenido

¿Qué es Amazon CloudFront?Amazon CloudFront es un servicio web que agiliza la distribución de contenido web estático y dinámicocomo archivos .html, .css, .js y archivos de imágenes a los usuarios. CloudFront entrega el contenido através de una red mundial de centros de datos llamados ubicaciones de borde. Cuando un usuario solicitacontenido que se distribuye con CloudFront, el usuario se redirige a la ubicación de borde que ofrece lamínima latencia (retardo), de modo que el contenido se distribuya con el mejor desempeño posible.

• Si el contenido ya se encuentra en la ubicación de borde con menor latencia, CloudFront lo entregainmediatamente.

• Si el contenido no se encuentra en dicha ubicación de borde, CloudFront lo recupera de un origen queha definido como, por ejemplo, un bucket de Amazon S3, un canal de AWS Elemental MediaPackageo un servidor HTTP (por ejemplo, un servidor web) que se haya definido como origen de la versióndefinitiva del contenido.

Este concepto puede ilustrarse mejor por medio de un ejemplo. Supongamos que distribuye una imagendesde un servidor web tradicional, en lugar de hacerlo desde CloudFront. Por ejemplo, puede distribuir unaimagen, sunsetphoto.png, utilizando la URL http://example.com/sunsetphoto.png.

Los usuarios pueden navegar fácilmente hasta esta URL y ver la imagen. Pero probablemente nosaben que su solicitud ha sido dirigida de una red a otra, a través de la compleja colección de redes queinterconectadas que componen Internet, hasta que se llega a la imagen.

CloudFront agiliza la distribución de su contenido dirigiendo cada solicitud de usuario mediante la redtroncal de AWS a la ubicación de borde que mejor ofrezca su contenido. Por lo general, se trata de unservidor de borde de CloudFront que proporciona la entrega más rápida al espectador. Utilizando la redde AWS se reduce drásticamente la cantidad de redes que tienen que atravesar las solicitudes de losusuarios, lo que mejora el desempeño. Los usuarios experimentan una menor latencia (el tiempo que setarda en cargar el primer byte del archivo) y una mayor velocidad de transferencia de datos.

También logra mayor fiabilidad y disponibilidad, ya que las copias de los archivos (también conocidoscomo objetos) ahora se guardan (o se almacenan en caché) en varias ubicaciones de borde en todo elmundo.

Temas• Cómo configurar CloudFront para entregar contenido (p. 1)• Casos de uso de CloudFront (p. 3)• Cómo CloudFront entrega contenido (p. 5)• Ubicaciones y rangos de direcciones IP de servidores de borde de CloudFront (p. 7)• Acceso a CloudFront (p. 8)• Primeros pasos con Amazon CloudFront (p. 8)• AWS Identity and Access Management (IAM) (p. 8)• Precios de CloudFront (p. 9)• Conformidad de CloudFront (p. 11)

Cómo configurar CloudFront para entregarcontenido

Crea una distribución de CloudFront para indicar a CloudFront desde donde desea enviar el contenido ylos detalles acerca de cómo realizar un seguimiento y administrar la entrega de contenido. A continuación,

Versión de API 2016-09-291

Amazon CloudFront Guía para desarrolladoresCómo configurar CloudFront para entregar contenido

CloudFront utiliza equipos (servidores de borde) que se encuentran próximos a los espectadores paraentregar dicho contenido rápidamente cuando alguien quiere verlo o utilizarlo.

Cómo configurar CloudFront para entregar su contenido

1. Debe especificar los servidores de origen, al igual que un bucket de Amazon S3 o su propio servidorHTTP, desde el que CloudFront obtiene sus archivos que después se distribuirán desde ubicacionesde borde de CloudFront de todo el mundo.

Un servidor de origen almacena la versión original y definitiva de sus objetos. Si ofrece contenidoa través de HTTP, su servidor de origen es un bucket de Amazon S3 o un servidor HTTP, como unservidor web. Su servidor HTTP puede ejecutarse en una instancia de Amazon Elastic Compute Cloud(Amazon EC2) o en un servidor que administre; estos servidores también se conocen como orígenespersonalizados.

Si utiliza el protocolo RTMP de Adobe Media Server para distribuir archivos multimedia bajo demanda,su servidor de origen es siempre un bucket de Amazon S3.

2. Cargue sus archivos en sus servidores de origen. Sus archivos, también conocidos como objetos,suelen ser páginas web, imágenes y archivos multimedia, pero puede ser cualquier otra cosa quepueda ofrecerse a través de HTTP o una versión compatible de Adobe RTMP, el protocolo de AdobeFlash Media Server.

Versión de API 2016-09-292

Amazon CloudFront Guía para desarrolladoresCasos de uso

Si utiliza un bucket de Amazon S3 como servidor de origen, puede hacer que los objetos del bucketsean legibles públicamente para que cualquiera que conozca la URL de CloudFront de sus objetospueda obtener acceso a ellos. También puede mantener los objetos privados y controlar quiénobtiene acceso a ellos. Consulte Distribución de contenido privado con URL firmadas y cookiesfirmadas (p. 126).

3. Cree una distribución de CloudFront que le indique al mismo CloudFront desde qué servidores deorigen obtener 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 quela distribución esté habilitada tan pronto como se crea.

4. CloudFront asigna un nombre de dominio a su nueva distribución que puede ver en la consola deCloudFront o que se devuelve en respuesta a una solicitud programada, por ejemplo, una solicitud dela API.

5. CloudFront envía la configuración de su distribución (pero no el contenido) a todas las ubicacionesde borde, conjuntos de servidores en centros de datos dispersos geográficamente, en los que deCloudFront almacena en caché las copias de los objetos.

A medida que desarrolle su sitio web o aplicación, utilice el nombre de dominio que CloudFront ofrece parasus URL. Por ejemplo, si CloudFront devuelve d111111abcdef8.cloudfront.net como el nombrede dominio de la distribución, la URL de logo.jpg en su bucket de Amazon S3 (o en el directorio raíz de unservidor HTTP) sería http://d111111abcdef8.cloudfront.net/logo.jpg.

O puede configurar su distribución de CloudFront para usar su propio nombre de dominio. En ese caso, laURL sería http://www.example.com/logo.jpg.

También puede configurar su servidor de origen para añadir encabezados a los archivos, para indicarel tiempo durante el que desea que los archivos se mantengan en la caché en las ubicaciones de bordede CloudFront. De forma predeterminada, cada uno de los objetos permanece en una ubicación deborde durante 24 horas antes de caducar. El tiempo de vencimiento mínimo es de 0 segundos y no haylímite máximo. Para obtener más información, consulte Administración de cuánto tiempo se mantiene elcontenido en una caché perimetral (Vencimiento) (p. 206).

Casos de uso de CloudFrontEl uso de CloudFront puede ayudarle a lograr diferentes objetivos. En esta sección se enumeran algunos,junto con enlaces para obtener más información, para que tenga una idea de las posibilidades.

Temas• Acelerar la entrega de contenidos de sitio web estático (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)

Acelerar la entrega de contenidos de sitio web estáticoCloudFront puede acelerar la entrega de su contenido estático (por ejemplo, imágenes, hojas de estilo,JavaScript, etc.) para espectadores en todo el mundo. Mediante el uso de CloudFront, puede aprovecharla red troncal de AWS y los servidores perimetrales de CloudFront para dar a los espectadores unaexperiencia rápida, segura y fiable cuando visitan el sitio web.

Un enfoque sencillo para almacenar y entregar contenido estático consiste en utilizar un bucket de AmazonS3. El uso de S3 conjuntamente con CloudFront presenta una serie de ventajas, entre las que se incluye la

Versión de API 2016-09-293

Amazon CloudFront Guía para desarrolladoresDistribuir vídeo bajo demanda o en streaming

opción de usar la identidad de acceso de origen (OAI) para restringir fácilmente el acceso a sus contenidosde S3.

Para obtener más información acerca de cómo utilizar S3 junto con CloudFront, incluida una plantilla deAWS CloudFormation para ayudarle a empezar rápidamente, consulte Amazon S3 + Amazon CloudFront:A Match Made in the Cloud.

Distribuir vídeo bajo demanda o en streamingCloudFront ofrece varias opciones para el streaming de archivos multimedia a espectadores de todo elmundo, tanto de archivos grabados y como de eventos en directo.

• Para el streaming bajo demanda, puede usar CloudFront para transmitir formatos comunes tales comoMPEG 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 elborde, de forma que varias solicitudes para el archivo de manifiesto que envía los fragmentos en elorden 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, consulteVídeo bajo demanda y en streaming con CloudFront (p. 262).

Cifrar campos específicos a través del procesamientodel sistemaCuando se configura HTTPS con CloudFront, ya tiene conexiones integrales seguras a servidores deorigen. Cuando se añade el cifrado en el nivel de campo, puede proteger datos específicos durantesu procesamiento en el sistema además de la seguridad HTTPS, de forma que solo determinadasaplicaciones en el origen puedan ver los datos.

Para configurar el cifrado en el nivel de campo, añada 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, consulteUso del cifrado en el nivel de campo para ayudar a proteger la información confidencial (p. 115).

Personalizar en el bordeLa ejecución de código sin servidor en el borde abre una serie de posibilidades para personalizar loscontenidos y la experiencia para los espectadores, con una latencia reducida. Por ejemplo, puededevolver un mensaje de error personalizado cuando el servidor de origen está desactivado por motivosde mantenimiento, por lo que los espectadores no reciben un mensaje de error HTTP genérico. O puedeutilizar una función para ayudar a autorizar a los usuarios y controlar el acceso al contenido, antes de queCloudFront reenvíe una solicitud a su origen.

El uso de Lambda@Edge con CloudFront permite varias formas de personalizar el contenido que entregaCloudFront. Para obtener más información acerca de Lambda@Edge y cómo crear e implementarfunciones con CloudFront, consulte Uso del cifrado en el nivel de campo para ayudar a proteger lainformación confidencial (p. 115). Para ver una serie de ejemplos de código que puede personalizar parasus propias soluciones, consulte Funciones de ejemplo de Lambda@Edge (p. 319).

Distribuir contenido privado mediantepersonalizaciones de Lambda@EdgeEl uso de Lambda@Edge puede ayudarle a configurar su distribución de CloudFront para ofrecercontenidos privados desde su origen personalizado, como opción al uso de URL firmadas o cookiesfirmadas.

Versión de API 2016-09-294

Amazon CloudFront Guía para desarrolladoresCómo CloudFront entrega contenido

Puede utilizar varias técnicas para restringir el acceso a su origen exclusivamente a CloudFront, incluidoel uso de la inclusión en listas blancas de direcciones IP de CloudFront en el firewall y el uso de unencabezado personalizado para transportar un secreto compartido.

Para obtener más información e instrucciones paso a paso, incluido código de muestra, consulte ServingPrivate Content Using Amazon CloudFront & AWS Lambda@Edge.

Cómo CloudFront entrega contenidoDespués de una configuración inicial, CloudFront funciona conjuntamente con el sitio web o aplicación yacelera la entrega de sus contenidos. En esta sección se explica cómo distribuye CloudFront su contenidocuando los espectadores lo solicitan.

Temas• Cómo CloudFront entrega contenido a los usuarios (p. 5)• Cómo funciona CloudFront con cachés perimetrales regionales (p. 6)

Cómo CloudFront entrega contenido a los usuariosDespués de configurar CloudFront para distribuir su contenido, esto es lo que ocurre cuando los usuariossolicitan sus objetos:

1. Un usuario obtiene acceso a su sitio web o aplicación y solicita uno o varios objetos, como un archivo deimagen y un archivo HTML.

2. DNS dirige la solicitud a la ubicación de borde de CloudFront que mejor atiende la solicitud,normalmente la más cercana en términos de latencia, y dirige la solicitud a esa ubicación de borde.

3. En la ubicación de borde, CloudFront busca los archivos solicitados en su caché. Si los archivos seencuentran en la caché, CloudFront los devuelve al usuario. Si los archivos no están en la caché, hacelo 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 aplicable según el tipo de archivo, por ejemplo, a su bucket deAmazon S3 para archivos de imágenes y a su servidor HTTP para los archivos HTML.

b. Los servidores de origen devuelven los archivos a la ubicación de borde de CloudFront.c. Tan pronto como el primer byte llega desde el origen, CloudFront comienza a reenviar los archivos al

usuario. CloudFront también añade los archivos a la caché en la ubicación de borde para la próximavez que alguien los solicite.

Versión de API 2016-09-295

Amazon CloudFront Guía para desarrolladoresCómo funciona CloudFront concachés perimetrales regionales

Cómo funciona CloudFront con cachés perimetralesregionalesLas ubicaciones de borde de CloudFront garantizan que el contenido popular se pueda distribuirrápidamente a los espectadores. CloudFront dispone también de cachés perimetrales regionales queacercan más su contenido a los espectadores, incluso cuando el contenido no es tan popular como parapermanecer en una ubicación de borde de CloudFront, para ayudar a mejorar el desempeño para dichocontenido.

Las cachés perimetrales regionales ayudan con todo tipo de contenidos, especialmente los que pierdenpopularidad 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 ycontenido relacionado con eventos que podrían hacerse populares de repente.

Cómo funcionan las cachés regionales

Las cachés perimetrales regionales son ubicaciones de CloudFront implementadas en todo el mundoy cercanas a sus espectadores. Están ubicadas entre el servidor de origen y las ubicaciones de bordeglobales que distribuyen contenido directamente a los espectadores. A medida que los objetos se hacenmenos populares, las ubicaciones de borde individuales podrían quitar dichos objetos para dejar espacioa contenido más popular. Las caché perimetrales regionales tienen una caché mayor que una ubicaciónde borde individual, de modo que los objetos permanecen más tiempo en ubicación de caché perimetralregional más cercana. Esto contribuye a acercar más parte de su contenido a sus espectadores y reduceasí la necesidad de que CloudFront tenga que volver a su servidor de origen, lo que mejora el desempeñogeneral para los espectadores.

Versión de API 2016-09-296

Amazon CloudFront Guía para desarrolladoresUbicaciones y rangos de direcciones IPde servidores de borde de CloudFront

Cuando un espectador realiza una solicitud a su sitio web o mediante su aplicación, DNS dirige la solicituda la ubicación de borde de CloudFront que puede distribuir mejor la solicitud del usuario. Esta ubicaciónsuele ser la ubicación de borde de CloudFront más cercana en términos de latencia. En la ubicación deborde, 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 servidores de borde buscan elobjeto en la caché perimetral regional más cercana.

En la caché perimetral regional, CloudFront vuelve a buscar los archivos solicitados en su caché. Si losarchivos se encuentran en la caché, CloudFront reenvía los archivos a la ubicación de borde solicitada. Encuanto el primer byte llega desde la caché perimetral regional, CloudFront comienza a reenviar los archivosal usuario. CloudFront también añade los archivos a la caché en la ubicación de borde solicitada para lapróxima vez que alguien los solicite.

Para los archivos no almacenados en caché en la ubicación de borde ni en la ubicación de cachéperimetral regional, CloudFront compara la solicitud con las especificaciones de sus distribuciones yreenvía la solicitud de sus archivos al servidor de origen. Después de que el servidor de origen devuelvelos archivos a la ubicación de caché perimetral regional, se reenvían a la ubicación de borde solicitada yCloudFront reenvía los archivos al usuario. En este caso, CloudFront también añade los archivos en lacaché a la ubicación de la caché perimetral regional, además de añadirla a la ubicación de borde para lapróxima vez que un espectador solicite los archivos. Esto garantiza que todas las ubicaciones de bordede una región compartan una caché local, con lo que se eliminan varias solicitudes a los servidores deorigen. CloudFront mantiene además conexiones permanentes con servidores de origen, de modo que losarchivos se obtengan desde los orígenes lo antes posible.

Note

• Las cachés perimetrales regionales tienen paridad de características con las ubicaciones deborde. Por ejemplo, una solicitud de invalidación de la caché elimina un objeto tanto de lascachés perimetrales como de las cachés perimetrales regionales antes de caducar. La vezsiguiente que un espectador solicita el objeto, CloudFront vuelve al origen para recuperar laúltima versión.

• Los métodos proxy PUT/POST/PATCH/OPTIONS/DELETE van directamente desde lasubicaciones de borde al origen sin pasar por las cachés perimetrales regionales.

• Las cachés perimetrales regionales se utilizan para orígenes personalizados, pero no paraorígenes de Amazon S3.

• El contenido dinámico tal como queda determinado a la hora de solicitud (comportamiento de lacaché configurado para reenviar todos los encabezados) no pasa por las cachés perimetralesregionales, sino que va directamente al origen.

Ubicaciones y rangos de direcciones IP deservidores de borde de CloudFront

Para ver una lista de las ubicaciones de los servidores de borde de CloudFront, visite la página deinformación de Amazon CloudFront.

Amazon Web Services (AWS) publica sus rangos de direcciones IP actuales en formato JSON. Paraver los rangos actuales, descargue ip-ranges.json. Para obtener más información, consulte Rangos dedirecciones IP de AWS en la Referencia general de Amazon Web Services.

Para dar con los rangos de direcciones IP asociadas a servidores de borde de CloudFront, busque lasiguiente cadena en ip-ranges.json:

"service": "CLOUDFRONT"

Versión de API 2016-09-297

Amazon CloudFront Guía para desarrolladoresAcceso a CloudFront

También puede ver solo los rangos de IP de CloudFront aquí.

Acceso a CloudFrontPuede obtener acceso a Amazon CloudFront de las siguientes formas:

• Consola de administración de AWS: los procedimientos de toda esta guía explican cómo utilizar laConsola de administración de AWS para realizar tareas.

• SDK de AWS: si utiliza un lenguaje de programación para el que AWS proporciona un SDK, puede usarun SDK para obtener acceso a CloudFront. Los SDK simplifican la autenticación, se integran fácilmentecon su entorno de desarrollo y proporcionan acceso a los comandos de CloudFront. Para obtener másinformación, consulte Herramientas para Amazon Web Services.

• API de CloudFront: si utiliza un lenguaje de programación para el que no haya un SDK disponible,consulte la Amazon CloudFront API Reference para obtener información acerca de las acciones de laAPI y cómo realizar solicitudes a la API.

• AWS Command Line Interface: para obtener más información, consulte Getting Set Up with the AWSCommand Line Interface en la AWS Command Line Interface Guía del usuario.

• Herramientas de AWS para Windows PowerShell: para obtener más información, consulte Setting up theHerramientas de AWS para Windows PowerShell en la Guía del usuario de Herramientas de AWS paraWindows PowerShell.

Primeros pasos con Amazon CloudFrontPara obtener información acerca de cómo comenzar a utilizar Amazon CloudFront. consulte los temassiguientes de esta guía:

• Configuración de Amazon CloudFront (p. 13), donde se explica cómo iniciar sesión en AWS, cómoproteger el acceso a su cuenta de AWS y cómo establecer acceso mediante programación a CloudFront

• Introducción a CloudFront (p. 17), que describe cómo crear una distribución que puede distribuircontenidos a espectadores a desde su origen, como un bucket de Amazon S3 o un sitio web, y, acontinuación, comprobar que funciona.

AWS Identity and Access Management (IAM)Amazon CloudFront; se integra con AWS Identity and Access Management (IAM), un servicio que permitea su organización hacer lo siguiente:

• Crear usuarios y grupos en la cuenta de AWS de su organización• Compartir fácilmente los recursos de su cuenta de AWS con los usuarios de la cuenta• Asignar credenciales de seguridad exclusivas a los usuarios• Controlar de manera detallada el acceso de los usuarios a los servicios y recursos

Por ejemplo, puede utilizar IAM con CloudFront para controlar qué usuarios de su cuenta de AWS puedencrear una nueva distribución o actualizar la configuración de comportamiento de la caché.

Para obtener información general sobre IAM, consulte lo siguiente:

• Autenticación y control de acceso de AWS para CloudFront (p. 397)

Versión de API 2016-09-298

Amazon CloudFront Guía para desarrolladoresPrecios de CloudFront

• Identity and Access Management (IAM)• Guía del usuario de IAM

Precios de CloudFrontAmazon CloudFront está diseñado para que no tenga que pagar cuotas por adelantado ni tenga quecomprometerse con cantidades de contenido específicas. Al igual que ocurre con otros servicios de AWS,pagará por uso, es decir, solo por el consumo realizado.

AWS ofrece dos informes de uso para CloudFront: un informe de facturación y un informe que resumela actividad de uso. Para obtener más información acerca de estos informes, consulte Informes de uso yfacturación de AWS para CloudFront (p. 339).

El diagrama y la lista siguientes resumen los cargos por utilizar CloudFront.

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,consulte Precios de Amazon CloudFront.

1. Cargo por almacenamiento en un bucket de Amazon S3. Se cobran los cargos normales dealmacenamiento en Amazon S3 por almacenar objetos en su bucket. Los cargos aparecerán en lasección correspondiente a Amazon S3 de su factura de AWS.

Versión de API 2016-09-299

Amazon CloudFront Guía para desarrolladoresElegir la clase de precio de una distribución de CloudFront

2. Cargo por distribución de objetos desde ubicaciones de borde. Se le cobrarán cargos de CloudFrontcuando CloudFront responda a solicitudes de sus objetos. Estos cargos son más bajos que loscorrespondientes de Amazon S3. Los cargos de CloudFront aparecen en la sección de CloudFront desu factura de AWS.

3. Cargo por envío de datos a su origen.Se le cobrarán cargos de CloudFront cuando los usuariostransfieran datos a su origen, incluidas solicitudes DELETE, OPTIONS, PATCH, POST y PUT. Los cargosde CloudFront aparecen en la sección de CloudFront de su factura de AWS.

Note

También se aplica un recargo por las solicitudes HTTPS y un recargo adicional por las solicitudesque también tengan habilitado el cifrado en el nivel de campo. Para obtener más información,consulte Precios de Amazon CloudFront.

Elegir la clase de precio de una distribución deCloudFrontCloudFront dispone de ubicaciones de borde en todo el mundo. Cada ubicación de borde tiene uncosto diferente y, como resultado, los cargos variarán en función de la ubicación de borde desde la queCloudFront sirva sus solicitudes.

Las ubicaciones de borde de CloudFront se agrupan por regiones geográficas, y hemos agrupado lasregiones por clases de precios. La clase de precio predeterminada incluye todas las regiones. Otra clasede precio incluye la mayoría de las regiones (Estados Unidos, Canadá, Europa, Hong Kong, Filipinas,Corea del Sur, Singapur, Taiwán, Japón, India y Sudáfrica), pero excluye las más caras. Una tercera clasede precio incluye solo 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 desempeño:los objetos se ofrecen desde la ubicación de borde cuya latencia sea la menor para ese espectador. Siestá dispuesto a aceptar latencias más altas para sus espectadores en algunas regiones geográficas acambio de menor costo, puede elegir una clase de precio que no incluya todas las regiones de CloudFront.Aunque CloudFront ofrecerá los objetos solo desde ubicaciones de borde de la clase de preciosseleccionada, lo hará desde la que ofrezca la mínima latencia posible entre ellas. Sin embargo, algunosde los espectadores, 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 ofrece con un plan que ofrezca todaslas ubicaciones de borde de CloudFront. Por ejemplo, si elige la clase de precio que incluya únicamenteEstados Unidos y Europa, los espectadores en Australia y en Asia pueden experimentar latencias másaltas que si elige la clase de precio que incluye Australia y Asia.

Si elige una clase de precios que no incluya todas las ubicaciones de borde, CloudFront igualmente podríaatender ocasionalmente solicitudes de contenido desde una ubicación de borde de una región no incluidaen su clase de precio. Si esto ocurre, no se le cobra la tarifa de la región más cara desde la que se ofrecensus objetos. En su lugar, se le cobrará la tarifa de la región más económica de la clase de precio que hayaelegido.

Puede elegir una clase de precio al crear o actualizar una distribución web o RTMP de CloudFront. Paraencontrar el tema correspondiente acerca de cómo crear o actualizar una distribución RTMP desde laconsola o la API de CloudFront, consulte Trabajar con distribuciones (p. 26).

Si está creando o actualizando una distribución mediante la API de CloudFront, uno de los AWS SDK oAWS CloudFormation, consulte el tema aplicable, donde encontrará la lista de valores válidos en cadacaso (busque PriceClass):

• Distribuciones web: DistributionConfig Complex Type• Distribuciones RTMP: StreamingDistributionConfig Complex Type

Versión de API 2016-09-2910

Amazon CloudFront Guía para desarrolladoresConformidad de CloudFront

Para obtener más información acerca de precios y las clases de precios de CloudFront, visite Precios deAmazon CloudFront.

Conformidad de CloudFrontPara obtener más información sobre la conformidad de CloudFront con las diversas normativas deseguridad y estándares de auditorías, consulte las siguientes páginas:

• Conformidad de la nube de AWS• Servicios de AWS en el ámbito del programa de conformidad

Si ejecuta cargas de trabajo compatibles con HIPAA o PCI, basándonos en el Modelo de responsabilidadcompartida de AWS, le recomendamos que registre los datos de uso de CloudFront de los últimos 365 díaspor motivos de auditorías. 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 usode registros de acceso (p. 371).

• Capturar las solicitudes que se envían a la API de CloudFront. Para obtener más información, consulteUsar AWS CloudTrail para capturar las solicitudes enviadas a la API de CloudFront (p. 387).

Además, consulte lo siguiente para obtener más información acerca de cómo cumple CloudFront con losestándares PCI DSS, HIPAA y SOC.

PCI DSSCloudFront admite el procesamiento, el almacenamiento y la transmisión de datos de tarjetas de créditopor parte de un comerciante o proveedor de servicios, y se ha validado por estar conforme con elEstándar de Seguridad de los Datos de la Industria de las Tarjetas de Pago (DSS PCI). Para obtener másinformación acerca de PCI DSS, incluido cómo solicitar una copia de AWS PCI Compliance Package,consulte PCI DSS nivel 1.

Como práctica recomendada de seguridad, le recomendamos que no almacene información de la tarjetade crédito en las cachés de borde de CloudFront. Por ejemplo, puede configurar el origen para queincluya un encabezado Cache-Control:no-cache="field-name" en las respuestas que contenganinformación de la tarjeta de crédito, como, por ejemplo, los últimos cuatro dígitos de un número de tarjetade crédito y la información de contacto del propietario de la tarjeta.

HIPAAEl programa de AWS de conformidad con HIPAA incluye CloudFront como un servicio válido de HIPAA. Siha firmado un anexo para socios empresariales (BAA) con AWS, puede utilizar CloudFront para entregarcontenido que incluya información sanitaria protegida (PHI). Para obtener más información, consulteConformidad con HIPAA.

SOC 1, SOC 2 y SOC 3Amazon CloudFront cumple las medidas SOC (control de sistemas y organizaciones). Los informesSOC son informes de análisis independientes de terceros que muestran cómo AWS logra los controlesy objetivos clave de conformidad. Estas auditorías garantizan que contamos con los mecanismos deseguridad y los procedimientos adecuados para protegernos frente a los riesgos que puedan afectar ala seguridad, la confidencialidad y la disponibilidad de los datos de clientes y negocios. Los resultadosde estas auditorías de terceros están disponibles en el sitio web de conformidad de AWS SOC, donde

Versión de API 2016-09-2911

Amazon CloudFront Guía para desarrolladoresSOC 1, SOC 2 y SOC 3

los clientes pueden ver los informes publicados para obtener más información acerca de los controlesaplicados para respaldar las operaciones y la conformidad de AWS.

Versión de API 2016-09-2912

Amazon CloudFront Guía para desarrolladoresInscripción en AWS

Configuración de Amazon CloudFrontLa información general y los procedimientos de esta sección le ayudarán a comenzar a utilizar AWS.

Temas• Inscripción en AWS (p. 13)• Acceso a la cuenta (p. 13)• Creación de un usuario de IAM (p. 14)• Configuración de AWS Command Line Interface o Herramientas de AWS para Windows

PowerShell (p. 16)• Descargar un SDK de AWS (p. 16)

Inscripción en AWSAl registrarse 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. 13). De lo contrario, continúey cree una.

Para crear una cuenta de AWS

1. Abra https://aws.amazon.com/ y después elija Create an AWS Account.

Note

Esto podría no estar disponible en el navegador si ha iniciado previamente sesión en laConsola de administración de AWS. En ese caso, elija Sign in to a different account ydespués Create a new AWS account.

2. Siga las instrucciones en línea.

Parte del procedimiento de inscripción consiste en recibir una llamada telefónica e introducir unnúmero PIN con el teclado del teléfono.

Anote su número de cuenta de AWS porque lo necesitará más adelante.

Tip

Si tiene previsto utilizar CloudFront para distribuir contenido que almacena en un bucket de S3,asegúrese de completar también los pasos para inscribirse en S3. Para obtener más información,consulte Inscribirse en Amazon S3.

Acceso a la cuentaUtilice los servicios de AWS mediante una de las siguientes opciones:

• Consola de administración de AWS• API de cada servicio• AWS Command Line Interface (AWS CLI)

Versión de API 2016-09-2913

Amazon CloudFront Guía para desarrolladoresAcceso a la consola

• Herramientas de AWS para Windows PowerShell• AWS SDK

Para cada una de esas opciones, debe acceder a su cuenta de AWS proporcionando credenciales queverifiquen que tiene permisos para utilizar los servicios.

Acceso a la consolaPara acceder a la consola de administración de AWS por primera vez, indique una dirección de correoelectrónico y una contraseña. Esta combinación de dirección de correo electrónico y contraseña sedenomina identidad raíz o credenciales de cuenta raíz. Después de acceder a su cuenta por primeravez, le recomendamos que no vuelva a utilizar las credenciales de la cuenta raíz de nuevo para el usodiario. En su lugar, debe crear nuevas credenciales mediante AWS Identity and Access Management. Paraello, cree una cuenta de usuario para usted, un usuario de IAM; después, agregue este usuario de IAMa un grupo IAM con permisos administrativos o concédalos al usuario de IAM. De este modo podrá teneracceso 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

Algunos complementos para el bloqueo de anuncios de los navegadores web interfieren enlas operaciones de la consola de Amazon CloudFront y pueden provocar comportamientosimpredecibles. Si ha instalado un complemento para bloqueo de anuncios en el navegador,le recomendamos que agregue la dirección URL de la consola de CloudFront, https://console.aws.amazon.com/cloudfront/home a la lista blanca del complemento.

Acceso a la API, la AWS CLI, las Herramientas deAWS para Windows PowerShell o los SDK de AWSPara utilizar la API, la AWS CLI, los Herramientas de AWS para Windows PowerShell o los SDK de AWS,debe crear claves de acceso. Estas claves constan de un ID de clave de acceso y una clave de accesosecreta, que se utilizan para firmar mediante programación las solicitudes que realiza a AWS.

Para crear las claves, inicie sesión en la Consola de administración de AWS. Recomendamos que iniciesesión con sus credenciales de usuario de IAM en lugar de hacerlo con sus credenciales raíz. Para obtenermás información, consulte Managing Access Keys for IAM Users en la Guía del usuario de IAM.

Creación de un usuario de IAMSiga los procedimientos siguientes para crear un grupo de administradores, crear un usuario de IAM yagregarlo después al grupo de administradores. Si se ha inscrito en AWS, pero no ha creado un usuariode IAM para usted, puede crearlo en la consola de IAM. Si no está familiarizado con el uso de la consola,consulte Working with the AWS Management Console para obtener una visión general.

Para crear un usuario de IAM para sí mismo y agregarlo a un grupo de administradores

1. Utilice la dirección de correo electrónico y la contraseña de su cuenta de AWS para iniciar sesióncomo Usuario de la cuenta raíz de AWS en la consola de IAM en https://console.aws.amazon.com/iam/.

Note

Recomendamos que siga la práctica recomendada de utilizar el usuario Administradorde IAM como se indica a continuación, y que guarde en un lugar seguro las credenciales

Versión de API 2016-09-2914

Amazon CloudFront Guía para desarrolladoresCreación de un usuario de IAM

de usuario raíz. Inicie sesión como usuario raíz únicamente para realizar algunas tareas deadministración de servicios y de cuentas.

2. En el panel de navegación de la consola, elija Usuarios y, a continuación, elija Añadir usuario.3. En Nombre de usuario, escriba Administrador.4. Active la casilla de verificación situada junto a Consola de administración de AWS access, seleccione

Custom password y escriba la contraseña del nuevo usuario en el cuadro de texto. También puedeseleccionar Require password reset (Obligar a restablecer contraseña) para obligar al usuario a crearuna nueva contraseña la próxima vez que inicie sesión.

5. Elija Next: Permissions.6. En la página Set permissions, elija Add user to group.7. Elija Create group.8. En el cuadro de diálogo Create group (Crear grupo), en Group name (Nombre de grupo) escriba

Administradores.9. En Filter policies (Políticas de filtro), marque la casilla AWS managed - job function (Función de trabajo

administrado por AWS).10. En la lista de políticas, active la casilla de verificación AdministratorAccess. A continuación, elija

Create group.11. 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.12. 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.

Puede usar este mismo proceso para crear más grupos y usuarios, y para conceder a los usuarios accesolos recursos de su cuenta de AWS. Para obtener más información sobre cómo usar las políticas pararestringir los permisos de los usuarios a recursos de AWS específicos, vaya a Administración de acceso yPolíticas de ejemplo.

Para iniciar sesión con su nuevo usuario de IAM

1. Cierre la sesión de la consola de AWS.2. Inicie la sesión en la URL siguiente, donde your_aws_account_id es su número de cuenta de

AWS, sin los guiones. Por ejemplo, si su número de cuenta de AWS es 1234-5678-9012, su ID decuenta de AWS será 123456789012:

https://your_aws_account_id.signin.aws.amazon.com/console/

3. Especifique el nombre de usuario de IAM (no su dirección de correo electrónico) y la contraseñaque acaba de crear. Cuando haya iniciado sesión, en la barra de navegación se mostrará"su_nombre_de_usuario @ su_id_de_cuenta_de_aws".

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.

Para crear un alias de su cuenta y ocultar el ID de su cuenta

1. En la consola de IAM, elija Dashboard en el panel de navegación.2. En el panel, seleccione Customize y especifique un alias, como el nombre de su empresa.3. Cierre la sesión de la consola de AWS.4. Inicie la sesión usando la URL siguiente:

https://your_account_alias.signin.aws.amazon.com/console/

Versión de API 2016-09-2915

Amazon CloudFront Guía para desarrolladoresConfiguración de AWS Command Line Interface oHerramientas de AWS para Windows PowerShell

Para verificar el enlace de inicio de sesión de los usuarios de IAM de su cuenta, abra la consola de IAM ycompruebe IAM users sign-in link en el panel.

Para obtener más información acerca del uso de IAM, consulte Autenticación y control de acceso de AWSpara CloudFront (p. 397).

Configuración de AWS Command Line Interface oHerramientas de AWS para Windows PowerShell

AWS Command Line Interface (AWS CLI) es una herramienta unificada para administrar los servicios deAWS. Para obtener más información sobre cómo instalar y configurar la AWS CLI, consulte Getting Set Upwith the AWS Command Line Interface en la AWS Command Line Interface Guía del usuario.

Si tiene experiencia con Windows PowerShell, es posible que prefiera utilizar Herramientas de AWS paraWindows PowerShell. Para obtener más información, consulte Setting up the Herramientas de AWS paraWindows PowerShell en la Guía del usuario de Herramientas de AWS para Windows PowerShell.

Descargar un SDK de AWSSi usa un lenguaje de programación para el cual AWS proporciona un SDK, recomendamos utilizarese SDK en lugar de la API de Amazon CloudFront. Los SDK simplifican la autenticación, se integranfácilmente en su entorno de desarrollo y proporcionan acceso sencillo a los comandos de CloudFront. Paraobtener más información, consulte Herramientas para Amazon Web Services.

Versión de API 2016-09-2916

Amazon CloudFront Guía para desarrolladoresRequisitos previos

Introducción a CloudFrontEl ejemplo de este tema ofrece información general resumida de cómo utilizar CloudFront para estableceruna configuración básica que:

• Almacena las versiones originales de sus objetos en un bucket de Amazon Simple Storage Service(Amazon S3).

• Distribuye contenido de descarga como texto o gráficos.• Hace que sus objetos sean accesibles para todo el mundo.• Utiliza el nombre de dominio de CloudFront en URL de sus objetos (por ejemplo, http://d111111abcdef8.cloudfront.net/image.jpg).

• Mantiene los objetos en ubicaciones de borde de CloudFront durante el período predeterminado de 24horas (la duración mínima es de 0 segundos).

(La mayoría de estas opciones pueden personalizarse. Por ejemplo, puede almacenar su contenido en supropio servidor web en lugar de utilizar un bucket de S3 y puede limitar quién tiene acceso al contenidomediante el uso de URL o cookies firmadas. Para obtener información acerca de cómo personalizarsus opciones de distribución de CloudFront, consulte Pasos para crear una distribución (Informacióngeneral) (p. 28)).

Solo tiene que completar unos pasos básicos para comenzar a entregar contenido mediante CloudFront.El primer paso es inscribirse. Después, cree una distribución de CloudFront y, a continuación, utilice elnombre de dominio de CloudFront en URL en sus páginas web o aplicaciones para hacer referencia alcontenido.

Temas• Requisitos previos (p. 17)• Paso 1: Cargar contenido en Amazon S3 y conceder permisos para los objetos (p. 17)• Paso 2: Crear una distribución de CloudFront (p. 18)• Paso 3: Comprobar los enlaces (p. 25)

Requisitos previosAntes de comenzar, asegúrese de que ha realizado los pasos que se detallan en Configuración deAmazon CloudFront (p. 13).

Paso 1: Cargar contenido en Amazon S3 yconceder permisos para los objetos

Un bucket de Amazon S3 es un contenedor que puede contener objetos o carpetas. CloudFront puededistribuir casi cualquier tipo de objeto utilizando un bucket de Amazon S3 como origen, por ejemplo, texto,imágenes y videos. Podrá crear varios buckets, y no existe ningún límite en lo que respecta a la cantidadde datos que puede almacenar en Amazon S3.

De forma predeterminada, el bucket de Amazon S3 y todos los objetos que contiene son privados: solola cuenta de AWS que creó el bucket tiene permisos de lectura y escritura sobre dicho bucket. Si deseapermitir que cualquier persona acceda a los objetos de su bucket de Amazon S3 mediante URL de

Versión de API 2016-09-2917

Amazon CloudFront Guía para desarrolladoresPaso 2: Crear una distribución de CloudFront

CloudFront, debe conceder permisos de lectura públicos a los objetos. (Este es uno de los errores máscomunes cuando se trabaja con CloudFront y Amazon S3. Debe otorgar privilegios de forma explícita acada uno de los objetos del bucket de Amazon S3).

Note

Si desea restringir quién puede descargar su contenido, puede utilizar la función decontenido privado de CloudFront. Para obtener más información acerca de la distribución decontenido privado, consulte Distribución de contenido privado con URL firmadas y cookiesfirmadas (p. 126).

Para cargar el contenido de Amazon S3 y conceder permisos de lectura a cualquier persona

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

2. En la consola de Amazon S3, seleccione Create Bucket.3. En el cuadro de diálogo Create Bucket, escriba un nombre para el bucket.

Important

Para que su bucket pueda funcionar con CloudFront, el nombre debe cumplir los requisitosde nomenclatura de DNS. Para obtener más información, visite la sección Bucket Restrictionsand Limitations en la Guía para desarrolladores de Amazon Simple Storage Service.

4. Seleccione una región para el bucket. De manera predeterminada, Amazon S3 crea buckets enla región US East (N. Virginia). Recomendamos elegir una región de AWS cercana a usted paraoptimizar la latencia, minimizar los costos y satisfacer los requisitos reglamentarios.

5. Seleccione Create.6. Seleccione el bucket en el panel Buckets y, a continuación, seleccione Upload.7. En la página Upload - Select Files, seleccione Add Files y los archivos que desea cargar.8. Habilite privilegios públicos de lectura en cada objeto que cargue al bucket de Amazon S3.

a. Elija Next (Siguiente) para establecer los permisos.b. En la lista desplegable Manage public permissions (Administrar permisos públicos), elija Grant

public read access to this object(s) (Conceder acceso de lectura público a estos objetos).c. Seleccione Siguiente.

9. Establezca las propiedades que desee para el objeto, como el cifrado o el etiquetado, y, acontinuación, elija Next (Siguiente).

10. Seleccione Upload.

Una vez que finalice el proceso de carga, podrá desplazarse al elemento con su URL. En el caso delejemplo anterior, la URL sería:

http://s3.amazonaws.com/example-myawsbucket/filename

Utilice su URL de Amazon S3 para comprobar que su contenido está accesible al público, perorecuerde que esta no es la URL que utilizará cuando todo esté listo para distribuir su contenido.

Paso 2: Crear una distribución de CloudFrontPara crear una distribución de CloudFront

1. Abra la consola de CloudFront en https://console.aws.amazon.com/cloudformation/.2. Seleccione Create Distribution.3. En la página Select a delivery method for your content, en la sección Web, haga clic en Get Started.

Versión de API 2016-09-2918

Amazon CloudFront Guía para desarrolladoresPaso 2: Crear una distribución de CloudFront

4. En la página Create Distribution, en Origin Settings, elija el bucket de Amazon S3 que ha creadoanteriormente. Para el ID Origin ID, Origin Path, Restrict Bucket Access y en Origin Custom Headers,acepte los valores predeterminados.

Versión de API 2016-09-2919

Amazon CloudFront Guía para desarrolladoresPaso 2: Crear una distribución de CloudFront

5. En Default Cache Behavior Settings, acepte los valores predeterminados y CloudFront:

• Reenviará todas las solicitudes que utilizan la URL de CloudFront para su distribución (porejemplo, http://d111111abcdef8.cloudfront.net/image.jpg) al bucket de Amazon S3especificado en el paso 4.

• Permitirá a los usuarios finales utilizar HTTP o HTTPS para obtener acceso a sus objetos.• Responderá a las solicitudes de sus objetos.• Almacenará los objetos de caché en las ubicaciones de borde de CloudFront durante 24 horas.• Reenviará solo los encabezados de solicitudes predeterminadas a su origen y no almacenará en la

caché los objetos en función de los valores de los encabezados.• Excluirá cookies y parámetros de cadenas de consulta, de haberlos, al reenviar solicitudes de

objetos al origen. (Amazon S3 no procesa las cookies y procesa únicamente un conjunto limitado deparámetros de cadenas de consulta).

• No está configurado para distribuir archivos multimedia en el formato Microsoft Smooth Streaming.• Permite a cualquier persona ver su contenido.• No comprime automáticamente el contenido.

Para obtener más información acerca de las opciones de comportamiento de la caché, consulteConfiguración del comportamiento de la caché (p. 37).

Versión de API 2016-09-2920

Amazon CloudFront Guía para desarrolladoresPaso 2: Crear una distribución de CloudFront

Versión de API 2016-09-2921

Amazon CloudFront Guía para desarrolladoresPaso 2: Crear una distribución de CloudFront

6. En Distribution Settings, escriba los valores aplicables:

Price Class

Seleccione la clase de precio que corresponda al precio máximo que desea pagar por el serviciode CloudFront. De forma predeterminada, CloudFront ofrece sus objetos desde ubicaciones deborde 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 afectael desempeño de CloudFront para su distribución, diríjase a Elegir la clase de precio de unadistribución de CloudFront (p. 10). Para obtener información acerca de precios de CloudFrontincluida cómo las clases se corresponden con las regiones de CloudFront, visite Precios deAmazon CloudFront.

ACL web de AWS WAF

Si desea utilizar AWS WAF para habilitar o bloquear solicitudes HTTP o HTTPS según loscriterios que especifique, elija la ACL web para asociarla a esta distribución. Para obtener másinformación acerca de AWS WAF, consulte la guía para desarrolladores de AWS WAF.

Nombres de dominio alternativos (CNAME) (opcional)

Especifique uno o varios nombres de dominio que desee utilizar para direcciones URL de susobjetos en lugar del nombre de dominio que CloudFront asigna al crear la distribución. Porejemplo, si desea que la URL del objeto:

/images/image.jpg

sea así:

http://www.example.com/images/image.jpg

en lugar de así:

http://d111111abcdef8.cloudfront.net/images/image.jpg

crearía un CNAME para www.example.com.

Important

Si añade un CNAME para www.example.com en la distribución, también deberá crearo actualizar un registro de CNAME con su servicio de DNS para dirigir consultas dewww.example.com a d111111abcdef8.cloudfront.net. Debe tener permisopara crear un registro CNAME con el proveedor de servicios de DNS para el dominio.Por lo general, esto indicará que es el propietario del dominio, aunque también podríaestar desarrollando una aplicación para el propietario del dominio. Para obtener másinformación acerca de CNAME, consulte Uso de URL personalizadas para archivosañadiendo nombres de dominio alternativos (CNAME) (p. 60).

Para consultar el límite actual de la cantidad de nombres de dominio alternativos que puedeañadir a una distribución o para solicitar una ampliación del límite, consulte Límites generales delas distribuciones web (p. 414).

SSL Certificate

Acepte el valor predeterminado, Default CloudFront Certificate.Objeto raíz predeterminado (opcional)

El objeto que quiera que CloudFront solicite desde su origen (por ejemplo, index.html) cuandoun espectador solicite la URL raíz de la distribución (http://www.example.com/) en lugarde un objeto de la distribución (http://www.example.com/product-description.html).Especificar un objeto raíz predeterminado evita exponer el contenido de su distribución.

Versión de API 2016-09-2922

Amazon CloudFront Guía para desarrolladoresPaso 2: Crear una distribución de CloudFront

Logging (opcional)

Si desea CloudFront registre información acerca de cada solicitud de un objeto y almacene losarchivos de registro en un bucket de Amazon S3, seleccione On y especifique el bucket y unprefijo opcional para los nombres de los archivos de registro. No se aplica ningún cargo adicionalpor activar los registros, pero se acumulan los cargos típicos de Amazon S3 por almacenar yobtener acceso a los archivos. CloudFront no elimina los registros automáticamente, pero puedeeliminarlos en cualquier momento.

Cookie Logging

En este ejemplo, estamos usando Amazon S3 como origen para los objetos, y Amazon S3 noprocesa las cookies, por lo que le recomendamos que seleccione Off como valor de CookieLogging.

Comment (opcional)

Escriba cualquier comentario que desee guardar con la distribución.Distribution State

Seleccione Enabled si desea que CloudFront comience a procesar solicitudes tan pronto se creala distribución, o bien seleccione Disabled si no desea que CloudFront comience a procesarsolicitudes después de que la distribución se crea.

Versión de API 2016-09-2923

Amazon CloudFront Guía para desarrolladoresPaso 2: Crear una distribución de CloudFront

Versión de API 2016-09-2924

Amazon CloudFront Guía para desarrolladoresPaso 3: Comprobar los enlaces

7. Seleccione Create Distribution.8. Después de que CloudFront ha creado la distribución, el valor de la columna Status de la distribución

cambia de InProgress a Deployed. Si había habilitado la distribución, entonces está lista para procesarsolicitudes. Esto suele tardar entre 20 y 40 minutos.

El nombre de dominio que CloudFront asigna a su distribución aparece en la lista de distribuciones.(También aparece en la pestaña General de la distribución seleccionada).

Paso 3: Comprobar los enlacesUna vez creada su distribución, CloudFront conocerá el lugar en el que se encuentra su servidor de origende Amazon S3, y usted sabrá el nombre de dominio asociado a la distribución. Puede crear un enlace alcontenido de su bucket de Amazon S3 con ese nombre de dominio, y que CloudFront lo ofrezca.

Note

Deberá esperar hasta que el estado de su distribución cambie a Deployed antes de probar susvínculos.

Para establecer un vínculo a sus objetos

1. Copie el siguiente código HTML a un nuevo archivo:

• Sustituya <domain name> por el nombre de dominio que CloudFront ha asignado a su distribución.• Sustituya <object name> por el nombre de un archivo del bucket de Amazon S3.

<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>

Por ejemplo, si su nombre de dominio es d111111abcdef8.cloudfront.net y su objeto esimage.jpg, la URL del vínculo será:

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

Si su objeto se encuentra en una carpeta dentro de su bucket, incluya la carpeta en la URL. Porejemplo, si imagen.jpg se encuentra en una carpeta de imágenes, la URL será:

http://d111111abcdef8.cloudfront.net/images/image.jpg2. Guarde el texto en un archivo que tenga una extensión .html.3. Abra su página web en un navegador para asegurarse de que pueda ver su contenido. Si no puede

ver el contenido, confirme que ha realizado todos los pasos correctamente. También puede ver lassugerencias de Solución de problemas (p. 217).

El navegador devolverá su página con el archivo de imagen integrado, ofrecido desde la ubicación deborde que CloudFront determinó que era adecuada para servir el objeto.

Para obtener más información acerca del uso de CloudFront, visite Recursos de AmazonCloudFront (p. 419).

Versión de API 2016-09-2925

Amazon CloudFront Guía para desarrolladoresInformación general de distribuciones

Trabajar con distribucionesCrea una distribución de CloudFront para indicar a CloudFront desde donde desea enviar el contenidoy los detalles acerca de cómo realizar un seguimiento y administrar la entrega de contenido. En lossiguientes temas se explican algunos aspectos básicos acerca de distribuciones de CloudFront yse proporciona información detallada sobre la configuración que puede elegir para configurar lasdistribuciones a fin de satisfacer sus necesidades empresariales.

Note

Si utiliza el protocolo RTMP de Adobe Flash Media Server, debe configurar otro tipo dedistribución de CloudFront. Para obtener más información, consulte Trabajar con distribuciones deRTMP (p. 270).

Temas• Información general de distribuciones (p. 26)• Creación, actualización y eliminación de distribuciones (p. 28)• Usar orígenes de Amazon S3, canales de AWS Elemental MediaPackage y orígenes personalizados

para distribuciones web (p. 55)• Uso de URL personalizadas para archivos añadiendo nombres de dominio alternativos

(CNAME) (p. 60)

Información general de distribucionesSi desea utilizar CloudFront para distribuir su contenido, debe crear una distribución y elegir los ajustes deconfiguración que desee. Por ejemplo:

• Su origen de contenido, es decir, el bucket de Amazon S3, canal de AWS Elemental MediaPackage oservidor HTTP desde el que CloudFront obtiene los archivos para distribuir. Puede especificar cualquiercombinació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 elacceso a algunos usuarios.

• Seguridad: si desea que CloudFront exija a los usuarios utilizar HTTPS para obtener acceso a sucontenido.

• Reenvío de cookies o cadenas de consulta: si desea que CloudFront reenvíe cookies o cadenas deconsulta a su origen.

• Restricciones geográficas: si desea que CloudFront evite que los usuarios de ciertos países accedan asu contenido.

• Registros de acceso: si desea que CloudFront cree registros de acceso que muestren actividad delespectador.

Para consultar el límite actual de la cantidad de distribuciones que puede crear en cada cuenta deAWS, consulte Límites generales de las distribuciones web (p. 414) y Límites de las distribucionesRTMP (p. 418). La cantidad de archivos que puede ofrecer por distribución es ilimitada.

Puede utilizar distribuciones para distribuir el siguiente contenido a través de HTTP o HTTPS:

Versión de API 2016-09-2926

Amazon CloudFront Guía para desarrolladoresAcciones que puede usar con distribuciones

• Contenido estático y dinámico de descarga, por ejemplo, archivos .html, .css, .js y de imagen, a travésde HTTP o HTTPS.

• Vídeo bajo demanda en distintos formatos, como Apple HTTP Live Streaming (HLS) y MicrosoftSmooth Streaming. Para obtener más información, consulte Distribución de vídeo bajo demanda conCloudFront (p. 263).

No se puede ofrecer contenido multimedia de Adobe Flash a través de HTTP o HTTPS, pero puedehacerlo con una distribución RTMP de CloudFront. Consulte Distribuciones RTMP (p. 271).

• Un evento en directo, como una reunión, conferencia o concierto, en tiempo real. Para streaming endirecto, debe crear la distribución automáticamente con un stack de AWS CloudFormation. Para obtenermás información, consulte el tutorial de streaming en directo en Distribución de streaming de vídeo endirecto con CloudFront y AWS Media Services (p. 265).

Para obtener más información acerca de cómo crear una distribución , consulte Pasos para crear unadistribución (Información general) (p. 28).

Acciones que puede usar con distribucionesEn la siguiente tabla se muestran las acciones de CloudFront que puede realizar para trabajar condistribuciones y se proporcionan enlaces a la correspondiente documentación acerca de cómo realizardichas acciones con la consola de CloudFront y las API de CloudFront.

Acción Con la consola deCloudFront

Con de la APIde CloudFront:distribuciones web

Con de la APIde CloudFront:distribuciones RTMP

Crear una distribución Distribuciones web:consulte Pasospara crear unadistribución (Informacióngeneral) (p. 28)

Distribuciones RTMP:consulte Lista de tareaspara transmitir archivosmultimedia medianteRTMP (p. 273)

Vaya aCreateDistribution

Vaya aCreateStreamingDistribution

Enumerar susdistribuciones

Consulte Visualizary actualizardistribuciones (p. 53)

Vaya a ListDistributions Vaya aListStreamingDistributions

Obtener toda lainformación de unadistribución

Consulte Visualizary actualizardistribuciones (p. 53)

Vaya a GetDistribution Vaya aGetStreamingDistribution

Obtener la configuraciónde la distribución

Consulte Visualizary actualizardistribuciones (p. 53)

Vaya aGetDistributionConfig

Vaya aGetStreamingDistributionConfig

Actualizar unadistribución

Consulte Visualizary actualizardistribuciones (p. 53)

Vaya aUpdateDistributionConfig

Vaya aUpdateStreamingDistributionConfig

Eliminar una distribución Consulte Eliminar unadistribución (p. 54)

Vaya a DeleteDistribution (Eliminardistribución).

Vaya a DeleteStreaming Distribution

Versión de API 2016-09-2927

Amazon CloudFront Guía para desarrolladoresCreación, actualización y eliminación de distribuciones

Acción Con la consola deCloudFront

Con de la APIde CloudFront:distribuciones web

Con de la APIde CloudFront:distribuciones RTMP(Eliminar distribución destreaming).

Creación, actualización y eliminación dedistribuciones

Puede crear, actualizar o eliminar una distribución completando los pasos que se indican en los siguientestemas.

Temas• Pasos para crear una distribución (Información general) (p. 28)• Creación de una distribución (p. 29)• Valores que deben especificarse al crear o actualizar una distribución (p. 30)• Valores que CloudFront muestra en la consola (p. 52)• Prueba de una distribución (p. 53)• Visualizar y actualizar distribuciones (p. 53)• Eliminar una distribución (p. 54)

Pasos para crear una distribución (Informacióngeneral)La siguiente lista de tareas resume el proceso de creación de una distribución

Para crear una distribución

1. Cree uno o más buckets de Amazon S3 o configure servidores HTTP como servidores de origen. Unorigen es la ubicación en la que almacena la versión original del contenido web. Cuando CloudFrontrecibe una solicitud de archivos, se dirige al origen para obtener los archivos que distribuye enubicaciones de borde. Puede utilizar cualquier combinación de buckets de Amazon S3 y servidoresHTTP 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 nopuede contener espacios.

Si utiliza un servidor de Amazon EC2 u otro origen personalizado, revise Usar Amazon EC2 u otrosorígenes personalizados (p. 57).

Para consultar el límite actual de la cantidad de orígenes que puede crear para una distribución o parasolicitar una ampliación del límite, consulte Límites generales de las distribuciones web (p. 414).

2. Cargue el contenido en sus servidores de origen. Si no desea restringir el acceso al contenidomediante 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 asegurarsede que CloudFront tenga permiso para obtener acceso al servidor y que la configuración deseguridad sea la adecuada para proteger su contenido.

Versión de API 2016-09-2928

Amazon CloudFront Guía para desarrolladoresCreación de una distribución

3. Cree su distribución de CloudFront:

• 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. 29).

• Para obtener información sobre cómo crear una distribución con la API de CloudFront, vaya aCreateDistribution en la Amazon CloudFront API Reference.

4. Opcional: si creó la distribución por medio de la consola de CloudFront cree más comportamientos dela caché para la distribución. Para obtener más información, consulte Para actualizar distribuciones deCloudFront (Consola) (p. 53).

5. Pruebe su distribución. Para obtener más información, consulte Prueba de una distribución (p. 53).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 CloudFrontdevuelve d111111abcdef8.cloudfront.net como el nombre de dominio de la distribución, la URL parael archivo image.jpg en un bucket de Amazon S3 o en el directorio raíz de un servidor HTTP seríahttp://d111111abcdef8.cloudfront.net/image.jpg.

Si especificó uno o varios nombres de dominio alternativo (CNAME) al crear la distribución, puedeutilizar su propio nombre de dominio. En ese caso, la URL para image.jpg sería http://www.example.com/image.jpg.

Tenga en cuenta lo siguiente:

• Si desea utilizar URL firmadas para restringir el acceso a su contenido, consulte Distribución decontenido privado con URL firmadas y cookies firmadas (p. 126).

• Si desea ofrecer contenido comprimido, consulte Ofrecer archivos comprimidos (p. 81).• Para obtener más información acerca del comportamiento de solicitud y respuesta de CloudFront

para Amazon S3 y orígenes personalizados, consulte Comportamiento de solicitudes yrespuestas (p. 229).

Creación de una distribuciónPuede crear o actualizar una distribución a través de la consola de CloudFront o mediante programación.Este tema está relacionado con el trabajo con distribuciones mediante la consola.

Si desea crear o actualizar una distribución a través de la API de CloudFront, consulte Create Distribution oUpdate Distribution en la Amazon CloudFront API Reference.

Note

Para consultar el límite actual de la cantidad de distribuciones que puede crear en cada cuenta deAWS, o para solicitar una ampliación del límite, consulte Límites generales de las distribucionesweb (p. 414).

Para crear una distribución de CloudFront (consola)

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Seleccione Create Distribution.3. En la primera página de Create Distribution Wizard, en la sección Web, elija Get Started.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. 30).5. Guarde los cambios.6. Después de que CloudFront crea una distribución, el valor de la columna Status de la distribución

cambia de InProgress a Deployed. Si decidió habilitar la distribución, estará lista para procesarsolicitudes cuando el estado cambie a Deployed (Implementado).

Versión de API 2016-09-2929

Amazon CloudFront Guía para desarrolladoresValores que especifica

El nombre de dominio que CloudFront asigna a su distribución aparece en la lista de distribuciones.(También aparece en la pestaña General de la distribución seleccionada).

Tip

Puede utilizar un nombre de dominio alternativo, en lugar del nombre asignado porCloudFront, siguiendo los pasos de Uso de URL personalizadas para archivos añadiendonombres de dominio alternativos (CNAME) (p. 60).

7. Una vez implementada la distribución, confirme que puede obtener acceso al contenido con lanueva URL o CNAME de CloudFront. Para obtener más información, consulte Prueba de unadistribución (p. 53).

Para actualizar una distribución (por ejemplo, para añadir o cambiar comportamientos de la caché),consulte Visualizar y actualizar distribuciones (p. 53).

Valores que deben especificarse al crear o actualizaruna distribuciónAl crear una nueva distribución o actualizar una distribución ya existente, especificará los siguientesvalores. Para obtener información acerca de cómo crear o actualizar una distribución utilizando laconsola de CloudFront, consulte Creación de una distribución (p. 29) o Visualizar y actualizardistribuciones (p. 53).

Modo de entrega (p. 32)

Especifique el método de entrega: Web o RTMP. Para obtener más información, consulte Modo deentrega (p. 32).

Configuración de origen (p. 32)

• Nombre de dominio de origen (p. 32)• Ruta de origen (p. 33)• ID de origen (p. 34)• Restringir acceso al bucket (solo para Amazon S3) (p. 34)• Identidad de acceso de origen (solo para Amazon S3) (p. 34)• Comentario acerca de la nueva identidad (solo para Amazon S3) (p. 34)• Sus identidades (solo para Amazon S3) (p. 34)• Conceder permisos de lectura en buckets (solo para Amazon S3) (p. 35)• Protocolos SSL de origen (Amazon EC2, Elastic Load Balancing y otros orígenes

personalizados) (p. 35)• Política de protocolos de origen (Amazon EC2, Elastic Load Balancing y otros orígenes

personalizados) (p. 35)• Tiempo de espera de respuesta del origen (solo Amazon EC2, Elastic Load Balancing y otros orígenes

personalizados) (p. 36)• Tiempo de keep-alive de origen (solo Amazon EC2, Elastic Load Balancing y otros orígenes

personalizados) (p. 36)• Puerto HTTP (Amazon EC2, Elastic Load Balancing y otros orígenes personalizados) (p. 36)• Puerto HTTPS (Amazon EC2, Elastic Load Balancing y otros orígenes personalizados) (p. 37)• Origin Custom Headers (p. 37)

Configuración del comportamiento de la caché (p. 37)

Versión de API 2016-09-2930

Amazon CloudFront Guía para desarrolladoresValores que especifica

• Patrón de ruta (p. 38)• Origen (solo distribuciones existentes) (p. 39)• Viewer Protocol Policy (p. 39)• Métodos HTTP permitidos (p. 40)• Cifrado en el nivel de campo (p. 40)• Métodos HTTP almacenados en caché (p. 41)• Caché en función de encabezados de solicitud seleccionados (p. 41)• Whitelist Headers (p. 41)• Almacenamiento de objetos en caché (p. 41)• Tiempo de vida mínimo (p. 41)• Tiempo de vida máximo (p. 42)• Tiempo de vida (TTL) predeterminado (p. 42)• Reenvío de cookies (solo para Amazon EC2 y otros orígenes personalizados) (p. 42)• Lista blanca de cookies (solo para Amazon EC2 y otros orígenes personalizados) (p. 42)• Reenvío de cadenas de consulta y almacenamiento en caché (p. 43)• Lista blanca de cadenas de consulta (p. 43)• Smooth Streaming (p. 43)• Restringir el acceso a espectadores (mediante URL firmadas) (p. 44)• Signatarios de confianza (p. 44)• Números de cuenta de AWS (p. 44)• Comprimir objetos automáticamente (p. 45)• Tipo de evento (p. 45)• ARN de la función de Lambda (p. 45)

Detalles de la distribución (p. 45)

• Clase de precio (p. 45)• ACL web de AWS WAF (p. 45)• Nombres de dominio alternativos (CNAME) (p. 46)• Certificado SSL (p. 46)• Cliente admitidos (p. 47)• Política de seguridad (p. 47)• Protocolo de seguridad SSL mínimo: consulte Política de seguridad (p. 47)• Versiones de HTTP compatibles (p. 47)• Objeto raíz predeterminado (p. 48)• Registro (p. 48)• Bucket para registros (p. 48)• Prefijo de registros (p. 48)• Registros de cookies (p. 49)• Habilitar IPv6 (p. 49)• Comentario (p. 50)• Estado de la distribución (p. 50)

Páginas de error personalizadas y almacenamiento de errores en caché (p. 50)

Versión de API 2016-09-2931

Amazon CloudFront Guía para desarrolladoresValores que especifica

• Código de error (p. 50)• Ruta de la página de respuesta (p. 50)• Código de respuesta (p. 51)• TTL mínimo de almacenamiento de errores en caché (p. 51)

Restricciones (p. 51)

• Habilitar restricciones geográficas (p. 51)• Tipo de restricción (p. 51)• Países (p. 51)

Modo de entregaDeberá especificar el método de entrega al crear una distribución. A no ser que utilice Adobe Flash MediaServer con RTMP, este valor siempre será Web. No se puede cambiar el método de entrega para unadistribución existente.

Configuración de origenAl crear o actualizar una distribución, usted proporciona información acerca de una o varias ubicaciones(conocidas como orígenes), donde se almacenan las versiones originales del contenido web. CloudFrontobtiene el contenido web desde sus orígenes y los envía a los espectadores a través de una red global deservidores perimetrales. Cada origen es un bucket de Amazon S3 o un servidor HTTP como, por ejemplo,un servidor web.

Para consultar el límite actual de la cantidad de orígenes que puede crear para una distribución o parasolicitar una ampliación del límite, consulte Límites generales de las distribuciones web (p. 414).

Si desea eliminar un origen, primero debe editar o eliminar los comportamientos de la caché que estánasociados con dicho origen.

Important

Si elimina un origen, confirme que los archivos que se han servido anteriormente a ese origenestén disponibles en otro origen y que los comportamientos de la caché ya estén direccionandolas solicitudes para dichos archivos al nuevo origen.

Al crear o actualizar una distribución deberá especificar los siguientes valores para cada origen.

Nombre de dominio de origen

El nombre del dominio de DNS del bucket de Amazon S3 o el servidor HTTP desde donde desee queCloudFront obtenga objetos para este origen, por ejemplo:

• Bucket de Amazon S3: myawsbucket.s3.amazonaws.com• Bucket de Amazon S3 configurado como un sitio web: http://bucket-name.s3-website-us-west-2.amazonaws.com

• Contenedor de AWS Elemental MediaStore: mymediastore.data.mediastore.us-west-1.amazonaws.com

• Punto de enlace de AWS Elemental MediaPackage: mymediapackage.mediapackage.us-west-1.amazon.com

• Instancia Amazon EC2: ec2-203-0-113-25.compute-1.amazonaws.com

Versión de API 2016-09-2932

Amazon CloudFront Guía para desarrolladoresValores que especifica

• Balanceador de carga de Elastic Load Balancing: my-load-balancer-1234567890.us-west-2.elb.amazonaws.com

• Su propio servidor web: https://example.com

Si el origen es un servidor HTTP, escriba el nombre de dominio del recurso. Los archivos deben poderseleer públicamente.

Si el origen es un bucket de Amazon S3, seleccione el campo Origin Domain Name en la consola deCloudFront y una lista mostrará los buckets de Amazon S3 que estén asociados con la cuenta de AWS.Tenga en cuenta lo siguiente:

• Si el bucket está configurado como un sitio web, escriba el punto de enlace de alojamiento de sitios webestáticos de Amazon S3 del bucket. No seleccione el nombre del bucket de la lista en el campo OriginDomain Name. Este punto de enlace de hosting del sitio web aparecerá en la consola de Amazon S3en la página de Properties, en Static Website Hosting. Para obtener más información, consulte Uso debuckets de Amazon S3 configurados como puntos de enlace de sitio web para su origen (p. 56).

• Si ha configurado Transfer Acceleration de Amazon S3 en su bucket, no especifique el punto de enlaces3-accelerate para Origin Domain Name.

• Si utiliza un bucket de una cuenta de AWS distinta y el depósito no está configurado como un sitio web,escriba el nombre en el siguiente formato:

bucket-name.s3.amazonaws.com

Si el bucket se encuentra en la región EE. UU. Estándar y desea que Amazon S3 direccione lassolicitudes a una instalación en el norte de Virginia, utilice el siguiente formato:

bucket-name.s3-external-1.amazonaws.com

Si el bucket se encuentra en la región UE (Fráncfort), también puede utilizar el siguiente formato:

bucket-name.s3.eu-central-1.amazonaws.com

• Los archivos deben ser legibles públicamente a no ser que proteja su contenido en Amazon S3 medianteuna identidad de acceso de origen de CloudFront. Para obtener más información, consulte Restriccióndel acceso a contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 110).

Important

Si el origen es un bucket de Amazon S3, el nombre del bucket debe cumplir los requisitos denomenclatura de DNS. Para obtener más información, visite la sección Bucket Restrictions andLimitations en la Guía para desarrolladores de Amazon Simple Storage Service.

Al cambiar el valor de Origin Domain Name por un origen, CloudFront inmediatamente comienza a replicarel cambio en las ubicaciones de borde de CloudFront. Hasta que la configuración de la distribución seactualiza en una ubicación de borde determinada, CloudFront continúa reenviando solicitudes al servidorHTTP o al bucket de Amazon S3 anteriores. Tan pronto como la configuración de la distribución seactualiza en esa ubicación de borde, CloudFront comienza a reenviar solicitudes al nuevo servidor HTTP obucket de Amazon S3.

Cambiar el origen no requiere que CloudFront vuelva a incluir los cachés perimetrales con objetos delnuevo origen. Siempre que las solicitudes de los espectadores en su aplicación no cambien, CloudFrontseguirá ofreciendo objetos que ya estén en una caché perimetral hasta que el TTL de cada objeto caduqueo hasta que los objetos poco solicitados sean desalojados.

Ruta de origenSi desea que CloudFront solicite el contenido de un directorio del recurso de AWS o de un origenpersonalizado, escriba la ruta del directorio comenzando por una barra inclinada (/). CloudFront añade la

Versión de API 2016-09-2933

Amazon CloudFront Guía para desarrolladoresValores que especifica

ruta del directorio al valor de Origin Domain Name, 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: un bucket de Amazon S3 llamado myawsbucket• Origin Path : /production• Alternate Domain Names (CNAMEs): example.com

Cuando un usuario escribe example.com/index.html en un navegador, CloudFront envía una solicitud aAmazon S3 de myawsbucket/production/index.html.

Cuando un usuario escribe example.com/acme/index.html en un navegador, CloudFront envía una solicituda Amazon S3 de myawsbucket/production/acme/index.html.

ID de origen

Una cadena que distingue de forma exclusiva este origen de otros orígenes en esta distribución. Sicrea comportamientos de la caché además del que ya hay predeterminado, utilice la ID de origen queespecifique aquí para identificar el origen al que desea que CloudFront dirija una solicitud cuando lasolicitud coincida con el patrón de ruta de ese comportamiento de la caché. Para obtener más información,consulte Configuración del comportamiento de la caché (p. 37).

Restringir acceso al bucket (solo para Amazon S3)

Seleccione Yes si desea exigir a los usuarios que obtengan acceso a objetos en un bucket de Amazon S3solo mediante de URL de CloudFront y no mediante URL de Amazon S3. A continuación, especifique losvalores aplicables.

Seleccione No si desea que los usuarios puedan obtener acceso a los objetos a través de direcciones URLde CloudFront o Amazon S3 URL.

Para obtener más información, consulte Restricción del acceso a contenido de Amazon S3 utilizando unaidentidad de acceso de origen (p. 110).

Para obtener información acerca de cómo exigir a los usuarios a obtener acceso a los objetos de un origenpersonalizado empleando solo URL de CloudFront, consulte Utilizar encabezados personalizados pararestringir el acceso a contenido en un origen personalizado (p. 250).

Identidad de acceso de origen (solo para Amazon S3)

Si selecciona Yes en Restrict Bucket Access, elija entre crear una nueva identidad de acceso de origeno usar una que esté asociada a su cuenta de AWS. Si ya tiene una identidad de acceso de origen, lerecomendamos que use esa para facilitar el mantenimiento. Para obtener más información acerca de lasidentidades de acceso de origen, consulte Restricción del acceso a contenido de Amazon S3 utilizandouna identidad de acceso de origen (p. 110).

Comentario acerca de la nueva identidad (solo para Amazon S3)

Si elige Create a New Identity en Origin Access Identity, escriba un comentario que identifique lanueva identidad de acceso de origen. CloudFront creará la identidad de acceso de origen al crear estadistribución.

Sus identidades (solo para Amazon S3)

Si elige Use an Existing Identity en Origin Access Identity, seleccione la identidad de acceso de origen quedesea utilizar. No puede utilizar una identidad de acceso de origen asociada a otra cuenta de AWS.

Versión de API 2016-09-2934

Amazon CloudFront Guía para desarrolladoresValores que especifica

Conceder permisos de lectura en buckets (solo para Amazon S3)Si desea que CloudFront conceda automáticamente a la identidad de acceso de origen permisos de lecturade objetos de su bucket de Amazon S3, seleccione Yes, Update Bucket Policy.

Important

Al seleccionar Yes, Update Bucket Policy, CloudFront actualiza la política del bucket paraconceder a la identidad de acceso de origen especificada permisos de lectura de objetos de dichobucket. Sin embargo, CloudFront no elimina los permisos existentes de la política del bucket ni lospermisos sobre objetos individuales. Si los usuarios tenían permisos de acceso a los objetos endicho depósito con URL de Amazon S3, los conservan aún después de que CloudFront actualizala política del bucket. Para ver o cambiar la política actual del bucket y los permisos actuales delos objetos en dicho bucket, utilice un método proporcionado por Amazon S3. Para obtener másinformación, consulte Otorgar a la identidad de acceso de origen permisos de lectura de objetosdel bucket de Amazon S3 (p. 113).

Si desea actualizar los permisos de forma manual, por ejemplo, si desea actualizar las ACL en sus objetosen lugar de la actualizar los permisos del bucket, seleccione No, I will Update Permissions.

Protocolos SSL de origen (Amazon EC2, Elastic Load Balancing y otros orígenespersonalizados)Seleccione los protocolos de SSL que CloudFront puede utilizar a la hora de establecer una conexiónHTTPS con su origen. El protocolo SSLv3 es menos seguro, así que le recomendamos seleccionar SSLv3solo si su origen no admite TLSv1 o una versión posterior.

Note

Si selecciona SSLv3, CloudFront no intenta realizar una conexión con el origen mediante TLS.

Si el origen es un bucket de Amazon S3, CloudFront utiliza siempre TLSv1.2.

Política de protocolos de origen (Amazon EC2, Elastic Load Balancing y otrosorígenes personalizados)La política de protocolo que desea que CloudFront utilice cuando solicite objetos del servidor de origen.

Important

Si su bucket de Amazon S3 está configurado como punto de enlace del sitio web, deberáespecificar HTTP Only (Solo HTTP). Amazon S3 no admite conexiones HTTPS en dichaconfiguración.

Elija el valor aplicable:

• HTTP Only: CloudFront solo utiliza HTTP para obtener acceso al origen.• HTTPS Only: CloudFront solo utiliza HTTPS para obtener acceso al origen.• Match Viewer: CloudFront se comunica con el origen mediante HTTP o HTTPS, en función del protocolo

de la solicitud del espectador. CloudFront almacena en caché el objeto solo una vez, incluso si losespectadores realizan solicitudes a través de los protocolos HTTP y HTTPS.

Important

En el caso de solicitudes HTTPS de espectadores que CloudFront le reenvía a este origen, unode los nombres de dominio del certificado SSL en su servidor de origen debe coincidir con elnombre de dominio que especifique en Origin Domain Name. En caso contrario, CloudFrontresponde a las solicitudes de espectadores con un código de estado HTTP 502 (Puerta deenlace incorrecta) en lugar de con el objeto solicitado. Para obtener más información, consulteRequisitos para la utilización de certificados SSL/TLS con CloudFront (p. 98).

Versión de API 2016-09-2935

Amazon CloudFront Guía para desarrolladoresValores que especifica

Tiempo de espera de respuesta del origen (solo Amazon EC2, Elastic LoadBalancing y otros orígenes personalizados)

El tiempo de espera de respuesta del origen, también conocido como tiempo de espera de lectura delorigen y tiempo de espera de solicitud al origen, se aplica a los dos siguientes valores:

• El periodo de tiempo, en segundos, que CloudFront espera una respuesta después de enviar unasolicitud a un origen personalizado.

• El periodo de tiempo, en segundos, que CloudFront espera después de recibir un paquete de unarespuesta del origen y antes de recibir el paquete siguiente.

El tiempo de espera predeterminado es de 30 segundos. Puede cambiar a un valor de entre 4 y 60segundos. Si necesita un valor tiempo de espera fuera de este intervalo, solicite un cambio del límite.

Tip

Si desea aumentar el valor de tiempo de espera de respuesta del origen debido a que losespectadores están experimentando errores de código de estado HTTP 504, considere laposibilidad de explorar otras formas para eliminar dichos errores antes de cambiar el valor deltiempo de espera. Consulte las sugerencias de resolución de problemas en Código de estadoHTTP 504 (tiempo de espera de gateway agotado) (p. 224).

El comportamiento CloudFront depende del método HTTP en la solicitud del espectador.

• Solicitudes GET y HEAD: si el origen no responde antes de que transcurra el tiempo de espera de lecturao si el origen deja de responder durante el tiempo de espera configurado, CloudFront interrumpe laconexión e intenta contactar con el origen dos veces más. Después del tercer intento, si el origen noresponde antes de que transcurra el tiempo de espera de lectura, CloudFront no vuelve a intentarlohasta que se reciba una nueva solicitud de contenido en el mismo origen.

• Solicitudes DELETE, OPTIONS, PATCH, PUT y POST: si el origen no responde antes de que transcurrael tiempo de espera de lectura, CloudFront interrumpe la conexión y no vuelve a intentar ponerse encontacto con el origen. El cliente puede volver a enviar la solicitud en caso de que sea necesario.

Tiempo de keep-alive de origen (solo Amazon EC2, Elastic Load Balancing yotros orígenes personalizados)

El periodo de tiempo, en segundos, que CloudFront intenta mantener una conexión con el origenpersonalizado después de que obtenga el último paquete de una respuesta. Garantizar una conexiónpersistente ahorra el tiempo necesario para restablecer la conexión TCP y realizar otro protocolo de enlaceTLS para solicitudes posteriores. Aumentar el tiempo de keep-alive ayuda a mejorar la métrica de solicitudpor conexión en distribuciones.

Note

Para que el valor de Origin Keep-alive Timeout tenga efecto, el origen debe estar configuradopara permitir las conexiones persistentes.

El tiempo de espera predeterminado es de 5 segundos. Puede cambiar a un valor de entre 1 y 60segundos. Si necesita un tiempo de keep-alive superior a 60 segundos, solicite un cambio del límite.

Puerto HTTP (Amazon EC2, Elastic Load Balancing y otros orígenespersonalizados)

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.

Versión de API 2016-09-2936

Amazon CloudFront Guía para desarrolladoresValores que especifica

Puerto HTTPS (Amazon EC2, Elastic Load Balancing y otros orígenespersonalizados)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.

Origin Custom HeadersSi desea que CloudFront incluya encabezados personalizados cada vez que reenvíe una solicitud alorigen, especifique los siguientes valores:

Nombre del encabezado

El nombre del encabezado que desea que CloudFront reenvíe al origen.Valor

El valor del encabezado que ha especificado en el campo Custom Header.

Para obtener más información, consulte Reenviar encabezados personalizados al origen (solo paradistribuciones web) (p. 249).

Para consultar el límite actual de la cantidad máxima de encabezados personalizados que puede reenviaral origen, la longitud máxima de los nombres de encabezado personalizados sus valores, y la longitud totalde todos los nombres y valores de encabezados, visite Límites (p. 413).

Configuración del comportamiento de la cachéUn comportamiento de la caché le permite configurar una amplia variedad de funcionalidades deCloudFront para un determinado patrón de ruta de URL de archivos en su sitio web. Por ejemplo, uncomportamiento de la caché puede ser aplicable a todos los archivos .jpg del directorio imagesdel servidor web que se esté utilizando como servidor de origen para CloudFront. La funcionalidadconfigurable para cada comportamiento de la caché incluye:

• El patrón de ruta.• Si ha configurado varios orígenes para su distribución de CloudFront, a cuál origen desea que

CloudFront reenvíe sus solicitudes.• Si enviar cadenas de consulta a su origen.• Si acceder a los archivos especificados requiere URL firmadas.• Si exigir a los usuarios que utilicen HTTPS para obtener acceso a los archivos.• El tiempo mínimo que dichos archivos se mantienen en la caché de CloudFront independientemente del

valor de los encabezados Cache-Control que el origen añade a los archivos.

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 crearla distribución. Después de crear una distribución, puede crear más comportamientos de la caché quedefinen cómo CloudFront responde cuando recibe una solicitud de objetos que coincide con un patrón deruta, 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 aparecenen la consola de CloudFront o, si está utilizando la API de CloudFront, en el orden en que se enumeran enel elemento DistributionConfig de la distribución. Para obtener más información, consulte Patrón deruta (p. 38).

Al crear un comportamiento de la caché, debe especificar el origen desde el que desea que CloudFrontobtenga objetos. Por lo tanto, si desea que CloudFront distribuya objetos de todos los orígenes, debecrear al menos tantos comportamientos de la caché (incluido el predeterminado) como orígenes tenga.

Versión de API 2016-09-2937

Amazon CloudFront Guía para desarrolladoresValores que especifica

Por ejemplo, si tiene dos orígenes y solo el comportamiento de la caché predeterminado, este hará queCloudFront obtenga objetos desde uno de los orígenes, pero el otro origen no se usará jamás.

Para consultar el límite actual de la cantidad de comportamientos de la caché que puede añadir a unadistribución o para solicitar una ampliación del límite, consulte Límites generales de las distribucionesweb (p. 414).

Patrón de rutaEl patrón de ruta (por ejemplo, images/*.jpg) que especifica a qué solicitudes desea que sea aplicableeste comportamiento de la caché. Cuando CloudFront recibe una solicitud de un usuario final, la rutasolicitada es comparada con patrones de ruta en el orden en el que se enumeran los comportamientosde la caché en la distribución. La primera coincidencia determina el comportamiento de la caché quese aplicará a dicha solicitud. Por ejemplo, suponga que tiene tres comportamientos de la caché con lossiguientes 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, porejemplo, /images/*.jpg. El comportamiento de CloudFront es el mismo con o sin la / alprincipio.

Una solicitud del archivo images/sample.gif no satisface el primer patrón de ruta, por lo que elcomportamientos de la caché asociados no será aplicado a la solicitud. El archivo satisface el segundopatrón de ruta, por lo que los comportamientos de la caché asociados al segundo patrón de ruta se aplicana 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 del comportamiento de la cachépredeterminado se establece como * (todos los archivos) y no puede modificarse. Este valor haceque CloudFront reenvíe todas las solicitudes de los objetos al origen que ha especificado en elcampo Nombre de dominio de origen (p. 32). Si la solicitud de un objeto no coincide con elpatrón de ruta de ningún otro comportamiento de la caché, CloudFront aplica el comportamientoque especifique al comportamiento de la caché predeterminado.Important

Defina los patrones de ruta y su orden detenidamente para evitar que los usuarios puedanacceder a contenido al que no desea otorgar acceso. Supongamos que una solicitud coincidecon 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 usuariospodrán obtener acceso a los objetos sin usar una URL firmada porque CloudFront procesa elcomportamiento de la caché asociado a la primera coincidencia.

Si trabaja con un canal de AWS Elemental MediaPackage, debe incluir patrones de ruta específicos para elcomportamiento 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). Paraobtener más información e instrucciones específicas, consulte Distribución de vídeo en directo formateadocon AWS Elemental MediaPackage (p. 267).

La ruta especificada es aplicable a las solicitudes de todos los archivos del directorio especificado y sussubdirectorios. CloudFront no toma en cuenta las cadenas de consulta ni cookies a la hora de evaluar elpatrón de ruta. Por ejemplo, si un directorio images contiene subdirectorios product1 y product2, elpatrón de ruta images/*.jpg resulta aplicable a las solicitudes de cualquier archivo .jpg en los directorios

Versión de API 2016-09-2938

Amazon CloudFront Guía para desarrolladoresValores que especifica

images, images/product1y images/product2. Si desea aplicar un comportamiento de la caché a losarchivos del directorio images/product1 que sea distinto al comportamiento a aplicar a los archivos delos directorios images y images/product2, cree un comportamiento de la caché independiente paraimages/product1 y muévalo a la posición superior (previa) a la del comportamiento de la caché para eldirectorio images.

Puede utilizar los siguientes caracteres comodín en el patrón de ruta:

• * coincide con 0 o más caracteres.• ? coincide exactamente con 1 carácter.

Los siguientes ejemplos muestran cómo funcionan los caracteres comodín:

Patrón de ruta Archivos que coinciden con el patrón de ruta

*.jpg Todos los archivos .jpg.

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 lessiguen 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 utilizarel 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 lossiguientes caracteres:

• A-Z, a-z

Los patrones de ruta distinguen entre mayúsculas y minúsculas, por lo que el patrón de ruta *.jpg nosería aplicable al archivo LOGO.JPG.

• 0-9• _ - . * $ / ~ " ' @ : +• &, pasado y devuelto como &amp;

Origen (solo distribuciones existentes)Escriba el valor de ID de origen de un origen que exista. Este valor identifica el origen al que desea queCloudFront dirija solicitudes cuando una solicitud (por ejemplo, http://example.com/logo.jpg) coincida con elpatrón de la ruta de un comportamiento de la caché, sea este predeterminado (*) o no (por ejemplo, *.jpg).

Viewer Protocol PolicyElija la política de protocolo que desea que los espectadores utilicen para acceder a su contenido en lasubicaciones de borde de CloudFront:

• HTTP y HTTPS: los espectadores pueden utilizar ambos protocolos.

Versión de API 2016-09-2939

Amazon CloudFront Guía para desarrolladoresValores que especifica

• Redirect HTTP to HTTPS: los espectadores pueden utilizar ambos protocolos, pero las solicitudes HTTPse redirigirán automáticamente a solicitudes HTTPS.

• HTTPS Only: 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 espectadores yCloudFront (p. 86).

Cifrado en el nivel de campoSi desea aplicar el cifrado en el nivel de campo en campos de datos específicos, elija una configuración decifrado en el nivel de campo en la lista desplegable.

Para obtener más información, consulte Uso del cifrado en el nivel de campo para ayudar a proteger lainformación confidencial (p. 115).

Métodos HTTP permitidosEspecifique los métodos HTTP que desea que CloudFront procese y reenvíe al origen:

• GET, HEAD: puede usar CloudFront solo para obtener los objetos desde su origen u obtenerencabezados de objeto.

• GET, HEAD, OPTIONS: puede utilizar CloudFront solo para obtener objetos del origen, obtenerencabezados 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 realizarotras 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 formaopcional, de las solicitudes OPTIONS. CloudFront no almacena en caché las respuestas a lassolicitudes que utilizan los demás métodos.

Si utiliza un bucket de Amazon S3 como origen de la distribución y, además, usa identidades de accesode origen de CloudFront, las solicitudes POST no serán compatibles con algunas regiones de AmazonS3 y las solicitudes PUT en esas regiones necesitarán un encabezado adicional. Para obtener másinformación, consulte Usar una identidad de acceso de origen en regiones de Amazon S3 que soloadmiten autenticación mediante Signature Version 4 (p. 115).

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 personalizadopara que los usuarios no puedan realizar operaciones indeseadas. Los siguientes ejemplosexplican cómo restringir el acceso:

• Si utiliza Amazon S3 como origen de la distribución:: cree una identidad de acceso de origende CloudFront para restringir el acceso a su contenido de Amazon S3 y conceda los permisoscorrespondientes a la identidad de acceso de origen. Por ejemplo, si configura CloudFront paraque acepte y reenvíe estos métodos solo porque desea utilizar PUT, deberá volver a configurarla políticas del bucket de Amazon S3 o las ACL para gestionar las solicitudes DELETE de formaadecuada. Para obtener más información, consulte Restricción del acceso a contenido deAmazon S3 utilizando una identidad de acceso de origen (p. 110).

• Si utiliza un origen personalizado: configure el servidor de origen para gestionar todos losmétodos. Por ejemplo, si configura CloudFront para que acepte y reenvíe estos métodos soloporque desea utilizar POST, deberá volver a configurar el servidor de origen para gestionar lassolicitudes DELETE de forma adecuada.

Versión de API 2016-09-2940

Amazon CloudFront Guía para desarrolladoresValores que especifica

Métodos HTTP almacenados en cachéEspecifique si desea que CloudFront almacene en caché la respuesta de su origen cuando un espectadorenvíe una solicitud OPTIONS. CloudFront siempre almacena en caché las respuesta a las solicitudes GET yHEAD.

Caché en función de encabezados de solicitud seleccionadosEspecifique si desea que CloudFront almacene en caché objetos en función de los valores de losencabezados especificados:

• Ninguno (mejora el almacenamiento en caché): CloudFront no almacena en caché los objetos en funciónde los valores de encabezado.

• Lista blanca: CloudFront almacena en caché los objetos solo según los valores de los encabezadosespecificados. Utilice Encabezados de la lista blanca para elegir los encabezados en los que desea queCloudFront base el almacenamiento en caché.

• Todos: CloudFront no almacena en caché los objetos que están asociados con este comportamiento dela caché. En su lugar, CloudFront envía todas las solicitudes al origen. (No se recomienda para orígenesde Amazon S3).

Independientemente de la opción que elija, CloudFront reenvía determinados encabezados a su origen yrealiza acciones específicas en función de los encabezados que reenvíe. Para obtener más informaciónacerca de cómo administra CloudFront el reenvío de encabezado, consulte Encabezados de solicitudesHTTP y comportamiento CloudFront (personalizado y orígenes de S3) (p. 239).

Para obtener más información acerca de cómo configurar el almacenamiento en caché en CloudFrontutilizando encabezados de solicitud, consulte Almacenamiento en caché de contenido en función deencabezados de solicitud (p. 201).

Whitelist HeadersEspecifique los encabezados que desea que CloudFront tenga en cuenta a la hora de almacenar losobjetos en caché. Seleccione los encabezados de la lista de los disponibles y seleccione Add. Parareenviar un encabezado personalizado, escriba el nombre en el campo y elija Add Custom.

Para consultar el límite actual de la cantidad de encabezados caché que puede añadir a una lista blancapara cada comportamiento de la caché o para solicitar una ampliación del límite, consulte Límites deencabezados personalizados (solo para distribuciones web) (p. 415).

Almacenamiento de objetos en cachéSi su servidor de origen está añadiendo un encabezado Cache-Control a sus objetos para controlar eltiempo durante el cual deben mantenerse en la caché de CloudFront y no desea cambiar el valor Cache-Control, seleccione Use Origin Cache Headers.

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 predeterminadodurante el cual un objeto deberá mantenerse en la caché de CloudFront cuando le falte el encabezadoCache-Control, seleccione Customize. A continuación, en los campos Minimum TTL, Default TTL yMaximum TTL, especifique los valores aplicables.

Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en unacaché perimetral (Vencimiento) (p. 206).

Tiempo de vida mínimoEspecifique el tiempo mínimo en segundos durante el cual desea que los objetos permanezcan en lascachés de CloudFront antes de que CloudFront reenvíe otra solicitud a su origen para determinar si elobjeto se ha actualizado. El valor predeterminado de Minimum TTL es 0 segundos.

Versión de API 2016-09-2941

Amazon CloudFront Guía para desarrolladoresValores que especifica

Important

Si configura CloudFront para reenviar todos los encabezados al origen para un comportamientode la caché, CloudFront nunca almacenará en caché los objetos asociados a dichocomportamiento. En su lugar, CloudFront reenviará todas las solicitudes de esos objetos al origen.En dicha configuración, el valor de Minimum TTL deberá ser 0.

Para especificar un valor en Minimum TTL, elija la opción Customize en el ajuste Object Caching.

Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en unacaché perimetral (Vencimiento) (p. 206).

Tiempo de vida máximoEspecifique el tiempo máximo en segundos durante el cual desea que los objetos permanezcan en lascachés de CloudFront antes de que CloudFront consulte a su origen para determinar si el objeto se haactualizado. El valor que especifique en Maximum TTL será aplicable solo cuando el origen personalizadoañada encabezados HTTP como Cache-Control max-age, Cache-Control s-maxage o Expiresa los objetos. Para obtener más información, consulte Administración de cuánto tiempo se mantiene elcontenido en una caché perimetral (Vencimiento) (p. 206).

Para especificar un valor en Maximum TTL, elija la opción Customize en el ajuste Object Caching.

El valor predeterminado de Maximum TTL es 31 536 000 segundos (un año). Si cambia el valor deMinimum TTL o de Default TTL a más de 31 536 000 segundos, el valor predeterminado de Maximum TTLcambia al valor Default TTL.

Tiempo de vida (TTL) predeterminadoEspecifique el tiempo predeterminado en segundos durante el cual desea que los objetos permanezcanen las cachés de CloudFront antes de que CloudFront reenvíe otra solicitud a su origen para determinarsi el objeto se ha actualizado. El valor que especifique en Default TTL es aplicable solo cuando el origenpersonalizado no añade encabezados HTTP como Cache-Control max-age, Cache-Control s-maxage, o Expires a los objetos. Para obtener más información, consulte Administración de cuántotiempo se mantiene el contenido en una caché perimetral (Vencimiento) (p. 206).

Para especificar un valor en Default TTL, elija la opción Customize en el ajuste Object Caching.

El valor predeterminado de Default TTL es 86 400 segundos (un día). Si cambia el valor de Minimum TTL amás de 86 400 segundos, el valor predeterminado de Default TTL cambia al valor Minimum TTL.

Reenvío de cookies (solo para Amazon EC2 y otros orígenes personalizados)Especifique si desea que CloudFront reenvíe las cookies al servidor de origen y, en tal caso, cuáles deellas. Si decide reenviar únicamente unas cookies determinadas (las contenidas en una lista blanca decookies), escriba sus nombres en el campo Whitelist Cookies. Si elige All, CloudFront reenvía todas lascookies independientemente de la cantidad que utilice la aplicación.

Amazon S3 no procesa las cookies, y reenviar cookies al origen reduce la capacidad de almacenamientoen caché. Para comportamientos de la caché que reenvíen solicitudes a un origen de Amazon S3,seleccione None en Forward Cookies.

Para obtener más información acerca del reenvío de cookies al origen, visite Almacenamiento en caché decontenido en función de cookies (p. 199).

Lista blanca de cookies (solo para Amazon EC2 y otros orígenes personalizados)Si eligió Whitelist en la lista Forward Cookies, escriba en el campo Whitelist Cookies los nombres de lascookies que desea que CloudFront reenvíe a su servidor de origen para este comportamiento de la caché.Escriba una cookie por línea.

Versión de API 2016-09-2942

Amazon CloudFront Guía para desarrolladoresValores que especifica

Puede especificar los siguientes comodines para especificar nombres de cookies:

• * coincide con 0 más caracteres en el nombre de la cookie• ? coincide exactamente con un carácter en el nombre de la cookie.

Por ejemplo, supongamos que las solicitudes de un objeto enviadas por un espectador incluyen una cookiecon el nombre:

userid_member-number

donde el valor de member-number es único para cada usuario. Desea que CloudFront almacene encaché una versión independiente del objeto por cada miembro. Podría conseguirlo reenviando todas lascookies al origen, pero las solicitudes de espectadores incluyen algunas que no desea que CloudFront lasalmacene en caché. Otra opción sería especificar el valor a continuación como nombre de cookie, lo queharía que CloudFront reenvíe todas las cookies que comienzan por userid_ al origen aplicable:

userid_*

Para consultar el límite actual de la cantidad de nombres de cookies que puede añadir a una lista blancapara cada comportamiento de la caché o para solicitar una ampliación del límite, consulte Límites decookies incluidas en listas blancas (solo para distribuciones web) (p. 414).

Reenvío de cadenas de consulta y almacenamiento en cachéCloudFront puede almacenar en caché diferentes versiones del contenido en función de los valores de losparámetros de las cadenas de consulta. Elija la opción aplicable:

Ninguno (mejora el almacenamiento en caché)

Seleccione esta opción si el origen devuelve la misma versión de un objeto independientementede los valores de los parámetros de las cadenas de consulta. Esto aumenta la probabilidad de queCloudFront pueda atender una solicitud de la caché, lo que mejora el desempeño y reduce la carga enel origen.

Reenviar todo y almacenar en caché en función de la lista blanca

Seleccione esta opción si su servidor de origen devuelve distintas versiones de sus objetos en funciónde uno o más parámetros de cadenas de consulta. A continuación, especifique los parámetros quedesee que CloudFront utilice como base para el almacenamiento en caché en el campo Lista blancade cadenas de consulta (p. 43).

Reenviar todo y almacenar todo en caché

Seleccione esta opción si su servidor de origen devuelve distintas versiones de sus objetos para todoslos parámetros de cadenas de consulta.

Para obtener más información acerca del almacenamiento en caché en función de los parámetros delas cadenas de consulta y acerca de formas de mejorar el desempeño, consulte Almacenar en cachécontenido en función de parámetros de cadenas de consulta (p. 196).

Lista blanca de cadenas de consultaSi eligió Forward all, cache based on whitelist en Reenvío de cadenas de consulta y almacenamiento encaché (p. 43), especifique qué parámetros de cadenas de consulta desea que CloudFront utilice comobase para almacenar en caché.

Smooth StreamingElija Yes (Sí) si desea distribuir archivos multimedia en el formato Microsoft Smooth Streaming y nodispone de un servidor de IIS.

Versión de API 2016-09-2943

Amazon CloudFront Guía para desarrolladoresValores que especifica

Elija No si tiene un servidor Microsoft IIS que desea utilizar como origen para distribuir archivos multimediaen 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 comportamientode 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 Microsoft Smooth Streaming bajodemanda (p. 263).

Restringir el acceso a espectadores (mediante URL firmadas)

Si desea que las solicitudes de objetos que coinciden con el valor de PathPattern en estecomportamiento de la caché utilicen direcciones URL públicas, elija No.

Si desea que las solicitudes de objetos que coinciden con el valor de PathPattern en estecomportamiento de la caché utilicen direcciones URL firmadas, elija Yes. A continuación, especifiquelas cuentas de AWS que desea utilizar para crear URL firmadas; a estas cuentas se les conoce comosignatarios de confianza.

Para obtener más información acerca de los signatarios de confianza, consulte Especificar las cuentas deAWS que pueden crear URL firmadas y cookies firmadas (signatarios de confianza) (p. 130).

Signatarios de confianza

Seleccione las cuentas de AWS que desea utilizar como signatarios de confianza para estecomportamiento de la caché:

• Self: utilice la cuenta con la que tiene la sesión iniciada en la Consola de administración de AWS comosignatario de confianza. Si actualmente su sesión está iniciada como usuario de IAM, la cuenta de AWSasociada se añade como signatario de confianza.

• Specify Accounts: escriba los números de cuenta de los signatarios de confianza en el campo AWSAccount Numbers.

Para crear URL firmadas, la cuenta de AWS debe tener al menos un par de claves de CloudFront activas.

Important

Si está actualizando una distribución que ya utiliza para distribuir contenido, añada signatariosde 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 lasURL firmadas para obtener acceso a los objetos que coincidan con PathPattern para estecomportamiento de la caché.

Números de cuenta de AWS

Si desea crear URL firmadas a través de cuentas de AWS además de —o en lugar de— hacerlo conla cuenta actual, escriba un número de cuenta de AWS por línea en este campo. Tenga en cuenta losiguiente:

• Las cuentas que especifique deben tener al menos un par de claves de CloudFront activas. Paraobtener más información, consulte Crear pares de claves de CloudFront para sus signatarios deconfianza (p. 131).

• No puede crear pares de claves de CloudFront para usuarios de IAM, lo que significa que no puedeutilizar 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 How Do IGet Security Credentials? en Referencia general de Amazon Web Services.

Versión de API 2016-09-2944

Amazon CloudFront Guía para desarrolladoresValores que especifica

• Si escribe el número de la cuenta actual, CloudFront marca automáticamente la casilla Self y elimina sunúmero de la lista AWS Account Numbers.

Comprimir objetos automáticamenteSi desea que CloudFront comprima automáticamente archivos de determinados tipos cuando lassolicitudes de los espectadores incluyan Accept-Encoding: gzip en el encabezado de la solicitud,seleccione Yes. Cuando CloudFront comprime el contenido, las descargas son más veloces, ya que losarchivos son más pequeños y las páginas web se muestran más rápido a sus usuarios. Para obtener másinformación, consulte Ofrecer archivos comprimidos (p. 81).

Tipo de eventoPuede elegir ejecutar una función de Lambda cuando se produzcan uno o varios de los siguientes eventosde CloudFront:

• Cuando CloudFront reciba una solicitud de un espectador (solicitud del espectador)• Antes de que CloudFront reenvíe una solicitud al origen (solicitud al origen)• Cuando CloudFront reciba una respuesta del origen (respuesta del origen)• Antes de que CloudFront devuelva la respuesta al espectador (respuesta al espectador)

Para obtener más información, consulte Cómo decidir el evento de CloudFront que utilizar para dispararuna función de Lambda (p. 305).

ARN de la función de LambdaEspecifique el nombre de recurso de Amazon (ARN) de la función de Lambda para la que desea añadir undisparador. Para obtener información sobre cómo obtener el ARN de una función, consulte el paso 1 delprocedimiento Añadir disparadores mediante la consola de CloudFront.

Detalles de la distribuciónLos siguientes valores se aplican a toda la distribución.

Clase de precioSeleccione la clase de precio que corresponda al precio máximo que desea pagar por el servicio deCloudFront. De forma predeterminada, CloudFront ofrece sus objetos desde ubicaciones de borde entodas las regiones de CloudFront.

Para obtener más información acerca de las clases de precios y cómo la clase que elija afecta eldesempeño de CloudFront para su distribución, visite Elegir la clase de precio de una distribución deCloudFront (p. 10). Para obtener información acerca de precios de CloudFront, incluido cómo las clases secorresponden con las regiones de CloudFront, visite Precios de Amazon CloudFront.

ACL web de AWS WAFSi desea utilizar AWS WAF para habilitar o bloquear solicitudes según los criterios que especifique, elija laACL web para asociarla a esta distribución.

AWS WAF es un firewall de aplicaciones web que permite monitorizar las solicitudes HTTP y HTTPS quese reenvían a CloudFront y permite controlar quién accede a su contenido. En función de las condicionesque especifique, como las direcciones IP de las que provienen las solicitudes o los valores de las cadenasde consulta, CloudFront responde a las solicitudes con el contenido solicitado o con un código deestado HTTP 403 (Prohibido). También puede configurar CloudFront para devolver una página de errorpersonalizada cuando se bloquea una solicitud. Para obtener más información acerca de AWS WAF,consulte la guía para desarrolladores de AWS WAF.

Versión de API 2016-09-2945

Amazon CloudFront Guía para desarrolladoresValores que especifica

Nombres de dominio alternativos (CNAME)

Opcional. Especifique uno o varios nombres de dominio que desee utilizar para direcciones URL de susobjetos en lugar del nombre de dominio que CloudFront asigna al crear la distribución. Por ejemplo, sidesea que la URL del objeto:

/images/image.jpg

sea así:

http://www.example.com/images/image.jpg

en lugar de así:

http://d111111abcdef8.cloudfront.net/images/image.jpg

añada un CNAME para www.example.com.

Important

Si añade un CNAME para www.example.com en la distribución, también deberá crearo actualizar un registro de CNAME con su servicio de DNS para dirigir consultas dewww.example.com a d111111abcdef8.cloudfront.net. Debe tener permiso para crearun registro CNAME con el proveedor de servicios de DNS para el dominio. Por lo general, estoindicará que es el propietario del dominio, aunque también podría estar desarrollando unaaplicación para el propietario del dominio.

Para consultar el límite actual de la cantidad de nombres de dominio alternativos que puede añadir a unadistribución o para solicitar una ampliación del límite, consulte Límites generales de las distribucionesweb (p. 414).

Para obtener más información acerca de los nombres de dominio alternativos, consulte Uso de URLpersonalizadas para archivos añadiendo nombres de dominio alternativos (CNAME) (p. 60). Paraobtener más información acerca de las URL de CloudFront, consulte Personalización del formato de URLpara archivos en CloudFront (p. 72).

Certificado SSL

Si desea que los espectadores utilicen HTTPS para obtener acceso a sus objetos, elija el ajuste aplicable.Además, si elige Custom SSL Certificate, deberá seleccionar el certificado que desea utilizar:

• Certificado de CloudFront predeterminado (*.cloudfront.net): elija esta opción si desea utilizarel nombre de dominio de CloudFront en las URL de sus objetos, por ejemplo, https://d111111abcdef8.cloudfront.net/image1.jpg. Elíjala también si desea que los espectadoresutilicen HTTP para obtener acceso a sus objetos.

• Certificado SSL personalizado: elija esta opción y a continuación el certificado aplicable, si desea utilizarsu propio nombre de dominio en las URL de sus objetos, por ejemplo, https://example.com/image1.jpg. La lista puede incluir certificados tanto proporcionados por AWS Certificate Managercomo adquiridos de una entidad de certificación de terceros y cargados en ACM o en el almacén decertificados de IAM. Para obtener más información, consulte Usar nombres de dominio alternativos yHTTPS (p. 95).

Si elige esta opción, le recomendamos que utilice solo un nombre de dominio alternativo en las URLde sus objetos (https://example.com/logo.jpg). Si utiliza el nombre de dominio de la distribución deCloudFront (https://d111111abcdef8.cloudfront.net/logo.jpg) y el espectador admite SNI, CloudFront secomportará normalmente. Sin embargo, si un espectador no admite SNI, presenta uno de los siguientescomportamientos, en función del valor de Clients Supported:• All Clients: Si el espectador 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 SSL.

Versión de API 2016-09-2946

Amazon CloudFront Guía para desarrolladoresValores que especifica

• Only Clients that Support Server Name Indication (SNI): CloudFront interrumpe la conexión con elespectador sin devolver el objeto.

Cliente admitidosSi especificó uno o varios nombres de dominio alternativos y un certificado SSL en el almacén decertificados de IAM, elija el modo en que desea que CloudFront atienda las solicitudes HTTPS, ya sea unmétodo que funcione para todos los clientes u otro que funcione para la mayoría:

• All Clients cualquier cliente puede obtener acceso a su contenido. Sin embargo, debe solicitar permisopara utilizar esta característica, y se le cobrarán cargos mensuales adicionales.

• Only Clients that Support Server Name Indication (SNI): todos los navegadores modernos puedenobtener acceso a su contenido, ya que todos admiten SNI. Sin embargo, todavía se usan navegadoresque no admiten SNI. Los usuarios con estos navegadores deben obtener acceso a su contenidoutilizando algún otro método, por ejemplo, obteniendo los objetos directamente desde el origen.

Para obtener más información, consulte Usar nombres de dominio alternativos y HTTPS (p. 95).

Política de seguridadEspecifique la política de seguridad que desea que CloudFront utilice para las conexiones HTTPS. Unapolítica de seguridad determina dos ajustes:

• El protocolo SSL/TLS mínimo que utiliza CloudFront para comunicarse con los espectadores• El cifrado que utiliza CloudFront para cifrar el contenido que devuelve a los espectadores

Las políticas de seguridad que están disponibles dependen de los valores que especifique para SSLCertificate y Custom SSL Client Support:

• Cuando SSL Certificate es Default CloudFront Certificate (*.cloudfront.net), CloudFront defineautomáticamente el valor de Security Policy en TLSv1.

• Cuando SSL Certificate es Custom SSL Certificate (example.com) y Custom SSL Client Support esOnly Clients that Support Server Name Indication (SNI), debe utilizar TLSv1 o una versión posterior. Lerecomendamos que elija TLSv1.1_2016 a menos que sus usuarios utilicen navegadores o dispositivosque no sean compatibles con TLSv1.1 o una versión posterior.

• Cuando SSL Certificate sea Custom SSL Certificate (example.com) y Custom SSL Client Supportsea All Clients, le recomendamos que elija TLSv1. En esta configuración, las políticas de seguridadTLSv1_2016, TLSv1.1_2016 y TLSv1.2_2018 no están disponibles.

Para obtener información sobre la relación entre la política de seguridad que elige y los protocolos ycifrados que utiliza CloudFront para comunicarse con los espectadores, consulte Protocolos SSL/TLS ycifrados admitidos para comunicación entre espectadores y CloudFront (p. 92).

Versión mínima de protocolo SSLConsulte Política de seguridad (p. 47).

Versiones de HTTP compatiblesElija la versión HTTP que desee que los espectadores usen para comunicarse con CloudFront. Losespectadores usan la última versión que configure para que CloudFront la utilice. Los espectadores que noadmitan HTTP/2 utilizarán automáticamente una versión anterior.

Para que los espectadores y CloudFront utilicen HTTP/2, los espectadores deben admitir TLS 1.2 oposterior e Identificación de nombres de servidor (SNI).

Versión de API 2016-09-2947

Amazon CloudFront Guía para desarrolladoresValores que especifica

En general, configurar CloudFront para comunicarse con los espectadores a través de HTTP/2 reduce lalatencia. Puede mejorar el desempeño si optimiza para HTTP/2. Para obtener más información, busque"optimización http/2" en Internet.

Objeto raíz predeterminadoOpcional. El objeto que quiera que CloudFront solicite desde su origen (por ejemplo, index.html) cuandoun espectador solicite la URL raíz de la distribución (http://www.example.com/) en lugar de un objetode la distribución (http://www.example.com/product-description.html). Especificar un objetoraíz predeterminado evita exponer el contenido de su distribución.

La longitud máxima de un nombre es 255 caracteres. El nombre puede contener cualquiera de lossiguientes caracteres:

• A-Z, a-z• 0-9• _ - . * $ / ~ " '• &, pasado y devuelto como &amp;

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. 213).

RegistroSi desea que CloudFront registre información acerca de cada solicitud de un objeto y almacene losarchivos de registro en un bucket de Amazon S3. Puede habilitar o deshabilitar el registro de accesoen cualquier momento. No se aplica ningún cargo adicional si activa los registros, pero se acumulanlos cargos típicos de Amazon S3 por almacenar y obtener acceso a los archivos que se encuentrenen el bucket de Amazon S3. Puede eliminar los registros en cualquier momento. Para obtener másinformación acerca de los registros de acceso de CloudFront, consulte Configuración y uso de registros deacceso (p. 371)

Bucket para registrosSi ha seleccionado On en Logging, el bucket de Amazon S3 en el que desea que CloudFront guarde losarchivos, por ejemplo, myawslogbucket.s3.amazonaws.com. Si habilita el registro, CloudFront registrainformación acerca de las solicitudes de cada objeto realizadas por cada usuario final y almacena losarchivos en el bucket de Amazon S3 especificado. Puede habilitar o deshabilitar el registro de accesoen cualquier momento. Para obtener más información acerca de los registros de acceso de CloudFront,consulte Configuración y uso de registros de acceso (p. 371)

Note

Debe tener los permisos necesarios para obtener y actualizar ACL de buckets de Amazon S3 y laACL de S3 del bucket debe concederle FULL_CONTROL. Esto permite a CloudFront concederle aawsdatafeeds permiso en la cuenta para guardar archivos de registro en el bucket. Para obtenermás información, consulte Permisos necesarios para configurar el registro y el acceso a susarchivos de registro (p. 373).

Prefijo de registrosOpcional. Si eligió On en Logging, especifique la cadena, de haberla, a la que CloudFront debe añadirun prefijo para los nombres de archivo de los registros de acceso de esta distribución, por ejemplo,exampleprefix/. La barra inclinada (/) al final es opcional pero recomendable para simplificar lanavegación de los archivos de registro. Para obtener más información acerca de los registros de acceso deCloudFront, consulte Configuración y uso de registros de acceso (p. 371)

Versión de API 2016-09-2948

Amazon CloudFront Guía para desarrolladoresValores que especifica

Registros de cookiesSi desea que CloudFront incluya cookies en los registros de acceso, elija On. Si decide incluir las cookiesen los registros, CloudFront registra todas las cookies independientemente de cómo configura loscomportamientos de la caché para esta distribución: para reenviar al origen todas las cookies, ninguna olas 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 deAmazon EC2 u otro personalizado, le recomendamos que elija el valor Off en Cookie Logging.

Para obtener más información acerca de cookies, visite Almacenamiento en caché de contenido en funciónde cookies (p. 199).

Habilitar IPv6IPv6 es una nueva versión del protocolo IP. Es la sustitución final de IPv4 y utiliza un espacio dedirecciones mayor. CloudFront siempre responde a las solicitudes por IPv4. Si desea que CloudFrontresponda a las solicitudes de direcciones IP IPv4 (como 192.0.2.44) y a las de direcciones IPv6 (como2001:0db8:85a3:0000:0000:8a2e:0370:7334), seleccione Enable 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ásde una política personalizada con el parámetro IpAddress para restringir las direcciones IP que puedenobtener acceso a su contenido, no habilite IPv6. Si desea restringir el acceso a algún contenido pordirección IP pero no restringir otro contenido (o restringir el acceso, pero no por dirección IP), puede creardos distribuciones. Para obtener información acerca de cómo crear URL firmadas mediante una políticapersonalizada, consulte Crear una URL firmada mediante una política personalizada (p. 148). Paraobtener información acerca de cómo crear cookies firmadas mediante una política personalizada, consulteEstablecer cookies firmadas mediante una política personalizada (p. 165).

Si utiliza un conjunto de registros de recursos de alias de Route 53 para dirigir el tráfico a su distribución deCloudFront, debe crear un segundo conjunto de registros de recursos de alias cuando las dos condicionessiguientes se cumplan:

• Ha habilitado IPv6 para la distribución.• Está utilizando nombres de dominio alternativo en las URL de sus objetos.

Para obtener más información, consulte Routing Traffic to an Amazon CloudFront Web Distribution byUsing Your Domain Name 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 deDNS, no es necesario realizar ningún cambio. Un registro CNAME dirigirá el tráfico hacia la distribución, sintener 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 incluirá valores en formato IPv4 eIPv6. Para obtener más información, consulte Configuración y uso de registros de acceso (p. 371).

Note

Para mantener una alta disponibilidad para los clientes, CloudFront responderá a solicitudes delos espectadores a través de IPv4 si nuestros datos sugieren que ese protocolo proporcionaráuna mejor experiencia de usuario. Para saber qué porcentaje de solicitudes CloudFront atiendepor IPv6, habilite el registro de CloudFront para su distribución y analice la columna c-ip, quecontiene la dirección IP del espectador que hizo la solicitud. Este porcentaje debería crecer conel paso del tiempo, pero seguirá siendo una minoría de tráfico ya que IPv6 aún no es compatiblecon todas las redes de espectadores en todo el mundo. Algunas redes de espectadores tienenexcelente compatibilidad con IPv6, pero otras no admiten IPv6 en absoluto. (En este sentido, unared 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 preguntasfrecuentes de CloudFront. Para obtener más información acerca de la activación de registros

Versión de API 2016-09-2949

Amazon CloudFront Guía para desarrolladoresValores que especifica

de acceso, consulte los campos Registro (p. 48), Bucket para registros (p. 48)y Prefijo deregistros (p. 48).

ComentarioOpcional. Al crear una distribución, puede incluir un comentario de hasta 128 caracteres. Puedeactualizarlo en cualquier momento.

Estado de la distribuciónIndica si desea habilitar o deshabilitar la distribución una vez implementada:

• Enabled significa que tan pronto como la distribución se implemente totalmente, podrá implementarenlaces 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 contenidorealizada 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 para propagar los cambiosa la base de datos de CloudFront. Una solicitud inmediata para obtener información acerca de unadistribució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 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á deshabilitada, CloudFront no aceptaninguna solicitud realizada por ningún usuario final y que utilice el nombre de dominio asociado a esadistribución. Hasta que no cambie la distribución de deshabilitada a habilitada (actualizando de ladistribución de la configuración), nadie podrá utilizarla.

Puede cambiar una distribución entre habilitada y deshabilitada tantas veces como quiera. Siga el procesopara actualizar la configuración de una distribución. Para obtener más información, consulte Visualizar yactualizar distribuciones (p. 53).

Páginas de error personalizadas y almacenamiento de errores encachéPuede hacer que CloudFront devuelva un objeto al espectador (por ejemplo, un archivo HTML) cuando suAmazon S3 u origen personalizado devuelve un código de estado HTTP 4xx y 5xx de CloudFront. Tambiénpuede especificar por cuánto tiempo almacenar en las cachés perimetrales de CloudFront una respuestade error desde su origen o una página de error personalizada. Para obtener más información, consulteCreación de una página de error personalizada para códigos de estado HTTP específicos (p. 256).

Note

Los siguientes valores no se incluyen en el asistente Create Distribution, lo que significa que solopuede configurar páginas de error personalizadas al actualizar una distribución.

Código de errorEl código de estado HTTP para el que desea que CloudFront devuelva una página de error personalizada.Puede configurar CloudFront para devolver páginas de error personalizadas para ninguno, algunos o todoslos códigos de estado HTTP que CloudFront almacena en caché.

Ruta de la página de respuestaLa ruta a la página de error personalizada (por ejemplo, /4xx-errors/403-forbidden.html) quedesea que CloudFront devuelva a un espectador cuando el origen devuelve el código de estado HTTPespecificado en Error Code (por ejemplo, 403). Si desea almacenar los objetos y las páginas de errorpersonalizadas en diferentes ubicaciones, la distribución debe incluir un comportamiento de la caché quecumpla con las siguientes condiciones:

Versión de API 2016-09-2950

Amazon CloudFront Guía para desarrolladoresValores que especifica

• El valor de Path Pattern 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 enun directorio llamado /4xx-errors. La distribución debe incluir un comportamiento de la caché cuyopatró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 especifica el valor de Origin ID del origen que contiene las páginas de errorpersonalizadas.

Código de respuesta

El código de estado HTTP que desea que CloudFront devuelva al espectador junto con la página de errorpersonalizada.

TTL mínimo de almacenamiento de errores en caché

El tiempo mínimo que desee que CloudFront almacene en caché las respuestas de error de su servidor deorigen.

RestriccionesSi necesita impedir que los usuarios de países concretos accedan a su contenido, puede configurar ladistribución de CloudFront para permitirle a los usuarios de una lista blanca de ciertos países el acceso asu contenido o para no permitírselo a los usuarios de una lista negra de otros países. Para obtener másinformación, consulte Restringir la distribución geográfica de su contenido (p. 123).

Note

Los siguientes valores no se incluyen en el asistente Create Distribution, lo que significa que solopuede configurar restricciones geográficas al actualizar una distribución.

Habilitar restricciones geográficas

Si desea evitar que los usuarios de ciertos países accedan a su contenido. No se aplica ningún cargoadicional por la configuración de restricción geográfica.

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 incluye todos los países cuyos usuarios desea permitirles acceso a sucontenido.

• Lista negra: la lista Countries incluye todos los países a cuyos usuarios no desea permitirles acceso a sucontenido.

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 dela izquierda y elija Add. 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.

• 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.

• Para encontrar un país en la lista de la izquierda, escriba los primeros caracteres del nombre completodel país.

Versión de API 2016-09-2951

Amazon CloudFront Guía para desarrolladoresValores que se muestran

• El código de dos letras que aparece delante del nombre de cada país es el valor que debe escribir sidesea crear o actualizar una distribución de CloudFront mediante la API. Utilizamos los códigos de paísde la Organización Internacional de Normalización. Para obtener una lista sencilla y organizable porcódigo y por nombre de país, consulte la entrada de Wikipedia ISO 3166-1 alpha-2.

Valores que CloudFront muestra en la consolaAl crear una nueva distribución o actualizarla, CloudFront muestra la siguiente información en su consola.

Note

Los signatarios de confianza activos, esto es, las cuentas de AWS con un par de claves deCloudFront activas y que se pueden utilizar para crear URL firmadas válidas, actualmente no sonvisibles en la consola de CloudFront.

Distribution ID (pestaña general)Al ejecutar una acción en una distribución mediante la API de CloudFront, use el ID de distribución paraespecificar qué distribución desea utilizar, por ejemplo, EDFDVBD6EXAMPLE. No se puede cambiar el ID dedistribución de una distribución.

Distribution Status (pestaña general)Los posibles valores del estado de una distribución se muestran en la siguiente tabla.

Valor Descripción

InProgress La distribución se sigue creando o actualizando y los cambios todavía no se hanpropagado totalmente a los servidores perimetrales.

Deployed La distribución se ha creado o actualizado y los cambios se han propagado porcompleto al sistema de CloudFront.

Note

Además de asegurarse de que el estado de la distribución sea Deployed, debe habilitar ladistribución antes de que los usuarios puedan utilizar CloudFront para obtener acceso a sucontenido. Para obtener más información, consulte Estado de la distribución (p. 50).

Last Modified (pestaña general)La fecha y hora de la última modificación de la distribución, con formato ISO 8601; por ejemplo,2012-05-19T19:37:58Z. Para obtener más información, consulte http://www.w3.org/TR/NOTE-datetime.

Domain Name (pestaña general)El nombre de dominio de la distribución se utiliza en los enlaces a los objetos. Por ejemplo, si el nombre dedominio de su distribución es d111111abcdef8.cloudfront.net, el enlace a /images/image.jpgserá http://d111111abcdef8.cloudfront.net/images/image.jpg. No se puede cambiarel nombre de dominio de CloudFront para la distribución. Para obtener más información acerca de lasURL de CloudFront para los objetos, consulte Personalización del formato de URL para archivos enCloudFront (p. 72).

Si especificó uno o varios nombres de dominio alternativo (CNAME), puede utilizar sus propios nombres dedominio en lugar del nombre de dominio de CloudFront para los enlaces a sus objetos. Para obtener másinformación acerca de CNAME, consulte Nombres de dominio alternativos (CNAME) (p. 46).

Versión de API 2016-09-2952

Amazon CloudFront Guía para desarrolladoresPrueba de una distribución

Note

Los nombres de dominio de CloudFront son únicos. El nombre de dominio de la distribución nuncase utilizó para una distribución anterior y nunca se reutilizará para otra distribución futura.

Prueba de una distribuciónUna vez creada la distribución, CloudFront conocerá el lugar en el que se encuentra su servidor deorigen, y usted sabrá el nombre de dominio asociado a la distribución. Puede crear enlaces a sus objetospor medio del nombre de dominio de CloudFront, y CloudFront ofrecerá los objetos a su página web oaplicación.

Note

Deberá esperar hasta que el estado de la distribución cambie a Deployed antes de poder probarsus vínculos.

Crear enlaces a objetos en una distribución web

1. Copie el siguiente código HTML a un nuevo archivo, sustituya domain-name con el nombre dedominio 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>

Por ejemplo, si su nombre de dominio es d111111abcdef8.cloudfront.net y su objeto esimage.jpg, la URL del vínculo será:

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

Si su objeto se encuentra en una carpeta del servidor de origen, la carpeta también deberá incluirse enla 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

2. Guarde el código HTML en un archivo que tenga una extensión .html.3. Abra su página web en un navegador para asegurarse de que pueda ver su objeto.

El navegador devolverá su página con el archivo de imagen integrado, ofrecido desde la ubicación deborde que CloudFront determinó que era adecuada para servir el objeto.

Visualizar y actualizar distribucionesEn la consola de CloudFront, puede ver las distribuciones de CloudFront asociadas a su cuenta de AWS,ver la configuración de una distribución y actualizar la mayoría de los ajustes. Tenga en cuenta que loscambios de configuración que realice no surtirán efecto hasta que la distribución no se haya propagado alas ubicaciones de borde de AWS.

Para actualizar distribuciones de CloudFront (Consola)

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

Versión de API 2016-09-2953

Amazon CloudFront Guía para desarrolladoresEliminar una distribución

2. Seleccione el ID de una distribución. La lista incluye todas las distribuciones asociadas a la cuenta deAWS que utilizó para iniciar sesión en la consola de CloudFront.

3. Para ver o editar la configuración de una distribución, elija la pestaña Distribution Settings(Configuración de distribución).

4. Para realizar actualizaciones, lleve a cabo alguna de las siguientes operaciones:

a. En la configuración de una distribución RTMP, elija Edit (Editar) y, a continuación, actualice losvalores.

Para obtener más información acerca de los campos, consulte Valores que especifica al crear oactualizar una distribución RTMP (p. 274).

b. En la configuración de una distribución , para actualizar la configuración general, elija Edit (Editar).De lo contrario, elija la pestaña para ver o actualizar los ajustes que desee: Origins (Orígenes) oBehaviors (Comportamientos).

5. Realice las actualizaciones y, a continuación, para guardar los cambios, elija Yes, Edit (Sí, Editar).Para obtener información acerca de los campos, consulte los siguientes temas:

• Configuración general Detalles de la distribución (p. 45):• Configuración del origen Configuración de origen (p. 32):• Configuración del comportamiento de la caché Configuración del comportamiento de la

caché (p. 37):6. Si desea eliminar un origen de la distribución, haga lo siguiente:

a. Elija Behaviors (Comportamientos) y asegúrese de que ha movido a otro origen loscomportamientos predeterminados de la caché asociados con el origen.

b. Elija Origins (Orígenes) y, a continuación, seleccione un origen.c. Elija Eliminar.

Al guardar los cambios en la configuración de su distribución, CloudFront comienza a propagar los cambiosen todas las ubicaciones de borde. Hasta que la configuración se actualiza en una ubicación de borde,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 elcontenido 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 lapropagación, el estado de la distribución cambia de InProgress a Deployed. Aunque CloudFront propagalos cambios, lamentablemente no podemos determinar si una ubicación de borde concreta está ofreciendosu contenido en función de la configuración anterior o de la nueva.

Eliminar una distribuciónSi ya no desea utilizar una distribución, siga este procedimiento para eliminarla desde la consola deCloudFront.

También puede eliminar una distribución con la API de CloudFront:

• Para eliminar una distribución, consulte DeleteDistribution en la Amazon CloudFront API Reference.• Para eliminar una distribución de RTMP, consulte DeleteStreaming Distribution en la Amazon CloudFront

API Reference.

Note

CloudFront le permite crear hasta 200 distribuciones web y 100 distribuciones RTMP utilizandouna cuenta de AWS.

Versión de API 2016-09-2954

Amazon CloudFront Guía para desarrolladoresUso de orígenes diferentes

Para eliminar una distribución de CloudFront

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. En el panel derecho de la consola de CloudFront, busque la distribución que desea eliminar.3. Si el valor de la columna State es Disabled, vaya al paso 7.

Si el valor de State es Enabled y el valor de Status es Deployed, continúe con el paso 4 paradeshabilitar la distribución antes de eliminarla.

Si el valor de State es Enabled y el valor de Status es InProgress, espere hasta que Status cambie aDeployed. 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, marque la casilla de la distribución que deseaeliminar.

5. Haga clic en Disabled para deshabilitar la distribución y, a continuación, haga clic en Yes, Disable paraconfirmar la acción. Después, haga clic en Close.

6. El valor de la columna State cambia inmediatamente a Disabled. Espere hasta que el valor de lacolumna Status cambie a Deployed.

7. Marque la casilla de la distribución que desea eliminar.8. Haga clic en Delete y en Yes, Delete para confirmar la acción. Después, haga clic en Close.

Usar orígenes de Amazon S3, canales deAWS Elemental MediaPackage y orígenespersonalizados para distribuciones web

Al crear una distribución , debe especificar dónde envía CloudFront las solicitudes de los archivos.CloudFront admite el uso de varios recursos de AWS como orígenes. Por ejemplo, puede especificarun bucket de Amazon S3 o un contenedor de AWS Elemental MediaStore, un canal de AWS ElementalMediaPackage o un origen personalizado, como una instancia Amazon EC2 o su propio servidor webHTTP.

Temas• Usar buckets de Amazon S3 como origen (p. 55)• Uso de buckets de Amazon S3 configurados como puntos de enlace de sitio web para su

origen (p. 56)• Uso de un contenedor de AWS Elemental MediaStore o un canal de AWS Elemental MediaPackage

como origen (p. 57)• Usar Amazon EC2 u otros orígenes personalizados (p. 57)• Añadir CloudFront si distribuye contenido desde Amazon S3 (p. 58)• Cambiar un bucket de Amazon S3 de región (p. 60)

Usar buckets de Amazon S3 como origenAl utilizar Amazon S3 como un origen para su distribución, deberá colocar todos los objetos que quieraque CloudFront entregue en un bucket de Amazon S3. Puede utilizar cualquier método admitido porAmazon S3 para obtener sus objetos en Amazon S3, por ejemplo, la consola o la API de Amazon S3,o una herramienta de terceros. Puede crear una jerarquía en su bucket para almacenar los objetos, delmismo modo que lo haría con cualquier otro bucket de Amazon S3.

Versión de API 2016-09-2955

Amazon CloudFront Guía para desarrolladoresUso de buckets de Amazon S3 configurados como

puntos de enlace de sitio web para su origen

El uso de un bucket de Amazon S3 ya existente como su servidor de origen de CloudFront no cambia elbucket en absoluto. Puede utilizarlo como lo haría normalmente para almacenar y obtener acceso a losobjetos de Amazon S3 a precios estándar de Amazon S3. Se le cobrarán los cargos habituales de AmazonS3 por almacenar los objetos en el bucket. Para obtener más información acerca de los cargos por uso deCloudFront, consulte Informes de CloudFront (p. 344).

Important

Para que su bucket pueda funcionar con CloudFront, el nombre debe cumplir los requisitos denomenclatura de DNS. Para obtener más información, visite la sección Bucket Restrictions andLimitations en la Guía para desarrolladores de Amazon Simple Storage Service.

Al especificar el bucket de Amazon S3 del que desea que CloudFront obtenga objetos, en general, utilice elsiguiente formato:

bucket-name.s3.amazonaws.com

Si el bucket se encuentra en la región EE. UU. Estándar y desea que Amazon S3 direccione las solicitudesa una instalación en el norte de Virginia, utilice el siguiente formato:

bucket-name.s3-external-1.amazonaws.com

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

• Configure CloudFront para comunicarse con su bucket de Amazon S3 a través de SSL. Para obtenermás información, consulte Usar HTTPS con CloudFront (p. 85).

• Utilice una identidad de acceso de origen para solicitar que los usuarios obtengan acceso al contenidoutilizando 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 deorigen (p. 110).

• Actualice el contenido de su bucket mediante el envío de las solicitudes POST y PUT a CloudFront. Paraobtener más información, consulte Métodos HTTP (p. 231) en el tema Cómo CloudFront procesa yreenvía solicitudes a su servidor de origen de Amazon S3 (p. 230).

No especificar el bucket utilizando los siguientes formatos:

• El tipo de ruta de Amazon S3, s3.amazonaws.com/bucket-name.• El CNAME de Amazon S3, de haberlo.

Uso de buckets de Amazon S3 configurados comopuntos de enlace de sitio web para su origenPuede configurar un bucket de Amazon S3 que está configurado como punto de enlace de sitio web comoorigen personalizado con CloudFront.

• Al configurar su distribución de CloudFront, para el origen, escriba el punto de enlace de alojamiento desitio web estático de Amazon S3 para el bucket. Este valor aparecerá en la consola de Amazon S3 en lapágina de Properties, en Static Website Hosting. Por ejemplo:

http://bucket-name.s3-website-us-west-2.amazonaws.com

Para obtener más información acerca de la especificación de puntos de enlace de sitio web estáticos deAmazon S3, consulte Puntos de enlace de sitio web en la documentación de Amazon S3.

Versión de API 2016-09-2956

Amazon CloudFront Guía para desarrolladoresUso de un contenedor de AWS Elemental MediaStore oun canal de AWS Elemental MediaPackage como origen

Al especificar el nombre del bucket en este formato como origen, puede utilizar redireccionamientosy documentos de error personalizados de Amazon S3. Para obtener más información acerca de lascaracterísticas de Amazon S3 consulte la documentación sobre Amazon S3. (CloudFront también ofrecepáginas de error personalizadas. Para obtener más información, consulte Creación de una página de errorpersonalizada para códigos de estado HTTP específicos (p. 256).)

Utilizando un bucket de Amazon S3 como servidor de origen de CloudFront no cambia en modo alguno.Puede seguir utilizándolo como lo haría normalmente y se le cobrarán los cargos normales de AmazonS3. Para obtener más información acerca de los cargos por uso de CloudFront, consulte Informes deCloudFront (p. 344).

Note

Si utiliza la API de CloudFront para crear su distribución con un bucket de Amazon S3 configuradocomo punto de enlace de un sitio web, debe configurarlo mediante CustomOriginConfig,aunque el sitio web esté alojado en un bucket de Amazon S3. Para obtener más informaciónacerca de cómo crear distribuciones con la API de CloudFront, consulte CreateDistribution en laAmazon CloudFront API Reference.

Uso de un contenedor de AWS Elemental MediaStoreo un canal de AWS Elemental MediaPackage comoorigenPara transmitir vídeo con CloudFront, puede configurar un bucket de Amazon S3 como un contenedor deAWS Elemental MediaStore o crear un canal y puntos de enlace con AWS Elemental MediaPackage. Acontinuación, deberá crear y configurar una distribución en CloudFront para transmitir el vídeo.

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. 266)• Distribución de vídeo en directo formateado con AWS Elemental MediaPackage (p. 267)

Usar Amazon EC2 u otros orígenes personalizadosUn origen personalizado es un servidor HTTP, como por ejemplo, un servidor web. El servidor HTTP puedeser una instancia Amazon EC2 o un servidor HTTP que usted administre de forma privada. Un origen deAmazon 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 delservidor, junto con los puertos HTTP y HTTPS y el protocolo que desee que utilice CloudFront a la hora derecuperar los objetos del origen.

La mayoría de las características de CloudFront se admiten al utilizar un origen personalizado, excepto enlos siguientes casos:

• Distribuciones RTMP: no compatibles.• 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 mantenerseaccesible públicamente. Para obtener más información, consulte Distribución de contenido privado conURL firmadas y cookies firmadas (p. 126).

Siga estas directrices para utilizar instancias Amazon EC2 y otros orígenes personalizados conCloudFront.

Versión de API 2016-09-2957

Amazon CloudFront Guía para desarrolladoresAñadir CloudFront si distribuye contenido desde Amazon S3

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

• Registre las entradas del encabezado X-Amz-Cf-Id en todos los servidores; CloudFront requiere estainformació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, paralos registros de acceso y los informes. Además, si monitorea la actividad de CloudFront utilizando lasmé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 Utilizar un servidor HTTP para contenido privado (p. 128).• 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. 229).

Si utiliza Amazon Elastic Compute Cloud para sus orígenes personalizados, le recomendamos que haga losiguiente:

1. Utilice una Imagen de máquina de Amazon que instale el software de un servidor webautomá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 entre variasinstancias Amazon EC2 y para aislar su aplicación de cambios en instancias Amazon EC2. Porejemplo, si utiliza un balanceador de carga, puede añadir y eliminar instancias Amazon EC2 sincambiar su aplicación. Para obtener más información, consulte la documentación de Elastic LoadBalancing.

3. Al crear su distribución de CloudFront, especifique la URL del balanceador de carga para el nombrede dominio del servidor de origen. Para obtener más información, consulte Creación de unadistribución (p. 29).

Añadir CloudFront si distribuye contenido desdeAmazon S3Si almacena sus objetos en un bucket de Amazon S3, puede permitir que los usuarios obtengan accesoa sus objetos directamente desde S3 o puede configurar CloudFront para obtener sus objetos desde S3 ydistribuirlos a los usuarios.

Note

Para obtener más información sobre el uso de buckets de Amazon S3 para su origen conCloudFront, incluido cuando tiene un bucket de Amazon S3 configurado como punto de enlacede sitio web, consulte Usar orígenes de Amazon S3, canales de AWS Elemental MediaPackage yorígenes personalizados para distribuciones web (p. 55).

Usar CloudFront puede ser más rentable si sus usuarios obtienen acceso a sus objetos frecuentementeporque si el uso es elevado, el precio de transferencia de datos de CloudFront es menor que el de AmazonS3. Además, las descargas son más rápidas con CloudFront que con solo Amazon S3 porque sus objetosse almacenan más cerca de sus usuarios.

Note

Si desea que CloudFront respete la configuración de uso compartido de recursos entre orígenesde Amazon S3, configure CloudFront para que reenvíe el encabezado Origin a Amazon S3.

Versión de API 2016-09-2958

Amazon CloudFront Guía para desarrolladoresAñadir CloudFront si distribuye contenido desde Amazon S3

Para obtener más información, consulte Almacenamiento en caché de contenido en función deencabezados de solicitud (p. 201).

Si actualmente distribuye contenido directamente desde su bucket de Amazon S3 con su propio nombrede dominio (como example.com) en lugar del nombre de dominio de su bucket de Amazon S3 (comoMyAWSBucket.s3.amazonaws.com), puede añadir CloudFront sin interrupciones con el siguienteprocedimiento.

Para añadir CloudFront si distribuye contenido de Amazon S3

1. Cree una distribución de CloudFront utilizando el procedimiento descrito en el tema aplicable:

• Pasos para crear una distribución (Información general) (p. 28)• Lista de tareas para transmitir archivos multimedia mediante RTMP (p. 273)

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

Para que su bucket pueda funcionar con CloudFront, el nombre debe cumplir los requisitos denomenclatura de DNS. Para obtener más información, consulte la sección Bucket Restrictionsand Limitations en la guía Guía para desarrolladores de Amazon Simple Storage Service.

Si está utilizando un CNAME con Amazon S3, especifique también el CNAME de su distribución.2. Cree una página web de prueba que contenga enlaces a objetos legibles públicamente en su

bucket de Amazon S3 y pruebe dichos enlaces. Para esta prueba inicial, utilice el nombre dedominio 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óndel formato de URL para archivos en CloudFront (p. 72).

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 elnombre del bucket (por ejemplo, myawsbucket.s3.amazonaws.com). Para seguir utilizando su nombrede dominio para hacer referencia a objetos en lugar de usar el nombre de dominio de CloudFront desu distribución (por ejemplo, d111111abcdef8.cloudfront.net), debe actualizar la configuración con suproveedor de servicios de DNS.

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

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

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

http://myawsbucket.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 deregistros de recursos de CNAME de su dominio. Esta registro de CNAME actualizado comenzará aredirigir consultas de DNS de su dominio al nombre de dominio de CloudFront de su distribución. Paraobtener 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 recursosde CNAME o un conjunto de registros de recursos de alias. Para obtener información acercade la edición de conjuntos de registros de recursos, consulte Editing Resource Record Sets.

Versión de API 2016-09-2959

Amazon CloudFront Guía para desarrolladoresCambiar un bucket de Amazon S3 de región

Para obtener más información acerca de los conjuntos de registros de recursos de alias,consulte Choosing Between Alias and Non-Alias Resource Record Sets. Ambos temas seencuentran 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 URLpersonalizadas para archivos añadiendo nombres de dominio alternativos (CNAME) (p. 60).

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

Cambiar un bucket de Amazon S3 de regiónSi utiliza Amazon S3 como origen de una distribución de CloudFront y cambia el bucket de región,CloudFront puede tardar hasta una hora en actualizar sus registros para incluir el cambio de región si lasdos condiciones a continuación se cumplen:

• 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 utilizapara solicitar los objetos de su bucket. Para obtener más información acerca de OAI, consulte Restriccióndel acceso a contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 110). Para veruna lista de las regiones de Amazon S3 y las versiones de firma que admiten, consulte Amazon SimpleStorage Service (Amazon S3), en el capítulo "Regiones y puntos de conexión" de la Referencia general deAmazon Web Services.

Para forzar una actualización más rápida de los registros de CloudFront, puede actualizar su distribuciónde CloudFront, por ejemplo, al actualizar el campo Comment en la pestaña General de la consola deCloudFront. Al actualizar una distribución, CloudFront comprueba inmediatamente la región en la que seencuentra su bucket; la propagación del cambio a todas las ubicaciones de borde no debería tomar más de15 minutos.

Uso de URL personalizadas para archivosañadiendo nombres de dominio alternativos(CNAME)

En CloudFront, un nombre de dominio alternativo, también conocido como un CNAME, le permite utilizarsu propio nombre de dominio (por ejemplo, www.example.com) para enlaces a sus archivos en lugar deutilizar el nombre de dominio que CloudFront asigna a su distribución. Ambas distribuciones, RTMP y web,admiten nombres de dominio alternativos.

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:

http://d111111abcdef8.cloudfront.net/images/image.jpg

Versión de API 2016-09-2960

Amazon CloudFront Guía para desarrolladoresAñadir un nombre de dominio alternativo

Si desea utilizar su propio nombre de dominio, como por ejemplo www.example.com, en lugar del nombrede dominio cloudfront.net que CloudFront asigna a su distribución, puede añadir un nombre dedominio alternativo a la distribución para www.example.com. Puede utilizar la siguiente URL para /images/image.jpg:

http://www.example.com/images/image.jpg

Temas• Añadir un nombre de dominio alternativo (p. 61)• Mover un nombre de dominio alternativo a una distribución de CloudFront diferente (p. 63)• Eliminar un nombre de dominio alternativo (p. 66)• Utilizar el comodín * en nombres de dominio alternativos (p. 67)• Restricciones de uso de nombres de dominio alternativos (p. 68)

Añadir un nombre de dominio alternativoLa siguiente lista de tareas describe el proceso de utilización de la consola de CloudFront para agregarun nombre de dominio alternativo a su distribución para que pueda utilizar su propio nombre de dominioen lugar del nombre de dominio de CloudFront asociado automáticamente a su distribución. Para obtenerinformación acerca de cómo actualizar su distribución con la API de CloudFront, consulte Trabajar condistribuciones (p. 26).

Note

Si desea que los espectadores usen HTTPS con su nombre de dominio alternativo, consulte Usarnombres de dominio alternativos y HTTPS (p. 95).

Agregar un nombre de dominio alternativo (consola)

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Elija la ID de la distribución que desea actualizar.3. En la pestaña General, seleccione Edit.4. Actualice los siguientes valores:

Nombres de dominio alternativos (CNAME)

Agregue sus nombres de dominio alternativos. Separe los nombres de dominio con comas oescriba uno por línea.

Certificado SSL (solo para distribuciones web)

Elija una opción en función de si desea que los espectadores utilicen HTTPS para obtener accesoa sus objetos:• No utilizar HTTPS: elija Default CloudFront Certificate.• Utilizar HTTPS: elija Custom SSL Certificate y seleccione un certificado de la lista. La lista

puede incluir certificados aprovisionados por AWS Certificate Manager (ACM), certificadosadquiridos en otra autoridad de certificados y cargados en ACM y certificados adquiridos en otraautoridad de certificados y cargados en el almacén de certificados de IAM.

Si ha cargado un certificado al almacén de certificados de IAM pero no aparece en la lista,revise el procedimiento Importar un certificado SSL/TLS (p. 103) para confirmar que elcertificado se ha cargado correctamente.

Si elige esta opción, le recomendamos que utilice solo un nombre de dominio alternativo enlas URL de sus objetos (https://example.com/logo.jpg). Si utiliza el nombre de dominio de la

Versión de API 2016-09-2961

Amazon CloudFront Guía para desarrolladoresAñadir un nombre de dominio alternativo

distribución de CloudFront (https://d111111abcdef8.cloudfront.net/logo.jpg) y el espectadoradmite SNI, CloudFront se comportará normalmente. Sin embargo, si un espectador noadmite SNI, presenta uno de los siguientes comportamientos, en función del valor de ClientsSupported:• All Clients: Si el espectador 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 SSL/TLS.• Only Clients that Support Server Name Indication (SNI): CloudFront interrumpe la conexión

con el espectador sin devolver el objeto.Clientes compatibles (solo para distribuciones web)

Elija las opciones aplicables:• All Clients: CloudFront ofrece su contenido HTTPS mediante direcciones IP dedicadas. Si

selecciona esta opción, se le cobrarán los cargos adicionales al asociar su certificado SSL/TLSa una distribución habilitada. Para obtener más información, consulte http://aws.amazon.com/cloudfront/pricing.

• Only Clients that Support Server Name Indication (SNI): navegadores antiguos u otros clientesque no admitan SNI deben usar otro método para obtener acceso a su contenido.

Para obtener más información, consulte Decidir cómo CloudFront atiende solicitudesHTTPS (p. 96).

5. Seleccione Yes, Edit.6. En la pestaña General de la distribución, confirme que Distribution Status ha cambiado a Deployed. Si

intenta utilizar un nombre de dominio alternativo antes de que las actualizaciones de la distribución sehayan 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 (por ejemplo,example.com), al nombre de dominio de CloudFront de su distribución, (por ejemplo,d111111abcdef8.cloudfront.net). El método que utilice dependerá de si está utilizando Route 53 comoproveedor de servicios de DNS para el dominio.

Note

Si el registro de DNS ya apunta a una distribución que no es la que está creando, nopodrá agregar el nombre de dominio alternativo a la distribución sin actualizar el DNS.Para obtener más información, consulte Restricciones de uso de nombres de dominioalternativos (p. 68).

Route 53

Cree un conjunto de registros de recursos de alias. Si cuenta con uno, no tendrá que pagar porlas consultas de Route 53. Además, puede crear un conjunto de registros de recursos de aliasdel nombre de dominio raíz (example.com) cuyo DNS no permita CNAME. Para obtener másinformación, consulte Routing Queries to an Amazon CloudFront Distribution en la Guía paradesarrolladores de Amazon Route 53.

Otro proveedor de servicios de DNS

Utilice el método proporcionado por el proveedor de servicios de DNS para añadir un conjuntode registros de recursos de CNAME a la zona hospedada de su dominio. Este nuevo conjuntode registros de recursos de CNAME dirigirá las consultas 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 suproveedor de servicios de DNS.

Important

Si ya tiene un registro de CNAME para su nombre de dominio, actualice dicho conjuntode registros de recursos o sustitúyalo por uno nuevo que apunte al nombre de dominiode CloudFront de su distribución.

Versión de API 2016-09-2962

Amazon CloudFront Guía para desarrolladoresMover un nombre de dominio alternativo

a una distribución de CloudFront diferente

Confirme también que su conjunto de registros de recursos de CNAME apunte al nombrede dominio de su distribución y no a uno de sus servidores de origen.

8. Con dig o una herramienta similar, confirme que el conjunto de registros de recursos que ha creadoen el paso 7 apunta al nombre de dominio de su distribución. Para obtener más información acerca dedig, visite http://www.kloth.net/services/dig.php.

El siguiente ejemplo muestra una solicitud de dig en un dominio llamado images.example.com y laparte pertinente de la respuesta.

[prompt]--> dig images.example.com

; <<> DiG 9.3.3rc2 <<> images.example.com;; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:;images.example.com. IN A

;; ANSWER SECTION:images.example.com. 10800 IN CNAME d111111abcdef8.cloudfront.net.......

La línea de la sección ANSWER SECTION muestra un conjunto de registros de recursos de CNAMEque dirige las consultas de images.example.com al nombre de dominio de distribución de CloudFrontd111111abcdef8.cloudfront.net. El conjunto de registros de recursos de CNAME está configuradocorrectamente si el nombre a la derecha de CNAME es el nombre de dominio de su distribución deCloudFront. Si es cualquier otro valor, por ejemplo, el nombre de dominio de su bucket de AmazonS3, el conjunto de registros de recursos de CNAME está configurado de forma incorrecta. En esecaso, vuelva al paso 4 y corrija el registro de CNAME para que apunte al nombre de dominio de sudistribución.

9. Pruebe el nombre de dominio alternativo creando algunos enlaces de prueba que utilicen su nombrede dominio en la URL en lugar del nombre de dominio de CloudFront de su distribución.

10. En su aplicación, cambie los enlaces de sus objetos para utilizar su nombre de dominio alternativo enlugar del nombre de dominio de su distribución de CloudFront.

Mover un nombre de dominio alternativo a unadistribución de CloudFront diferenteSi desea mover un nombre de dominio alternativo desde una distribución de CloudFront a otra distribución,los pasos que debe realizar dependen del nombre de dominio que desee mover:

• Para un subdominio como marketing.example.com, puede mover el dominio usted mismo. Paraconocer los pasos en detalle, consulte Mueva un nombre de subdominio, como marketing.example.com,a otra distribución (p. 64).

• Para un dominio como example.com (un dominio de segundo nivel), debe trabajar con AWS Supportpara mover el dominio a otra distribución Mover un nombre de dominio, como example.com, a otradistribución (p. 65).

Versión de API 2016-09-2963

Amazon CloudFront Guía para desarrolladoresMover un nombre de dominio alternativo

a una distribución de CloudFront diferente

Mueva un nombre de subdominio, como marketing.example.com,a otra distribuciónSiga estos pasos para mover el nombre de subdominio.

Para mover un nombre de subdominio a una nueva distribución

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Si no tiene una nueva distribución a la que mover el nombre de dominio, cree una. Para obtener másinformación, consulte Creación de una distribución (p. 29).

3. Añada a la distribución un nombre de dominio alternativo que incluya un comodín para el conjuntode registros de alias o registro CNAME. Por ejemplo, si el nombre de subdominio que desea movera la nueva distribución es marketing.example.com, añada el nombre de dominio alternativo*.example.com. Para obtener más información, consulte Utilizar el comodín * en nombres dedominio alternativos (p. 67).

Note

No se puede añadir un comodín a un nombre de dominio de nivel superior, como por ejemplo*.com, de modo que si desea mover un nombre de dominio como example.com a unanueva distribución, consulte Mover un nombre de dominio, como example.com, a otradistribución (p. 65).

4. Actualice la configuración de DNS de su subdominio para que apunte a la nueva distribución.Por ejemplo, actualizaría el servicio DNS para el subdominio marketing.example.compara dirigir tráfico al nombre de dominio de CloudFront para su distribuciónd111111abcdef8.cloudfront.net.

Para actualizar la configuración, realice una de las siguientes acciones:

• Si utiliza Route 53, actualice los registros de alias o registros CNAME, en función de cómo hayaconfigurado el nombre de dominio alternativo originalmente. Para obtener más información, consulteEdición de registros en la Guía para desarrolladores de Amazon Route 53.

• Si utiliza otro proveedor de servicios de DNS, utilice el método proporcionado por el proveedor delservicio DNS para actualizar el registro CNAME que dirige el tráfico hacia CloudFront. Para obtenermás información, consulte la documentación de su proveedor de servicios de DNS.

5. Con dig o una herramienta similar, confirme que el conjunto de registros de recursos que ha creadoen el paso 4 apunta al nombre de dominio de su distribución. Para obtener más información acerca dedig, visite http://www.kloth.net/services/dig.php.

El siguiente ejemplo muestra una solicitud de dig en un dominio llamado images.example.com y laparte pertinente de la respuesta.

[prompt]--> dig images.example.com

; <<> DiG 9.3.3rc2 <<> images.example.com;; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:;images.example.com. IN A

;; ANSWER SECTION:images.example.com. 10800 IN CNAME d111111abcdef8.cloudfront.net....

Versión de API 2016-09-2964

Amazon CloudFront Guía para desarrolladoresMover un nombre de dominio alternativo

a una distribución de CloudFront diferente

...

La línea de la sección ANSWER SECTION muestra un conjunto de registros de recursos de CNAMEque dirige las consultas de images.example.com al nombre de dominio de distribución de CloudFrontd111111abcdef8.cloudfront.net. El conjunto de registros de recursos de CNAME está configuradocorrectamente si el nombre a la derecha de CNAME es el nombre de dominio de su distribución deCloudFront. Si es cualquier otro valor, por ejemplo, el nombre de dominio de su bucket de AmazonS3, el conjunto de registros de recursos de CNAME está configurado de forma incorrecta. En esecaso, vuelva al paso 4 y corrija el registro de CNAME para que apunte al nombre de dominio de sudistribución.

6. Elimine el CNAME de la distribución existente y cámbielo a la nueva distribución de CloudFront.Por ejemplo, mueva marketing.example.com a una nueva distribución a la que, de formapredeterminada, se apunte con algo similar a d111111abcdef8.cloudfront.net.

7. Pruebe el nombre de dominio alternativo creando algunos enlaces de prueba que utilicen su nombrede dominio en la URL en lugar del nombre de dominio de CloudFront de su distribución.

8. Si ya no utiliza la distribución original, elimínela. Para obtener más información, consulte Eliminar unadistribución (p. 54).

Mover un nombre de dominio, como example.com, a otradistribuciónPara nombres de dominio de segundo nivel, como example.com, debe ponerse en contacto con AWSSupport para mover el nombre de dominio a otra distribución de CloudFront. Los pasos adicionales sonnecesarios, ya que mover un dominio usted mismo, tal y como se ha descrito en el procedimiento anterior,requiere la configuración de política de direccionamiento de dominio utilizando un comodín para una partedel nombre de dominio. Para los dominios de segundo nivel, para este paso, tendrá que configurar lapolítica de direccionamiento como *.com, lo que no está permitido.

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. 29).

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 lacreación de un registro TXT para su dominio en su proveedor de servicios de DNS. Esto ayuda a impedirque 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.

A continuación, se muestran los pasos concretos que se deben dar.

Paso 1: Crear un registro TXT para el dominio

1. Inicie sesión en el sitio web de su proveedor de servicio de DNS.

Si su proveedor de servicios es Route 53, inicie sesión en la consola de Route 53.2. Cree un registro TXT para su dominio como el siguiente:

<nombre de dominio> TXT <nombre de distribución de CloudFront>

Por ejemplo: example.com TXT d123.cloudfront.net

• 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 quecree el registro TXT por usted.

Versión de API 2016-09-2965

Amazon CloudFront Guía para desarrolladoresEliminar un nombre de dominio alternativo

Tip

Si su proveedor de servicios no permite un nombre TXT para un dominio que tenga lamisma información que un registro CNAME, considere la posibilidad de crear un registroTXT que utilice su nombre de dominio con un guion bajo (_) antepuesto. Para ver unejemplo, consulte el siguiente artículo de Knowledge Center: Resolve CNAME AlreadyExists Error.

3. Si su proveedor de servicios de DNS es Route 53, utilice los siguientes pasos para crear un registroTXT para demostrar la propiedad del dominio:

a. En la página Hosted Zones, haga doble clic en la fila de la zona hospedada en la que desea editarregistros.

b. Luego, Create Record Set.c. Escriba los siguientes valores:

• Name (Nombre): el nombre de dominio que desea mover a una nueva distribución deCloudFront.

• Type: TXT• Alias: no• TTL: 60 segundos• Value (Valor): el nombre de la distribución de CloudFront a la que desea agregar este nombre

de dominio, como, por ejemplo, d123.cloudfront.net.• Routing policy (Política de direccionamiento): Simple

d. Seleccione Create.

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 espropietario 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 TXTque creó para su dominio. Tenga en cuenta que los registros que cree en su proveedor de DNSpueden tardar un tiempo (hasta varios días) en propagarse a través del sistema de DNS.

Eliminar un nombre de dominio alternativoSi desea dejar de direccionar tráfico para un dominio o subdominio a una distribución de CloudFront, sigalos pasos de esta sección para actualizar la configuración de DNS y la distribución de CloudFront.

Es importante que elimine los nombres de dominio alternativos desde la distribución, además de actualizarsu configuración de DNS. Esto ayuda a evitar problemas más tarde si desea asociar el nombre dedominio con otra distribución de CloudFront. Si un nombre de dominio alternativo ya está asociado a unadistribució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 aotra, siga los pasos que se indican en Mover un nombre de dominio alternativo a una distribuciónde CloudFront diferente (p. 63). Si sigue los pasos que se indican aquí (para eliminar undominio) y, a continuación, añade el dominio a otra distribución, habrá un periodo de tiempodurante 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.

Versión de API 2016-09-2966

Amazon CloudFront Guía para desarrolladoresUtilizar el comodín * en nombres de dominio alternativos

Para eliminar un nombre de dominio alternativo de una distribución

1. Para empezar, dirija el tráfico de Internet para su dominio a otro recurso que no sea su distribución deCloudFront, como, por ejemplo, un balanceador de carga de Elastic Load Balancing. O bien, puedeeliminar 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ásinformació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 delservicio 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 hayanpropagado y los servicios de resolución de nombres DNS redirigen el tráfico al nuevo recurso. Puedecomprobar cuando se completa esto mediante la creación de algunos enlaces de prueba que utilicensu dominio en la URL.

3. Ahora, 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, a continuación, actualice su distribución de CloudFrontpara eliminar el nombre de dominio haciendo lo siguiente:

a. Elija la ID de la distribución que desea actualizar.b. En la pestaña General, seleccione Edit.c. En Alternate Domain Names (CNAMEs) (Nombres de dominio alternativos (CNAMEs)), elimine

los nombres de dominio alternativos (o nombres de dominio) que ya no desee utilizar para sudistribución.

d. Seleccione Yes, Edit.

Utilizar el comodín * en nombres de dominioalternativosAl añadir nombres de dominio alternativos, puede utilizar el comodín * al principio de un nombrede dominio en lugar de añadir subdominios individualmente. Por ejemplo, con un nombre dedominio alternativo *.example.com, puede utilizar cualquier nombre de dominio que termine enexample.com en las URL de sus objetos, como www.example.com, product-name.example.com ymarketing.product-name.example.com. El nombre de un objeto es el mismo, independientementedel nombre de dominio, por ejemplo:

www.example.com/images/image.jpg

product-name.example.com/images/image.jpg

marketing.product-name.example.com/images/image.jpg

El nombre de dominio alternativo debe empezar por un asterisco y un punto (*.). Un comodín no puedesustituir parte de un nombre de subdominio como *domain.example.com, ni un subdominio en mitad deun nombre de dominio, como subdomain.*.example.com.

Un nombre de dominio alternativo comodín, como *.example.com, puede incluir un nombre de dominioalternativo, como example.com, siempre y cuando ambos estén en la misma distribución de CloudFront oen distribuciones creadas con la misma cuenta de AWS.

Versión de API 2016-09-2967

Amazon CloudFront Guía para desarrolladoresRestricciones de uso de nombres de dominio alternativos

Restricciones de uso de nombres de dominioalternativosTome en cuenta las siguientes restricciones de uso de nombres de dominio alternativos:

Los CNAME deben escribirse en minúsculas

Todos los CNAME deben escribirse por completo en minúscula para ser válidos.Cantidad máxima de nombres de dominio alternativos

Para consultar el límite actual de la cantidad de nombres de dominio alternativos que puede añadira una distribución o para solicitar una ampliación del límite, consulte Límites generales de lasdistribuciones web (p. 414).

Permiso para cambiar la configuración de DNS

Si está agregando los nombres de dominio alternativos a su distribución, debe crear los registrosCNAME para dirigir las consultas de DNS de los nombres de dominio a su distribución de CloudFront.Por lo tanto, debe tener permiso para crear registros CNAME con el proveedor de servicios de DNSde los dominios que está usando. 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 superpuestos y duplicados

No puede añadir un nombre de dominio alternativo a una distribución de CloudFront si el nombrede dominio alternativo ya existe en otra distribución de CloudFront, incluso si su cuenta de AWS espropietaria de la otra distribución.

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 superpuestos pueden estar en lamisma distribución o en las distribuciones independientes, siempre y cuando las distribuciones sehayan creado en la misma cuenta de AWS.

Nombres de dominio alternativos que ya apuntan a una distribución

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 suproveedor 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 encontacto con su proveedor de DNS para eliminarlo. A continuación, cree el registro de DNS correctopara su distribución, de acuerdo con los pasos que se indican para agregar o cambiar el nombre dedominio alternativo de una distribución. Para obtener más información, consulte Agregar un nombre dedominio alternativo (consola) (p. 61) o Mover un nombre de dominio alternativo a una distribuciónde CloudFront diferente (p. 63).

Agregar un nombre de dominio alternativo en el nodo principal (ápex de zona) para un dominio

Al añadir un nombre de dominio alternativo a una distribución, normalmente debe crear un registroCNAME en su configuración de DNS para dirigir las consultas de DNS del nombre de dominio a sudistribución de CloudFront. Sin embargo, no puede crear un registro CNAME para el nodo superiorde un espacio de nombres de DNS, también conocido como ápex de zona; el protocolo de DNS no lopermite. 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 parawww.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

Versión de API 2016-09-2968

Amazon CloudFront Guía para desarrolladoresRestricciones de uso de nombres de dominio alternativos

recursos de alias para un nombre de dominio en el nodo principal (example.com). Además, al usar unconjunto 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 dirigirel tráfico IPv4 (un registro A) y otro para dirigir el tráfico IPv6 (un registro AAAA). Paraobtener más información, consulte Habilitar IPv6 (p. 49) en el tema Valores que debenespecificarse al crear o actualizar una distribución (p. 30).

Para obtener más información, consulte Routing Queries to an Amazon CloudFront Distribution en laGuía para desarrolladores de Amazon Route 53.

Nombres de dominio alternativos y HTTPS

Si desea que los espectadores utilicen HTTPS con un nombre de dominio alternativo, se necesitanajustes adicionales. Para obtener más información, consulte Usar nombres de dominio alternativos yHTTPS (p. 95).

Versión de API 2016-09-2969

Amazon CloudFront Guía para desarrolladoresAñadir y acceder al contenido

Añadir, eliminar o sustituir contenidoque distribuye CloudFront

En esta sección se explica cómo asegurarse de que CloudFront pueda acceder al contenido que deseadistribuir a los espectadores, cómo especificar los objetos en su sitio web o en su aplicación y cómo quitaro reemplazar contenido.

Temas• Añadir y acceder al contenido que distribuye CloudFront (p. 70)• Actualización de contenido existente con una distribución de CloudFront (p. 70)• Eliminación de contenido para que CloudFront no lo distribuya (p. 72)• Personalización del formato de URL para archivos en CloudFront (p. 72)• Invalidar archivos (p. 73)• Ofrecer archivos comprimidos (p. 81)

Añadir y acceder al contenido que distribuyeCloudFront

Si desea que CloudFront distribuya contenido (objetos), añada archivos a uno de los orígenes que hayaespecificado para la distribución y exponga un enlace de CloudFront a los archivos. Una ubicación deborde de CloudFront no recupera los nuevos archivos desde un origen hasta que la ubicación de borderecibe solicitudes de espectadores para ellos. Para obtener más información, consulte Cómo CloudFrontentrega contenido (p. 5).

Cuando añade un archivo que desee que CloudFront distribuya, asegúrese de añadirlo a uno de losbuckets de Amazon S3 especificados en la distribución o, en el caso de un origen personalizado, a undirectorio en el dominio especificado. Confirme también que el patrón de ruta en el comportamiento de lacaché 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 disponede ningún otro comportamiento de caché configurado para reenviar solicitudes a dicho origen, CloudFrontsolo reenviará archivos *.html. En este caso, por ejemplo, CloudFront nunca distribuirá archivos .jpg quecarga 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 unarchivo en su origen, le recomendamos que establezca el campo de encabezado Content-Type delmismo.

Actualización de contenido existente con unadistribución de CloudFront

Hay dos formas de actualizar el contenido existente que CloudFront tiene configurado para distribuirle:

• Actualizar los archivos que usen el mismo nombre• Actualizar utilizando un identificador de versión en el nombre de archivo

Versión de API 2016-09-2970

Amazon CloudFront Guía para desarrolladoresActualización de archivos existentes

con versiones de nombres de archivos

Le recomendamos que utilice un identificador de versión en nombres de archivos o en nombres decarpetas, para contribuir a darle un mayor control en la administración del contenido que distribuyeCloudFront.

Actualización de archivos existentes con versiones denombres de archivosAl actualizar los archivos existentes en una distribución de CloudFront, le recomendamos incluir algúnidentificador de versión en sus nombres de archivo o de directorios para tener un mejor control de sucontenido. Este identificador puede ser una marca temporal fecha-hora, un número en secuencia o algúnotro método que permita distinguir dos versiones del mismo objeto.

Por ejemplo, en lugar de denominar un archivo de imagen image.jpg, puede llamarlo image_1.jpg. Cuandodesee comenzar a ofrecer una nueva versión del archivo, deberá llamarlo image_2.jpg y actualizar losenlaces en su sitio o aplicación web para que apunten a image_2.jpg. De forma alternativa, puede colocartodos los gráficos en un directorio images_v1 y, cuando desee comenzar a distribuir nuevas versiones deuno o varios gráficos, crear un nuevo directorio images_v2 y actualizar los enlaces para apuntar a dichodirectorio. Con el control de versiones, no es necesario esperar a que un objeto caduque antes de queCloudFront 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. Paraobtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en unacaché perimetral (Vencimiento) (p. 206).

Note

Especificar nombres de archivo o de directorios con versiones no está relacionado con el controlde versiones de objetos de Amazon S3.

Actualizar contenidos existentes con los mismosnombres de archivosAunque puede actualizar los archivos existentes en una distribución de CloudFront y utilizar los mismosnombres de archivos, no se lo recomendamos. CloudFront distribuye archivos a ubicaciones de borde solocuando los archivos se solicitan, no cuando carga archivos nuevos o actualizados en el origen. Si actualizaun archivo existente en el origen con una versión más reciente que tenga el mismo nombre, una ubicaciónde borde no recibirá una nueva versión del origen hasta que no ocurran estas dos acciones:

• 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é perimetral(Vencimiento) (p. 206).

• 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 comienzaa ofrecer los nuevos archivos. De forma predeterminada, CloudFront almacena archivos en las cachésde ubicaciones de borde durante 24 horas. (Para obtener más información, consulte Administración decuánto tiempo se mantiene el contenido en una caché perimetral (Vencimiento) (p. 206).) Por ejemplo, sisustituye 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 nuevasversiones de estos archivos comenzarán a ofrecerse a partir de la siguiente solicitud.

• Los archivos de algunas páginas pueden estar en algunas ubicaciones de borde y no en otras, por loque los usuarios finales verán distintas versiones en función de la ubicación de borde desde la que losreciben.

Versión de API 2016-09-2971

Amazon CloudFront Guía para desarrolladoresEliminación de contenido paraque CloudFront no lo distribuya

• Es posible que las versiones nuevas de los archivos de las páginas más populares no se ofrezcandurante hasta 24 horas porque CloudFront puede haber recuperado los archivos de dichas páginas soloantes de sustituir los archivos con nuevas versiones.

Eliminación de contenido para que CloudFront no lodistribuya

Puede quitar archivos de su origen que ya no desee incluir en su distribución de CloudFront. Sin embargo,CloudFront seguirá mostrando a los espectadores contenido desde la caché perimetral hasta que losarchivos caduquen.

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. 73).• 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 espectadores. Para obtener más información, consulteActualización de archivos existentes con versiones de nombres de archivos (p. 71).

Personalización del formato de URL para archivosen CloudFront

Después de configurar el origen con los objetos (contenido) que desee que CloudFront distribuya a losespectadores, debe utilizar las URL correctas para hacer referencia a dichos objetos en su sitio web ocódigo de aplicación para que CloudFront puede distribuirlo.

El nombre de dominio que utiliza en las URL de los objetos en sus páginas web o en su aplicación webpuede ser uno de los siguientes:

• El nombre de dominio, como d111111abcdef8.cloudfront.net, que CloudFront asignaautomáticamente al crear una distribución

• Su propio nombre de dominio, como example.com

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 origenpersonalizado, como uno de sus servidores web.

Note

El formato de URL depende en parte en el valor que especifique para Origin Path en sudistribución. Este valor ofrece a CloudFront una ruta de directorio de nivel superior para susobjetos. Para obtener más información sobre la configuración de la ruta de origen al crear unadistribución web, consulte Ruta de origen (p. 33).

Para obtener más información sobre los formatos de URL, consulte las siguientes secciones.

Versión de API 2016-09-2972

Amazon CloudFront Guía para desarrolladoresUso de su propio nombre de dominio (Example.com)

Uso de su propio nombre de dominio (Example.com)En lugar de utilizar el nombre de dominio predeterminado que CloudFront le asigna al crear unadistribución, puede añadir un nombre de dominio alternativo con el que sea más fácil trabajar, comoexample.com. Al configurar su propio nombre de dominio con CloudFront, puede utilizar una URL comoesta para los objetos de su distribución:

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

Si tiene previsto utilizar HTTPS entre los espectadores y CloudFront, consulte Usar nombres de dominioalternativos y HTTPS (p. 95).

Uso de una barra final (/) en las URLCuando especifique direcciones URL para los directorios de la distribución de CloudFront, elija si utilizarásiempre una barra final o si nunca la utilizará. Por ejemplo, elija solo uno de los siguientes formatos paratodas las direcciones URL:

http://d111111abcdef8.cloudfront.net/images/

http://d111111abcdef8.cloudfront.net/images

¿Por qué importa?

Ambos formatos son válidos para el enlace a objetos de CloudFront, pero el hecho de ser coherente puedeayudar a prevenir problemas cuando desea invalidar un directorio más tarde. CloudFront almacena lasURL 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 eldirectorio.

Resulta incómodo tener que invalidar ambos formatos de URL y puede suponer costos adicionales. Estose debe a que si tiene que duplicar las invalidaciones para tener en cuenta ambos tipos de URL, puedealcanzar el límite de invalidaciones gratuitas del mes. Y si esto ocurre, tendrá que pagar por todas lasinvalidaciones, aunque solo exista en CloudFront un formato para cada URL de directorio.

Creación de URL firmadas para contenido restringidoSi tiene contenido al que desea restringir el acceso, puede crear URL firmadas. Por ejemplo, si deseadistribuir su contenido únicamente a los usuarios que se hayan autenticado, puede crear unas URL quesolo sean válidas durante un periodo de tiempo indicado o que solo estén disponibles desde una direcciónIP especificada. Para obtener más información, consulte Distribución de contenido privado con URLfirmadas y cookies firmadas (p. 126).

Creación de URL para distribución RTMP de archivomultimediaSi utiliza una distribución RTMP para servir contenido en streaming, debe incluir caracteres adicionalesen la URL para sus archivos. Para obtener más información, consulte Configurar el reproductormultimedia (p. 279).

Invalidar archivosSi necesita quitar un archivo de cachés perimetrales de CloudFront antes de que caduquen, puede elegiruna de las siguientes alternativas:

Versión de API 2016-09-2973

Amazon CloudFront Guía para desarrolladoresElegir entre invalidar archivos y utilizar

nombres de archivo con versiones

• Invalide el archivo de las cachés perimetrales. La vez siguiente que un espectador 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 nombredistinto. Para obtener más información, consulte Actualización de archivos existentes con versiones denombres de archivos (p. 71).

Important

Puede invalidar la mayoría de tipos de contenido ofrecidos por una distribución web, pero nopuede invalidar archivos multimedia en formato Microsoft Smooth Streaming si ha activadoSmooth Streaming en el comportamiento de la caché correspondiente. Tampoco puede invalidarobjetos ofrecidos por una distribución RTMP.

Para invalidar archivos, puede especificar la ruta de archivos individuales o una ruta que termine en elcomodín *, que puede ser aplicable a un archivo o a muchos, tal y como se muestra en los siguientesejemplos:

• /images/image1.jpg

• /images/image*

• /images/*

Note

Si utiliza la interfaz de línea de comandos (CLI) de AWS para la invalidación de archivos yespecifica una ruta que incluye el comodín *, debe utilizar comillas (") en torno a la ruta.Por ejemplo: aws cloudfront create-invalidation --distribution-id$CDN_DISTRIBUTION_ID --paths "/*"

Puede enviar una cantidad especificada de rutas de invalidación al mes de forma gratuita. Si supera lacantidad de rutas de invalidación enviadas que se le asignan por mes, pagará un cargo por cada rutaque envíe. Para obtener más información acerca de los cargos por invalidaciones, consulte Cargos porinvalidación de archivo (p. 80).

Temas• Elegir entre invalidar archivos y utilizar nombres de archivo con versiones (p. 74)• Determinar qué archivos invalidar (p. 75)• Especificar los archivos que invalidar (p. 75)• Invalidar archivos con la consola (p. 78)• Invalidar archivos con la API de CloudFront (p. 80)• Herramientas de terceros para invalidar archivos (p. 80)• Límites de solicitud de invalidación simultánea (p. 80)• Cargos por invalidación de archivo (p. 80)

Elegir entre invalidar archivos y utilizar nombres dearchivo con versionesPara controlar las versiones de los archivos que se distribuyen desde su distribución, puede invalidararchivos o asignarles nombres de archivo con versiones. Si desea actualizar sus archivos con frecuencia,le recomendamos utilizar principalmente el control de versiones de archivos por las siguientes razones:

• El control de versiones le permite controlar qué archivo devuelve una solicitud incluso cuando el usuariotiene una versión almacenada en caché, ya sea localmente o tras un proxy de almacenamiento en caché

Versión de API 2016-09-2974

Amazon CloudFront Guía para desarrolladoresDeterminar qué archivos invalidar

de empresa. Si invalida el archivo, el usuario podría seguir viendo la versión antigua hasta que caduqueen esas cachés.

• Los registros de acceso de CloudFront incluyen los nombres de los archivos, así que el control deversiones 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 pagarpor la invalidación de archivos.

Para obtener más información acerca del control de versiones, consulte Actualización de archivosexistentes con versiones de nombres de archivos (p. 71).

Determinar qué archivos invalidarSi desea invalidar varios archivos como, por ejemplo, todos los archivos de un directorio o todos losarchivos que comienzan por los mismos caracteres, puede incluir el comodín * al final de la ruta deinvalidación. Para obtener más información acerca de cómo utilizar el comodín *, consulte Invalidationpaths.

Si desea invalidar archivos seleccionados, pero los usuarios no necesariamente obtienen acceso a todoslos del origen, puede determinar qué archivos de CloudFront han sido solicitados por espectadores einvalidar solo esos. Para determinar qué archivos han solicitado los espectadores, habilite el registrode acceso de CloudFront. Para obtener más información acerca de los registros de acceso, consulteConfiguración y uso de registros de acceso (p. 371).

Especificar los archivos que invalidarTanto si invalida archivos a través de la consola de CloudFront o la API de CloudFront, los requisitos y laslimitaciones para especificar archivos son los mismos. Tenga en cuenta lo siguiente acerca de especificarlos archivos que desea invalidar.

Diferenciación entre mayúsculas y minúsculas

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.

Cambio del URI mediante una función de Lambda

Si su distribución de CloudFront activa una función de Lambda en eventos de solicitud del espectador,y si la función cambia el URI del archivo solicitado, debe invalidar ambos URI para quitar el archivo delas cachés perimetrales 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:

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

a un URI que incluye un directorio de idioma:

http://d111111abcdef8.cloudfront.net/en/index.html

Para invalidar el archivo, debe especificar las siguientes rutas:

Versión de API 2016-09-2975

Amazon CloudFront Guía para desarrolladoresEspecificar los archivos que invalidar

• index.html

• en/index.html

Para obtener más información, consulte Invalidation paths. Objeto raíz predeterminado

Para invalidar el objeto raíz predeterminado (archivo), especifique la ruta del mismo modo queespecifica la de cualquier otro archivo.

Tipos de distribución

Solo es posible invalidar archivos asociados a una distribución web. Reenvío de cookies

Si configura CloudFront para reenviar cookies a su origen, las cachés perimetrales de CloudFrontpueden contener varias versiones del archivo. Al invalidar un archivo, CloudFront invalida todas lasversiones del archivo almacenado en caché independientemente de sus cookies asociadas. No sepuede 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 decookies (p. 199).

Reenvío de encabezados

Si ha configurado una lista blanca de CloudFront para reenviar encabezados al origen y paraalmacenar en caché en función de los valores de los encabezados, las cachés perimetrales deCloudFront pueden contener varias versiones del archivo. Al invalidar un archivo, CloudFront invalidatodas las versiones del archivo almacenado en caché independientemente de los valores de losencabezados. No se puede invalidar de manera selectiva algunas versiones y otras no en función delos valores de los encabezados. (Si configura CloudFront para reenviar todos los encabezados a suorigen, CloudFront no almacena los archivos en la caché). Para obtener más información, consulteAlmacenamiento en caché de contenido en función de encabezados de solicitud (p. 201).

Reenvío de cadenas de consulta

Si configura CloudFront para que reenvíe cadenas de consultas a su origen, deberá incluir lascadenas 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 elarchivo cinco veces, una vez por cadena de consulta, o utilizar el comodín * en la ruta, tal y como semuestra en el ejemplo siguiente:

/images/image.jpg*

Para obtener más información acerca del uso de comodines en la ruta de invalidación, consulteInvalidation paths. Para obtener más información acerca de cadenas de consulta, consulte Almacenaren caché contenido en función de parámetros de cadenas de consulta (p. 196). Para determinarqué cadenas de consulta están en uso, puede habilitar el registro de CloudFront. Para obtener másinformación, consulte Configuración y uso de registros de acceso (p. 371).

Límites

Para obtener información acerca de limitaciones de invalidaciones, consulte Límites de solicitud deinvalidación simultánea (p. 80).

Microsoft Smooth Streaming files

No es posible invalidar archivos multimedia en formato Microsoft Smooth Streaming si se ha activadoSmooth Streaming para el comportamiento de la caché correspondiente.

Versión de API 2016-09-2976

Amazon CloudFront Guía para desarrolladoresEspecificar los archivos que invalidar

Caracteres no ASCII o no seguros en la ruta

Si la ruta incluye caracteres no ASCII o no seguros, tal y como se define en RFC 1783 (http://www.ietf.org/rfc/rfc1738.txt), codifique los caracteres como URL. No codifique como URL otroscaracteres de la ruta, o CloudFront no invalidará la versión antigua del archivo actualizado.

Rutas de invalidación

La ruta es relativa a la distribución. Añadir una / al principio es opcional. Por ejemplo, para invalidarel archivo en http://d111111abcdef8.cloudfront.net/images/image2.jpg, especifique losiguiente:

/images/image2.jpg

o bien

images/image2.jpg

También puede invalidar varios archivos simultáneamente mediante el comodín *. El *, que sustituyea 0 o más caracteres, debe ser el último carácter de la ruta de invalidación. Además, si utiliza lainterfaz de línea de comandos (CLI) de AWS para la invalidación de archivos y especifica una ruta queincluye el comodín *, debe utilizar comillas (") en torno a la ruta (como "/*").

A continuación se muestran algunos ejemplos:• Para invalidar todos los archivos de un directorio:

/ruta-directorio/*

• Para invalidar un directorio, todos sus subdirectorios y todos los archivos en el directorio ysubdirectorios:

/ruta-directorio*

• Para invalidar todos los archivos que tienen el mismo nombre, pero diferentes extensiones, comologo.jpg, logo.png y logo.gif:

/ruta-directorio/nombre-archivo.*

• Para invalidar todos los archivos de un directorio cuyos nombres comienzan por los mismoscaracteres (como, por ejemplo, todos los archivos de video en formato HLS), independientementede 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 deconsulta y desea invalidar todas las versiones de un archivo:

/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 laruta; solo al final de la ruta.

Para obtener información sobre la invalidación de archivos si utiliza una función de Lambda paracambiar el URI, consulte Changing the URI Using a Lambda Function.

El cargo por enviar una ruta de invalidación es la misma independientemente de la cantidad dearchivos que invalide: un único archivo (/images/logo.jpg) o todos los archivos asociados a unadistribución (/*). Para obtener más información, consulte Precios de Amazon CloudFront.

Versión de API 2016-09-2977

Amazon CloudFront Guía para desarrolladoresInvalidar archivos con la consola

Si la ruta de invalidación es un directorio y no ha estandarizado un método para especificar directorios(con o sin barra inclinada, /, al final), le recomendamos invalidar el directorio con y sin barra inclinadaal final, por ejemplo, /images y /images/.

URL firmadas

Si utiliza URL firmadas, invalide un archivo incluyendo solo la parte de la URL anterior al signo deinterrogación (?).

Invalidar archivos con la consolaPuede utilizar la consola de CloudFront para crear y ejecutar una invalidación, mostrar una lista de lasinvalidaciones que ha enviado anteriormente y mostrar información detallada acerca de invalidacionesindividuales. También puede copiar una invalidación existente, editar la lista de las rutas de archivos yejecutar la invalidación editada.

• Invalidar archivos (p. 78)• Copiar, editar y volver a ejecutar una invalidación existente (p. 78)• Cancelación de invalidaciones (p. 79)• Listado de invalidaciones (p. 79)• Visualización de información acerca de una invalidación (p. 79)

Invalidar archivosPara invalidar archivos mediante la consola de CloudFront, haga lo siguiente.

Para invalidar archivos

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Elija la distribución cuyos archivos desea invalidar.3. Elija Distribution Settings.4. Elija la pestaña Invalidations.5. Elija Create Invalidation.6. Escriba una ruta de invalidación de cada archivo que desea invalidar por línea. Para obtener más

información acerca de cómo especificar rutas de invalidación, consulte Especificar los archivos queinvalidar (p. 75).

Important

Especifique las rutas de archivos cuidadosamente. Las solicitudes de invalidación no sepueden cancelar una vez comenzadas.

7. Elija Invalidate.

Copiar, editar y volver a ejecutar una invalidación existentePuede copiar invalidaciones que haya creado anteriormente, actualizar la lista de rutas de invalidación yejecutar las invalidaciones actualizadas. No es posible copiar invalidaciones existentes, actualizar rutas deinvalidación ni guardar invalidaciones actualizadas a continuación sin ejecutarlas.

Important

Si copia una invalidación que sigue en curso, actualiza la lista de rutas de anulación y, acontinuación, ejecuta la invalidación actualizada, CloudFront no detiene ni elimina la invalidación

Versión de API 2016-09-2978

Amazon CloudFront Guía para desarrolladoresInvalidar archivos con la consola

que ha copiado. Si aparece cualquier ruta de invalidación en el original y en la copia, CloudFrontintentará invalidar los archivos dos veces, y ambas invalidaciones se contabilizarán como parte dela cantidad máxima de invalidaciones gratuitas del mes. Si ya se ha alcanzado la cantidad máximade invalidaciones gratuitas, se le facturarán las invalidaciones de ambos archivos. Para obtenermás información, consulte Límites de solicitud de invalidación simultánea (p. 80).

Para copiar, editar y volver a ejecutar una invalidación existente

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Elija la distribución que contiene la invalidación que desea copiar.3. Elija Distribution Settings.4. Elija la pestaña Invalidations.5. Elija la invalidación que desea copiar.

Si no está seguro de qué invalidación desea copiar, puede elegir una invalidación y elegir Details paramostrar información detallada acerca de la misma.

6. Elija Copy.7. Actualice la lista de rutas de invalidación si procede.8. Elija Invalidate.

Cancelación de invalidacionesAl enviar una solicitud de invalidación a CloudFront, CloudFront reenvía la solicitud a todas las ubicacionesde borde al cabo de unos segundos, y cada ubicación de borde comienza a procesar la invalidación deforma inmediata. Por consiguiente, no puede cancelar una invalidación después de enviarla.

Listado de invalidacionesPuede mostrar una lista de las 100 últimas invalidaciones que ha creado y ejecutado para una distribuciónutilizando la consola de CloudFront. Si desea obtener una lista de más de 100 invalidaciones, utilice laacción de la API Invalidation List. Para obtener más información, consulte Invalidation List en la AmazonCloudFront API Reference.

Para mostrar una lista de invalidaciones

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Elija la distribución cuyas invalidaciones desee mostrar en una lista.3. Elija Distribution Settings.4. Elija la pestaña Invalidations.

Note

No puede eliminar las invalidaciones de la lista.

Visualización de información acerca de una invalidaciónVisualice información detallada sobre cualquier invalidación, incluidos ID de distribución y de invalidación,estado de la invalidación, la fecha y la hora de creación de la invalidación y una lista completa de las rutasde invalidación.

Versión de API 2016-09-2979

Amazon CloudFront Guía para desarrolladoresInvalidar archivos con la API de CloudFront

Para mostrar información acerca de una invalidación

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Elija la distribución que contenga la invalidación de la que desea mostrar información detallada.3. Elija Distribution Settings.4. Elija la pestaña Invalidations.5. Elija la invalidación aplicable.6. Elija Details.

Invalidar archivos con la API de CloudFrontPara obtener información acerca de la invalidación de objetos y mostrar información acerca deinvalidaciones utilizando la API de CloudFront, consulte los siguientes temas en la Amazon CloudFront APIReference:

• Invalidar archivos: Invalidación• Obtener una lista de las invalidaciones: Invalidation List• Obtener información acerca de una invalidación específica: Invalidation

Herramientas de terceros para invalidar archivosAdemás de los métodos de invalidación que ofrece CloudFront, existen diversas herramientas de tercerospara invalidar archivos. Para obtener una lista de herramientas, consulte Invalidar objetos (p. 420).

Límites de solicitud de invalidación simultáneaSi está invalidando archivos uno a uno, podría haber solicitudes de invalidación de hasta 3 000 archivospor distribución en ejecución simultáneamente. Podría tratarse de una sola solicitud de invalidación parahasta 3 000 archivos, hasta 3 000 solicitudes de un archivo cada una o cualquier otra combinación que nosupere 3 000 archivos. Por ejemplo, puede enviar 30 solicitudes de invalidación para 100 archivos cadauna. Mientras las 30 solicitudes de invalidación estén realizándose, no se pueden enviar más solicitudesde invalidación. Si supera el límite, CloudFront devuelve un mensaje de error.

Si está utilizando el comodín *, puede tener solicitudes de hasta 15 patrones de invalidación ejecutándosesimultáneamente. También puede tener solicitudes de invalidación de hasta 3 000 archivos individualespor distribución ejecutándose simultáneamente; el límite de solicitudes de invalidación con comodines esindependiente del límite de invalidación de archivos individuales.

Cargos por invalidación de archivoLas primeras 1 000 rutas de invalidación que envíe al mes son gratis; cada ruta de invalidación adicional alas 1 000 mensuales genera cargos. Una ruta de invalidación puede ser aplicable a un único archivo (porejemplo, /images/logo.jpg) o a varios archivos (como, por ejemplo, /images/*). Cualquier ruta queincluya el comodín * cuenta como una ruta incluso si hace que CloudFront invalide miles de archivos.

Este límite de 1 000 rutas de invalidación al mes se aplica al número total de rutas de invalidación detodas las distribuciones que haya creado con una cuenta de AWS. Por ejemplo, si utiliza la cuenta de [email protected] para crear tres distribuciones y envía 600 rutas de invalidación por distribución en unmes (lo que generaría un total de 1 800 rutas de invalidación), AWS cobrará 800 rutas de invalidación ese

Versión de API 2016-09-2980

Amazon CloudFront Guía para desarrolladoresOfrecer archivos comprimidos

mes. Para obtener información específica acerca de precios de invalidación, consulte Precios de AmazonCloudFront. Para obtener más información acerca de rutas de invalidación, consulte Invalidation paths.

Ofrecer archivos comprimidosPuede configurar CloudFront para que comprima automáticamente archivos de determinados tipos yofrecerlos comprimidos cuando las solicitudes de los espectadores incluyan Accept-Encoding: gzipen el encabezado de la solicitud. Al comprimir el contenido, las descargas son más rápidas, ya que losarchivos son más pequeños (en algunos casos, menos de una cuarta parte del original). Especialmenteen el caso de archivos CSS y JavaScript, descargas más rápidas se traducen en páginas web que semuestran más rápido a los usuarios. Además, como el costo de transferencia de datos de CloudFront sebasa en la cantidad total de datos que se ofrecen, enviar archivos comprimidos es más económico queofrecerlos sin comprimir.

Important

Una solicitud del espectador debe incluir Accept-Encoding: gzip en el encabezado de lasolicitud de CloudFront, o no comprimirá el archivo solicitado.

Si utiliza un origen personalizado, puede configurar su origen para comprimir archivos con o sincompresión de CloudFront. Su origen puede comprimir tipos de archivos que CloudFront no comprime.(Consulte Tipos de archivo que comprime CloudFront (p. 83).) Si el origen devuelve un archivocomprimido a CloudFront, CloudFront detecta que el archivo se ha comprimido basado en el valor delencabezado Content-Encoding y no comprime el archivo de nuevo.

Temas• Usar CloudFront para comprimir su contenido (p. 81)• Usar un origen personalizado para comprimir contenido (p. 84)

Usar CloudFront para comprimir su contenidoCloudFront puede comprimir archivos tanto para orígenes de Amazon S3 como para orígenespersonalizados. Al configurar CloudFront para comprimir su contenido, debe especificar la configuración enlos comportamientos de la caché.

Al configurar CloudFront para comprimir el contenido, CloudFront lo ofrece de la siguiente manera:

1. Usted crea o actualiza una distribución de CloudFront y configura CloudFront para comprimir contenido.2. Un espectador solicita un archivo. El espectador añade el encabezado Accept-Encoding: gzip a la

solicitud. Esto indica que el espectador admite contenido comprimido.3. En la ubicación de borde, CloudFront busca en la caché la versión comprimida del archivo al que se

hace referencia en la solicitud.4. Si el archivo comprimido ya está en la caché, CloudFront lo devuelve al espectador 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é, igualmente reenvíauna 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:

Versión de API 2016-09-2981

Amazon CloudFront Guía para desarrolladoresUsar CloudFront para comprimir su contenido

• El archivo debe ser de un tipo que CloudFront comprime.• 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 rango que CloudFront comprime. Si no se encuentra elencabezado 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 espectador y lo añade

a la caché.9. El espectador descomprime el archivo.

Tenga en cuenta lo siguiente:

Tipos de archivo que comprime CloudFront

CloudFront comprime archivos de una gran cantidad de tipos. Para ver una lista completa, consulteTipos de archivo que comprime CloudFront (p. 83).

Tamaño de los archivos que comprime CloudFront

CloudFront comprime archivos con tamaños entre 1 000 y 10 000 000 bytes.Encabezado Content-Length

El origen debe incluir un encabezado Content-Length en la respuesta para que CloudFront puedadeterminar si el tamaño del archivo se encuentra en el rango que CloudFront comprime. Si no seencuentra el encabezado Content-Length, CloudFront no comprime el archivo.

Encabezado Etag

Si configura CloudFront para comprimir el contenido, CloudFront elimina el encabezado de respuestaETag de los archivos que comprime. Cuando el encabezado ETag está presente, CloudFront yel origen pueden utilizarlo para determinar si la versión de un archivo en una caché perimetral deCloudFront es idéntica a la versión del servidor de origen. Sin embargo, después de la compresión,las dos versiones dejan de ser idénticas. Como resultado, cuando un archivo comprimido caduca yCloudFront reenvía otra solicitud al origen, el origen siempre devuelve el archivo de CloudFront enlugar de un código de estado HTTP 304 (No modificado).

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, no comprime los archivos que ya están enubicaciones de borde. Además, si un archivo caduca en una ubicación de borde y CloudFront reenvíaotra solicitud del archivo al origen, CloudFront no comprime el archivo si el origen devuelve un códigode estado HTTP 304, lo 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 están en ubicaciones de borde, tendrá queinvalidar los archivos. Para obtener más información, consulte Invalidar archivos (p. 73).

Origen personalizado ya configurado para comprimir archivos

Si configura CloudFront para comprimir los archivos y CloudFront está reenviando las solicitudes a unorigen personalizado que también está configurado para comprimir archivos, el origen personalizadoincluirá un encabezado Content-Encoding: gzip, lo que indica que el archivo que el origendevolvió a CloudFront ya se ha comprimido. CloudFront devuelve el archivo almacenado en caché alespectador 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.

Versión de API 2016-09-2982

Amazon CloudFront Guía para desarrolladoresUsar CloudFront para comprimir su contenido

La solicitud no incluye Accept-Encoding: gzip

Si el encabezado Accept-Encoding no se encuentra en la solicitud, CloudFront ofrece el contenidosin comprimir. Si el encabezado Accept-Encoding incluye valores adicionales como deflate osdch, CloudFront los elimina antes de reenviar la solicitud al servidor de origen.

CloudFront está ocupado

En casos excepcionales, cuando una ubicación de borde de CloudFront está inusualmente ocupada,algunos archivos no se comprimen.

Configuración de una distribución de CloudFront para comprimircontenidoPara configurar una distribución web para comprimir contenido, actualice los comportamientos de la cachéaplicables mediante uno de los siguientes métodos:

• Consola de CloudFront: actualice la configuración de Compress objects automatically. Para obtener másinformación, consulte Creación de una distribución (p. 29).

• API de CloudFront: cambie el valor del elemento Compress a true. Para obtener más información,consulte CreateDistribution para crear una distribución o UpdateDistribution para actualizar una que yaexista.

• Uno de los AWS SDK: consulte la documentación del SDK aplicable en la página documentación deAWS.

• La CLI de AWS: para obtener más información, consulte create-distribution o update-distribution en laAWS CLI Command Reference.

Tipos de archivo que comprime CloudFrontSi configura CloudFront para comprimir el contenido, CloudFront comprime los archivos con los siguientesvalores en el encabezado Content-Type:

application/eot application/x-otf

application/font application/x-perl

application/font-sfnt application/x-ttf

application/javascript font/eot

application/json font/ttf

application/opentype font/otf

application/otf font/opentype

application/pkcs7-mime image/svg+xml

application/truetype text/css

application/ttf text/csv

application/vnd.ms-fontobject text/html

application/xhtml+xml text/javascript

application/xml text/js

Versión de API 2016-09-2983

Amazon CloudFront Guía para desarrolladoresUsar un origen personalizado para comprimir contenido

application/xml+rss text/plain

application/x-font-opentype text/richtext

application/x-font-truetype text/tab-separated-values

application/x-font-ttf text/xml

application/x-httpd-cgi text/x-script

application/x-javascript text/x-component

application/x-mpegurl text/x-java-source

application/x-opentype  

Usar un origen personalizado para comprimircontenidoSi desea comprimir tipos de archivos que CloudFront no comprima, puede configurar el origenpersonalizado para comprimir los archivos de dichos tipos utilizando gzip. CloudFront no admite otrosalgoritmos de compresión. Cuando el origen devuelve el archivo comprimido a CloudFront, incluye unencabezado Content-Encoding: gzip, lo que indica a CloudFront que el archivo ya está comprimido.

Note

CloudFront no comprime un archivo si la respuesta incluye un encabezado Content-Encoding,independientemente del valor.

Ofrecer archivos comprimidos cuando el servidor de origen estáejecutando IISDe forma predeterminada, IIS no ofrece contenido comprimido para atender las solicitudes recibidas através de servidores proxy, como CloudFront. Si utiliza IIS y si ha configurado IIS para comprimir contenidomediante el elemento httpCompression, cambie el valor del atributo noCompressionForProxies afalse para que IIS devuelva contenido comprimido a CloudFront.

Además, si tiene objetos comprimidos que se soliciten con menos frecuencia que cada pocos segundos, esposible que tenga que cambiar los valores de frequentHitThreshold y frequentHitTimePeriod.

Para obtener más información, consulte la documentación de IIS en el sitio web de Microsoft.

Ofrecer archivos comprimidos cuando el servidor de origen estáejecutando NGINXCuando CloudFront reenvía una solicitud al servidor de origen, incluye un encabezado Via. Esto haceque NGINX interprete la solicitud como enviada a través de proxy, y NGINX deshabilita la compresión desolicitudes recibidas por proxy de forma predeterminada. Si su versión de NGINX incluye la configuracióngzip_proxied, cambie el valor a any para que devuelva contenido comprimido a CloudFront. Paraobtener más información, consulte la documentación del módulo ngx_http_gzip_module de NGINX.

Versión de API 2016-09-2984

Amazon CloudFront Guía para desarrolladoresUsar HTTPS con CloudFront

Configuración de seguridad ylimitación de acceso a contenido

Para distribuciones web, CloudFront proporciona varias opciones para proteger el contenido quesuministra, incluida la configuración de conexiones HTTPS, el uso de AWS WAF para controlar el accesoa su contenido o la configuración de cifrado en el nivel de campo para campos de contenido específico.Además, puede evitar que usuarios de ubicaciones geográficas específicas accedan a contenidodistribuido a través de una distribución web. También tiene la opción de limitar el acceso a contenidoprivado, solicitando a dichos usuarios que accedan a ese contenido mediante el uso de URL firmadas ocookies firmadas de CloudFront.

Temas• Usar HTTPS con CloudFront (p. 85)• Usar nombres de dominio alternativos y HTTPS (p. 95)• Utilizar AWS WAF para controlar el acceso al contenido (p. 109)• Restricción del acceso a contenido de Amazon S3 utilizando una identidad de acceso de

origen (p. 110)• Uso del cifrado en el nivel de campo para ayudar a proteger la información confidencial (p. 115)• Restringir la distribución geográfica de su contenido (p. 123)• Distribución de contenido privado con URL firmadas y cookies firmadas (p. 126)

Usar HTTPS con CloudFrontEn el caso de distribuciones web, puede configurar CloudFront para exigir a los espectadores que utilicenHTTPS al solicitar sus objetos, de modo que las conexiones se cifren cuando CloudFront se comuniquecon los espectadores. También puede configurar CloudFront con el fin de usar HTTPS para obtenerobjetos del origen, de modo que las conexiones se cifren cuando CloudFront se comunique con su origen.

Si configura CloudFront para exigir HTTPS al comunicarse con espectadores y con su origen, esto es loque ocurre cuando CloudFront recibe una solicitud de un objeto. El proceso es prácticamente el mismotanto si el origen es un bucket de Amazon S3 o un origen personalizado como si es un servidor HTTP/S:

1. Un espectador envía una solicitud HTTPS a CloudFront. Hay una negociación SSL/TLS entre elespectador y CloudFront. Al final, el espectador envía la solicitud en un formato cifrado.

2. Si el objeto se encuentra en la caché perimetral de CloudFront, CloudFront cifra la respuesta y ladevuelve al espectador, quien la descifra.

3. Si el objeto no se encuentra en la caché de CloudFront, CloudFront realiza la negociación SSL/TLScon su origen y, cuando se haya completado la negociación, reenvía la solicitud al origen en unformato cifrado.

4. Su origen descifra la solicitud, cifra el objeto solicitado y lo devuelve a CloudFront.5. CloudFront descifra la respuesta, vuelve a cifrarla y reenvía el objeto al espectador. CloudFront

también guarda el objeto en la caché perimetral para que esté disponible la próxima vez que lo solicite.6. El espectador descifra la respuesta.

Versión de API 2016-09-2985

Amazon CloudFront Guía para desarrolladoresExigir HTTPS entre espectadores y CloudFront

Para obtener información acerca de cómo solicitar HTTPS entre espectadores y CloudFront, y entreCloudFront y su origen, consulte los siguientes temas.

Temas• Exigir HTTPS para la comunicación entre espectadores y CloudFront (p. 86)• Exigir HTTPS para la comunicación entre CloudFront y su origen personalizado (p. 87)• Exigir HTTPS para la comunicación entre CloudFront y su origen de Amazon S3 (p. 91)• Protocolos y cifrados admitidos (p. 92)• Cargos por conexiones HTTPS (p. 95)

Exigir HTTPS para la comunicación entreespectadores y CloudFrontPuede configurar uno o varios comportamientos de la caché en la distribución de CloudFront para querequieran HTTPS en la comunicación entre los espectadores y CloudFront. También puede configurar unoo varios comportamientos de la caché para permitir HTTP y HTTPS, de forma que CloudFront requieraHTTPS para algunos objetos, pero no para otros. Los pasos de configuración dependerán del nombre dedominio 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 de uno o varioscomportamientos de la caché para que exijan que la comunicación se realice mediante HTTPS. En dichaconfiguración, CloudFront ofrece el certificado SSL/TLS.

Para cambiar el valor de Viewer Protocol Policy desde la consola de CloudFront, consulte elprocedimiento más adelante en esta sección.

Para obtener información sobre cómo utilizar la API de CloudFront para cambiar el valor del elementoViewerProtocolPolicy, consulte UpdateDistribution en la Amazon CloudFront API Reference.

• Si utiliza su propio nombre de dominio, como example.com, necesita cambiar varias configuracionesde CloudFront. Asimismo, necesitará utilizar un certificado SSL/TLS proporcionado por AWS CertificateManager (ACM), importar un certificado de una entidad de certificación de terceros a ACM o al almacénde certificados de IAM, o crear e importar un certificado autofirmado. Para obtener más información,consulte Usar nombres de dominio alternativos y HTTPS (p. 95).

Note

Si desea asegurarse de que los objetos que los espectadores obtienen de CloudFront se hayancifrado cuando CloudFront los obtenga del origen, utilice siempre HTTPS entre CloudFronty 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. CloudFrontdevolverá un objeto a un espectador independientemente de si el protocolo utilizado por dichoespectador (HTTP o HTTPS) coincide con el protocolo que CloudFront utilizó para obtener elobjeto. Para obtener más información acerca de la eliminación o la sustitución de objetos en unadistribución, consulte Añadir, eliminar o sustituir contenido que distribuye CloudFront (p. 70).

Para solicitar HTTPS entre los espectadores y CloudFront para uno o varios comportamientos de la caché,siga el siguiente procedimiento.

Para configurar CloudFront para exigir HTTPS entre los espectadores y CloudFront

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

Versión de API 2016-09-2986

Amazon CloudFront Guía para desarrolladoresExigir HTTPS entre CloudFront y su origen personalizado

2. En el panel superior de la consola de CloudFront, elija el ID de la distribución que desea actualizar.3. En la pestaña Behaviors, elija el comportamiento de la caché que desee actualizar y, a continuación,

elija Edit.4. Especifique exactamente uno de los siguientes valores en Viewer Protocol Policy:

Redireccionamiento de HTTP a HTTPS

Los espectadores pueden utilizar ambos protocolos. Las solicitudes HTTP GET y HEAD seredirigen automáticamente a solicitudes HTTPS. CloudFront devuelve el código de estado HTTP301 (Movido permanentemente) junto con la nueva URL HTTPS. A continuación, el espectadorvuelve a enviar la solicitud a CloudFront través de la nueva URL HTTPS.

Important

Si envía POST, PUT, DELETE, OPTIONS, o PATCH a través de HTTP a un comportamientode la caché de HTTP a HTTPS y una versión de protocolo de solicitud HTTP 1.1 osuperior, CloudFront redirige la solicitud a una ubicación HTTPS con un código de estadoHTTP 307 (Redirección temporal). Esto garantiza que la solicitud se envía de nuevo a lanueva ubicación con el mismo método y carga de cuerpo.Si envía solicitudes POST, PUT, DELETE, OPTIONS, o PATCH a través de HTTP a uncomportamiento de la caché HTTPS con una protocolo de solicitud de versión inferior aHTTP 1.1, CloudFront devuelve un código de estado HTTP 403 (Prohibido).

Cuando un espectador realiza una solicitud HTTP que se redirige a una solicitud HTTPS, loscargos de CloudFront resultan aplicables a ambas solicitudes. En el caso de la solicitud HTTP, elcargo es solo para la solicitud y para los encabezados que CloudFront devuelve al espectador. Enel caso de la solicitud HTTPS, el cargo es por la solicitud y por los encabezados y el objeto quedevuelve el origen.

Solo HTTPS

Los espectadores pueden obtener acceso a su contenido solo si utilizan HTTPS. Si un espectadorenvía una solicitud HTTP en lugar de una solicitud HTTPS, CloudFront devuelve código de estadoHTTP 403 (Prohibido) y no devuelve el objeto.

5. Seleccione Yes, Edit.6. Repita los pasos 3 a 5 para cada comportamiento de la caché adicional para el que desee solicitar

HTTPS entre los espectadores y CloudFront.7. Confirme lo siguiente antes de utilizar la configuración actualizada en un entorno de producción:

• El patrón de ruta de cada comportamiento de la caché es aplicable únicamente a las solicitudes enlas que desea que los espectadores utilicen HTTPS.

• Los comportamientos de la caché se enumeran en el orden en que desee que CloudFront losevalúe. Para obtener más información, consulte Patrón de ruta (p. 38).

• Los comportamientos de la caché son solicitudes de redirección hacia los orígenes correctos.

Exigir HTTPS para la comunicación entre CloudFront ysu origen personalizadoSi desea exigir HTTPS para la comunicación entre CloudFront y desde su origen personalizado, y estáutilizando el nombre de dominio que CloudFront ha asignado a su distribución en las URL de sus objetos(por ejemplo, https://d111111abcdef8.cloudfront.net/logo.jpg), siga los procedimientos que se indican eneste tema para hacer lo siguiente:

• Cambiar la configuración Origin Protocol Policy (Política de protocolo de origen) de los orígenesaplicables en su distribución

Versión de API 2016-09-2987

Amazon CloudFront Guía para desarrolladoresExigir HTTPS entre CloudFront y su origen personalizado

• Instalar un certificado SSL/TLS en su servidor de origen personalizado (no es necesario cuando seutiliza un origen de Amazon S3)

Si utiliza un bucket de Amazon S3 como origen, consulte Exigir HTTPS para la comunicación entreCloudFront y su origen de Amazon S3 (p. 91).

Si utiliza un dominio alternativo en lugar del dominio que CloudFront ha asignado a su distribución,consulte Usar nombres de dominio alternativos y HTTPS (p. 95).

Temas• Cambiar la configuración de CloudFront (p. 88)• Instalar un certificado SSL/TLS en su servidor de origen personalizado (p. 89)• Acerca de los cifrados RSA y ECDSA (p. 89)

Cambiar la configuración de CloudFrontEn el siguiente procedimiento se explica cómo configurar CloudFront para que use HTTPS al comunicarsecon un balanceador de carga Elastic Load Balancing, una instancia Amazon EC2, o cualquier otro origenpersonalizado. Para obtener información sobre cómo utilizar la API de CloudFront para actualizar unadistribución web, consulte UpdateDistribution en la Amazon CloudFront API Reference.

Para configurar CloudFront para que exija HTTPS entre CloudFront y su origen personalizado

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. En el panel superior de la consola de CloudFront, elija el ID de la distribución que desea actualizar.3. En la pestaña Origins, elija el origen que desee actualizar y, a continuación, elija Edit.4. Actualice los siguientes valores de configuración:

Origin Protocol Policy

Cambie Origin Protocol Policy por los orígenes aplicables en su distribución:• HTTPS Only: CloudFront solo utiliza HTTPS para comunicarse con su origen personalizado.• Match Viewer: CloudFront se comunica con el origen personalizado mediante HTTP o HTTPS,

en función del protocolo de la solicitud del espectador. Por ejemplo, si elige Match Vieweren Origin Protocol Policy y el espectador usa HTTPS para solicitar un objeto de CloudFront,CloudFront también usa HTTPS para reenviar la solicitud al origen.

Elija Match Viewer solo si especifica el Redirect HTTP to HTTPS o HTTPS Only en ViewerProtocol Policy.

CloudFront almacena en caché el objeto solo una vez, incluso si los espectadores realizansolicitudes a través de los protocolos HTTP y HTTPS.

Origin SSL Protocols

Seleccione Origin SSL Protocols para los orígenes aplicables a su distribución: El protocoloSSLv3 es menos seguro, así que le recomendamos seleccionar SSLv3 solo si su origen noadmite TLSv1 o una versión posterior.

Note

El protocolo de enlace TLSv1 es bidireccionalmente compatible con SSLv3, peroTLSv1.1 y TLSv1.2 no. En este caso, el openssl solo envía un protocolo de enlaceSSLv3.

Versión de API 2016-09-2988

Amazon CloudFront Guía para desarrolladoresExigir HTTPS entre CloudFront y su origen personalizado

5. Seleccione Yes, Edit.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:

• El patrón de ruta de cada comportamiento de la caché es aplicable únicamente a las solicitudes enlas que desea que los espectadores utilicen HTTPS.

• Los comportamientos de la caché se enumeran en el orden en que desee que CloudFront losevalúe. Para obtener más información, consulte Patrón de ruta (p. 38).

• Los comportamientos de la caché son solicitudes de dirección a los orígenes cuyo valor OriginProtocol Policy ha cambiado.

Instalar un certificado SSL/TLS en su servidor de origenpersonalizadoPuede utilizar un certificado SSL/TLS de las siguientes fuentes en su origen personalizado:

• Si el origen es un balanceador de carga Elastic Load Balancing, puede utilizar un certificadoproporcionado por AWS Certificate Manager (ACM). También puede utilizar un certificado firmado poruna entidad de certificación de terceros de confianza e importado a ACM.

• En el caso de orígenes diferentes a balanceadores de carga ELB, debe utilizar un certificado firmado poruna entidad de certificación (CA) de terceros de confianza, como Comodo, DigiCert o Symantec.

Cuando CloudFront utiliza HTTPS para comunicarse con su origen, CloudFront verifica que el certificadohaya sido emitido por una autoridad de certificados de confianza. CloudFront admite las mismasautoridades de certificados que Mozilla. Para consultar la lista actualizada, visite Mozilla Included CACertificate List. No se puede utilizar un certificado autofirmado para comunicación HTTPS entre CloudFronty su origen.

Important

En caso de que el servidor de origen devuelva un certificado expirado, no válido o autofirmado,o si el servidor de origen devuelve la cadena de certificados en el orden incorrecto, CloudFrontinterrumpe la conexión TCP, devuelve código de estado HTTP 502 (Puerta de enlace incorrecta)y establece el encabezado X-Cache como Error from cloudfront. Igualmente, si todala cadena de certificados, incluidos los certificados intermedios, no está presente, CloudFrontinterrumpe la conexión TCP.

Uno de los nombres de dominio del certificado debe coincidir con uno o ambos de los siguientes valores:

• El valor que especificó en Origin Domain Name para el origen aplicable a la distribución.• Si ha configurado CloudFront para reenviar el encabezado Host al origen, el valor del encabezado

es Host. Para obtener más información acerca del reenvío del encabezado a su origen, consulteAlmacenamiento en caché de contenido en función de encabezados de solicitud (p. 201).

Acerca de los cifrados RSA y ECDSAEl nivel de cifrado de una conexión de comunicaciones depende el tamaño de la clave y de la fuerza delalgoritmo que elija para su certificado de servidor de origen. Las dos opciones que admite CloudFront paraconexiones con un origen personalizado son RSA y Algoritmo de firma digital de curva elíptica (ECDSA).

Para las listas de cifrados RSA y ECDSA admitidos por CloudFront, consulte Protocolos SSL/TLS ycifrados soportados para comunicación entre CloudFront y su origen (p. 94).

Versión de API 2016-09-2989

Amazon CloudFront Guía para desarrolladoresExigir HTTPS entre CloudFront y su origen personalizado

Cómo funcionan los cifrados RSA

CloudFront y los servidores de origen normalmente utilizan claves asimétricas RSA de 2 048 bits paraterminación SSL/TLS. Los algoritmos de RSA utilizan el producto de dos números primos grandes, conotro número sumado al mismo para crear una clave pública. La clave privada es un número relacionado.La fortaleza de RSA se basa en la presunta dificultad de romper una clave que requiere la factorizacióndel producto de dos números primos grandes. Sin embargo, las mejoras en la tecnología informática handebilitado los algoritmos de RSA dado que los cálculos informáticos más rápidos permiten que ahora seamás sencillo romper el cifrado.

Si desea mantener el nivel del cifrado mientras sigue utilizando RSA, una opción sería aumentar el tamañode sus claves RSA. Sin embargo, este enfoque no es escalable fácilmente ya que las claves más grandesaumentan el costo de computación para criptografía.

Cómo funcionan los cifrados ECDSA

Como alternativa, podría utilizar un certificado ECDSA. ECDSA basa su seguridad en un problemamatemático más complejo que RSA y que es más difícil de resolver, lo que significa que hace falta mástiempo de procesamiento informático para romper el cifrado ECDSA. ECDSA se basa en el principio deque la dificultad de resolver el logaritmo discreto de una curva elíptica aleatoria cuando se conoce su base,también conocido como Problema del logaritmo discreto de curva elíptica (ECDLP). Esto significa quepuede utilizar longitudes de clave más cortas para conseguir la seguridad equivalente a usar RSA contamaños de claves mucho mayores.

Además de proporcionar mejor seguridad, el uso de claves de ECDSA más pequeñas permite un cálculomás rápido de algoritmos, certificados digitales más pequeños y menos bits para transmitir durante elprotocolo SSL/TLS. En consecuencia, las claves más pequeñas reducen el tiempo requerido para creary firmar certificados digitales para terminación SSL/TLS en servidores de origen. El uso de un tamañode clave más pequeño, por lo tanto, permite aumentar el desempeño reduciendo los ciclos informáticosnecesarios para criptografía, liberando recursos de servidor para procesar otros trabajos.

Elegir entre cifrados de RSA y ECDSA

Las pruebas de ejemplo que hemos ejecutado para comparar, por ejemplo, RSA de 2 048 bits con ECDSAde 256 bits (nistp256) han indicado que la opción nistp256 fue un 95% más rápida que el RSA de 2 048bits proporcionando el mismo nivel de seguridad que RSA de 3 072 bits.

CloudFront sigue admitiendo RSA para conexiones SSL/TLS. Sin embargo, si le preocupa la intensidad desu cifrado actual para la autenticación SSL/TLS en sus servidores de origen, ECDSA podría ser una opciónmás recomendable. El esfuerzo para habilitar los certificados digitales de ECDSA en comparación con elbeneficio de seguridad que aporta ECDSA es una desventaja que tendrá que sopesar a la hora de tomaruna decisión. Además de permitir un cifrado más fuerte, la reducción de costo informático de la criptografíaal utilizar ECDSA en sus servidores de origen es una ventaja adicional.

Uso de cifrados de ECDSA

Para utilizar ECDSA para comunicaciones entre CloudFront y su origen, haga lo siguiente:

1. Genere una clave privada, utilizando una de las curvas admitidas (prime256v1 o secp384r1).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 yno hay cuota adicional.

Versión de API 2016-09-2990

Amazon CloudFront Guía para desarrolladoresExigir HTTPS entre CloudFront y su origen de Amazon S3

Exigir HTTPS para la comunicación entre CloudFront ysu origen de Amazon S3Cuando el origen es un bucket de Amazon S3, CloudFront siempre reenvía las solicitudes a S3 utilizandoel protocolo que los espectadores usan para enviar las solicitudes. El valor predeterminado para laconfiguración Política de protocolos de origen (Amazon EC2, Elastic Load Balancing y otros orígenespersonalizados) (p. 35) es Match Viewer y no puede modificarse.

Si desea solicitar HTTPS para la comunicación entre CloudFront y Amazon S3, deberá cambiar el valor deprotocolo de Viewer Protocol Policy a Redirect HTTP to HTTPS o HTTPS Only. En el procedimiento másadelante en esta sección se explica cómo cambiar el valor de Viewer Protocol Policy desde la consola deCloudFront. Para obtener información sobre cómo utilizar la API de CloudFront para actualizar el elementoViewerProtocolPolicy de una distribución web, consulte UpdateDistribution en la Amazon CloudFrontAPI Reference.

Tenga en cuenta lo siguiente acerca del uso de HTTPS cuando el origen es un bucket de Amazon S3:

• Si su bucket de Amazon S3 se configura como un punto de enlace de sitio web, no puede configurarCloudFront para usar HTTPS para comunicarse con su origen porque Amazon S3 no admite conexionesHTTPS en dicha configuración.

• Amazon S3 proporciona el certificado SSL/TLS, de forma que no tenga que hacer usted.

Para configurar CloudFront para que exija HTTPS entre CloudFront y su origen de Amazon S3

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. En el panel superior de la consola de CloudFront, elija el ID de la distribución que desea actualizar.3. En la pestaña Behaviors, elija el comportamiento de la caché que desee actualizar y, a continuación,

elija Edit.4. Especifique exactamente uno de los siguientes valores en Viewer Protocol Policy:

Redireccionamiento de HTTP a HTTPS

Los espectadores pueden usar tanto el protocolo HTTP como el HTTPS, pero las solicitudesHTTP se redirigirán automáticamente a solicitudes HTTPS. CloudFront devuelve el código deestado HTTP 301 (Movido permanentemente) junto con la nueva URL HTTPS. A continuación, elespectador 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 HTTPa 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 esecomportamiento de la caché con el código de estado HTTP 403 (Prohibido).

Cuando un espectador realiza una solicitud HTTP que se redirige a una solicitud HTTPS, loscargos de CloudFront resultan aplicables a ambas solicitudes. En el caso de la solicitud HTTP, elcargo es solo para la solicitud y para los encabezados que CloudFront devuelve al espectador.En el caso de la solicitud HTTPS, el cargo es por la solicitud y por los encabezados y el objetodevueltos por el origen.

Solo HTTPS

Los espectadores pueden obtener acceso a su contenido solo si utilizan HTTPS. Si un espectadorenvía una solicitud HTTP en lugar de una solicitud HTTPS, CloudFront devuelve código de estadoHTTP 403 (Prohibido) y no devuelve el objeto.

Versión de API 2016-09-2991

Amazon CloudFront Guía para desarrolladoresProtocolos y cifrados admitidos

5. Seleccione Yes, Edit.6. Repita los pasos 3 a 5 para cada comportamiento de la caché adicional para el que desee solicitar

HTTPS entre los espectadores y CloudFront, y entre CloudFront y S3.7. Confirme lo siguiente antes de utilizar la configuración actualizada en un entorno de producción:

• El patrón de ruta de cada comportamiento de la caché es aplicable únicamente a las solicitudes enlas que desea que los espectadores utilicen HTTPS.

• Los comportamientos de la caché se enumeran en el orden en que desee que CloudFront losevalúe. Para obtener más información, consulte Patrón de ruta (p. 38).

• Los comportamientos de la caché son solicitudes de redirección hacia los orígenes correctos.

Protocolos y cifrados admitidosPuede elegir ajustes HTTPS tanto para la comunicación entre los espectadores y CloudFront como entreCloudFront y su origen:

• Entre espectadores y CloudFront: si necesita HTTPS entre espectadores y CloudFront, también puedeelegir una política de seguridad, que determina a los protocolos que los espectadores y CloudFrontpueden usar para comunicarse. Además, una política de seguridad determina qué cifrados deCloudFront se pueden utilizar para cifrar el contenido que devuelve a los espectadores.

• Entre CloudFront y su origen: si necesita HTTPS entre CloudFront y su origen, también puede elegir losprotocolos que CloudFront y su origen utiliza para comunicarse. Los protocolos que elija determinan quécifrados puede utilizar su origen para cifrar el contenido que devuelve a CloudFront.

Temas• Protocolos SSL/TLS y cifrados admitidos para comunicación entre espectadores y

CloudFront (p. 92)• Protocolos SSL/TLS y cifrados soportados para comunicación entre CloudFront y su origen (p. 94)

Protocolos SSL/TLS y cifrados admitidos para comunicaciónentre espectadores y CloudFrontPara elegir si exigir HTTPS entre los espectadores y CloudFront, especifique el valor aplicable en ViewerProtocol Policy (p. 39).

Si elige requerir HTTPS, también elige la política de seguridad que desea que utilice CloudFront para lasconexiones HTTPS. Una política de seguridad determina dos ajustes:

• El protocolo SSL/TLS que utiliza CloudFront para comunicarse con los espectadores• El cifrado que utiliza CloudFront para cifrar el contenido que devuelve a los espectadores

Le recomendamos que especifique TLSv1.1_2016 a menos que sus usuarios utilicen navegadores odispositivos que no sean compatibles con TLSv1.1 o una versión posterior. Al utilizar un certificado SSLpersonalizado y SNI, debe utilizar TLSv1 o una versión posterior.

Para elegir una política de seguridad, especifique el valor aplicable para Política de seguridad (p. 47). Enla siguiente tabla se muestran los protocolos y los cifrados que CloudFront puede utilizar para cada políticade seguridad.

Un espectador debe admitir al menos uno de los cifrados compatibles para establecer una conexiónHTTPS con CloudFront. Si utiliza un certificado SSL/TLS en AWS Certificate Manager, un espectador

Versión de API 2016-09-2992

Amazon CloudFront Guía para desarrolladoresProtocolos y cifrados admitidos

debe admitir alguno de los cifrados *-RSA-*. CloudFront elige un cifrado en el orden mostrado de entre loscifrados que admite el espectador. Véase también Nombre del cifrado OpenSSL y RFC (p. 93).

  Política de seguridad

TLSv1.2 ♦ ♦ ♦ ♦ ♦

TLSv1.1 ♦ ♦ ♦ ♦  

TLSv1 ♦ ♦ ♦    

SSLv3 ♦        

Cifrados admitidos

ECDHE-RSA-AES128-GCM-SHA256 ♦ ♦ ♦ ♦ ♦

ECDHE-RSA-AES128-SHA256 ♦ ♦ ♦ ♦ ♦

ECDHE-RSA-AES128-SHA ♦ ♦ ♦ ♦  

ECDHE-RSA-AES256-GCM-SHA384 ♦ ♦ ♦ ♦ ♦

ECDHE-RSA-AES256-SHA384 ♦ ♦ ♦ ♦ ♦

ECDHE-RSA-AES256-SHA ♦ ♦ ♦ ♦  

AES128-GCM-SHA256 ♦ ♦ ♦ ♦ ♦

AES256-GCM-SHA384 ♦ ♦ ♦ ♦ ♦

AES128-SHA256 ♦ ♦ ♦ ♦ ♦

AES256-SHA ♦ ♦ ♦ ♦  

AES128-SHA ♦ ♦ ♦ ♦  

DES-CBC3-SHA ♦ ♦      

RC4-MD5 ♦        

Nombre del cifrado OpenSSL y RFC

OpenSSL e IETF RFC 5246, el Protocolo Transport Layer Security (TLS) Versión 1.2, utiliza nombresdistintos para los mismos cifrados. En la siguiente tabla se asigna el nombre de OpenSSL al nombre deRFC para cada uno de los cifrados.

Nombre del cifradoOpenSSL

Nombre del cifrado RFC

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

Versión de API 2016-09-2993

Amazon CloudFront Guía para desarrolladoresProtocolos y cifrados admitidos

Nombre del cifradoOpenSSL

Nombre del cifrado RFC

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

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

Protocolos SSL/TLS y cifrados soportados para comunicaciónentre CloudFront y su origenSi elige que requiera HTTPS entre CloudFront y su origen, puede decidir el protocolo SSL/TLS que deseapermitir para la conexión segura y, a continuación elegir cualquier cifrado admitido para CloudFront(consulte las tablas siguientes) para establecer una conexión HTTPS con su origen.

CloudFront puede reenviar solicitudes HTTPS al servidor de origen utilizando los cifrados ECDSA o RSAque se indican en esta sección. El servidor de origen debe admitir al menos uno de estos códigos cifradosde CloudFront para establecer una conexión HTTPS a su origen. Para obtener más información sobre losdos tipos de cifrados que admite CloudFront, consulte Acerca de los cifrados RSA y ECDSA (p. 89).

Note

Las curvas siguientes son compatibles con los cifrados basados en curvas elípticas:

• prime256v1• secp384r1

OpenSSL e IETF RFC 5246, el Protocolo Transport Layer Security (TLS) Versión 1.2, utiliza nombresdistintos para los mismos cifrados. En las siguientes tablas se asigna el nombre de OpenSSL al nombre deRFC para cada uno de los cifrados.

Cifrados de RSA compatibles

CloudFront admite los siguientes cifrados de RSA para las conexiones con un origen:

Versión de API 2016-09-2994

Amazon CloudFront Guía para desarrolladoresCargos por conexiones HTTPS

Nombre del cifradoOpenSSL

Nombre del cifrado RFC

ECDHE-RSA-AES128-SHA256

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

ECDHE-RSA-AES256-SHA384

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

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

Cifrados de ECDSA admitidos

CloudFront admite los siguientes cifrados de ECDSA para las conexiones con un origen:

Nombre del cifradoOpenSSL

Nombre del cifrado RFC

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

Cargos por conexiones HTTPSSiempre se aplica un recargo por solicitudes HTTPS. Para obtener más información, consulte Precios deAmazon CloudFront.

Usar nombres de dominio alternativos y HTTPSSi desea utilizar su propio nombre de dominio en las URL de sus objetos (por ejemplo, https://www.example.com/image.jpg) y desea que los espectadores utilicen HTTPS, debe completar los

Versión de API 2016-09-2995

Amazon CloudFront Guía para desarrolladoresDecidir cómo CloudFront atiende solicitudes HTTPS

pasos adicionales que se describen en este tema. (Si utiliza el nombre de dominio de distribución deCloudFront predeterminado en las URL, por ejemplo, https://d111111abcdef8.cloudfront.net/image.jpg, siga las instrucciones del siguiente tema: Exigir HTTPS para la comunicación entreespectadores y CloudFront (p. 86)).

Important

Cuando añade un certificado a su distribución, CloudFront propaga inmediatamente el certificadoen todas sus ubicaciones de borde. A medida que haya nuevas ubicaciones de borde disponibles,CloudFront también propagará el certificado a dichas ubicaciones. No puede restringir lasubicaciones de borde a las que CloudFront que propaga los certificados.

Temas• Decidir cómo CloudFront atiende solicitudes HTTPS (p. 96)• Requisitos para la utilización de certificados SSL/TLS con CloudFront (p. 98)• Límites de utilización de certificados SSL/TLS con CloudFront (solo para HTTPS entre espectadores y

CloudFront) (p. 101)• Configurar nombres de dominio alternativos y HTTPS (p. 102)• Determinar el tamaño de la clave pública en un certificado SSL/TLS (p. 106)• Ampliar el límite de certificados SSL/TLS (p. 106)• Rotar certificados SSL/TLS (p. 107)• Volver de un certificado SSL/TLS personalizado al certificado de CloudFront predeterminado (p. 108)• Cambiar de un certificado SSL/TLS personalizado con direcciones IP dedicadas a SNI (p. 109)

Decidir cómo CloudFront atiende solicitudes HTTPSSi desea que sus espectadores usen HTTPS y desea utilizar nombres de dominio alternativos para susobjetos, debe elegir una de las opciones siguientes para el modo en que CloudFront atiende las solicitudesHTTPS:

• Utilizar una dirección IP dedicada en cada ubicación de borde• Utilizar la indicación de nombre de servidor (SNI)

En esta sección se explica cómo funciona cada opción.

Uso de direcciones IP dedicadas para atender solicitudes HTTPS(funciona en todos los clientes)Si configura CloudFront para atender solicitudes HTTPS utilizando direcciones IP dedicadas, CloudFrontasocia su nombre de dominio alternativo a una dirección IP dedicada en cada ubicación de borde deCloudFront. Cuando un espectador envía una solicitud HTTPS de contenido, esto es lo que ocurre:

1. El DNS dirige la solicitud hacia la dirección IP de su distribución en la ubicación de borde aplicable.2. CloudFront utiliza la dirección IP para identificar la distribución y determinar qué certificado SSL/TLS

devolver al espectador.3. El espectador y CloudFront llevan a cabo una negociación SSL/TLS con su certificado SSL/TLS.4. CloudFront devuelve el contenido solicitado al espectador.

Este método funciona con cualquier solicitud HTTPS, independientemente del navegador o espectador queesté utilizando el usuario.

Versión de API 2016-09-2996

Amazon CloudFront Guía para desarrolladoresDecidir cómo CloudFront atiende solicitudes HTTPS

Important

Si configura CloudFront para atender solicitudes HTTPS utilizando direcciones IP dedicadas,se le cobrarán una cuota mensual adicional. El cargo comienza cuando asocia el certificadoSSL/TLS a una distribución y la habilita. Para obtener más información acerca de los preciosde CloudFront, consulte Precios de Amazon CloudFront. Además, consulte Using the SameCertificate for Multiple CloudFront Distributions (p. 102).

Uso de SNI para atender solicitudes HTTPS (funciona en lamayoría de los clientes)Si configura CloudFront para atender solicitudes HTTPS mediante la Indicación de nombre de servidor(SNI), CloudFront asocia su nombre de dominio alternativo con una dirección IP para cada ubicación deborde, pero la dirección IP no está dedicada a la distribución. Cuando un espectador envía una solicitudHTTPS de contenido, el DNS dirige la solicitud a la dirección IP de la ubicación de borde aplicable. Sinembargo, como la dirección IP no está dedicada a la distribución, CloudFront no puede determinar paraqué dominio es la solicitud en función de la dirección IP.

La negociación SSL/TLS se produce muy pronto en el proceso de establecimiento de una conexiónHTTPS. Si CloudFront no puede determinar inmediatamente para qué dominio es la solicitud, interrumpela conexión. Usar una dirección IP dedicada es una manera de asociar una solicitud a un dominio. La otraes SNI, que es una extensión del protocolo TLS compatible con la mayoría de los navegadores modernos.Cuando un espectador que admite SNI envía una solicitud HTTPS de contenido, esto es lo que ocurre:

1. El espectador obtiene automáticamente el nombre de dominio de la URL de la solicitud y lo añade a uncampo en el encabezado de la solicitud.

2. Cuando CloudFront recibe la solicitud, identifica el nombre de dominio en el encabezado de la solicitud yresponde a la solicitud con el certificado SSL/TLS aplicable.

3. El espectador y CloudFront llevan a cabo la negociación SSL/TLS.4. CloudFront devuelve el contenido solicitado al espectador.

Para obtener una lista actual de los navegadores que admiten SNI, consulte la entrada de Wikipedia deServer Name Indication.

Si desea utilizar SNI pero algunos de los navegadores de los usuarios no lo admiten, dispone de variasopciones:

• Configurar CloudFront para atender solicitudes HTTPS a través de direcciones IP dedicadas en lugar deSNI.

• Utilizar el certificado SSL/TLS de CloudFront en lugar de un certificado personalizado. Esto requiere queutilice el nombre de dominio de CloudFront de su distribución en las URL de sus objetos, por ejemplo,https://d111111abcdef8.cloudfront.net/logo.png.

Si utiliza el certificado de CloudFront predeterminado, los espectadores deben admitir protocoloSSL TLSv1 o versiones posteriores. CloudFront no admite SSLv3 con el certificado de CloudFrontpredeterminado.

También deberá cambiar el certificado SSL/TLS que CloudFront utiliza, de un certificado personalizadoal 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 Visualizar y actualizar distribuciones (p. 53).• Si ha usado la distribución para distribuir su contenido, debe crear una nueva distribución de

CloudFront y cambiar las direcciones URL de sus objetos para reducir o eliminar la cantidad de tiempoque su contenido no está disponible. Para obtener más información, consulte Volver de un certificadoSSL/TLS personalizado al certificado de CloudFront predeterminado (p. 108).

Versión de API 2016-09-2997

Amazon CloudFront Guía para desarrolladoresRequisitos para la utilización de

certificados SSL/TLS con CloudFront

• Si puede controlar qué navegador utilizarán los usuarios, haga que lo actualicen a uno que admita SNI.• Utilice HTTP en lugar de HTTPS.

Requisitos para la utilización de certificados SSL/TLScon CloudFrontEn este tema se describen los requisitos de los certificados SSL/TLS. Salvo que se indique lo contrario, seaplicarán a estos dos tipos de certificados:

• Certificados para las comunicaciones HTTPS entre los espectadores y CloudFront• Certificados para las comunicaciones HTTPS entre CloudFront y un origen

Temas• Emisor de certificados (p. 98)• Región de AWS en la que se solicita un certificado (para AWS Certificate Manager) (p. 99)• Formato del certificado (p. 99)• Certificados intermedios (p. 99)• Tipo de clave (p. 99)• Clave privada (p. 99)• Permisos (p. 100)• Tamaño de la clave pública (p. 100)• Tipos de certificados admitidos (p. 100)• Fecha de vencimiento y renovación de certificados (p. 100)• Nombres de dominio en la distribución de CloudFront y en el certificado (p. 100)• Versión mínima de protocolo SSL (p. 101)• Versiones de HTTP compatibles (p. 101)

Emisor de certificadosEl emisor del certificado que debe utilizar depende de se va a utilizar HTTPS entre los espectadores yCloudFront o entre CloudFront y el origen:

• HTTPS entre los espectadores y CloudFront: puede utilizar un certificado de confianza emitido poruna entidad de certificación (CA) de confianza como Comodo, DigiCert o Symantec; puede utilizar uncertificado proporcionado por AWS Certificate Manager (ACM) o uno autofirmado.

• HTTPS entre CloudFront y un origen personalizado: si el origen no es un balanceador de carga ELB,como Amazon EC2, el certificado deberá ser expedido por una CA de confianza como Comodo,DigiCert o Symantec. Si el origen es un balanceador de carga ELB, también puede utilizar un certificadoproporcionado por ACM.

Important

Cuando CloudFront utiliza HTTPS para comunicarse con su origen, verifica que el certificadohaya sido emitido por una CA de confianza. CloudFront admite las mismas autoridadescertificadoras que Mozilla; para consultar la lista actualizada, visite Mozilla Included CACertificate List. No puede utilizar un certificado autofirmado para comunicación HTTPS entreCloudFront y su origen.

Versión de API 2016-09-2998

Amazon CloudFront Guía para desarrolladoresRequisitos para la utilización de

certificados SSL/TLS con CloudFront

Para obtener más información acerca de cómo obtener e instalar un certificado SSL/TLS, consulte ladocumentación de su software del servidor HTTP y la de la autoridad de certificados. Para obtener másinformación acerca de ACM, consulte la Guía del usuario de AWS Certificate Manager.

Región de AWS en la que se solicita un certificado (para AWSCertificate Manager)Si desea solicitar HTTPS entre los espectadores y CloudFront, debe cambiar la región de AWS a la USEast (N. Virginia) en la consola de AWS Certificate Manager antes de solicitar o importar un certificado.

Si desea solicitar HTTPS entre CloudFront y su origen y está utilizando un balanceador de carga de ELBcomo origen, puede solicitar o importar un certificado en cualquier región.

Formato del certificadoEl certificado debe tener el formato X.509 PEM. Este es el formato predeterminado si utiliza AWSCertificate Manager.

Certificados intermediosSi utiliza una entidad de certificación (CA) de terceros, en el archivo .pem, incluya una lista de todoslos certificados intermedios de la cadena de certificados, comenzando por uno para el CA que firmó elcertificado para el dominio. Normalmente, en el sitio web de la CA encontrará un archivo que enumera loscertificados 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 deconfianza, ni el certificado de clave pública de la CA.

A continuación se muestra un ejemplo:

-----BEGIN CERTIFICATE----- Intermediate certificate 2 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Intermediate certificate 1 -----END CERTIFICATE-----

Tipo de claveCloudFront admite únicamente pares de claves pública/privada de RSA.

Clave privadaSi 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. Laclave privada se almacena en ACM para que la usen los servicios de AWS integrados con ACM.

Versión de API 2016-09-2999

Amazon CloudFront Guía para desarrolladoresRequisitos para la utilización de

certificados SSL/TLS con CloudFront

PermisosDebe tener permiso para utilizar e importar el certificado SSL/TLS, incluido el permiso de la entidad decertificación (CA) que expidió el certificado para importarlo en una red de entrega de contenido (CDN).

Si utiliza AWS Certificate Manager (ACM), le recomendamos que utilice los permisos de AWS Identity andAccess Management necesarios para restringir el acceso a los certificados. Para obtener más información,consulte Permissions and Policies en la Guía del usuario de AWS Certificate Manager.

Tamaño de la clave públicaLa longitud de la clave pública de un certificado depende del lugar en el que lo almacene.

• Importación de un certificado en AWS Certificate Manager (ACM): la longitud de la clave pública debeser de 1 024 o 2 048 bits. El límite de un certificado que utiliza con CloudFront es 2 048 bits, aunquedesde ACM admite claves de mayor tamaño.

• Carga de un certificado en el almacén de certificados de AWS Identity and Access Management (IAM): eltamaño máximo de la clave pública es de 2 048 bits.

Recomendamos utilizar 2 048 bits.

Para obtener información acerca de las claves públicas de los certificados proporcionados por ACMconsulte 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 eltamaño de la clave pública en un certificado SSL/TLS (p. 106).

Tipos de certificados admitidosCloudFront admite todos los tipos de certificados, incluidos los siguientes:

• Certificados validados por dominio• Certificados de validación extendida (EV)• Certificados de seguridad alta• Certificados comodín (*.example.com)• Certificados de nombre alternativo de sujeto (SAN) (example.com y example.net)

Fecha de vencimiento y renovación de certificadosSi utiliza certificados obtenidos de una entidad de certificación (CA) de terceros, es su responsabilidadmonitorizar fechas de vencimiento y renovar los certificados SSL/TLS que importe en AWS CertificateManager (ACM) o cargue en el almacén de certificados de AWS Identity and Access Management.

Si utiliza certificados proporcionados ACM ACM se encarga de administrar esas renovaciones. Paraobtener más información, consulte Managed Renewal en la Guía del usuario de AWS Certificate Manager.

Nombres de dominio en la distribución de CloudFront y en elcertificadoCuando se utiliza un origen personalizado, el certificado SSL/TLS del origen incluye un nombre dedominio en el campo Common Name y, posiblemente, varios más en el campo Subject Alternative Names.(CloudFront admite caracteres comodín en nombres de dominio de certificados).

Versión de API 2016-09-29100

Amazon CloudFront Guía para desarrolladoresLímites de utilización de certificadosSSL/TLS con CloudFront (solo para

HTTPS entre espectadores y CloudFront)Uno de los nombres de dominio del certificado debe coincidir con el nombre de dominio que especifiqueen Origin Domain Name. Si no coincide ningún nombre de dominio, CloudFront devuelve al espectador uncódigo de estado HTTP 502 (Puerta de enlace incorrecta).

Versión mínima de protocolo SSLSi utiliza direcciones IP dedicadas, puede elegir la versión mínima de protocolo SSL exigida para laconexión entre espectadores y CloudFront eligiendo una política de seguridad.

Para obtener más información, consulte Política de seguridad (p. 47) en el tema Valores que debenespecificarse al crear o actualizar una distribución (p. 30).

Versiones de HTTP compatiblesSi asocia un certificado a más de una distribución de CloudFront, todas las distribuciones asociadas alcertificado deben utilizar la misma opción en Versiones de HTTP compatibles (p. 47). Esta opción seespecifica al crear o actualizar una distribución de CloudFront.

Límites de utilización de certificados SSL/TLS conCloudFront (solo para HTTPS entre espectadores yCloudFront)Tenga en cuenta los siguientes límites de uso de certificados SSL/TLS con CloudFront. Estos límites sonaplicables únicamente a los certificados SSL/TLS que aprovisione mediante AWS Certificate Manager(ACM) o que importe a ACM o cargue en el almacén de certificados de IAM para la comunicación conHTTPS entre espectadores y CloudFront.

Cantidad máxima de certificados por distribución de CloudFront

Puede asociar un máximo de un certificado SSL/TLS a cada distribución de CloudFront.Cantidad máxima de certificados que puede importar a ACM o cargar en el almacén de certificados de IAM

Si ha obtenido sus certificados SSL/TLS de un distribuidor CA de terceros, debe almacenarlos en unade las siguientes ubicaciones:• AWS Certificate Manager: consulte el límite actual de certificados de ACM en Limits en la Guía del

usuario de AWS Certificate Manager. El límite mostrado es un total que incluye los certificados queaprovisione mediante ACM y los que importe a ACM.

• Almacén de certificados de IAM: consulte el límite actual de certificados que puede cargar en elalmacén de certificados de IAM para una cuenta de AWS en Limitations on IAM Entities and Objectsen la Guía del usuario de IAM. Para solicitar una ampliación del límite, consulte Request IAM limitincrease.

Cantidad máxima de certificados por cuenta de AWS (solo direcciones IP dedicadas)

Si desea atender solicitudes HTTPS a través de direcciones IP dedicadas, tenga en cuenta losiguiente:• De forma predeterminada, CloudFront le concede permisos para utilizar dos certificados con su

cuenta de AWS, uno para uso diario y otro para cuando necesite rotar certificados para variasdistribuciones.

• Si ya está usando esta característica pero necesita aumentar la cantidad de certificados SSL/TLSpersonalizados que puede utilizar con su cuenta de AWS, diríjase al Centro de soporte y creeun caso. Indique la cantidad de certificados a utilizar para la que necesita permiso y describa lascircunstancias en su solicitud. Actualizaremos su cuenta tan pronto como sea posible.

Versión de API 2016-09-29101

Amazon CloudFront Guía para desarrolladoresConfigurar nombres de dominio alternativos y HTTPS

Utilizar el mismo certificado para distribuciones de CloudFront que fueron creadas con distintos cuentas deAWS

Si utiliza un distribuidor CA de terceros y si desea utilizar el mismo certificado con varias distribucionesde CloudFront creadas desde diferentes cuentas de AWS, debe importar el certificado a ACM ocargarlo 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 utilizarcertificados creados por otra cuenta de AWS.

Utilizar el mismo certificado para CloudFront y para otros servicios de AWS (solo almacén de certificadosde IAM)

Si ha comprado un certificado de una autoridad de certificados de confianza como Comodo DigiCerto Symantec, puede utilizar el mismo certificado para CloudFront y para otros servicios de AWS. Siimporta el certificado a ACM, es suficiente importarlo solo una vez para utilizarlo con varios serviciosde AWS.

Si utiliza certificados proporcionados por ACM, estos se almacenan en ACM.Utilizar el mismo certificado con varias distribuciones de CloudFront

Puede utilizar el mismo certificado con una o todas las distribuciones de CloudFront que utilice paraatender 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 costosutilizando el mismo certificado para todas las distribuciones. CloudFront aplica cargos porcertificado, no por distribución.

Por ejemplo, suponga que crea tres distribuciones desde la misma cuenta de AWS y que utiliza elmismo certificado para las tres distribuciones. Se le aplicará solo un cargo por el uso de direccionesIP dedicadas.

Sin embargo, si atiende solicitudes de HTTPS utilizando direcciones IP dedicadas y el mismocertificado para crear distribuciones de CloudFront en diferentes cuentas de AWS, a cada cuentase le cobrará el cargo aplicable al uso de direcciones IP dedicadas. Por ejemplo, si crea tresdistribuciones desde tres cuentas de AWS diferentes y utiliza el mismo certificado para las tresdistribuciones, a cada cuenta se cargará la tarifa completa de uso de direcciones IP dedicadas.

Configurar nombres de dominio alternativos y HTTPSPara utilizar nombres de dominio alternativo en las URL de los objetos y HTTPS entre los espectadores yCloudFront, siga los procedimientos aplicables.

Temas• Solicitar permiso para utilizar tres o más certificados SSL/TLS (p. 103)• Obtener un certificado SSL/TLS (p. 103)• Importar un certificado SSL/TLS (p. 103)• Actualizar la distribución de CloudFront (p. 104)

Versión de API 2016-09-29102

Amazon CloudFront Guía para desarrolladoresConfigurar nombres de dominio alternativos y HTTPS

Solicitar permiso para utilizar tres o más certificados SSL/TLSSi necesita permiso para asociar de forma permanente tres o más certificados de IP dedicada SSL/TLScon CloudFront, siga el siguiente procedimiento. Para obtener más detalles acerca de solicitudes HTTPS,consulte Decidir cómo CloudFront atiende solicitudes HTTPS (p. 96).

Note

Este es el procedimiento a seguir para utilizar 3 o más certificados DedicatedIP en susdistribuciones de CloudFront. El valor predeterminado es 2. Tenga en cuenta que no puedevincular más de 1 certificado SSL a una distribución.Solo puede asociar un único certificado SSL/TLS a una distribución de CloudFront por vez. Estees el total de certificados SSL de IP dedicadas que puede utilizar en todas sus distribuciones deCloudFront.

Para solicitar permiso para utilizar tres o más certificados con una distribución de CloudFront

1. Vaya al Centro de soporte y cree un caso.2. Indique la cantidad de certificados a utilizar para la que necesita permiso y describa las circunstancias

en su solicitud. Actualizaremos su cuenta tan pronto como sea posible.3. Continúe con el siguiente procedimiento.

Obtener un certificado SSL/TLSObtenga un certificado SSL/TLS si no dispone de uno. Para obtener más información, consulte ladocumentación aplicable:

• Para utilizar un certificado proporcionado por AWS Certificate Manager (ACM), consulte la Guíadel usuario de AWS Certificate Manager. A continuación, vaya a Actualizar la distribución deCloudFront (p. 104).

Note

Le recomendamos que utilice ACM para aprovisionar, administrar e implementar los certificadosSSL/TLS en los recursos administrados de AWS.

• Para obtener un certificado de una entidad de certificación (CA) de terceros, consulte la documentaciónque proporciona. Cuando tenga el certificado, continúe con el siguiente procedimiento.

• Para crear un certificado autofirmado, consulte la documentación de la aplicación que está utilizandopara crear y firmar el certificado. A continuación, pase al siguiente procedimiento.

Importar un certificado SSL/TLSSi ha obtenido el certificado de una CA de terceros, importe el certificado a ACM o cárguelo en el almacénde certificados de IAM:

ACM (recomendado)

ACM le permite importar certificados de terceros desde la consola de ACM y de forma programada.Para obtener más información acerca de la importación de certificados en ACM, consulte Importarcertificados a AWS Certificate Manager en la Guía del usuario de AWS Certificate Manager.

Almacén de certificados de IAM

Si ACM no está disponible en su región, use el siguiente comando de la AWS CLI para cargar sucertificado de terceros en el almacén de certificados de IAM. (Para obtener una lista de las regionesdonde está disponible ACM, consulte AWS Certificate Manager en el capítulo "Regiones y puntos deenlace de AWS" de la Referencia general de Amazon Web Services).

Versión de API 2016-09-29103

Amazon CloudFront Guía para desarrolladoresConfigurar nombres de dominio alternativos y HTTPS

aws iam upload-server-certificate --server-certificate-name CertificateName --certificate-body file://public_key_certificate_file --private-key file://privatekey.pem --certificate-chain file://certificate_chain_file --path /cloudfront/path/

Tenga en cuenta lo siguiente:• Cuenta de AWS: debe cargar el certificado en el almacén de certificados de IAM desde la misma

cuenta de AWS que utilizó para crear su distribución de CloudFront.• Parámetro --path: al cargar el certificado a IAM, el valor del parámetro -path (ruta del certificado)

debe comenzar por /cloudfront/, por ejemplo, /cloudfront/production/ o /cloudfront/test/. La ruta debe acabar con una /.

• Certificados existentes: debe especificar valores para los parámetros --server-certificate-name y --path que sean distintos de los valores asociados a los certificados existentes.

• Con la consola de CloudFront: el valor que especifique en el parámetro --server-certificate-name en la CLI de AWS CLI, por ejemplo, myServerCertificate, aparece en la lista SSLCertificate de la consola de CloudFront.

• Con la API de CloudFront: anote la cadena alfanumérica que devuelve la CLI de AWS, porejemplo, AS1A2M3P4L5E67SIIXR3J. Este es el valor que se especifica en el elementoIAMCertificateId. No es necesario el ARN de IAM, que también es devuelto por la CLI.

Para obtener más información acerca de la AWS CLI, consulte la AWS Command Line Interface Guíadel usuario y la AWS CLI Command Reference.

Actualizar la distribución de CloudFrontPara actualizar la configuración de su distribución, realice el siguiente procedimiento:

Para configurar su distribución de CloudFront para nombres de dominio alternativos

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Elija la ID de la distribución que desea actualizar.3. En la pestaña General, seleccione Edit.4. Actualice los siguientes valores:

Nombres de dominio alternativos (CNAME)

Añada los nombres de dominio alternativos aplicables. Separe los nombres de dominio concomas o escriba uno por línea.

Certificado SSL (solo para distribuciones web)

Elija Custom SSL Certificate y seleccione un certificado de la lista.

Aquí se enumeran hasta 100 certificados. Si tiene más de 100 certificados y no ve el certificadoque desea añadir, puede escribir un ARN de certificado en el campo para elegirlo.

Si ha cargado un certificado al almacén de certificados de IAM pero no está en la lista y no puedeelegirlo escribiendo el nombre en el campo, revise el procedimiento Importar un certificado SSL/TLS (p. 103) para confirmar que el certificado se ha cargado correctamente.

Important

Tras asociar el certificado SSL/TLS a la distribución de CloudFront, no elimine elcertificado desde ACM o del almacén de certificados de IAM hasta que lo elimine detodas las distribuciones y hasta que el estado de las distribuciones haya cambiado aDeployed.

Versión de API 2016-09-29104

Amazon CloudFront Guía para desarrolladoresConfigurar nombres de dominio alternativos y HTTPS

Clientes compatibles (solo para distribuciones web)

Elija la opción aplicable:• All Clients: CloudFront ofrece su contenido HTTPS mediante direcciones IP dedicadas. Si

selecciona esta opción, se le cobrarán los cargos adicionales al asociar su certificado SSL/TLS a una distribución habilitada. Para obtener más información, consulte Precios de AmazonCloudFront.

• Only Clients that Support Server Name Indication (SNI): navegadores antiguos u otros clientesque no admitan SNI deben usar otro método para obtener acceso a su contenido.

Para obtener más información, consulte Decidir cómo CloudFront atiende solicitudesHTTPS (p. 96).

5. Seleccione Yes, Edit.6. Configure CloudFront para exigir HTTPS entre los espectadores y CloudFront

a. En la pestaña Behaviors, elija el comportamiento de la caché que desee actualizar y después elijaEdit.

b. Especifique exactamente uno de los siguientes valores en Viewer Protocol Policy:

Redireccionamiento de HTTP a HTTPS

Los espectadores pueden usar tanto el protocolo HTTP como el HTTPS, pero las solicitudesHTTP se redirigirán automáticamente a solicitudes HTTPS. CloudFront devuelve el códigode estado HTTP 301 (Movido permanentemente) junto con la nueva URL HTTPS. Acontinuación, el espectador vuelve a enviar la solicitud a CloudFront través de la nueva URLHTTPS.

Important

CloudFront no redirige las solicitudes DELETE, OPTIONS, PATCH, POST ni PUTde HTTP a HTTPS. Si configura un comportamiento de la caché para que redirijaa 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 espectador realiza una solicitud HTTP que se redirige a una solicitud HTTPS,los cargos de CloudFront resultan aplicables a ambas solicitudes. En el caso de la solicitudHTTP, el cargo es solo para la solicitud y para los encabezados que CloudFront devuelveal espectador. En el caso de la solicitud HTTPS, el cargo es por la solicitud y por losencabezados y el objeto devueltos por el origen.

Solo HTTPS

Los espectadores pueden obtener acceso a su contenido solo si utilizan HTTPS. Si unespectador envía una solicitud HTTP en lugar de una solicitud HTTPS, CloudFront devuelvecódigo de estado HTTP 403 (Prohibido) y no devuelve el objeto.

c. Seleccione Yes, Edit.d. Repita los pasos "a" a "c" para cada comportamiento de la caché adicional para el que desee

solicitar HTTPS entre los espectadores y CloudFront.7. Confirme lo siguiente antes de utilizar la configuración actualizada en un entorno de producción:

• El patrón de ruta de cada comportamiento de la caché es aplicable únicamente a las solicitudes enlas que desea que los espectadores utilicen HTTPS.

• Los comportamientos de la caché se enumeran en el orden en que desee que CloudFront losevalúe. Para obtener más información, consulte Patrón de ruta (p. 38).

• Los comportamientos de la caché son solicitudes de redirección hacia los orígenes correctos.Versión de API 2016-09-29105

Amazon CloudFront Guía para desarrolladoresDeterminar el tamaño de la clavepública en un certificado SSL/TLS

Determinar el tamaño de la clave pública en uncertificado SSL/TLSAl utilizar nombres de dominio alternativos de CloudFront y HTTPS, el tamaño máximo de la clave públicaen un certificado SSL/TLS es 2 048 bits. (Este es el tamaño de la clave, no es la cantidad de caracteresde la clave pública). Si utiliza AWS Certificate Manager para sus certificados, tenga en cuenta que aunqueACM admite claves más grandes, no puede utilizar las claves más grandes con CloudFront.

Puede determinar el tamaño de la clave pública al ejecutar el siguiente comando OpenSSL:

openssl x509 -in path and filename of SSL/TLS certificate -text -noout

donde:

• -in especifica la ruta y nombre de archivo de su certificado SSL/TLS.• -text provoca que OpenSSL muestre la longitud de la clave pública en bits.• -noout impide que OpenSSL muestre la clave pública.

Ejemplo del resultado:

Public-Key: (2048 bit)

Ampliar el límite de certificados SSL/TLSHay límites en cuanto a la cantidad de certificados SSL/TLS que puede importar a AWS CertificateManager o cargar en AWS Identity and Access Management. También hay un límite en cuanto a lacantidad de certificados SSL/TLS que puede utilizar con una cuenta de AWS al configurar CloudFront paraatender solicitudes HTTPS a través direcciones IP dedicadas. Sin embargo, puede solicitar una ampliaciónde dichos límites.

Temas• Certificados que puede importar a ACM (p. 106)• Certificados que puede cargar en IAM (p. 107)• Certificados que puede usar con direcciones IP dedicadas (p. 107)

Certificados que puede importar a ACMPara consultar la cantidad máxima de certificados que puede importar a ACM, visite Límites de ACM en laReferencia general de Amazon Web Services.

Para solicitar una ampliación del límite, abra un caso en el Centro AWS Support. Especifique los valoressiguientes:

• Regarding: acepte el valor predeterminado de Service Limit Increase.• Limit Type: seleccione Certificate Manager.• Region: especifique la región de AWS a la que desea importar los certificados.• Limit: elija (ACM) Number of ACM Certificates.

Finalmente, rellene el resto del formulario.

Versión de API 2016-09-29106

Amazon CloudFront Guía para desarrolladoresRotar certificados SSL/TLS

Certificados que puede cargar en IAMPara consultar la cantidad máxima de certificados que puede cargar en IAM, visite Límites de IAM en laReferencia general de Amazon Web Services.

Para solicitar una ampliación del límite, abra un caso en el Centro AWS Support. Especifique los valoressiguientes:

• Regarding: acepte el valor predeterminado de Service Limit Increase.• Limit Type: seleccione Certificate Manager.• Region: especifique la región de AWS a la que desea importar los certificados.• Limit: elija (IAM) Server Certificate Limit.

Finalmente, rellene el resto del formulario.

Certificados que puede usar con direcciones IP dedicadasPara consultar la cantidad máxima de certificados SSL que puede utilizar por cuenta de AWS si atiendesolicitudes HTTPS utilizando direcciones IP dedicadas, visite Límites de CloudFront en la Referenciageneral de Amazon Web Services.

Para solicitar una ampliación del límite, abra un caso en el Centro AWS Support. Especifique los valoressiguientes:

• Regarding: acepte el valor predeterminado de Service Limit Increase.• Limit Type: acepte el valor predeterminado de CloudFront Distributions.• Limit: elija Dedicated IP SSL Certificate Limit per Account.

Finalmente, rellene el resto del formulario.

Rotar certificados SSL/TLSSi utiliza certificados proporcionados por AWS Certificate Manager (ACM), no es necesario rotarcertificados SSL/TLS. ACM administra las renovaciones de los certificados. Para obtener más información,consulte Managed Renewal en la Guía del usuario de AWS Certificate Manager.

Note

ACM no administra renovaciones de certificados que haya adquirido de autoridades decertificados de terceros y que después haya importado a ACM.

Si utiliza una autoridad de certificados de terceros y ha importado certificados a ACM (recomendado) o losha cargado en el almacén de certificados de IAM, ocasionalmente necesitará sustituir un certificado porotro. Por ejemplo, debe sustituir un certificado cuando se aproxime la fecha de vencimiento del certificado.

Important

Si configura CloudFront para atender solicitudes HTTPS a través de direcciones IP dedicadas,posiblemente se aplique un cargo prorrateado adicional por uso de uno o varios certificadosadicionales mientras rota certificados. Le recomendamos actualizar sus distribuciones cuantoantes para minimizar los cargos adicionales.

Para rotar certificados, realice el siguiente procedimiento. Los espectadores pueden seguir obteniendoacceso a su contenido mientras rota certificados y también una vez completado el proceso.

Versión de API 2016-09-29107

Amazon CloudFront Guía para desarrolladoresVolver de un certificado SSL/TLS personalizado

al certificado de CloudFront predeterminado

Para rotar certificados SSL/TLS

1. Ampliar el límite de certificados SSL/TLS (p. 106) para determinar si necesita permiso para utilizarmás certificados SSL. En caso afirmativo, solicite el permiso y espere hasta que se le conceda antesde continuar con el paso 2.

2. Importe el nuevo certificado a ACM o cárguelo a IAM. Para obtener más información, consulteImporting an SSL/TLS Certificate 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ásinformación, consulte Listing, Viewing, and Updating CloudFront Distributions en la Guía paradesarrolladores de Amazon CloudFront.

4. Después de actualizar todas sus distribuciones de CloudFront, puede eliminar el certificado antiguo deACM o IAM (opcional).

Important

No elimine un certificado SSL/TLS hasta eliminarlo de todas las distribuciones y hasta que elestado de las distribuciones que ha actualizado haya cambiado a Deployed.

Volver de un certificado SSL/TLS personalizado alcertificado de CloudFront predeterminadoSi ha configura CloudFront para usar HTTPS entre los espectadores y CloudFront y ha configuradoCloudFront para utilizar un certificado SSL/TLS personalizado, puede cambiar la configuración para utilizarel certificado SSL/TLS predeterminado de CloudFront. El proceso depende de si ha utilizado la distribuciónpara distribuir su contenido:

• Si no ha usado su distribución para distribuir su contenido, puede simplemente cambiar la configuración.Para obtener más información, consulte Visualizar y actualizar distribuciones (p. 53).

• Si ha usado la distribución para distribuir su contenido, debe crear una nueva distribución de CloudFronty cambiar las direcciones URL de sus objetos para reducir o eliminar la cantidad de tiempo que sucontenido no está disponible. Para ello, realice el siguiente procedimiento.

Para volver al certificado de CloudFront predeterminado

1. Cree una nueva distribución de CloudFront con la configuración deseada. En SSL Certificate, elijaDefault CloudFront Certificate (*.cloudfront.net).

Para obtener más información, consulte Pasos para crear una distribución (Informacióngeneral) (p. 28).

2. Para los objetos que esté distribuyendo con CloudFront, actualice las URL en su aplicaciónpara utilizar el nombre de dominio que CloudFront haya 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 a un certificado SSL/TLS personalizado o actualice la distribución paracambiar el valor de certificado SSL Certificate a Default CloudFront Certificate (*.cloudfront.net). Paraobtener más información, consulte Visualizar y actualizar distribuciones (p. 53).

Important

Hasta que complete este paso, AWS seguirá acumulando cargos por utilizar un certificadoSSL/TLS personalizado.

4. Elimine su certificado SSL/TLS personalizado (opcional).

Versión de API 2016-09-29108

Amazon CloudFront Guía para desarrolladoresCambiar de un certificado SSL/TLS personalizado

con direcciones IP dedicadas a SNI

a. Ejecute el comando de la AWS CLI list-server-certificates para obtener el ID delcertificado que desea eliminar. Para obtener más información, consulte list-server-certificates enla AWS CLI Command Reference.

b. Ejecute el comando de la CLI de AWS delete-signing-certificate para eliminar elcertificado. Para obtener más información, consulte delete-signing-certificate en la AWS CLICommand Reference.

Cambiar de un certificado SSL/TLS personalizado condirecciones IP dedicadas a SNISi configura CloudFront para utilizar un certificado SSL/TLS personalizado con direcciones IP dedicadas,puede utilizar un certificado SSL/TLS personalizado con SNI en su lugar y eliminar el cargo asociado adirecciones IP dedicadas. A continuación se muestra el procedimiento para hacerlo.

Important

Esta actualización de la configuración de CloudFront no afecta a los espectadores que admitenSNI; ellos podrán obtener acceso a su contenido tanto antes como después de los cambios,así como mientras se propagan los cambios a las ubicaciones de borde de CloudFront. Losespectadores que no admiten SNI no podrán obtener acceso a su contenido tras el cambio. Paraobtener más información, consulte Decidir cómo CloudFront atiende solicitudes HTTPS (p. 96).

Para cambiar de un certificado SSL/TLS personalizado con direcciones IP dedicadas a SNI

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Elija el ID de la distribución que desea visualizar o actualizar.3. Elija Distribution Settings.4. En la pestaña General, seleccione Edit.5. Cambie la configuración de Custom SSL Client Support a Only Clients that Support Server Name

Indication (SNI).6. Seleccione Yes, Edit.

Utilizar AWS WAF para controlar el acceso alcontenido

AWS WAF es un firewall de aplicaciones web que permite monitorizar las solicitudes HTTP y HTTPS quese reenvían a CloudFront y permite controlar quién accede a su contenido. En función de las condicionesque especifique, como las direcciones IP de las que provienen las solicitudes o los valores de las cadenasde consulta, CloudFront responde a las solicitudes con el contenido solicitado o con un código deestado HTTP 403 (Prohibido). También puede configurar CloudFront para devolver una página de errorpersonalizada cuando se bloquea una solicitud. Para obtener más información sobre AWS WAF, consulteGuía para desarrolladores de AWS WAF.

Después de crear una lista de control de acceso web (ACL web) de AWS WAF, debe crear o actualizaruna distribución web y asociarla a una ACL web. Puede asociar tantas distribuciones de CloudFrontcomo desee con la misma o con diferentes ACL web. Para obtener información acerca la creación de unadistribución web y su asociación a una ACL web, consulte Creación de una distribución (p. 29).

Para asociar una ACL web a una distribución existente o desvincularlas, o cambiar la ACL web asociada auna distribución, realice el siguiente procedimiento.

Versión de API 2016-09-29109

Amazon CloudFront Guía para desarrolladoresRestricción del acceso a contenido de Amazon S3

Para asociar o desvincular una web ACL de AWS WAF y una distribución de CloudFront desde laconsola de CloudFront

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Elija la ID de la distribución que desea actualizar.3. En la pestaña General, seleccione Edit.4. En la página Distribution Settings (Configuración de distribución), en la lista AWS WAF Web ACL (ACL

Web de &WAF), seleccione la ACL web que desea asociar a esta distribución.

Si desea desvincular la distribución de todas las ACL web, seleccione None. Si desea asociar ladistribución a otra ACL web, elija la nueva ACL web.

5. Seleccione Yes, Edit.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 los ajustes, el valor de la columna Status de las distribuciones que ha actualizado

cambia a InProgress mientras CloudFront propaga los cambios a las ubicaciones de borde. Cuandoel Status (Estado) cambia a Deployed (Implementado) en una distribución, está lista para utilizarAWS WAF al procesar solicitudes. (El valor de la columna State de la distribución también deberá serEnabled). El cambio debería tomar menos de 15 minutos en aplicarse después de guardar el últimocambio en una distribución.

Restricción del acceso a contenido de Amazon S3utilizando una identidad de acceso de origen

Temas• Crear una identidad de acceso de origen de CloudFront y añadirla a la distribución (p. 111)• Otorgar a la identidad de acceso de origen permisos de lectura de objetos del bucket de Amazon

S3 (p. 113)• Usar una identidad de acceso de origen en regiones de Amazon S3 que solo admiten autenticación

mediante Signature Version 4 (p. 115)

Normalmente, si utiliza un bucket de Amazon S3 como el origen de una distribución de CloudFront, leconcede a cualquier persona permisos de lectura de los objetos del bucket. Esto permite a cualquierpersona acceder a sus objetos a través de CloudFront o con la URL de Amazon S3. CloudFront no exponelas URL de Amazon S3, pero los usuarios pueden tener las URL si la aplicación envía objetos directamentedesde Amazon S3 o si alguien proporciona los enlaces directos a determinados objetos en Amazon S3.

Note

También puede restringir el acceso a contenido en un origen personalizado utilizandoencabezados personalizados. Para obtener más información, consulte Utilizar encabezadospersonalizados para restringir el acceso a contenido en un origen personalizado (p. 250).

Si desea utilizar URL firmadas o cookies firmadas de CloudFront para proporcionar acceso a los objetosde su bucket de Amazon S3, lo más probable es que también desee evitar que los usuarios obtenganacceso a sus objetos de Amazon S3 a través de URL de Amazon S3. Si los usuarios obtienen accesoa sus objetos directamente en Amazon S3, están eludiendo los controles proporcionados por las URLfirmadas o las cookies firmadas de CloudFront, como, por ejemplo, el control sobre la fecha y la hora apartir de las cuales un usuario ya no debe obtener acceso a su contenido, o el control de las direccionesIP que pueden obtener acceso al contenido. Además, si los usuarios obtienen acceso a los objetos tanto

Versión de API 2016-09-29110

Amazon CloudFront Guía para desarrolladoresCrear una identidad de acceso de origende CloudFront y añadirla a la distribución

a través de CloudFront como directamente a través de URL de Amazon S3, los registros de acceso deCloudFront pierden utilidad porque quedan incompletos.

Note

Para crear identidades de acceso de origen, debe utilizar la consola de CloudFront o la versión2009-09-09 o posterior de la API de CloudFront.

Para asegurarse de que los usuarios acceden a los objetos solo a través de las URL de CloudFrontindependientemente de que dichas URL estén firmadas, realice las siguientes tareas:

1. Cree una identidad de acceso de origen, que es un usuario especial de CloudFront, y asocie dichaidentidad a su distribución. En el caso de las distribuciones web, asocie la identidad de acceso deorigen a orígenes para poder proteger todos o algunos de los contenidos de Amazon S3. Tambiénpuede 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 identidad de acceso de origen de CloudFront yañadirla a la distribución (p. 111).

2. Cambie los permisos en el bucket de Amazon S3 o en los objetos del bucket para que solo laidentidad de acceso de origen tenga permisos de lectura (o de lectura y descarga). Cuando losusuarios obtienen acceso a los objetos de Amazon S3 a través de CloudFront, la identidad de accesode origen de CloudFront obtiene los objetos en nombre de los usuarios. Si los usuarios solicitanobjetos directamente a través de URL de Amazon S3, se les deniega el acceso. Así, la identidadde acceso de origen tiene permiso para obtener acceso a objetos en el bucket de Amazon S3, perolos usuarios no. Para obtener más información, consulte Otorgar a la identidad de acceso de origenpermisos de lectura de objetos del bucket de Amazon S3 (p. 113).

Para obtener información detallada acerca de la configuración de un bucket de Amazon S3 privado queutilizar con CloudFront, consulte Cómo configurar y servir contenido privado utilizando S3 y AmazonCloudFront.

Crear una identidad de acceso de origen deCloudFront y añadirla a la distribuciónUna cuenta de AWS puede tener hasta 100 identidades de acceso de origen de CloudFront. Sin embargo,puede añadir una identidad de acceso de origen a tantas distribuciones como desee, así que una solasuele ser suficiente.

Si no creó y, por lo tanto, no añadió una identidad de acceso de origen a una distribución cuando lacreó, puede crear y añadir dicha identidad posteriormente mediante la consola de CloudFront o la API deCloudFront:

• Si utiliza la consola de CloudFront: puede crear una identidad de acceso de origen y añadirla a ladistribución en el mismo momento. Para obtener más información, consulte Crear una identidad deacceso de origen y añadirla a la distribución desde la consola de CloudFront (p. 111).

• Si utiliza la API de CloudFront: puede crear una identidad de acceso de origen y después añadirla a ladistribución. Para realizar estos procedimientos, consulte los siguientes temas:• Crear una identidad de acceso de origen mediante la API de CloudFront (p. 112)• Añadir una identidad de acceso de origen a la distribución a través de la API de CloudFront (p. 113)

Crear una identidad de acceso de origen y añadirla a ladistribución desde la consola de CloudFrontSi no creó una identidad de acceso de origen al crear la distribución, realice el siguiente procedimiento.

Versión de API 2016-09-29111

Amazon CloudFront Guía para desarrolladoresCrear una identidad de acceso de origende CloudFront y añadirla a la distribución

Para crear una identidad de acceso de origen de CloudFront desde la consola de CloudFront

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Haga clic en el ID de una distribución que tenga un origen de S3 y, a continuación, elija DistributionSettings (Configuración de la distribución).

3. Elija la pestaña Origins (Orígenes).4. Elija un origen y, a continuación, elija Edit (Editar).5. En Restrict Bucket Access (Restringir acceso al bucket), elija Yes (Sí).6. Si ya tiene una identidad de acceso de origen que desea utilizar, haga clic en Use an Existing Identity

(Utilizar una identidad existente). A continuación, seleccione la identidad en la lista Your Identities (Susidentidades).

Note

Si ya tiene una identidad de acceso de origen, le recomendamos que la vuelva a usar parafacilitar el mantenimiento.

Si desea crear una identidad, haga clic en Create a New Identity (Crear una identidad nueva). Si lodesea, puede sustituir el nombre del bucket en el campo Comment (Comentario), por una descripciónpersonalizada.

7. Si desea que CloudFront conceda automáticamente a la identidad de acceso de origen permisos delectura para los objetos del bucket de Amazon S3 especificado en Origin Domain Name (Nombre dedominio de origen), haga clic en Yes, Update Bucket Policy (Sí, actualizar la política del bucket).

Important

Si elige Yes, Update Bucket Policy (Sí, actualizar la política del bucket), CloudFront actualizalos permisos del bucket para conceder a la identidad de acceso de origen especificadapermisos de lectura de objetos en dicho bucket. Sin embargo, CloudFront no elimina lospermisos existentes. Si los usuarios tenían permisos de acceso a los objetos en dichodepósito con URL de Amazon S3, los conservan aún después de que CloudFront actualizalos permisos del bucket. Para ver o eliminar los permisos de buckets existentes, utilice unmétodo proporcionado por Amazon S3. Para obtener más información, consulte Otorgara la identidad de acceso de origen permisos de lectura de objetos del bucket de AmazonS3 (p. 113).

Si desea actualizar manualmente los permisos del bucket de Amazon S3, elija No, I Will UpdatePermissions (No, yo actualizaré los permisos).

8. Seleccione Yes, Edit (Sí, editar).9. Si tiene más de un origen, repita los pasos para añadir una identidad de acceso de origen para los

demás.

Crear una identidad de acceso de origen mediante la API deCloudFrontSi ya tiene una identidad de acceso de origen y desea reutilizarla en lugar de crear una nueva, pase aAñadir una identidad de acceso de origen a la distribución a través de la API de CloudFront (p. 113).

Para crear una identidad de acceso de origen de CloudFront desde la API de CloudFront, use la acción dela API POST Origin Access Identity. La respuesta incluye un Id y un S3CanonicalUserId parala nueva identidad de acceso de origen. Tome nota de estos valores, porque los necesitará más adelanteen este proceso:

• Id element: el valor del elemento Id se usa para asociar un ID de acceso de origen a su distribución.

Versión de API 2016-09-29112

Amazon CloudFront Guía para desarrolladoresOtorgar a la identidad de acceso de origen permisos

de lectura de objetos del bucket de Amazon S3

• S3CanonicalUserId: el valor del elemento S3CanonicalUserId se usa al proporcionar a CloudFrontacceso a su bucket de Amazon S3 u objetos.

Para obtener más información, consulte CreateCloudFrontOriginAccessIdentity en la Amazon CloudFrontAPI Reference.

Añadir una identidad de acceso de origen a la distribución através de la API de CloudFrontPuede utilizar la API de CloudFront para añadir una identidad de acceso de origen de CloudFront a unadistribución existente o crear una nueva distribución que incluya una identidad de acceso de origen. Encualquier caso, incluya un elemento OriginAccessIdentity. Este elemento contiene el valor delelemento Id que la acción POST Origin Access Identity de la API devolvió al crearse la identidadde acceso de origen. En el caso de distribuciones web, añada el elemento OriginAccessIdentity auno o varios orígenes. En el caso de distribuciones RTMP, añada el elemento OriginAccessIdentity ala distribución.

Consulte el tema correspondiente en la Amazon CloudFront API Reference:

• Crear una nueva distribución web: CreateDistribution• Actualizar una distribución web existente: UpdateDistribution• Crear una nueva distribución RTMP: CreateStreamingDistribution• Actualizar una distribución RTMP existente: UpdateStreamingDistribution

Otorgar a la identidad de acceso de origen permisosde lectura de objetos del bucket de Amazon S3Al crear o actualizar una distribución, puede añadir una identidad de acceso de origen y actualizarautomáticamente la política del bucket para conceder a dicha identidad permiso de acceso a su bucket.Otra opción es cambiar manualmente la política del bucket o cambiar las ACL que controlan los permisosde cada uno de los objetos del bucket.

Independientemente del método que utilice, debe revisar la política del bucket y revisar los permisos desus objetos para asegurarse de que:

• CloudFront puede obtener acceso a objetos del bucket en nombre de los usuarios que solicitan losobjetos a través de CloudFront.

• Los usuarios no pueden usar URL de Amazon S3 para acceder a sus objetos.

Important

Si configura CloudFront para aceptar y reenviar a Amazon S3 todos los métodos de HTTP queadmite CloudFront, cree una identidad de acceso de origen de CloudFront para restringir elacceso a su contenido de Amazon S3 y conceda los permisos correspondientes a la identidad deacceso de origen. Por ejemplo, si configura CloudFront para aceptar y reenviar estos métodosporque desea utilizar el método PUT, debe configurar también políticas de bucket de Amazon S3o ACL para gestionar solicitudes DELETE adecuadamente, y que los usuarios no puedan eliminarlos recursos que no desee que eliminen.

Tenga en cuenta lo siguiente:

Versión de API 2016-09-29113

Amazon CloudFront Guía para desarrolladoresOtorgar a la identidad de acceso de origen permisos

de lectura de objetos del bucket de Amazon S3

• Posiblemente le resulte más sencillo actualizar las políticas de bucket de Amazon S3 que las ACL, yaque puede agregar objetos en el bucket sin necesidad de actualizar permisos. Sin embargo, las ACLofrecen un control más minucioso, ya que los permisos se conceden por objeto.

• De forma predeterminada, el bucket de Amazon S3 y todos los objetos que contiene son privados: solola cuenta de AWS que creó el bucket tiene permisos de lectura y escritura sobre dicho bucket.

• Si está añadiendo una identidad de acceso de origen a una distribución existente, modifique la políticadel bucket o cualquier ACL de objetos según proceda para asegurarse de que los objetos no esténdisponibles públicamente.

• Conceda permisos adicionales a una o más cuentas de administrador seguras para poder continuaractualizando el contenido del bucket de Amazon S3.

Important

Puede ocurrir un breve retraso entre el momento de guardado de los cambios de permisos deAmazon S3 y el momento en el que surten efecto. Hasta los cambios surtan efecto, puede queocurran errores de denegación de permisos al intentar obtener acceso a los objetos del bucket.

Actualizar políticas de buckets de Amazon S3Puede actualizar la política del bucket de Amazon S3 con la Consola de administración de AWS o la APIde Amazon S3:

• Conceda a la identidad de acceso de origen de CloudFront los permisos aplicables en el bucket.

Para especificar una identidad de acceso de origen, utilice el valor de Amazon S3 Canonical User ID enla página Origin Access Identity de la consola de CloudFront. Si está utilizando la API de CloudFront,utilice el valor del elemento S3CanonicalUserId que se devolvió al crearse la identidad de acceso deorigen.

• Utilice las URL de Amazon S3 para denegar el acceso a cualquier persona que no desee que tengaacceso.

Para obtener más información, consulte el documento Using Bucket Policies and User Policies en la Guíapara desarrolladores de Amazon Simple Storage Service.

Para consultar ejemplos, visite "Concesión de permiso a una identidad de origen Amazon CloudFront"en el tema Ejemplos de política de bucket, también en la Guía para desarrolladores de Amazon SimpleStorage Service.

Actualizar ACL de Amazon S3Cambie la ACL de Amazon S3 con la Consola de administración de AWS o la API de Amazon S3:

• Conceda los permisos aplicables a la identidad de acceso de origen de CloudFront para cada uno de losobjetos enviados por la distribución de CloudFront.

Para especificar una identidad de acceso de origen, utilice el valor de Amazon S3 Canonical User ID enla página Origin Access Identity de la consola de CloudFront. Si está utilizando la API de CloudFront,utilice el valor del elemento S3CanonicalUserId que se devolvió al crearse la identidad de acceso deorigen.

• Utilice las URL de Amazon S3 para denegar el acceso a cualquier persona que no desee que tengaacceso.

Si otra cuenta de AWS carga objetos a su bucket, esa cuenta es la propietaria de esos objetos. Laspolíticas de buckets solo se aplican a los objetos del propietario del bucket. Esto significa que si otra

Versión de API 2016-09-29114

Amazon CloudFront Guía para desarrolladoresUsar una identidad de acceso de origen enregiones de Amazon S3 que solo admiten

autenticación mediante Signature Version 4cuenta cargas objetos a su bucket, la política de bucket que creó para su OAI no se evalúa para dichosobjetos.

Para obtener más información, consulte Administración de acceso con ACL en la Guía paradesarrolladores de Amazon Simple Storage Service.

También puede cambiar las ACL mediante programación con uno de los SDK de AWS. Puede obtenerel código de muestra de descargable de ejemplo en Crear una firma de URL mediante C # y .NETFramework (p. 185).

Usar una identidad de acceso de origen en regionesde Amazon S3 que solo admiten autenticaciónmediante Signature Version 4Las regiones de Amazon S3 más recientes requieren que las solicitudes se autentiquen medianteSignature Version 4. Para conocer las versiones de firma admitidas en cada región de Amazon S3,consulte Amazon Simple Storage Service (S3) en el tema Regiones y puntos de conexión de la Referenciageneral de Amazon Web Services. Sin embargo, al crear una identidad de acceso de origen y añadirlaa una distribución de CloudFront, CloudFront normalmente autentica con Signature Version 2 al solicitarobjetos en el bucket de Amazon S3. Si utiliza una identidad de acceso de origen y si su bucket seencuentra en una de las regiones que requiere autenticación con Signature Version 4, tenga en cuenta losiguiente:

• Las solicitudes DELETE, GET, HEAD, OPTIONS y PATCH se admiten sin cualificación.• Si desea enviar solicitudes PUT a CloudFront para cargar objetos en el bucket de Amazon S3, debe

añadir un encabezado x-amz-content-sha256 a la solicitud y el valor de encabezado debe contenerun hash SHA256 del cuerpo de la solicitud. Para obtener más información, consulte la documentaciónsobre el encabezado x-amz-content-sha256 en la página Common Request Headers de la AmazonSimple Storage Service API Reference.

• Las solicitudes POST no están admitidas.

Uso del cifrado en el nivel de campo para ayudar aproteger la información confidencial

Ya puede configurar CloudFront para ayudar a aplicar conexiones integrales seguras a servidores deorigen a través de HTTPS. 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 formaque solo determinadas aplicaciones puedan verlos.

El cifrado en el nivel de campo le permite cargar de manera segura información confidencial enviada porel usuario a los servidores web. La información confidencial proporcionada por los clientes se cifra en elborde más cercano al usuario y permanece cifrada en toda la pila de aplicaciones, lo que garantiza quesolo las aplicaciones que necesitan los datos y tienen las credenciales para descifrarlos pueden hacerlo.

Para utilizar el cifrado en el nivel de campo, debe configurar la distribución de CloudFront para especificarel conjunto de campos de las solicitudes POST que desea cifrar y la clave pública que se va a usar paracifrarlos. Puede cifrar hasta 10 campos de datos en cada solicitud. (No puede cifrar todos los datos de unasolicitud 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 portodo el subsistema de origen, la información confidencial sigue estando cifrada, lo que reduce el riesgo de

Versión de API 2016-09-29115

Amazon CloudFront Guía para desarrolladoresUso del cifrado en el nivel de campo para

ayudar a proteger la información confidencial

una infracción de los datos o una pérdida accidental de la información confidencial. Los componentes quenecesitan obtener acceso a la información confidencial por motivos empresariales, como un sistema deprocesamiento de pagos que necesita tener acceso a un número de tarjeta de crédito, pueden utilizar laclave privada apropiada para descifrar los datos y obtener acceso a ellos.

Tenga en cuenta que, para utilizar el cifrado en el nivel de campo, el origen debe admitir la codificaciónfragmentada.

El cifrado en el nivel de campo de CloudFront utiliza el cifrado asimétrico, también denominado cifrado declave pública. Basta con proporcionar una clave pública a CloudFront, y toda la información confidencialespecificada se cifra automáticamente. La clave proporcionada a CloudFront no puede utilizarse paradescifrar los valores cifrados; esto solo puede hacerlo la clave privada.

Versión de API 2016-09-29116

Amazon CloudFront Guía para desarrolladoresInformación general del cifrado en el nivel de campo

Temas• Información general del cifrado en el nivel de campo (p. 117)• Configuración del cifrado en el nivel de campo (p. 118)• Descifrado de campos de datos en el origen (p. 121)

Información general del cifrado en el nivel de campoLos siguientes pasos proporcionan información general sobre la configuración del cifrado en el nivelde campo. Para conocer los pasos específicos, consulte Configuración del cifrado en el nivel decampo (p. 118).

1. Obtener un par clave pública-clave privada. Debe obtener y añadir la clave pública antes de empezara 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 secrean 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 perfilesque 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 delreenvío de solicitudes que desea para diferentes situaciones; por ejemplo, cuando el nombre del perfilespecificado por el argumento de consulta de la URL de una solicitud no exista en CloudFront.

Versión de API 2016-09-29117

Amazon CloudFront Guía para desarrolladoresConfiguración del cifrado en el nivel de campo

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, debe cifrar los datos.

Configuración del cifrado en el nivel de campoSiga estos pasos para empezar a utilizar el cifrado en el nivel de campo. Para obtener más informaciónacerca de los límites en el cifrado en el nivel de campo, consulte Límites (p. 413).

• Paso 1: Obtener un par de claves RSA (p. 118)• Paso 2: Añadir la clave pública a CloudFront (p. 118)• Paso 3: Crear un perfil para el cifrado en el nivel de campo (p. 118)• Paso 4: Crear una configuración (p. 119)• Paso 5: Añadir una configuración a un comportamiento de la caché (p. 121)

Paso 1: Obtener un par de claves RSAPara empezar, debe obtener un par de claves RSA que incluya una clave pública, para que CloudFrontpueda cifrar los datos, y una clave privada, de forma que los componentes del origen puedan descifrar loscampos que se han cifrado. Por ejemplo, puede utilizar Open SSL u otra herramienta para crear un par declaves. El tamaño de la clave debe ser de 2 048 bits. Para obtener más información, consulte Para crearun par de claves RSA y cargar la clave pública en la Consola de administración de AWS (p. 132).

Paso 2: Añadir la clave pública a CloudFrontDespués de obtener el par de claves RSA, añada la clave pública a CloudFront.

Para añadir la clave pública a CloudFront (consola)

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. En el panel de navegación, elija Public key.3. Elija Add public key.4. En Key name, escriba un nombre único para la clave. El nombre no puede tener espacios y solo

puede incluir caracteres alfanuméricos, guiones bajos (_) y guiones (-). El número máximo decaracteres es 128.

5. En Encoded key, copie y pegue el valor codificado de la clave pública, incluidas las líneas “ -----BEGINPUBLIC KEY-----” and “-----END PUBLIC KEY-----”.

6. En Comment, añada un comentario opcional. Por ejemplo, podría incluir la fecha de vencimiento de laclave pública.

7. Elija Add key.

Puede añadir más claves para su uso con CloudFront repitiendo los pasos del procedimiento.

Paso 3: Crear un perfil para el cifrado en el nivel de campoDespués de añadir al menos una clave pública a CloudFront, cree un perfil que indique a este los camposque desea cifrar.

Para crear un perfil para el cifrado en el nivel de campo (consola)

1. En el panel de navegación, elija Field-level encryption.

Versión de API 2016-09-29118

Amazon CloudFront Guía para desarrolladoresConfiguración del cifrado en el nivel de campo

2. Elija Create profile.3. Rellene los siguientes campos:

Profile name

Escriba un nombre único para el perfil. El nombre no puede tener espacios y solo puede incluircaracteres alfanuméricos, guiones bajos (_) y guiones (-). El número máximo de caracteres es128.

Public key name

En la lista desplegable, elija el nombre de la clave pública que añadió a CloudFront en el paso 2.CloudFront utiliza la clave para cifrar los campos especificados en este perfil.

Provider name

Escriba una frase para ayudar a identificar la clave, como el proveedor del que ha obtenido elpar de claves. Necesitará esta información, junto con la clave privada, cuando las aplicacionesdescifren los campos de datos. El nombre del proveedor no puede tener espacios y solo puedeincluir caracteres alfanuméricos, dos puntos (:), guiones bajos (_) y guiones (-). El número máximode caracteres es 128.

Field name pattern to match

Escriba los nombres de los campos de datos, o los patrones que identifican los nombres de loscampos de datos de la solicitud, que desea que CloudFront cifre. Elija la opción + para añadirtodos 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 (*), comoCreditCard*. 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 nombrede campo que sea AB*. Además, tenga en cuenta que los nombres de los campos distinguenentre mayúsculas y minúsculas, y que el número máximo de caracteres que puede utilizar es de128.

Comentario

(Opcional) Escriba un comentario sobre este perfil. El número máximo de caracteres que puedeutilizar es 128.

4. Tras rellenar los campos, elija Create profile.5. Si desea añadir más perfiles, elija Add profile.

Paso 4: Crear una configuraciónDespués de crear uno o varios perfiles de cifrado en el nivel de campo, cree una configuración queespecifique el tipo de contenido de la solicitud que incluya los datos que se van a cifrar, el perfil que se vaa utilizar para el cifrado y otras opciones que especifiquen cómo desea que CloudFront controle el cifrado.

Por ejemplo, si CloudFront no puede cifrar los datos, puede especificar si CloudFront debería bloquear oreenviar una solicitud al origen en los siguientes casos:

• Cuando el tipo de contenido de una solicitud no se encuentra en una configuración. Si no ha añadido untipo de contenido a una configuración, puede especificar si CloudFront debe reenviar la solicitud con esetipo de contenido al origen sin cifrar los campos de datos, o bloquearla y devolver un error.

Versión de API 2016-09-29119

Amazon CloudFront Guía para desarrolladoresConfiguración del cifrado en el nivel de campo

Nota: si añade un tipo de contenido a una configuración pero no ha especificado el perfil que se debeusar con dicho tipo, las solicitudes que tengan ese tipo de contenido siempre se reenviarán al origen.

• Cuando se desconoce el nombre de perfil proporcionado en un argumento de consulta. Si especifica elargumento de consulta fle-profile con un nombre de perfil que no existe en su distribución, puedeespecificar si CloudFront debe enviar la solicitud al origen sin cifrar los campos de datos, o bloquearla ydevolver un error.

En una configuración, también puede especificar si al proporcionar un perfil como un argumento deconsulta en una URL se anula el perfil que ha mapeado al tipo de contenido de esa consulta. De formapredeterminada, CloudFront utiliza el perfil que ha mapeado a un tipo de contenido, si especifica uno. Estole permite tener un perfil que se utiliza de forma predeterminada, pero también optar por aplicar un perfildiferente en determinadas solicitudes.

Así, por ejemplo, puede especificar (en la configuración) SampleProfile como el perfil de argumento deconsulta 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 CloudFrontutilice SampleProfile para esta solicitud y no el perfil que ha configurado para el tipo de contenido de lasolicitud.

Puede crear hasta 10 configuraciones para una única cuenta y, a continuación, asociar una de ellas alcomportamiento de la caché de cualquier distribución para la cuenta.

Para crear una configuración para el cifrado en el nivel de campo (consola)

1. En la página Field-level encryption, elija Create configuration.

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).

Content type (no se puede cambiar)

El tipo del contenido está establecido en application/x-www-form-urlencoded y no sepuede cambiar.

Default profile ID (opcional)

En la lista desplegable, elija el perfil al que desea mapear el tipo de contenido en el campoContent type (Tipo de contenido).

Content format (no se puede cambiar)

El formato del contenido está establecido en URLencoded y no se puede cambiar.3. Si desea cambiar el comportamiento predeterminado de CloudFront para las siguientes opciones,

seleccione la casilla correspondiente.

Forward request to origin when request’s content type is not configured

Seleccione la casilla si desea permitir que la solicitud vaya al origen si no ha especificado el perfilque se va a utilizar para el tipo de contenido de la solicitud.

Override the profile for a content type with a provided query argument

Seleccione la casilla si desea permitir que un perfil proporcionado en un argumento de consultaanule el perfil que ha especificado para un tipo de contenido.

4. Si selecciona la casilla para permitir que un argumento de consulta anule el perfil predeterminado,debe rellenar los siguientes campos adicionales para la configuración. Puede crear hasta cinco deestos mapeos de argumentos de consulta para su uso con las consultas.

Versión de API 2016-09-29120

Amazon CloudFront Guía para desarrolladoresDescifrado de campos de datos en el origen

Query argument

Escriba el valor que desea incluir en las URL para el argumento de consulta fle-profile. Estevalor 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, ysolo se pueden utilizar caracteres alfanuméricos además de los siguientes caracteres: guion (-),punto (.), guion bajo (_), asterisco (*), signo más (+), porcentaje (%).

Profile ID

En la lista desplegable, elija el perfil que desea asociar al valor que ha especificado para Queryargument (Argumento de consulta).

Forward request to origin when the profile specified in a query argument does not exist

Seleccione la casilla si desea permitir que la solicitud vaya al origen si el perfil especificado en unargumento de consulta no está definido en CloudFront.

Paso 5: Añadir una configuración a un comportamiento de lacachéPara utilizar el cifrado en el nivel de campo, enlace una configuración a un comportamiento de la caché deuna distribución añadiendo el ID de configuración como un valor de dicha distribución. Tenga en cuentaque para enlazar una configuración a un comportamiento de la caché, Viewer Protocol Policy y OriginProtocol Policy deben ser HTTPS.

Para obtener más información, consulte Valores que deben especificarse al crear o actualizar unadistribución (p. 30).

Descifrado de campos de datos en el origenCloudFront cifra los campos de datos mediante el SDK de cifrado de AWS. Los datos permanecen cifradosen toda la pila de aplicaciones y únicamente pueden tener acceso a ellos las aplicaciones que dispongande las credenciales para descifrarlos.

Tras el cifrado, el texto cifrado se codifica en base64. Cuando las aplicaciones descifran el texto en elorigen, primero deben descodificar el texto cifrado y, a continuación, utilizar el SDK de cifrado de AWSpara descifrar los datos.

El siguiente código de muestra ilustra cómo las aplicaciones pueden descifrar datos en el origen. Tenga encuenta lo siguiente:

• Para simplificar el ejemplo, esta muestra carga claves públicas y privadas (en formato DER) desdearchivos que se encuentran en el directorio de trabajo. En la práctica, debería almacenar la clave privadaen una ubicación segura sin conexión, como un módulo de seguridad de hardware sin conexión, ydistribuir 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 deparámetros en el origen para descifrarlos. Entre los parámetros que CloudFront utiliza al inicializar laclave 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 el algoritmo “RSA/ECB/OAEPWithSHA-256AndMGF1Padding” para

el cifrado, por lo que también debe usarlo para descifrar los datos.

Versión de API 2016-09-29121

Amazon CloudFront Guía para desarrolladoresDescifrado de campos de datos en el origen

• Si ejecuta el siguiente programa de muestra con texto cifrado como entrada, los datos descifrados semuestran en la consola. Para obtener más información, consulte el código de ejemplo de Java del SDKde 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; /** * Sample example of decrypting data that has been encrypted by CloudFront Field-Level Encryption. */public class DecryptExample { private static final String PRIVATE_KEY_FILENAME = "private_key.der"; private static final String PUBLIC_KEY_FILENAME = "public_key.der"; private static PublicKey publicKey; private static PrivateKey privateKey; // 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"; public static void main(final String[] args) throws Exception { final String dataToDecrypt = args[0]; // This sample uses files to get public and private keys. // In practice, you should distribute the public key and save the private key in secure storage. populateKeyPair(); System.out.println(decrypt(debase64(dataToDecrypt))); } private static String decrypt(final byte[] bytesToDecrypt) throws Exception { // You can decrypt the stream only by using the private key. // 1. Instantiate the SDK final AwsCrypto crypto = new AwsCrypto();

Versión de API 2016-09-29122

Amazon CloudFront Guía para desarrolladoresRestricción geográfica de contenido

// 2. Instantiate a JCE master key final JceMasterKey masterKey = JceMasterKey.getInstance( publicKey, privateKey, PROVIDER_NAME, KEY_NAME, ALGORITHM); // 3. Decrypt the data final CryptoResult <byte[], ? > result = crypto.decryptData(masterKey, bytesToDecrypt); return new String(result.getResult()); } // Function to decode base64 cipher text. private static byte[] debase64(final String value) { return Base64.decodeBase64(value.getBytes()); } private static void populateKeyPair() throws Exception { final byte[] PublicKeyBytes = Files.readAllBytes(Paths.get(PUBLIC_KEY_FILENAME)); final byte[] privateKeyBytes = Files.readAllBytes(Paths.get(PRIVATE_KEY_FILENAME)); publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(PublicKeyBytes)); privateKey = KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(privateKeyBytes)); }}

Restringir la distribución geográfica de su contenidoPuede usar la función de restricción geográfica, denominada también bloqueo geográfico, para evitarque usuarios en ubicaciones geográficas específicas accedan a contenido que distribuye a través de unadistribución web CloudFront. Para utilizar la restricción geográfica, dispone de dos opciones:

• Utilice la característica de restricción geográfica de CloudFront. Utilice esta opción para restringir elacceso 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 unsubconjunto de los archivos asociados a una distribución o para restringirlo a un nivel más detallado quepor país.

Temas• Usar la restricción geográfica de CloudFront (p. 123)• Utilizar un servicio de geolocalización de terceros (p. 125)

Usar la restricción geográfica de CloudFrontCuando un usuario solicita contenido, por lo general, CloudFront lo ofrece independientemente de dóndese encuentra el usuario. Si necesita impedir que usuarios de países específicos accedan a su contenido,puede usar la característica de restricción geográfica de CloudFront para realizar una de las siguientesacciones:

• Permita a los usuarios obtener acceso a su contenido solo si están en uno de los países aprobados eincluidos en una lista blanca.

• Evite que los usuarios obtengan acceso a su contenido si están en uno de los países prohibidos eincluidos en una lista negra.

Versión de API 2016-09-29123

Amazon CloudFront Guía para desarrolladoresUsar la restricción geográfica de CloudFront

Por ejemplo, si una solicitud proviene de un país en el que, por motivos de derechos de autor, no estáautorizado a distribuir su contenido, puede utilizar la restricción geográfica de CloudFront para bloquear lasolicitud.

Note

CloudFront determina la ubicación de sus usuarios mediante una base de datos GeoIP deterceros. 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%. Tenga en cuenta que si CloudFront nopuede determinar la ubicación de un usuario, CloudFront distribuirá el contenido que el usuario hasolicitado.

Así es como funciona la restricción geográfica:

1. Supongamos que tiene derechos para distribuir su contenido únicamente en Liechtenstein. Actualicela distribución web de CloudFront y añada una lista blanca que contenga solo Liechtenstein. (Tambiénpuede añadir una lista negra que contenga todos los países excepto Liechtenstein).

2. Un usuario en Mónaco solicita su contenido y el DNS dirige la solicitud a la ubicación de borde deCloudFront 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 (Prohibido) al usuario.

Si lo desea, puede configurar CloudFront para devolver un mensaje de error personalizado al usuario yespecificar el tiempo durante el cual desea que CloudFront almacene en caché la respuesta de error parael objeto solicitado; el valor predeterminado es de cinco minutos. Para obtener más información, consulteCreación de una página de error personalizada para códigos de estado HTTP específicos (p. 256).

La restricción geográfica se aplica a la totalidad de la distribución web. Si necesita aplicar una restriccióna parte de su contenido y otra (o ningún tipo de restricción) a otra parte, cree distribuciones web deCloudFront independientes o use un servicio de geolocalización de terceros.

Si habilita el registro de acceso de CloudFront, podrá identificar las solicitudes que CloudFront rechazabuscando las entradas de registro cuyo valor de sc-status (el código de estado HTTP) sea 403. Sinembargo, si solo utiliza los registros de acceso, no podrá distinguir entre las solicitudes que CloudFrontrechace a causa de la ubicación del usuario y las que rechace porque el usuario no tenía permiso paraacceder al objeto por otro motivo. Si tiene un servicio de geolocalización de terceros como Digital Elemento MaxMind, puede identificar la ubicación de las solicitudes en función de la dirección IP en la columnac-ip (IP del cliente) de los registros de acceso. Para obtener más información acerca de los registros deacceso de CloudFront, consulte Configuración y uso de registros de acceso (p. 371)

El siguiente procedimiento explica cómo utilizar la consola de CloudFront para agregar la restriccióngeográfica a una distribución web existente. Para obtener más información acerca de cómo crear unadistribución web, consulte Creación de una distribución (p. 29).

Para añadir restricciones geográficas a la distribución web de CloudFront desde la consola deCloudFront

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Seleccione la distribución que desea actualizar.3. En el panel Distribution Settings, elija la pestaña Restrictions.4. Elija Edit.5. Escriba los valores aplicables. Para obtener más información, consulte Restricciones (p. 51).

Versión de API 2016-09-29124

Amazon CloudFront Guía para desarrolladoresUtilizar un servicio de geolocalización de terceros

6. Seleccione Yes, Edit.

Utilizar un servicio de geolocalización de tercerosLa característica de restricción geográfica de CloudFront le permite controlar por país la distribuciónde todos los archivos que está ofreciendo con una distribución web determinada. Si tiene restriccionesgeográficas para distribuir su contenido y dichas restricciones no coinciden con límites formales de lospaíses, o si desea limitar el acceso a solo algunos de los archivos que distribuye con CloudFront, puedecombinar CloudFront con un servicio de geolocalización de terceros. Esto puede ayudarle a controlar elacceso a su contenido en función no solo en el país sino también de la ciudad, código postal o incluso lalatitud y la longitud.

Si utiliza un servicio de geolocalización de terceros, le recomendamos utilizar URL firmadas de CloudFront,que le permiten definir una fecha y hora de vencimiento a partir de la cual la URL deja de ser válida.Además, le recomendamos utilizar un bucket de Amazon S3 como origen, ya que eso le permite utilizaruna identidad de acceso de origen de CloudFront para evitar que los usuarios obtengan acceso a sucontenido directamente desde el origen. Para obtener más información acerca de las URL firmadas eidentidades de acceso de origen, consulte Distribución de contenido privado con URL firmadas y cookiesfirmadas (p. 126).

La siguiente lista de tareas explica cómo controlar el acceso a sus archivos mediante un servicio degeolocalización de terceros.

Lista de tareas para restringir el acceso a archivos en una distribución de CloudFront en funciónde la ubicación geográfica

1. Obtenga una cuenta con un servicio de geolocalización.2. Cargue su contenido a un bucket de Amazon Simple Storage Service (S3). Para obtener más

información, consulte la documentación de Amazon S3.3. Configure Amazon CloudFront y Amazon S3 para ofrecer contenido privado. Para obtener

más información, consulte Distribución de contenido privado con URL firmadas y cookiesfirmadas (p. 126).

4. Escriba su aplicación web para que haga lo siguiente:

a. Enviar la dirección IP de cada solicitud de usuario al servicio de geolocalización.b. Evaluar el valor de devolución del servicio de geolocalización para determinar si el usuario se

encuentra en una ubicación a la que desea que CloudFront distribuya el contenido.c. En función de si desea distribuir o no el contenido según la ubicación del usuario, genere una

URL firmada para dicho contenido de CloudFront o devuelva al usuario el código de estadoHTTP 403 (Prohibido). Otra opción es configurar CloudFront para que devuelva un mensaje deerror personalizado. Para obtener más información, consulte Creación de una página de errorpersonalizada para códigos de estado HTTP específicos (p. 256).

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 susitio web. Sin embargo, tenga en cuenta lo siguiente:

• Si su servidor web no está conectado a Internet a través de un balanceador de carga, puede utilizaruna variable de servidor web para obtener la dirección IP remota. Sin embargo, esta dirección IP no essiempre la dirección IP del usuario, sino que también puede ser la dirección IP de un servidor proxy. Estodependerá de cómo el usuario esté conectado a Internet.

Versión de API 2016-09-29125

Amazon CloudFront Guía para desarrolladoresLimitación de contenido con

URL firmadas y cookies firmadas

• Si su servidor web está conectado a Internet a través de un balanceador de carga, una variable deservidor web podría contener la dirección IP del balanceador de carga en lugar de la dirección IP delusuario. 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 loscuales son de proxis o balanceadores de carga. La última dirección IP de la lista tiene más posibilidadesde 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 variablesde servidor web en lugar del encabezado X-Forwarded-For para evitar la suplantación de direccionesIP.

Distribución de contenido privado con URL firmadasy cookies firmadas

Muchas empresas que distribuyen contenido por Internet desean restringir el acceso a documentos,transmisión de datos empresariales, medios o contenido que está destinado a una selección de usuarios,por ejemplo, que hayan pagado una tarifa. Para distribuir este contenido privado de forma segura a travésde CloudFront, puede hacer lo siguiente:

• Exigir a los usuarios obtener acceso a su contenido privado mediante URL firmadas o cookies firmadasespeciales de CloudFront.

• Exigir a los usuarios que obtengan acceso a su contenido de Amazon S3 a través de URL de CloudFronten lugar de a través de URL de Amazon S3. No es necesario exigir URL de CloudFront, pero lorecomendamos para impedir que los usuarios eludan las restricciones que especifique en URL firmadaso cookies firmadas.

Temas• Información general acerca de contenido privado (p. 126)• Utilizar un servidor HTTP para contenido privado (p. 128)• Lista de tareas: Distribución de contenido privado (p. 129)• Especificar las cuentas de AWS que pueden crear URL firmadas y cookies firmadas (signatarios de

confianza) (p. 130)• Elegir entre URL firmadas y cookies firmadas (p. 137)• Usar URL firmadas (p. 138)• Usar cookies firmadas (p. 158)• Utilizar una instancia de Linux Command y OpenSSL para codificar y cifrar con base64 (p. 174)• Ejemplos de código para crear una firma para una URL firmada (p. 175)

Información general acerca de contenido privadoPuede controlar el acceso de los usuarios a su contenido privado de dos formas, tal y como se muestra enla siguiente ilustración:

1. Restringir el acceso a objetos en las cachés perimetrales de CloudFront2. Restringir el acceso a los objetos en el bucket de Amazon S3

Versión de API 2016-09-29126

Amazon CloudFront Guía para desarrolladoresInformación general acerca de contenido privado

Restringir el acceso a objetos en las cachés perimetrales deCloudFrontPuede configurar CloudFront para exigir que los usuarios obtengan acceso a sus objetos medianteURL firmadas o cookies firmadas. Después, deberá desarrollar su aplicación para crear y distribuirURL firmadas para los usuarios autenticados o para enviar encabezados Set-Cookie que establecencookies firmadas en los espectadores de los usuarios autenticados. (También puede crear URL firmadasmanualmente para ofrecer a unos pocos usuarios a acceso largo plazo a un número limitado de objetos).

Al crear URL firmadas o cookies firmadas para controlar el acceso a sus objetos, puede especificar lassiguientes restricciones:

• La fecha y la hora de finalización, a partir de la cual la URL deja de ser válida.• La fecha y la hora a la que la URL pasa a ser válida (opcional).• La dirección IP o a un rango de direcciones IP de los equipos desde los que se puede obtener acceso a

su contenido.

A una parte de una URL firmada o una cookie firmada se le aplica una función hash y se firma con la claveprivada de un par de claves pública/privada. Cuando alguien utiliza una URL firmada o cookies firmadaspara obtener acceso a un objeto, CloudFront compara las partes de la URL o cookie con firma y sin firma.Si no coinciden, CloudFront no envía el objeto.

Versión de API 2016-09-29127

Amazon CloudFront Guía para desarrolladoresUtilizar un servidor HTTP para contenido privado

Restringir el acceso a objetos en buckets de Amazon S3Si lo desea, puede proteger el contenido de su bucket de Amazon S3 de manera que los usuarios puedanacceder a él a través de CloudFront, pero no puedan acceder a él directamente mediante URL de AmazonS3. Esto evita que nadie eluda CloudFront y que usen la URL de Amazon S3 para obtener el contenidocuyo acceso desea restringir. Este paso no es necesario para utilizar URL firmadas, pero recomendamosseguirlo.

Para exigir que los usuarios obtengan acceso a su contenido a través de URL de CloudFront, realice lassiguientes tareas:

• Cree un usuario de CloudFront especial llamado origin access identity (identidad de acceso de origen).• Dé al usuario "origin access identity" permiso para leer los objetos del bucket.• Elimine a todos los demás usuarios los permisos de uso de URL de Amazon S3 para leer los objetos.

Utilizar un servidor HTTP para contenido privadoPuede utilizar URL firmadas o cookies firmadas en cualquier distribución de CloudFront,independientemente de si el origen es un bucket de Amazon S3 o un servidor HTTP. Sin embargo, paraque CloudFront pueda obtener los objetos desde un servidor HTTP, estos objetos deben seguir siendoaccesibles al público. Cuando los objetos son de acceso público, cualquier persona con la URL de unobjeto del servidor HTTP puede acceder a dicho objeto sin necesidad de iniciar sesión en su contenidoni de pagar por el acceso. Si utiliza URL firmadas o cookies firmadas y el origen es un servidor HTTP,no facilite las URL de los objetos de su servidor HTTP a sus clientes ni a otras personas fuera de suorganización.

Versión de API 2016-09-29128

Amazon CloudFront Guía para desarrolladoresLista de tareas: Distribución de contenido privado

Lista de tareas: Distribución de contenido privadoPara configurar CloudFront para que distribuya contenido privado, realice las siguientes tareas:

1. Exija a los usuarios que obtengan acceso al contenido únicamente a través de CloudFront(opcional pero recomendado). El método que utilice depende de si utiliza Amazon S3 u orígenespersonalizados:

• Amazon S3: consulte Restricción del acceso a contenido de Amazon S3 utilizando una identidad deacceso de origen (p. 110).

• Origen personalizado: consulte Utilizar encabezados personalizados para restringir el acceso acontenido en un origen personalizado (p. 250).

2. Especifique las cuentas de AWS que desea utilizar para crear URL firmadas o cookies firmadas. Paraobtener más información, consulte Especificar las cuentas de AWS que pueden crear URL firmadas ycookies firmadas (signatarios de confianza) (p. 130).

3. Escriba la aplicación para responder a las solicitudes de los usuarios autorizados con URL firmadaso con encabezados Set-Cookie que establezcan cookies firmadas. Siga los pasos en uno de lossiguientes temas:

• Usar URL firmadas (p. 138)• Usar cookies firmadas (p. 158)

Si no está seguro de qué método utilizar, consulte Elegir entre URL firmadas y cookiesfirmadas (p. 137).

Versión de API 2016-09-29129

Amazon CloudFront Guía para desarrolladoresEspecificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza)

Especificar las cuentas de AWS que pueden crearURL firmadas y cookies firmadas (signatarios deconfianza)Temas

• Crear pares de claves de CloudFront para sus signatarios de confianza (p. 131)• Reformatear la clave privada de CloudFront (solo para .NET y Java) (p. 132)• Añadir signatarios de confianza a la distribución (p. 133)• Comprobar que los signatarios de confianza están activos (opcional) (p. 135)• Rotar pares de claves de CloudFront (p. 135)

Para crear URL firmadas o cookies firmadas, necesita al menos una cuenta de AWS con un par de clavesde CloudFront activas. Esta cuenta se conoce como signatario de confianza. El signatario de confianzatiene dos fines:

• En cuanto se añade el ID de cuenta de AWS de su signatario de confianza a su distribución, CloudFrontcomienza a requerir que los usuarios utilicen URL firmadas o cookies firmadas para acceder a losobjetos.

• Al crear URL firmadas o cookies firmadas, se utiliza la clave privada del par de claves del signatario deconfianza para firmar una parte de la URL o la cookie. Cuando alguien solicita un objeto restringido,CloudFront compara la parte de la URL o cookie firmada con la parte sin firma para comprobar que laURL o la cookie no se han manipulado. CloudFront también verifica que la URL o la cookie sean válidas,es decir, por ejemplo, que la fecha y hora de vencimiento no hayan pasado aún.

Al especificar signatarios de confianza, también especifica indirectamente los objetos que requieren URLfirmadas o cookies firmadas:

• Distribuciones web: añade signatarios de confianza a comportamientos de la caché. Si su distribucióncuenta con solo un comportamiento de la caché, los usuarios deben utilizar URL firmadas o cookiesfirmadas para acceder a cualquier objeto asociado a la distribución. Si crea varios comportamientos dela caché y añade signatarios de confianza a algunos comportamientos de la caché y no a otros, puedeexigir a los usuarios utilizar URL firmadas o cookies firmadas para obtener acceso a algunos objetos yno a otros.

• Distribuciones RTMP (solo URL firmadas): añade signatarios de confianza a una distribución. Despuésde añadir signatarios de confianza a una distribución RTMP, los usuarios deben utilizar URL firmadaspara obtener acceso a cualquier objeto asociado a la distribución.

Note

Para especificar signatarios de confianza para una distribución, utilice la consola de CloudFront ola versión de la API de CloudFront 2009-09-09 o posterior.

Para especificar las cuentas autorizadas para crear URL firmadas o cookies firmadas y añadir dichascuentas a la distribución de CloudFront, realice las siguientes tareas:

1. Decida qué cuentas de AWS desea utilizar como signatarios de confianza. La mayoría de los clientesde CloudFront utiliza la cuenta con la que crearon la distribución.

2. Cree un par de claves de CloudFront por cada una de las cuentas que ha seleccionado en el paso 1.Para obtener más información, consulte Crear pares de claves de CloudFront para sus signatarios deconfianza (p. 131).

Versión de API 2016-09-29130

Amazon CloudFront Guía para desarrolladoresEspecificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza)

3. Si utiliza .NET o Java para crear URL firmadas o cookies firmadas, reformatee la clave privada deCloudFront. Para obtener más información, consulte Reformatear la clave privada de CloudFront (solopara .NET y Java) (p. 132).

4. En la distribución para la que está creando URL firmadas o cookies firmadas, especifique el ID decuenta de AWS de los signatarios de confianza. Para obtener más información, consulte Añadirsignatarios de confianza a la distribución (p. 133).

5. Compruebe que CloudFront reconoce que los signatarios de confianza tienen pares de claves deCloudFront activos (opcional). Para obtener más información, consulte Comprobar que los signatariosde confianza están activos (opcional) (p. 135).

Crear pares de claves de CloudFront para sus signatarios deconfianzaCada una de las cuentas de AWS que utilice para crear URL firmadas de CloudFront o cookies firmadas(sus signatarios de confianza) debe tener su propio par de claves de CloudFront activo. Tenga en cuentaque no puede sustituir un par de claves de Amazon EC2 por otro de CloudFront. Cuando crea una URL ouna cookie firmadas de CloudFront, incluye el ID del par de claves del signatario de confianza en la URL.Amazon EC2 no pone a disposición ID de pares de claves.

Para ayudar a proteger sus aplicaciones, le recomendamos que cambie los pares de claves de CloudFrontcada 90 días o más a menudo. Para obtener más información, consulte Rotar pares de claves deCloudFront (p. 135).

Puede crear un par de claves de cualquiera de estas formas:

• Crear un par de claves en la Consola de administración de AWS y descargar la clave privada. Leael procedimiento Para crear pares de claves de CloudFront en la Consola de administración deAWS (p. 131).

• Crear un par de claves RSA desde una aplicación como OpenSSL, y cargar la clave pública en laConsola de administración de AWS. Lea el procedimiento Para crear un par de claves RSA y cargar laclave pública en la Consola de administración de AWS (p. 132).

Para crear pares de claves de CloudFront en la Consola de administración de AWS

1. Inicie sesión en Consola de administración de AWS con las credenciales raíz de una cuenta de AWS.

Important

Los usuarios de IAM no pueden crear pares de claves de CloudFront. Debe iniciar sesión concredenciales raíz para crear pares de claves.

2. En el menú account-name, haga clic en Security Credentials.3. Despliegue CloudFront Key Pairs.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 activas.5. Haga clic en Create New Key Pair.6. En el cuadro de diálogo Create Key Pair, haga clic en Download Private Key File.7. En el cuadro de diálogo Opening <filename>, acepte el valor predeterminado de Save File y haga clic

en OK para descargar y guardar la clave privada de su par de claves de CloudFront.

Important

Guarde la clave privada de CloudFront de su par de claves en un lugar seguro y definapermisos en el archivo para que solo los usuarios administradores que usted decida puedan

Versión de API 2016-09-29131

Amazon CloudFront Guía para desarrolladoresEspecificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza)

leerlo. Si alguien obtiene su clave privada, puede generar URL y cookies firmadas válidas ydescargar su contenido. No podrá obtener la clave privada de nuevo, por lo que si la pierde ola elimina, deberá crear un nuevo par de claves de CloudFront.

8. Registre el ID de su par de claves. En la Consola de administración de AWS, se denomina el ID declave de acceso (access key ID). Lo utilizará al crear URL firmadas o cookies firmadas.

Para crear un par de claves RSA y cargar la clave pública en la Consola de administración deAWS

1. Utilice OpenSSL u otra herramienta para crear un par de claves.

Por ejemplo, si utiliza OpenSSL, puede ejecutar el siguiente comando para generar un par de clavescon una longitud de 4 096 bits y guardarlo en el archivo private_key.pem:

$ openssl genrsa -out private_key.pem 4096

El archivo resultante contiene tanto la clave pública como la privada. Para extraer la clave pública dedicho archivo, ejecute el siguiente comando:

$ openssl rsa -pubout -in private_key.pem -out public_key.pem

Esta clave pública es el archivo que cargará posteriormente en este procedimiento.

Tenga en cuenta que la clave debe cumplir con los siguientes requisitos:

• El par de claves debe ser un par de claves SSH-2 RSA.• El par de claves deben encontrarse en formato PEM, codificado en Base64.• Las longitudes de clave admitidas son 1 024, 2 048 y 4 096 bits.

2. Inicie sesión en Consola de administración de AWS con las credenciales raíz de una cuenta de AWS.

Important

Los usuarios de IAM no pueden crear pares de claves de CloudFront. Debe iniciar sesión concredenciales raíz para crear pares de claves.

3. En el menú account-name, haga clic en Security Credentials.4. Despliegue CloudFront Key Pairs.5. Confirme que no tiene más de un par de claves activas. No puede cargar su propio par de claves si ya

dispone de dos pares de claves activas.6. Haga clic en Upload Your Own Key Pair.7. En el cuadro de diálogo Upload Your Own Key Pair, haga clic en Choose File y elija el archivo de la

clave pública que ha creado en el paso 1.8. Haga clic en Upload.

El cuadro de diálogo Upload Key Pair se borra y el nuevo par de claves aparece en la parte superiorde la lista de pares de claves de CloudFront.

9. Registre el ID de su par de claves. En la Consola de administración de AWS, se denomina el ID declave de acceso (access key ID). Lo utilizará al crear URL firmadas o cookies firmadas.

Reformatear la clave privada de CloudFront (solo para .NET yJava)Si utiliza.NET o Java para crear URL firmadas o cookies firmadas, no puede utilizar la clave privada del parde claves en el formato .pem predeterminado para crear la firma:

Versión de API 2016-09-29132

Amazon CloudFront Guía para desarrolladoresEspecificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza)

• .NET framework: convierte la clave privada al formato XML que utiliza.NET Framework. Hay variasherramientas disponibles.

• Java: convierte la clave privada a formato DER. Para ello, puede utilizar OpenSSL:

$ openssl pkcs8 -topk8 -nocrypt -in origin.pem -inform PEM -out new.der -outform DER

Para asegurarse de que el codificador funciona correctamente, añada el recurso jar de la API decriptografía Java Bouncy Castle a su proyecto y, a continuación, añada el proveedor Bouncy Castle.

Añadir signatarios de confianza a la distribuciónLos signatarios de confianza son las cuentas de AWS que pueden crear URL firmadas y cookies firmadaspara distribuciones. De forma predeterminada, ninguna cuenta, ni siquiera la que ha creado la distribución,tiene permisos para crear URL firmadas o cookies firmadas. Para especificar las cuentas de AWS quedesea utilizar como los signatarios de confianza, añada las cuentas a su distribución:

• Distribuciones web: los signatarios de confianza están asociados a comportamientos de la caché. Estole permite exigir URL firmadas o cookies firmadas para algunos objetos y no para otros dentro de lamisma distribución. Los signatarios de confianza solo pueden crear URL o cookies firmadas para objetosasociados a los comportamientos de la caché correspondientes. Por ejemplo, si tiene un signatario deconfianza para un comportamiento de la caché y otro para otro comportamiento de la caché, ningunode los dos signatarios de confianza podrá crear URL o cookies firmadas para objetos asociados al otrocomportamiento de la caché.

• Distribuciones RTMP (solo URL firmadas): los signatarios de confianza asociados a la distribución.Después de añadir signatarios de confianza a una distribución RTMP, los usuarios deben utilizar URL ocookies firmadas para obtener acceso a cualquiera de los objetos asociados a la distribución.

Important

Defina meticulosamente patrones de ruta y sus secuencias para evitar otorgar a los usuariosacceso involuntario a contenido o denegarles acceso a contenido que ha decidido que debe estara disposición de cualquier persona. Supongamos que una solicitud coincide con el patrón de rutade dos comportamientos de la caché. El primer comportamiento de la caché no requiere URLfirmadas ni cookies firmadas y el segundo comportamiento de la caché sí. Los usuarios podránobtener acceso a los objetos sin usar URL firmadas ni cookies firmadas porque CloudFrontprocesa el comportamiento de la caché que se asocia con la primera coincidencia.

Para obtener más información acerca de patones de rutas, consulte Patrón de ruta (p. 38).Important

Si está actualizando una distribución que ya utiliza para distribuir contenido, añada signatarios deconfianza solo cuando esté listo para comenzar a generar URL firmadas o cookies firmadas paralos objetos. En caso contrario, CloudFront, rechazará las solicitudes:

• Distribuciones web: después de añadir signatarios de confianza a un comportamiento de lacaché para una distribución web, los usuarios deberán utilizar URL firmadas o cookies firmadaspara obtener acceso a los objetos asociados al comportamiento de la caché.

• Distribuciones RTMP (solo URL firmadas): después de añadir signatarios de confianza a unadistribución RTMP, los usuarios deben utilizar URL firmadas para obtener acceso a cualquierade los objetos asociados a la distribución.

La cantidad máxima de signatarios de confianza depende del tipo de distribución:

• Distribuciones web: hasta cinco por cada comportamiento de la caché.

Versión de API 2016-09-29133

Amazon CloudFront Guía para desarrolladoresEspecificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza)

• Distribuciones RTMP: hasta cinco por cada distribución.

Puede añadir signatarios de confianza a la distribución desde la consola de CloudFront o la API deCloudFront. Consulte el tema correspondiente:

• Añadir signatarios de confianza a la distribución desde la consola de CloudFront (p. 134)• Añadir signatarios de confianza a la distribución desde la API de CloudFront (p. 134)

Añadir signatarios de confianza a la distribución desde la consola de CloudFront

Para añadir signatarios de confianza a la distribución desde la consola de CloudFront

1. Si desea utilizar la cuenta de AWS que ha creado la distribución como único signatario de confianza,vaya al paso 2.

Si desea utilizar otras cuentas de AWS, obtenga el ID de cuenta de AWS de cada cuenta:

a. Inicie sesión en la Consola de administración de AWS, en https://console.aws.amazon.com/console/home con la cuenta que desea utilizar como signatario de confianza.

b. En la esquina superior derecha de la consola, haga clic en el nombre asociado a la cuenta y,después, haga clic en My Account.

c. Tome nota del ID de la cuenta que aparece en Account Settings.d. Cierre la sesión de la Consola de administración de AWS.e. Repita los pasos "a" a "d" para cada una de las cuentas a utilizar como signatario de confianza.

2. Abra la consola Amazon CloudFront en https://console.aws.amazon.com/cloudfront/ e inicie sesión conla cuenta que utilizó para crear la distribución a la que desea añadir signatarios de confianza.

3. Haga clic en el ID de distribución.4. Cambie a modo de edición:

• Distribuciones web: haga clic en la pestaña Behaviors, seleccione el comportamiento que deseaeditar y, a continuación, haga clic en Edit.

• Distribuciones RTMP: haga clic en Edit.5. En Restrict Viewer Access (Use Signed URLs or Signed Cookies), haga clic en Yes.6. En Trusted Signers, marque las casillas aplicables:

• Self: marque esta casilla si desea utilizar la cuenta actual (la cuenta desde la que se creó ladistribución).

• Specify Accounts: marque esta casilla si desea utilizar otras cuentas de AWS.7. Si marca la casilla Specify Accounts, escriba los ID de las cuentas de AWS en el campo AWS Account

Number. Estos son los ID que apuntó en el primer paso de este procedimiento. Escriba un ID decuenta por línea.

8. Haga clic en Yes, Edit.9. Si está añadiendo signatarios de confianza a una distribución web y dispone de más de un

comportamiento de la caché, repita los pasos 4 al 8 según corresponda.

Añadir signatarios de confianza a la distribución desde la API de CloudFront

Puede utilizar la API de CloudFront para añadir los ID de cuenta de AWS de los signatarios de confianzaa una distribución existente o crear una nueva distribución que incluya los signatarios de confianza. Encualquier caso, deberá especificar los valores aplicables en el elemento TrustedSigners. En el caso dedistribuciones web, añada el elemento TrustedSigners a uno o varios comportamientos de la caché. Enel caso de distribuciones RTMP, añada el elemento TrustedSigners a la distribución.

Versión de API 2016-09-29134

Amazon CloudFront Guía para desarrolladoresEspecificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza)

Consulte el tema correspondiente en la Amazon CloudFront API Reference:

• Crear una nueva distribución web: CreateDistribution• Actualizar una distribución web existente: UpdateDistribution• Crear una nueva distribución RTMP: CreateStreamingDistribution• Actualizar una distribución RTMP existente: UpdateStreamingDistribution

Comprobar que los signatarios de confianza están activos(opcional)Después de añadir los signatarios de confianza a la distribución, es recomendable comprobar que lossignatarios estén activos. Para que un signatario de confianza esté activo, deben cumplirse las siguientescondiciones:

• La cuenta de AWS debe tener al menos un par de claves activas. Si está rotando pares de claves, lacuenta tendrá dos pares de claves temporalmente: el antiguo y el nuevo.

• CloudFront debe estar al tanto del par de claves activas. Después de crear un par de claves, es posibleque pase un breve periodo antes de CloudFront note que el par de claves existe.

Note

Para consultar una lista de los signatarios de confianza activos de una distribución, actualmentedebe utilizar la API de CloudFront. No hay listas de signatarios de confianza activos disponiblesen la consola de CloudFront.

Comprobar que los signatarios de confianza están activos con la API deCloudFront

Para determinar qué signatarios de confianza disponen de pares de claves activas (es decir, queson signatarios de confianza activos), diríjase a la distribución y revise los valores del elementoActiveTrustedSigners. Este elemento enumera los ID de cuenta de AWS de cada cuenta identificadapor la distribución como signatario de confianza. Si el signatario de confianza tiene uno o más pares declaves de CloudFront activas, el elemento ActiveTrustedSigners también muestra los ID de los paresde claves. Para obtener más información, consulte el tema correspondiente en la Amazon CloudFront APIReference:

• Distribuciones web: GetDistribution• Distribuciones RTMP: GetStreamingDistribution

Rotar pares de claves de CloudFrontAWS recomienda rotar (cambiar) los pares de claves de CloudFront activas cada 90 días. Para rotar paresde claves de CloudFront que utiliza para crear URL firmadas o cookies firmadas sin invalidar las URL ocookies que no hayan caducado todavía, realice las siguientes tareas:

1. Cree un nuevo par de claves para cada una de las cuentas que utiliza para crear URL firmadas. Paraobtener más información, consulte Crear pares de claves de CloudFront para sus signatarios deconfianza (p. 131).

2. Compruebe que CloudFront esté al tanto de las nuevas claves. Para obtener más información,consulte Comprobar que los signatarios de confianza están activos (opcional) (p. 135).

3. Actualice la aplicación para crear firmas con las claves privadas de los nuevos pares de claves.4. Confirme que las URL o las cookies que está firmando con las nuevas claves privadas funcionan.

Versión de API 2016-09-29135

Amazon CloudFront Guía para desarrolladoresEspecificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza)

5. Espere hasta que pase la fecha de vencimiento de las URL o las cookies firmadas con los pares declaves de CloudFront antiguos.

6. Cambie los pares de claves de CloudFront antiguos a Inactive:

a. Inicie sesión en la Consola de administración de AWS con las credenciales raíz de la cuenta deAWS cuyos pares de claves desea desactivar.

b. En el menú account-name, haga clic en Security Credentials.c. Despliegue CloudFront Key Pairs.d. Haga clic en Make Inactive en los pares de claves que desea desactivar.e. Repita los pasos desde la "a" hasta la "d" para cada una de las cuentas de AWS cuyos pares de

claves desee desactivar.7. Confirme una vez más que las URL o las cookies que está firmando con las nuevas claves privadas

funcionan.8. Elimine los pares de claves de CloudFront antiguos:

a. Diríjase a la página Your Security Credentials.b. Despliegue CloudFront Key Pairs.c. Haga clic en Delete en los pares de claves que desea eliminar.

9. Elimine las claves privadas antiguas de la ubicación en la que las había almacenado.

Versión de API 2016-09-29136

Amazon CloudFront Guía para desarrolladoresElegir entre URL firmadas y cookies firmadas

Elegir entre URL firmadas y cookies firmadasLas URL firmadas y las cookies firmadas de CloudFront proporcionan la misma funcionalidad básica:permiten controlar quién puede obtener acceso a su contenido. Si desea distribuir contenido privado através de CloudFront y está intentando decidir si utilizar URL firmadas o cookies firmadas, tenga en cuentalo siguiente.

Utilice URL firmadas en los casos siguientes:

• Si desea utilizar una distribución RTMP. Las cookies firmadas no son compatibles con las distribucionesRTMP.

• Si desea restringir el acceso a archivos individuales, por ejemplo, una descarga de instalación para suaplicación.

• Si sus usuarios utilizan un cliente (por ejemplo, un cliente HTTP personalizado) que no admite cookies.

Utilice cookies firmadas en los casos siguientes:

• Si desea proporcionar acceso a varios archivos restringidos, como, por ejemplo, todos los archivos de unvideo en formato HLS o todos los archivos del área de suscriptores de un sitio web.

• Si no quiere cambiar las URL actuales.

Si en la actualidad no utiliza URL firmadas y si sus URL contienen cualquiera de los siguientes parámetrosde 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 sonURL firmadas y, por lo tanto, no examina las cookies firmadas.

Usar URL firmadas y cookies firmadasSi utiliza URL firmadas y cookies firmadas para controlar el acceso a los mismos objetos y un espectadorutiliza una URL firmada para solicitar un objeto, CloudFront determina si devolver el objeto al espectadorbasándose solo en la URL firmada.

Versión de API 2016-09-29137

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

Usar URL firmadasTemas

• Elegir entre políticas predefinidas y personalizadas para URL firmadas (p. 138)• Cómo funcionan las URL firmadas (p. 139)• Decidir el tiempo de validez de las URL firmadas (p. 139)• ¿Cuándo comprueba CloudFront la fecha y hora de vencimiento de una URL firmada? (p. 140)• Código de muestra y herramientas de terceros (p. 140)• Creación de una URL firmada mediante una política predefinida (p. 141)• Crear una URL firmada mediante una política personalizada (p. 148)

Una URL firmada incluye información adicional, por ejemplo, una fecha y hora de vencimiento, lo quepermite un mayor control sobre el acceso a su contenido. Esta información adicional aparece en unainstrucción de política basada en una política predefinida o personalizada. Las diferencias entre laspolí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íticaspersonalizadas para la misma distribución.

Elegir entre políticas predefinidas y personalizadas para URLfirmadasAl crear una URL firmada, se escribe una instrucción de política en formato JSON que especifica lasrestricciones en la URL firmada, por ejemplo, el tiempo de validez de la URL. Puede utilizar una políticapredefinida o personalizada. A continuación, se presenta una comparación entre las políticas predefinidasy las personalizadas:

Descripción Política predefinida Políticapersonalizada

Puede reutilizar la instrucción de política para variosobjetos. Para reutilizar la instrucción de política, debeutilizar caracteres comodín en el objeto Resource. Paraobtener más información, consulte Valores a especificaren la instrucción de política para una URL firmada queuse una política personalizada (p. 152).)

No Sí

Puede especificar la fecha y la hora a la que los usuariospueden empezar a obtener acceso a su contenido.

No Sí (opcional)

Puede especificar la fecha y la hora a la que los usuariosdejan de obtener acceso a su contenido.

Sí Sí

Puede especificar la dirección IP o a un rango dedirecciones IP de los usuarios que pueden obteneracceso a su contenido.

No Sí (opcional)

La URL firmada incluye una versión de la política concodificación de tipo base64, lo que resulta en una URLmás larga.

No Sí

Versión de API 2016-09-29138

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

Para obtener información acerca de cómo crear URL firmadas mediante una política predefinida, consulteCreación de una URL firmada mediante una política predefinida (p. 141).

Para obtener información acerca de cómo crear URL firmadas mediante una política personalizada,consulte Crear una URL firmada mediante una política personalizada (p. 148).

Cómo funcionan las URL firmadasA continuación, se muestra información general acerca de cómo configurar CloudFront y Amazon S3 paraURL firmadas y cómo responde CloudFront cuando un usuario utiliza una URL firmada para solicitar unobjeto.

1. En la distribución de CloudFront, especifique uno o más signatarios de confianza, que son las cuentasde AWS que desea que tengan permiso para crear URL firmadas.

Para obtener más información, consulte Especificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza) (p. 130).

2. Puede desarrollar su aplicación para determinar si un usuario debe tener acceso a su contenido y paracrear URL firmadas para los objetos o partes de la aplicación a las que desea restringir el acceso.Para obtener más información, consulte el tema correspondiente:

• Creación de una URL firmada mediante una política predefinida (p. 141)• Crear una URL firmada mediante una política personalizada (p. 148)

3. Un usuario solicita un objeto para el que desea solicitar URL firmadas.4. Su aplicación verifica que el usuario tiene derecho a obtener acceso al objeto: que haya iniciado

sesión, que haya pagado por obtener acceso al contenido, o que haya cumplido algún otro requisitopara 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 accesoal contenido. Por ejemplo, si un usuario accede a su contenido desde un navegador web, la aplicacióndevuelve la URL firmada al navegador. El navegador inmediatamente utiliza la URL firmada paraobtener acceso al objeto en la caché perimetral de CloudFront sin necesidad de que el usuariointervenga.

7. CloudFront utiliza la clave pública para validar la firma y confirmar que la URL no se ha manipulado. Sila firma no es válida, se rechaza la solicitud.

Si la firma es válida, CloudFront examina la instrucción de la política en la URL (o crea una si estáutilizando 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 intentaobtener acceso a su contenido durante el periodo que usted ha decidido permitir dicho acceso.

Si la solicitud cumple los requisitos de la declaración, CloudFront se encarga de realizar lasoperaciones estándar: determina si el objeto ya está en la caché perimetral, reenvía la solicitud alorigen si es necesario y devuelve el objeto al usuario.

Decidir el tiempo de validez de las URL firmadasPuede distribuir contenido privado mediante una URL firmada cuyo periodo de validez sea corto, incluso deunos pocos minutos. Las URL firmadas con un tiempo de validez tan corto son adecuadas para distribuircontenido sobre la marcha a un usuario con una finalidad limitada, como la distribución de películas dealquiler o descargas de música bajo demanda para clientes. Si el periodo de validez de las URL firmadases corto, es recomendable generarlas automáticamente con una aplicación que puede desarrollar. Cuando

Versión de API 2016-09-29139

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

el usuario comienza a descargar un objeto o reproducir un archivo multimedia, CloudFront compara lafecha y hora de vencimiento de la URL con la fecha y hora actual para determinar si la URL es válida.

También puede distribuir contenido privado mediante una URL firmada con un periodo de validez máslargo, de incluso años. Las URL válidas durante periodos largos resultan útiles para distribuir contenidoprivado a usuarios conocidos, como, por ejemplo, la distribución de un plan de negocio a inversoreso la distribución de materiales de formación a los empleados. Puede desarrollar una aplicación paraque genere estas URL firmadas de larga duración o utilizar una de las herramientas GUI de tercerosenumeradas en Herramientas y ejemplos de código para configurar contenido privado (p. 421).

¿Cuándo comprueba CloudFront la fecha y hora de vencimientode una URL firmada?El momento en el que CloudFront comprueba la fecha y hora de vencimiento de una URL firmada paradeterminar si la URL sigue siendo válida depende de si la URL es para una distribución web o unadistribución RTMP:

• Distribuciones web: CloudFront comprueba la fecha y hora de vencimiento de la URL firmada alrealizarse la solicitud HTTP. Si un cliente comienza a descargar un objeto grande inmediatamente antesde la fecha de vencimiento, la descarga se realizará por completo incluso si pasa la hora de vencimientodurante la descarga. Si la conexión TCP se interrumpe y el cliente intenta reiniciar la descarga despuésde la fecha de vencimiento, la descarga fallará.

Si un cliente utiliza Range GET para obtener un objeto en partes más pequeñas, cualquier solicitudGET que se produzca después de pasada la fecha de vencimiento no se procesará. Para obtener másinformación acerca de Range GET, consulte Cómo CloudFront procesa las solicitudes parciales deobjetos (Range GET) (p. 212).

• Distribuciones RTMP: CloudFront comprueba la hora de vencimiento de la URL firmada al inicio delevento de reproducción. Si un cliente comienza a reproducir un archivo multimedia antes de la fechade vencimiento, CloudFront permite la reproducción de todo el archivo multimedia. Sin embargo, enfunción del reproductor multimedia, pausar y reiniciar la reproducción podría disparar un nuevo eventode reproducción. Pasar a otra posición del archivo multimedia disparará otro evento de reproducción. Sila reproducción posterior tiene lugar después de la fecha de vencimiento, CloudFront no envía el archivomultimedia.

Código de muestra y herramientas de tercerosPara consultar el código de muestra que crea la parte de las URL firmadas y a la que se le haya aplicadouna función hash, visite los siguientes temas:

• Crear una firma de URL con Perl (p. 175)• Crear una firma de URL con PHP (p. 183)• Crear una firma de URL mediante C # y .NET Framework (p. 185)• Crear una firma de URL con Java (p. 191)

Para obtener información acerca de herramientas de terceros que admitan contenido privado, inclusola creación de URL firmadas, consulte Herramientas y ejemplos de código para configurar contenidoprivado (p. 421).

Versión de API 2016-09-29140

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

Creación de una URL firmada mediante una política predefinidaPara crear una URL firmada mediante una política predefinida, siga el siguiente procedimiento.

Para crear una URL firmada mediante una política predefinida

1. Si utiliza. NET o Java para crear URL firmadas y no ha reformateado la clave privada del par de clavesdel formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo ahora. Paraobtener más información, consulte Reformatear la clave privada de CloudFront (solo para .NET yJava) (p. 132).

2. Concatene los siguientes valores en el orden especificado y elimine los espacios en blanco (incluidostabulaciones y caracteres de líneas nuevas) entre las partes. Es posible que tenga que incluircaracteres 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 presentan.

URL base del objeto

La URL base es la URL de CloudFront que utilizaría para obtener acceso al objeto si no utilizasus propias URL firmadas, incluidos sus parámetros de cadenas de consulta, de haberlos.Para obtener más información acerca del formato de las URL para distribuciones web, consultePersonalización del formato de URL para archivos en CloudFront (p. 72).

Los siguientes ejemplos muestran valores que especifica para distribuciones web.• La siguiente URL de CloudFront es para un objeto de una distribución web (utilizando el nombre

de dominio de CloudFront). image.jpg está en un directorio images. La ruta hacia el objetoen la URL debe coincidir con la ruta hacia el objeto en su servidor HTTP o en el bucket deAmazon 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 son para objetos de una distribución web. Ambas utilizan unnombre 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 es para un objeto de una distribución web que utiliza unnombre de dominio alternativo y protocolo HTTPS:

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

Los siguientes ejemplos son de objetos en dos diferentes formatos de video, MP4 y FLV, paradistribuciones RTMP:• MP4: mp4:sydney-vacation.mp4• FLV: sydney-vacation• FLV: sydney-vacation.flv

Note

En el caso de archivos .flv, incluir o no la extensión de archivo .flv dependeráde su reproductor. Para enviar archivos de audio MP3 o de video H.264/MPEG-4,probablemente necesite añadir el prefijo mp3: o mp4: al nombre del archivo. Algunosreproductores multimedia se pueden configurar para añadir los prefijos automáticamente.Versión de API 2016-09-29

141

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

El reproductor multimedia también podría requerir que especifique el nombre de archivosin su extensión (por ejemplo, sydney-vacation en lugar de sydney-vacation.mp4).

?

El valor ? indica que los parámetros de la cadena de consulta siguen a la URL base. Incluya el ?incluso si no tiene parámetros de cadena de consulta propios.

Sus parámetros de cadena de consulta, de haberlos&

Este valor es opcional. Si desea añadir sus propios parámetros de cadena de consulta, porejemplo:

color=red&size=medium

añada los parámetros después de ? (consulte ) y antes del parámetro Expires. En algúncaso poso frecuente, posiblemente tenga que añadir los parámetros de cadena de consultadespués de Key-Pair-Id.

Important

Los parámetros no podrán llamarse Expires, Signature ni Key-Pair-Id.

Si añade sus propios parámetros, incluya un & después de cada uno, incluso después del último.

Expires=fecha y hora en formato de tiempo (en segundos), en horauniversal coordinada (UTC)

La fecha y la hora en las que desea que la URL deje de permitir el acceso al objeto.

Especifique la fecha y la hora de vencimiento en formato de tiempo Unix (en segundos) y horauniversal coordinada (UTC). Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser1357034400 en formato de tiempo Unix. Para utilizar el formato de tiempo Unix, use un enterode 32 bits para una fecha que no puede ser posterior a 2147483647 (19 de enero de 2038 a las03:14:07 UTC). Para más información acerca de UTC, visite RFC 3339, Date and Time on theInternet: Timestamps, http://tools.ietf.org/html/rfc3339.

&Signature=versión firmada y a la que se le ha aplicado una función hashde la instrucción de política

Una versión firmada, a la que se le ha aplicado una función hash y codificada en base64 de lainstrucción de política JSON. Para obtener más información, consulte Crear una firma para unaURL firmada que use una política predefinida (p. 143).

&Key-Pair-Id=ID de par de claves de CloudFront activas para el par declaves que usa para generar la firma

El ID de un par de claves de CloudFront activas, por ejemplo, APKA9ONS7QCOWEXAMPLE. ElID del par de claves de CloudFront le indica a CloudFront qué clave pública utilizar para validar laURL firmada. CloudFront compara la información de la firma con la información de la instrucciónde política para comprobar que la URL no se ha manipulado.

El ID del par de claves que incluya en las URL firmadas de CloudFront debe ser el ID de un parde claves activas de uno de sus signatarios de confianza:• Distribuciones web: el par de claves debe estar asociado a una cuenta de AWS que sea

signatario de confianza del comportamiento de la caché aplicable.• Distribuciones RTMP: el par de claves debe estar asociado a una cuenta de AWS que sea

signatario de confianza para la distribución.Versión de API 2016-09-29

142

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

Para obtener más información, consulte Especificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza) (p. 130).

Si desactiva un par de claves mientras rota pares de claves de CloudFront y está generandoURL firmadas de forma programada, debe actualizar su aplicación para que utilice un nuevo parde claves activas para uno de sus signatarios de confianza. Si está generando URL firmadasmanualmente, debe crear nuevas URL firmadas. Para obtener más información acerca derotación de pares de claves, consulte Rotar pares de claves de CloudFront (p. 135).

Ejemplo de URL firmada para una distribución web:

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

? color=red&size=medium& Expires=1357034400

&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6

&Key-Pair-Id=APKA9ONS7QCOWEXAMPLE

Ejemplo de URL firmada para una distribución RTMP:

videos/mediafile.flv ? color=red&size=medium&

Expires=1357034400 &Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6

&Key-Pair-Id=APKA9ONS7QCOWEXAMPLE

Crear una firma para una URL firmada que use una política predefinida

Para crear una firma para una URL firmada que utilice una política predefinida, siga el procedimiento acontinuación:

1. Cree una instrucción de política. Consulte Crear una instrucción de política para una URL firmada queuse una política predefinida (p. 143).

2. Firme la instrucción de política para crear una firma. Consulte Crear una firma para una URL firmadaque use una política predefinida (p. 145).

Crear una instrucción de política para una URL firmada que use una política predefinida

Al crear una URL firmada mediante una política predefinida, el parámetro Signature es una versiónfirmada y a la que se le ha aplicado una función hash de una instrucción de política. En el caso de URLfirmadas que utilizan una política predefinida, la instrucción de política no se incluye en la URL, a diferenciade las URL firmadas que utilizan una política personalizada. Para crear la instrucción de política, siga elprocedimiento a continuación.

Para crear una instrucción de política para una URL firmada que use una política predefinida

1. Cree la instrucción de política utilizando el siguiente formato JSON y codificación de caracteres UTF-8.Incluya toda la puntuación y otros valores literalmente, tal como se especifica. Para obtener másinformación acerca de los parámetros Resource y DateLessThan, consulte Valores a especificar enla instrucción de política para una URL firmada que use una política predefinida (p. 144).

{

Versión de API 2016-09-29143

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

"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 tabulaciones y caracteres de línea nueva) de lainstrucción de política. Es posible que tenga que incluir caracteres de escape en la cadena del códigode la aplicación.

Valores a especificar en la instrucción de política para una URL firmada que use una políticapredefinida

Al crear una instrucción de política para una política predefinida, debe especificar los siguientes valores.

Recurso

El valor que especifique dependerá de si está creando la URL firmada para una distribución web opara una distribución RTMP.

Note

Puede especificar solo un valor en Resource.Distribuciones web

La URL base con las cadenas de consulta, de haberlas, pero excluyendo los parámetros deCloudFront Expires, Signature y Key-Pair-Id, por ejemplo:

http://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

Tenga en cuenta lo siguiente:• Protocol: el valor debe comenzar por http:// o https://.• Query string parameters: si no tiene parámetros de cadena de consulta, omita este signo de

interrogación.• Alternate domain names: si especifica un nombre de dominio alternativo (CNAME) en la URL,

debe especificarlo al hacer referencia al objeto en su página web o aplicación. No especifique laURL de Amazon S3 del objeto.

Distribuciones RTMP

Incluya solamente el nombre de la transmisión. Por ejemplo, si la URL completa de unatransmisión de video es:

rtmp://s5c39gqb8ow64r.cloudfront.net/videos/cfx/st/mp3_name.mp3

use los siguientes valores en Resource.

videos/mp3_name

No incluya un prefijo como mp3: o mp4:. Además, en función del reproductor que utilice, esprobable que deba omitir la extensión del archivo en el valor de Resource. Por ejemplo, quizátenga que utilizar sydney-vacation en lugar de sydney-vacation.flv.

Versión de API 2016-09-29144

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

DateLessThan

La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universalcoordinada (UTC). Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser 1357034400 enformato de tiempo Unix.

Este valor debe coincidir con el valor del parámetro de cadena de consulta Expires de la URLfirmada. No incluya el valor entre comillas.

Para obtener más información, consulte ¿Cuándo comprueba CloudFront la fecha y hora devencimiento de una URL firmada? (p. 140).

Ejemplo de instrucción de política para una URL firmada que use una política predefinida

Al utilizar el siguiente ejemplo de instrucción de política en una URL firmada, un usuario puede acceder alobjeto http://d111111abcdef8.cloudfront.net/horizon.jpg hasta el 1 de enero de 2013 a las10:00 h UTC:

{ "Statement":[ { "Resource":"http://d111111abcdef8.cloudfront.net/horizon.jpg?size=large&license=yes", "Condition":{ "DateLessThan":{ "AWS:EpochTime":1357034400 } } } ]}

Crear una firma para una URL firmada que use una política predefinida

Para crear el valor del parámetro Signature en una URL firmada, aplique una función hash y firme lainstrucción de política que ha creado en Crear una instrucción de política para una URL firmada que useuna política predefinida (p. 143). Existen dos versiones de este procedimiento. Siga el procedimientoaplicable:

• Opción 1: crear una firma para una distribución web o RTMP (sin Adobe Flash Player) mediante unapolítica predefinida (p. 145)

• Opción 2: crear una firma para una distribución RTMP mediante una política predefinida (Adobe FlashPlayer) (p. 146)

Para obtener más información y ejemplos de cómo resumir, aplicar una función hash y codificar lainstrucción de política, consulte:

• Utilizar una instancia de Linux Command y OpenSSL para codificar y cifrar con base64 (p. 174)• Ejemplos de código para crear una firma para una URL firmada (p. 175)• Herramientas y ejemplos de código para configurar contenido privado (p. 421)

Opción 1: crear una firma para una distribución web o RTMP (sin Adobe Flash Player) medianteuna 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 elprocedimiento Para crear una instrucción de política para una URL firmada que use una políticapredefinida (p. 143). Utilice la versión de la instrucción de política que no incluye espacios en blanco.

Versión de API 2016-09-29145

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

Para la clave privada requerida por la función hash, utilice la clave privada que está asociada alsignatario de confianza activo aplicable.

Note

El método que utilice para resumir y aplicar una función hash la instrucción de políticadepende de su lenguaje de programación y plataforma. Para ver código de muestra, consulteEjemplos de código para crear una firma para una URL firmada (p. 175).

2. Elimine todos los espacios en blanco (incluidos tabulaciones y caracteres de línea nueva) de lacadena 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 lasección 6.8 llamada Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose InternetMail 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 lasiguiente tabla se muestran los caracteres válidos y no válidos.

Sustituya los caracteres no válidos Por estos caracteres 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 URLfirmada mediante una política predefinida (p. 141) para terminar de encadenar las partes de la URLfirmada.

Opción 2: crear una firma para una distribución RTMP mediante una política predefinida (AdobeFlash Player)

1. Use la función hash SHA-1 y RSA para resumir y firmar la instrucción de política creada en elprocedimiento Para crear una instrucción de política para una URL firmada que use una políticapredefinida (p. 143). Utilice la versión de la instrucción de política que no incluye espacios en blanco.

Para la clave privada requerida por la función hash, utilice la clave privada que está asociada alsignatario de confianza activo aplicable.

Note

El método que utilice para resumir y aplicar una función hash la instrucción de políticadepende de su lenguaje de programación y plataforma. Para ver código de muestra, consulteEjemplos de código para crear una firma para una URL firmada (p. 175).

2. Elimine todos los espacios en blanco (incluidos tabulaciones y caracteres de línea nueva) de lacadena a la que se le ha aplicado una función hash y firmada.

Continúe con el paso 3 si utiliza Adobe Flash Player y el nombre de la transmisión se transfiere desdeuna página web.

Si utiliza Adobe Flash Player y si el nombre de la transmisión no se transfiere desde una página web,omita el resto de este procedimiento. Por ejemplo, si escribió su propio reproductor que extrae losnombres de transmisiones del archivo Adobe Flash.swf, omita el resto de este procedimiento.

3. Codifique la cadena con codificación base64 de MIME. Para obtener más información, consulte lasección 6.8 llamada Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose InternetMail Extensions) Part One: Format of Internet Message Bodies.

Versión de API 2016-09-29146

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En lasiguiente tabla se muestran los caracteres válidos y no válidos.

Sustituya los caracteres no válidos Por estos caracteres válidos

+ - (guion)

= _ (guion bajo)

/ ~ (tilde)

5. Algunas versiones de Adobe Flash Player requieren que codifique los caracteres ?, = y & en la URL.Para obtener más información acerca de si su versión de Adobe Flash Player requiere la sustituciónde caracteres, consulte el sitio web de Adobe.

Si su versión de Flash no requiere la codificación de los caracteres de la URL, vaya al paso 6.

Si su versión de Flash requiere la codificación de los caracteres en la URL, cámbielos como se indicaen la siguiente tabla. (Ya ha sustituido = en el paso anterior).

Sustituya los caracteres no válidos Con esta codificación de URL

? %3F

& %26

6. Añada el valor resultante a la URL firmada después de &Signature= y vuelva a Para crear una URLfirmada mediante una política predefinida (p. 141) para terminar de encadenar las partes de la URLfirmada.

Versión de API 2016-09-29147

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

Crear una URL firmada mediante una política personalizadaTemas

• Crear una instrucción de política para una URL firmada que use una política personalizada (p. 150)• Ejemplos de instrucciones de políticas para una URL firmada que use una política

personalizada (p. 153)• Crear una firma para una URL firmada que use una política personalizada (p. 155)

Para crear una URL firmada mediante una política personalizada, siga el siguiente procedimiento.

Para crear una URL firmada mediante una política personalizada

1. Si utiliza. NET o Java para crear URL firmadas y no ha reformateado la clave privada del par de clavesdel formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo ahora. Paraobtener más información, consulte Reformatear la clave privada de CloudFront (solo para .NET yJava) (p. 132).

2. Concatene los siguientes valores en el orden especificado y elimine los espacios en blanco (incluidostabulaciones y caracteres de líneas nuevas) entre las partes. Es posible que tenga que incluircaracteres 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 presentan.

URL base del objeto

La URL base es la URL de CloudFront que utilizaría para obtener acceso al objeto si no utilizasus propias URL firmadas, incluidos sus parámetros de cadenas de consulta, de haberlos.Para obtener más información acerca del formato de las URL para distribuciones web, consultePersonalización del formato de URL para archivos en CloudFront (p. 72).

Los siguientes ejemplos muestran valores que especifica para distribuciones web.• La siguiente URL de CloudFront es para un objeto de una distribución web (utilizando el nombre

de dominio de CloudFront). image.jpg está en un directorio images. La ruta hacia el objetoen la URL debe coincidir con la ruta hacia el objeto en su servidor HTTP o en el bucket deAmazon 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 son para objetos de una distribución web. Ambas utilizan unnombre 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 es para un objeto de una distribución web que utiliza unnombre de dominio alternativo y protocolo HTTPS:

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

Los siguientes ejemplos son de objetos en dos diferentes formatos de video, MP4 y FLV, paradistribuciones RTMP:• MP4: mp4:sydney-vacation.mp4• FLV: sydney-vacation• FLV: sydney-vacation.flv

Versión de API 2016-09-29148

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

Note

En el caso de archivos .flv, incluir o no la extensión de archivo .flv dependeráde su reproductor. Para enviar archivos de audio MP3 o de video H.264/MPEG-4,probablemente necesite añadir el prefijo mp3: o mp4: al nombre del archivo. Algunosreproductores multimedia se pueden configurar para añadir los prefijos automáticamente.El reproductor multimedia también podría requerir que especifique el nombre de archivosin su extensión (por ejemplo, sydney-vacation en lugar de sydney-vacation.mp4).

?

El valor ? indica que los parámetros de la cadena de consulta siguen a la URL base. Incluya el ?incluso si no tiene parámetros de cadena de consulta propios.

Sus parámetros de cadena de consulta, de haberlos&

Este valor es opcional. Si desea añadir sus propios parámetros de cadena de consulta, porejemplo:

color=red&size=medium

añádalos después de ? (consulte ) y antes del parámetro Policy. En algún caso posofrecuente, posiblemente tenga que añadir los parámetros de cadena de consulta después deKey-Pair-Id.

Important

Los parámetros no podrán llamarse Policy, Signature ni Key-Pair-Id.

Si añade sus propios parámetros, incluya un & después de cada uno, incluso después del último.

Policy=versión codificada con base64 de la instrucción de política

La instrucción de política en formato JSON después de haber eliminado los espacios en blancoy, a continuación, codificada con base64. Para obtener más información, consulte Crear unainstrucción de política para una URL firmada que use una política personalizada (p. 150).

La instrucción de política controla el acceso que una URL firmada concede a un usuario: la URLdel objeto (para distribuciones web) o el nombre de la transmisión (para distribuciones RTMP),una fecha y hora de vencimiento, una fecha y la hora opcional a partir de la cual la URL pasaa ser válida y una dirección IP o un rango de direcciones IP opcionales autorizadas a obteneracceso al objeto.

&Signature=versión firmada y a la que se le ha aplicado una función hashde la instrucción de política

Una versión firmada, a la que se le ha aplicado una función hash y codificada en base64 de lainstrucción de política JSON. Para obtener más información, consulte Crear una firma para unaURL firmada que use una política personalizada (p. 155).

&Key-Pair-Id=ID de par de claves de CloudFront activas para el par declaves que usa para firmar la instrucción de política

El ID de un par de claves de CloudFront activas, por ejemplo, APKA9ONS7QCOWEXAMPLE. ElID del par de claves de CloudFront le indica a CloudFront qué clave pública utilizar para validar laURL firmada. CloudFront compara la información de la firma con la información de la instrucciónde política para comprobar que la URL no se ha manipulado.

El ID del par de claves que incluya en las URL firmadas de CloudFront debe ser el ID de un parde claves activas de uno de sus signatarios de confianza:

Versión de API 2016-09-29149

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

• Distribuciones web: el par de claves debe estar asociado a una cuenta de AWS que seasignatario de confianza del comportamiento de la caché aplicable.

• Distribuciones RTMP: el par de claves debe estar asociado a una cuenta de AWS que seasignatario de confianza para la distribución.

Para obtener más información, consulte Especificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza) (p. 130).

Si desactiva un par de claves mientras rota pares de claves de CloudFront y está generandoURL firmadas de forma programada, debe actualizar su aplicación para que utilice un nuevo parde claves activas para uno de sus signatarios de confianza. Si está generando URL firmadasmanualmente, debe crear nuevas URL firmadas. Para obtener más información acerca derotación de pares de claves, consulte Rotar pares de claves de CloudFront (p. 135).

Ejemplo de URL firmada para una distribución web:

http://d111111abcdef8.cloudfront.net/image.jpg ?

color=red&size=medium&

Policy=eyANCiAgICEXAMPLEW1lbnQiOiBbeyANCiAgICAgICJSZXNvdXJjZSI6Imh0dHA6Ly9kemJlc3FtN3VuMW0wLmNsb3VkZnJvbnQubmV0L2RlbW8ucGhwIiwgDQogICAgICAiQ29uZGl0aW9uIjp7IA0KICAgICAgICAgIklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIyMDcuMTcxLjE4MC4xMDEvMzIifSwNCiAgICAgICAgICJEYXRlR3JlYXRlclRoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTI5Njg2MDE3Nn0sDQogICAgICAgICAiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjEyOTY4NjAyMjZ9DQogICAgICB9IA0KICAgfV0gDQp9DQo

&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmat

EXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 &Key-Pair-Id=APKA9ONS7QCOWEXAMPLE

Ejemplo de URL firmada para una distribución RTMP:

videos/mediafile.flv ? color=red&size=medium&

Policy=eyANCiAgICEXAMPLEW1lbnQiOiBbeyANCiAgICAgICJSZXNvdXJjZSI6Imh0dHA6Ly9kemJlc3FtN3VuMW0wLmNsb3VkZnJvbnQubmV0L2RlbW8ucGhwIiwgDQogICAgICAiQ29uZGl0aW9uIjp7IA0KICAgICAgICAgIklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIyMDcuMTcxLjE4MC4xMDEvMzIifSwNCiAgICAgICAgICJEYXRlR3JlYXRlclRoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTI5Njg2MDE3Nn0sDQogICAgICAgICAiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjEyOTY4NjAyMjZ9DQogICAgICB9IA0KICAgfV0gDQp9DQo

&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmat

EXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 &Key-Pair-Id=APKA9ONS7QCOWEXAMPLE

Crear una instrucción de política para una URL firmada que use una políticapersonalizada

Para crear una instrucción de política para una política personalizada, siga el siguiente procedimiento. Paraconsultar diversas instrucciones de política que controlen el acceso a objetos de distintas maneras, visiteEjemplos de instrucciones de políticas para una URL firmada que use una política personalizada (p. 153).

Versión de API 2016-09-29150

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

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, consulteValores a especificar en la instrucción de política para una URL firmada que use una políticapersonalizada (p. 152).

{ "Statement": [ { "Resource":"URL or stream name of the object", "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"} } } ]}

Tenga en cuenta lo siguiente:

• Puede incluir una instrucción.• Utilice la codificación de caracteres UTF-8.• Incluya toda la puntuación y los nombres de parámetros exactamente como se especifica. No se

aceptan abreviaturas de nombres de parámetros.• El orden de los parámetros de la sección Condition no importa.• Para obtener información acerca de valores para Resource, DateLessThan, DateGreaterThan

y IpAddress, consulte Valores a especificar en la instrucción de política para una URL firmada queuse una política personalizada (p. 152).

2. Elimine todos los espacios en blanco (incluidos tabulaciones y caracteres de línea nueva) de lainstrucción de política. Es posible que tenga que incluir caracteres de escape en la cadena del códigode la aplicación.

3. Codifique la instrucción de política con codificación base64 de MIME. Para obtener más información,consulte la sección 6.8 llamada Base64 Content-Transfer-Encoding de RFC 2045, MIME (MultipurposeInternet 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 lasiguiente tabla se muestran los caracteres válidos y no válidos.

Sustituya los caracteres no válidos Por estos caracteres válidos

+ - (guion)

= _ (guion bajo)

/ ~ (tilde)

5. Añada el valor resultante a la URL firmada después de Policy=.6. Cree una firma para la URL firmada aplicando una función hash, firmando y codificando con base64 la

instrucción de política. Para obtener más información, consulte Crear una firma para una URL firmadaque use una política personalizada (p. 155).

Versión de API 2016-09-29151

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

Valores a especificar en la instrucción de política para una URL firmada que use una políticapersonalizada

Al crear una instrucción de política para una política personalizada, debe especificar los siguientes valores.

Recurso

El valor que especifique dependerá de si está creando las URL firmadas para distribuciones web oRTMP.

Note

Puede especificar solo un valor en Resource.Distribuciones web (opcional pero recomendado)

La URL base con las cadenas de consulta, de haberlas, pero excluyendo los parámetros deCloudFront Policy, Signature, and Key-Pair-Id, por ejemplo:

http://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

Important

Si omite el parámetro Resource para una distribución web, los usuarios podrán accedera todos los objetos asociados a cualquier distribución que esté asociada al par de clavesutilizado para crear la URL firmada.

Tenga en cuenta lo siguiente:• Protocol: el valor debe comenzar por http://, https:// o *.• Query string parameters: si no tiene parámetros de cadena de consulta, omita este signo de

interrogación.• Caracteres comodín: puede utilizar el carácter comodín que coincide con cero o con más

caracteres (*), o el carácter comodín que coincide exactamente con un carácter (?) en cualquierlugar de la cadena. Por ejemplo, el valor:

http://d111111abcdef8.cloudfront.net/*game_download.zip*

incluiría, por ejemplo, los siguientes objetos:• http://d111111abcdef8.cloudfront.net/game_download.zip

• http://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes

• http://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp

• Alternate domain names: si especifica un nombre de dominio alternativo (CNAME) en la URL,debe especificarlo al hacer referencia al objeto en su página web o aplicación. No especifique laURL de Amazon S3 del objeto.

Distribuciones RTMP

Incluya solamente el nombre de la transmisión. Por ejemplo, si la URL completa de unatransmisión de video es:

rtmp://s5c39gqb8ow64r.cloudfront.net/videos/cfx/st/mp3_name.mp3

use los siguientes valores en Resource.

videos/mp3_name

Versión de API 2016-09-29152

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

No incluya un prefijo como mp3: o mp4:. Además, en función del reproductor que utilice, esprobable que deba omitir la extensión del archivo en el valor de Resource. Por ejemplo, quizátenga que utilizar sydney-vacation en lugar de sydney-vacation.flv.

DateLessThan

La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universalcoordinada (UTC). No incluya el valor entre comillas. Para más información acerca de UTC, visite RFC3339, Date and Time on the Internet: Timestamps, http://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 tiempoUnix.

Este es el único parámetro requerido en la sección Condition. CloudFront requiere este valor paraimpedir que los usuarios tengan acceso permanente a su contenido privado.

Para obtener más información, consulte ¿Cuándo comprueba CloudFront la fecha y hora devencimiento de una URL firmada? (p. 140)

DateGreaterThan (opcional)

Una fecha y hora de inicio opcionales de la URL en formato de tiempo Unix (en segundos) y horauniversal coordinada (UTC). Los usuarios no tienen permiso para obtener acceso al objeto antes de lafecha 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 a cualquier dirección IP obtener acceso al objeto, 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-domainRouting (CIDR): The Internet Address Assignment and Aggregation Plan, http://tools.ietf.org/html/rfc4632.

Important

Direcciones IP en formato IPv6, como 2001:0db8:85a3:0000:0000:8a2e:0370:7334, no soncompatibles.

Si está utilizando una política personalizada que incluya IpAddress, no habilite IPv6 para ladistribución. Si desea restringir el acceso a algún contenido por dirección IP y admite solicitudesIPv6 de otro contenido, puede crear dos distribuciones. Para obtener más información, consulteHabilitar IPv6 (p. 49) en el tema Valores que deben especificarse al crear o actualizar unadistribución (p. 30).

Ejemplos de instrucciones de políticas para una URL firmada que use una políticapersonalizada

Los siguientes ejemplos de instrucciones de políticas muestran cómo controlar el acceso a un objetoespecífico, a todos los objetos de un directorio o a todos los objetos 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 rangode direcciones IP, y cómo impedir que los usuarios utilicen la URL firmada después de una fecha y horaespecíficas.

Versión de API 2016-09-29153

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

Si copia y pega cualquiera de estos ejemplos, elimine los espacios en blanco (incluidos tabulaciones ycaracteres de línea nueva), sustituya los valores aplicables por sus propios valores e incluya un carácterdespués de la llave de cierre ( } ).

Para obtener más información, consulte Valores a especificar en la instrucción de política para una URLfirmada que use una política personalizada (p. 152).

Temas• Ejemplo de instrucción de política: cómo obtener acceso a un objeto desde un rango de direcciones

IP (p. 154)• Ejemplo de instrucción de política: cómo obtener acceso a todos los objetos de un directorio desde un

rango de direcciones IP (p. 154)• Ejemplo de instrucción de política: cómo obtener acceso todos los objetos asociados a un ID de par de

claves desde una dirección IP (p. 155)

Ejemplo de instrucción de política: cómo obtener acceso a un objeto desde un rango dedirecciones IP

El siguiente ejemplo de política personalizada en una URL firmada especifica que un usuario puedeacceder al objeto http://d111111abcdef8.cloudfront.net/game_download.zip desdedirecciones IP dentro del 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/game_download.zip", "Condition":{ "IpAddress":{"AWS:SourceIp":"192.0.2.0/24"}, "DateLessThan":{"AWS:EpochTime":1357034400} } } ]}

Ejemplo de instrucción de política: cómo obtener acceso a todos los objetos de un directorio desdeun rango de direcciones IP

La siguiente política personalizada de ejemplo le permite crear URL firmadas para cualquier objeto en eldirectorio training, tal como lo indica el carácter comodín * en el parámetro Resource. Los usuariospueden obtener acceso al objeto desde una dirección IP dentro del rango 192.0.2.0/24 hasta el 1 deenero 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 incluye una URL base que identifica un objeto específico,por ejemplo:

http://d111111abcdef8.cloudfront.net/training/orientation.pdf

Versión de API 2016-09-29154

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

Ejemplo de instrucción de política: cómo obtener acceso todos los objetos asociados a un ID depar de claves desde una dirección IP

La siguiente política personalizada de muestra le permite crear URL firmadas para cualquier objetoasociado a cualquier distribución, tal como lo indica el carácter comodín * en el parámetro Resource. Elusuario debe utilizar la dirección IP 192.0.2.10/32. (El valor 192.0.2.10/32 en notación CIDR serefiere a la dirección IP individual 192.0.2.10). Los objetos solo están disponibles desde el 1 de enero de2013 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 objeto concreto enuna distribución de CloudFront específica, por ejemplo:

http://d111111abcdef8.cloudfront.net/training/orientation.pdf

La URL firmada también incluye un ID de par de claves que debe asociarse a un signatario de confianzaen la distribución (d111111abcdef8.cloudfront.net) que deberá especificar en la URL base.

Crear una firma para una URL firmada que use una política personalizadaLa firma de una URL firmada que utiliza una política personalizada es una versión de la instrucción depolítica a la que se le ha aplicado una función hash, firmada y codificada con base64. Para crear una firmapara una política personalizada, siga el procedimiento aplicable. La versión que elija dependerá del tipo dedistribución (web o RTMP) y, en el caso de las distribuciones RTMP, el reproductor multimedia que utilice(Adobe Flash Player u otro):

• Opción 1: crear una firma para una distribución web o RTMP (sin Adobe Flash Player) mediante unapolítica personalizada (p. 155)

• Opción 2: crear una firma para una distribución RTMP mediante una política personalizada (Adobe FlashPlayer) (p. 156)

Para obtener más información y ejemplos de cómo resumir, aplicar una función hash y codificar lainstrucción de política, consulte:

• Utilizar una instancia de Linux Command y OpenSSL para codificar y cifrar con base64 (p. 174)• Ejemplos de código para crear una firma para una URL firmada (p. 175)• Herramientas y ejemplos de código para configurar contenido privado (p. 421)

Opción 1: crear una firma para una distribución web o RTMP (sin Adobe Flash Player) medianteuna 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 enel procedimiento Para crear una instrucción de política para una URL firmada que use una políticapersonalizada (p. 151). Utilice la versión de la instrucción de política que no incluye espacios enblanco, pero que aún no ha sido codificada con base64.

Versión de API 2016-09-29155

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

Para la clave privada requerida por la función hash, utilice la clave privada que está asociada alsignatario de confianza activo aplicable.

Note

El método que utilice para resumir y aplicar una función hash la instrucción de políticadepende de su lenguaje de programación y plataforma. Para ver código de muestra, consulteEjemplos de código para crear una firma para una URL firmada (p. 175).

2. Elimine todos los espacios en blanco (incluidos tabulaciones y caracteres de línea nueva) de lacadena 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 lasección 6.8 llamada Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose InternetMail 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 lasiguiente tabla se muestran los caracteres válidos y no válidos.

Sustituya los caracteres no válidos Por estos caracteres 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 URLfirmada mediante una política personalizada (p. 148) para terminar de encadenar las partes de laURL firmada.

Opción 2: crear una firma para una distribución RTMP mediante una política personalizada (AdobeFlash Player)

1. Use la función hash SHA-1 y RSA para resumir y firmar la instrucción de política JSON creada enel procedimiento Para crear una instrucción de política para una URL firmada que use una políticapersonalizada (p. 151). Utilice la versión de la instrucción de política que no incluye espacios enblanco, pero que aún no ha sido codificada con base64.

Para la clave privada requerida por la función hash, utilice la clave privada que está asociada alsignatario de confianza activo aplicable.

Note

El método que utilice para resumir y aplicar una función hash la instrucción de políticadepende de su lenguaje de programación y plataforma. Para ver código de muestra, consulteEjemplos de código para crear una firma para una URL firmada (p. 175).

2. Elimine todos los espacios en blanco (incluidos tabulaciones y caracteres de línea nueva) de lacadena a la que se le ha aplicado una función hash y firmada.

Continúe con el paso 3 si el nombre de la transmisión se transfiere desde una página web.

Si el nombre de la transmisión no se transfiere desde una página web, omita el resto de esteprocedimiento. Por ejemplo, si escribió su propio reproductor que extrae los nombres de transmisionesdel archivo Adobe Flash.swf, omita el resto de este procedimiento.

3. Codifique la cadena con codificación base64 de MIME. Para obtener más información, consulte lasección 6.8 llamada Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose InternetMail Extensions) Part One: Format of Internet Message Bodies.

Versión de API 2016-09-29156

Amazon CloudFront Guía para desarrolladoresUsar URL firmadas

4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En lasiguiente tabla se muestran los caracteres válidos y no válidos.

Sustituya los caracteres no válidos Por estos caracteres válidos

+ - (guion)

= _ (guion bajo)

/ ~ (tilde)

5. Algunas versiones de Adobe Flash Player requieren que codifique los caracteres ?, = y & en la URL.Para obtener más información acerca de si su versión de Adobe Flash Player requiere la sustituciónde caracteres, consulte el sitio web de Adobe.

Si su versión de Adobe Flash Player no requiere que codifique los caracteres ?, = y &, vaya al paso 6.

Si su versión de Adobe Flash Player requiere la codificación de los caracteres en la URL, cámbieloscomo se indica en la siguiente tabla. (Ya ha sustituido = en el paso anterior).

Sustituya los caracteres no válidos Con esta codificación de URL

? %3F

& %26

6. Añada el valor resultante a la URL firmada después de &Signature= y vuelva a Para crear una URLfirmada mediante una política personalizada (p. 148) para terminar de encadenar las partes de laURL firmada.

Versión de API 2016-09-29157

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Usar cookies firmadasLas cookies firmadas de CloudFront le permiten controlar quién puede obtener acceso a su contenidocuando no desea cambiar las URL actuales o cuando desea proporcionar acceso a varios archivosrestringidos, por ejemplo, todos los archivos del área de suscriptores de un sitio web. En este tema seexplica qué tomar en cuenta al utilizar cookies firmadas y describe cómo configurarlas mediante políticaspredefinidas o personalizadas.

Temas• Elegir entre políticas predefinidas y personalizadas para cookies firmadas (p. 158)• Cómo funcionan las cookies firmadas (p. 159)• Prevenir el uso indebido de cookies firmadas (p. 159)• ¿Cuándo comprueba CloudFront la fecha y hora de vencimiento de una cookie firmada? (p. 160)• Código de muestra y herramientas de terceros (p. 160)• Establecer cookies firmadas mediante una política predefinida (p. 160)• Establecer cookies firmadas mediante una política personalizada (p. 165)

Elegir entre políticas predefinidas y personalizadas para cookiesfirmadasAl crear una cookie firmada, se escribe una instrucción de política en formato JSON que especificalas restricciones en la cookie firmada, por ejemplo, el tiempo de validez de la cookie. Puede utilizarpolíticas predefinidas o personalizadas. En la siguiente tabla se comparan las políticas predefinidas y laspersonalizadas:

Descripción Política predefinida Políticapersonalizada

Puede reutilizar la instrucción de política para variosobjetos. Para reutilizar la instrucción de política, debeutilizar caracteres comodín en el objeto Resource. Paraobtener más información, consulte Valores a especificaren la instrucción de una política personalizada paracookies firmadas (p. 169).)

No Sí

Puede especificar la fecha y la hora a la que los usuariospueden empezar a obtener acceso a su contenido.

No Sí (opcional)

Puede especificar la fecha y la hora a la que los usuariosdejan de obtener acceso a su contenido.

Sí Sí

Puede especificar la dirección IP o a un rango dedirecciones IP de los usuarios que pueden obteneracceso a su contenido.

No Sí (opcional)

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. 160).

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. 165).

Versión de API 2016-09-29158

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Cómo funcionan las cookies firmadasA continuación, se muestra información general acerca de cómo configurar CloudFront para cookiesfirmadas y cómo responde CloudFront cuando un usuario envía una solicitud que contiene una cookiefirmada.

1. En la distribución de CloudFront, especifique uno o más signatarios de confianza, que son las cuentasde AWS que desea que tengan permiso para crear URL y cookies firmadas.

Para obtener más información, consulte Especificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza) (p. 130).

2. Desarrolle una aplicación para determinar si un usuario debe obtener acceso a su contenido y, encaso de que sí, que envíe 3 encabezados Set-Cookie al espectador. (cada encabezado Set-Cookie puede contener solo un par nombre-valor y una cookie de CloudFront firmada requiere trespares nombre-valor). Debe enviar los encabezados Set-Cookie al espectador antes de que elusuario solicite su contenido privado. Si configura un periodo de vencimiento corto en la cookie, lerecomendamos enviar tres encabezados Set-Cookie más en respuesta a solicitudes posteriores, demodo que el usuario continúe teniendo acceso.

Normalmente, la distribución de CloudFront tiene al menos dos comportamientos de la caché: unoque no requiere autenticación y otro que sí. La página de error de la parte segura del sitio incluye unredirector o un enlace a una página de inicio de sesión.

Si configura su distribución para almacenar objetos en la caché en función de las cookies, CloudFrontno almacena objetos independientes en la caché en función de los atributos de las cookies firmadas.

3. Un usuario inicia sesión en su sitio web y paga por el contenido o cumple algún otro requisito para elacceso.

4. Su aplicación devuelve los encabezados Set-Cookie en la respuesta, y el espectador almacena lospares nombre-valor.

5. El usuario solicita un objeto.

El navegador del usuario o cualquier otro espectador obtiene los pares nombre-valor del paso 4 y losañ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 dichacookie no se ha manipulado. Si la firma no es válida, se rechaza la solicitud.

Si la firma de la cookie es válida, CloudFront examina la instrucción de la política en la cookie (o creauna si está utilizando una política predefinida) para confirmar que la solicitud sigue siendo válida. Porejemplo, si especifica una fecha y hora de inicio y fin de la cookie, CloudFront confirma que el usuariointenta obtener acceso a su contenido durante el periodo en el que ha decidido permitir dicho acceso.

Si la solicitud cumple los requisitos de la declaración, CloudFront envía el contenido como lo haceen caso de contenido no restringido: determina si el objeto ya está en la caché perimetral, reenvía lasolicitud al origen si es necesario y devuelve el objeto al usuario.

Prevenir el uso indebido de cookies firmadasSi especifica el parámetro Domain en un encabezado Set-Cookie, especifique el valor de la forma másprecisa posible para limitar el acceso potencial por parte de alguien con el mismo nombre de dominio raíz.Por ejemplo, apex.example.com es mejor que example.com, especialmente si no controla example.com.Esto ayuda a impedir que alguien obtenga acceso a su contenido desde nadir.example.com.

Para evitar este tipo de ataques, haga lo siguiente:

Versión de API 2016-09-29159

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

• Excluya los atributos de cookies Expires y Max-Age para que el encabezado Set-Cookie creeuna cookie de sesión. Las cookies de sesión se eliminan automáticamente cuando el usuario cierra elnavegador, 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.• En el atributo CloudFront-Expires, especifique el menor tiempo de vencimiento posible pero

razonable en función de por cuánto tiempo desea que los usuarios puedan obtener acceso a sucontenido.

¿Cuándo comprueba CloudFront la fecha y hora de vencimientode una cookie firmada?Para determinar si una cookie firmada sigue siendo válida, CloudFront comprueba la fecha y hora devencimiento de la cookie en el momento de la solicitud HTTP. Si un cliente comienza a descargar un objetogrande inmediatamente antes de la fecha de vencimiento, la descarga se realizará por completo inclusosi pasa la hora de vencimiento durante la descarga. Si la conexión TCP se interrumpe y el cliente intentareiniciar la descarga después de la fecha de vencimiento, la descarga fallará.

Si un cliente utiliza Range GET para obtener un objeto en partes más pequeñas, cualquier solicitudGET que se produzca después de pasada la fecha de vencimiento no se procesará. Para obtener másinformación acerca de Range GET, consulte Cómo CloudFront procesa las solicitudes parciales de objetos(Range GET) (p. 212).

Código de muestra y herramientas de tercerosEl código de muestra para contenido privado solo muestra cómo crear firmas para URL firmadas. Sinembargo, el proceso de creación de una firma para una cookie firmada es muy similar, así que gran partedel código de muestra es aplicable. Para obtener más información, consulte los siguientes temas:

• Crear una firma de URL con Perl (p. 175)• Crear una firma de URL con PHP (p. 183)• Crear una firma de URL mediante C # y .NET Framework (p. 185)• Crear una firma de URL con Java (p. 191)

Para obtener información acerca de herramientas de terceros que admitan contenido privado, inclusola creación de URL firmadas, consulte Herramientas y ejemplos de código para configurar contenidoprivado (p. 421).

Establecer cookies firmadas mediante una política predefinidaPara establecer una cookie firmada utilizando una política predefinida, complete los pasos siguientes. Paracrear la firma, consulte Crear una firma para una cookie firmada que use una política predefinida.

Para establecer cookies firmadas mediante una política predefinida

1. Si utiliza. NET o Java para crear cookies firmadas y no ha reformateado la clave privada del par declaves del formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo ahora.Para obtener más información, consulte Reformatear la clave privada de CloudFront (solo para .NET yJava) (p. 132).

2. Programe su aplicación para enviar tres encabezados Set-Cookie a los espectadores aprobados.Necesita encabezados Set-Cookie porque cada encabezado Set-Cookie puede contener solo unpar nombre-valor y una cookie de CloudFront firmada requiere tres pares nombre-valor. Los pares denombre-valor son: CloudFront-Expires, CloudFront-Signature y CloudFront-Key-Pair-

Versión de API 2016-09-29160

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Id. Los valores deben estar presentes en el espectador antes de que un usuario realice la primerasolicitud de un objeto cuyo acceso desea controlar.

Note

En general, recomendamos que excluya los atributos Expires y Max-Age. Al excluirlos atributos, el navegador elimina la cookie cuando el usuario lo cierra, lo que reduce laposibilidad de alguien obtenga acceso no autorizado a su contenido. Para obtener másinformación, consulte Prevenir el uso indebido de cookies firmadas (p. 159).

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: Domain=optional domain name; Path=/optional directory path; Secure; HttpOnly; CloudFront-Expires=date and time in Unix time format (in seconds) and Coordinated Universal Time (UTC)

Set-Cookie: Domain=optional domain name; Path=/optional directory path; Secure; HttpOnly; CloudFront-Signature=hashed and signed version of the policy statement

Set-Cookie: Domain=optional domain name; Path=/optional directory path; Secure; HttpOnly; CloudFront-Key-Pair-Id=active CloudFront key pair Id for the key pair that you are using to generate the signature

(Opcional) Domain

El nombre de dominio para el objeto solicitado. Si no especifica un atributo Domain, el valorpredeterminado será el nombre de dominio de la URL; esto es aplicable solo al nombre dedominio especificado, no a subdominios. Si especifica un atributo Domain, también será aplicablea subdominios. Un punto al inicio del nombre de dominio (por ejemplo, Domain=.example.com)es opcional. Además, si no especifica un atributo Domain, el nombre de dominio de la URL y elvalor del atributo Domain deberán coincidir.

Puede especificar el nombre de dominio que CloudFront asignó a su distribución, por ejemplo,d111111abcdef8.cloudfront.net, pero no puede especificar *.cloudfront.net como nombre dedominio.

Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debeañadir dicho nombre de dominio a su distribución independientemente de que especifique elatributo Domain. Para obtener más información, consulte Nombres de dominio alternativos(CNAME) (p. 46) en el tema Valores que deben especificarse al crear o actualizar una distribución (p. 30).

(Opcional) Path

La ruta del objeto solicitado. Si no especifica un atributo Path, el valor predeterminado será laruta de la URL.

Versión de API 2016-09-29161

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Secure

Requiere que el espectador cifre cookies antes de enviar una solicitud. Recomendamos queenvíe el encabezado Set-Cookie a través de una conexión HTTPS para asegurarse de que losatributos de la cookie estén protegidos contra ataques man-in-the-middle.

HttpOnly

Requiere que el espectador envíe la cookie únicamente en solicitudes de HTTP o HTTPS.CloudFront-Expires

Especifique la fecha y la hora de vencimiento en formato de tiempo Unix (en segundos) y horauniversal coordinada (UTC). Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser1357034400 en formato de tiempo Unix. Para utilizar el formato de tiempo Unix, use un enterode 32 bits para una fecha que no puede ser posterior a 2147483647 (19 de enero de 2038 a las03:14:07 UTC). Para más información acerca de UTC, visite RFC 3339, Date and Time on theInternet: Timestamps, http://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ónhash y codificada en base64. Para obtener más información, consulte Crear una firma para unacookie firmada que use una política predefinida (p. 163).

CloudFront-Key-Pair-Id

El ID de un par de claves de CloudFront activas, por ejemplo, APKA9ONS7QCOWEXAMPLE. ElID del par de claves de CloudFront le indica a CloudFront qué clave pública utilizar para validar lacookie firmada. CloudFront compara la información de la firma con la información de la instrucciónde política para comprobar que la URL no se ha manipulado.

El ID del par de claves que incluya en las cookies firmadas de CloudFront debe estar asociado auna cuenta de AWS que sea signatario de confianza del comportamiento de la caché aplicable.

Para obtener más información, consulte Especificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza) (p. 130).

Si desactiva un par de claves mientras rota pares de claves de CloudFront, debe actualizarsu aplicación para que utilice un nuevo par de claves activas para uno de sus signatarios deconfianza. Para obtener más información acerca de rotación de pares de claves, consulte Rotarpares de claves de CloudFront (p. 135).

El ejemplo siguiente muestra encabezados Set-Cookie para una cookie firmada cuando usa el nombrede dominio asociado a su distribución en las URL de sus objetos:

Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly; CloudFront-Expires=1426500000Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly; CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly; CloudFront-Key-Pair-Id=APKA9ONS7QCOWEXAMPLE

El ejemplo siguiente muestra encabezados Set-Cookie para una cookie firmada cuando usa el nombrede dominio alternativo example.org en las URL de sus objetos:

Set-Cookie: Domain=example.org; Path=/images/*; Secure; HttpOnly; CloudFront-Expires=1426500000Set-Cookie: Domain=example.org; Path=/images/*; Secure; HttpOnly; CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_

Versión de API 2016-09-29162

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Set-Cookie: Domain=example.org; Path=/images/*; Secure; HttpOnly; CloudFront-Key-Pair-Id=APKA9ONS7QCOWEXAMPLE

Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe añadir dichonombre de dominio a su distribución independientemente de que especifique el atributo Domain. Paraobtener más información, consulte Nombres de dominio alternativos (CNAME) (p. 46) en el tema Valoresque deben especificarse al crear o actualizar una distribución (p. 30).

Crear una firma para una cookie firmada que use una política predefinidaPara 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 Crear una instrucción de política para una cookie firmadaque use una política predefinida (p. 163).

2. Firme la instrucción de política para crear una firma. Consulte Cómo firmar la instrucción de políticapara crear una firma para una cookie firmada que use una política predefinida (p. 164).

Crear una instrucción de política para una cookie firmada que use una política predefinida

Al establecer una cookie firmada que use una política predefinida, el atributo CloudFront-Signaturees una versión de una instrucción de política firmada y a la que se le ha aplicado una función hash. En elcaso de cookies firmadas que utilizan una política predefinida, la instrucción de política no se incluye enel encabezado Set-Cookie, a diferencia de las cookies firmadas que utilizan una política personalizada.Para crear la instrucción de política, siga el procedimiento a continuación.

Para crear una instrucción de política para una cookie firmada que use una política predefinida

1. Cree la instrucción de política utilizando el siguiente formato JSON y codificación de caracteres UTF-8.Incluya toda la puntuación y otros valores literalmente, tal como se especifica. Para obtener másinformación acerca de los parámetros Resource y DateLessThan, consulte Valores a especificar enla instrucción de una política predefinida para cookies firmadas (p. 163).

{ "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 tabulaciones y caracteres de línea nueva) de lainstrucción de política. Es posible que tenga que incluir caracteres de escape en la cadena del códigode la aplicación.

Valores a especificar en la instrucción de una política predefinida para cookies firmadas

Al crear una instrucción de una política predefinida, debe especificar los siguientes valores:

Recurso

La URL base, incluidas las cadenas de consulta, de haberlas; por ejemplo:

http://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

Versión de API 2016-09-29163

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Puede especificar solo un valor en Resource.

Tenga en cuenta lo siguiente:• Protocol: el valor debe comenzar por http:// o https://.• Query string parameters: si no tiene parámetros de cadena de consulta, omita este signo de

interrogación.• Alternate domain names: si especifica un nombre de dominio alternativo (CNAME) en la URL, debe

especificarlo al hacer referencia al objeto en su página web o aplicación. No especifique la URL deAmazon S3 del objeto.

DateLessThan

La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universalcoordinada (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 tiempoUnix.

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 devencimiento de una cookie firmada? (p. 160).

Ejemplo de instrucción de política para una política predefinida

Al utilizar el siguiente ejemplo de instrucción de política en una cookie firmada, un usuario puede obteneracceso al objeto http://d111111abcdef8.cloudfront.net/horizon.jpg hasta el 16 de marzo de2015 a las 10:00 h UTC:

{ "Statement":[ { "Resource":"http://d111111abcdef8.cloudfront.net/horizon.jpg?size=large&license=yes", "Condition":{ "DateLessThan":{ "AWS:EpochTime":1426500000 } } } ]}

Cómo firmar la instrucción de política para crear una firma para una cookie firmada que use unapolítica predefinida

Para crear el valor del atributo CloudFront-Signature en un encabezado Set-Cookie, aplique unafunción hash y firme la instrucción de política creada en Para crear una instrucción de política para unacookie firmada que use una política predefinida (p. 163).

Para obtener más información y ejemplos de cómo aplicar una función hash, firmar y codificar lainstrucción de política, consulte los siguientes temas:

• Utilizar una instancia de Linux Command y OpenSSL para codificar y cifrar con base64 (p. 174)• Ejemplos de código para crear una firma para una URL firmada (p. 175)• Herramientas y ejemplos de código para configurar contenido privado (p. 421)

Versión de API 2016-09-29164

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

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 elprocedimiento Para crear una instrucción de política para una cookie firmada que use una políticapredefinida (p. 163). Utilice la versión de la instrucción de política que no incluye espacios en blanco.

Para la clave privada requerida por la función hash, utilice la clave privada que está asociada alsignatario de confianza activo aplicable.

Note

El método que utilice para resumir y aplicar una función hash la instrucción de políticadepende de su lenguaje de programación y plataforma. Para ver código de muestra, consulteEjemplos de código para crear una firma para una URL firmada (p. 175).

2. Elimine todos los espacios en blanco (incluidos tabulaciones y caracteres de línea nueva) de lacadena 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 lasección 6.8 llamada Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose InternetMail 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 lasiguiente tabla se muestran los caracteres válidos y no válidos.

Sustituya los caracteres no válidos Por estos caracteres 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íticapredefinida (p. 160) y añada el encabezado Set-Cookie en CloudFront-Key-Pair-Id.

Establecer cookies firmadas mediante una política personalizadaTemas

• Crear una instrucción de política para una cookie firmada que use una política personalizada (p. 168)• Ejemplos de instrucciones de políticas para una cookie firmada que use una política

personalizada (p. 170)• Crear una firma para una cookie firmada que use una política personalizada (p. 172)

Para establecer una cookie firmada que use una política personalizada, siga el siguiente procedimiento.

Para establecer cookies firmadas mediante una política personalizada

1. Si utiliza. NET o Java para crear URL firmadas y no ha reformateado la clave privada del par de clavesdel formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo ahora. Paraobtener más información, consulte Reformatear la clave privada de CloudFront (solo para .NET yJava) (p. 132).

2. Programe su aplicación para enviar tres encabezados Set-Cookie a los espectadores aprobados.Necesita encabezados Set-Cookie porque cada encabezado Set-Cookie puede contener solo unpar nombre-valor y una cookie de CloudFront firmada requiere tres pares nombre-valor. Los pares denombre-valor son: CloudFront-Policy, CloudFront-Signature y CloudFront-Key-Pair-

Versión de API 2016-09-29165

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Id. Los valores deben estar presentes en el espectador antes de que un usuario realice la primerasolicitud de un objeto 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 posibilidadde alguien obtenga acceso no autorizado a su contenido. Para obtener más información,consulte Prevenir el uso indebido de cookies firmadas (p. 159).

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: Domain=optional domain name; Path=/optional directory path; Secure; HttpOnly; CloudFront-Policy=base64 encoded version of the policy statement

Set-Cookie: Domain=optional domain name; Path=/optional directory path; Secure; HttpOnly; CloudFront-Signature=hashed and signed version of the policy statement

Set-Cookie: Domain=optional domain name; Path=/optional directory path; Secure; HttpOnly; CloudFront-Key-Pair-Id=active CloudFront key pair Id for the key pair that you are using to generate the signature

(Opcional) Domain

El nombre de dominio para el objeto solicitado. Si no especifica un atributo Domain, el valorpredeterminado será el nombre de dominio de la URL; esto es aplicable solo al nombre dedominio especificado, no a subdominios. Si especifica un atributo Domain, también será aplicablea subdominios. Un punto al inicio del nombre de dominio (por ejemplo, Domain=.example.com)es opcional. Además, si no especifica un atributo Domain, el nombre de dominio de la URL y elvalor del atributo Domain deberán coincidir.

Puede especificar el nombre de dominio que CloudFront asignó a su distribución, por ejemplo,d111111abcdef8.cloudfront.net, pero no puede especificar *.cloudfront.net como nombre dedominio.

Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debeañadir dicho nombre de dominio a su distribución independientemente de que especifique elatributo Domain. Para obtener más información, consulte Nombres de dominio alternativos(CNAME) (p. 46) en el tema Valores que deben especificarse al crear o actualizar una distribución (p. 30).

(Opcional) Path

La ruta del objeto solicitado. Si no especifica un atributo Path, el valor predeterminado será laruta de la URL.

Versión de API 2016-09-29166

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Secure

Requiere que el espectador cifre cookies antes de enviar una solicitud. Recomendamos queenvíe el encabezado Set-Cookie a través de una conexión HTTPS para asegurarse de que losatributos de la cookie estén protegidos contra ataques man-in-the-middle.

HttpOnly

Requiere que el espectador envíe la cookie únicamente en solicitudes de HTTP o HTTPS.CloudFront-Policy

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 Crear una firmapara una cookie firmada que use una política personalizada (p. 172).

La instrucción de política controla el acceso que una cookie firmada concede a un usuario: losobjetos a los que el usuario puede obtener acceso, una fecha y hora de vencimiento, una fechay la hora opcional a partir de la cual la URL pasa a ser válida y una dirección IP o a un rango dedirecciones IP opcionales autorizadas a obtener acceso al objeto.

CloudFront-Signature

Una versión firmada, a la que se le ha aplicado una función hash y codificada en base64 de lainstrucción de política JSON. Para obtener más información, consulte Crear una firma para unacookie firmada que use una política personalizada (p. 172).

CloudFront-Key-Pair-Id

El ID de un par de claves de CloudFront activas, por ejemplo, APKA9ONS7QCOWEXAMPLE. ElID del par de claves de CloudFront le indica a CloudFront qué clave pública utilizar para validar lacookie firmada. CloudFront compara la información de la firma con la información de la instrucciónde política para comprobar que la URL no se ha manipulado.

El ID del par de claves que incluya en las cookies firmadas de CloudFront debe estar asociado auna cuenta de AWS que sea signatario de confianza del comportamiento de la caché aplicable.

Para obtener más información, consulte Especificar las cuentas de AWS que pueden crear URLfirmadas y cookies firmadas (signatarios de confianza) (p. 130).

Si desactiva un par de claves mientras rota pares de claves de CloudFront, debe actualizarsu aplicación para que utilice un nuevo par de claves activas para uno de sus signatarios deconfianza. Para obtener más información acerca de rotación de pares de claves, consulte Rotarpares de claves de CloudFront (p. 135).

Encabezados Set-Cookie de ejemplo para una cookie firmada cuando usa el nombre de dominioasociado a su distribución en las URL de sus objetos:

Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly; CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly; CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly; CloudFront-Key-Pair-Id=APKA9ONS7QCOWEXAMPLE

Encabezados Set-Cookie de ejemplo para una cookie firmada cuando usa el nombre de dominioalternativo example.org en las URL de sus objetos:

Set-Cookie: Domain=example.org; Path=/; Secure; HttpOnly; CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__

Versión de API 2016-09-29167

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Set-Cookie: Domain=example.org; Path=/; Secure; HttpOnly; CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_Set-Cookie: Domain=example.org; Path=/; Secure; HttpOnly; CloudFront-Key-Pair-Id=APKA9ONS7QCOWEXAMPLE

Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe añadir dichonombre de dominio a su distribución independientemente de que especifique el atributo Domain. Paraobtener más información, consulte Nombres de dominio alternativos (CNAME) (p. 46) en el tema Valoresque deben especificarse al crear o actualizar una distribución (p. 30).

Crear una instrucción de política para una cookie firmada que use una políticapersonalizada

Para crear una instrucción de política para una política personalizada, siga el siguiente procedimiento.Para consultar diversas instrucciones de política que controlen el acceso a objetos de distintasmaneras, visite Ejemplos de instrucciones de políticas para una cookie firmada que use una políticapersonalizada (p. 170).

Para crear una instrucción de política para una cookie firmada que use una política personalizada

1. Cree la instrucción de política en el siguiente formato JSON.

{ "Statement": [ { "Resource":"URL of the object", "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"} } } ]}

Tenga en cuenta lo siguiente:

• Puede incluir una instrucción.• Utilice la codificación de caracteres UTF-8.• Incluya toda la puntuación y los nombres de parámetros exactamente como se especifica. No se

aceptan abreviaturas de nombres de parámetros.• El orden de los parámetros de la sección Condition no importa.• Para obtener información acerca de valores para Resource, DateLessThan, DateGreaterThan

y IpAddress, consulte Valores a especificar en la instrucción de una política personalizada paracookies firmadas (p. 169).

2. Elimine todos los espacios en blanco (incluidos tabulaciones y caracteres de línea nueva) de lainstrucción de política. Es posible que tenga que incluir caracteres de escape en la cadena del códigode la aplicación.

3. Codifique la instrucción de política con codificación base64 de MIME. Para obtener más información,consulte la sección 6.8 llamada Base64 Content-Transfer-Encoding de RFC 2045, MIME (MultipurposeInternet 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 lasiguiente tabla se muestran los caracteres válidos y no válidos.

Versión de API 2016-09-29168

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Sustituya los caracteres no válidos Por estos caracteres válidos

+ - (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 Crear una firma para una cookie firmada que use una política personalizada (p. 172).

Valores a especificar en la instrucción 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.

Recurso

La URL base, incluidas las cadenas de consulta, de haberlas:

http://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

Important

Si omite el parámetro Resource, los usuarios podrán acceder a todos los objetos asociadosa cualquier distribución que esté asociada al par de claves utilizado para crear la URLfirmada.

Puede especificar solo un valor en Resource.

Tenga en cuenta lo siguiente:• Protocol: el valor debe comenzar por http:// o https://.• Query string parameters: si no tiene parámetros de cadena de consulta, omita este signo de

interrogación.• Wildcards: puede utilizar el carácter comodín que coincide con cero o con más caracteres (*), o el

carácter comodín que coincide exactamente con un carácter (?). en cualquier lugar de la cadena.Por ejemplo, el valor:

http://d111111abcdef8.cloudfront.net/*game_download.zip*

incluiría, por ejemplo, los siguientes objetos:• http://d111111abcdef8.cloudfront.net/game_download.zip

• http://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes

• http://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp

• Alternate domain names: si especifica un nombre de dominio alternativo (CNAME) en la URL, debeespecificarlo al hacer referencia al objeto en su página web o aplicación. No especifique la URL deAmazon S3 del objeto.

DateLessThan

La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universalcoordinada (UTC). No incluya el valor entre comillas.

Versión de API 2016-09-29169

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Por ejemplo, 16 de marzo de 2015 a las 10:00 h UTC pasa a ser 1426500000 en formato de tiempoUnix.

Para obtener más información, consulte ¿Cuándo comprueba CloudFront la fecha y hora devencimiento de una cookie firmada? (p. 160).

DateGreaterThan (opcional)

Una fecha y hora de inicio opcionales de la URL en formato de tiempo Unix (en segundos) y horauniversal coordinada (UTC). Los usuarios no tienen permiso para obtener acceso al objeto antes de lafecha 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 a cualquier dirección IP obtener acceso al objeto, 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, diríjase a RFC 4632, Classless Inter-domainRouting (CIDR): The Internet Address Assignment and Aggregation Plan, http://tools.ietf.org/html/rfc4632.

Important

Direcciones IP en formato IPv6, como 2001:0db8:85a3:0000:0000:8a2e:0370:7334, no soncompatibles.

Si está utilizando una política personalizada que incluya IpAddress, no habilite IPv6 para ladistribución. Si desea restringir el acceso a algún contenido por dirección IP y admite solicitudesIPv6 de otro contenido, puede crear dos distribuciones. Para obtener más información, consulteHabilitar IPv6 (p. 49) en el tema Valores que deben especificarse al crear o actualizar unadistribución (p. 30).

Ejemplos de instrucciones de políticas para una cookie firmada que use unapolítica personalizada

Los siguientes ejemplos de instrucciones de políticas muestran cómo controlar el acceso a un objetoespecífico, a todos los objetos de un directorio o a todos los objetos 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 dedirecciones IP, y cómo impedir que los usuarios utilicen la cookie firmada después de una fecha y horaespecíficas.

Si copia y pega cualquiera de estos ejemplos, elimine los espacios en blanco (incluidos tabulaciones ycaracteres de línea nueva), sustituya los valores aplicables por sus propios valores e incluya un carácterdespués de la llave de cierre ( } ).

Para obtener más información, consulte Valores a especificar en la instrucción de una políticapersonalizada para cookies firmadas (p. 169).

Temas• Ejemplo de instrucción de política: cómo obtener acceso a un objeto desde un rango de direcciones

IP (p. 171)• Ejemplo de instrucción de política: cómo obtener acceso a todos los objetos de un directorio desde un

rango de direcciones IP (p. 171)

Versión de API 2016-09-29170

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

• Ejemplo de instrucción de política: cómo obtener acceso todos los objetos asociados a un ID de par declaves desde una dirección IP (p. 171)

Ejemplo de instrucción de política: cómo obtener acceso a un objeto desde un rango dedirecciones IP

El siguiente ejemplo de política personalizada en una cookie firmada especifica que un usuario puedeacceder al objeto http://d111111abcdef8.cloudfront.net/game_download.zip desdedirecciones IP dentro del 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/game_download.zip", "Condition":{ "IpAddress":{"AWS:SourceIp":"192.0.2.0/24"}, "DateLessThan":{"AWS:EpochTime":1357034400} } } ]}

Ejemplo de instrucción de política: cómo obtener acceso a todos los objetos de un directorio desdeun rango de direcciones IP

La siguiente política personalizada de ejemplo le permite crear cookies firmadas para cualquier objeto enel directorio training, tal como lo indica el carácter comodín * en el parámetro Resource. Los usuariospueden obtener acceso al objeto desde una dirección IP dentro del rango 192.0.2.0/24 hasta el 1 deenero 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 incluye una URL base que identifica un objetoespecífico, por ejemplo:

http://d111111abcdef8.cloudfront.net/training/orientation.pdf

Ejemplo de instrucción de política: cómo obtener acceso todos los objetos asociados a un ID depar de claves desde una dirección IP

La siguiente política personalizada de muestra le permite establecer cookies firmadas para cualquier objetoasociado a cualquier distribución, tal como lo indica el carácter comodín * en el parámetro Resource. Elusuario debe utilizar la dirección IP 192.0.2.10/32. (El valor 192.0.2.10/32 en notación CIDR serefiere a la dirección IP individual 192.0.2.10). Los objetos solo están disponibles desde el 1 de enero de2013 a las 10:00 h UTC hasta el 2 de enero de 2013 a las 10:00 h UTC:

{ "Statement": [

Versión de API 2016-09-29171

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

{ "Resource":"http://*", "Condition":{ "IpAddress":{"AWS:SourceIp":"192.0.2.10/32"}, "DateGreaterThan":{"AWS:EpochTime":1357034400}, "DateLessThan":{"AWS:EpochTime":1357120800} } } ] }

Cada cookie firmada en la que utilice esta política incluye una URL base que identifica un objeto concretoen 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 debe asociarse a un signatario de confianzaen la distribución (d111111abcdef8.cloudfront.net) que deberá especificar en la URL base.

Crear una firma para una cookie firmada que use una política personalizadaLa firma de una cookie firmada que utiliza una política personalizada es una versión de la instrucción depolí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 lainstrucción de política, consulte:

• Utilizar una instancia de Linux Command y OpenSSL para codificar y cifrar con base64 (p. 174)• Ejemplos de código para crear una firma para una URL firmada (p. 175)• Herramientas y ejemplos de código para configurar contenido privado (p. 421)

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 enel procedimiento Para crear una instrucción de política para una URL firmada que use una políticapersonalizada (p. 151). Utilice la versión de la instrucción de política que no incluye espacios enblanco, pero que aún no ha sido codificada con base64.

Para la clave privada requerida por la función hash, utilice la clave privada que está asociada alsignatario de confianza activo aplicable.

Note

El método que utilice para resumir y aplicar una función hash la instrucción de políticadepende de su lenguaje de programación y plataforma. Para ver código de muestra, consulteEjemplos de código para crear una firma para una URL firmada (p. 175).

2. Elimine todos los espacios en blanco (incluidos tabulaciones y caracteres de línea nueva) de lacadena 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 lasección 6.8 llamada Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose InternetMail 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 lasiguiente tabla se muestran los caracteres válidos y no válidos.

Sustituya los caracteres no válidos Por estos caracteres válidos

+ - (guion)

Versión de API 2016-09-29172

Amazon CloudFront Guía para desarrolladoresUsar cookies firmadas

Sustituya los caracteres no válidos Por estos caracteres válidos

= _ (guion bajo)

/ ~ (tilde)

5. Incluya el valor resultante en el encabezado Set-Cookie, en el par nombre-valorCloudFront-Signature=, y vuelva a Para establecer cookies firmadas mediante una políticapersonalizada (p. 165) para añadir el encabezado Set-Cookie en CloudFront-Key-Pair-Id.

Versión de API 2016-09-29173

Amazon CloudFront Guía para desarrolladoresUtilizar una instancia de Linux Command yOpenSSL para codificar y cifrar con base64

Utilizar una instancia de Linux Command y OpenSSLpara codificar y cifrar con base64Utilice los siguientes comandos de línea de comandos de Linux y OpenSSL para aplicar una función hashy firmar la instrucción de política, codificar la firma con base64 y sustituir caracteres que no sean válidos enlos parámetros de cadenas de consulta de URL por caracteres válidos.

Para obtener más información acerca de OpenSSL, visite http://www.openssl.org.

cat policy | tr -d "\n" | openssl sha1 -sign private-key.pem |

openssl base64 | tr -- '+=/' '-_~'

donde:

cat lee el archivo policy.

tr -d "\n" elimina un carácter de nueva línea añadido por cat.

OpenSSL resume el archivo mediante SHA-1 y lo firma con RSA y con el archivo de clave privadaprivate-key.pem.

OpenSSL codifica con base64 la instrucción de política a la que se le ha aplicado una función hash yque se ha firmado.

tr sustituye caracteres no válidos en parámetros de cadenas de consulta de URL por caracteresválidos.

Para consultar ejemplos de código que demuestren la creación de una firma en varios lenguajes deprogramación, consulte Ejemplos de código para crear una firma para una URL firmada (p. 175).

Versión de API 2016-09-29174

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

Ejemplos de código para crear una firma para unaURL firmadaEn esta sección se incluyen ejemplos de aplicación descargables en los que se muestra cómo crear firmaspara URL firmadas. Los ejemplos están disponibles en Perl, PHP, C # y Java. Puede utilizar cualquiera delos ejemplos para crear URL firmadas. El script Perl se ejecuta en plataformas Linux/Mac. El ejemplo dePHP funcionará en cualquier servidor que ejecute PHP. El ejemplo de C # utiliza .NET Framework.

Para ver un ejemplo de cómo utilizar cookies con Ruby on Rails, consulte Herramientas y ejemplos decódigo para configurar contenido privado (p. 421) en el tema Recursos de Amazon CloudFront (p. 419).

Podrá encontrar código de ejemplo de URL firmadas y de cookies firmadas en diversos lenguajes deprogramación. Busque en Internet sample app lenguaje cloudfront signed URLs o sample applenguaje cloudfront signed cookies.

Temas• Crear una firma de URL con Perl (p. 175)• Crear una firma de URL con PHP (p. 183)• Crear una firma de URL mediante C # y .NET Framework (p. 185)• Crear una firma de URL con Java (p. 191)

Crear una firma de URL con PerlEsta sección incluye un script Perl para plataformas Linux/Mac que puede utilizar para crear la firmapara contenido privado. Para crear la firma, ejecute el script con argumentos de línea de comandos queespecifiquen la URL de CloudFront, la ruta a la clave privada del signatario, el ID de la clave y una fechade vencimiento de la URL. La herramienta también puede decodificar URL firmadas.

Note

Crear una firma de URL es solo una parte del proceso de entrega de contenido privado medianteuna URL firmada. Para obtener más información acerca del proceso completo, consulte Usar URLfirmadas (p. 138).

Temas• Ejemplo del uso de un script Perl para crear una URL firmada (p. 175)• Código fuente del script Perl para crear una URL firmada (p. 177)

Ejemplo del uso de un script Perl para crear una URL firmada

El siguiente ejemplo muestra cómo puede utilizar el script Perl que se proporciona en este tema paracrear una firma de distribución RTMP. Para empezar, guarde el script como un archivo llamado cfsign.pl.Después, ejecute el script usando los siguientes argumentos de línea de comando:

$ cfsign.pl --action encode --stream example/video.mp4 --private-key /path/to/my-private-key.pem --key-pair-id PK12345EXAMPLE --expires 1265838202

Este script genera la instrucción de política a partir de los argumentos de la línea de comandos. La firmaque genera es un hash SHA1 de la instrucción de política.

El siguiente es un ejemplo de nombre de transmisión codificado en base64:

Versión de API 2016-09-29175

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

mp4:example/video.mp4%3FPolicy%3DewogICJTdGF0ZW1lbnQiOlt7CiAgICAgICJSZXNvdXJjZSI6ImRyciIsCiAgICAgICJDb25kaXRpb24iOnsKICAgICAgICAiSXBBZGRyZXNzIjp7IkFXUzpTb3VyY2VJcCI6IjAuMC4wLjAvMCJ9LAogICAgICAgICJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MjE0NTkxNjgwMH0KICAgICAgfQogICAgEXAMPLE_%26Signature%3DewtHqEXK~68tsZt-eOFnZKGwTf2aJlbKhXkK5SSiVqcG9pieCRV3xTEPtc29OzeXlsDvRycOM2WK0cXzcyYZhpl9tv2796ihHiCTAwIHQ8yP17Af4nWtOLIZHoH6wkR3tU1cQHs8R1d-g-SlZGjNBXr~J2MbaJzm8i6EXAMPLE_%26Key-Pair-Id%3DPK12345EXAMPLE

Esta firma autentica la solicitud para transmitir el contenido privado example/video.mp4.

Si utiliza Adobe Flash Player y el nombre de la transmisión se transfiere desde una página web medianteJavaScript, debe codificar la firma con base64 y sustituir los caracteres que no sean válidos en unparámetro de solicitud de URL (+, =, /) por caracteres válidos (-, _ y ~, respectivamente).

Si el nombre de la transmisión no se transfiere desde una página web, no es necesario codificar la firmacon base64. Por ejemplo, no en codifique la firma con base64 si escribe su propio reproductor y losnombres de la transmisión se extraen del archivo Adobe Flash .swf.

En el siguiente ejemplo se utiliza jwplayer con CloudFront.

<script type='text/javascript'> var so1 = new SWFObject ('http://d84l721fxaaqy9.cloudfront.net/player/player.swf', 'mpl', '640', '360', '9'); so1.addParam('allowfullscreen','true'); so1.addParam('allowscriptaccess','always'); so1.addParam('wmode','opaque'); so1.addVariable('streamer','rtmp://s33r3xe4ayhhis.cloudfront.net/cfx/st'); so1.addVariable("file","mp4:example/video.mp4%3FPolicy%3DewogICJTdGF0ZW1lbnQi Olt7CiAgICAgICJSZXNvdXJjZSI6ImRyciIsCiAgICAgICJDb25kaXRpb24iOnsKICAgICAgICA iSXBBZGRyZXNzIjp7IkFXUzpTb3VyY2VJcCI6IjAuMC4wLjAvMCJ9LAogICAgICAgICJEYXRlTG Vzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MjE0NTkxNjgwMH0KICAgICAgfQogICAgEXAMPLE_% 26Signature%3DewtHqEXK~68tsZt-eOFnZKGwTf2aJlbKhXkK5SSiVqcG9pieCRV3xTEPtc29O zeXlsDvRycOM2WK0cXzcyYZhpl9tv2796ihHiCTAwIHQ8yP17Af4nWtOLIZHoH6wkR3tU1cQHs8 R1d-g-SlZGjNBXr~J2MbaJzm8i6EXAMPLE_%26Key-Pair-Id%3DPK12345EXAMPLE so1.write('flv');</script>

Al recuperar una transmisión para reproducir desde un archivo Adobe Flash.swf, no codifique en la URL elnombre de la transmisión. Por ejemplo:

mp4:example/video.mp4?Policy=ewogICJTdGF0ZW1lbnQiOlt7CiAgICAgICJSZXNvdXJjZSI6ImRyciIsCiAgICAgICJDb25kaXRpb24iOnsKICAgICAgICAiSXBBZGRyZXNzIjp7IkFXUzpTb3VyY2VJcCI6IjAuMC4wLjAvMCJ9LAogICAgICAgICJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MjE0NTkxNjgwMH0KICAgICAgfQogICAgEXAMPLE_&Signature=ewtHqEXK~68tsZt-eOFnZKGwTf2aJlbKhXkK5SSiVqcG9pieCRV3xTEPtc29OzeXlsDvRycOM2WK0cXzcyYZhpl9tv2796ihHiCTAwIHQ8yP17Af4nWtOLIZHoH6wkR3tU1cQHs8R1d-g-SlZGjNBXr~J2MbaJzm8i6EXAMPLE_&Key-Pair-Id=PK12345EXAMPLE

Para obtener más información acerca de los conmutadores de las líneas de comandos y las característicasde esta herramienta, consulte los comentarios del código fuente Perl, que se incluyen en la siguientesección.

Véase también

• Crear una firma de URL con PHP (p. 183)• Crear una firma de URL mediante C # y .NET Framework (p. 185)• Crear una firma de URL con Java (p. 191)• Herramientas y ejemplos de código para configurar contenido privado (p. 421)

Versión de API 2016-09-29176

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

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. Loscomentarios del código incluyen información acerca de los conmutadores de las líneas de comandos y lascaracterí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

cfsign.pl - A tool to generate and verify AWS CloudFront signed URLs

=head1 SYNOPSIS

This script uses an existing RSA key pair to sign and verify AWS CloudFront signed URLs

View the script source for details as to which CPAN packages are required beforehand.

For help, try:

cfsign.pl --help

URL signing examples:

cfsign.pl --action encode --url http://images.my-website.com/gallery1.zip --policy sample_policy.json --private-key privkey.pem --key-pair-id mykey

cfsign.pl --action encode --url http://images.my-website.com/gallery1.zip --expires 1257439868 --private-key privkey.pem --key-pair-id mykey

Stream signing example:

cfsign.pl --action encode --stream videos/myvideo.mp4 --expires 1257439868 --private-key privkey.pem --key-pair-id mykey

URL decode example:

cfsign.pl --action decode --url "http//mydist.cloudfront.net/?Signature=AGO-PgxkYo99MkJFHvjfGXjG1QDEXeaDb4Qtzmy85wqyJjK7eKojQWa4BCRcow__&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovLypicmFkbS5qcGciLCJDb25kaXRpb24iOnsiSXBBZGRyZXNzIjp7IkFXUzpTb3VyY2VJcCI6IjEwLjUyLjE3LjkvMCJ9LCJEYXRlR3JlYXRlclRoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTI1MjUyMDgzMH19fV19Cg__&Key-Pair-Id=mykey"

To generate an RSA key pair, you can use openssl and the following commands:

# Generate a 1024bit key pairopenssl genrsa -out private-key.pem 1024openssl rsa -in private-key.pem -pubout -out public-key.pem

=head1 OPTIONS

=over 8

Versión de API 2016-09-29177

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

=item B<--help>

Print a help message and exits.

=item B<--action> [action]

The action to execute. action can be one of:

encode - Generate a signed URL (using a canned policy or a user policy) decode - Decode a signed URL

=item B<--url>

The URL to en/decode

=item B<--stream>

The stream to en/decode

=item B<--private-key>

The path to your private key.

=item B<--key-pair-id>

The AWS Portal assigned key pair identifier.

=item B<--policy>

The CloudFront policy document.

=item B<--expires>

The Unix epoch time when the URL is to expire. If both this option andthe --policy option are specified, --policy will be used. Otherwise, this option alone will use a canned policy.

=back

=cut

use strict;use warnings;

# you might need to use CPAN to get these modules.# run perl -MCPAN -e "install <module>" to get them.# The openssl command line will also need to be in your $PATH.use File::Temp qw/tempfile/;use Getopt::Long;use IPC::Open2;use MIME::Base64 qw(encode_base64 decode_base64);use Pod::Usage;use URI;

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 = "";

Versión de API 2016-09-29178

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

my $expires_epoch = 0;my $action = "";my $help = 0;my $key_pair_id = "";my $url = "";my $stream = "";my $private_key_filename = "";

my $result = GetOptions("action=s" => \$action, "policy=s" => \$policy_filename, "expires=i" => \$expires_epoch, "private-key=s" => \$private_key_filename, "key-pair-id=s" => \$key_pair_id, "verbose" => \$verbose, "help" => \$help, "url=s" => \$url, "stream=s" => \$stream, );

if ($help or !$result) { pod2usage(1); exit;}

if ($url eq "" and $stream eq "") { print STDERR "Must include a stream or a URL to encode or decode with the --stream or --url option\n"; exit;}

if ($url ne "" and $stream ne "") { print STDERR "Only one of --url and --stream may be specified\n"; exit;}

if ($url ne "" and !is_url_valid($url)) { exit;}

if ($stream ne "") { exit unless is_stream_valid($stream);

# The signing mechanism is identical, so from here on just pretend we're # dealing with a URL $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 {

Versión de API 2016-09-29179

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

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 an AWS portal 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);

my $generated_url = create_url($url, $encoded_policy, $encoded_signature, $key_pair_id, $expires_epoch);

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; }

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();}

# Decode a private content URL into its component partssub decode_url { my $url = shift;

if ($url =~ /(.*)\?(.*)/) { my $base_url = $1; my $params = $2;

my @unparsed_params = split(/&/, $params); my %params = (); foreach my $param (@unparsed_params) { my ($key, $val) = split(/=/, $param); $params{$key} = $val;

Versión de API 2016-09-29180

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

}

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 { print STDERR "Missing $KEY_PAIR_ID_PARAM parameter\n"; return 0; }

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; }}

# Print a decoded URL outsub print_decoded_url { my $decoded = shift;

print "Base URL: \n" . $decoded->{"base_url"} . "\n";

Versión de API 2016-09-29181

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

print "Policy: \n" . $decoded->{"policy"} . "\n"; print "Key: \n" . $decoded->{"key"} . "\n";}

# Encode a string with base 64 encoding and replace some invalid URL characterssub url_safe_base64_encode { my ($value) = @_;

my $result = encode_base64($value); $result =~ tr|+=/|-_~|;

return $result;}

# Decode a string with base 64 encoding. URL-decode the string first# followed by reversing any special character ("+=/") translation.sub url_safe_base64_decode { my ($value) = @_;

$value =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; $value =~ tr|-_~|+=/|;

my $result = decode_base64($value);

return $result;}

# Create a private content URLsub create_url { my ($path, $policy, $signature, $key_pair_id, $expires) = @_; 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;}

# Sign a document with given private key file.# The first argument is the document to sign# The second argument is the name of the private key filesub rsa_sha1_sign { my ($to_sign, $pvkFile) = @_;

return write_to_program("openssl sha1 -sign $pvkFile", $to_sign);}

# Helper function to write data to a programsub write_to_program { my ($prog, $data) = @_;

my $pid = open2(*README, *WRITEME, $prog); print WRITEME $data; close WRITEME;

# slurp entire contents of output into scalar my $output; local $/ = undef; $output = <README>;

Versión de API 2016-09-29182

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

close README;

waitpid($pid, 0);

return $output;}

# Read a file into a string and return the stringsub read_file { my ($file) = @_;

open(INFILE, "<$file") or die("Failed to open $file: $!"); my $str = join('', <INFILE>); close INFILE;

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) = @_;

if ($stream =~ /^rtmp:\/\// or $stream =~ /^\/?cfx\/st/) { print STDERR "Streaming distributions require that only the stream name is signed.\n"; print STDERR "The stream name is everything after, but not including, cfx/st/\n"; return 0; } else { return 1; }}

# 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 { my ($url) = @_;

$url =~ s/\?/%3F/g; $url =~ s/=/%3D/g; $url =~ s/&/%26/g;

return $url;}

1;

Crear una firma de URL con PHPEste código de demostración de PHP se puede utilizar en cualquier servidor web que ejecute PHP paracrear instrucciones de políticas y firmas para distribuciones RTMP de CloudFront privadas. El ejemplo creauna página web funcional con enlaces de URL firmadas que reproducen un video transmitido a través destreaming de CloudFront. Para obtener el ejemplo, descargue Signature Code for Video Streaming in PHP.

Versión de API 2016-09-29183

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

También puede crear URL firmadas mediante la clase UrlSigner en el AWS SDK para PHP. Paraobtener más información, consulte Class UrlSigner en la AWS SDK para PHP API Reference.

Note

Crear una firma de URL es solo una parte del proceso de entrega de contenido privado medianteuna URL firmada. Para obtener más información acerca de todo el proceso, consulte Usar URLfirmadas (p. 138).

En el siguiente segmento de código, la función rsa_sha1_sign resume y firma la instrucción de política.Los argumentos necesarios son una instrucción de política, un parámetro de salida para contener lafirma y la clave privada de su cuenta de AWS o de la cuenta de AWS de confianza que especifique. Acontinuación, la función url_safe_base64_encode crea una versión de la firma de URL segura.

Example Aplicar RSA SHA1 en PHP

function rsa_sha1_sign($policy, $private_key_filename) { $signature = "";

// load the private key $fp = fopen($private_key_filename, "r"); $priv_key = fread($fp, 8192); fclose($fp); $pkeyid = openssl_get_privatekey($priv_key);

// compute signature openssl_sign($policy, $signature, $pkeyid);

// free the key from memory openssl_free_key($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); }

El siguiente código crea una instrucción de política predefinida necesaria para crear la firma. Para obtenermás información acerca de políticas predefinidas, consulte Creación de una URL firmada mediante unapolítica predefinida (p. 141).

Example Función de firma predefinida en PHP

function get_canned_policy_stream_name($video_path, $private_key_filename, $key_pair_id, $expires) { // this policy is well known by CloudFront, but you still need to sign it, // since it contains your parameters $canned_policy = '{"Statement":[{"Resource":"' . $video_path . '","Condition":{"DateLessThan":{"AWS:EpochTime":'. $expires . '}}}]}'; // sign the canned policy $signature = rsa_sha1_sign($canned_policy, $private_key_filename); // make the signature safe to be included in a url $encoded_signature = url_safe_base64_encode($signature);

Versión de API 2016-09-29184

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

// combine the above into a stream name $stream_name = create_stream_name($video_path, null, $encoded_signature, $key_pair_id, $expires); // url-encode the query string characters to work around a flash player bug return encode_query_params($stream_name); }

El siguiente código crea una instrucción de política personalizada necesaria para crear la firma. Paraobtener más información acerca de políticas personalizadas, consulte Crear una URL firmada medianteuna política personalizada (p. 148).

Note

La variable $expires es una marca temporal fecha/hora que debe ser un número entero, no unacadena.

Example Función de firma personalizada en PHP

function get_custom_policy_stream_name($video_path, $private_key_filename, $key_pair_id, $policy) { // sign the policy $signature = rsa_sha1_sign($policy, $private_key_filename); // make the signature safe to be included in a url $encoded_signature = url_safe_base64_encode($signature);

// combine the above into a stream name $stream_name = create_stream_name($video_path, $encoded_policy, $encoded_signature, $key_pair_id, null); // url-encode the query string characters to work around a flash player bug return encode_query_params($stream_name); }

Para obtener más información acerca de la implementación de OpenSSL de SHA-1, consulte The OpenSource Toolkit for SSL/TLS.

Véase también

• Crear una firma de URL con Perl (p. 175)• Crear una firma de URL mediante C # y .NET Framework (p. 185)• Crear una firma de URL con Java (p. 191)• Herramientas y ejemplos de código para configurar contenido privado (p. 421)

Crear una firma de URL mediante C # y .NET FrameworkLos ejemplos de C# en esta sección implementan una aplicación de ejemplo que muestra cómo crearlas firmas para distribuciones privadas de CloudFront mediante instrucciones de políticas predefinidas ypersonalizadas. Los ejemplos incluyen funciones de utilidad basadas en AWS SDK para .NET que puedenresultar útiles en aplicaciones .NET.

También puede crear URL firmadas y cookies firmadas a través de AWS SDK para .NET. En la AWS SDKpara .NET API Reference, consulte los siguientes temas:

• Signed URLs: Amazon.CloudFront > AmazonCloudFrontUrlSigner• Signed cookies: Amazon.CloudFront > AmazonCloudFrontCookieSigner

Versión de API 2016-09-29185

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

Note

Crear una firma de URL es solo una parte del proceso de entrega de contenido privado medianteuna URL firmada. Para obtener más información acerca de todo el proceso, consulte Usar URLfirmadas (p. 138).

Para descargar el código, diríjase a Signature Code in C#.

Para utilizar las claves RSA proporcionadas por AWS Account/Security en .NET, debe convertir losarchivos.pem suministrados por AWS al formato XML que utiliza .NET Framework.

Después de la conversión, el archivo de clave privada RSA estará en el siguiente formato:

Example Clave privada RSA en formato XML de .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 acontinuación:

• Crea una instrucción de política.• Resume la instrucción de política mediante SHA1 y firma el resultado con RSA y con la clave privada de

su cuenta de AWS o de la cuenta de AWS de confianza que especifique.• 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 desolicitud de URL.

• Encadena los valores aplicables.

Para ver la implementación completa, consulte el ejemplo disponible en Signature Code in C#.

Versión de API 2016-09-29186

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

Example Método de firma de políticas predefinidas en C #

public static string ToUrlSafeBase64String(byte[] bytes){ return System.Convert.ToBase64String(bytes) .Replace('+', '-') .Replace('=', '_') .Replace('/', '~');}

public static string CreateCannedPrivateURL(string urlString, string durationUnits, string durationNumber, string pathToPolicyStmnt, string pathToPrivateKey, string privateKeyId){ // args[] 0-thisMethod, 1-resourceUrl, 2-seconds-minutes-hours-days // to expiration, 3-numberOfPreviousUnits, 4-pathToPolicyStmnt, // 5-pathToPrivateKey, 6-PrivateKeyId

TimeSpan timeSpanInterval = GetDuration(durationUnits, durationNumber);

// Create the policy statement. string strPolicy = CreatePolicyStatement(pathToPolicyStmnt, urlString, DateTime.Now, DateTime.Now.Add(timeSpanInterval), "0.0.0.0/0"); if ("Error!" == strPolicy) return "Invalid time frame." + "Start time cannot be greater than end time.";

// Copy the expiration time defined by policy statement. string strExpiration = CopyExpirationTimeFromPolicy(strPolicy);

// Read the policy into a byte buffer. byte[] bufferPolicy = Encoding.ASCII.GetBytes(strPolicy);

// Initialize the SHA1CryptoServiceProvider object and hash the policy data. using (SHA1CryptoServiceProvider cryptoSHA1 = new SHA1CryptoServiceProvider()) { bufferPolicy = cryptoSHA1.ComputeHash(bufferPolicy);

// Initialize the RSACryptoServiceProvider object. RSACryptoServiceProvider providerRSA = new RSACryptoServiceProvider(); XmlDocument xmlPrivateKey = new XmlDocument();

// Load PrivateKey.xml, which you created by converting your // .pem file to the XML format that the .NET framework uses. // Several tools are available. xmlPrivateKey.Load(pathToPrivateKey);

// Format the RSACryptoServiceProvider providerRSA and // create the signature. providerRSA.FromXmlString(xmlPrivateKey.InnerXml); RSAPKCS1SignatureFormatter rsaFormatter = new RSAPKCS1SignatureFormatter(providerRSA); rsaFormatter.SetHashAlgorithm("SHA1"); byte[] signedPolicyHash = rsaFormatter.CreateSignature(bufferPolicy);

// Convert the signed policy to URL-safe base64 encoding and // replace unsafe characters + = / with the safe characters - _ ~ string strSignedPolicy = ToUrlSafeBase64String(signedPolicyHash);

// Concatenate the URL, the timestamp, the signature, // and the key pair ID to form the signed URL.

Versión de API 2016-09-29187

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

return urlString + "?Expires=" + strExpiration + "&Signature=" + strSignedPolicy + "&Key-Pair-Id=" + privateKeyId; }}

El siguiente código C # crea una URL firmada que utiliza una política personalizada siguiendo los pasos acontinuación:

1. Crea una instrucción de política.2. Codifica con base64 la instrucción de política y sustituye caracteres especiales para que la cadena se

pueda usar tranquilamente como parámetro de solicitud de URL.3. Resume la instrucción de política mediante SHA1 y cifra el resultado con RSA y con la clave privada de

su cuenta de AWS o de la cuenta de AWS de confianza que especifique.4. Codifica con base64 la instrucción de política a la que se le ha aplicado una función hash y sustituye

caracteres especiales para que la cadena se pueda usar tranquilamente como parámetro de solicitud deURL.

5. Encadena los valores aplicables.

Para ver la implementación completa, consulte el ejemplo disponible en Signature Code in C#.

Example Método de firma de políticas personalizadas en C #

public static string ToUrlSafeBase64String(byte[] bytes){ return System.Convert.ToBase64String(bytes) .Replace('+', '-') .Replace('=', '_') .Replace('/', '~');}

public static string CreateCustomPrivateURL(string urlString, string durationUnits, string durationNumber, string startIntervalFromNow, string ipaddress, string pathToPolicyStmnt, string pathToPrivateKey, string PrivateKeyId){ // args[] 0-thisMethod, 1-resourceUrl, 2-seconds-minutes-hours-days // to expiration, 3-numberOfPreviousUnits, 4-starttimeFromNow, // 5-ip_address, 6-pathToPolicyStmt, 7-pathToPrivateKey, 8-privateKeyId

TimeSpan timeSpanInterval = GetDuration(durationUnits, durationNumber); TimeSpan timeSpanToStart = GetDurationByUnits(durationUnits, startIntervalFromNow); if (null == timeSpanToStart) return "Invalid duration units." + "Valid options: seconds, minutes, hours, or days"; string strPolicy = CreatePolicyStatement( pathToPolicyStmnt, urlString, DateTime.Now.Add(timeSpanToStart), DateTime.Now.Add(timeSpanInterval), ipaddress);

// Read the policy into a byte buffer. byte[] bufferPolicy = Encoding.ASCII.GetBytes(strPolicy);

// Convert the policy statement to URL-safe base64 encoding and // replace unsafe characters + = / with the safe characters - _ ~

Versión de API 2016-09-29188

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

string urlSafePolicy = ToUrlSafeBase64String(bufferPolicy);

// Initialize the SHA1CryptoServiceProvider object and hash the policy data. byte[] bufferPolicyHash; using (SHA1CryptoServiceProvider cryptoSHA1 = new SHA1CryptoServiceProvider()) { bufferPolicyHash = cryptoSHA1.ComputeHash(bufferPolicy);

// Initialize the RSACryptoServiceProvider object. RSACryptoServiceProvider providerRSA = new RSACryptoServiceProvider(); XmlDocument xmlPrivateKey = new XmlDocument();

// Load PrivateKey.xml, which you created by converting your // .pem file to the XML format that the .NET framework uses. // Several tools are available. xmlPrivateKey.Load("PrivateKey.xml");

// Format the RSACryptoServiceProvider providerRSA // and create the signature. providerRSA.FromXmlString(xmlPrivateKey.InnerXml); RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(providerRSA); RSAFormatter.SetHashAlgorithm("SHA1"); byte[] signedHash = RSAFormatter.CreateSignature(bufferPolicyHash);

// Convert the signed policy to URL-safe base64 encoding and // replace unsafe characters + = / with the safe characters - _ ~ string strSignedPolicy = ToUrlSafeBase64String(signedHash);

return urlString + "?Policy=" + urlSafePolicy + "&Signature=" + strSignedPolicy + "&Key-Pair-Id=" + PrivateKeyId; }}

Example Métodos de utilidades para generar firmas

Los siguientes métodos obtienen la instrucción de política de un archivo y analizan intervalos de tiempopara generar firmas.

public static string CreatePolicyStatement(string policyStmnt, string resourceUrl, DateTime startTime, DateTime endTime, string ipAddress) { // Create the policy statement. FileStream streamPolicy = new FileStream(policyStmnt, FileMode.Open, FileAccess.Read); using (StreamReader reader = new StreamReader(streamPolicy)) { string strPolicy = reader.ReadToEnd();

TimeSpan startTimeSpanFromNow = (startTime - DateTime.Now); TimeSpan endTimeSpanFromNow = (endTime - DateTime.Now); TimeSpan intervalStart = (DateTime.UtcNow.Add(startTimeSpanFromNow)) - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

Versión de API 2016-09-29189

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

TimeSpan intervalEnd = (DateTime.UtcNow.Add(endTimeSpanFromNow)) - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

int startTimestamp = (int)intervalStart.TotalSeconds; // START_TIME int endTimestamp = (int)intervalEnd.TotalSeconds; // END_TIME

if (startTimestamp > endTimestamp) return "Error!";

// Replace variables in the policy statement. strPolicy = strPolicy.Replace("RESOURCE", resourceUrl); strPolicy = strPolicy.Replace("START_TIME", startTimestamp.ToString()); strPolicy = strPolicy.Replace("END_TIME", endTimestamp.ToString()); strPolicy = strPolicy.Replace("IP_ADDRESS", ipAddress); strPolicy = strPolicy.Replace("EXPIRES", endTimestamp.ToString()); return strPolicy; } }

public static TimeSpan GetDuration(string units, string numUnits){ TimeSpan timeSpanInterval = new TimeSpan(); switch (units) { case "seconds": timeSpanInterval = new TimeSpan(0, 0, 0, int.Parse(numUnits)); break; case "minutes": timeSpanInterval = new TimeSpan(0, 0, int.Parse(numUnits), 0); break; case "hours": timeSpanInterval = new TimeSpan(0, int.Parse(numUnits), 0 ,0); break; case "days": timeSpanInterval = new TimeSpan(int.Parse(numUnits),0 ,0 ,0); break; default: Console.WriteLine("Invalid time units;" + "use seconds, minutes, hours, or days"); break; } return timeSpanInterval;}

private static TimeSpan GetDurationByUnits(string durationUnits, string startIntervalFromNow){ switch (durationUnits) { case "seconds": return new TimeSpan(0, 0, int.Parse(startIntervalFromNow)); case "minutes": return new TimeSpan(0, int.Parse(startIntervalFromNow), 0); case "hours": return new TimeSpan(int.Parse(startIntervalFromNow), 0, 0); case "days": return new TimeSpan(int.Parse(startIntervalFromNow), 0, 0, 0); default: return new TimeSpan(0, 0, 0, 0); }}

public static string CopyExpirationTimeFromPolicy(string policyStatement){ int startExpiration = policyStatement.IndexOf("EpochTime");

Versión de API 2016-09-29190

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

string strExpirationRough = policyStatement.Substring(startExpiration + "EpochTime".Length); char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; List<char> listDigits = new List<char>(digits); StringBuilder buildExpiration = new StringBuilder(20); foreach (char c in strExpirationRough) { if (listDigits.Contains(c)) buildExpiration.Append(c); } return buildExpiration.ToString(); }

Véase también

• Crear una firma de URL con Perl (p. 175)• Crear una firma de URL con PHP (p. 183)• Crear una firma de URL con Java (p. 191)• Herramientas y ejemplos de código para configurar contenido privado (p. 421)

Crear una firma de URL con JavaOpen source Java toolkit for Amazon S3 and CloudFront proporciona código de ejemplo e informaciónacerca de desarrollo de CloudFront en Java. Para obtener más información acerca de las distribucionesprivadas, consulte Private Distributions en Programmer Guide: Code Samples.

También puede crear URL firmadas mediante la clase CloudFrontUrlSigner en el AWS SDK paraJava. Para obtener más información, consulte Class UrlSigner en la AWS SDK for Java API Reference.

Note

Crear una firma de URL es solo una parte del proceso de entrega de contenido privado medianteuna URL firmada. Para obtener más información acerca de todo el proceso, consulte Usar URLfirmadas (p. 138).

Los siguientes métodos aparecen en el conjunto de herramientas de código abierto de Java paraAmazon S3 y CloudFront. Debe convertir la clave privada de formato PEM a formato DER para que lasimplementaciones de Java puedan usarla.

Example Política de Java y métodos de cifrado de firma

// Signed URLs for a private distribution// Note that Java only supports SSL certificates in DER format, // so you will need to convert your PEM-formatted file to DER format. // To do this, you can use openssl:// openssl pkcs8 -topk8 -nocrypt -in origin.pem -inform PEM -out new.der // -outform DER // So the encoder works correctly, you should also add the bouncy castle jar// to your project and then add the provider.

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

String distributionDomain = "a1b2c3d4e5f6g7.cloudfront.net";String privateKeyFilePath = "/path/to/rsa-private-key.der";String s3ObjectKey = "s3/object/key.txt";String policyResourcePath = "http://" + distributionDomain + "/" + s3ObjectKey;

// Convert your DER file into a byte array.

Versión de API 2016-09-29191

Amazon CloudFront Guía para desarrolladoresEjemplos de código para crear

una firma para una URL firmada

byte[] derPrivateKey = ServiceUtils.readInputStreamToBytes(new FileInputStream(privateKeyFilePath));

// Generate a "canned" signed URL to allow access to a // specific distribution and object

String signedUrlCanned = CloudFrontService.signUrlCanned( "http://" + distributionDomain + "/" + s3ObjectKey, // Resource URL or Path keyPairId, // Certificate identifier, // an active trusted signer for the distribution derPrivateKey, // DER Private key data ServiceUtils.parseIso8601Date("2011-11-14T22:20:00.000Z") // DateLessThan );System.out.println(signedUrlCanned);

// Build a policy document to define custom restrictions for a signed URL.

String policy = CloudFrontService.buildPolicyForSignedUrl( // Resource path (optional, can include '*' and '?' wildcards) policyResourcePath, // DateLessThan ServiceUtils.parseIso8601Date("2011-11-14T22:20:00.000Z"), // CIDR IP address restriction (optional, 0.0.0.0/0 means everyone) "0.0.0.0/0", // DateGreaterThan (optional) ServiceUtils.parseIso8601Date("2011-10-16T06:31:56.000Z") );

// Generate a signed URL using a custom policy document.

String signedUrl = CloudFrontService.signUrl( // Resource URL or Path "http://" + distributionDomain + "/" + s3ObjectKey, // Certificate identifier, an active trusted signer for the distribution keyPairId, // DER Private key data derPrivateKey, // Access control policy policy );System.out.println(signedUrl);

Véase también

• Crear una firma de URL con Perl (p. 175)• Crear una firma de URL con PHP (p. 183)• Crear una firma de URL mediante C # y .NET Framework (p. 185)• Herramientas y ejemplos de código para configurar contenido privado (p. 421)

Versión de API 2016-09-29192

Amazon CloudFront Guía para desarrolladoresCómo funciona el almacenamiento en caché

con cachés perimetrales de CloudFront

Optimización del almacenamiento encaché de contenidos

En esta sección se describe cómo configurar y administrar el almacenamiento en caché de objetos paramejorar el desempeño y satisfacer sus requisitos empresariales.

Para obtener más información sobre cómo añadir y eliminar el contenido que desea que distribuyaCloudFront, consulte Añadir, eliminar o sustituir contenido que distribuye CloudFront (p. 70).

Temas• Cómo funciona el almacenamiento en caché con cachés perimetrales de CloudFront (p. 193)• Incrementar la proporción de solicitudes que atienden las cachés perimetrales de CloudFront (p. 193)• Almacenar en caché contenido en función de parámetros de cadenas de consulta (p. 196)• Almacenamiento en caché de contenido en función de cookies (p. 199)• Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 201)• Administración de cuánto tiempo se mantiene el contenido en una caché perimetral

(Vencimiento) (p. 206)• Cómo CloudFront procesa las solicitudes parciales de objetos (Range GET) (p. 212)• Especificar un objeto raíz predeterminado (p. 213)

Cómo funciona el almacenamiento en caché concachés perimetrales de CloudFront

Una de las finalidades de CloudFront es reducir la cantidad de solicitudes a las que debe responderdirectamente su servidor de origen. Esto reduce la carga de su servidor de origen y la latencia, ya que seentregan más objetos desde las ubicaciones de borde de CloudFront, más cercanas a los usuarios.

Mientras más solicitudes pueda atender CloudFront desde cachés perimetrales como parte de todas lassolicitudes (es decir, mientras mayor sea la tasa de aciertos de caché), menos solicitudes de espectadortendrá que reenviar CloudFront a su origen para obtener la última versión o una versión única de un objeto.

Puede ver el porcentaje de aciertos, fallos y errores de solicitudes de espectadores en la consola deCloudFront. Para obtener más información, consulte Informes CloudFront Cache Statistics (p. 345).

Hay una serie de factores que afectan a la tasa de aciertos de caché. Puede ajustar la configuraciónde distribución de CloudFront para mejorar la tasa de aciertos de caché siguiendo las instrucciones deIncrementar la proporción de solicitudes que atienden las cachés perimetrales de CloudFront (p. 193).

Incrementar la proporción de solicitudes queatienden las cachés perimetrales de CloudFront

Puede mejorar el desempeño aumentando la proporción de las solicitudes de espectador que sedistribuyen desde cachés perimetrales de CloudFront en lugar de acceder a los servidores de origen paracontenido, es decir, mejorando la tasa de aciertos de caché para la distribución.

En las secciones siguientes se explica cómo mejorar la tasa de aciertos de la caché.

Versión de API 2016-09-29193

Amazon CloudFront Guía para desarrolladoresEspecificar durante cuánto tiempo CloudFront

debe almacenar en caché sus objetos

Temas• Especificar durante cuánto tiempo CloudFront debe almacenar en caché sus objetos (p. 194)• Almacenar en caché en función de parámetros de cadenas de consulta (p. 194)• Almacenar en caché en función de valores de cookies (p. 194)• Almacenamiento en caché en función de encabezados de solicitud (p. 195)• Ofrecer contenido multimedia a través de HTTP (p. 196)

Especificar durante cuánto tiempo CloudFront debealmacenar en caché sus objetosPara incrementar la tasa de aciertos de la caché, puede configurar su origen para añadir una directivaCache-Control max-age a sus objetos y especificar el mayor valor práctico de max-age. La mientrasmenor sea el tiempo de permanencia en la caché, más frecuentemente CloudFront le reenviará otrasolicitud al origen para determinar si el objeto ha cambiado y, en caso de que sí, para obtener la versiónmás reciente. Para obtener más información, consulte Administración de cuánto tiempo se mantiene elcontenido en una caché perimetral (Vencimiento) (p. 206).

Almacenar en caché en función de parámetros decadenas de consultaSi configura CloudFront para almacenar en caché en función de los parámetros de cadenas de consulta,puede mejorar el almacenamiento en la caché si hace lo siguiente:

• Configure CloudFront para reenviar solo los parámetros de cadenas de consulta para los que el origendevolverá objetos únicos.

• 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, CloudFrontreenvía solicitudes separadas al origen cuando una solicitud contiene parameter1=A y otra contieneparameter1=a. A continuación, CloudFront almacena en caché los objetos correspondientes devueltospor el origen por separado incluso si los objetos son idénticos. Si utiliza solo A o a, CloudFront reenvíamenos solicitudes a su origen.

• Enumere los parámetros en el mismo orden. Al igual que con las diferencias demayúsculas y minúsculas, si una solicitud de un objeto contiene la cadena deconsulta parameter1=a&parameter2=b y otra solicitud del mismo objeto contieneparameter2=b&parameter1=a, CloudFront reenvía ambas solicitudes al origen y almacena en cachélos objetos correspondientes por separado incluso si son idénticos. Si ordena los parámetros siempre dela misma manera, CloudFront reenvía menos solicitudes al origen.

Para obtener más información, consulte Almacenar en caché contenido en función de parámetros decadenas de consulta (p. 196). Si desea revisar las cadenas de consulta que CloudFront reenvía a suorigen, habilite los registros de acceso en CloudFront y vea los valores en la columna cs-uri-query dedichos archivos de registro. Para obtener más información, consulte Configuración y uso de registros deacceso (p. 371).

Almacenar en caché en función de valores de cookiesSi configura CloudFront para almacenar en caché en función de los valores de las cookies, puede mejorarel almacenamiento en la caché si hace lo siguiente:

• Configure CloudFront para reenviar únicamente las cookies especificadas en lugar de todas. Paralas cookies para las que configura CloudFront que reenvíe a su origen, CloudFront reenvía todas

Versión de API 2016-09-29194

Amazon CloudFront Guía para desarrolladoresAlmacenamiento en caché en

función de encabezados de solicitud

las combinaciones de nombres y valores de cookies, y almacena en caché por separado los objetosdevueltos por el origen, incluso si son todos idénticos.

Supongamos que los espectadores incluyen dos cookies en cada solicitud, que cada cookie tienetres valores posibles y que todas las combinaciones de valores de cookie son posibles. CloudFrontreenvía hasta seis solicitudes diferentes a su origen para cada uno de los objetos. Si el origen devuelvedistintas versiones de un objeto en función de solo una de las cookies, CloudFront está enviando mássolicitudes a su origen de lo necesario y está almacenando en caché varias versiones idénticas delobjeto innecesariamente.

• Cree diferentes comportamientos de la caché para contenido estático y dinámico, y configure CloudFrontpara reenviar las cookies al origen solo para contenido dinámico.

Supongamos que tiene un comportamiento de la caché para la distribución y que está utilizando ladistribución tanto para contenido dinámico, como archivos .js, como para archivos .css, que rara vezcambian. CloudFront almacena en caché versiones independientes de los archivos .css en función delos valores de cookies, de modo que cada ubicación de borde de CloudFront reenvía una solicitud alorigen 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 sea *.css y para el que CloudFront noalmacene en caché en función de los valores de las cookies, CloudFront reenviará las solicitudes dearchivos .css a su origen solo por la primera solicitud que reciba desde una ubicación de borde de unarchivo .css determinado y para la primera solicitud después de un archivo .css caduque.

• Si es posible, cree diferentes comportamientos de la caché para contenido dinámico cuyos valores decookie sean exclusivos para cada usuario (como un ID de usuario) y para contenido dinámico que varíeen función de una cantidad más reducida de valores únicos.

Para obtener más información, consulte Almacenamiento en caché de contenido en función decookies (p. 199). Si desea revisar las cookies que CloudFront reenvía a su origen, habilite los registrosde acceso en CloudFront y vea los valores en la columna cs(Cookie) de dichos archivos de registro.Para obtener más información, consulte Configuración y uso de registros de acceso (p. 371).

Almacenamiento en caché en función de encabezadosde solicitudSi configura CloudFront para almacenar en caché en función de encabezados de solicitud, puede mejorarel almacenamiento en la caché si hace lo siguiente:

• Configure CloudFront para reenviar y almacenar en caché solo en función de encabezadosespecificados en lugar de reenviar y almacenar en caché en función de todos los encabezados. Paralos encabezados que especifique, CloudFront reenvía todas las combinaciones de nombres y valoresde encabezados, y almacena en caché por separado los objetos devueltos por el origen, incluso si sontodos idénticos.

Note

CloudFront siempre reenvía al origen los encabezados especificados en los siguientes temas:• Cómo CloudFront procesa y reenvía solicitudes a su servidor de origen de Amazon S3 >

Encabezados de solicitudes HTTP que CloudFront elimina o actualiza (p. 232)• Cómo CloudFront procesa y reenvía solicitudes a su servidor de origen personalizado >

Encabezados de solicitudes HTTP y comportamiento CloudFront (personalizado y orígenesde S3) (p. 239)

Al configurar CloudFront para almacenar en caché en función de los encabezados de solicitud, nocambie los encabezados que CloudFront reenvía, solo si CloudFront almacena en caché los objetos enfunción de los valores de los encabezados.

Versión de API 2016-09-29195

Amazon CloudFront Guía para desarrolladoresOfrecer contenido multimedia a través de HTTP

• Intente evitar el almacenamiento en caché en función de encabezados de solicitud con un gran númerode valores únicos.

Por ejemplo, si desea enviar diferentes tamaños de una imagen en función del dispositivo del usuario,no configure CloudFront para almacenar en caché en función del encabezado User-Agent, quetiene 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 equiposde escritorio, reenvíe solo el encabezado CloudFront-Is-Tablet-Viewer, no el CloudFront-Is-Desktop-Viewer.

Para obtener más información, consulte Almacenamiento en caché de contenido en función deencabezados de solicitud (p. 201).

Ofrecer contenido multimedia a través de HTTPPara obtener más información acerca de cómo optimizar el contenido de vídeo bajo demanda y enstreaming, consulte Vídeo bajo demanda y en streaming con CloudFront (p. 262).

Almacenar en caché contenido en función deparámetros de cadenas de consulta

Algunas aplicaciones web utilizan cadenas de consulta para enviar información al origen. Una cadena deconsulta es la parte de una solicitud web que aparece después de un carácter ? y puede contener uno ovarios parámetros, separados por caracteres &. En el siguiente ejemplo, la cadena de consulta incluye dosparámetros, color=red y size=large:

http://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large

En el caso de distribuciones web, puede elegir si desea que CloudFront reenvíe cadenas de consultas asu origen y, en tal caso, si almacenar en caché el contenido en función de todos los parámetros o de lospará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 nombresde archivo de las cinco versiones del sitio web son idénticos. Cuando un usuario visita su sitio web, lassolicitudes que se reenvían a CloudFront incluyen un parámetros de cadenas de consulta de idioma enfunción del idioma elegido por el usuario. Puede configurar CloudFront para reenviar las cadenas deconsulta al origen y almacenar en caché en función del parámetro de idioma. Si configura su servidorweb para devolver la versión de una determinada página que se corresponda con el idioma seleccionado,CloudFront almacenará en la caché cada versión de idioma por separado, en función del valor delparámetro de cadena de consulta del idioma.

En este ejemplo, si la página principal para su sitio web es main.html, las siguientes cinco solicitudes haránque CloudFront almacene main.html cinco veces en la caché, una vez por cada valor de parámetro decadena 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

Versión de API 2016-09-29196

Amazon CloudFront Guía para desarrolladoresConfigurar la consola y de la API para el reenvío decadenas de consulta y almacenamiento en caché

Tenga en cuenta lo siguiente:

• En el caso de distribuciones RTMP, no puede configurar CloudFront para reenviar parámetros decadenas de consulta a su origen. Si tiene una distribución RTMP, antes de que CloudFront reenvíe unasolicitud al servidor de origen, elimina todos los parámetros de cadenas de consulta.

• Algunos servidores HTTP no procesan parámetros de cadenas de consulta y, por lo tanto, no devuelvendistintas versiones de un objeto en función de los valores de los parámetros. Para estos orígenes, siconfigura CloudFront para reenviar los parámetros de cadenas de consulta al origen, CloudFront seguiráalmacenando en caché en función de los valores de los parámetros, a pesar de que el origen devuelvaversiones idénticas del objeto a CloudFront por cada valor del parámetro.

• Para que los parámetros de cadenas de consulta funcionen tal y como se describe en el ejemplo anteriorcon los idiomas, debe utilizar el carácter & como delimitador entre parámetros de cadenas de consulta.Si utiliza un delimitador distinto, podría obtener resultados imprevistos, en función de los parámetros queespecifique para que utilice CloudFront como base para el almacenamiento en caché y del orden en elque aparecen los parámetros en la cadena de consulta.

Los siguientes ejemplos muestran lo que ocurre si utiliza un delimitador distinto y configura CloudFrontpara 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 losparámetros de cadenas de consulta. Esto se debe a que ha configurado CloudFront para almacenaren caché en el parámetro color, pero CloudFront interpreta la siguiente cadena como que contieneúnicamente 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:

• No enviar cadenas de consultas al origen. Si no envía cadenas de consultas, CloudFront no almacenaráen caché en función de parámetros de cadenas de consulta.

• Reenviar cadenas de consulta al origen y almacenar en caché en función de todos los parámetros de lacadena de consulta.

• Reenviar cadenas de consulta al origen y almacenar en caché en función de parámetros especificadosen la cadena de consulta.

Para obtener más información, consulte Optimizar el almacenamiento en caché (p. 198).

Temas• Configurar la consola y de la API para el reenvío de cadenas de consulta y almacenamiento en

caché (p. 197)• Optimizar el almacenamiento en caché (p. 198)• Parámetros de cadenas de consulta y registros de acceso de CloudFront (p. 199)

Configurar la consola y de la API para el reenvío decadenas de consulta y almacenamiento en cachéPara configurar el reenvío y almacenamiento en caché de cadenas de consulta en la consola deCloudFront, consulte los siguientes ajustes en Valores que deben especificarse al crear o actualizar unadistribución (p. 30):

Versión de API 2016-09-29197

Amazon CloudFront Guía para desarrolladoresOptimizar el almacenamiento en caché

• Reenvío de cadenas de consulta y almacenamiento en caché (p. 43)• Lista blanca de cadenas de consulta (p. 43)

Para configurar el reenvío y almacenamiento en caché de cadenas de consulta con la API de CloudFront,consulte los siguientes ajustes en DistributionConfig Complex Type y DistributionConfigWithTags ComplexType en la Amazon CloudFront API Reference:

• QueryString

• QueryStringCacheKeys

Optimizar el almacenamiento en cachéAl configurar CloudFront para almacenar en caché en función de los parámetros de cadenas de consulta,puede reducir el número de solicitudes que CloudFront le reenvía a su origen aplicando el método aquídescrito, para reducir la carga en el servidor de origen y la latencia, ya que se ofrecerán más objetos desdelas ubicaciones de borde de CloudFront.

Almacenar en caché solo en función de parámetros por los que su origen devuelve diferentes versiones deun objeto

Por cada parámetro de cadena de consulta que la aplicación web reenvía a CloudFront, CloudFrontreenvía solicitudes a su origen por cada valor del parámetro y almacena en caché una versiónindependiente del objeto por cada valor del parámetro. Esto ocurre incluso si el origen siempredevuelve el mismo objeto independientemente del valor del parámetro. En caso de haber variosparámetros, la cantidad de solicitudes y de objetos se multiplica: si las solicitudes de un objetoincluyen dos parámetros, cada uno con tres valores diferentes, CloudFront almacenará en caché seisversiones de dicho objeto, suponiendo que ha seguido las recomendaciones de esta sección.

Le recomendamos configurar CloudFront para almacenar en caché solo los parámetros de cadenasde consulta para los que el origen devuelve distintas versiones, y que piense detenidamente en lasventajas de almacenar en caché en función de cada parámetro. Supongamos que tiene un sitio webde venta al por menor. Dispone de imágenes de una chaqueta en seis colores diferentes y la chaquetaestá 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 CloudFrontpara almacenar en caché solo el parámetro de color, no el de talla. Esto aumenta la probabilidad deque CloudFront pueda atender una solicitud de la caché, lo que mejora el desempeño y reduce lacarga en el origen.

Organice los parámetros siempre en el mismo orden

El orden de los parámetros de cadenas de consulta es importante. En el siguiente ejemplo, lascadenas de consulta son idénticas, salvo que los parámetros están en órdenes diferentes. Esto haceque CloudFront reenvíe dos solicitudes de imagen.jpg independientes a su origen y que almacene encaché 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

CloudFront diferencia mayúsculas de minúsculas en los valores y nombres de los parámetrosal almacenar en caché en función de los parámetros de cadenas de consulta. En el siguienteejemplo, las cadenas de consulta son idénticas, salvo por las mayúsculas y minúsculas de losnombres y valores del parámetro. Esto hace que CloudFront reenvíe cuatro solicitudes de imagen.jpgindependientes a su origen y que almacene en caché cuatro versiones independientes del objeto:

Versión de API 2016-09-29198

Amazon CloudFront Guía para desarrolladoresParámetros de cadenas de consultay registros de acceso de CloudFront

• http://d111111abcdef8.cloudfront.net/images/image.jpg?color=red

• http://d111111abcdef8.cloudfront.net/images/image.jpg?color=Red

• http://d111111abcdef8.cloudfront.net/images/image.jpg?Color=red

• http://d111111abcdef8.cloudfront.net/images/image.jpg?Color=Red

Recomendamos utilizar mayúsculas o minúsculas de forma consistente en los valores y nombres deparámetros, como todo en minúsculas.

No utilice nombres de parámetros que entren en conflicto con URL firmadas

Si utiliza URL firmadas para restringir el acceso a su contenido (si ha añadido signatarios de confianzapara su distribución), CloudFront elimina los siguientes parámetros de cadenas de consulta antes dereenviar 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 a su origen,sus propios parámetros de cadenas de consulta no pueden denominarse Expires, Key-Pair-Id,Policyni Signature.

Parámetros de cadenas de consulta y registros deacceso de CloudFrontPara las distribuciones web y RTMP, si habilita el registro, CloudFront registra la URL completa,incluidos los parámetros de cadenas de consulta. En el caso de distribuciones web, esto ocurreindependientemente de si ha configurado CloudFront para reenviar cadenas de consulta al origen. Paraobtener más información acerca del registro en CloudFront, consulte Configuración y uso de registros deacceso (p. 371).

Almacenamiento en caché de contenido en funciónde cookies

En el caso de distribuciones web, CloudFront no toma en cuenta las cookies de forma predeterminadaal almacenar los objetos en la caché en ubicaciones de borde. Si el origen devuelve dos objetos y sediferencian únicamente en los valores del encabezado Set-Cookie CloudFront almacena solo unaversión del objeto en la caché. (En el caso de distribuciones RTMP, no se puede configurar CloudFrontpara que procese cookies y CloudFront no almacena en la caché cookies en cachés perimetrales).

Important

Amazon S3 y algunos servidores HTTP no procesan cookies. No configure comportamientos dela caché de CloudFront para reenviar cookies a un origen que no procese cookies, o afectaránegativamente la capacidad de almacenamiento en caché y, por lo tanto, el desempeño. Paraobtener más información acerca de comportamientos de la caché, consulte Configuración delcomportamiento de la caché (p. 37).

Puede configurar CloudFront para reenviar al origen algunas o todas las cookies en las solicitudes de losespectadores y para almacenar en caché diferentes versiones de sus objetos en función de los valores delas cookies de las solicitudes de los espectadores. CloudFront utiliza las cookies en las solicitudes de losespectadores para identificar un objeto en la caché de manera única.

Versión de API 2016-09-29199

Amazon CloudFront Guía para desarrolladoresAlmacenamiento en caché de

contenido en función de cookies

Supongamos que las solicitudes de locations.html contienen una cookie country con un valorde uk o fr. Al configurar CloudFront para almacenar los objetos en la caché en función del valor de lacookie country, CloudFront le reenvía las solicitudes de locations.html al origen e incluye la cookiecountry y sus valores. Su origen devuelve locations.html y CloudFront almacena el objeto una vezen la caché para las solicitudes cuyo valor de la cookie country sea uk y otra vez para las solicitudescuyo valor de la cookie sea fr.

Note

Si configura CloudFront para reenviar cookies al origen, CloudFront almacenará en caché enfunción de los valores de las cookies. Esto ocurre incluso si el origen hace caso omiso de losvalores de las cookies en la solicitud y, en el ejemplo anterior, siempre devuelve la misma versiónde locations.html a CloudFront. Como consecuencia, CloudFront reenvía más solicitudesdel mismo objeto a su servidor de origen, lo que ralentiza el desempeño e incrementa la cargaen su servidor de origen. Si el servidor de origen no varía su respuesta en función del valor deuna determinada cookie, le recomendamos no configurar CloudFront para que reenvíe cookies alorigen.

Puede configurar cada comportamiento de la caché en una distribución web para realizar una de lassiguientes acciones:

• Reenviar todas las cookies al origen: CloudFront reenvía las solicitudes de espectadores al origen,incluidas todas las cookies. Cuando el origen devuelve una respuesta, CloudFront almacena en caché larespuesta, las cookies y los valores de las cookies de la solicitud del espectador. (Si el origen devuelvecookies que no estaban en la solicitud del espectador, CloudFront no las almacena en la caché).CloudFront devuelve al espectador el objeto solicitado y todas las cookies y sus valores, incluidas lascookies que no estaban en la solicitud del usuario.

• Reenviar una lista blanca de las cookies que especifique: CloudFront elimina las cookies que noaparecen en la lista blanca antes de reenviar las solicitudes al origen. CloudFront almacena en caché larespuesta de su origen, así como las cookies especificadas y sus valores. (Si el origen devuelve tantolas cookies de la lista blanca como cookies que no se incluyen en dicha lista, CloudFront almacenaen caché solo las incluidas en la lista blanca). CloudFront también devuelve al espectador el objeto,incluidas las cookies especificadas y sus valores. Si la respuesta del origen incluye cookies que noaparecen en la lista blanca, CloudFront también devuelve estas cookies al espectador.

Para obtener información acerca de la especificación de comodines en nombres de cookies, consulteLista blanca de cookies (solo para Amazon EC2 y otros orígenes personalizados) (p. 42).

Para consultar el límite actual de la cantidad de nombres de cookies que puede incluir en unalista blanca para cada comportamiento de la caché, consulte los Límites de Amazon CloudFronten la Referencia general de Amazon Web Services. Para solicitar una ampliación del límite,visite https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions.

• No reenviar las cookies al origen: CloudFront no almacena los objetos en la caché en función delos valores de las cookies. Además, CloudFront elimina el encabezado Cookie de las solicitudesque reenvía al origen y elimina el encabezado Set-Cookie de las respuestas que devuelve a losespectadores.

Tenga en cuenta lo siguiente acerca de especificar las cookies que desea reenviar:

Logs de acceso

Si configura CloudFront para registrar registros y cookies, CloudFront registra todas las cookiesy todos los atributos de cookies, incluso si configura CloudFront para no reenviar cookies a suorigen o si configura CloudFront para reenviar solo una lista especificada de cookies. Para obtenermás información acerca del registro en CloudFront, consulte Configuración y uso de registros deacceso (p. 371).

Versión de API 2016-09-29200

Amazon CloudFront Guía para desarrolladoresAlmacenamiento en caché de contenidoen función de encabezados de solicitud

Diferenciación entre mayúsculas y minúsculas

Los nombres y valores de las cookies distinguen entre mayúsculas y minúsculas. Por ejemplo, sidos cookies del mismo objeto son idénticas excepto por las mayúsculas o minúsculas, CloudFrontalmacena el objeto dos veces en la caché.

CloudFront ordena las cookies

CloudFront ordena las cookies según su nombre antes de reenviar la solicitud al origen.If-Modified-Since y If-None-Match

Las solicitudes condicionales If-Modified-Since y If-None-Match no están admitidas.Suspensión del almacenamiento en caché en función de cookies

Si desea que CloudFront detenga temporalmente el almacenamiento en caché de cookies y susatributos, configure su servidor de origen para añadir los siguientes encabezados a las respuestas aCloudFront:

no-cache="Set-Cookie"

Longitud total de los nombres de las cookies

Si configura CloudFront para que reenvíe nombres de cookies al origen, la cantidad total de bytes ende dichos nombres no puede superar:

512 – (the number of cookies that you're forwarding)

Por ejemplo, si configura CloudFront para reenviar 10 cookies al origen, la longitud combinada delos nombres de las cookies no puede superar los 502 bytes (512-10). Si configura CloudFront parareenviar todas las cookies a su 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 unadistribución de modo que CloudFront reenvíe las cookies al origen, consulte Visualizar y actualizardistribuciones (p. 53). Para obtener más información acerca de cómo utilizar la API de CloudFront paraactualizar una distribución, consulte PUT Distribution Config en la Amazon CloudFront API Reference.

Almacenamiento en caché de contenido en funciónde encabezados de solicitud

En el caso de distribuciones web, CloudFront le permite elegir si desea que CloudFront reenvíe losencabezados al origen y almacene en caché diferentes versiones de un objeto específico en función de losvalores de encabezado de las solicitudes de los espectadores. Esto le permite ofrecer distintas versionesdel contenido en función del dispositivo del usuario, la ubicación del espectador, su idioma y otros criterios.En el caso de distribuciones RTMP, no puede configurar CloudFront para almacenar en caché en funciónde los valores de encabezado.

Note

En el caso de distribuciones RTMP, no se puede configurar CloudFront para almacenar en cachéel contenido en función de los encabezados de las solicitudes de los espectadores.

Temas• Encabezados y distribuciones - Información general (p. 202)• Seleccionar los encabezados en función de los desea que CloudFront almacené en caché (p. 203)• Configurar CloudFront para respetar la configuración de uso compartido de recursos entre orígenes

(CORS) (p. 204)

Versión de API 2016-09-29201

Amazon CloudFront Guía para desarrolladoresEncabezados y distribuciones - Información general

• Configurar CloudFront para almacenar objetos en la caché en función del tipo de dispositivo (p. 204)• Configurar CloudFront para almacenar en la caché objetos en función del lenguaje del

espectador (p. 204)• Configurar CloudFront para almacenar en la caché objetos en función de la ubicación del

espectador (p. 205)• Configurar CloudFront para almacenar en la caché objetos en función del protocolo de la

solicitud (p. 205)• Cómo el almacenamiento en caché en función de los encabezados afecta el desempeño (p. 205)• Cómo las mayúsculas o minúsculas de los encabezados y sus valores afectan el almacenamiento en

caché (p. 205)• Encabezados de CloudFront devuelve al espectador (p. 206)

Encabezados y distribuciones - Información generalDe forma predeterminada, CloudFront no toma en cuenta los encabezados al almacenar los objetos en lacaché en ubicaciones de borde. Si el origen devuelve dos objetos que se diferencian únicamente por losvalores de los encabezados de solicitud, CloudFront almacena solo una versión del objeto en la caché.

Puede configurar CloudFront para reenviar los encabezados al origen, lo que hace que CloudFrontalmacene en caché varias versiones de un objeto en función de los valores en uno o varios encabezadosde solicitud. Para configurar CloudFront para almacenar en caché los objetos en función de los valoresde encabezados específicos, tiene que especificar la configuración del comportamiento de la caché parala distribución. Para obtener más información, consulte Caché en función de encabezados de solicitudseleccionados.

Supongamos que las solicitudes de espectadores de logo.jpg contienen un encabezado personalizadoProduct con un valor de Acme o Apex. Al configurar CloudFront para que almacene en caché sus objetosen función del valor del encabezado Product, CloudFront reenvía solicitudes de logo.jpg al origen eincluye el encabezado Product y los valores del encabezado. CloudFront almacena en caché logo.jpguna vez por cada solicitud cuyo valor del encabezado Product es Acme y otra vez por cada solicitud cuyoencabezado sea Apex.

Puede configurar cada comportamiento de la caché en una distribución web para realizar una de lassiguientes acciones:

• Reenviar todos los encabezados al origen

Important

Si configura CloudFront para reenviar todos los encabezados al origen, CloudFront noalmacena en caché los objetos asociados a este comportamiento de la caché. En su lugar,envía todas las solicitudes al origen.

• Reenviar una lista blanca de encabezados que especifique. CloudFront almacena en caché los objetosen función de los valores de todos los encabezados especificados. CloudFront también reenvía losencabezados que reenvía de forma predeterminada, pero almacena en caché sus objetos solo según losencabezados que especifique.

• Reenviar solo los encabezados predeterminados. En esta configuración, CloudFront no almacena susobjetos en caché en función de los valores de los encabezados de solicitudes.

Para consultar el límite actual de la cantidad de encabezados que puede incluir en una lista blanca paracada comportamiento de la caché, consulte los Límites de Amazon CloudFront en la Referencia generalde Amazon Web Services. Para solicitar una ampliación del límite, visite https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions.

Versión de API 2016-09-29202

Amazon CloudFront Guía para desarrolladoresSeleccionar los encabezados en función de

los desea que CloudFront almacené en caché

Para obtener más información acerca del uso de la consola de CloudFront para actualizar unadistribución de modo que CloudFront reenvíe encabezados al origen, consulte Visualizar y actualizardistribuciones (p. 53). Para obtener más información acerca de cómo utilizar la API de CloudFront paraactualizar una distribución web existente, consulte PUT Distribution Config en la Amazon CloudFront APIReference.

Seleccionar los encabezados en función de los deseaque CloudFront almacené en cachéLos encabezados que puede reenviar al origen y en los que CloudFront basa el almacenamiento en cachédependen de si su origen es un bucket de Amazon S3 o un origen personalizado.

• Amazon S3: puede configurar CloudFront para reenviar y para almacenar en caché sus objetos enfunción de un número de encabezados específicos (vea una lista de excepciones a continuación). Sinembargo, le recomendamos que evite los encabezados de lista blanca con un origen de Amazon S3,a menos que necesite implementar el uso compartido de recursos entre orígenes (CORS) o deseepersonalizar 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 Configurar CloudFront para respetar la configuración de usocompartido de recursos entre orígenes (CORS) (p. 204).

• Para personalizar el contenido mediante el uso de encabezados que reenvía a su origen de AmazonS3, escriba y añada funciones de Lambda@Edge y asócielas a su distribución de CloudFront paraactivarlas mediante un evento producido en el origen. Para obtener más información acerca del uso deencabezados para personalizar contenido, consulte Personalizar contenido por encabezados de tipode dispositivo o país: ejemplos (p. 325).

Le recomendamos que evite los encabezados de lista blanca que no esté utilizando para personalizarcontenido ya que el reenvío de encabezados adicionales puede reducir la tasa de aciertos decaché. Es decir, CloudFront; no podrá atender tantas solicitudes de cachés perimetrales, como unaproporción de todas las solicitudes.

• Origen personalizado : puede configurar CloudFront para almacenar en caché en función del valor decualquier encabezado de solicitud, excepto los siguientes:• Accept-Encoding

• Connection

• Cookie: si desea reenviar y almacenar en caché en función de las cookies, utilice otra configuraciónindependiente en su distribución. Para obtener más información, consulte Almacenamiento en cachéde contenido en función de cookies (p. 199).

• Host (for Amazon S3 origins)

• Proxy-Authorization

• TE

• Upgrade

Puede configurar CloudFront para almacenar en caché los objetos en función de los valores de losencabezados Date y User-Agent, pero no lo recomendamos. Estos encabezados tienen muchosvalores posibles y el almacenamiento en caché en función de sus valores podría hacer que CloudFrontreenvíe una cantidad de solicitudes significativamente mayor a su origen.

Para obtener una lista completa de encabezados de solicitudes HTTP y cómo los procesa CloudFront,consulte Encabezados de solicitudes HTTP y comportamiento CloudFront (personalizado y orígenes deS3) (p. 239).

Versión de API 2016-09-29203

Amazon CloudFront Guía para desarrolladoresConfigurar CloudFront para respetar la configuración

de uso compartido de recursos entre orígenes (CORS)

Configurar CloudFront para respetar la configuraciónde uso compartido de recursos entre orígenes (CORS)Si ha habilitado el uso compartido de recursos entre orígenes (CORS) en un bucket de Amazon S3 o en unorigen personalizado, debe elegir encabezados específicos para reenviar, para respetar la configuraciónde CORS. Los encabezados que debe reenviar difieren en función del origen (Amazon S3 o personalizado)y si desea almacenar las respuestas OPTIONS en caché.

Amazon S3

• Si desea que las respuestas OPTIONS se almacenen en caché, haga lo siguiente:• Elija las opciones para la configuración de comportamiento de la caché predeterminado que habilitan

el almacenamiento en caché para respuestas de OPTIONS.• Configure CloudFront para reenviar los siguientes encabezados: Origin, Access-Control-Request-Headers y Access-Control-Request-Method.

• Si no desea que las respuestas de OPTIONS se almacenen en caché, configure CloudFront parareenviar el encabezado Origin, junto con los demás encabezados requeridos por el origen.

Orígenes personalizados: reenvíe el encabezado Origin junto con los demás encabezados exigidos porel origen.

Para obtener más información acerca de CORS y Amazon S3, consulte Enabling Cross-Origin ResourceSharing en la Guía para desarrolladores de Amazon Simple Storage Service.

Configurar CloudFront para almacenar objetos en lacaché en función del tipo de dispositivoSi desea que CloudFront almacene en caché diversas versiones de sus objetos según el dispositivo que elusuario utilice para ver su contenido, configure CloudFront para reenviar los encabezados aplicables a suorigen 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 encabezadoscomo true o false antes de reenviar la solicitud a su origen. Si un dispositivo entra en más de unacategoría, más de un valor podría ser true. Por ejemplo, en el caso de algunas tablets, CloudFront podríaestablecer tanto CloudFront-Is-Mobile-Viewer y CloudFront-Is-Tablet-Viewer como true.

Configurar CloudFront para almacenar en la cachéobjetos en función del lenguaje del espectadorSi desea que CloudFront almacene en caché distintas versiones de los objetos en función del idiomaespecificado en la solicitud, programe su aplicación para incluir el lenguaje en el encabezado Accept-Language y configure CloudFront para reenviar el encabezado Accept-Language al origen.

Versión de API 2016-09-29204

Amazon CloudFront Guía para desarrolladoresConfigurar CloudFront para almacenar en la cachéobjetos en función de la ubicación del espectador

Configurar CloudFront para almacenar en la cachéobjetos en función de la ubicación del espectadorSi desea que CloudFront almacene en caché distintas versiones de los objetos en función del país del queprovino la solicitud, configure CloudFront para reenviar el encabezado CloudFront-Viewer-Country asu origen. CloudFront convierte automáticamente la dirección IP de la que provino la solicitud en un códigode país de dos letras. Para obtener una lista sencilla de códigos de país, organizable por código y pornombre de país, consulte la entrada de Wikipedia ISO 3166-1 alpha-2.

Configurar CloudFront para almacenar en la cachéobjetos en función del protocolo de la solicitudSi desea que CloudFront almacene en caché distintas versiones de los objetos en función del protocolode la solicitud (HTTP o HTTPS), configure CloudFront para reenviar el encabezado CloudFront-Forwarded-Proto a su origen.

Cómo el almacenamiento en caché en función de losencabezados afecta el desempeñoSi configura CloudFront para almacenar en caché en función de uno o varios encabezados y losencabezados tienen más de un valor posible, CloudFront reenvía más solicitudes a su servidor de origenpara el mismo objeto. Esto afecta negativamente el desempeño y aumenta la carga en su servidor deorigen. Si su servidor de origen devuelve el mismo objeto independientemente del valor de un encabezadodeterminado, le recomendamos que no configure CloudFront para almacenar en caché en función de eseencabezado.

Si configura CloudFront para reenviar más de un encabezado, el orden de los encabezados de lassolicitudes de los espectadores no afecta el almacenamiento en caché, siempre y cuando los valoressean los mismos. Por ejemplo, si una solicitud contiene los encabezados A:1,B:2 y otra solicitud contieneB:2,A:1, CloudFront almacena en caché solo una copia del objeto.

Cómo las mayúsculas o minúsculas de losencabezados y sus valores afectan el almacenamientoen cachéCuando CloudFront almacena en caché en función de los valores del encabezado, pasa por alto el uso demayúsculas y minúsculas en los nombres de encabezado, pero lo toma en cuenta en el caso del valor deencabezado:

• Si las solicitudes de espectadores incluyen tanto Product:Acme como product:Acme, CloudFrontalmacena en caché un objeto solo una vez. La única diferencia entre ellos es el uso de mayúsculas yminúsculas en el nombre del encabezado, lo que no afecta el almacenamiento en caché.

• Si las solicitudes de espectadores incluyen tanto Product:Acme como Product:acme, CloudFrontalmacena en caché un objeto dos veces, ya que el valor es Acme en algunas solicitudes y acme enotras.

Versión de API 2016-09-29205

Amazon CloudFront Guía para desarrolladoresEncabezados de CloudFront devuelve al espectador

Encabezados de CloudFront devuelve al espectadorConfigurar CloudFront para reenviar y almacenar encabezados en caché no afecta qué encabezadosCloudFront devuelve al espectador. CloudFront devuelve todos los encabezados que obtiene del origencon algunas excepciones. Para obtener más información, consulte el tema correspondiente:

• Orígenes de Amazon S3 : consulte Encabezados de respuesta HTTP que CloudFront elimina oactualiza (p. 234).

• Orígenes personalizados: consulte Encabezados de respuesta HTTP que CloudFront elimina oactualiza (p. 247).

Administración de cuánto tiempo se mantiene elcontenido en una caché perimetral (Vencimiento)

Es posible controlar durante cuánto tiempo mantener los objetos en una caché de CloudFront antes deCloudFront reenvíe otra solicitud al origen. Reducir la duración le permite ofrecer contenido dinámico.Aumentar la duración implica que sus usuarios podrán disfrutar de un mejor desempeño ya que es másprobable que sus objetos se ofrezcan directamente desde la caché perimetral. Una mayor duracióntambién reduce la carga en el origen.

Normalmente, CloudFront ofrece un objeto desde una ubicación de borde durante el tiempo dealmacenamiento en caché especificado por usted, es decir, hasta que el objeto caduque. Después decaducar, la próxima vez que la ubicación de borde reciba una solicitud de un objeto por parte de unusuario, CloudFront reenviará la solicitud al servidor de origen para comprobar que la caché contiene laúltima versión del objeto. La respuesta del origen depende de si el objeto ha cambiado:

• Si la caché de CloudFront ya tiene la última versión, el origen devuelve un código de estado 304 (Nomodificado).

• 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 objeto.

Si un objeto de una ubicación de borde no se solicita con frecuencia, CloudFront podría desalojarlo(eliminarlo antes de su fecha de vencimiento) con el fin de dejar espacio para otros objetos que hayan sidosolicitados más recientemente.

De forma predeterminada, cada objeto caduca automáticamente después de 24 horas. En el caso dedistribuciones web, puede cambiar el comportamiento predeterminado de dos formas:

• Para cambiar la duración del almacenamiento en caché para todos los objetos que coincidan con elmismo patrón de ruta, puede cambiar la configuración de Minimum TTL, Maximum TTL y Default TTL deun comportamiento de la caché de CloudFront. Para obtener información acerca de ajustes individuales,consulte Minimum TTL, Maximum TTL y Default TTL. Para utilizar esta configuración, debe elegir laopción Customize de Object Caching.

• Para cambiar la duración del almacenamiento en caché de un objeto individual, puede configurar elorigen para añadir una directiva Cache-Control max-age o Cache-Control s-maxage, o uncampo de encabezado Expires al objeto. Para obtener más información, consulte Utilizar encabezadospara controlar la duración del almacenamiento en caché de objetos individuales (p. 207).

Para obtener más información acerca de cómo Minimum TTL, Default TTL y Maximum TTL interactúancon directivas Cache-Control max-age y Cache-Control s-maxage y con el campo de encabezadoExpires, consulte Especificar durante cuánto tiempo CloudFront almacena en caché objetos paradistribuciones web (p. 208).

Versión de API 2016-09-29206

Amazon CloudFront Guía para desarrolladoresUtilizar encabezados para controlar la duración delalmacenamiento en caché de objetos individuales

También puede controlar durante cuánto tiempo los errores (como "404, No encontrado") permanecen enuna caché de CloudFront antes de CloudFront intente obtener de nuevo el objeto solicitado reenviandootra solicitud al origen. Para obtener más información, consulte Cómo CloudFront procesa y almacena encaché los códigos de estado HTTP 4xx y 5xx desde el origen (p. 251).

Temas• Utilizar encabezados para controlar la duración del almacenamiento en caché de objetos

individuales (p. 207)• Especificar durante cuánto tiempo CloudFront almacena en caché objetos para distribuciones

web (p. 208)• Especificar el tiempo mínimo durante el cual CloudFront almacena en caché objetos para

distribuciones RTMP (p. 212)• Añadir encabezados a sus objetos con la consola de Amazon S3 (p. 212)

Utilizar encabezados para controlar la duración delalmacenamiento en caché de objetos individualesPuede utilizar los encabezados Cache-Control y Expires para controlar durante cuánto tiempopermanecen los objetos en la caché. La configuración de Minimum TTL, Default TTL y Maximum TTLtambién afecta la duración de caché, pero a continuación encontrará información general acerca de cómolos encabezados pueden influir en la duración de la caché:

• La directiva 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 delservidor de origen. El tiempo de vencimiento mínimo admitido por CloudFront es de 0 segundos paradistribuciones web y 3 600 segundos para distribuciones con RTMP. El valor máximo es 100 años.Especifique el valor en el siguiente formato:

Cache-Control: max-age=segundos

Por ejemplo, la siguiente directiva le indica a CloudFront mantener el objeto asociado en la cachédurante 3 600 segundos (una hora):

Cache-Control: max-age=3600

Si desea que los objetos permanezcan en las cachés perimetrales de CloudFront por un tiempodistinto del que permanecen en las cachés de navegadores, puede utilizar las directivas 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 en caché objetos para distribucionesweb (p. 208).

• El campo del encabezado Expires le permite especificar una fecha y hora de vencimiento con elformato especificado en RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 Section 3.3.1, Full Date, porejemplo:

Sat, 27 Jun 2015 23:59:59 GMT

Le recomendamos que utilice la directiva Cache-Control max-age en lugar del campo de encabezadoExpires para controlar el almacenamiento de objetos en caché. Si especifica valores tanto para Cache-Control max-age como para Expires, CloudFront utilizará únicamente el valor de Cache-Controlmax-age.

Para obtener más información, consulte Especificar durante cuánto tiempo CloudFront almacena en cachéobjetos para distribuciones web (p. 208).

Versión de API 2016-09-29207

Amazon CloudFront Guía para desarrolladoresEspecificar durante cuánto tiempo CloudFront

almacena en caché objetos para distribuciones web

No es posible utilizar los campos de encabezado HTTP Cache-Control ni Pragma en una solicitudGET de un espectador 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 usuarios.

Para obtener más información acerca de los campos de encabezado Cache-Control y Expires, visitelas siguientes secciones de RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1:

• Section 14.9 Cache Control• Section 14.21 Expires

Para consultar un ejemplo de cómo añadir campos de encabezado Cache-Control y Expiresutilizando AWS SDK para PHP, consulte Upload an Object Using the AWS SDK for PHP en la Guía paradesarrolladores de Amazon Simple Storage Service. También hay herramientas de terceros que puedenañadir estos campos.

Especificar durante cuánto tiempo CloudFrontalmacena en caché objetos para distribuciones webEn el caso de distribuciones web, puede utilizar encabezados Cache-Control o Expires y TTLmínimos, máximos y predeterminados de CloudFront para controlar durante cuántos segundos CloudFrontmantiene un objeto en la caché antes de transmitir otra solicitud al origen. Los valores de los encabezadostambién determinan durante cuánto tiempo un navegador mantiene un objeto en la caché antes reenviarotra solicitud a CloudFront.

Important

Si configura CloudFront para reenviar todos los encabezados al origen para un comportamientode la caché, CloudFront nunca almacenará en caché los objetos asociados a dichocomportamiento. En su lugar, CloudFront reenviará todas las solicitudes de esos objetos alorigen. En dicha configuración, el valor de Minimum TTL deberá ser 0. Para obtener másinformación, consulte Almacenamiento en caché de contenido en función de encabezados desolicitud (p. 201).

Para especificar valores de Minimum TTL, Maximum TTL y Default TTL, seleccione la opción Customize enObject Caching.

Configuración de origen Minimum TTL = 0 Seconds Minimum TTL > 0 Seconds

El origen añade una directivaCache-Control max-age alos objetos

Almacenamiento en caché deCloudFront

CloudFront almacena en cachélos objetos durante el menorde estos dos valores: el de ladirectiva Cache-Control max-age o el de TTL máximo deCloudFront.

Almacenamiento en caché denavegadores

Los navegadores almacenan encaché objetos según el valor dela directiva Cache-Controlmax-age.

Almacenamiento en caché deCloudFront

El almacenamiento en cachéde CloudFront depende de losvalores de los TTL mínimo ymáximo de CloudFront y de ladirectiva Cache-Control max-age:

• Minimum TTL < max-age <maximum TTL

CloudFront almacena objetosen la caché según el valor dela directiva Cache-Controlmax-age.

• max-age < minimum TTL

Versión de API 2016-09-29208

Amazon CloudFront Guía para desarrolladoresEspecificar durante cuánto tiempo CloudFront

almacena en caché objetos para distribuciones web

Configuración de origen Minimum TTL = 0 Seconds Minimum TTL > 0 SecondsCloudFront almacena objetosen la caché según el valor delTTL mínimo de CloudFront.

• max-age > maximum TTL

CloudFront almacena objetosen la caché según el valor delTTL máximo de CloudFront.

Almacenamiento en caché denavegadores

Los navegadores almacenan encaché objetos según el valor dela directiva Cache-Controlmax-age.

El origen no añade una directivaCache-Control max-age alos objetos

Almacenamiento en caché deCloudFront

CloudFront almacena objetos enla caché según el valor del TTLpredeterminado de CloudFront.

Almacenamiento en caché denavegadores

Depende del navegador.

Almacenamiento en caché deCloudFront

CloudFront almacena en cachélos objetos según el mayor deestos dos valores de CloudFront:TTL mínimo o predeterminado.

Almacenamiento en caché denavegadores

Depende del navegador.

Versión de API 2016-09-29209

Amazon CloudFront Guía para desarrolladoresEspecificar durante cuánto tiempo CloudFront

almacena en caché objetos para distribuciones web

Configuración de origen Minimum TTL = 0 Seconds Minimum TTL > 0 Seconds

El origen añade directivasCache-Control max-age yCache-Control s-maxage alos objetos

Almacenamiento en caché deCloudFront

CloudFront almacena en cachélos objetos durante el menorde estos dos valores: el de ladirectiva Cache-Control s-maxage o el de TTL máximo deCloudFront.

Almacenamiento en caché denavegadores

Los navegadores almacenan encaché objetos según el valor dela directiva Cache-Controlmax-age.

Almacenamiento en caché deCloudFront

El almacenamiento en cachéde CloudFront depende de losvalores de los TTL mínimo ymáximo de CloudFront y de ladirectiva Cache-Control s-maxage:

• Minimum TTL < s-maxage <maximum TTL

CloudFront almacena objetosen la caché según el valor dela directiva Cache-Controls-maxage.

• s-maxage < minimum TTL

CloudFront almacena objetosen la caché según el valor delTTL mínimo de CloudFront.

• s-maxage > maximum TTL

CloudFront almacena objetosen la caché según el valor delTTL máximo de CloudFront.

Almacenamiento en caché denavegadores

Los navegadores almacenan encaché objetos según el valor dela directiva Cache-Controlmax-age.

Versión de API 2016-09-29210

Amazon CloudFront Guía para desarrolladoresEspecificar durante cuánto tiempo CloudFront

almacena en caché objetos para distribuciones web

Configuración de origen Minimum TTL = 0 Seconds Minimum TTL > 0 Seconds

El origen añade un encabezadoExpires a los objetos

Almacenamiento en caché deCloudFront

CloudFront almacena en cachélos objetos hasta la fecha delencabezado Expires o el valordel TTL máximo de CloudFront,lo que suceda antes.

Almacenamiento en caché denavegadores

Los navegadores almacenanobjetos en la caché hasta lafecha del encabezado Expires.

Almacenamiento en caché deCloudFront

El almacenamiento en cachéde CloudFront depende de losvalores de los TTL mínimo ymáximo de CloudFront y de ladirectiva Expires:

• Minimum TTL < Expires <maximum TTL

CloudFront almacena objetosen la caché hasta la fechay hora del encabezadoExpires.

• Expires < minimum TTL

CloudFront almacena objetosen la caché según el valor delTTL mínimo de CloudFront.

• Expires > maximum TTL

CloudFront almacena objetosen la caché según el valor delTTL máximo de CloudFront.

Almacenamiento en caché denavegadores

Los navegadores almacenanobjetos en la caché hasta lafecha y hora del encabezadoExpires.

El origen añade directivasCache-Control: no-cache,no-store o private a losobjetos.

CloudFront y los navegadoresrespetan los encabezados.

Para consultar una excepciónde cómo CloudFront gestiona elencabezado Cache-Control:no-cache, consulte Solicitudessimultáneas del mismo objeto(picos de tráfico) (p. 245).

Almacenamiento en caché deCloudFront

CloudFront almacena objetos enla caché según el valor del TTLmínimo de CloudFront.

Almacenamiento en caché denavegadores

Los navegadores respetan losencabezados.

Para obtener más información acerca de cómo cambiar ajustes de distribuciones web desde la consola deCloudFront consulte Visualizar y actualizar distribuciones (p. 53). Para obtener más información acerca decómo cambiar ajustes de distribuciones web con la API de CloudFront consulte PUT Config.

Versión de API 2016-09-29211

Amazon CloudFront Guía para desarrolladoresEspecificar el tiempo mínimo durante el cual CloudFrontalmacena en caché objetos para distribuciones RTMP

Especificar el tiempo mínimo durante el cualCloudFront almacena en caché objetos paradistribuciones RTMPEn el caso de distribuciones RTMP, CloudFront almacena objetos en cachés perimetrales durante 24horas de forma predeterminada. Puede añadir el encabezado Cache-Control o Expires a sus objetospara cambiar la cantidad de tiempo que CloudFront mantiene objetos en cachés perimetrales antes dereenviar otra solicitud al origen. La duración mínima es de 3 600 segundos (una hora). Si especifica unvalor inferior, CloudFront utiliza 3 600 segundos.

Añadir encabezados a sus objetos con la consola deAmazon S3

Note

Desde la consola de Amazon S3, solo puede añadir encabezados objeto a objeto, pero algunasherramientas de terceros le permiten añadir encabezados a varios objetos de Amazon S3 a lavez. Para obtener más información acerca de herramientas de terceros compatibles con AmazonS3, realice una búsqueda web con la frase herramientas de terceros para AWS S3.

Para añadir un campo de encabezado Cache-Control o Expires a objetos de Amazon S3desde la consola de Amazon S3

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

2. En la consola de Amazon S3, en la lista de buckets, elija el nombre del bucket que contiene losarchivos.

3. En la lista de objetos, seleccione la casilla de verificación de uno o varios objetos a los que deseeagregar un encabezado.

4. Elija More y Change metadata.5. En la lista Key, elija Cache-Control o Expires, según corresponda.6. En el campo Value, escriba el valor aplicable:

• En un campo Cache-Control, escriba:

max-age=number of seconds that you want objects to stay in a CloudFrontedge cache

• En un campo Expires, escriba una fecha y hora en formato HTML.7. Seleccione Save.

Cómo CloudFront procesa las solicitudes parcialesde objetos (Range GET)

En el caso de solicitudes de objetos grandes, es posible que los clientes o navegadores de usuarios finalesrealicen varias solicitudes GET y utilicen el encabezado de solicitud Range para descargar el objeto enunidades más pequeñas. Estas solicitudes de rangos de bytes, a veces conocidas como solicitudes RangeGET, mejoran la eficacia de las descargas parciales y la recuperación de transferencias que hayan falladoparcialmente.

Versión de API 2016-09-29212

Amazon CloudFront Guía para desarrolladoresEspecificar un objeto raíz predeterminado

Cuando CloudFront recibe una solicitud Range GET, revisa la caché de la ubicación de borde que recibela solicitud. Si la caché de dicha ubicación de borde ya contiene todo el objeto o la parte solicitada,CloudFront envía inmediatamente el rango solicitado desde la caché.

Si la caché no contiene el rango solicitado, CloudFront reenvía la solicitud al origen. (Para optimizar eldesempeño, CloudFront puede solicitar un rango superior al solicitado en Range GET). Lo que ocurre acontinuación depende de si el origen admite solicitudes Range GET:

• Si el origen admite solicitudes Range GET: devuelve el rango solicitado. CloudFront ofrece el rangosolicitado y lo almacena en la caché para futuras solicitudes. (Amazon S3 admite solicitudes Range GETal igual que algunos servidores HTTP, por ejemplo, Apache y IIS. Para saber si su servidor HTTP admitedichas solicitudes, consulte su documentación).

• Si el origen no admite solicitudes Range GET: devuelve todo el objeto. CloudFront ofrece el objetoentero y lo almacena en la caché para futuras solicitudes. Después de que CloudFront almacena encaché todo el objeto en una caché perimetral, responde a las solicitudes Range GET enviando el rangosolicitado.

En cualquier caso, CloudFront comienza a enviar a el rango o el objeto solicitado al usuario final tan prontocomo el primer byte llega del origen.

Note

Si un espectador envía una solicitud Range GET y el origen devuelve Transfer-Encoding:chunked, CloudFront devuelve el objeto entero al espectador en lugar del rango solicitado.

Por lo general, CloudFront sigue la especificación RFC en el encabezado Range. Sin embargo, si susencabezados Range no cumplen con los siguientes requisitos, CloudFront devuelve el código de estadoHTTP 200 con el objeto entero en lugar de código de estado 206 con los rangos 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.35Range" en Hypertext Transfer Protocol -- HTTP/1.1, en http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.

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

Temas• Cómo especificar un objeto raíz predeterminado (p. 214)• Cómo funcionan los encabezados con objetos raíz predeterminados (p. 215)• Cómo funciona CloudFront si no se define un objeto raíz (p. 215)

Versión de API 2016-09-29213

Amazon CloudFront Guía para desarrolladoresCómo especificar un objeto raíz predeterminado

Cómo especificar un objeto raíz predeterminadoPara evitar exponer el contenido de la distribución web o devolver un error, especifique un objeto raízpredeterminado para la distribución llevando a cabo los pasos siguientes.

Especificar un objeto raíz predeterminado para su distribución

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

El archivo puede ser cualquier tipo admitido por CloudFront. Para obtener una lista de las limitacionesde los nombres de archivo, consulte la descripción del elemento DefaultRootObject enDistributionConfig Complex Type.

Note

Si el nombre de archivo del objeto raíz predeterminado es muy largo o contienecaracteres no válidos, CloudFront devuelve el error HTTP 400 Bad Request -InvalidDefaultRootObject. Además, CloudFront almacena en la caché el códigodurante cinco minutos y escribe los resultados en los registros de acceso.

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

Para obtener más información acerca de permisos de Amazon S3, consulte Access Control en la Guíapara desarrolladores de Amazon Simple Storage Service. Para obtener más información acerca decómo usar la consola de Amazon S3 para actualizar permisos, visite Amazon Simple Storage ServiceConsole User Guide.

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

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

a. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

b. En la lista de distribuciones que se encuentra en el panel superior, seleccione la distribución aactualizar.

c. En el panel Distribution Details, en la pestaña General, elija Edit.d. En el cuadro de diálogo Edit Distribution, en el campo Default Root Object, escriba el nombre de

archivo del objeto raíz predeterminado.

Escriba solo el objeto, por ejemplo, index.html. No añada / antes del nombre del objeto.e. Seleccione Yes, Edit para guardar los cambios.

Para actualizar la configuración mediante la API de CloudFront, debe especificar un valor en elelemento DefaultRootObject de su distribución. Para obtener más información acerca de cómoutilizar la API de CloudFront para especificar un objeto raíz predeterminado, consulte PUT DistributionConfig en la Amazon CloudFront API Reference.

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

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

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

Versión de API 2016-09-29214

Amazon CloudFront Guía para desarrolladoresCómo funcionan los encabezadoscon objetos raíz predeterminados

Cómo funcionan los encabezados con objetos raízpredeterminadosA continuación, se muestra un ejemplo de cómo funciona un objeto raíz predeterminado. Suponga que lasiguiente solicitud apunta al objeto image.jpg:

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 objetoespecí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 llamadaa la raíz de su distribución devolverá el objeto raíz predeterminado. Por ejemplo, si designa el archivoindex.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 realiceuna llamada a un subdirectorio de su distribución no devolverá el objeto raíz predeterminado. Supongamosque index.html es su objeto raíz predeterminado y que CloudFront recibe una solicitud de parte de unusuario final, del directorio install que se encuentra en su distribución de CloudFront:

http://d111111abcdef8.cloudfront.net/install/

CloudFront no devolverá el objeto raíz predeterminado incluso si hay una copia de index.html en eldirectorio install.

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

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

Important

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

Cómo funciona CloudFront si no se define un objetoraízSi no define un objeto raíz predeterminado, las solicitudes de la raíz de su distribución pasarán a suservidor de origen. Si utiliza un origen de Amazon S3, es posible que se devuelva cualquiera de lossiguientes elementos:

Versión de API 2016-09-29215

Amazon CloudFront Guía para desarrolladoresCó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 paraobtener acceso a su distribución podrá ver el contenido de su origen si se cumple cualquiera de estascondiciones:• 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 (solousted y CloudFront tienen acceso), cualquiera que tenga las credenciales para obtener acceso a ladistribución a través de CloudFront podrá ver el contenido del bucket de Amazon S3 asociado a sudistribución. En este caso, los usuarios no podrán obtener acceso a su contenido a través de la URLraíz del origen. Para obtener más información acerca de la distribución de contenido privado, consulteDistribución de contenido privado con URL firmadas y cookies firmadas (p. 126).

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

Versión de API 2016-09-29216

Amazon CloudFront Guía para desarrolladoresSolucionar problemas de distribuciones

Solución de problemasSolucione problemas comunes que podría encontrar al configurar Amazon CloudFront para distribuir sucontenido y encontrar posibles soluciones.

Important

Si es un cliente que intenta acceder a un sitio web o aplicación y ha obtenido un error deCloudFront, es probable que haya un tráfico inusualmente alto al sitio al que está intentandoacceder. Espere un poco y, a continuación, intente acceder al sitio (o ejecutar la aplicación) denuevo. Si sigue obteniendo un error, póngase en contacto directamente con el sitio web o con eldistribuidor de la aplicación para recibir soporte.¿Por qué procede este error de CloudFront? CloudFront contribuye a agilizar el envío delcontenido de sitios web, como imágenes o páginas web, a los clientes almacenando copias enservidores ubicados alrededor del mundo. Sin embargo, cuando hay mucho tráfico de Interneta un sitio web y el sitio no es capaz de gestionarlo, se devuelve un error cuando alguien intentaobtener acceso a dicho sitio. Cuando CloudFront no puede acceder al contenido que ha solicitadodesde un sitio web, transmite el error desde el sitio web o la aplicación que está intentandoutilizar.

Temas• Solucionar problemas de distribuciones (p. 217)• Solucionar respuestas de error del origen (p. 219)• Probar la carga de CloudFront (p. 228)

Solucionar problemas de distribucionesUtilice la información que se indica aquí para diagnosticar y solucionar los problemas de acceso denegadou otros problemas comunes que puedan surgir al configurar su sitio web o aplicación con distribuciones deAmazon CloudFront.

Important

Si es un cliente que intenta acceder a un sitio web o aplicación y ha obtenido un error deCloudFront, es probable que haya un tráfico inusualmente alto al sitio al que está intentandoacceder. Espere un poco y, a continuación, intente acceder al sitio (o ejecutar la aplicación) denuevo. Si sigue obteniendo un error, póngase en contacto directamente con el sitio web o con eldistribuidor de la aplicación para recibir soporte.¿Por qué procede este error de CloudFront? CloudFront contribuye a agilizar el envío delcontenido de sitios web, como imágenes o páginas web, a los clientes almacenando copias enservidores ubicados alrededor del mundo. Sin embargo, cuando hay mucho tráfico de Interneta un sitio web y el sitio no es capaz de gestionarlo, se devuelve un error cuando alguien intentaobtener acceso a dicho sitio. Cuando CloudFront no puede acceder al contenido que ha solicitadodesde un sitio web, transmite el error desde el sitio web o la aplicación que está intentandoutilizar.

No puedo ver los archivos de mi distribuciónSi no puede ver los archivos en la distribución de CloudFront, consulte los temas siguientes para encontrarsoluciones comunes.

Versión de API 2016-09-29217

Amazon CloudFront Guía para desarrolladoresNo puedo ver los archivos de mi distribución

¿Ha iniciado sesión en CloudFront y Amazon S3?Para utilizar Amazon CloudFront con un origen de Amazon S3, debe inscribirse tanto en CloudFront comoen Amazon S3 por separado. Para obtener más información acerca de la inscripción en CloudFront yAmazon S3, consulte Configuración de Amazon CloudFront (p. 13).

¿Están el bucket de Amazon S3 y los permisos de objetosestablecidos correctamente?Si utiliza CloudFront con un origen de Amazon S3, las versiones originales de su contenido se almacenanen un bucket de S3. La forma más sencilla de utilizar CloudFront con Amazon S3 es que todos sus objetospuedan leerse públicamente en Amazon S3. Para ello, debe habilitar de forma explícita privilegios públicosde lectura en cada objeto que cargue a Amazon S3.

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 acercade las identidades de acceso de origen de CloudFront, consulte Restricción del acceso a contenido deAmazon S3 utilizando una identidad de acceso de origen (p. 110).

Las propiedades del objeto y las del bucket son independientes. Debe otorgar privilegios de forma explícitaa cada uno de los objetos de Amazon S3. Los objetos no heredan las propiedades de los buckets y laspropiedades de los objetos deben establecerse de forma independiente del bucket.

¿Está su nombre de dominio alternativo (CNAME) configuradocorrectamente?Si ya tiene un registro de CNAME para su nombre de dominio, actualice dicho registro o sustitúyalo poruno nuevo que apunte al nombre de dominio de su distribución.

Asegúrese también de que su registro de CNAME apunte al nombre de dominio de su distribución y no asu bucket de Amazon S3. Puede comprobar si el registro CNAME de su sistema DNS apunta al nombrede dominio de su distribución. Para ello, utilice una herramienta de DNS como dig. Para obtener másinformación acerca de dig, consulte http://www.kloth.net/services/dig.php.

El siguiente ejemplo muestra una solicitud de dig de un nombre de dominio llamadoimages.example.com y la parte pertinente de la respuesta. En ANSWER SECTION, consulte la línea quecontiene CNAME. El registro de CNAME de su nombre de dominio estará configurado correctamente si elvalor a la derecha de CNAME es el nombre de dominio de su distribución de CloudFront. Si aparece subucket del servidor de origen de Amazon S3 o cualquier otro nombre de dominio, el registro de CNAMEestá configurado incorrectamente.

[prompt]> dig images.example.com ; <<> DiG 9.3.3rc2 <<> images.example.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917 ;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;images.example.com. IN A ;; ANSWER SECTION: images.example.com. 10800 IN CNAME d111111abcdef8.cloudfront.net. ... ...

Versión de API 2016-09-29218

Amazon CloudFront Guía para desarrolladoresNo puedo ver los archivos de mi distribución RTMP

Para obtener más información acerca de CNAME, consulte Uso de URL personalizadas para archivosañadiendo nombres de dominio alternativos (CNAME) (p. 60).

¿Está haciendo referencia a la URL correcta de la distribución deCloudFront?Asegúrese de que la URL a la que está haciendo referencia utilice el nombre de dominio (o CNAME) de ladistribución de CloudFront y no del bucket de Amazon S3 o de un origen personalizado.

¿Necesita ayuda para solucionar un problema con un origenpersonalizado?Si necesita que AWS le ayude a solucionar un problema con un origen personalizado, quizá necesitemosinspeccionar las entradas del encabezado X-Amz-Cf-Id de sus solicitudes. Si todavía no está registrandoestas entradas, le recomendamos que considere hacerlo. Para obtener más información, consulte UsarAmazon EC2 u otros orígenes personalizados (p. 57). Para obtener más ayuda, consulte el Centro de AWSSupport.

No puedo ver los archivos de mi distribución RTMPSi no puede ver los archivos en la distribución RTMP ¿están su URL y su cliente de reproducciónconfigurados correctamente? Las distribuciones RTMP requieren que utilice un protocolo RTMP en lugarde HTTP, y deberá realizar ciertos cambios de configuración menores en su cliente de reproducción. Paraobtener más información acerca de la creación de distribuciones RTMP, consulte Lista de tareas paratransmitir archivos multimedia mediante RTMP (p. 273).

Mensaje de error: Certificate: <certificate-id> is beingused by CloudFrontProblema: Está intentando eliminar un certificado SSL/TLS del almacén de certificados de IAM y recibe elmensaje "Certificate: <certificate-id> is being used by CloudFront."

Solución: cada distribución web de CloudFront debe asociarse al certificado de CloudFront predeterminadoo a un certificado SSL/TLS personalizado. Antes de eliminar un certificado SSL/TLS, deberá rotar elcertificado (sustituir el certificado SSL/TLS personalizado por otro certificado SSL/TLS personalizado) ovolver a usar el certificado de CloudFront predeterminado. Para ello, siga el procedimiento descrito en lasección correspondiente:

• Rotar certificados SSL/TLS (p. 107)• Volver de un certificado SSL/TLS personalizado al certificado de CloudFront predeterminado (p. 108)

Solucionar respuestas de error del origenSi CloudFront solicita un objeto desde su origen y el origen devuelve un código de estado HTTP 4xx o 5xx,hay un problema con la comunicación entre CloudFront y el origen. En la siguiente sección se describenlas causas más comunes de algunos de los códigos de estado HTTP y se ofrecen posibles soluciones.

Important

Si es un cliente que intenta acceder a un sitio web o aplicación y ha obtenido un error deCloudFront, es probable que haya un tráfico inusualmente alto al sitio al que está intentando

Versión de API 2016-09-29219

Amazon CloudFront Guía para desarrolladoresCódigo de estado HTTP 502 (Puerta de enlace incorrecta)

acceder. Espere un poco y, a continuación, intente acceder al sitio (o ejecutar la aplicación) denuevo. Si sigue obteniendo un error, póngase en contacto directamente con el sitio web o con eldistribuidor de la aplicación para recibir soporte.¿Por qué procede este error de CloudFront? CloudFront contribuye a agilizar el envío delcontenido de sitios web, como imágenes o páginas web, a los clientes almacenando copias enservidores ubicados alrededor del mundo. Sin embargo, cuando hay mucho tráfico de Interneta un sitio web y el sitio no es capaz de gestionarlo, se devuelve un error cuando alguien intentaobtener acceso a dicho sitio. Cuando CloudFront no puede acceder al contenido que ha solicitadodesde un sitio web, transmite el error desde el sitio web o la aplicación que está intentandoutilizar.

Temas• Código de estado HTTP 502 (Puerta de enlace incorrecta) (p. 220)• Código de estado HTTP 503 (Servicio no disponible) (p. 223)• Código de estado HTTP 504 (tiempo de espera de gateway agotado) (p. 224)

Código de estado HTTP 502 (Puerta de enlaceincorrecta)Un código de estado HTTP 502 (Puerta de enlace incorrecta) indica que CloudFront no ha podido ofrecerel objeto solicitado porque no pudo conectar con el servidor de origen.

Important

Si es un cliente que intenta acceder a un sitio web o aplicación y ha obtenido este error, esprobable que haya un tráfico inusualmente alto al sitio. Espere un poco y, a continuación, intenteacceder al sitio (o ejecutar la aplicación) de nuevo. Si sigue obteniendo un error, póngase encontacto directamente con el sitio web o con el distribuidor de la aplicación para recibir soporte.¿Por qué procede este error de CloudFront? CloudFront contribuye a agilizar el envío delcontenido de sitios web, como imágenes o páginas web, a los clientes almacenando copias enservidores ubicados alrededor del mundo. Sin embargo, cuando hay mucho tráfico de Interneta un sitio web y el sitio no es capaz de gestionarlo, se devuelve un error cuando alguien intentaobtener acceso a dicho sitio. Cuando CloudFront no puede acceder al contenido que ha solicitadodesde un sitio web, transmite el error desde el sitio web o la aplicación que está intentandoutilizar.

Temas• Error de negociación SSL/TLS entre CloudFront y un servidor de origen personalizado (p. 220)• El origen no responde con protocolos ni cifrados admitidos (p. 221)• 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. 222)• El origen no responde en puertos especificados en la configuración de origen (p. 222)

Error de negociación SSL/TLS entre CloudFront y un servidor deorigen personalizadoSi utiliza un origen personalizado y ha configurado CloudFront para que requiera HTTPS entre CloudFronty el origen, el problema puede ser que los nombres de dominio no coinciden. El certificado SSL/TLSinstalado en el origen incluye un nombre de dominio en el campo Common Name y posiblemente variosmás en el campo Subject Alternative Names (CloudFront admite caracteres comodín en nombres dedominio de certificados). Uno de los nombres de dominio del certificado debe coincidir con uno o ambos delos siguientes valores:

Versión de API 2016-09-29220

Amazon CloudFront Guía para desarrolladoresCódigo de estado HTTP 502 (Puerta de enlace incorrecta)

• El valor que especificó en Origin Domain Name 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, consulteAlmacenamiento en caché de contenido en función de encabezados de solicitud (p. 201).

Si los nombres de dominio no coinciden, el protocolo SSL/TLS devuelve un error y CloudFront devuelve uncódigo de estado HTTP 502 (Gateway incorrecto) y establece el encabezado X-Cache en Error fromcloudfront.

Para determinar si los nombres de dominio del certificado coinciden con Origin Domain Name en ladistribución o con el encabezado Host, utilice un comprobador SSL u OpenSSL. Si los nombres dedominio 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 deAWS Certificate Manager para solicitar un certificado nuevo.

• Cambie la configuración de la distribución para que CloudFront deje de intentar utilizar SSL paraconectarse al origen.

Comprobador de SSL online

Para encontrar una herramienta de comprobación de SSL, busque en Internet "comprobador ssl online".Por lo general, especifica el nombre de su dominio y la herramienta devuelve información acerca desu certificado SSL/TLS. Compruebe que el certificado contenga su nombre de dominio en los camposCommon Names o Subject Alternative Names.

OpenSSL

Para determinar si CloudFront puede establecer una conexión con el origen, utilice OpenSSL paraintentar realizar una conexión SSL/TLS al origen y verificar que el certificado de origen esté configuradocorrectamente. Si OpenSSL puede realizar la conexión, devuelve información acerca de el certificado en elservidor de origen.

El comando que utilice depende de si utiliza un cliente que admita Indicación de nombre de servidor (SNI).

El cliente admite SNI

openssl s_client –connect domainname:443 –servername domainname

El cliente no admite SNI

openssl s_client –connect domainname:443

Sustituya domainname por el valor aplicable:

• Si no está reenviando el encabezado Host al origen: sustituya domainname por el nombre de dominiodel origen.

• Si está enviando el encabezado de host al origen: sustituya domainname por el CNAME que estáutilizando en la distribución de CloudFront.

El origen no responde con protocolos ni cifrados admitidosCloudFront se conecta con servidores de origen a través de cifrados y protocolos. Para obtener una listade los cifrados y protocolos que CloudFront admite, consulte Supported Ciphers and Protocols (p. 92).

Versión de API 2016-09-29221

Amazon CloudFront Guía para desarrolladoresCódigo de estado HTTP 502 (Puerta de enlace incorrecta)

Si el origen no responde con uno de estos códigos cifrados o protocolos en el intercambio SSL/TLS,CloudFront no puede conectarse. Use SSL Labs para comprobar si el origen es compatible con los cifradosy protocolos:

• SSL Labs

Escriba el nombre de dominio del origen en el campo Hostname y, a continuación, seleccione Submit.Revise los campos Common names y Alternative names de la prueba para ver si coinciden con elnombre de dominio del origen.

Una vez finalizada la prueba, busque las secciones Protocols y Cipher Suites del resultado de laspruebas para saber qué protocolos o cifrados admite el origen. Compárelos con la lista que aparece enSupported Ciphers and Protocols (p. 92).

Note

Si utiliza Elastic Load Balancing, consulte las políticas de seguridad SSL para Elastic LoadBalancing en la Guía del usuario de Elastic Load Balancing para obtener información acercade cómo configurar los cifrados y protocolos. Usar la política de seguridad predefinidaELBSecurityPolicy-2016-08 le ofrece a CloudFront acceso a su Elastic Load Balancer. Si desearestringirlo aún más mediante una política personalizada, debe permitir los cifrados admitidos porCloudFront.

El certificado SSL/TLS del origen ha caducado, no es válido, esautofirmado o el orden de la cadena de certificados es incorrectoSi el servidor de origen devuelve lo siguiente, CloudFront interrumpe la conexión TCP, devuelve el códigode estado HTTP 502 (Puerta de enlace incorrecta) y establece el encabezado X-Cache a Error fromcloudfront:

• Un certificado caducado• Un certificado no válido• Un certificado autofirmado• Orden incorrecto en una cadena de certificados

Note

Si toda la cadena de certificados, incluidos los certificados intermedios, no está presente,CloudFront interrumpe la conexión TCP.

Para obtener más información acerca de cómo instalar un certificado SSL/TLS en su servidor de origenpersonalizado, consulte Requiring HTTPS for Communication Between CloudFront and Your CustomOrigin (p. 87).

El origen no responde en puertos especificados en laconfiguración de origenAl crear un origen en la distribución de CloudFront, puede definir los puertos que CloudFront conecta conel origen para el tráfico HTTP y HTTPS. De forma predeterminada, estos son 80/443 TCP. Puede modificarestos puertos. Si el origen rechaza el tráfico en estos puertos por cualquier motivo, o si el servidor debackend no está respondiendo en los puertos, CloudFront no se conectará.

Para solucionar estos problemas, revise los firewalls de su infraestructura y compruebe que no esténbloqueando los rangos de IP admitidos. Para obtener más información, consulte Rangos de direcciones

Versión de API 2016-09-29222

Amazon CloudFront Guía para desarrolladoresCódigo de estado HTTP 503 (Servicio no disponible)

IP de AWS en la Referencia general de Amazon Web Services. Compruebe también si su servidor web seejecuta en el origen.

Código de estado HTTP 503 (Servicio no disponible)El código de estado HTTP 503 (Servicio no disponible) suele indicar un problema de desempeño en elservidor de origen. En casos excepcionales, indica que CloudFront no puede satisfacer temporalmente unasolicitud debido a recursos limitados en una ubicación de borde.

Important

Si es un cliente que intenta acceder a un sitio web o aplicación y ha obtenido este error, esprobable que haya un tráfico inusualmente alto al sitio. Espere un poco y, a continuación, intenteacceder al sitio (o ejecutar la aplicación) de nuevo. Si sigue obteniendo un error, póngase encontacto directamente con el sitio web o con el distribuidor de la aplicación para recibir soporte.¿Por qué procede este error de CloudFront? CloudFront contribuye a agilizar el envío delcontenido de sitios web, como imágenes o páginas web, a los clientes almacenando copias enservidores ubicados alrededor del mundo. Sin embargo, cuando hay mucho tráfico de Interneta un sitio web y el sitio no es capaz de gestionarlo, se devuelve un error cuando alguien intentaobtener acceso a dicho sitio. Cuando CloudFront no puede acceder al contenido que ha solicitadodesde un sitio web, transmite el error desde el sitio web o la aplicación que está intentandoutilizar.

Temas• El servidor de origen no tiene capacidad suficiente para soportar la tasa de solicitudes (p. 223)• CloudFront no puede resolver el dominio de origen debido a problemas de DNS (p. 223)• CloudFront ha causado el error debido a recursos limitados en la ubicación de borde (p. 224)• La función de Lambda asociada a la distribución no es válida (p. 224)

El servidor de origen no tiene capacidad suficiente para soportarla tasa de solicitudesCloudFront genera este error cuando el servidor de origen está sobrecargado de solicitudes entrantes. Enese caso, CloudFront devuelve el error al usuario. Para resolver este problema, pruebe lo siguiente:

• Si utiliza Amazon S3 como servidor de origen, optimice el desempeño de Amazon S3 siguiendo lasprácticas recomendadas para nombrar claves. Para obtener más información, visite Request Rate andPerformance Considerations en la Guía para desarrolladores de Amazon Simple Storage Service.

• Si utiliza Elastic Load Balancing como servidor de origen, consulte 503 Error Classic.• Si utiliza un origen personalizado, revise los registros la aplicación para garantizar que su origen

cuenta con suficientes recursos, como memoria, CPU y tamaño de disco. Si utiliza Amazon EC2 comobackend, asegúrese de que el tipo de instancia cuente con los recursos apropiados para responderadecuadamente a las solicitudes entrantes. Para obtener más información, consulte Instance Types enla Guía del usuario de Amazon EC2 para instancias de Linux.

CloudFront no puede resolver el dominio de origen debido aproblemas de DNSCuando CloudFront recibe una solicitud de un objeto que ha caducado o que no está almacenado en sucaché, realiza una solicitud al origen para obtener el objeto actualizado. Para que la solicitud al origen secumpla correctamente, CloudFront realiza una resolución de DNS en el nombre de dominio del origen. Sinembargo, cuando el servicio DNS que aloja su dominio tiene problemas, CloudFront no puede resolver el

Versión de API 2016-09-29223

Amazon CloudFront Guía para desarrolladoresCódigo de estado HTTP 504 (tiempo

de espera de gateway agotado)

nombre de dominio para obtener la dirección IP, lo que se traduce en un error 503. Para solucionar esteproblema, póngase en contacto con su proveedor de DNS, o, si utiliza Amazon Route 53, consulte AmazonRoute 53 DNS.

Para solucionar este problema, asegúrese de que los servidores de nombres autoritarios del dominio raízo ápex de zona (como example.com) del origen funcionan correctamente. Los servidores de nombresautoritarios reciben a continuación la solicitud y devuelven la dirección IP asociada al dominio, y son lasmismas de los servidores de DNS que utilizó para configurar la distribución de CloudFront. Utilice lossiguientes comandos para encontrar los servidores de nombres de su origen de ápex:

dig OriginAPEXDomainName NS +short nslookup –query=NS OriginAPEXDomainName

Una vez tenga los nombres de los servidores de nombres, utilice los siguientes comandos para consultar elnombre de dominio del origen ante ellos para asegurarse de que cada uno de ellos genera una respuesta:

dig OriginDomainName @NameServerFromAbovenslookup OriginDomainName NameServerFromAbove

CloudFront ha causado el error debido a recursos limitados en laubicación de bordeRecibirá este error en la improbable situación de que CloudFront no pueda dirigir las solicitudes hacia lasiguiente mejor ubicación de borde disponible y, por tanto, no pueda satisfacer una solicitud. Este es unerror común al realizar pruebas de carga en la distribución de CloudFront. Para ayudar a evitarlo, siga lasinstrucciones de Probar la carga de CloudFront (p. 228) para evitar errores 503 (Capacidad superada).

Si esto ocurre en su entorno de producción, póngase en contacto con AWS Support.

La función de Lambda asociada a la distribución no es válidaCloudFront devuelve este error cuando una función de Lambda@Edge configurada en un comportamientode la caché para una distribución devuelve un error durante el tiempo de ejecución y finaliza antes de quese atienda la solicitud de CloudFront.

Para solucionar este problema, examine los logs de ejecución de la función de Lambda. Asegúrese deconsultar los archivos log en la región donde se ejecuta la función. Para obtener más información, consulteMétricas de CloudWatch y CloudWatch Logs para funciones de Lambda (p. 308).

Código de estado HTTP 504 (tiempo de espera degateway agotado)Un código de estado HTTP 504 (Tiempo de espera de gateway superado) indica que cuando CloudFrontreenvía una solicitud al origen (porque el objeto solicitado no estaba en la caché perimetral), ha ocurridouna de las siguientes posibilidades:

• El origen ha devuelto un código de estado HTTP 504 a CloudFront.• El origen no respondió antes de que la solicitud caducara.

Important

Si es un cliente que intenta acceder a un sitio web o aplicación y ha obtenido este error, esprobable que haya un tráfico inusualmente alto al sitio. Espere un poco y, a continuación, intente

Versión de API 2016-09-29224

Amazon CloudFront Guía para desarrolladoresCódigo de estado HTTP 504 (tiempo

de espera de gateway agotado)

acceder al sitio (o ejecutar la aplicación) de nuevo. Si sigue obteniendo un error, póngase encontacto directamente con el sitio web o con el distribuidor de la aplicación para recibir soporte.¿Por qué procede este error de CloudFront? CloudFront contribuye a agilizar el envío delcontenido de sitios web, como imágenes o páginas web, a los clientes almacenando copias enservidores ubicados alrededor del mundo. Sin embargo, cuando hay mucho tráfico de Interneta un sitio web y el sitio no es capaz de gestionarlo, se devuelve un error cuando alguien intentaobtener acceso a dicho sitio. Cuando CloudFront no puede acceder al contenido que ha solicitadodesde un sitio web, transmite el error desde el sitio web o la aplicación que está intentandoutilizar.

Un origen devolverá un código de estado HTTP 504 si se bloquea el tráfico de CloudFront al origenmediante un firewall o grupo de seguridad o si el origen no es accesible en Internet. Compruebe en primerlugar si ocurren estos problemas. A continuación, si el acceso no es el problema, explore los retrasos de laaplicació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. 225)• Configurar los grupos de seguridad en su servidor de origen para permitir el tráfico de

CloudFront (p. 225)• Hacer que su servidor de origen personalizado sea accessible en Internet (p. 226)• Buscar y corregir respuestas con retado desde aplicaciones en su servidor de origen (p. 226)

Configurar el firewall en su servidor de origen para permitir eltráfico de CloudFrontSi el firewall en su servidor de origen bloquea el tráfico de CloudFront, CloudFront devuelve un código deestado HTTP 504, por lo que es bueno asegurarse de que no es el problema antes de comprobar otrosproblemas.

El método que se utiliza para determinar si se trata de un problema con su firewall depende del sistemaque utiliza su servidor de origen:

• Si utiliza un firewall IPTable en un servidor Linux, puede buscar herramientas e información paraayudarle a trabajar con IPTables.

• Si utiliza Windows Firewall en un servidor de Windows, consulte Agregar o editar regla de firewall enMicrosoft Technet.

Al evaluar la configuración de firewall en su servidor de origen, busque las reglas de firewalls o deseguridad que bloquean el tráfico desde ubicaciones de borde de CloudFront, en función del rango dedirecciones IP publicado.

Si el rango de direcciones IP de CloudFront está incluido en la lista blanca en su servidor de origen,asegúrese de actualizar las reglas de seguridad de su servidor para incorporar los cambios. Puedesuscribirse a un tema de Amazon Simple Notification Service (SNS) y recibir notificaciones cuando seactualiza el archivo del rango de direcciones IP. Después de recibir la notificación, puede utilizar códigopara recuperar el archivo, analizarlo y realizar ajustes para su entorno local. Para obtener más información,consulte Subscribe to AWS Public IP Address Changes via Amazon SNS.

Configurar los grupos de seguridad en su servidor de origen parapermitir el tráfico de CloudFrontSi su origen usa Elastic Load Balancing, revise los grupos de seguridad de ELB y asegúrese de que losgrupos de seguridad permiten el tráfico de entrada desde CloudFront.

Versión de API 2016-09-29225

Amazon CloudFront Guía para desarrolladoresCódigo de estado HTTP 504 (tiempo

de espera de gateway agotado)

También puede utilizar AWS Lambda para actualizar de manera automática sus grupos de seguridad parapermitir el tráfico entrante desde CloudFront.

Hacer que su servidor de origen personalizado sea accessible enInternetSi CloudFront no puede obtener acceso a su servidor de origen personalizado porque no está disponiblepúblicamente en Internet, CloudFront devuelve un error HTTP 504.

Las ubicaciones de borde de CloudFront conectan a servidores de origen a través de Internet. Si su origenpersonalizado se encuentra en una red privada, CloudFront no puede tener acceso a ella. Por este motivo,no puede utilizar servidores privados, incluidos Classic Load Balancers internos, como servidores deorigen con CloudFront.

Para comprobar que el tráfico de Internet puede conectarse a su servidor de origen, ejecute los siguientescomandos (donde NombreDominioOrigen es el nombre de dominio de su servidor):

Para tráfico HTTPS:

• nc -zv NombreDominioOrigen 443• telnet NombreDominioOrigen 443

Para el tráfico HTTP:

• nc -zv NombreDominioOrigen 80• telnet NombreDominioOrigen 80

Buscar y corregir respuestas con retado desde aplicaciones ensu servidor de origenLos tiempos de espera superados del servidor suelen deberse a que la aplicación tarda mucho enresponder o a que se ha establecido un valor de tiempo de espera demasiado bajo.

Una solución rápida que ayuda a evitar errores HTTP 504 consiste sencillamente en establecer un valor detiempo de espera de CloudFront mayor para su distribución. Sin embargo, le recomendamos que primerose 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 HTTP504 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 dedesempeño y corregirlos:

1. Mida la latencia típica y de carga elevada (capacidad de respuesta) de su aplicación web.2. Añada recursos adicionales, como CPU o memoria, si es necesario. Tome otras medidas para corregir

problemas como, por ejemplo, ajuste de consultas de base de datos para dar cabida a supuestos decarga elevada.

3. Si es necesario, ajuste el valor de tiempo de espera de su distribución web de CloudFront.

A continuación se muestran los detalles de cada paso.

Medir la latencia típica y de carga elevadaPara determinar si uno o más servidores de aplicación web de backend experimentan una alta latencia,ejecute el siguiente comando curl de Linux en cada servidor:

Versión de API 2016-09-29226

Amazon CloudFront Guía para desarrolladoresCódigo de estado HTTP 504 (tiempo

de espera de gateway agotado)

curl -w "Connect time: %{time_connect} Time to first byte:%{time_starttransfer} Total time: %{time_total} \n" -o /dev/null https://www.example.com/yourobject

Note

Si ejecuta Windows en sus servidores, puede buscar y descargar curl para Windows para ejecutarun comando similar.

A medida que mide y evalúa la latencia de una aplicación que se ejecuta en su servidor, tenga en cuenta losiguiente:

• Los valores de latencia son relativos a cada aplicación. Sin embargo, un valor de Tiempo hasta el primerbyte 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 espectadorespodrían seguir sufriendo tiempos de espera con cargas elevadas. Cuando hay una demanda alta, esposible que los servidores tengan respuestas con retraso o que no respondan. Para ayudarle a evitarproblemas 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 deescalar una carga elevada.

Puede ejecutar los siguientes comandos de Linux para comprobar la memoria que utilizan los procesosde Apache:

watch -n 1 "echo -n 'Apache Processes: ' && ps -C apache2 --no-headers | wc -l && free -m"

• Una utilización de CPU alta en el servidor puede reducir notablemente el desempeño de una aplicación.Si utiliza una instancia Amazon EC2 para su servidor de backend, revise las métricas de CloudWatch delservidor para comprobar la utilización de la CPU. Para obtener más información, consulte la Guía delusuario de Amazon CloudWatch. O bien, si está utilizando su propio servidor, consulte la documentaciónde ayuda del servidor para obtener instrucciones sobre cómo comprobar el uso de la CPU.

• Compruebe si hay otros posibles problemas con cargas elevadas, como, por ejemplo, consultas de basede datos que se ejecutan lentamente cuando hay un gran volumen de solicitudes.

Agregar recursos y ajustar servidores y bases de datos

Después de evaluar la capacidad de respuesta de las aplicaciones y servidores, asegúrese de que disponede recursos suficientes para las situaciones de tráfico normal y de carga elevada:

• Si tiene su propio servidor, asegúrese de tener suficiente CPU, memoria y espacio en disco paragestionar las solicitudes de los espectadores, en función de su evaluación.

• Si utiliza una instancia Amazon EC2 como servidor de backend, asegúrese de que el tipo de instanciacuente con los recursos apropiados para responder adecuadamente a las solicitudes entrantes. Paraobtener 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 paramejorar el desempeño de su aplicación. Mejorar la capacidad de respuesta de la aplicación a su vezreduce los errores de tiempo de espera.

• Ajuste las consultas de la base de datos para asegurarse de que puedan administrar volúmenes desolicitudes elevados sin un desempeño lento.

• Configure conexiones keep-alive (persistente) en su servidor de backend. Esta opción ayuda a evitarlas latencias que se producen cuando las conexiones deben volver a establecerse para las solicitudes ousuarios posteriores.

Versión de API 2016-09-29227

Amazon CloudFront Guía para desarrolladoresProbar la carga de CloudFront

• Si utiliza ELB como origen, aprenda cómo puede reducir la latencia revisando las sugerencias en elsiguiente artículo del Knowledge Center: How to troubleshoot ELB high latency.

Si es necesario, ajuste el valor de tiempo de espera de CloudFront

Si ha evaluado y solucionado el desempeño de aplicaciones lento, la capacidad del servidor de origeny otros problemas, pero los espectadores siguen experimentando errores HTTP 504, entonces deberíaplantearse cambiar el tiempo especificado en su distribución web para tiempo de espera de respuesta deorigen. Para obtener más información, consulte Tiempo de espera de respuesta de origen.

Probar la carga de CloudFrontLos métodos de prueba de carga tradicionales no funcionan bien con CloudFront porque CloudFrontutiliza DNS para balancear cargas en las ubicaciones de borde geográficamente dispersas y dentro decada ubicación de borde. Cuando un cliente solicita contenido desde CloudFront, el cliente recibe unarespuesta de DNS que incluye un conjunto de direcciones IP. Si prueba enviar solicitudes a tan solo unade las direcciones IP que DNS devuelve, estará probando solo un pequeño subconjunto de los recursosde una ubicación de borde de CloudFront, lo que no representa de forma precisa los patrones de tráficoreales. En función del volumen de datos solicitados, este método de prueba puede sobrecargar y degradarel desempeño de ese pequeño subconjunto de servidores de CloudFront.

CloudFront está diseñado para escalar en función de los espectadores que tienen diferentes direcciones IPde cliente y diferentes resoluciones de DNS en varias regiones geográficas. Para realizar pruebas de cargaque evalúen el desempeño de CloudFront con precisión, le recomendamos hacer todo lo siguiente:

• Envíe solicitudes de clientes desde varias regiones geográficas.• Configure su prueba para que cada cliente realice una solicitud de DNS independiente; así, cada cliente

recibirá un conjunto de direcciones IP distinto de DNS.• Por cada cliente que se realice solicitudes, distribuya las solicitudes de clientes en todo el conjunto de

direcciones IP devueltas por DNS, lo que garantiza que la carga se distribuye en varios servidores enuna ubicación de borde de CloudFront.

Versión de API 2016-09-29228

Amazon CloudFront Guía para desarrolladoresComportamiento de solicitudes y

respuestas para orígenes de Amazon S3

Comportamiento de solicitudes yrespuestas

En las secciones siguientes se explica cómo CloudFront procesa solicitudes de espectadores y reenvíasolicitudes al origen de Amazon S3 o personalizado, y cómo procesa respuestas desde su origen, ademásde cómo procesa y almacena en caché códigos de estado HTTP 4xx y 5xx.

Temas• Comportamiento de solicitudes y respuestas para orígenes de Amazon S3 (p. 229)• Comportamiento de solicitudes y respuestas para orígenes personalizados (p. 236)• Reenviar encabezados personalizados al origen (solo para distribuciones web) (p. 249)• Cómo CloudFront procesa los códigos de estado HTTP 3xx desde el origen (p. 251)• Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xx desde el

origen (p. 251)

Comportamiento de solicitudes y respuestas paraorígenes de Amazon S3

Temas• Cómo CloudFront procesa solicitudes HTTP y HTTPS (p. 229)• Cómo CloudFront procesa y reenvía solicitudes a su servidor de origen de Amazon S3 (p. 230)• Cómo CloudFront procesa las respuestas desde el servidor de origen de Amazon S3 (p. 234)

Cómo CloudFront procesa solicitudes HTTP y HTTPSPara orígenes de Amazon S3, CloudFront acepta de forma predeterminada solicitudes en protocolos HTTPy HTTPS de objetos en distribuciones de CloudFront. A continuación, CloudFront reenvía las solicitudes albucket de Amazon S3 utilizando el mismo protocolo en el que se hicieron las solicitudes.

En el caso de orígenes personalizados, al crear su distribución, puede especificar cómo CloudFrontobtiene acceso a su origen: solo HTTP o con el mismo protocolo utilizado por el espectador. Paraobtener más información acerca de cómo CloudFront gestiona solicitudes HTTP y HTTPS para orígenespersonalizados, consulte Protocolos (p. 244).

Para obtener información acerca de cómo restringir la distribución web para que los usuarios finales solopuedan obtener acceso a los objetos a través de HTTPS, consulte Usar HTTPS con CloudFront (p. 85).(Esta opción no es aplicable a distribuciones RTMP, que utilizan el protocolo RTMP).

Note

El cargo por solicitudes HTTPS es superior al de solicitudes HTTP. Para obtener más informaciónacerca de tarifas de facturación, consulte el plan de precios de CloudFront.

Versión de API 2016-09-29229

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen de Amazon S3

Cómo CloudFront procesa y reenvía solicitudes a suservidor de origen de Amazon S3Este tema contiene información acerca de cómo CloudFront procesa solicitudes de espectadores y lasreenvía a su origen de Amazon S3.

Temas• Duración de almacenamiento en caché y TTL mínimo (p. 230)• Direcciones IP de clientes (p. 230)• GET condicionales (p. 231)• Cookies (p. 231)• Cross-Origin Resource Sharing (CORS, Uso compartido de recursos entre orígenes) (p. 231)• Solicitudes GET que incluyen un cuerpo (p. 231)• Métodos HTTP (p. 231)• Encabezados de solicitudes HTTP que CloudFront elimina o actualiza (p. 232)• Longitud máxima de una solicitud y de una URL (p. 232)• Asociación de OCSP (p. 232)• Protocolos (p. 233)• Cadenas de consulta (p. 233)• Tiempo de espera de respuesta del origen (p. 233)• Solicitudes simultáneas del mismo objeto (picos de tráfico) (p. 234)

Duración de almacenamiento en caché y TTL mínimoEn el caso de distribuciones web, para controlar durante cuánto tiempo mantener los objetos en una cachéde CloudFront antes de que CloudFront reenvíe otra solicitud al origen, puede:

• Configure su origen para añadir un Cache-Control o un encabezado Expires para cada objeto.• Especifique 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 unacaché perimetral (Vencimiento) (p. 206).

Direcciones IP de clientesSi un espectador envía una solicitud a CloudFront y no incluye un encabezado de solicitud X-Forwarded-For, CloudFront obtiene la dirección IP del espectador de la conexión TCP, añade un encabezado X-Forwarded-For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, si CloudFrontobtiene 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

Si un espectador envía una solicitud a CloudFront e incluye un encabezado de solicitud X-Forwarded-For, CloudFront obtiene la dirección IP del espectador de la conexión TCP, la añade al final delencabezado X-Forwarded-For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, sila solicitud del espectador incluye X-Forwarded-For: 192.0.2.4,192.0.2.3 y CloudFront obtiene ladirección IP 192.0.2.2 de la conexión TCP, reenvía el siguiente encabezado al origen:

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

Versión de API 2016-09-29230

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen de Amazon S3

Note

El encabezado X-Forwarded-For contiene direcciones IPv4 (como 192.0.2.44) e IPv6 (como2001:0db8:85a3:0000:0000:8a2e:0370:7334) según corresponda.

GET condicionalesCuando CloudFront recibe una solicitud de un objeto que ha caducado en una caché perimetral, reenvía lasolicitud al origen de Amazon S3 para obtener la última versión del objeto o para obtener la confirmaciónde Amazon S3 de que la caché perimetral de CloudFront ya dispone de la última versión. Cuando AmazonS3 envió el objeto originalmente a CloudFront, incluyó un valor ETag y un valor LastModified en larespuesta. En la nueva solicitud que CloudFront reenvía a Amazon S3, añade uno de los dos elementos acontinuación, o incluso ambos:

• Un encabezado If-Match o If-None-Match que contenga el valor ETag para la versión caducada delobjeto.

• Un encabezado If-Modified-Since que contenga el valor LastModified para la versión caducadadel objeto.

Amazon S3 utiliza esta información para determinar si el objeto se ha actualizado y, en consecuencia, sidevolver todo el objeto a CloudFront o devolver solo un código de estado HTTP 304 (no modificado).

CookiesAmazon S3 no procesa cookies. Si configura un comportamiento de la caché para reenviar las cookies aun origen de Amazon S3, CloudFront le reenvía las cookies, pero Amazon S3 las pasa por alto. Todas lassolicitudes futuras del mismo objeto, independientemente si varía la cookie, se atienden desde el objetoexistente en la caché.

Cross-Origin Resource Sharing (CORS, Uso compartido derecursos entre orígenes)Si desea que CloudFront respete la configuración de uso compartido de recursos entre orígenes deAmazon S3, configure CloudFront para que reenvíe encabezados seleccionados a Amazon S3. Paraobtener más información, consulte Almacenamiento en caché de contenido en función de encabezados desolicitud (p. 201).

Solicitudes GET que incluyen un cuerpoSi una solicitud del espectador GET incluye un cuerpo, CloudFront devuelve un código de estado HTTP403 (Prohibido) al espectador.

Métodos HTTPSi configura CloudFront para procesar todos los métodos de HTTP que admite, CloudFront acepta lassiguientes solicitudes de los espectadores y los reenvía al origen de Amazon S3:

• DELETE

• GET

• HEAD

• OPTIONS

• PATCH

• POST

• PUT

Versión de API 2016-09-29231

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen de Amazon S3

CloudFront siempre almacena en caché las respuestas a las solicitudes GET y HEAD. También puedeconfigurar CloudFront para almacenar en caché respuestas a solicitudes OPTIONS. CloudFront noalmacena en caché las respuestas a las solicitudes que utilizan los demás métodos.

Si utiliza un bucket de Amazon S3 como origen de la distribución y, además, usa identidades de accesode origen de CloudFront, las solicitudes POST no serán compatibles con algunas regiones de AmazonS3 y las solicitudes PUT en esas regiones necesitarán un encabezado adicional. Para obtener másinformación, consulte Usar una identidad de acceso de origen en regiones de Amazon S3 que soloadmiten autenticación mediante Signature Version 4 (p. 115).

Si desea utilizar cargas multipartes para añadir objetos a un bucket de Amazon S3, debe añadir unaidentidad de acceso de origen de CloudFront a su distribución y conceder los permisos aplicables a laidentidad de acceso de origen. Para obtener más información, consulte Restricción del acceso a contenidode Amazon S3 utilizando una identidad de acceso de origen (p. 110).

Important

Si configura CloudFront para aceptar y reenviar a Amazon S3 todos los métodos de HTTP queadmite CloudFront, debe crear una identidad de acceso de origen de CloudFront para restringirel acceso a su contenido de Amazon S3 y conceder los permisos correspondientes a la identidadde acceso de origen. Por ejemplo, si configura CloudFront para aceptar y reenviar estos métodosporque desea utilizar PUT, debe configurar también políticas de bucket de Amazon S3 o ACLpara gestionar solicitudes DELETE adecuadamente, y que los espectadores no puedan eliminarlos recursos que no desee que eliminen. Para obtener más información, consulte Restricción delacceso a contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 110).

Para obtener más información acerca de las operaciones admitidas por Amazon S3, consulte ladocumentación de Amazon S3.

Encabezados de solicitudes HTTP que CloudFront elimina oactualizaCloudFront elimina o actualiza algunos encabezado antes de reenviar solicitudes a su origen de AmazonS3. Para la mayoría de encabezados este comportamiento es el mismo que para orígenes personalizados.Para obtener una lista completa de encabezados de solicitudes HTTP y cómo los procesa CloudFront,consulte Encabezados de solicitudes HTTP y comportamiento CloudFront (personalizado y orígenes deS3) (p. 239).

Longitud máxima de una solicitud y de una URLLa longitud máxima de una solicitud, incluida la ruta, la cadena de consulta (si procede) y los encabezados,es 20 480 bytes.

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 límites, CloudFront devuelve el código de estado HTTP 413 (loscampos de encabezado de solicitud son muy grandes para el espectador) y, a continuación, interrumpe laconexión TCP con el espectador.

Asociación de OCSPCuando un espectador envía una solicitud de un objeto HTTPS, CloudFront o el espectador debenconfirmar con la autoridad de certificados (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 certificadoy almacenar en caché la respuesta de la CA, por lo que el cliente no tiene por qué validar el certificadodirectamente con la CA.

La mejora en el desempeño de la asociación de OCSP es más notoria cuando CloudFront recibe una grancantidad de solicitudes de HTTPS de objetos en el mismo dominio. Cada servidor en una ubicación de

Versión de API 2016-09-29232

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen de Amazon S3

borde de CloudFront debe enviar una solicitud de validación independiente. Cuando CloudFront recibe unagran cantidad de solicitudes HTTPS para el mismo dominio, cada servidor de la ubicación de borde obtienepronto una respuesta de la CA que puede asociar a un paquete en el protocolo de enlace de SSL; cuandoel espectador considera que el certificado es válido, CloudFront puede ofrecer el objeto solicitado. Si ladistribución no recibe mucho tráfico en una ubicación de borde de CloudFront, es más probable que lasnuevas solicitudes se dirijan a un servidor que todavía no haya validado el certificado con la CA. En esecaso, el espectador 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 vezque recibe una solicitud que incluye el mismo nombre de dominio, cuenta con una respuesta de validaciónde la CA.

ProtocolosCloudFront reenvía las solicitudes de HTTP o HTTPS al servidor de origen en función del protocolo de lasolicitud del espectador, ya sea HTTP o HTTPS.

Important

Si su bucket de Amazon S3 se configura como un punto de enlace de sitio web, no puedeconfigurar CloudFront para usar HTTPS para comunicarse con su origen porque Amazon S3 noadmite conexiones HTTPS en dicha configuración.

Cadenas de consultaEn el caso de distribuciones web, puede configurar si CloudFront reenvía parámetros de cadenasde consulta a su origen de Amazon S3. En el caso de distribuciones RTMP, CloudFront no reenvíaparámetros de cadenas de consulta. Para obtener más información, consulte Almacenar en cachécontenido en función de parámetros de cadenas de consulta (p. 196).

Tiempo de espera de respuesta del origenEl tiempo de espera del respuesta de origen, también conocido como tiempo de espera de lectura delorigen y tiempo de espera de solicitud al origen, se aplica a los dos siguientes valores:

• El periodo de tiempo, en segundos, que CloudFront espera una respuesta después de enviar unasolicitud a Amazon S3

• El periodo de tiempo, en segundos, que CloudFront espera después de recibir un paquete de unarespuesta de S3 y antes de recibir el paquete siguiente.

El comportamiento de CloudFront depende del método HTTP:

• Solicitudes GET y HEAD: si Amazon S3 no responde en un plazo de 30 segundos o deja de responderdurante 30 segundos, CloudFront interrumpe la conexión e intenta ponerse en contacto con el origendos veces más. Si el origen no responde al tercer intento, CloudFront no vuelve a intentarlo hasta que sereciba otra solicitud de contenido en el mismo origen de CloudFront.

• Solicitudes DELETE, OPTIONS, PATCH, PUT y POST: si Amazon S3 no responde en 30 segundos,CloudFront interrumpe la conexión y no vuelve a intentar ponerse en contacto con el origen. El clientepuede volver a enviar la solicitud en caso de que sea necesario.

En todas las solicitudes, CloudFront intenta establecer una conexión con S3. Si la conexión falla en 10segundos, CloudFront disminuye la conexión e intenta ponerse en contacto con S3 dos veces más. Siel origen no responde al tercer intento, CloudFront no vuelve a intentarlo hasta que se reciba una nuevasolicitud de contenido en el mismo origen.

El tiempo de espera de respuesta de S3 no puede modificarse.

Versión de API 2016-09-29233

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa las respuestasdesde el servidor de origen de Amazon S3

Solicitudes simultáneas del mismo objeto (picos de tráfico)Cuando una ubicación de borde de CloudFront recibe una solicitud de un objeto y este no se encuentra enese momento en la caché o el objeto ha caducado, CloudFront envía inmediatamente la solicitud al origende Amazon S3. Si hay un pico de tráfico, es decir, si las solicitudes adicionales del mismo objeto llegan a laubicación de borde antes de que Amazon S3 responda a la primera solicitud, CloudFront se pone en pausabrevemente antes de reenviar para el objeto a su origen. La respuesta a la primera solicitud suele llegara la ubicación de borde de CloudFront antes que la respuesta a las solicitudes posteriores. Esta brevepausa ayuda a reducir la carga innecesaria en Amazon S3. Si las solicitudes adicionales no son idénticas,porque, por ejemplo, ha configurado CloudFront para almacenar en caché en función de encabezados desolicitudes o cadenas de consulta, CloudFront reenvía todas las solicitudes únicas a su origen.

Cuando la respuesta del origen incluye un encabezado Cache-Control: no-cache, CloudFrontsuele reenviar la siguiente solicitud del mismo objeto al origen para determinar si dicho objeto se haactualizado. Sin embargo, cuando hay un pico de tráfico y CloudFront se pone en pausa después dereenviar la primera solicitud al origen, pueden llegar varias solicitudes antes de que CloudFront recibauna respuesta del origen. Cuando CloudFront recibe una respuesta que contiene un encabezado Cache-Control: no-cache, envía el objeto en la respuesta al espectador que realizó la solicitud original ya todos los espectadores que solicitaron el objeto durante la pausa. Después de que la respuesta llegadesde el origen, CloudFront reenvía la siguiente solicitud del espectador del mismo objeto al origen. En losregistros 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 identificancomo Hit. Para obtener más información acerca del formato de archivo de registros de acceso, consulteFormato de archivos de registro de distribución web (p. 377).

Cómo CloudFront procesa las respuestas desde elservidor de origen de Amazon S3Este tema contiene información sobre cómo procesa CloudFront respuestas desde su origen de AmazonS3.

Temas• Solicitudes canceladas (p. 234)• Encabezados de respuesta HTTP que CloudFront elimina o actualiza (p. 234)• Tamaño máximo de archivo (p. 235)• Redireccionamientos (p. 235)

Solicitudes canceladasSi un objeto no está en la caché perimetral y un espectador termina una sesión (por ejemplo, cierra unnavegador) después de que CloudFront obtiene el objeto solicitado del origen, pero antes de que puedaentregarlo, CloudFront no almacena el objeto en la caché de la ubicación de borde.

Encabezados de respuesta HTTP que CloudFront elimina oactualizaCloudFront elimina o actualiza los siguientes campos de encabezado antes de reenviar la respuesta desdesu origen de Amazon S3 al espectador:

• 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 contenidoen función de cookies (p. 199).

• Trailer

Versión de API 2016-09-29234

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa las respuestasdesde el servidor de origen de Amazon S3

• Transfer-Encoding: si el origen de Amazon S3 devuelve este campo de encabezado CloudFrontestablece el valor como chunked antes de devolver la respuesta al espectador.

• Upgrade

• Via: CloudFront establece el valor en:

Via: 1.1 alphanumeric-string.cloudfront.net (CloudFront)

antes de devolver la respuesta al espectador. Por ejemplo:

Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

Tamaño máximo de archivoEl tamaño máximo de un cuerpo de respuesta que CloudFront devolverá al espectador es de 20 GB. Esoincluye respuestas transferidas en fragmentos que no especifican el valor de encabezado Content-Length.

RedireccionamientosPuede 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 redirigirtodas las solicitudes y es el origen de una distribución de CloudFront, le recomendamos configurarlopara 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) asociadoa una distribución (por ejemplo, example.com). De lo contrario, las solicitudes de espectadores eludenCloudFront y los objetos se ofrecen directamente desde el nuevo origen.

Note

Si redirige solicitudes a un nombre de dominio alternativo, también debe actualizar el serviciode DNS del dominio mediante la adición de un registro CNAME. Para obtener más información,consulte Uso de URL personalizadas para archivos añadiendo nombres de dominio alternativos(CNAME) (p. 60).

Esto es lo que ocurre cuando configura un bucket para redirigir todas las solicitudes:

1. Un espectador (por ejemplo, un navegador) solicita un objeto de CloudFront.2. CloudFront reenvía la solicitud al bucket de Amazon S3 que es el origen de la distribución.3. Amazon S3 devuelve un código de estado HTTP 301 (Movido permanentemente) y la nueva

ubicación.4. CloudFront almacena en caché el código de estado de la redirección y la nueva ubicación, y devuelve

los valores al espectador. CloudFront no sigue la redirección para obtener el objeto de la nuevaubicación.

5. El espectador envía otra solicitud del objeto, pero esta vez el espectador especifica la nueva ubicaciónque obtuvo de CloudFront:

• Si el bucket de Amazon S3 está redirigiendo todas las solicitudes a una distribución de CloudFrontusando el nombre de dominio para la distribución o un nombre de dominio alternativo, CloudFrontsolicita el objeto del bucket de Amazon S3 o del servidor HTTP en la nueva ubicación. Cuando lanueva ubicación devuelve el objeto, CloudFront lo devuelve al espectador 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 solicitudelude CloudFront. El bucket de Amazon S3 o el servidor HTTP de la nueva ubicación devuelven elobjeto directamente al espectador, por lo que el objeto nunca se almacena en una caché perimetralde CloudFront.

Versión de API 2016-09-29235

Amazon CloudFront Guía para desarrolladoresComportamiento de solicitudes y

respuestas para orígenes personalizados

Comportamiento de solicitudes y respuestas paraorígenes personalizados

Temas• Cómo CloudFront procesa y reenvía solicitudes a su servidor de origen personalizado (p. 236)• Cómo CloudFront procesa las respuestas desde el servidor de origen personalizado (p. 245)

Cómo CloudFront procesa y reenvía solicitudes a suservidor de origen personalizadoEste tema contiene información acerca de cómo CloudFront procesa solicitudes de espectadores y lasreenvía a su origen personalizado.

Temas• Autenticación (p. 236)• Duración de almacenamiento en caché y TTL mínimo (p. 237)• Direcciones IP de clientes (p. 237)• Autenticación SSL en el cliente (p. 237)• Compresión (p. 237)• Solicitudes condicionales (p. 238)• Cookies (p. 238)• Cross-Origin Resource Sharing (CORS, Uso compartido de recursos entre orígenes) (p. 238)• Cifrado (p. 238)• Solicitudes GET que incluyen un cuerpo (p. 239)• Métodos HTTP (p. 239)• Encabezados de solicitudes HTTP y comportamiento CloudFront (personalizado y orígenes de

S3) (p. 239)• Versión de HTTP (p. 243)• Longitud máxima de una solicitud y de una URL (p. 243)• Asociación de OCSP (p. 243)• Conexiones persistentes (p. 244)• Protocolos (p. 244)• Cadenas de consulta (p. 244)• Tiempo de espera de respuesta del origen (p. 244)• Solicitudes simultáneas del mismo objeto (picos de tráfico) (p. 245)• Encabezado usuario-agente (p. 245)

AutenticaciónPara solicitudes DELETE, GET, HEAD, PATCH, POST y PUT, si configura CloudFront para reenviarel encabezado Authorization a su origen, puede configurar su servidor de origen para solicitarautenticación del cliente.

Para solicitudes OPTIONS, puede configurar su servidor de origen para solicitar autenticación del clientesolo si utiliza los siguientes ajustes de CloudFront:

Versión de API 2016-09-29236

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen personalizado

• Configure CloudFront para que reenvíe el encabezado Authorization al origen• Configure CloudFront para no almacenar en caché la respuesta a solicitudes OPTIONS

Puede configurar CloudFront para reenviar las solicitudes a su origen mediante HTTP o HTTPS; paraobtener más información, consulte Usar HTTPS con CloudFront (p. 85).

Duración de almacenamiento en caché y TTL mínimoEn el caso de distribuciones web, para controlar durante cuánto tiempo mantener los objetos en una cachéde CloudFront antes de que CloudFront reenvíe otra solicitud al origen, puede:

• Configure su origen para añadir un Cache-Control o un encabezado Expires para cada objeto.• Especifique 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 unacaché perimetral (Vencimiento) (p. 206).

Direcciones IP de clientesSi un espectador envía una solicitud a CloudFront y no incluye un encabezado de solicitud X-Forwarded-For, CloudFront obtiene la dirección IP del espectador de la conexión TCP, añade un encabezado X-Forwarded-For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, si CloudFrontobtiene 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

Si un espectador envía una solicitud a CloudFront e incluye un encabezado de solicitud X-Forwarded-For, CloudFront obtiene la dirección IP del espectador de la conexión TCP, la añade al final delencabezado X-Forwarded-For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, sila solicitud del espectador incluye X-Forwarded-For: 192.0.2.4,192.0.2.3 y CloudFront obtiene ladirección IP 192.0.2.2 de la conexión TCP, reenvía el siguiente encabezado al origen:

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

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 puertas de enlace dela API, añaden la dirección IP del servidor de borde de CloudFront que reenvía la solicitud al extremo delencabezado X-Forwarded-For. Por ejemplo, si CloudFront incluye X-Forwarded-For: 192.0.2.2en 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 los siguientes encabezados:

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 (como2001:0db8:85a3:0000:0000:8a2e:0370:7334) según corresponda.

Autenticación SSL en el clienteCloudFront no admite la autenticación con certificados SSL del lado del cliente. Si un origen solicita uncertificado de cliente, CloudFront interrumpe la solicitud.

CompresiónCloudFront reenvía las solicitudes que tengan los valores de campo Accept-Encoding, "identity" y"gzip". Para obtener más información, consulte Ofrecer archivos comprimidos (p. 81).

Versión de API 2016-09-29237

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen personalizado

Solicitudes condicionalesCuando CloudFront recibe una solicitud de un objeto que ha caducado en una caché perimetral, reenvíala solicitud al origen para obtener la última versión del objeto o para obtener la confirmación del origende que la caché perimetral de CloudFront ya dispone de la última versión. Por lo general, la última vezque el origen envía el objeto a CloudFront, incluye un valor ETag, un valor LastModified o ambos enla respuesta. En la nueva solicitud que CloudFront reenvía al origen, añade uno de los dos elementos acontinuación, o incluso ambos:

• Un encabezado If-Match o If-None-Match que contenga el valor ETag para la versión caducada delobjeto.

• Un encabezado If-Modified-Since que contenga el valor LastModified para la versión caducadadel objeto.

El origen utiliza esta información para determinar si el objeto se ha actualizado y, en consecuencia,devolver todo el objeto a CloudFront o devolver solo un código de estado HTTP 304 (no modificado).

CookiesPuede configurar CloudFront para que reenvíe cookies al origen. Para obtener más información, consulteAlmacenamiento en caché de contenido en función de cookies (p. 199).

Cross-Origin Resource Sharing (CORS, Uso compartido derecursos entre orígenes)Si desea que CloudFront respete la configuración de uso compartido de recursos entre orígenes, configureCloudFront para que reenvíe el encabezado Origin al origen. Para obtener más información, consulteAlmacenamiento en caché de contenido en función de encabezados de solicitud (p. 201).

CifradoPuede solicitar a los espectadores utilizar HTTPS para enviar solicitudes a CloudFront y exigirle aCloudFront que renvíe las solicitudes a su origen personalizado mediante el protocolo que utiliza elespectador. Para obtener más información, consulte la siguiente configuración de distribución:

• Viewer Protocol Policy (p. 39)• Política de protocolos de origen (Amazon EC2, Elastic Load Balancing y otros orígenes

personalizados) (p. 35)

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 deseaque CloudFront utilice al comunicarse con su origen:

• Si está utilizando la consola de CloudFront, seleccione los protocolos en las casillas de Origin SSLProtocols. Para obtener más información, consulte Creación de una distribución (p. 29).

• 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 AmazonCloudFront API Reference.

Si el origen es un bucket de Amazon S3, CloudFront utiliza siempre TLSv1.2.Important

Otras versiones de SSL y TLS no son compatibles.

Versión de API 2016-09-29238

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen personalizado

Para obtener más información acerca del uso de HTTPS con CloudFront, consulte Usar HTTPS conCloudFront (p. 85). Para consultar listas de los cifrados que CloudFront admite para comunicacionesHTTPS entre espectadores y CloudFront, y entre CloudFront y su origen, visite Protocolos SSL/TLS ycifrados admitidos para comunicación entre espectadores y CloudFront (p. 92).

Solicitudes GET que incluyen un cuerpoSi una solicitud del espectador GET incluye un cuerpo, CloudFront devuelve un código de estado HTTP403 (Prohibido) al espectador.

Métodos HTTPSi configura CloudFront para procesar todos los métodos de HTTP que admite, CloudFront acepta lassiguientes solicitudes de los espectadores 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 puedeconfigurar CloudFront para almacenar en caché respuestas a solicitudes OPTIONS. CloudFront noalmacena en caché las respuestas a las solicitudes que utilizan los demás métodos.

Para obtener más información acerca de la configuración para que su origen personalizado procese estosmétodos, consulte la documentación de su origen.

Important

Si configura CloudFront para aceptar y reenviar al origen todos los métodos HTTP que admiteCloudFront, configure su servidor de origen para gestionar todos los métodos. Por ejemplo, siconfigura CloudFront para aceptar y reenviar estos métodos porque desea utilizar POST, debeconfigurar también su servidor de origen para gestionar solicitudes DELETE adecuadamente, yque los espectadores no puedan eliminar los recursos que no desee que eliminen. Para obtenermás información, consulte la documentación de su servidor HTTP.

Encabezados de solicitudes HTTP y comportamiento CloudFront(personalizado y orígenes de S3)En la siguiente tabla se indican los encabezados de solicitudes HTTP que puede reenviar a orígenespersonalizados y de Amazon S3 (con las excepciones que se indican). Para cada encabezado, la tablaincluye información acerca de lo siguiente:

• El comportamiento de CloudFront si no configura CloudFront para reenviar el encabezado a su origen, loque hace que CloudFront almacene en caché los objetos en función de los valores de encabezado.

• Si puede configurar CloudFront para almacenar en caché los objetos en función de los valores de eseencabezado.

Puede configurar CloudFront para almacenar en caché los objetos en función de los valores de losencabezados Date y User-Agent, pero no lo recomendamos. Estos encabezados tienen muchosvalores posibles y el almacenamiento en caché en función de sus valores podría hacer que CloudFrontreenvíe una cantidad de solicitudes significativamente mayor a su origen.

Versión de API 2016-09-29239

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen personalizado

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. 201).

Encabezado Comportamiento si no configura CloudFront paraalmacenar en caché en función de valores deencabezados

Se admite elalmacenamientoen cachéadmite enfunción devalores deencabezados

Encabezados definidos porotros

CloudFront reenvía los encabezados al origen. Sí

Accept CloudFront elimina el encabezado. Sí

Accept-Charset CloudFront elimina el encabezado. Sí

Accept-Encoding Si el valor contiene gzip, CloudFront reenvía Accept-Encoding: gzip al origen.

Si el valor no contiene gzip, CloudFront sobrescribe elcampo del encabezado Accept-Encoding antes dereenviar la solicitud a su origen.

No

Accept-Language CloudFront elimina el encabezado. Sí

Authorization • Solicitudes GET y HEAD: CloudFront elimina el campodel encabezado Authorization antes de reenviarla solicitud al origen.

• Solicitudes OPTIONS: CloudFront elimina el campode encabezado Authorization antes de enviarla solicitud al origen si configura CloudFront paraalmacenar en caché las respuestas a las solicitudesOPTIONS.

CloudFront reenvía el campo de encabezadoAuthorization al origen si no configuraCloudFront para almacenar en caché las respuestasa solicitudes OPTIONS.

• Solicitudes DELETE, PATCH, POST y PUT: CloudFrontno elimina el campo del encabezado antes dereenviar la solicitud al origen.

Cache-Control CloudFront reenvía el encabezado al origen. No

CloudFront-Forwarded-Proto

CloudFront no añade el encabezado antes de reenviarla solicitud al origen.

Para obtener más información, consulte ConfigurarCloudFront para almacenar en la caché objetos enfunción del protocolo de la solicitud (p. 205).

CloudFront-Is-Desktop-Viewer

CloudFront no añade el encabezado antes de reenviarla solicitud al origen.

Versión de API 2016-09-29240

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen personalizado

Encabezado Comportamiento si no configura CloudFront paraalmacenar en caché en función de valores deencabezados

Se admite elalmacenamientoen cachéadmite enfunción devalores deencabezados

Para obtener más información, consulte ConfigurarCloudFront para almacenar objetos en la caché enfunción del tipo de dispositivo (p. 204).

CloudFront-Is-Mobile-Viewer

CloudFront no añade el encabezado antes de reenviarla solicitud al origen.

Para obtener más información, consulte ConfigurarCloudFront para almacenar objetos en la caché enfunción del tipo de dispositivo (p. 204).

CloudFront-Is-Tablet-Viewer

CloudFront no añade el encabezado antes de reenviarla solicitud al origen.

Para obtener más información, consulte ConfigurarCloudFront para almacenar objetos en la caché enfunción del tipo de dispositivo (p. 204).

CloudFront-Viewer-Country

CloudFront no añade el encabezado antes de reenviarla solicitud al origen.

Connection CloudFront sustituye este encabezado porConnection: Keep-Alive antes de enviar lasolicitud a su origen.

No

Content-Length CloudFront reenvía el encabezado al origen. No

Content-MD5 CloudFront reenvía el encabezado al origen. Sí

Content-Type CloudFront reenvía el encabezado al origen. Sí

Cookie Si configura CloudFront para reenviar cookies,reenviará el campo del encabezado Cookie a suorigen. En caso contrario, CloudFront elimina elcampo de encabezado Cookie. Para obtener másinformación, consulte Almacenamiento en caché decontenido en función de cookies (p. 199).

No

Date CloudFront reenvía el encabezado al origen. Sí, pero no serecomienda

Expect CloudFront elimina el encabezado. Sí

From CloudFront reenvía el encabezado al origen. Sí

Host CloudFront establece el valor en el nombre de dominiodel origen que se asocia al objeto solicitado.

No se puede almacenar en la caché en el encabezadodel host para orígenes de Amazon S3.

Sí(personalizado)

No (S3)

If-Match CloudFront reenvía el encabezado al origen. Sí

Versión de API 2016-09-29241

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen personalizado

Encabezado Comportamiento si no configura CloudFront paraalmacenar en caché en función de valores deencabezados

Se admite elalmacenamientoen cachéadmite enfunción devalores deencabezados

If-Modified-Since CloudFront reenvía el encabezado al origen. Sí

If-None-Match CloudFront reenvía el encabezado al origen. Sí

If-Range CloudFront reenvía el encabezado al origen. Sí

If-Unmodified-Since CloudFront reenvía el encabezado al origen. Sí

Max-Forwards CloudFront reenvía el encabezado al origen. No

Origin CloudFront reenvía el encabezado al origen. Sí

Pragma CloudFront reenvía el encabezado al origen. No

Proxy-Authenticate CloudFront elimina el encabezado. No

Proxy-Authorization CloudFront elimina el encabezado. No

Proxy-Connection CloudFront elimina el encabezado. No

Range CloudFront reenvía el encabezado al origen. Paraobtener más información, consulte Cómo CloudFrontprocesa las solicitudes parciales de objetos (RangeGET) (p. 212).

Sí de formapredeterminada

Referer CloudFront elimina el encabezado. Sí

Request-Range CloudFront reenvía el encabezado al origen. No

TE CloudFront elimina el encabezado. No

Trailer CloudFront elimina el encabezado. No

Transfer-Encoding CloudFront reenvía el encabezado al origen. No

Upgrade CloudFront elimina el encabezado. No

User-Agent Cloudfront sustituye el valor de este campo deencabezado por Amazon CloudFront. Si deseaque CloudFront almacene en caché el contenido enfunción del dispositivo del usuario, consulte ConfigurarCloudFront para almacenar objetos en la caché enfunción del tipo de dispositivo (p. 204).

Sí, pero no serecomienda

Via CloudFront reenvía el encabezado al origen. Sí

Warning CloudFront reenvía el encabezado al origen. Sí

X-Amz-Cf-Id CloudFront añade el encabezado a la solicitud delespectador antes de reenviar la solicitud al origen. Elvalor de encabezado contiene una cadena cifrada queidentifica la solicitud de forma única.

No

Versión de API 2016-09-29242

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen personalizado

Encabezado Comportamiento si no configura CloudFront paraalmacenar en caché en función de valores deencabezados

Se admite elalmacenamientoen cachéadmite enfunción devalores deencabezados

X-Edge-* CloudFront elimina todos los encabezados X-Edge-*. No

X-Forwarded-For CloudFront reenvía el encabezado al origen. Paraobtener más información, consulte Direcciones IP declientes (p. 237).

X-Forwarded-Proto CloudFront elimina el encabezado. Sí

X-Real-IP CloudFront elimina el encabezado. No

Versión de HTTPCloudFront reenvía las solicitudes a su origen personalizado mediante HTTP/1.1.

Longitud máxima de una solicitud y de una URLLa longitud máxima de una solicitud, incluida la ruta, la cadena de consulta (si procede) y los encabezados,es 20 480 bytes.

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 límites, CloudFront devuelve el código de estado HTTP 413 (loscampos de encabezado de solicitud son muy grandes para el espectador) y, a continuación, interrumpe laconexión TCP con el espectador.

Asociación de OCSPCuando un espectador envía una solicitud de un objeto HTTPS, CloudFront o el espectador debenconfirmar con la autoridad de certificados (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 certificadoy almacenar en caché la respuesta de la CA, por lo que el cliente no tiene por qué validar el certificadodirectamente con la CA.

La mejora en el desempeño de la asociación de OCSP es más notoria cuando CloudFront recibe una grancantidad de solicitudes de HTTPS de objetos en el mismo dominio. Cada servidor en una ubicación deborde de CloudFront debe enviar una solicitud de validación independiente. Cuando CloudFront recibe unagran cantidad de solicitudes HTTPS para el mismo dominio, cada servidor de la ubicación de borde obtienepronto una respuesta de la CA que puede asociar a un paquete en el protocolo de enlace de SSL; cuandoel espectador considera que el certificado es válido, CloudFront puede ofrecer el objeto solicitado. Si ladistribución no recibe mucho tráfico en una ubicación de borde de CloudFront, es más probable que lasnuevas solicitudes se dirijan a un servidor que todavía no haya validado el certificado con la CA. En esecaso, el espectador 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 vezque recibe una solicitud que incluye el mismo nombre de dominio, cuenta con una respuesta de validaciónde la CA.

Versión de API 2016-09-29243

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa y reenvía solicitudes

a su servidor de origen personalizado

Conexiones persistentesCuando CloudFront obtiene una respuesta de su origen, intenta mantener la conexión durante variossegundos en caso de que otra solicitud llegue durante ese periodo. Garantizar una conexión persistenteahorra el tiempo necesario para restablecer la conexión TCP y realizar otro protocolo de enlace TLS parasolicitudes posteriores.

Para obtener más información, incluido el modo de configurar la duración de las conexiones persistentes,consulte Tiempo de keep-alive de origen (solo Amazon EC2, Elastic Load Balancing y otros orígenespersonalizados) (p. 36) en la sección Valores que deben especificarse al crear o actualizar una distribución (p. 30).

ProtocolosCloudFront reenvía solicitudes HTTP o HTTPS al servidor de origen en función de lo siguiente:

• El protocolo de la solicitud que el espectador envía a CloudFront, ya sea HTTP o HTTPS.• El valor del campo Origin Protocol Policy en la consola de CloudFront o, si está utilizando la API de

CloudFront, el elemento OriginProtocolPolicy del tipo complejo DistributionConfig. En laconsola de CloudFront, las opciones son HTTP Only, HTTPS Only y Match Viewer.

Si especifica HTTP Only o HTTPS Only, CloudFront reenvía las solicitudes al servidor de origen medianteel protocolo especificado, independientemente del protocolo de la solicitud del espectador.

Si especifica Match Viewer, CloudFront reenvía las solicitudes al servidor de origen mediante el protocoloespecificado en la solicitud del espectador. Tenga en cuenta que CloudFront almacena en caché el objetosolo una vez, incluso si los espectadores 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 deorigen 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 Visualizar y actualizar distribuciones (p. 53). Para obtener información sobre cómo actualizar unadistribución utilizando la API de CloudFront, consulte UpdateDistribution en la Amazon CloudFront APIReference.

Cadenas de consultaPuede configurar si CloudFront reenvía parámetros de cadenas de consulta a su origen. Para obtenermás información, consulte Almacenar en caché contenido en función de parámetros de cadenas deconsulta (p. 196).

Tiempo de espera de respuesta del origenEl tiempo de espera de respuesta del origen, también conocido como tiempo de espera de solicitud alorigen y tiempo de espera de lectura de origen, se aplica a los dos siguientes valores:

• El periodo de tiempo, en segundos, que CloudFront espera una respuesta después de enviar unasolicitud a un origen personalizado.

• El periodo de tiempo, en segundos, que CloudFront espera después de recibir un paquete de unarespuesta del origen y antes de recibir el paquete siguiente.

Para obtener más información, incluido el modo de configurar el tiempo de espera de respuesta del origen,consulte Tiempo de espera de respuesta del origen (solo Amazon EC2, Elastic Load Balancing y otros

Versión de API 2016-09-29244

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa las respuestasdesde el servidor de origen personalizado

orígenes personalizados) (p. 36) en la sección Valores que deben especificarse al crear o actualizar unadistribución (p. 30).

Solicitudes simultáneas del mismo objeto (picos de tráfico)Cuando una ubicación de borde de CloudFront recibe una solicitud de un objeto y este no se encuentra enese momento en la caché o el objeto ha caducado, CloudFront envía inmediatamente la solicitud al origen.Si hay un pico de tráfico, es decir, si las solicitudes adicionales del mismo objeto llegan a la ubicación deborde antes de que su origen responda a la primera solicitud, CloudFront se pone en pausa brevementeantes de reenviar el objeto a su origen. La respuesta a la primera solicitud suele llegar a la ubicación deborde de CloudFront antes que la respuesta a las solicitudes posteriores. Esta breve pausa ayuda a reducirla carga innecesaria en su servidor de origen. Si las solicitudes adicionales no son idénticas, porque, porejemplo, ha configurado CloudFront para almacenar en caché en función de encabezados de solicitudes ocookies, CloudFront reenvía todas las solicitudes únicas a su origen.

Encabezado usuario-agenteSi desea que CloudFront almacene en caché diversas versiones de sus objetos según el dispositivo queel usuario utilice para ver su contenido, le recomendamos que configure CloudFront para reenviar losencabezados aplicables 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 encabezadoscomo true o false antes de reenviar la solicitud a su origen. Si un dispositivo entra en más de unacategoría, más de un valor podría ser true. Por ejemplo, en el caso de algunas tablets, CloudFront podríaestablecer tanto CloudFront-Is-Mobile-Viewer y CloudFront-Is-Tablet-Viewer como true.Para obtener más información acerca de la configuración de CloudFront para almacenar en caché enfunción de los encabezados de solicitud, consulte Almacenamiento en caché de contenido en función deencabezados de solicitud (p. 201).

Puede configurar CloudFront para almacenar en caché los objetos en función de los valores delencabezado User-Agent, pero no lo recomendamos. El encabezado User-Agent tiene muchos valoresposibles y el almacenamiento en caché en función de esos valores podría hacer que CloudFront reenvíeuna 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 encabezadoUser-Agent, CloudFront añade un User-Agent encabezado con el siguiente valor antes de reenviar unasolicitud al origen:

User-Agent = Amazon CloudFront

CloudFront añade este encabezado independientemente de si la solicitud del espectador incluye unencabezado User-Agent. Si la solicitud del espectador incluye un encabezado User-Agent, CloudFrontlo elimina.

Cómo CloudFront procesa las respuestas desde elservidor de origen personalizadoEste tema contiene información sobre cómo procesa CloudFront respuestas desde su origenpersonalizado.

Versión de API 2016-09-29245

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa las respuestasdesde el servidor de origen personalizado

Temas• Respuestas de 100-continue (p. 246)• Almacenamiento en caché (p. 246)• Solicitudes canceladas (p. 246)• Negociación de contenido (p. 246)• Cookies (p. 246)• Conexiones TCP interrumpidas (p. 247)• Encabezados de respuesta HTTP que CloudFront elimina o actualiza (p. 247)• Tamaño máximo de archivo (p. 248)• Origen no disponible (p. 248)• Redireccionamientos (p. 248)• Codificación de transferencia (p. 248)

Respuestas de 100-continueSu origen no puede enviar más de una respuesta 100-continue a CloudFront. Después de la primerarespuesta de 100-continue, CloudFront espera una respuesta HTTP 200 OK. Si el origen envía otrarespuesta 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 oIf-None-Match, defina el campo de encabezado de respuesta ETag. Si no especifica un valor ETag,CloudFront pasa por alto encabezados If-Match o If-None-Match posteriores.

• CloudFront normalmente respeta un encabezado Cache-Control: no-cache en la respuestadel origen. Para ver una excepción, consulte Solicitudes simultáneas del mismo objeto (picos detráfico) (p. 245).

Solicitudes canceladasSi un objeto no está en la caché perimetral y un espectador termina una sesión (por ejemplo, cierra unnavegador) después de que CloudFront obtiene el objeto solicitado del origen, pero antes de que puedaentregarlo, CloudFront no almacena el objeto en la caché de la ubicación de borde.

Negociación de contenidoSi el origen devuelve Vary:* en la respuesta y si el valor de Minimum TTL para el comportamiento dela caché correspondiente es 0, CloudFront almacena en caché el objeto, pero igualmente reenvía cadasolicitud posterior del objeto al origen para confirmar que la caché contiene la última versión de dichoobjeto. 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 para el comportamiento dela caché correspondiente es cualquier otro valor, CloudFront procesa el encabezado Vary tal y como sedescribe en Encabezados de respuesta HTTP que CloudFront elimina o actualiza (p. 247).

CookiesSi 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

Versión de API 2016-09-29246

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa las respuestasdesde el servidor de origen personalizado

la capacidad de almacenamiento en caché para un objeto. Para obtener más información, consulteAlmacenamiento en caché de contenido en función de cookies (p. 199).

Conexiones TCP interrumpidasSi la conexión TCP entre CloudFront y el origen se interrumpe al mismo tiempo que el origen devuelveun objeto a CloudFront, el comportamiento de CloudFront depende de si el origen incluye un encabezadoContent-Length en la respuesta:

• Encabezado Content-Length: CloudFront devuelve el objeto al espectador 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 espectador mientras lo obtiene del origen.Sin embargo, si la respuesta en fragmentos no está completa, CloudFront no almacena el objeto en lacaché.

• Encabezado No Content-Length: CloudFront devuelve el objeto al espectador y lo almacena en la caché,pero el objeto puede no estar completo. Sin un encabezado Content-Length, CloudFront no puededeterminar si la conexión TCP se interrumpió de forma accidental o intencionadamente.

Le recomendamos configurar su servidor HTTP para añadir un encabezado Content-Length deCloudFront y así evitar el almacenamiento en caché de objetos parciales.

Encabezados de respuesta HTTP que CloudFront elimina oactualizaCloudFront elimina o actualiza los siguientes campos de encabezado antes de reenviar la respuesta desdesu origen al espectador:

• 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 contenidoen función de cookies (p. 199).

• Trailer

• Transfer-Encoding: si el origen devuelve este campo de encabezado, CloudFront establece el valorcomo chunked antes de devolver la respuesta al espectador.

• Upgrade

• Vary: tome en cuenta lo siguiente:• Si configura CloudFront para reenviar cualquiera de los encabezados específicos según dispositivo al

origen (CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer, CloudFront-Is-SmartTV-Viewer, CloudFront-Is-Tablet-Viewer) y configura su origen para devolverVary:User-Agent a CloudFront, CloudFront devuelve Vary:User-Agent al espectador. Paraobtener más información, consulte Configurar CloudFront para almacenar objetos en la caché enfunción del tipo de dispositivo (p. 204).

• Si configura su origen para incluir bien Accept-Encoding o Cookie en el encabezado Vary,CloudFront incluye los valores en la respuesta al espectador.

• 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 encabezadoVary con ese valor al espectador.

• Para obtener más información acerca de cómo CloudFront procesa un valor de * en el encabezadoVary, consulte Negociación de contenido (p. 246).

• Si configura su origen para incluir cualquier otro valor en el encabezado Vary, CloudFront eliminarádichos valores antes de devolver la respuesta al espectador.

Versión de API 2016-09-29247

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa las respuestasdesde el servidor de origen personalizado

• Via: independientemente de si su origen devuelve este campo de encabezado a CloudFront, CloudFrontestablece el valor como:

Via: 1.1 alphanumeric-string.cloudfront.net (CloudFront)

antes de devolver la respuesta al espectador. Por ejemplo:

Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

Tamaño máximo de archivoEl tamaño máximo de un cuerpo de respuesta que CloudFront devolverá al espectador es de 20 GB. Esoincluye respuestas transferidas en fragmentos que no especifican el valor de encabezado Content-Length.

Origen no disponibleSi el servidor de origen no está disponible y CloudFront obtiene una solicitud de un objeto que seencuentra en la caché perimetral, pero que ha caducado (por ejemplo, porque el periodo especificado enla directiva Cache-Control max-age ha pasado), CloudFront ofrece esa versión caducada del objeto ouna página de error personalizada. Para obtener más información, consulte Cómo CloudFront procesa yalmacena en caché los códigos de estado HTTP 4xx y 5xx desde el origen (p. 251).

En algunos casos, un objeto poco solicitado es desalojado y deja de estar disponible en la cachéperimetral. CloudFront no puede ofrecer un objeto que haya sido desalojado.

RedireccionamientosSi cambia la ubicación de un objeto en el servidor de origen, puede configurar su servidor web pararedirigir las solicitudes a la nueva ubicación. Después de configurar el redireccionamiento, la primera vezque un espectador envía una solicitud del objeto, CloudFront Front envía la solicitud al origen y el origenresponde con un redireccionamiento (por ejemplo, 302 Moved Temporarily). CloudFront almacena encaché el redireccionamiento y lo devuelve al espectador. 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 espectador sigue el redireccionamientoa la nueva URL, el espectador elude CloudFront y va directamente al origen. Por tal motivo, lerecomendamos que no redirija las solicitudes a la nueva URL del objeto en el origen.

• La nueva URL de CloudFront del objeto. Cuando el usuario envía la solicitud que contiene la nuevaURL de CloudFront, CloudFront obtiene el objeto de la nueva ubicación de su origen, lo almacena en lacaché de la ubicación de borde y lo devuelve al espectador. Las solicitudes posteriores del objeto seránatendidas por la ubicación de borde. Esto evita la latencia y carga asociadas a la solicitud del objeto alorigen por parte de los espectadores. Sin embargo, cada nueva solicitud del objeto implicará cargos porconcepto de dos solicitudes a CloudFront.

Codificación de transferenciaCloudFront admite únicamente el valor chunked del encabezado Transfer-Encoding. Si el origendevuelve Transfer-Encoding: chunked, CloudFront devuelve el objeto al cliente tan pronto como lorecibe la ubicación de borde, y lo almacena en caché en formato fragmentado para solicitudes posteriores.

Si un espectador envía una solicitud Range GET y el origen devuelve Transfer-Encoding: chunked,CloudFront devuelve el objeto entero al espectador en lugar del rango solicitado.

Le recomendamos utilizar codificación fragmentada si la longitud de su respuesta no puede serpredeterminada. Para obtener más información, consulte Conexiones TCP interrumpidas (p. 247).

Versión de API 2016-09-29248

Amazon CloudFront Guía para desarrolladoresReenviar encabezados personalizadosal origen (solo para distribuciones web)

Reenviar encabezados personalizados al origen(solo para distribuciones web)

Puede configurar CloudFront para incluir encabezados personalizados cada vez que reenvíe una solicituda su origen. Puede especificar los nombres y valores de encabezados personalizados para cada origen,tanto para orígenes personalizados como para buckets de Amazon S3. Los encabezados personalizadostienen una amplia variedad de usos, como los siguientes:

• Puede identificar las solicitudes que CloudFront reenvía a su origen personalizado. Esto resulta útil sidesea saber si los usuarios están eludiendo CloudFront o si está utilizando más de una CDN y deseainformación acerca de que las solicitudes provenientes de cada CDN. (Si utiliza un origen de AmazonS3 y habilita el registro de acceso del servidor de Amazon S3, los registros no incluyen información delencabezado).

• Si ha configurado más de una distribución de CloudFront para utilizar el mismo origen, puede especificardiferentes encabezados personalizados para los orígenes de cada distribución y utilizar los registrosde su servidor web para distinguir entre las distintas solicitudes que CloudFront reenvía para cadadistribución.

• Si algunos de sus usuarios utilizan espectadores que no admiten el uso compartido de recursos entreorígenes (CORS), puede configurar CloudFront para que reenvíe el encabezado Origin al origen. Estohará que el origen devuelva el encabezado Access-Control-Allow-Origin por cada solicitud.

• Puede usar encabezados personalizados juntos y, opcionalmente, URL firmadas o cookies firmadaspara controlar el acceso a contenido en un origen personalizado. Si configura el origen personalizadopara responder a solicitudes solo si incluyen un encabezado personalizado, puede impedir que losusuarios eludan CloudFront y envíen solicitudes directamente a su origen.

Temas• Configurar CloudFront para reenviar encabezados personalizados a su origen (p. 249)• Encabezados personalizados que CloudFront no puede reenviar al origen (p. 250)• Usar encabezados personalizados para uso compartido de recursos entre orígenes (CORS) (p. 250)• Utilizar encabezados personalizados para restringir el acceso a contenido en un origen

personalizado (p. 250)

Configurar CloudFront para reenviar encabezadospersonalizados a su origenPara configurar una distribución web para reenviar encabezados personalizados a su origen, debeactualizar la configuración de los orígenes aplicables con uno de los siguientes métodos:

Consola de CloudFront

Al crear o actualizar una distribución, especifique los nombres y los valores de encabezado en laconfiguración Origin Custom Headers. Para obtener más información, consulte Creación de unadistribución (p. 29).

API de CloudFront

Por cada origen al que desee reenviar encabezados personalizados, añada nombres y valores a lasección CustomHeaders del tipo complejo DistributionConfig. Para obtener más información,consulte CreateDistribution para crear una distribución o UpdateDistribution para actualizar una que yaexista.

Versión de API 2016-09-29249

Amazon CloudFront Guía para desarrolladoresEncabezados personalizados que

CloudFront no puede reenviar al origen

Si los nombres y valores encabezado que especifique ya no están presentes en la solicitud del espectador,CloudFront los añade. Si hay un encabezado, CloudFront sobrescribe el valor de encabezado antes dereenviar la solicitud al origen.

Para conocer los límites actuales relacionadas con la transmisión de encabezados personalizados alorigen, consulte Límites (p. 413).

Encabezados personalizados que CloudFront nopuede reenviar al origenNo es posible configurar CloudFront para reenviar los siguientes encabezados personalizados al origen.

Accept-Encoding Proxy-Authenticate

Cache-Control Proxy-Authorization

Conexión Proxy-Connection

Longitud del contenido Rango

Cookie Request-Range

Host  TE

If-Match Trailer

If-Modified-Since Transfer-Encoding

If-None-Match Upgrade

If-Range Via

If-Unmodified-Since Encabezados que comiencen por X-Amz-*

Max-Forwards Encabezados que comiencen por X-Edge-*

Pragma X-Real-Ip

Usar encabezados personalizados para usocompartido de recursos entre orígenes (CORS)Puede configurar CloudFront para reenviar siempre los encabezados aplicables al origen con el fin deadaptarse a los espectadores que no incluyan automáticamente estos encabezados en las solicitudes.También es necesario configurar CloudFront para respetar los ajustes de CORS. Para obtener másinformación, consulte Configurar CloudFront para respetar la configuración de uso compartido de recursosentre orígenes (CORS) (p. 204).

Utilizar encabezados personalizados para restringir elacceso a contenido en un origen personalizadoSi utiliza un origen personalizado, puede usar encabezados personalizados para impedir que los usuarioseludan CloudFront y soliciten contenido directamente al origen. También puede restringir el acceso a sucontenido de manera que se requiera a sus usuarios obtener acceso a sus objetos mediante URL firmadas

Versión de API 2016-09-29250

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa los códigosde estado HTTP 3xx desde el origen

o cookies firmadas. Para obtener más información acerca de contenido privado, consulte Distribución decontenido privado con URL firmadas y cookies firmadas (p. 126).

Para exigir que los usuarios obtengan acceso a su contenido a través de CloudFront, cambie los siguientesajustes en sus distribuciones de CloudFront:

Origin Custom Headers

Configure CloudFront para que reenvíe encabezados personalizados al origen. Consulte ConfigurarCloudFront para reenviar encabezados personalizados a su origen (p. 249).

Viewer Protocol Policy

Configure la distribución para solicitar a los espectadores que utilicen HTTPS para obtener acceso aCloudFront. Consulte Viewer Protocol Policy (p. 39).

Origin Protocol Policy

Configure la distribución para exigir a CloudFront que utilice el mismo protocolo que los espectadorespara reenviar solicitudes al origen. Consulte Política de protocolos de origen (Amazon EC2, ElasticLoad Balancing y otros orígenes personalizados) (p. 35).

La combinación de Viewer Protocol Policy y Origin Protocol Policy asegura que la política de encabezadospersonalizados se cifran entre el espectador y el origen. Sin embargo, le recomendamos realizarperiódicamente las siguientes tareas para rotar los encabezados personalizados que CloudFront reenvía alorigen:

1. Actualice la distribución de CloudFront para empezar a reenviar un nuevo encabezado al origenpersonalizado.

2. Actualice la aplicación para aceptar el nuevo encabezado a modo de confirmación de que la solicitudproviene de CloudFront.

3. Cuando las solicitudes de los espectadores dejen de incluir el encabezado que ha reemplazado,actualice la aplicación para que deje de aceptar el encabezado antiguo a modo de confirmación de quela solicitud proviene de CloudFront.

Cómo CloudFront procesa los códigos de estadoHTTP 3xx desde el origen

Cuando CloudFront solicita un objeto desde su bucket de Amazon S3 o un servidor de origenpersonalizado, el origen a veces devuelve un código de estado HTTP 3xx, que suele indicar que la URLha cambiado (301, Movido permanentemente o 307, Redireccionamiento temporal) o que el objeto noha cambiado desde la última vez que CloudFront lo solicitó (304 No modificado). CloudFront almacenaen caché las respuestas 3xx durante el tiempo especificado por la configuración de su distribución deCloudFront y por los campos de encabezado que el origen devuelve junto con un objeto. Para obtener másinformación, consulte Administración de cuánto tiempo se mantiene el contenido en una caché perimetral(Vencimiento) (p. 206).

Si el origen devuelve un código de estado 301 o 307, CloudFront no sigue el redireccionamiento a la nuevaubicación.

Cómo CloudFront procesa y almacena en caché loscódigos de estado HTTP 4xx y 5xx desde el origen

Temas

Versión de API 2016-09-29251

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa errores cuando las

páginas de error personalizadas están configuradas

• Cómo CloudFront procesa errores cuando las páginas de error personalizadas estánconfiguradas (p. 252)

• Cómo CloudFront procesa errores cuando las páginas de error personalizadas no estánconfiguradas (p. 253)

• Códigos de estado HTTP 4xx y 5xx almacenados en caché por CloudFront (p. 254)

Cuando CloudFront solicita un objeto desde su bucket de Amazon S3 o un servidor de origenpersonalizado, el origen a veces devuelve un código de estado HTTP 4xx o 5xx, que indica que se haproducido un error. El comportamiento de CloudFront depende de:

• Si ha configurado páginas de error personalizadas.• Si ha configurado el tiempo durante el que desea que CloudFront almacene en caché las respuestas de

error de su origen (TTL mínimo de almacenamiento de errores en la caché).• El código del estado.• En el caso de códigos de estado 5xx, si el objeto solicitado se encuentra en la caché perimetral de

CloudFront en el momento de la solicitud.

CloudFront siempre almacena en caché las respuestas a las solicitudes GET y HEAD. También puedeconfigurar CloudFront para almacenar en caché respuestas a solicitudes OPTIONS. CloudFront noalmacena en caché las respuestas a las solicitudes que utilizan los demás métodos.

Para obtener más información acerca de la configuración de páginas de error personalizadas desdela consola de CloudFront, consulte Páginas de error personalizadas y almacenamiento de errores encaché (p. 50). 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é (p. 51).

Para obtener una lista de los códigos de estado HTTP que CloudFront almacena en caché, consulteCódigos de estado HTTP 4xx y 5xx almacenados en caché por CloudFront (p. 254).

Si ha activado el registro, CloudFront escribe los resultados en registros independientemente del código deestado HTTP.

Cómo CloudFront procesa errores cuando las páginasde error personalizadas están configuradasSi ha configurado páginas de error personalizadas, el comportamiento de CloudFront dependerá de si elobjeto solicitado está o no en la caché perimetral.

El objeto solicitado no está en la caché perimetralCloudFront continúa intentando obtener el objeto solicitado de su origen si se cumplen todas lascondiciones a continuación:

• Un espectador solicita un objeto.• El objeto no está en la caché perimetral.• Su origen devuelve un código de estado HTTP 4xx o 5xx en lugar de devolver un código 304 (No

modificado) o una versión actualizada del objeto.

CloudFront hace lo siguiente:

1. En la caché perimetral de CloudFront que recibió la solicitud del espectador, CloudFront comprueba laconfiguración de la distribución y obtiene la ruta de la página de error personalizada que correspondecon el código de estado devuelto por su origen.

Versión de API 2016-09-29252

Amazon CloudFront Guía para desarrolladoresCómo CloudFront procesa errores cuando las páginas

de error personalizadas no están configuradas

2. CloudFront comprueba el primer comportamiento de la caché de la distribución que tenga un patrón deruta 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 origenespecificado en el comportamiento de la caché.

4. El origen devuelve la página de error personalizada a la ubicación de borde.5. CloudFront devuelve la página de error personalizada al espectador que ha realizado la solicitud y

almacena en caché dicha página durante el tiempo especificado por el TTL mínimo de almacenamientode errores en caché (cinco minutos de forma predeterminada).

6. Una vez finalizado el TTL mínimo de almacenamiento de errores en caché, CloudFront intenta obtenerel objeto solicitado una vez más reenviando otra solicitud al origen. CloudFront continúa intentándolo aintervalos especificados por el TTL mínimo de almacenamiento de errores en caché.

El objeto solicitado está en la caché perimetralCloudFront continúa ofreciendo el objeto que se encuentra en ese momento en la caché perimetral si secumplen todas las condiciones a continuación:

• Un espectador solicita un objeto.• El objeto se encuentra en la caché perimetral, pero ha caducado• 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.

CloudFront hace lo siguiente:

1. Si el origen devuelve un código de estado 5xx, CloudFront ofrece el objeto a pesar de que hayacaducado. Durante el TTL mínimo de almacenamiento de errores en caché, CloudFront continúarespondiendo a solicitudes de espectadores 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 espectadoren lugar del objeto solicitado.

2. Una vez finalizado el TTL mínimo de almacenamiento de errores en caché, CloudFront intenta obtenerel objeto solicitado una vez más reenviando otra solicitud al origen. Tenga en cuenta que si el objetoes poco solicitado, CloudFront podría desalojarlo de la caché perimetral, mientras el servidor de origensigue devolviendo respuestas 5xx. Para obtener más información acerca de por cuánto tiempo puedenpermanecer los objetos en las cachés perimetrales de CloudFront, consulte Administración de cuántotiempo se mantiene el contenido en una caché perimetral (Vencimiento) (p. 206).

Cómo CloudFront procesa errores cuando las páginasde error personalizadas no están configuradasSi no ha configurado páginas de error personalizadas, el comportamiento de CloudFront dependerá de siel objeto solicitado está o no en la caché perimetral.

El objeto solicitado no está en la caché perimetralCloudFront continúa intentando obtener el objeto solicitado de su origen si se cumplen todas lascondiciones a continuación:

• Un espectador solicita un objeto.• El objeto no está en la caché perimetral.

Versión de API 2016-09-29253

Amazon CloudFront Guía para desarrolladoresCódigos de estado HTTP 4xx y 5xx

almacenados en caché por CloudFront

• Su origen devuelve un código de estado HTTP 4xx o 5xx en lugar de devolver un código 304 (Nomodificado) o una versión actualizada del objeto.

CloudFront hace lo siguiente:

1. CloudFront devuelve un código de estado 4xx o 5xx al espectador.2. CloudFront también almacena el código de estado en la caché perimetral que recibió la solicitud.3. Durante el TTL mínimo de almacenamiento de errores en caché (cinco minutos de forma

predeterminada), CloudFront responde a las solicitudes posteriores del mismo objeto que realizan losespectadores con el código de estado almacenado en caché 4xx o 5xx.

4. Una vez finalizado el TTL mínimo de almacenamiento de errores en caché, CloudFront intenta obtenerel objeto solicitado una vez más reenviando otra solicitud al origen.

El objeto solicitado está en la caché perimetralCloudFront continúa ofreciendo el objeto que se encuentra en ese momento en la caché perimetral si secumplen todas las condiciones a continuación:

• Un espectador solicita un objeto.• El objeto se encuentra en la caché perimetral, pero ha caducado• 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.

CloudFront hace lo siguiente:

1. Si el origen devuelve un código de error 5xx, CloudFront ofrece el objeto a pesar de que hayacaducado. Durante el TTL mínimo de almacenamiento de errores en caché (cinco minutos de formapredeterminada), CloudFront continúa respondiendo a solicitudes de espectadores ofreciendo el objetode la caché perimetral.

Si el origen devuelve un código de estado 4xx, CloudFront devuelve el código de estado al espectadoren lugar del objeto solicitado.

2. Una vez finalizado el TTL mínimo de almacenamiento de errores en caché, CloudFront intenta obtenerel objeto solicitado una vez más reenviando otra solicitud al origen. Tenga en cuenta que si el objetoes poco solicitado, CloudFront podría desalojarlo de la caché perimetral, mientras el servidor de origensigue devolviendo respuestas 5xx. Para obtener más información acerca de por cuánto tiempo puedenpermanecer los objetos en las cachés perimetrales de CloudFront, consulte Administración de cuántotiempo se mantiene el contenido en una caché perimetral (Vencimiento) (p. 206).

Códigos de estado HTTP 4xx y 5xx almacenados encaché por CloudFrontCloudFront almacena en caché los siguientes códigos de estado HTTP 4xx y 5xx devueltos por AmazonS3 o por el servidor de origen personalizado. Si ha configurado una página de error personalizada para uncódigo de estado HTTP, CloudFront la almacena en caché.

400 solicitud errónea

403 prohibido

404 Not Found

Versión de API 2016-09-29254

Amazon CloudFront Guía para desarrolladoresCódigos de estado HTTP 4xx y 5xx

almacenados en caché por CloudFront

405 método no permitido

414 URI de solicitud demasiado grande

500 Internal Server Error

501 No implementado

502 Puerta de enlace incorrecta

503 Service Unavailable

504 Tiempo de espera de puerta de enlace agotado

Versión de API 2016-09-29255

Amazon CloudFront Guía para desarrolladoresCreación de una página de error personalizada

para códigos de estado HTTP específicos

Generación de respuestaspersonalizadas a errores

Si los objetos que ofrece a través de CloudFront no están disponibles por el motivo que sea, el servidorweb suele devolver un código de estado HTTP a CloudFront. Por ejemplo, si un espectador especificauna URL no válida, su servidor web devuelve un código de estado 404 a CloudFront, y CloudFront se lodevuelve al espectador. El espectador muestra un breve mensaje predeterminado en un formato elementalsimilar a este:

Not Found: The requested URL /myfilename.html was not found on this server.

Pero puede mostrar un mensaje de error personalizado en su lugar, si lo desea. También tiene variasopciones para administrar cómo responde CloudFront cuando hay un error.

Temas• Creación de una página de error personalizada para códigos de estado HTTP específicos (p. 256)• Crear o actualizar un comportamiento de la caché para páginas de error personalizadas (p. 258)• Modificar códigos de respuesta (p. 258)• Cómo controlar durante cuánto tiempo CloudFront almacena errores en la caché (p. 259)• Cómo CloudFront responde cuando una página de error personalizadas no está disponible (p. 260)• Precios de páginas de error personalizadas (p. 260)• Configurar el comportamiento de respuestas de error (p. 260)

Creación de una página de error personalizadapara códigos de estado HTTP específicos

Si prefiere mostrar un mensaje de error personalizado en lugar del mensaje predeterminado (por ejemplo,una página que utiliza el mismo formato que el resto de su sitio web), puede hacer que CloudFrontdevuelva al espectador un objeto (por ejemplo, un archivo HTML) que contenga su mensaje de errorpersonalizado.

Versión de API 2016-09-29256

Amazon CloudFront Guía para desarrolladoresCreación de una página de error personalizada

para códigos de estado HTTP específicos

Puede especificar un objeto diferente por código de estado HTTP admitido o el mismo objeto para todoslos códigos de estado admitidos. También puede optar por especificar objetos para algunos códigos deestado y no para otros.

Los objetos que ofrece a través de CloudFront pueden no estar disponibles por diversas razones. Estas sedividen en dos amplias categorías:

• Errores de cliente, que indican un problema con la solicitud. Por ejemplo, que un objeto con el nombreespecificado no esté disponible o que el usuario no tenga los permisos necesarios para obtenerun objeto en el bucket de Amazon S3. Cuando se produce un error de cliente, el origen devuelve aCloudFront un código de estado HTTP en el rango de los 400.

• Errores de servidor, que indican un problema con el servidor de origen. Por ejemplo, el servidor HTTPestá ocupado o no disponible. Cuando se produce un error de servidor, el servidor de origen devuelve aCloudFront un código de estado HTTP en el rango de los 500, o CloudFront no obtiene respuesta de suservidor de origen durante un periodo determinado y supone un código de estado 504 (tiempo de esperade puerta de enlace agotado).

Los códigos de estado HTTP para los que CloudFront puede devolver una página de error personalizadason:

• 400, 403, 404, 405, 414, 416• 500, 501, 502, 503, 504

Note

Puede crear una página de error personalizada para el código de estado HTTP 416 (Rangosolicitado no puede ser satisfecho); también puede cambiar el código de estado HTTP queCloudFront proporciona a los espectadores cuando el origen devuelva un código de estado 416 aCloudFront. (Para obtener más información, consulte Modificar códigos de respuesta (p. 258).)Sin embargo, CloudFront no almacena en caché códigos de respuesta 416, así que puedeespecificar un valor de Error Caching Minimum TTL para el código de estado 416, peroCloudFront no lo utilizará.

Versión de API 2016-09-29257

Amazon CloudFront Guía para desarrolladoresCrear o actualizar un comportamiento de lacaché para páginas de error personalizadas

Para obtener una explicación detallada acerca de cómo CloudFront gestiona las respuestas de error desdesu origen, consulte Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xxdesde el origen (p. 251).

Crear o actualizar un comportamiento de la cachépara páginas de error personalizadas

Si desea almacenar los objetos y las páginas de error personalizadas en diferentes ubicaciones, ladistribución debe incluir un comportamiento de la caché que cumpla con las siguientes condiciones:

• El valor de Path Pattern 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 enun directorio llamado /4xx-errors. La distribución debe incluir un comportamiento de la caché cuyopatró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 especifica el valor de Origin ID del origen que contiene las páginas de errorpersonalizadas.

Para obtener más información, consulte Configuración del comportamiento de la caché (p. 37) en el temaValores que deben especificarse al crear o actualizar una distribución (p. 30).

Modificar códigos de respuestaPuede elegir el código de estado HTTP que CloudFront devuelve junto con una página de errorpersonalizada para un determinado código de estado HTTP. Por ejemplo, si su origen devuelve uncódigo de estado 500 a CloudFront, posiblemente desee que CloudFront devuelva una página de errorpersonalizada y un código de estado 200 (OK) al espectador. Existen diversas razones por las que puedequerer que CloudFront devuelva al espectador un código de estado diferente al que el origen ha devuelto aCloudFront:

• Algunos dispositivos de Internet (algunos firewalls y proxis corporativos, por ejemplo) interceptan HTTP4xx y 5xx y evitan que la respuesta se devuelva al espectador. Si reemplaza 200, muy probablemente larespuesta no sea interceptada.

• Si para usted no es particularmente importante distinguir entre errores de servidor y de cliente, puedeespecificar 400 o 500 como valor que CloudFront devuelva para todos los códigos de estado 4xx o 5xx.

• Quizá desee devolver un código de estado 200 (OK) y un sitio web estático para que sus clientes nopuedan saber que su sitio web está caído.

Si habilita los registros de acceso de CloudFront y configura CloudFront para cambiar el código de estadoHTTP en la respuesta, el valor de la columna sc-status de los registros de acceso contendrá el códigode estado que especifique. Sin embargo, el valor de la columna x-edge-result-type no se veráafectado; aún contendrá el tipo de resultado de la respuesta del origen. Supongamos que configuraCloudFront para devolver un código de estado 200 al espectador cuando el origen devuelve 404 (Noencontrado) a CloudFront. Cuando el origen responda a una solicitud con un código de estado 404, elvalor de la columna sc-status en el registro de acceso 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 conuna página de error personalizada:

• 200

Versión de API 2016-09-29258

Amazon CloudFront Guía para desarrolladoresCómo controlar durante cuánto tiempo

CloudFront almacena errores en la caché

• 400, 403, 404, 405, 414, 416• 500, 501, 502, 503, 504

Cómo controlar durante cuánto tiempo CloudFrontalmacena errores en la caché

De forma predeterminada, cuando el origen devuelve un código de estado HTTP 4xx o 5xx, CloudFrontalmacena en caché las respuestas de error durante cinco minutos y, a continuación, envía la siguientesolicitud del objeto a su origen para determinar si el problema que ha provocado el error se ha resuelto y elobjeto solicitado ya está disponible.

Note

Puede crear una página de error personalizada para el código de estado HTTP 416 (Rangosolicitado no puede ser satisfecho); también puede cambiar el código de estado HTTP queCloudFront proporciona a los espectadores cuando el origen devuelva un código de estado 416 aCloudFront. (Para obtener más información, consulte Modificar códigos de respuesta (p. 258).)Sin embargo, CloudFront no almacena en caché códigos de respuesta 416, así que puedeespecificar un valor de Error Caching Minimum TTL para el código de estado 416, peroCloudFront no lo utilizará.

Puede especificar una duración de almacenamiento en caché de errores (Error Caching MinimumTTL) para cada código de estado 4xx y 5xx que CloudFront almacene en la caché. Para consultar elprocedimiento, visite Configurar el comportamiento de respuestas de error (p. 260). Al especificar unaduración, tenga en cuenta lo siguiente:

• Si especifica un breve período de almacenamiento de errores en caché, CloudFront reenvía mássolicitudes al origen que si especifica una mayor duración. En el caso de errores 5xx, esto puede agravarel problema que causó el origen para devolver un error.

• Cuando el origen devuelve un error por un objeto, CloudFront responde a las solicitudes de dichoobjeto con la respuesta de error o con su página de error personalizada hasta que finaliza el periodo dealmacenamiento de errores en caché. Si especifica una mayor duración de almacenamiento de erroresen caché, CloudFront podría continuar respondiendo a las solicitudes con una respuesta de error ocon la página de error personalizada durante más tiempo que después de que el objeto vuelva a estardisponible.

Si desea controlar el tiempo durante el cual CloudFront almacena errores por objetos individuales en lacaché, puede configurar su servidor de origen para añadir el encabezado aplicable a la respuesta de errorpor dicho objeto:

• Si el origen añade una directiva Cache-Control max-age o Cache-Control s-maxage, o unencabezado Expires: CloudFront almacena en caché las respuestas de error durante el más extensode estos tiempos: el indicado en el valor del encabezado o el del valor de Error Caching Minimum TTL.

Tenga en cuenta que los valores Cache-Control max-age y Cache-Control s-maxage no puedenser mayores que el valor de Maximum TTL (Tiempo de vida máximo) definido para el comportamiento dela caché para el que se está obteniendo la página de error.

• Si el origen añade otras Cache-Control directivas o no añade encabezados: CloudFront almacenaen caché las respuestas a los errores durante el tiempo especificado en el valor Error Caching MinimumTTL.

Si la fecha de vencimiento de un código de estado 4xx y 5xx de un objeto es más lejana de lo que deseaesperar, puede invalidar el código de estado utilizando la URL del objeto solicitado. Si el origen devuelve

Versión de API 2016-09-29259

Amazon CloudFront Guía para desarrolladoresCómo CloudFront responde cuando una página

de error personalizadas no está disponible

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. 73).

Cómo CloudFront responde cuando una página deerror personalizadas no está disponible

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 espectador el código deestado que CloudFront recibió del origen que contiene las páginas de error personalizadas. Supongamosque el origen personalizado devuelve un código de estado de 500 y que haya configurado CloudFront paraobtener de un bucket de Amazon S3 una página de error personalizada para un código de estado 500. Sinembargo, alguien ha eliminado accidentalmente la página de error personalizada del bucket. CloudFrontdevolverá un código de estado HTTP 404 (No se encuentra) al espectador que solicite el objeto.

Precios de páginas de error personalizadasCuando CloudFront devuelve una página de error personalizada a un visualizador, paga los cargosestándar de CloudFront por la página de error personalizada, no paga cargos por el objeto solicitado. Paraobtener más información acerca de cargos de CloudFront, consulte Precios de Amazon CloudFront.

Configurar el comportamiento de respuestas deerror

Puede utilizar la API o la consola de CloudFront para configurar las respuestas de error de CloudFront.Para obtener más información acerca de cómo utilizar la API de CloudFront para configurar respuestasde error, visite PUT Distribution Config en la Amazon CloudFront API Reference y consulte el elementoCustomErrorResponses.

Para configurar las respuestas de error de CloudFront mediante la consola

1. Cree las páginas de error personalizadas que desee que CloudFront devuelva a los espectadorescuando el origen devuelva errores HTTP 4xx y 5xx. Guarde las páginas en una ubicación accesible aCloudFront.

Le recomendamos almacenar páginas de error personalizadas en un bucket de Amazon S3 incluso siutiliza un origen personalizado. Si almacena las páginas de error personalizadas en un servidor HTTPy el servidor comienza a devolver errores 5xx, CloudFront no puede obtener los archivos que deseadevolver a los espectadores, ya que el servidor de origen no está disponible.

2. Confirme que ha concedido a CloudFront al menos permisos read para los objetos de su página deerror personalizada.

Para obtener más información acerca de permisos de Amazon S3, consulte Access Control en la Guíapara desarrolladores de Amazon Simple Storage Service. Para obtener más información acerca decómo usar la consola de Amazon S3 para actualizar permisos, visite Amazon Simple Storage ServiceConsole User Guide.

3. Configure su servidor de origen para añadir directivas Cache-Control o un encabezado Expiresjunto con la respuesta de error para determinados objetos, si procede (opcional). Para obtener másinformación, consulte Cómo controlar durante cuánto tiempo CloudFront almacena errores en lacaché (p. 259).

Versión de API 2016-09-29260

Amazon CloudFront Guía para desarrolladoresConfigurar el comportamiento de respuestas de error

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. En la lista de distribuciones, seleccione la distribución a actualizar y elija Distribution Settings.6. Elija la pestaña Error Pages. A continuación, elija Create Custom Error Response o elija un código de

error y Edit.

7. Escriba los valores aplicables. Para obtener más información, consulte Páginas de errorpersonalizadas y almacenamiento de errores en caché (p. 50).

8. Si configura CloudFront para devolver páginas de error personalizadas, añada o actualice loscomportamientos de la caché aplicables. Para obtener más información, consulte Crear o actualizar uncomportamiento de la caché para páginas de error personalizadas (p. 258).

9. Seleccione Yes, Edit para guardar los cambios.

Versión de API 2016-09-29261

Amazon CloudFront Guía para desarrolladoresAcerca del vídeo en streaming:

streaming bajo demanda y en directo

Vídeo bajo demanda y en streamingcon CloudFront

Puede utilizar CloudFront para distribuir vídeo bajo demanda o streaming de vídeo en directo concualquier origen HTTP. Una manera de configurar flujos de trabajo de vídeo en la nube consiste en utilizarCloudFront junto con AWS Media Services.

Temas• Acerca del vídeo en streaming: streaming bajo demanda y en directo (p. 262)• Distribución de vídeo bajo demanda con CloudFront (p. 263)• Distribución de streaming de vídeo en directo con CloudFront y AWS Media Services (p. 265)• Trabajar con distribuciones de RTMP (p. 270)

Acerca del vídeo en streaming: streaming bajodemanda y en directo

Debe utilizar un codificador para empaquetar el contenido de vídeo antes de configurar CloudFront paraque lo distribuya. Estos paquetes contienen el audio, el vídeo y los subtítulos en archivos pequeñosdenominados segmentos, cada uno de ellos con unos segundos de contenido. También contienen losarchivos de manifiesto, que los reproductores utilizan para determinar qué segmento se debe descargar ycuándo reproducirlo, en un orden específico. Los formatos comunes para los paquetes son MPEG DASH,HLS de Apple, Microsoft Smooth Streaming y CMAF.

Streaming de vídeo bajo demanda

En el streaming de vídeo bajo demanda, el contenido de vídeo se almacena en un servidor y losespectadores pueden verlo en cualquier momento. Para crear un recurso que los espectadorespuedan reproducir en streaming, utilice un transcodificador, como AWS Elemental MediaConvert, paraconvertir el archivo en un paquete de streaming.

Un vez que haya convertido el vídeo a los formatos adecuados, puede almacenarlo en un servidoro en un bucket de S3 y, a continuación, distribuirlo con CloudFront a medida que lo soliciten losespectadores.

Streaming de vídeo en directo

En el streaming de vídeo en directo, puede transmitir eventos en directo o configurar un canal endirecto 24x7. Para crear contenido en directo para su difusión y entrega mediante streaming, utilice uncodificador como AWS Elemental MediaLive.

Algunos ejemplos de eventos en directo son la radiodifusión en directo y los agregadores de contenidoque transmiten torneos deportivos, ceremonias de premios y discursos inaugurales.

Se puede configurar un canal en directo 24x7 para un estudio, una emisora o un operador de serviciosde TV de pago que desea empaquetar y distribuir un canal lineal en directo por Internet, enviando elcontenido directamente al público sin necesidad de una plataforma de distribución de terceros.

Una codificado el vídeo, puede enviarlo a AWS Elemental MediaStore o convertirlo a distintosformatos de distribución mediante AWS Elemental MediaPackage. Con cualquiera de estos orígenes,

Versión de API 2016-09-29262

Amazon CloudFront Guía para desarrolladoresDistribución de vídeo bajo demanda

puede configurar una distribución de CloudFront para distribuir el contenido. Si desea conocer lospasos 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. 266) y Distribuciónde vídeo en directo formateado con AWS Elemental MediaPackage (p. 267).

También hay otras empresas que proporcionan las herramientas que puede utilizar para vídeo enstreaming con CloudFront, tales como Wowza y Unified Streaming. Para obtener más información acercade cómo utilizar Wowza con CloudFront, consulte How to bring your Wowza Streaming Engine license toCloudFront live HTTP streaming en el sitio web Wowza. Para obtener información sobre el uso de UnifiedStreaming y CloudFront para streaming bajo demanda, consulte Amazon Instances en el sitio web deUnified Streaming.

Distribución de vídeo bajo demanda con CloudFrontPara distribuir streaming de vídeo bajo demanda, puede utilizar Amazon S3 para almacenar el contenidoen su formato original, emplear un transcodificador, como AWS Elemental MediaConvert, paratranscodificar el vídeo en formatos de streaming, almacenar el vídeo transcodificado en un bucket de S3y, a continuación, utilizar CloudFront para distribuir el vídeo a los espectadores. Si desea utilizar MicrosoftSmooth Streaming, consulte Configuración de Microsoft Smooth Streaming bajo demanda (p. 263).

Siga estos pasos para crear la solución:

• Paso 1: Cargar el contenido en un bucket de Amazon S3. Para obtener más información sobre el uso deS3, consulte la Guía para desarrolladores de Amazon Simple Storage Service.

• Paso 2: Utilizar AWS Elemental MediaConvert para convertir el vídeo a los formatos requeridos por losreproductores que utilizan los espectadores. También puede crear recursos con distintas resolucionesy tasas de bits para streaming de tasa de bits adaptativa, que ajusta la calidad de visualización enfunción del ancho de banda disponible del espectador. AWS Elemental MediaConvert devuelve el vídeotranscodificado en un bucket de S3.

• Paso 3: Distribuir el contenido convertido mediante una distribución de CloudFront, de forma que losusuarios puedan visualizarlo en cualquier dispositivo y en cualquier momento.

Tip

Para obtener más información sobre las prácticas recomendadas a la hora de implementar unflujo de trabajo de vídeo bajo demanda con los servicios en la nube de AWS, consulte Vídeo bajodemanda en AWS.También puede explorar cómo utilizar una plantilla de AWS CloudFormation para implementaruna solución de AWS de vídeo bajo demanda junto con todos los componentes asociados. Sidesea ver los pasos para utilizar la plantilla, consulte el tema relacionado con la implementaciónautomática de vídeo bajo demanda.

Temas• Configuración de Microsoft Smooth Streaming bajo demanda (p. 263)

Configuración de Microsoft Smooth Streaming bajodemandaPuede utilizar CloudFront para proporcionar vídeo bajo demanda mediante archivos transcodificados alformato Microsoft Smooth Streaming. Para distribuir contenido Smooth Streaming bajo demanda, disponede dos opciones:

Versión de API 2016-09-29263

Amazon CloudFront Guía para desarrolladoresConfiguración de Microsoft

Smooth Streaming bajo demanda

• Especifique un servidor web que ejecute Microsoft IIS y que pueda transmitir archivos transcodificadosen formato Microsoft Smooth Streaming como origen de la distribución.

• Habilite Smooth Streaming en una distribución de CloudFront. Smooth Streaming es una propiedad decomportamientos de la caché, lo que significa que puede utilizar una distribución para ofrecer archivosmultimedia Smooth Streaming y otros contenidos.

Important

Si el origen es un servidor web que ejecuta Microsoft IIS, no habilite Smooth Streaming al crear ladistribución de CloudFront. CloudFront no puede utilizar un servidor Microsoft IIS como origen sise habilita Smooth Streaming.

Si habilita Smooth Streaming para un servidor de origen (es decir, no tiene un servidor que ejecuteMicrosoft IIS), tenga en cuenta lo siguiente:

• Podrá seguir distribuyendo otro contenido mediante el mismo comportamiento de la caché si elcontenido coincide con el valor de Path Pattern del comportamiento.

• CloudFront puede utilizar un bucket de Amazon S3 o un origen personalizado para los archivosmultimedia Smooth Streaming. Sin embargo, CloudFront no podrá utilizar un servidor de Microsoft IIScomo origen si el servidor está configurado para Smooth Streaming.

• No puede invalidar archivos multimedia en formato Smooth Streaming. Si desea actualizar los archivosantes de que caduquen, debe cambiarles el nombre. Para obtener más información, consulte Añadir,eliminar o sustituir contenido que distribuye CloudFront (p. 70).

Para obtener información acerca de clientes de Smooth Streaming, consulte Smooth Streaming en el sitioweb de Microsoft.

Si desea utilizar CloudFront para transmitir archivos multimedia que se han codificado en formato MicrosoftSmooth Streaming sin usar un servidor web Microsoft IIS que pueda transmitir archivos en formato SmoothStreaming, realice las siguientes tareas:

1. Transcodifique los archivos multimedia en formato MP4 fragmentado de Smooth Streaming.2. Aplique alguna de las siguientes acciones:

• Si utiliza la consola de CloudFront: al crear una distribución web, habilite Smooth Streaming enel comportamiento de la caché predeterminado. También puede activar Smooth Streaming en elcomportamiento de la caché predeterminado o en uno o varios personalizados, en una distribuciónweb de CloudFront existente.

• Si utiliza la API de CloudFront: añada el elemento SmoothStreaming al tipo complejoDistributionConfig para el comportamiento de la caché predeterminado o para uno o variospersonalizados.

3. Cargue los archivos de las presentaciones Smooth Streaming en el 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, http://d111111abcdef8.cloudfront.net/clientaccesspolicy.xml. A continuación se muestra unejemplo de política:

<?xml version="1.0" encoding="utf-8"?><access-policy><cross-domain-access><policy><allow-from http-request-headers="*"><domain uri="*"/></allow-from><grant-to><resource path="/" include-subpaths="true"/>

Versión de API 2016-09-29264

Amazon CloudFront Guía para desarrolladoresDistribución de streaming de vídeo en directo

</grant-to></policy></cross-domain-access></access-policy>

Para obtener más información, consulte la sección Making a Service Available Across DomainBoundaries en el sitio web Microsoft Developer Network.

5. Para los enlaces de su aplicación, especifique el manifiesto del cliente en el siguiente formato:

http://d111111abcdef8.cloudfront.net/video/presentation.ism/Manifest

Distribución de streaming de vídeo en directo conCloudFront y AWS Media Services

Si desea utilizar AWS Media Services con CloudFront para distribuir contenido en directo a un públicoglobal, siga las indicaciones de esta sección.

AWS Elemental MediaLive codifica transmisiones de vídeo en directo en tiempo real. Si tiene un origende vídeo en directo de mayor tamaño, por ejemplo, vídeo proveniente de un codificador en directo comoElemental Live, puede utilizar AWS Elemental MediaLive para comprimirlo en versiones más pequeñas("codificaciones") que se distribuyen a los espectadores.

Existen dos opciones principales para preparar y distribuir contenido de streaming en directo:

• Convertir el contenido a los formatos requeridos y distribuirlo a continuación: puede utilizar AWSElemental MediaPackage para convertir el contenido de vídeo de un único formato a varios formatosy, a continuación, empaquetarlo para distintos tipos de dispositivos. AWS Elemental MediaPackagele permite implementar características de vídeo para los espectadores como, por ejemplo, comenzarde nuevo, poner en pausa, rebobinar, etc. AWS Elemental MediaPackage también puede proteger elcontenido frente a la copia no autorizada mediante la incorporación de la administración de derechosdigitales (DRM). Para obtener instrucciones paso a paso sobre cómo usar CloudFront para distribuircontenido que se ha formateado con AWS Elemental MediaPackage, consulte Distribución de vídeo endirecto formateado con AWS Elemental MediaPackage (p. 267) en este tema.

• Almacenar y distribuir el contenido mediante un origen escalable: si el codificador ya ofrece contenidoen los formatos que requieren todos los dispositivos utilizados por los espectadores, puede distribuir elcontenido mediante el uso de un origen de alta escalabilidad como un contenedor de AWS ElementalMediaStore. Para obtener instrucciones paso a paso sobre cómo usar CloudFront para distribuircontenido que está almacenado en un contenedor de AWS Elemental MediaStore, consulte Distribuciónde vídeo con AWS Elemental MediaStore como origen (p. 266) en este tema.

Una vez que haya configurado el origen mediante una de estas opciones, ya puede distribuir streaming devídeo en directo a los espectadores con CloudFront.

Tip

Para obtener más información sobre las prácticas recomendadas a la hora de implementar unflujo de trabajo de streaming de vídeo en directo con los servicios en la nube de AWS, consulte eltema relacionado con el streaming de vídeo en directo.También puede obtener información sobre una solución de AWS que implementaautomáticamente servicios para crear una experiencia de visualización en tiempo real de altadisponibilidad. Si desea ver los pasos para implementar automáticamente esta solución, consulteel tema relacionado con la implementación automatizada de streaming en directo.

Temas

Versión de API 2016-09-29265

Amazon CloudFront Guía para desarrolladoresDistribución de vídeo con AWS

Elemental MediaStore como origen

• Distribución de vídeo con AWS Elemental MediaStore como origen (p. 266)• Distribución de vídeo en directo formateado con AWS Elemental MediaPackage (p. 267)

Distribución de vídeo con AWS Elemental MediaStorecomo origenSi almacena vídeo en un contenedor de AWS Elemental MediaStore, puede crear una distribución deCloudFront para distribuir el contenido.

Para comenzar, conceda a CloudFront acceso a su contenedor de AWS Elemental MediaStore. Acontinuación, cree una distribución de CloudFront y configúrela para trabajar con AWS ElementalMediaStore.

1. Siga el procedimiento descrito en Allowing Amazon CloudFront to Access Your AWS ElementalMediaStore Container y, a continuación, vuelva a estos pasos para crear su distribución.

2. Cree una distribución con la siguiente configuración:

Nombre de dominio de origen

El punto de enlace de datos que se ha asignado a su contenedor de AWS Elemental MediaStore.En la lista desplegable, elija el contenedor de AWS Elemental MediaStore del vídeo en directo.El formato de un origen de AWS Elemental MediaStore es Container-OriginEndpointURL.Por ejemplo, mymediastore.data.mediastore.us-east-1.amazonaws.com. Para obtener másinformación, consulte Nombre de dominio de origen (p. 32).

Ruta de origen

La estructura de carpetas en el contenedor de AWS Elemental MediaStore donde se almacenansus objetos. Para obtener más información, consulte Ruta de origen (p. 33).

Origin Custom Headers

Añada nombres de encabezado y valores si desea que CloudFront incluya encabezadospersonalizados cuando reenvía solicitudes a su origen.

Almacenamiento de objetos en caché

Si el transcodificador que utiliza no puede establecer controles de caché en todos los objetos, elijaCustomize (Personalizar). Si el transcodificador puede establecer controles de caché en todos losobjetos, elija Origin Cache Headers (Encabezados de caché de origen).

Tiempo de vida mínimo, tiempo de vida máximo y tiempo de vida predeterminado

Establézcalo según corresponda a sus necesidades de almacenamiento en caché y duracionesde segmento.

TTL mínimo de almacenamiento de errores en caché

Establézcalo en 5 segundos o menos, para ayudar a evitar la distribución de contenido obsoleto.

Para el resto de la configuración, puede establecer valores específicos en función de otros requisitostécnicos o de las necesidades de su empresa. Para ver una lista de todas las opciones paradistribuciones web e información sobre la configuración, consulte Valores que deben especificarse alcrear o actualizar una distribución (p. 30).

3. Después de crear su distribución y de que se haya aprovisionado, edite el comportamiento de la cachépara configurar el uso compartido de recursos entre orígenes (CORS, por sus siglas en inglés) para suorigen:

1. Seleccione la distribución y, a continuación, Distribution Settings (Configuración de distribución).

Versión de API 2016-09-29266

Amazon CloudFront Guía para desarrolladoresDistribución de vídeo en directo formateado

con AWS Elemental MediaPackage

2. Elija Behaviors (Comportamientos), seleccione su origen y, a continuación, elija Edit (Editar).3. En Cache Based on Selected Request Headers (Caché en función de encabezados de solicitud

seleccionados), elija Whitelist (Lista blanca) y, a continuación, en Whitelist Headers (Encabezadosde lista blanca), seleccione Origin (Origen).

Para obtener más información acerca de CORS, consulte Configurar CloudFront para respetar laconfiguración de uso compartido de recursos entre orígenes (CORS) en Almacenamiento en caché decontenido en función de encabezados de solicitud (p. 201).

4. Para los enlaces de su aplicación (por ejemplo, un reproductor multimedia), especifique el nombre delarchivo multimedia en el mismo formato que utiliza para otros objetos que distribuye con CloudFront.

Distribución de vídeo en directo formateado con AWSElemental MediaPackageSi ha utilizado AWS Elemental MediaPackage para dar formato a una transmisión en directo para suvisualización, puede crear una distribución de CloudFront y configurar el comportamiento de la cachépara distribuir la transmisión en directo. En este tema, se presupone que ya ha creado un canal y que haañadido puntos de enlace para el vídeo en directo con AWS Elemental MediaPackage.

Para transmitir el vídeo con CloudFront, cree una distribución web para el canal y, a continuación, añadacada uno de los puntos de enlace de AWS Elemental MediaPackage como origen para la distribución. Esnecesario configurar los comportamientos de la caché en cada origen para redirigir el contenido de vídeocorrectamente.

Sigue estos pasos:

Temas• Paso 1: Crear y configurar una distribución de CloudFront para vídeo en directo (p. 267)• Paso 2: Añadir los otros puntos de enlace como orígenes de la distribución (p. 268)• Paso 3: Configurar los comportamientos de la caché para todos los puntos de enlace (p. 269)• Paso 4: Usar CloudFront para distribuir el canal de transmisión en directo (p. 270)

Paso 1: Crear y configurar una distribución de CloudFront paravídeo en directoRealice el procedimiento siguiente para configurar una distribución de CloudFront para el canal de vídeo endirecto que ha creado con AWS Elemental MediaPackage

Para crear una distribución web para el canal de vídeo en directo

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Seleccione Create Distribution.3. En la página Select a delivery method, en la sección Web, haga clic en Get Started.4. Elija la configuración de la distribución, incluido lo siguiente:

Nombre de dominio de origen

Es el origen donde están el canal de vídeo en directo y los puntos de enlace de AWS ElementalMediaPackage. En la lista desplegable, elija el canal de AWS Elemental MediaPackage del

Versión de API 2016-09-29267

Amazon CloudFront Guía para desarrolladoresDistribución de vídeo en directo formateado

con AWS Elemental MediaPackage

vídeo en directo. El formato de un origen de AWS Elemental MediaPackage es ChannelID-OriginEndpointID-OriginEndpointURL. Puede mapear un canal a varios puntos de enlace deorigen.

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. 32) en el tema Valoresque deben especificarse al crear o actualizar una distribución (p. 30).

Ruta de origen

Es la estructura de carpetas del AWS Elemental MediaPackage donde se almacenan los objetos.Cuando se elige un canal en la lista desplegable, la ruta se completa automáticamente.

Tenga en cuenta que si decide utilizar un canal de otra cuenta de AWS para Origin DomainName (Nombre de dominio de origen), el campo Origin Path (Ruta de origen) no se rellenaautomáticamente. Debe iniciar sesión en la otra cuenta y obtener la ruta de origen correcta deforma que pueda introducirla manualmente.

Para obtener más información sobre el funcionamiento de una ruta de origen, consulte Ruta deorigen (p. 33) en el tema Valores que deben especificarse al crear o actualizar una distribución (p. 30).

Para el resto de la configuración de la distribución, establezca valores específicos en función deotros requisitos técnicos o de las necesidades de su empresa. Para ver una lista de todas lasopciones para las distribuciones web e información sobre su configuración, consulte Valores quedeben especificarse al crear o actualizar una distribución (p. 30).

5. Especifique la configuración correcta de comportamiento de la caché para el canal que ha elegidocomo origen. Más adelante, añadirá uno o varios orígenes adicionales y editará la configuración decomportamiento de la caché para ellos.

6. Espere hasta que el valor de la columna Status (Estado) de la distribución cambie de In Progress (Encurso) a Deployed (Implementado), lo que indicará que CloudFront ha creado la distribución.

Paso 2: Añadir los otros puntos de enlace como orígenes de ladistribuciónRepita los pasos que se indican a continuación para añadir cada punto de enlace.

Para añadir otros puntos de enlace como orígenes

1. En la consola de CloudFront, elija la distribución que ha creado para el canal y, a continuación, elijaDistribution Settings (Configuración de la distribución).

2. En la pestaña Origins (Orígenes), elija Create Origin (Crear origen).3. En Origin Domain Name (Nombre de dominio de origen), en la lista desplegable, elija un punto de

enlace de AWS Elemental MediaPackage para el canal. El campo Origin Path (Ruta de origen) serellenará automáticamente.

4. Para el resto de la configuración, establezca los valores en función de otros requisitos técnicoso de las necesidades de su empresa. Para obtener más información, consulte Configuración deorigen (p. 32) en el tema Valores que deben especificarse al crear o actualizar una distribución (p. 30).

5. Seleccione Create.

Versión de API 2016-09-29268

Amazon CloudFront Guía para desarrolladoresDistribución de vídeo en directo formateado

con AWS Elemental MediaPackage

Paso 3: Configurar los comportamientos de la caché para todoslos puntos de enlaceEs necesario configurar los comportamientos de la caché de cada punto de enlace para añadir patronesde ruta que dirijan correctamente las solicitudes. Los patrones de ruta que especifique dependerán delformato de vídeo que distribuya. El procedimiento de este tema incluye la información del patrón de rutaque se va a utilizar para los formatos HLS, DASH, CMAF y Microsoft Smooth.

Normalmente, se configuran dos comportamientos de la caché para cada punto de enlace:

• El manifiesto principal, que es el índice de los archivos• El manifiesto secundario, que es el propio contenido de vídeo

Para crear un comportamiento de la caché para un punto de enlace

1. En la consola de CloudFront, elija la distribución que ha creado para el canal y, a continuación, elijaDistribution Settings (Configuración de la distribución).

2. En la pestaña Behaviors (Comportamientos), elija Create Behavior (Crear comportamiento).3. En la sección Cache Behavior Settings (Configuración del comportamiento de la caché), en Path

Pattern (Patrón de ruta), escriba el primer patrón de ruta para el tipo de punto de enlace de esteorigen. Para ello, utilice las siguientes directrices de patrones de ruta. Por ejemplo, si se trata de unpunto de enlace DASH, debería escribir *.mpd para Path Pattern (Patrón de ruta).

Patrones de ruta

Para un punto de enlace HLS, cree los dos siguientes comportamientos de la caché:• Un comportamiento de la caché con un patrón de ruta de *.m3u8 (para el manifiesto principal)• Un comportamiento de la caché con un patrón de ruta de *.ts (para los segmentos)

Para un punto de enlace CMAF, cree los dos siguientes comportamientos de la caché:• Un comportamiento de la caché con un patrón de ruta de *.m3u8 (para el manifiesto principal)• Un comportamiento de la caché con un patrón de ruta de *.mp4 (para los segmentos)

Para un punto de enlace DASH, cree los dos siguientes comportamientos de la caché:• Un comportamiento de la caché con un patrón de ruta de *.mpd (para el manifiesto principal)• Un comportamiento de la caché con un patrón de ruta de *.mp4 (para los segmentos)

En el caso de un punto de enlace de Microsoft Smooth Streaming, solo se distribuye unmanifiesto, por lo que solo debe crear un comportamiento de la caché:• Un comportamiento de la caché con un patrón de ruta de index.ism/*

Note

Deberá repetir los pasos anteriores para añadir dos comportamientos de la caché contodos los formatos de punto de enlace, a excepción de los puntos de enlace de MicrosoftSmooth Streaming.

4. Especifique las siguientes opciones para cada comportamiento de la caché:

Viewer Protocol Policy

Elija Redirect HTTP to HTTPS (Redireccionamiento de HTTP a HTTPS).Caché en función de encabezados de solicitud seleccionados

Elija None (improves caching) (Ninguno (mejora el almacenamiento en caché)).Versión de API 2016-09-29269

Amazon CloudFront Guía para desarrolladoresTrabajar con distribuciones de RTMP

Para obtener más información sobre cómo mejorar el almacenamiento en caché, consulteIncrementar la proporción de solicitudes que atienden las cachés perimetrales deCloudFront (p. 193).

Reenvío de cadenas de consulta y almacenamiento en caché

Elija Forward all, cache based on whitelist (Reenviar todo y almacenar en caché en función de lalista blanca).

Lista blanca de cadenas de consulta

Especifique la letra m como el parámetro de cadena de consulta que desea que CloudFront utilicecomo base para el almacenamiento en caché. La respuesta de AWS Elemental MediaPackagesiempre 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é.

Si utiliza la funcionalidad de visualización en diferido de AWS Elemental MediaPackage,especifique start y end como parámetros adicionales de la cadena de consulta en elcomportamiento de la caché para las solicitudes de manifiesto (*.m3u8, *.mpd e index.ism/*). De esta forma, el contenido que se distribuye es específico del periodo de tiempo solicitadoen la solicitud de manifiesto. Para obtener más información sobre la visualización en diferido ycómo dar formato a los parámetros de solicitud de inicio y finalización del contenido, consulte visualización en diferido en la Guía del usuario de AWS Elemental MediaPackage.

Almacenamiento de objetos en caché

AWS Elemental MediaPackage establece encabezados Cache-Control predeterminadosque garantizan un comportamiento correcto de la reproducción. Si desea utilizar esos valores,elija Use Origin Cache Headers (Usar encabezados de caché de origen). Sin embargo, puedeaumentar los tiempos de caché para los segmentos de vídeo. Para obtener más informaciónsobre cómo personalizar el tiempo que los objetos permanecen en la caché de CloudFront,consulte Almacenamiento de objetos en caché (p. 41) en el tema Valores que deben especificarseal crear o actualizar una distribución (p. 30).

5. Seleccione Create.6. Si el punto de enlace no es un punto de enlace de Microsoft Smooth, elija Create Behavior (Crear

comportamiento) y, a continuación, repita estos pasos para crear un segundo comportamiento de lacaché.

Paso 4: Usar CloudFront para distribuir el canal de transmisiónen directoDespués de crear la distribución, añadir los orígenes y crear los comportamientos de la caché, puededistribuir el canal de transmisión en directo mediante CloudFront. Las solicitudes de contenido de losespectadores se dirigen a los puntos de enlace de AWS Elemental MediaPackage correctos en función dela configuración establecida para los comportamientos de la caché.

Para los enlaces de la aplicación (por ejemplo, un reproductor multimedia), especifique la dirección URLdel 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. 72).

Trabajar con distribuciones de RTMPEn esta sección se describe cómo configurar y administrar distribuciones RTMP. Las distribuciones RTMPtransmiten archivos multimedia con Adobe Media Server y el Protocolo de mensajería en tiempo real

Versión de API 2016-09-29270

Amazon CloudFront Guía para desarrolladoresDistribuciones RTMP

(RTMP) de Adobe. Para obtener más información acerca de cómo crear una distribución RTMP, consulteLista de tareas para transmitir archivos multimedia mediante RTMP (p. 273).

Temas• Distribuciones RTMP (p. 271)• Cómo funcionan las distribuciones RTMP (p. 271)• Lista de tareas para transmitir archivos multimedia mediante RTMP (p. 273)• Crear una distribución RTMP desde la consola de CloudFront (p. 273)• Valores que especifica al crear o actualizar una distribución RTMP (p. 274)• Valores que CloudFront muestra en la consola al crear o actualizar una distribución RTMP (p. 278)• Configurar el reproductor multimedia (p. 279)• Utilizar un bucket de Amazon S3 como origen de una distribución RTMP (p. 280)• Crear varias distribuciones RTMP para un servidor de origen (p. 281)• Restringir el acceso con crossdomain.xml (p. 281)• Códigos de error de distribuciones RTMP (p. 281)• Solucionar problemas de distribuciones RTMP (p. 282)

Distribuciones RTMPLas distribuciones RTMP transmiten archivos multimedia con Adobe Media Server y el Protocolo demensajería en tiempo real (RTMP) de Adobe. Una distribución RTMP debe utilizar un bucket de AmazonS3 como origen.

Para obtener información acerca de los valores que debe especificar al crear una distribución RTMP,consulte Trabajar con distribuciones de RTMP (p. 270). Para obtener información acerca de lacreación de distribuciones RTMP, consulte Lista de tareas para transmitir archivos multimedia medianteRTMP (p. 273).

Cómo funcionan las distribuciones RTMPPara transmitir archivos multimedia a través de CloudFront, debe proporcionar dos tipos de archivo a losusuarios finales:

• Sus archivos multimedia• Un reproductor multimedia, por ejemplo, JW Player, Flowplayer o Adobe Flash

Los usuarios finales ven sus archivos multimedia en el reproductor multimedia que les proporcione; noutilizan ningún reproductor instalado en su equipo u otro dispositivo.

Cuando un usuario final recibe su archivo multimedia en streaming, el reproductor multimedia comienzaa reproducir su contenido mientras se sigue descargando de CloudFront. El archivo multimedia no sealmacena localmente en el sistema del usuario final.

Para que CloudFront envíe el reproductor y los archivos multimedia, necesita dos tipos de distribuciones:una web para el reproductor y una RTMP para los archivos. Las distribuciones web ofrecen archivosa través de HTTP y las distribuciones RTMP transmiten archivos multimedia a través de RTMP (o unavariante de RTMP).

En el siguiente ejemplo se supone que los archivos multimedia y el reproductor multimedia se almacenanen diferentes buckets de Amazon S3, pero no es necesario, ya que puede almacenar ambos en el mismo

Versión de API 2016-09-29271

Amazon CloudFront Guía para desarrolladoresCómo funcionan las distribuciones RTMP

bucket de Amazon S3. También puede poner el reproductor multimedia a disposición de los usuariosfinales de otras maneras, por ejemplo, con CloudFront y un origen personalizado. Sin embargo, losarchivos multimedia deben utilizar un bucket de Amazon S3 como origen.

En el siguiente diagrama, su sitio ofrece una copia almacenada en caché del reproductor multimediaa cada usuario final a través del dominio d1234.cloudfront.net. A continuación, el reproductormultimedia obtiene acceso a copias de los archivos multimedia almacenadas en caché a través deldominio s5678.cloudfront.net.

1. El bucket del reproductor multimedia contiene el reproductor multimedia y es el servidor de origenpara una distribución de HTTP normal. En este ejemplo, el nombre de dominio de la distribución esd1234.cloudfront.net. (La d en d1234.cloudfront.net indica que se trata de una distribuciónweb).

2. El bucket de archivos de streaming contiene los archivos multimedia y es el servidor de origen parauna distribución de RTMP regular. En este ejemplo, el nombre de dominio de la distribución ess5678.cloudfront.net. (La s en s5678.cloudfront.net indica que se trata de una distribuciónRTMP).

Al configurar CloudFront para distribuir archivos multimedia, CloudFront utiliza Adobe Flash Media Servercomo el servidor de streaming y transmite los archivos multimedia con el protocolo de mensajería entiempo real (RTMP) de Adobe. CloudFront acepta solicitudes RTMP enviadas a través de los puertos 1935y 80.

CloudFront admite las siguientes variantes del protocolo RTMP:

• RTMP: protocolo de mensajes en tiempo real de Adobe.• RTMPT: streaming de Adobe por túnel a través de HTTP.• RTMPE: cifrado por Adobe.• RTMPTE: cifrado por Adobe y por túnel a través de HTTP.

Versión de API 2016-09-29272

Amazon CloudFront Guía para desarrolladoresLista de tareas para transmitir

archivos multimedia mediante RTMP

Lista de tareas para transmitir archivos multimediamediante RTMPEn esta sección se resume el proceso general de configuración de streaming bajo demanda mediante elprotocolo RTMP de Adobe para cualquier reproductor multimedia.

La siguiente lista de tareas resume el proceso de creación de una distribución web.

Para crear una distribución RTMP

1. Cree un bucket de Amazon S3 para sus archivos multimedia. Si está utilizando otro bucket deAmazon S3 para su reproductor multimedia, cree un bucket de Amazon S3 más para los archivos delreproductor multimedia.

Los nombres de los buckets deben escribirse en letras minúsculas y no contener espacios.2. Elija y configure un reproductor multimedia para reproducir los archivos multimedia. Para obtener más

información, consulte la documentación del reproductor multimedia.3. Cargue los archivos de su reproductor multimedia en el origen desde el que desea que CloudFront

obtenga los archivos. Si utiliza un bucket de Amazon S3 como origen del reproductor multimedia,permita que los archivos (no el bucket) sean legibles públicamente.

4. Cree una distribución web para su reproductor multimedia. (También puede utilizar una distribuciónque ya exista). Para obtener más información, consulte Pasos para crear una distribución (Informacióngeneral) (p. 28).

5. Cargue los archivos multimedia en el bucket de Amazon S3 que ha creado para los archivosmultimedia y permita que el contenido (no el bucket) sea legible públicamente.

Important

La extensión de archivo de los archivos multimedia del contenedor Flash Video debe ser .flv;en caso contrario, no se transmitirán.

Puede guardar los archivos del reproductor multimedia y los multimedia en el mismo bucket.6. Cree una distribución RTMP para sus archivos multimedia:

• Para obtener más información acerca de cómo crear una distribución web en la consola deCloudFront, consulte Crear una distribución RTMP desde la consola de CloudFront (p. 273).

• Para obtener información sobre cómo crear una distribución web con la API de CloudFront, consulteCreateStreamingDistribution en la Amazon CloudFront API Reference.

7. Configure su reproductor multimedia. Para obtener más información, consulte Configurar elreproductor multimedia (p. 279).

Si tiene problemas para reproducir el contenido, consulte Solucionar problemas de distribucionesRTMP (p. 282).

Crear una distribución RTMP desde la consola deCloudFrontEn el siguiente procedimiento se explica cómo crear una distribución RTMP desde la consolade CloudFront. Para crear una distribución RTMP con la API de CloudFront, consulteCreateStreamingDistribution en la Amazon CloudFront API Reference.

Para consultar el límite actual de la cantidad de distribuciones RTMP que puede crear en cadacuenta de AWS, consulte los Límites de Amazon CloudFront Limits en la Referencia general de

Versión de API 2016-09-29273

Amazon CloudFront Guía para desarrolladoresValores que especifica al crear oactualizar una distribución RTMP

Amazon Web Services. Para solicitar un límite que admita más distribuciones RTMP, diríjasea https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions.

Para crear una distribución RTMP desde la consola de CloudFront

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Haga clic en Crear distribución.3. En la primera página de Create Distribution Wizard, en la sección RTMP, elija Get Started.4. Especifique la configuración de la distribución. Para obtener más información, consulte Valores que

especifica al crear o actualizar una distribución RTMP (p. 274).5. Haga clic en Crear distribución.6. Después de que CloudFront crea la distribución, el valor de la columna Status de la distribución

cambia de InProgress a Deployed. Si había habilitado la distribución, entonces está lista para procesarsolicitudes. Este proceso no debería tardar más de 15 minutos.

El nombre de dominio que CloudFront asigna a su distribución aparece en la lista de distribuciones. Elnombre de dominio también aparece en la pestaña General de la distribución seleccionada.

Valores que especifica al crear o actualizar unadistribución RTMPPara transmitir archivos multimedia a través de CloudFront, cree una distribución RTMP y especifique lossiguientes valores.

Temas• Nombre de dominio de origen (bucket de Amazon S3) (p. 274)• Restringir acceso al bucket (solo para Amazon S3) (p. 275)• Identidad de acceso de origen (solo para Amazon S3) (p. 275)• Comentario acerca de la nueva identidad (solo para Amazon S3) (p. 276)• Sus identidades (solo para Amazon S3) (p. 276)• Conceder permisos de lectura en buckets (solo para Amazon S3) (p. 276)• Clase de precio (p. 276)• Nombres de dominio alternativos (CNAME) (p. 276)• Registro (p. 276)• Bucket para registros (p. 277)• Prefijo de registros (p. 277)• Comentario (p. 277)• Estado de la distribución (p. 277)• Restringir el acceso a espectadores (mediante URL firmadas) (p. 278)• Signatarios de confianza (p. 278)• Números de cuenta de AWS (p. 278)

Nombre de dominio de origen (bucket de Amazon S3)El nombre de dominio de DNS del bucket de Amazon S3 desde el que desea que CloudFront obtengaobjetos para este origen, por ejemplo, myawsbucket.s3.amazonaws.com. Seleccione el campo nombre

Versión de API 2016-09-29274

Amazon CloudFront Guía para desarrolladoresValores que especifica al crear oactualizar una distribución RTMP

de dominio de origen en la consola de CloudFront y una lista mostrará los buckets de Amazon S3 queestén asociados a la cuenta de AWS. Para utilizar un bucket de otra cuenta de AWS, escriba el nombre dedominio del bucket en el siguiente formato:

bucket-name.s3.amazonaws.com

Si el bucket se encuentra en la región EE. UU. Estándar y desea que Amazon S3 direccione las solicitudesa una instalación en el norte de Virginia, utilice el siguiente formato:

bucket-name.s3-external-1.amazonaws.com

Si ha configurado Transfer Acceleration de Amazon S3 en su bucket, no especifique el punto de enlaces3-accelerate para Origin Domain Name.

Los archivos deben ser legibles públicamente a no ser que proteja su contenido en Amazon S3 medianteuna identidad de acceso de origen de CloudFront. Para obtener más información, consulte Restricción delacceso a contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 110).

Important

El nombre de bucket deben cumplir los requisitos de nomenclatura de DNS. Para obtener másinformación, visite la sección Bucket Restrictions and Limitations en la Guía para desarrolladoresde Amazon Simple Storage Service.

Al cambiar el bucket desde el que CloudFront obtiene los objetos del origen actual, CloudFrontinmediatamente comienza a replicar el cambio en las ubicaciones de borde de CloudFront. Hasta quela configuración de la distribución se actualiza en una ubicación de borde determinada, CloudFrontcontinúa reenviando solicitudes al bucket de Amazon S3 anterior. Tan pronto como la configuración dela distribución se actualiza esa ubicación de borde, CloudFront comienza a reenviar solicitudes al nuevobucket de Amazon S3.

Cambiar el bucket no requiere que CloudFront vuelva a incluir los cachés perimetrales con objetos delnuevo origen. Siempre que las solicitudes de los espectadores en su aplicación no cambien, CloudFrontseguirá ofreciendo objetos que ya estén en una caché perimetral hasta que el TTL de cada objeto caduqueo hasta que los objetos poco solicitados sean desalojados.

Para obtener más información, consulte Utilizar un bucket de Amazon S3 como origen de una distribuciónRTMP (p. 280).

Restringir acceso al bucket (solo para Amazon S3)Haga clic en Yes si desea exigir a los usuarios finales que obtengan acceso a objetos en un bucket deAmazon S3 solo mediante de URL de CloudFront y no mediante URL de Amazon S3. A continuación,especifique los valores aplicables.

Haga clic en No si desea que los usuarios finales puedan obtener acceso a los objetos a través dedirecciones URL de CloudFront o de Amazon S3.

Para obtener más información, consulte Restricción del acceso a contenido de Amazon S3 utilizando unaidentidad de acceso de origen (p. 110).

Identidad de acceso de origen (solo para Amazon S3)Si selecciona Yes en Restrict Bucket Access, elija entre crear una nueva identidad de acceso de origeno usar una que esté asociada a su cuenta de AWS. Si ya tiene una identidad de acceso de origen, lerecomendamos que use esa para facilitar el mantenimiento. Para obtener más información acerca de lasidentidades de acceso de origen, consulte Restricción del acceso a contenido de Amazon S3 utilizandouna identidad de acceso de origen (p. 110).

Versión de API 2016-09-29275

Amazon CloudFront Guía para desarrolladoresValores que especifica al crear oactualizar una distribución RTMP

Comentario acerca de la nueva identidad (solo para Amazon S3)Si elige Create a New Identity en Origin Access Identity, escriba un comentario que identifique lanueva identidad de acceso de origen. CloudFront creará la identidad de acceso de origen al crear estadistribución.

Sus identidades (solo para Amazon S3)Si elige Use an Existing Identity en Origin Access Identity, seleccione la identidad de acceso de origen quedesea utilizar. No puede utilizar una identidad de acceso de origen asociada a otra cuenta de AWS.

Conceder permisos de lectura en buckets (solo para Amazon S3)Si desea que CloudFront conceda automáticamente a la identidad de acceso de origen permisos de lecturade objetos de su bucket de Amazon S3, haga clic en Yes, Update Bucket Policy.

Important

Al hacer clic en Yes, Update Bucket Policy, CloudFront actualiza la política del bucket paraconceder a la identidad de acceso de origen especificada permisos de lectura de objetos de dichobucket. Sin embargo, CloudFront no elimina los permisos existentes de la política del bucket ni lospermisos sobre objetos individuales. Si los usuarios tenían permisos de acceso a los objetos endicho depósito con URL de Amazon S3, los conservan aún después de que CloudFront actualizala política del bucket. Para ver o cambiar la política actual del bucket y los permisos actuales delos objetos en dicho bucket, utilice un método proporcionado por Amazon S3. Para obtener másinformación, consulte Otorgar a la identidad de acceso de origen permisos de lectura de objetosdel bucket de Amazon S3 (p. 113).

Si desea actualizar los permisos de forma manual, por ejemplo, si desea actualizar las ACL en sus objetosen lugar de la actualizar los permisos del bucket, haga clic en No, I will Update Permissions.

Clase de precioLa clase de precio que corresponde al precio máximo que desea pagar por el servicio de CloudFront. Deforma predeterminada, CloudFront ofrece sus objetos desde ubicaciones de borde en todas las regionesde CloudFront.

Para obtener más información acerca de las clases de precios y cómo la clase que elija afecta eldesempeño de CloudFront para su distribución, visite Elegir la clase de precio de una distribución deCloudFront (p. 10). Para obtener información acerca de precios de CloudFront. incluido cómo las clases secorresponden con las regiones de CloudFront, visite Precios de Amazon CloudFront.

Nombres de dominio alternativos (CNAME)Opcional. Puede asociar uno o varios alias de CNAME a una distribución para utilizar su nombre dedominio (por ejemplo, example.com) en las URL de sus objetos en lugar de utilizar el nombre de dominioque CloudFront asigna al crear su distribución. Para obtener más información, consulte Uso de URLpersonalizadas para archivos añadiendo nombres de dominio alternativos (CNAME) (p. 60).

RegistroSi desea que CloudFront registre información acerca de cada solicitud de un objeto y almacene losarchivos de registro en un bucket de Amazon S3. Puede habilitar o deshabilitar el registro de accesoen cualquier momento. No se aplica ningún cargo adicional si activa los registros, pero se acumulan

Versión de API 2016-09-29276

Amazon CloudFront Guía para desarrolladoresValores que especifica al crear oactualizar una distribución RTMP

los cargos típicos de Amazon S3 por almacenar y obtener acceso a los archivos que se encuentrenen el bucket de Amazon S3. Puede eliminar los registros en cualquier momento. Para obtener másinformación acerca de los registros de acceso de CloudFront, consulte Configuración y uso de registros deacceso (p. 371)

Bucket para registrosSi ha seleccionado On en Logging, el bucket de Amazon S3 en el que desea que CloudFront guarde losarchivos, por ejemplo, myawslogbucket.s3.amazonaws.com. Si habilita el registro, CloudFront registrainformación acerca de las solicitudes de cada objeto realizadas por cada usuario final y almacena losarchivos en el bucket de Amazon S3 especificado. Puede habilitar o deshabilitar el registro de accesoen cualquier momento. Para obtener más información acerca de los registros de acceso de CloudFront,consulte Configuración y uso de registros de acceso (p. 371)

Note

Debe tener los permisos necesarios para obtener y actualizar ACL de buckets de Amazon S3 y laACL de S3 del bucket debe concederle FULL_CONTROL. Esto permite a CloudFront concederle aawsdatafeeds permiso en la cuenta para guardar archivos de registro en el bucket. Para obtenermás información, consulte Permisos necesarios para configurar el registro y el acceso a susarchivos de registro (p. 373).

Prefijo de registrosOpcional. Si eligió On en Logging, especifique la cadena, de haberla, a la que CloudFront debe añadirun prefijo para los nombres de archivo de los registros de acceso de esta distribución, por ejemplo,exampleprefix/. La barra inclinada (/) al final es opcional pero recomendable para simplificar lanavegación de los archivos de registro. Para obtener más información acerca de los registros de acceso deCloudFront, consulte Configuración y uso de registros de acceso (p. 371)

ComentarioOpcional. Al crear una distribución, puede incluir un comentario de hasta 128 caracteres. Puedeactualizarlo en cualquier momento.

Estado de la distribuciónAl crear una distribución, debe especificar si desea que la distribución esté habilitada o deshabilitada unavez creada:

• Enabled significa que tan pronto como la distribución se implemente totalmente, podrá implementarenlaces que utilizan el nombre de dominio de la distribución y los usuarios finales podrán recuperarcontenido. Cuando una distribución está habilitada, CloudFront acepta y procesa cualquier solicitudde contenido realizada por cualquier usuario final y que utilice el nombre de dominio asociado a esadistribución.

Al crear, modificar o eliminar una distribución de CloudFront, lleva tiempo para propagar los cambiosa la base de datos de CloudFront. Una solicitud inmediata para obtener información acerca de unadistribució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 significa que, aunque la distribución puede haberse implementado y estar lista para su uso,los usuarios finales no pueden utilizarla. Cuando una distribución está deshabilitada, CloudFront noacepta ninguna solicitud realizada por ningún usuario final y que utilice el nombre de dominio asociadoa esa distribución. Hasta que no cambie la distribución de deshabilitada a habilitada (actualizando de ladistribución de la configuración), nadie podrá utilizarla.

Versión de API 2016-09-29277

Amazon CloudFront Guía para desarrolladoresValores que CloudFront muestra en la consola

al crear o actualizar una distribución RTMP

Puede cambiar una distribución entre habilitada y deshabilitada tantas veces como quiera. Para obtenermás información acerca de cómo actualizar una configuración de distribución, consulte Visualizar yactualizar distribuciones (p. 53).

Restringir el acceso a espectadores (mediante URL firmadas)Si desea que las solicitudes de objetos ofrecidos por esta distribución utilicen URL públicas, haga clicen No. Si desea que las solicitudes utilicen URL firmadas, haga clic en Yes. A continuación, especifiquelas cuentas de AWS que desea utilizar para crear URL firmadas; a estas cuentas se les conoce comosignatarios de confianza.

Para obtener más información acerca de los signatarios de confianza, consulte Especificar las cuentas deAWS que pueden crear URL firmadas y cookies firmadas (signatarios de confianza) (p. 130).

Signatarios de confianzaSeleccione las cuentas de AWS que desea utilizar como signatarios de confianza para esta distribución:

• Self: utilice la cuenta con la que tiene la sesión iniciada en la Consola de administración de AWS comosignatario de confianza. Si actualmente su sesión está iniciada como usuario de IAM, la cuenta de AWSasociada se añade como signatario de confianza.

• Specify Accounts: escriba los números de cuenta de los signatarios de confianza en el campo AWSAccount Numbers.

Para crear URL firmadas, la cuenta de AWS debe tener al menos un par de claves de CloudFront activas.Important

Si está actualizando una distribución que ya utiliza para distribuir contenido, añada signatariosde 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 URLfirmadas para obtener acceso a cualquier objeto ofrecido por la distribución.

Números de cuenta de AWSSi desea crear URL firmadas a través de cuentas de AWS además de —o en lugar de— hacerlo conla cuenta actual, escriba un número de cuenta de AWS por línea en este campo. Tenga en cuenta losiguiente:

• Las cuentas que especifique deben tener al menos un par de claves de CloudFront activas. Paraobtener más información, consulte Crear pares de claves de CloudFront para sus signatarios deconfianza (p. 131).

• No puede crear pares de claves de CloudFront para usuarios de IAM, lo que significa que no puedeutilizar 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 How Do IGet Security Credentials? en Referencia general de Amazon Web Services.

• Si escribe el número de la cuenta actual, CloudFront marca automáticamente la casilla Self y elimina sunúmero de la lista AWS Account Numbers.

Valores que CloudFront muestra en la consola al crearo actualizar una distribución RTMPAl crear una nueva distribución RTMP o actualizarla, CloudFront muestra la siguiente información en suconsola.

Versión de API 2016-09-29278

Amazon CloudFront Guía para desarrolladoresConfigurar el reproductor multimedia

Note

Los signatarios de confianza activos, esto es, las cuentas de AWS con un par de claves deCloudFront activas y que se pueden utilizar para crear URL firmadas válidas, actualmente no sonvisibles en la consola de CloudFront.

ID de distribuciónAl ejecutar una acción en una distribución mediante la API de CloudFront, use el ID de distribución paraespecificar en qué distribución desea que se ejecute dicha acción, EDFDVBD6EXAMPLE. No se puedecambiar el ID de distribución.

EstadoLos posibles valores del estado de una distribución se muestran en la siguiente tabla.

Valor Descripción

InProgress La distribución se está creando o actualizando.

Deployed La distribución se ha creado o actualizado y los cambios se han propagado porcompleto al sistema de CloudFront.

Además de asegurarse de que el estado de la distribución sea Deployed, debe habilitar la distribuciónantes de que los usuarios finales puedan utilizar CloudFront para obtener acceso a su contenido. Paraobtener más información, consulte Estado de la distribución (p. 277).

Última modificaciónLa fecha y hora de la última modificación de la distribución, con formato ISO 8601; por ejemplo,2012-05-19T19:37:58Z. Para obtener más información, consulte http://www.w3.org/TR/NOTE-datetime.

Nombre de dominioPuede utilizar el nombre de dominio de la distribución en los enlaces a sus objetos, a menos queesté utilizando nombres de dominio alternativo (CNAME). Por ejemplo, si el nombre de dominio desu distribución es d111111abcdef8.cloudfront.net, el enlace al archivo de ejemplo /images/image.jpg será http://d111111abcdef8.cloudfront.net/images/image.jpg. No se puedecambiar el nombre de dominio de CloudFront para la distribución. Para obtener más información acercade las URL de CloudFront para los objetos, consulte Personalización del formato de URL para archivos enCloudFront (p. 72).

Si especificó uno o varios nombres de dominio alternativo (CNAME), puede utilizar sus propios nombres dedominio en lugar del nombre de dominio de CloudFront para los enlaces a sus objetos. Para obtener másinformación acerca de CNAME, consulte Nombres de dominio alternativos (CNAME) (p. 46).

Note

Los nombres de dominio de CloudFront son únicos. El nombre de dominio de la distribución nuncase utilizó para una distribución anterior y nunca se reutilizará para otra distribución futura.

Configurar el reproductor multimediaPara reproducir un archivo multimedia, debe configurar el reproductor con la ruta correcta al archivo. Laforma de configurar los archivos multimedia dependerá de su reproductor multimedia y de cómo lo utilice.

Versión de API 2016-09-29279

Amazon CloudFront Guía para desarrolladoresUtilizar un bucket de Amazon S3 como

origen de una distribución RTMP

Al configurar el reproductor multimedia, la ruta que defina hacia el archivo multimedia debe contener loscaracteres cfx/st inmediatamente después del nombre de dominio, por ejemplo:

rtmp://s5c39gqb8ow64r.cloudfront.net/cfx/st/mediafile.flv.

Note

CloudFront cumple con los requisitos de nomenclatura de FMS de Adobe. Cada reproductortiene sus propias reglas de especificación de transmisiones. El ejemplo anterior es de JW Player.Consulte la documentación del reproductor. Por ejemplo, Adobe Flash Media Server no permite laextensión .flv en la ruta de reproducción. Muchos reproductores eliminan la extensión.flv.

Su reproductor multimedia puede solicitar la ruta independientemente del nombre del archivo. Por ejemplo,en el asistente de JW Player, se deben especificar las variables streamer y file:

• streamer: rtmp://s5c39gqb8ow64r.cloudfront.net/cfx/st (sin barra inclinada al final)• file: mediafile.flv

Si ha almacenado los archivos multimedia en un directorio de su bucket (por ejemplo, videos/mediafile.flv), las variables de JW Player serían:

• streamer: rtmp://s5c39gqb8ow64r.cloudfront.net/cfx/st (sin barra inclinada al final)• file: videos/mediafile.flv

Para utilizar el asistente JW Player, visite la página Setup Wizard del sitio web de JW Player.

Archivos MPEGPara enviar archivos de audio MP3 o de video H.264/MPEG-4, probablemente necesite añadir el prefijomp3: o mp4: al nombre del archivo. Algunos reproductores multimedia se pueden configurar para añadirlos prefijos automáticamente. El reproductor multimedia también podría requerir que especifique el nombrede archivo sin su extensión (por ejemplo, magicvideo en lugar de magicvideo.mp4).

Utilizar un bucket de Amazon S3 como origen de unadistribución RTMPAl crear una distribución web, usted especifica de dónde CloudFront obtiene los archivos que distribuyea las ubicaciones de borde. Si se trata de una distribución RTMP, debe utilizar un bucket de Amazon S3;los orígenes personalizados no son compatibles. Para obtener los objetos en el bucket, puede utilizarcualquier método admitido por Amazon S3, por ejemplo, la API de Amazon S3 o una herramienta deterceros. Puede crear una jerarquía en su bucket, del mismo modo que lo haría con cualquier otro bucketde Amazon S3. Se le cobrarán los cargos habituales de Amazon S3 por almacenar los objetos en elbucket. Para obtener más información acerca de los cargos por uso de CloudFront, consulte Informes deCloudFront (p. 344).

El uso de un bucket de Amazon S3 ya existente como su servidor de origen de CloudFront no cambia elbucket en absoluto. Puede utilizarlo como lo haría normalmente para almacenar y obtener acceso a losobjetos de Amazon S3 (a precios normales de Amazon S3).

Puede utilizar el mismo bucket de Amazon S3 para las distribuciones web y RTMP.

Note

Después de crear una distribución RTMP, no puede cambiar su servidor de origen. Si necesitacambiar el bucket de Amazon S3 de una distribución RTMP, debe crear una nueva distribuciónque utilice el nuevo bucket y actualizar sus vínculos o sus registros DNS para utilizar el nombre

Versión de API 2016-09-29280

Amazon CloudFront Guía para desarrolladoresCrear varias distribuciones RTMP para un servidor de origen

de dominio de la nueva distribución. Una vez finalizado ese paso, podrá eliminar la distribuciónoriginal. Para obtener más información, consulte Eliminar una distribución (p. 54).

Al especificar el nombre del bucket de Amazon S3 del que desea que CloudFront obtenga objetos, sesuele utilizar el siguiente formato:

bucket-name.s3.amazonaws.com

Si el bucket se encuentra en la región EE. UU. Estándar y desea que Amazon S3 direccione las solicitudesa una instalación en el norte de Virginia, utilice el siguiente formato:

bucket-name.s3-external-1.amazonaws.com

No especifique el nombre del bucket con los siguientes valores:

• El tipo de ruta de Amazon S3, s3.amazonaws.com/bucket-name• El CNAME de Amazon S3, de haberlo.

Important

Para que su bucket pueda funcionar con CloudFront, el nombre debe cumplir los requisitos denomenclatura de DNS. Para obtener más información, visite la sección Bucket Restrictions andLimitations en la Guía para desarrolladores de Amazon Simple Storage Service.

Crear varias distribuciones RTMP para un servidor deorigenPor lo general, se crea una distribución RTMP por bucket de Amazon S3, pero también puede crearvarias distribuciones RTMP para el mismo bucket. Por ejemplo, si tiene dos distribuciones para unbucket de Amazon S3, puede hacer referencia a un único archivo multimedia mediante cualquiera de lasdistribuciones. En este caso, si hubiera un archivo multimedia denominado media.flv en su servidorde origen, CloudFront trabajaría con cada distribución como si hiciera referencia a un objeto media.flvindividual: un media.flv accesible a través de una distribución, y otro media.flv accesible a través dela otra distribución.

Restringir el acceso con crossdomain.xmlEl archivo de Adobe Flash Media Server crossdomain.xml especifica qué dominios puedenobtener acceso a archivos multimedia en un dominio determinado. CloudFront proporciona un archivopredeterminado que permite a todos los dominios obtener acceso a los archivos multimedia de ladistribución RTMP; este comportamiento no se puede cambiar. Si incluye un archivo crossdomain.xmlmás restrictivo en su bucket de Amazon S3, CloudFront lo pasa por alto.

Códigos de error de distribuciones RTMPEn la siguiente tabla se muestran los códigos de error que CloudFront puede enviar asu reproductor multimedia. Los errores que forman parte de la cadena se devuelven conEvent.info.application.message o Event.info.description.

Error Descripción

DistributionNotFound No se ha encontrado la distribución.

DistributionTypeMismatch La distribución no es una distribución RTMP.

Versión de API 2016-09-29281

Amazon CloudFront Guía para desarrolladoresSolucionar problemas de distribuciones RTMP

Error Descripción

InvalidInstance La instancia no es válida.

InvalidURI La URI no es válida.

Solucionar problemas de distribuciones RTMPSi tiene problemas para obtener los archivos multimedia, revise los siguientes elementos.

Elemento a revisar Descripción

Distribucionesindependientes para losarchivos del reproductormultimedia y losarchivos multimedia

El reproductor multimedia deberá ser ofrecido por una distribución de HTTPhabitual (por ejemplo, nombre de dominio d111111abcdef8.cloudfront.net) ylos archivos multimedia deberán ser ofrecidos por una distribución RTMP (porejemplo, nombre de dominio s5c39gqb8ow64r.cloudfront.net). Asegúrese deno utilizar la misma distribución para ambos.

/cfx/st en la ruta delarchivo

Confirme que la ruta del archivo contiene /cfx/st. No es necesario incluir/cfx/st en la ruta al objeto del bucket de Amazon S3. Para obtener másinformación, consulte Configurar el reproductor multimedia (p. 279).

Nombres de archivos enla ruta al archivo

Algunos reproductores multimedia requieren que incluya la extensión delnombre del archivo (por ejemplo, mp4:) antes del nombre de archivo enla ruta. Otros reproductores multimedia requieren más bien que excluya laextensión del nombre del archivo (por ejemplo, .mp4) de la ruta. Para obtenermás información, consulte Archivos MPEG (p. 280).

Note

Los nombres de los archivos multimedia del bucket de Amazon S3siempre debe incluir su extensión.

Puerto 1935 en elfirewall

Adobe Flash Media Server utiliza el puerto 1935 para RTMP. Asegúrese deque el puerto de ese firewall está abierto. Si no lo está, el mensaje que sueledevolver es "Unable to play video.". También puede cambiar a RTMPT contúnel a través de HTTP y del puerto 80.

Mensajería de AdobeFlash Player

De forma predeterminada, Adobe Flash Player no muestra ningún mensajesi falta el archivo de video que intenta reproducir. En su lugar, espera a queel archivo aparezca. Posiblemente quiera cambiar este comportamiento paraofrecer a sus usuarios finales una mejor experiencia.

Para que, en su lugar, el reproductor envíe un mensaje en caso de que falte elvideo, utilice play("vid",0,-1) en lugar de play("vid").

Versión de API 2016-09-29282

Amazon CloudFront Guía para desarrolladores

Personalización de contenidos en elborde con Lambda@Edge

Lambda@Edge es una extensión de AWS Lambda, un servicio informático que le permite ejecutarfunciones que personalizan el contenido que entrega CloudFront. Puede crear funciones en una región yejecutarlas en cualquier ubicación de AWS de todo el mundo más cercana al espectador sin aprovisionarni administrar servidores. Lambda@Edge se escala automáticamente, desde unas pocas solicitudesal día a miles de solicitudes por segundo. Procesar solicitudes en ubicaciones de AWS más cercanasal espectador en lugar de en servidores de origen reduce significativamente la latencia y mejora laexperiencia del usuario.

Al asociar una distribución de CloudFront con una función de Lambda@Edge, CloudFront intercepta lassolicitudes y respuestas en las ubicaciones de borde de CloudFront. Puede ejecutar funciones de Lambdacuando ocurren los siguientes eventos de CloudFront:

• Cuando CloudFront recibe una solicitud de un espectador (solicitud del espectador).• Antes de que CloudFront reenvíe una solicitud al origen (solicitud al origen).• Cuando CloudFront recibe una respuesta del origen (respuesta del origen).• Antes de que CloudFront devuelva la respuesta al espectador (respuesta al espectador).

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 veandistintas versiones de un sitio para pruebas A/B.

• CloudFront puede devolver diferentes objetos a espectadores en función del dispositivo que esténutilizando comprobando el encabezado User-Agent, que incluye información acerca de losdispositivos. Por ejemplo, CloudFront puede devolver imágenes diferentes en función del tamaño de laspantallas de su dispositivo. Del mismo modo, la función podría tener en cuenta el valor del encabezadoReferer 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 quevende ropa, si utiliza cookies para indicar el color de chaqueta que eligió un usuario, la función deLambda puede cambiar la solicitud para que CloudFront devuelva la imagen de una chaqueta del colorseleccionado.

• Una función de Lambda puede generar respuestas HTTP cuando ocurran eventos de solicitudes alorigen o del espectador de CloudFront.

• Una función puede inspeccionar encabezados o tokens de autorización e insertar un encabezado paracontrolar 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 confirmarcredenciales 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. 319).

Temas• Primeros pasos para la creación y uso de funciones de Lambda@Edge (p. 284)• Configuración de permisos y roles de IAM para Lambda@Edge (p. 295)

Versión de API 2016-09-29283

Amazon CloudFront Guía para desarrolladoresPrimeros pasos para la creación y

uso de funciones de Lambda@Edge

• Escritura y creación de una función de Lambda@Edge (p. 299)• Adición de disparadores para una función de Lambda@Edge (p. 303)• Prueba y depuración de funciones de Lambda@Edge (p. 308)• Métricas de CloudWatch y CloudWatch Logs para funciones de Lambda (p. 308)• Eliminación de funciones de Lambda@Edge y réplicas (p. 309)• Estructura de eventos (p. 309)• Generación de respuestas HTTP en los disparadores de solicitud (p. 316)• Actualización de respuestas HTTP en disparadores de respuesta del origen (p. 318)• Funciones de ejemplo de Lambda@Edge (p. 319)• Requisitos y restricciones en funciones de Lambda (p. 333)

Primeros pasos para la creación y uso de funcionesde Lambda@Edge

Puede utilizar las funciones de Lambda@Edge para realizar una gran cantidad de cosas útiles, pero puedeparecer un poco complicado al principio. En esta sección, se explica a grandes rasgos cómo funcionaLambda@Edge con CloudFront y se proporciona un tutorial en el que se detallan los pasos por medio deun ejemplo sencillo.

Tip

Cuando esté familiarizado con el funcionamiento de Lambda@Edge y haya creado una función deLambda@Edge, puede obtener más información sobre cómo puede utilizar Lambda@Edge parasus propias soluciones personalizadas. Por ejemplo, sobre cómo crear y actualizar funciones, laestructura de los eventos y la adición de disparadores de CloudFront. También puede encontrarmás ideas y obtener ejemplos de código en Funciones de ejemplo de Lambda@Edge (p. 319).

A continuación se muestra una descripción general de cómo crear y usar funciones de Lambda conCloudFront:

1. En la consola de AWS Lambda cree una función de Lambda en la Región EE.UU. Este (Norte deVirginia). (Además, puede crear la función mediante programación, por ejemplo, utilizando uno de losSDK de AWS).

2. Guarde y publique una versión numerada de la función.

Si desea realizar cambios en la función, debe editar la versión $LATEST de la función en la RegiónEE.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 la caché correspondientes a la función y,a continuación, especifique uno o varios eventos de CloudFront, conocidos como disparadores, queprovocarán la ejecución de la función. Por ejemplo, puede crear un disparador para que la función seejecute cuando CloudFront reciba una solicitud de un espectador.

4. Cuando se crea un disparador, Lambda replica la función en las ubicaciones de AWS de todo el mundo.

Versión de API 2016-09-29284

Amazon CloudFront Guía para desarrolladoresTutorial: Creación de una función sencilla

Temas• Tutorial: Creación de una función de Lambda@Edge sencilla (p. 285)

Tutorial: Creación de una función de Lambda@EdgesencillaEn este tutorial, se muestra cómo comenzar a utilizar Lambda@Edge; para ello, se le ayuda a crear yañadir una función de Node.js de ejemplo que se ejecuta en CloudFront. En el ejemplo que se muestra, seañaden encabezados HTTP de seguridad a una respuesta, lo que puede mejorar la seguridad y privacidadde un sitio web. (Tenga en cuenta que no es necesario un sitio web para este tutorial; simplemente seañaden los encabezados de seguridad a una respuesta cuando CloudFront recupera un archivo).

Este ejemplo ilustra, paso a paso, cómo crear y configurar una función de Lambda@Edge. Seguirá pasossimilares y elegirá entre las mismas opciones para su propia solución de Lambda@Edge.

Temas• Paso 1: Inscribirse en una cuenta de AWS (p. 286)

Versión de API 2016-09-29285

Amazon CloudFront Guía para desarrolladoresTutorial: Creación de una función sencilla

• Paso 2: Crear una distribución de CloudFront (p. 286)• Paso 3: Crear y publicar la función (p. 286)• Paso 4: Añadir un disparador de CloudFront que ejecuta la función (p. 291)• Paso 5: Verificar que la función se ejecuta (p. 292)• Paso 6: Solucionar problemas (p. 293)• Paso 7: Eliminar los recursos del ejemplo (p. 294)• Más recursos de aprendizaje (p. 295)

Paso 1: Inscribirse en una cuenta de AWSSi aún no lo ha hecho, inscríbase en Amazon Web Services en https://aws.amazon.com/. Elija Sign UpNow (Inscríbase ahora) e introduzca la información que se le pida.

Paso 2: Crear una distribución de CloudFrontAntes de crear la función de Lambda@Edge de ejemplo, debe tener un entorno de CloudFront con el quetrabajar que incluya un origen para distribuir contenido.

¿Es la primera vez que utiliza CloudFront? CloudFront distribuye contenido a través de una red mundialde ubicaciones de borde. Cuando se configura una función de Lambda con CloudFront, la funciónpuede personalizar el contenido más cercano a los espectadores, lo que mejora el desempeño. Si noestá familiarizado con CloudFront, antes de realizar el tutorial, dedique unos minutos a leer una brevedescripción general y a aprender algo acerca de cómo CloudFront almacena el contenido en caché y lodistribuye.

Para este ejemplo, va a crear una distribución de CloudFront que está configurada con un bucket deAmazon S3, que es el origen de su distribución de CloudFront. Si ya dispone de un entorno, puede omitireste paso.

Para crear una distribución de CloudFront con un origen de Amazon S3

1. Cree un bucket de Amazon S3 con un archivo o dos, como, por ejemplo, archivos de imágenes parausarlos como contenido de muestra. Puede seguir los pasos que se detallan en Cargar su contenidoen Amazon S3. Asegúrese de que establece permisos para conceder acceso de lectura público a losobjetos del bucket.

2. Cree una distribución de CloudFront y añada el bucket de S3 como un origen, siguiendo los pasos quese describen Crear una distribución web de CloudFront. Si ya tiene una distribución, solo es necesarioque añada el bucket como origen para esa distribución.

Tip

Tome nota del ID de distribución. Más adelante en este tutorial, al añadir un disparador deCloudFront para la función, debe elegir el ID de la distribución en una lista desplegable, porejemplo, E653W22221KDDL.

Paso 3: Crear y publicar la funciónEn este paso, se crea una función de Lambda, a partir de una plantilla de proyecto que se proporcionaen la consola de Lambda. La función añade código para actualizar los encabezados de seguridad de sudistribución de CloudFront.

¿Es la primera vez que utiliza Lambda o Lambda@Edge? Lambda@Edge permite usar disparadores deCloudFront para invocar una función de Lambda. Cuando se asocia una distribución de CloudFront a unafunción de Lambda, CloudFront intercepta las solicitudes y respuestas en las ubicaciones de borde deCloudFront y ejecuta la función. Las funciones de Lambda pueden mejorar la seguridad o personalizar la

Versión de API 2016-09-29286

Amazon CloudFront Guía para desarrolladoresTutorial: Creación de una función sencilla

información según la ubicación de los espectadores, para mejorar el desempeño. La función que se creaen 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 deuna plantilla de proyecto para crear la función y, a continuación, se actualiza la función con código queestablece los encabezados de seguridad. Por último, se guarda una versión nueva de la función; esto esun paso obligatorio para poder añadir un disparador de CloudFront a la función.

Para crear una función de Lambda

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). Debe estar en esta regiónpara crear funciones de Lambda@Edge.

2. Elija Create function.3. En la página Create function (Crear función), elija Blueprints (Proyectos) y, a continuación, filtre para

ver los proyectos de CloudFront. Escriba cloudfront en el campo de búsqueda y, a continuación,pulse Intro. Se muestra la palabra clave cloudfront y aparecen en la lista todos los proyectos queestán etiquetados para CloudFront.

4. Elija el proyecto cloudfront-modify-response-header para usarlo como plantilla para la función.5. Introduzca la información sobre la función:

Nombre

Escriba un nombre para la función.Rol

Elija cómo se deben establecer los permisos para la función. Lo más sencillo es comenzarutilizando la plantilla de política de permisos básicos de Lambda@Edge, por lo que, para estaopción, debe elegir Create new role from template(s) (Crear un rol nuevo a partir de las plantillas).

Role name (Nombre de rol)

Escriba un nombre para el rol que se creará a partir de la plantilla de política, que elegirá acontinuación, en Policy templates (Plantillas de política).

Policy templates (Plantillas de política)

En la lista desplegable, elija Basic Edge Lambda permissions (Permisos básicos de LambdaEdge). Esta plantilla añade permisos de rol de ejecución que permiten a CloudFront ejecutar la

Versión de API 2016-09-29287

Amazon CloudFront Guía para desarrolladoresTutorial: Creación de una función sencilla

función de Lambda por usted en las ubicaciones de CloudFront situadas en distintas partes delmundo. Para obtener más información, consulte Configuración de permisos y roles de IAM paraLambda@Edge (p. 295).

6. En la sección CloudFront trigger (Disparador de CloudFront), elija Remove (Eliminar). Después decrear y probar la función, asociará la función a la distribución y añadirá un disparador para que seejecute la función.

Por ejemplo, para añadir los encabezados de seguridad, configuraremos la función para que seejecute cuando se produzca una respuesta del origen de CloudFront. Para obtener más informaciónacerca de los disparadores, consulte Eventos de CloudFront que pueden disparar una función deLambda (p. 304).

Versión de API 2016-09-29288

Amazon CloudFront Guía para desarrolladoresTutorial: Creación de una función sencilla

7. Elija Create function (Crear función). Lambda crea la función y, en la página siguiente, verá un cuadrode mensaje que le da la enhorabuena. En el paso siguiente, actualizará el código de la función y, acontinuación, añadirá un disparador de CloudFront.

En la pestaña Configuration (Configuración), existen tres áreas principales: un diagrama que muestrala función mediante su nombre (en nuestro ejemplo, UpdateSecurityHeaders), los disparadores que sehayan añadido (no hay ninguno en este momento) y la información de registro. También hay una listade tipos de disparadores que puede elegir y, en la parte inferior, la sección Function code (Código dela función), para añadir o actualizar el código.

Versión de API 2016-09-29289

Amazon CloudFront Guía para desarrolladoresTutorial: Creación de una función sencilla

8. En la sección Function code (Código de la función), sustituya el código de la plantilla por una funciónque modifique los encabezados de seguridad que se devuelven desde el origen. Por ejemplo, puedeutilizar código similar al siguiente:

'use strict';exports.handler = (event, context, callback) => { //Get contents of response const response = event.Records[0].cf.response; const headers = response.headers;

//Set new headers headers['strict-transport-security'] = [{key: 'Strict-Transport-Security', value: 'max-age= 63072000 ; includeSubdomains; preload'}]; headers['content-security-policy'] = [{key: 'Content-Security-Policy', value: "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'"}]; headers['x-content-type-options'] = [{key: 'X-Content-Type-Options', value: 'nosniff'}]; headers['x-frame-options'] = [{key: 'X-Frame-Options', value: 'DENY'}]; headers['x-xss-protection'] = [{key: 'X-XSS-Protection', value: '1; mode=block'}]; headers['referrer-policy'] = [{key: 'Referrer-Policy', value: 'same-origin'}]; //Return modified response callback(null, response);};

9. Elija Save (Guardar) para guardar el código actualizado.10. En el menú desplegable Actions, elija Publish new version (Publicar nueva versión).

Versión de API 2016-09-29290

Amazon CloudFront Guía para desarrolladoresTutorial: Creación de una función sencilla

Cuando se edita una función de Lambda, se trabaja con la versión $LATEST. Sin embargo, no puedeañadir un disparador de CloudFront a la versión $LATEST, por lo que debe publicar una nueva versiónnumerada de la función y, a continuación, añadir el disparador.

Paso 4: Añadir un disparador de CloudFront que ejecuta lafunciónAhora que tiene una función de Lambda para actualizar los encabezados de seguridad, debe crear undisparador de CloudFront que ejecute la función para añadir los encabezados a cualquier respuesta quereciba CloudFront desde el origen de la distribución.

Tip

Asegúrese de que está trabajando en una versión numerada de la función. Si salió de la consolay, a continuación, volvió a abrir la función de nuevo, la versión será $LATEST, incluso si ya habíapublicado una versión nueva. Para abrir una versión a la que pueda añadir un disparador, haga losiguiente:

1. Elija Qualifiers (Cualificadores).2. Elija la pestaña Versions (Versiones) y, a continuación, elija una versión distinta de $LATEST

como, por ejemplo, 1.

Para crear un disparador de CloudFront para la función

1. En Add triggers (Añadir disparadores), elija CloudFront.2. En Configure triggers (Configurar disparadores), escriba la información siguiente:

Distribución

El ID de distribución de CloudFront que se debe asociar a la función. En la lista desplegable, elijael ID de distribución.

Cache behavior (Comportamiento de la caché)

El comportamiento de la caché que se debe utilizar con el disparador. En este ejemplo, dejeel valor establecido en *, que aplica el comportamiento predeterminado de la caché a todaslas solicitudes de la distribución. Para obtener más información, consulte Configuración delcomportamiento de la caché (p. 37) en el tema Valores que deben especificarse al crear oactualizar una distribución (p. 30).

Versión de API 2016-09-29291

Amazon CloudFront Guía para desarrolladoresTutorial: Creación de una función sencilla

CloudFront event (Evento de CloudFront)

El disparador que especifica cuándo se ejecutará la función. Queremos que la función deencabezados de seguridad se ejecute siempre que CloudFront devuelva una respuestadesde el origen. Por lo tanto, en la lista desplegable, elija Origin response (Respuesta deorigen). Para obtener más información, consulte Adición de disparadores para una función deLambda@Edge (p. 303).

Enable trigger and replicate (Habilitar el disparador y replicar)

Seleccione esta casilla para añadir el disparador y replicar la función en las ubicaciones de AWSde todo el mundo.

3. Elija Add (Añadir) y, a continuación, elija Save (Guardar).

4. Espere a que la función se replique. Esto suele hacerse en unos minutos, pero puede tardar hasta15 minutos.

Para comprobar si la replicación ha terminado, vaya a la consola de CloudFront y visualice ladistribución:

• Vaya a la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

Compruebe que el estado de la distribución cambia de In Progress (En curso) a Deployed(Implementada), lo que significa que la función se ha replicado. A continuación, siga los pasos de lasección siguiente para verificar el funcionamiento de la función.

Paso 5: Verificar que la función se ejecutaAhora que ha creado la función de Lambda y que ha añadido un disparador para ejecutarla para unadistribución de CloudFront, asegúrese de que la función se comporta según lo previsto. En este ejemplo,vamos a comprobar los encabezados HTTP que se devuelven desde el origen para asegurarnos de que seañaden los encabezados de seguridad.

Versión de API 2016-09-29292

Amazon CloudFront Guía para desarrolladoresTutorial: Creación de una función sencilla

Para verificar que la función de Lambda@Edge añade los encabezados de seguridad

1. En un navegador, escriba la dirección URL de un archivo del bucket de S3. Por ejemplo, puede utilizaruna 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 laURL del archivo, consulte Personalización del formato de URL para archivos en CloudFront (p. 72).

2. Abra la barra de herramientas para desarrolladores web del navegador. Por ejemplo, en la ventana delnavegador Chrome, abra el menú contextual (haga clic con el botón derecho) y, a continuación, elijaInspeccionar.

3. Elija la pestaña Network.4. Vuelva a cargar la página para ver la imagen y, a continuación, elija una solicitud HTTP en el panel

izquierdo. Verá los encabezados HTTP que se muestran en un panel independiente.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 lasiguiente captura de pantalla:

Si los encabezados de seguridad se incluyen en la lista de encabezados, ¡estupendo! Significa que hacreado correctamente su primera función de Lambda@Edge. Si, por el contrario, CloudFront devuelveerrores o hay otros problemas, continúe con el paso siguiente para solucionar los problemas.

Paso 6: Solucionar problemasSi CloudFront devuelve errores o no añade los encabezados de seguridad según lo previsto, puedeinvestigar la ejecución de la función consultando los logs de CloudWatch. Asegúrese de utilizar losregistros almacenados en la ubicación de AWS más cercana a la ubicación en que se ejecuta la función.

Por ejemplo, si ve el archivo desde Londres, pruebe a cambiar la región en la consola de CloudWatch a UE(Londres).

Versión de API 2016-09-29293

Amazon CloudFront Guía para desarrolladoresTutorial: Creación de una función sencilla

Para examinar los logs de CloudWatch para la función de Lambda@Edge

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

2. Cambie Region (Región) a la región donde se ejecuta la función; es decir, la ubicación que se muestracuando se ve el archivo en el navegador.

3. En el panel izquierdo, elija Logs para ver los logs de la distribución.

Para obtener más información, consulte Monitorizar la actividad de CloudFront en CloudWatch (p. 392).

Paso 7: Eliminar los recursos del ejemploSi ha creado un bucket de S3 y una distribución de CloudFront solo para este tutorial, como parte deun ejercicio de aprendizaje, asegúrese de eliminar los recursos de AWS que ha asignado para dejar deacumular cargos. Después de eliminar los recursos de AWS, el contenido que haya añadido dejará deestar disponible.

Tareas

• Eliminación del bucket de S3 (p. 294)• Elimine la distribución CloudFront (p. 294)

Eliminación del bucket de S3

Antes de eliminar su bucket de S3, asegúrese de que la función de registro esté desactivada para elbucket. De lo contrario, AWS seguirá escribiendo logs en el bucket mientras lo elimina.

Para deshabilitar el registro en el bucket

1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.2. Seleccione el bucket y, luego, seleccione Properties.3. En Properties, haga clic en Logging.4. Elimine la selección del recuadro Enabled.5. Seleccione Save.

Ahora ya puede eliminar su bucket. Para obtener más información, consulte How Do I Delete an S3Bucket? en la Guía del usuario de la consola de Amazon Simple Storage Service.

Elimine la distribución CloudFront

Antes de eliminar una distribución CloudFront, debe deshabilitarla. Una distribución deshabilitada ya noes funcional y no acumula cargos. Puede habilitar una distribución deshabilitada en cualquier momento.Después de eliminar una distribución deshabilitada, esta deja de estar disponible.

Para desactivar y eliminar una distribución de CloudFront

1. Abra la consola de CloudFront en https://console.aws.amazon.com/cloudformation/.2. Seleccione la distribución que quiera desactivar y seleccione Disable.3. Cuando se le indique que confirme, seleccione Yes, Disable.4. Seleccione la distribución desactivada y después Delete.5. Cuando se le indique que confirme, seleccione Yes, Delete.

Versión de API 2016-09-29294

Amazon CloudFront Guía para desarrolladoresEstablecer permisos y roles de IAM

Más recursos de aprendizajeAhora que tiene una idea básica de cómo funcionan las funciones de Lambda@Edge, puede obtener másinformación leyendo los temas siguientes:

• Funciones de ejemplo de Lambda@Edge (p. 319)• Prácticas recomendadas de diseño de Lambda@Edge• Reducción de la latencia y traslado de recursos informáticos al borde con Lambda@Edge

Configuración de permisos y roles de IAM paraLambda@Edge

Se necesitan un rol de ejecución de IAM y permisos de IAM específicos para configurar [email protected]@Edge también crea un rol vinculado a un servicio para replicar las funciones de Lambda en lasregiones de CloudFront.

Temas• Permisos de IAM necesarios para asociar funciones de Lambda a distribuciones de

CloudFront (p. 295)• Rol de ejecución de funciones para las entidades principales del servicio (p. 296)• Rol vinculado a servicio para Lambda@Edge (p. 296)

Permisos de IAM necesarios para asociar funcionesde Lambda a distribuciones de CloudFrontAdemás de los permisos de IAM necesarios para utilizar AWS Lambda, el usuario de IAM necesita lossiguientes permisos de IAM para asociar funciones de Lambda a las distribuciones de CloudFront:

• lambda:GetFunction

Para el recurso, especifique el ARN de la versión de la función que desea ejecutar cuando se produzcaun 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 versión de la función que desea ejecutar cuando se produzcaun evento de CloudFront, tal como se muestra en el ejemplo siguiente:

arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

• iam:CreateServiceLinkedRole

Se utiliza para crear un rol vinculado a un servicio utilizado por Lambda@Edge para replicar funcionesde Lambda en CloudFront. Después de que la primera distribución que utilice con Lambda@Edge hayacreado este rol, no es necesario añadir permisos a otras distribuciones que utilice con Lambda@Edge.

• cloudfront:UpdateDistribution o bien cloudfront:CreateDistribution

Elija cloudfront:UpdateDistribution para actualizar una distribución ocloudfront:CreateDistribution para crear una distribución.

Versión de API 2016-09-29295

Amazon CloudFront Guía para desarrolladoresRol de ejecución de funciones para

las entidades principales del servicio

Para obtener más información, consulte la documentación siguiente:

• Autenticación y control de acceso de AWS para CloudFront (p. 397) en esta guía.• Autenticación y control de acceso para AWS Lambda en la AWS Lambda Developer Guide

Rol de ejecución de funciones para las entidadesprincipales del servicioDebe crear un rol de IAM que puedan asumir las entidades principales del serviciolambda.amazonaws.com y edgelambda.amazonaws.com. Este rol lo asumen las entidades principalesdel servicio cuando ejecutan la función. Para obtener más información, consulte Creación de las funcionesy políticas (Conexión de la consola) en el tema "Funciones de trabajos de AWS Managed Policies" de laGuía del usuario de IAM.

Añada esta función en la pestaña Trust Relationship (Relación de confianza) en IAM (no la añada en lapestaña Permissions (Permisos)).

A continuación se muestra un ejemplo de política de confianza de rol:

{ "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, consulteAdministración de permisos mediante un rol de IAM (rol de ejecución) en la AWS Lambda DeveloperGuide. Tenga en cuenta lo siguiente:

• De forma predeterminada, siempre que un evento de CloudFront activa una función deLambda, se escriben datos en CloudWatch Logs. Si desea utilizar estos logs, el rol de ejecuciónnecesita permiso para escribir datos en CloudWatch Logs. Puede utilizar la política predefinidaAWSLambdaBasicExecutionRole para conceder permisos al rol de ejecución.

Para obtener más información acerca de CloudWatch Logs, consulte Métricas de CloudWatch yCloudWatch Logs para funciones de Lambda (p. 308).

• Si el código de la función de Lambda tiene acceso a otras operaciones de AWS, como, por ejemplo,la lectura de un objeto de un bucket de S3, el rol de ejecución necesita permiso para realizar esaoperación.

Rol vinculado a servicio para Lambda@EdgeLambda@Edge utiliza un rol vinculado a servicio de AWS Identity and Access Management (IAM). Un rolvinculado a servicio es un tipo único de rol de IAM que está vinculado directamente a [email protected]@Edge predefine el rol vinculado a servicio e incluye todos los permisos que este requiere parapoder llamar a otros servicios de AWS en su nombre.

Versión de API 2016-09-29296

Amazon CloudFront Guía para desarrolladoresRol vinculado a servicio para Lambda@Edge

Cuando se añade un disparador de Lambda@Edge por primera vez en CloudFront, se creaautomáticamente un rol denominado AWSServiceRoleForLambdaReplicator que permite a Lambda@Edgereplicar funciones en las distintas regiones de AWS. Este rol es necesario para utilizar las funciones deLambda@Edge. El ARN del rol AWSServiceRoleForLambdaReplicator tiene este aspecto:

arn:aws:iam::123456789012:role/aws-service-role/replicator.lambda.amazonaws.com/AWSServiceRoleForLambdaReplicator

Los roles vinculados a servicios simplifican la configuración de Lambda@Edge ya que no será necesarioañadir manualmente los permisos necesarios. Lambda@Edge define los permisos de su rol vinculadoa servicio y solo Lambda@Edge puede asumir este rol. Los permisos definidos incluyen la política deconfianza y la política de permisos. La política de permisos no se puede asociar a ninguna otra entidad deIAM.

Debe eliminar los recursos de CloudFront o de Lambda@Edge asociados para poder eliminar el rolvinculado a servicio. De esta forma, se protegen los recursos de Lambda@Edge;, ya que se evita laeliminación accidental de permisos para obtener acceso a los recursos.

Para obtener información sobre otros servicios que admiten roles vinculados a servicios, consulte Serviciosde AWS que funcionan con IAM y busque los servicios que tienen Sí en la columna Rol vinculado aservicio.

Permisos de roles vinculados a servicios para Lambda@EdgeLambda@Edge usa el rol vinculado a servicio denominado AWSServiceRoleForLambdaReplicator. Thisservice-linked role allows Lambda to replicate Lambda@Edge functions to AWS Regions.

El rol vinculado a servicio AWSServiceRoleForLambdaReplicator confía en el siguiente servicio paraasumir el rol:

• replicator.lambda.amazonaws.com

La política de permisos del rol permite que Lambda@Edge realice las siguientes acciones en los recursosespecificados:

• Acción: lambda:CreateFunction en arn:aws:lambda:*:*:function:*• Acción: lambda:DeleteFunction en arn:aws:lambda:*:*:function:*• Acción: lambda:DisableReplication en arn:aws:lambda:*:*:function:*• Acción: iam:PassRole en all AWS resources• Acción: cloudfront:ListDistributionsByLambdaFunction en all AWS resources

Debe configurar los permisos para permitir a una entidad de IAM (como un usuario, un grupo o un rol)crear o eliminar un rol vinculado a servicio. Para obtener más información, consulte Permisos de rolesvinculados a servicios en la Guía del usuario de IAM.

Creación del rol vinculado a servicio para Lambda@EdgeNo necesita crear manualmente el rol vinculado a servicio para Lambda@Edge. Cuando first createa trigger, the service creates a role that allows Lambda to replicate Lambda@Edge functions to AWSRegions.

Si elimina el rol vinculado a servicio, el rol se creará de nuevo al añadir un nuevo disparador paraLambda@Edge en una distribución.

Versión de API 2016-09-29297

Amazon CloudFront Guía para desarrolladoresRol vinculado a servicio para Lambda@Edge

Edición del rol vinculado a servicio para Lambda@EdgeLambda@Edge no le permite editar el rol vinculado a servicio AWSServiceRoleForLambdaReplicator.Después de crear un rol vinculado a un servicio, no puede cambiarle el nombre, ya que varias entidadespueden hacer referencia al mismo. Sin embargo, puede editar la descripción de la función utilizando IAM.Para obtener más información, consulte Editar un rol vinculado a un servicio en la Guía del usuario de IAM.

Eliminación del rol vinculado a servicio para Lambda@EdgeSi ya no tiene que utilizar Lambda@Edge, le recomendamos que elimine el rol vinculado a servicio.De esta forma no tiene una entidad no utilizada que no se monitorice ni mantenga de forma activa.Sin embargo, debe limpiar los recursos de Lambda@Edge de la cuenta antes de poder eliminar el rolmanualmente.

Para eliminar los recursos de Lambda@Edge utilizados por AWSServiceRoleForLambdaReplicator

Para eliminar el rol vinculado a servicio, debe eliminar todas las asociaciones de Lambda@Edge delas distribuciones. Para ello, actualice las distribuciones con el fin de eliminar todos los disparadores defunciones de Lambda@Edge o las distribuciones que utilizan funciones de Lambda@Edge. Para obtenermás información, consulte Eliminación de funciones de Lambda@Edge y réplicas (p. 309).

Una vez que haya eliminado todas las asociaciones de funciones de Lambda@Edge de lasdistribuciones y que CloudFront haya hecho otro tanto con las réplicas de las funciones de lasubicaciones de AWS, puede utilizar la consola de CloudFront para eliminar el rol vinculado a servicioAWSServiceRoleForLambdaReplicator.

Note

Si CloudFront no ha finalizado la actualización, la eliminación del rol vinculado a servicio puededar un error. En tal caso, espere unos minutos y realice de nuevo los pasos.

Para eliminar manualmente el rol vinculado a servicio de Lambda@Edge (consola de CloudFront)

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. En la página CloudFront Distributions (Distribuciones de CloudFront), haga clic en el avatar de la partesuperior derecha.

3. Elija Eliminar.

Versión de API 2016-09-29298

Amazon CloudFront Guía para desarrolladoresEscritura y creación de funciones

Escritura y creación de una función deLambda@Edge

Para usar Lambda@Edge, escriba el código de su función de Lambda y, a continuación, configure AWSLambda para ejecutar la función a partir de eventos de CloudFront específicos (disparadores). Paraconfigurar Lambda para ejecutar su función, utilice la opción de crear función en Lambda.

Puede utilizar la consola de AWS para trabajar con funciones de Lambda y disparadores de CloudFront, opuede trabajar con Lambda@Edge mediante programación utilizando las API.

• Si utiliza la consola de AWS, tenga en cuenta que solo puede usar la consola de AWS Lambda paracrear funciones de Lambda. No puede utilizar la consola de 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 disparadores de CloudFrontmediante programación (p. 303).

Note

Puede utilizar las consolas de AWS Lambda o de CloudFront para añadir disparadores parafunciones de Lambda@Edge.

Temas• Creación de funciones para Lambda@Edge (p. 299)• Creación de una función de Lambda@Edge en la consola de Lambda (p. 300)• Edición de una función de Lambda para Lambda@Edge (p. 301)• Creación de funciones de Lambda y disparadores de CloudFront mediante programación (p. 303)

Creación de funciones para Lambda@EdgeExisten varios recursos para ayudarle a escribir funciones de Lambda@Edge:

• Para obtener más información acerca de cómo escribir funciones de Lambda que puede utilizar conLambda@Edge, consulte Requisitos y restricciones en funciones de Lambda (p. 333).

Versión de API 2016-09-29299

Amazon CloudFront Guía para desarrolladoresCreación de una función de

Lambda@Edge en la consola de Lambda

• Para obtener más información acerca de la estructura del evento que se va a utilizar con las funcionesde Lambda@Edge, consulte Estructura de eventos (p. 309).

• Para ver ejemplos de las funciones de Lambda@Edge, como, por ejemplo, funciones para pruebas A/By generar un redireccionamiento de HTTP, consulte Funciones de ejemplo de Lambda@Edge (p. 319).

El modelo de programación para utilizar Node.js con Lambda@Edge es el mismo que para utilizar Lambdaen una región de AWS. Para obtener más información, consulte Modelo de programación (Node.js).

En su código Lambda@Edge, incluya el parámetro callback y devuelva el objeto correspondiente paraeventos de solicitud o de respuesta:

• Eventos de solicitud: incluya el objeto cf.request en la respuesta.

Si está generando una respuesta, incluya el objeto cf.response en ella. Para obtener másinformación, consulte Generación de respuestas HTTP en los disparadores de solicitud (p. 316).

• Eventos de respuesta: incluya el objeto cf.response en la respuesta.

Creación de una función de Lambda@Edge en laconsola de LambdaPara configurar AWS Lambda de forma que ejecute funciones de Lambda basadas en eventos deCloudFront, lleve a cabo el siguiente procedimiento.

Para crear una función de 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. Si ya tiene una o varias funciones de Lambda, elija Create function.

Si no tiene ninguna función, elija Get Started Now.3. En la lista de regiones de la parte superior de la página, elija US East (N. Virginia).4. Cree una función mediante su propio código o cree una función a partir de un proyecto de CloudFront.

• Para crear una función utilizando su propio código, elija Author from scratch.• Para mostrar una lista de proyectos de CloudFront, escriba cloudfront en el campo de filtro y, a

continuación, pulse Intro.

Si encuentra un proyecto que desee utilizar, elija el nombre del proyecto.5. En la sección Basic information, especifique los siguientes valores:

Nombre

Escriba un nombre para la función.Rol

Elija Create new role from template(s).Note

Elija este valor para empezar a trabajar rápidamente. También puede elegir Choosean existing role o Create a custom role. Si elige alguna de estas opciones, siga lasinstrucciones para completar la información de esta sección.

Nombre de rol

Escriba un nombre para el rol.

Versión de API 2016-09-29300

Amazon CloudFront Guía para desarrolladoresEdición de una función de Lambda para Lambda@Edge

Plantillas de política

Elija Basic Edge Lambda permissions.6. Si eligió Author from scratch en el paso 4, vaya al paso 7.

Si eligió un proyecto en el paso 4, la sección cloudfront le permite crear un disparador, que asociaesta función con una memoria caché en una distribución de CloudFront y un evento de CloudFront.Le recomendamos que elija Remove en este punto, por lo que no habrá un disparador para la funcióncuando esta se cree. Podrá añadir disparadores más adelante.

Important

¿Por qué añadir disparadores en otro momento? Generalmente es mejor que pruebe ydepure la función antes de añadir disparadores. Si elige añadir un disparador ahora, lafunción comenzará su ejecución una vez creada la función, terminará de replicarse en lasubicaciones 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 cerca de la parte superior de la página, bajo el ARN de lafunción. A continuación, en la pestaña Versions, elija $LATEST. (Si abandona la función y vuelve aella más tarde, el botón de etiqueta será Qualifiers).

9. En la pestaña Configuration, elija el valor correspondiente para Code entry type. A continuación, sigalas instrucciones para editar o cargar el código.

10. En Runtime (Tiempo de ejecución), elija el valor basado en el código de la función.11. En la sección Tags, añada todas las etiquetas aplicables.12. Elija Actions y, a continuación, Publish new version.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, consulte lo siguiente en la AWS Lambda

Developer Guide:

• Uso de Amazon CloudWatch• Uso de AWS X-Ray• Prueba local de aplicaciones sin servidor mediante SAM Local (en versión beta pública)

16. Cuando esté listo para que la función se ejecute para eventos de CloudFront, publique otra versióny edite la función para añadir disparadores. Para obtener más información, consulte Adición dedisparadores para una función de Lambda@Edge (p. 303).

Edición de una función de Lambda paraLambda@EdgeCuando desee editar una función de Lambda, tenga en cuenta lo siguiente:

• La versión original se denomina $LATEST.• Solo puede editar la versión $LATEST.• Cada vez que edite la versión $LATEST, debe publicar una nueva versión numerada.• No puede crear disparadores para $LATEST.• Cuando se publica una nueva versión de una función, Lambda no copia automáticamente los

disparadores de la versión anterior a la nueva. Debe reproducir los disparadores para la nueva versión.

Versión de API 2016-09-29301

Amazon CloudFront Guía para desarrolladoresEdición de una función de Lambda para Lambda@Edge

• Cuando se añade un disparador para un evento de CloudFront a una función, si ya existe un disparadorpara la misma distribución, comportamiento de la caché y evento para una versión anterior de la mismafunción, Lambda lo elimina de esta versión anterior.

• Después de realizar actualizaciones a una distribución de CloudFront, como añadir disparadores, debeesperar que los cambios se propaguen a ubicaciones de borde antes de que las funciones que haespecificado en los disparadores funcionen.

Para editar una función de Lambda (consola de AWS Lambda)

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 de regiones de la parte superior de la página, elija US East (N. 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), pero solo puede editar $LATEST.

4. En la pestaña Code, en Code entry type, elija si desea editar el código en el navegador, cargar unarchivo .zip o cargar un archivo desde Amazon S3.

5. Elija Save o Save and test.6. Elija Actions y, a continuación, Publish new version.7. En el cuadro de diálogo Publish new version from $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 generadode forma automática.

8. Elija Publish.

La nueva versión se convierte automáticamente la versión más reciente. El número de versiónaparece en el botón Version de la esquina superior izquierda de la página.

9. Elija la pestaña Triggers.10. Elija Add trigger.11. En el cuadro de diálogo Add trigger, elija el cuadro con puntos y, a continuación, CloudFront.

Note

Si ya ha creado uno o varios disparadores para una función, CloudFront es el serviciopredeterminado.

12. Especifique los siguientes valores para indicar cuándo desea que se ejecute la función de Lambda.

Distribution ID

Elija el ID de la distribución donde desea añadir el disparador.Cache behavior

Elija el comportamiento de la caché que especifica los objetos en los que desea ejecutar lafunción.

CloudFront event

Elija el evento de CloudFront que provoca la ejecución de la función.Enable trigger and replicate

Seleccione esta casilla para que Lambda replique la función a las regiones de todo el mundo.13. Elija Enviar.14. Para añadir más disparadores para esta función, repita los pasos del 10 al 13.Versión de API 2016-09-29

302

Amazon CloudFront Guía para desarrolladoresCreación de funciones de Lambda y disparadores

de CloudFront mediante programación

Creación de funciones de Lambda y disparadores deCloudFront mediante programaciónPuede configurar las funciones de Lambda@Edge y los disparadores de CloudFront medianteprogramación en lugar de utilizar la consola de AWS. Para obtener más información, consulte lossiguientes temas:

• API Reference en la AWS Lambda Developer Guide• Amazon CloudFront API Reference• AWS CLI

• Comando Lambda create-function• Comando de CloudFront create-distribution• Comando de CloudFront create-distribution-with-tags• Comando de CloudFront update-distribution

• AWS SDK (Consulte la sección SDK y conjuntos de herramientas).• Herramientas de AWS para PowerShell Cmdlet Reference

Adición de disparadores para una función deLambda@Edge

Un disparador de Lambda@Edge es una combinación de una distribución de CloudFront, uncomportamiento de la caché y un evento que provoca la ejecución de una función. Puede especificaruno o varios disparadores de CloudFront que provoquen la ejecución de la función. Por ejemplo, puedecrear un disparador que provoque la ejecución de la función cuando CloudFront reciba una solicitud de unespectador para un comportamiento de la caché específico que haya configurado para la distribución.

Tip

Si no está familiarizado con los comportamientos de la caché de CloudFront, aquí tiene una brevedescripción general. Al crear una distribución de CloudFront, debe especificar la configuraciónque indica a CloudFront cómo responder al recibir distintas solicitudes. La configuraciónpredeterminada 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 encircunstancias específicas, por ejemplo, cuando recibe una solicitud para un archivo específico.Para obtener más información, consulte Cache Behavior Settings.

En el momento de crear una función de Lambda, solo se puede especificar un disparador. Pero se puedenañadir más disparadores a la misma función más adelante por medio de uno de estos dos métodos: con laconsola de Lambda o editando la distribución en la consola de CloudFront.

• El uso de la consola de Lambda funciona bien si desea añadir más disparadores a una función para lamisma distribución de CloudFront.

• El uso de la consola de CloudFront puede ser mejor si desea añadir disparadores para variasdistribuciones, ya que es más sencillo encontrar la distribución que desea actualizar. También puedeactualizar otros ajustes de CloudFront simultáneamente.

Note

Si desea trabajar con Lambda@Edge mediante programación, existen varios recursos paraayudarle. Para obtener más información, consulte Creación de funciones de Lambda ydisparadores de CloudFront mediante programación (p. 303).

Versión de API 2016-09-29303

Amazon CloudFront Guía para desarrolladoresEventos de CloudFront que pueden

disparar una función de Lambda

Temas• Eventos de CloudFront que pueden disparar una función de Lambda (p. 304)• Cómo decidir el evento de CloudFront que utilizar para disparar una función de Lambda (p. 305)• Añadir disparadores mediante la consola de Lambda (p. 306)• Añadir disparadores mediante la consola de CloudFront (p. 307)

Eventos de CloudFront que pueden disparar unafunción de LambdaPara cada comportamiento de la caché de una distribución de CloudFront, puede añadir hasta cuatrodisparadores (asociaciones) que harán que se ejecute una función de Lambda cuando se produzcandeterminados eventos de CloudFront. Los disparadores de CloudFront pueden basarse en uno de loscuatro eventos de CloudFront que se muestran en el siguiente diagrama.

El eventos de CloudFront que pueden utilizarse para activar funciones de Lambda@Edge son lossiguientes:

Solicitud del espectador

La función se ejecuta cuando CloudFront recibe una solicitud de un espectador y antes de comprobarsi el objeto solicitado está en la caché perimetral.

Solicitud al origen

La función se ejecuta solo cuando CloudFront reenvía una solicitud a su origen. Cuando el objetosolicitado está en la caché perimetral, 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 dealmacenar el objeto en caché en la respuesta. Tenga en cuenta que la función se ejecuta aunque elorigen devuelva un error.

La función no se ejecuta en los casos siguientes:• Cuando el archivo solicitado está en la caché perimetral.• Cuando la respuesta se genera a partir de una función disparada por un evento de solicitud al

origen.Respuesta al espectador

La función se ejecuta antes de devolver el archivo solicitado al espectador. Tenga en cuenta que lafunción se ejecuta independientemente de si el archivo ya está en la caché perimetral.

Versión de API 2016-09-29304

Amazon CloudFront Guía para desarrolladoresCómo decidir el evento de CloudFront que

utilizar para disparar una función de Lambda

La función no se ejecuta en los casos siguientes:• Cuando el origen devuelve un código de estado HTTP 400 o superior.• Cuando se devuelve una página de error personalizada• Cuando la respuesta se genera a partir de una función disparada por un evento de solicitud del

espectador.• Cuando CloudFront redirige automáticamente una solicitud HTTP a HTTPS (cuando el valor de

Viewer Protocol Policy (p. 39) es Redirect HTTP to HTTPS).

Si añade varios disparadores al mismo comportamiento de la caché, puede utilizarlos para ejecutar lamisma función o distintas funciones para cada disparador. También puede asociar la misma función a másde una distribución.

Note

Cuando un evento de CloudFront dispara la ejecución de una función de Lambda, la funcióndebe finalizar antes de que CloudFront pueda continuar. Por ejemplo, si una función de Lambdase activa por medio de un evento de solicitud del espectador de CloudFront, CloudFront nodevolverá una respuesta al espectador ni reenviará la solicitud al origen hasta que la funciónde Lambda termine de ejecutarse. Esto significa que cada solicitud que activa una función deLambda aumenta la latencia de la solicitud, por lo que es conveniente que la función se ejecutecon la mayor rapidez posible.

Cómo decidir el evento de CloudFront que utilizar paradisparar una función de LambdaA la hora de decidir qué evento de CloudFront utilizar para disparar una función de Lambda, tenga encuenta lo siguiente:

¿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 paraque CloudFront pueda enviarlo desde la ubicación de borde la próxima vez que se solicite, utilice loseventos de solicitud al origen o respuesta del origen. Esto reduce la carga en el origen, la latencia delas solicitudes posteriores y los costos de invocación de Lambda@Edge en las solicitudes posteriores.

Por ejemplo, si desea añadir, eliminar o cambiar los encabezados de los objetos devueltos por elorigen 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 espectador o de respuesta al espectador. Los eventos de solicitudal origen y respuesta del origen ocurren solo cuando un objeto solicitado no se almacena en caché enuna 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 encaché, utilice el evento de solicitud del espectador. Por ejemplo, si una función cambia la URL paraincluir una abreviatura de idioma en la ruta (por ejemplo, porque el usuario había elegido su idioma enuna lista desplegable), utilice el evento de solicitud del espectador:• URL en la solicitud del espectador: http://example.com/en/index.html• URL si la solicitud viene de una dirección IP en Alemania: http://example.com/de/index.html

También puede utilizar el evento de solicitud del espectador si está almacenando en caché en funciónde cookies o encabezados de solicitudes.

Versión de API 2016-09-29305

Amazon CloudFront Guía para desarrolladoresAñadir disparadores mediante la consola de Lambda

Note

Si la función cambia cookies o encabezados, configure CloudFront para reenviar la parteaplicable de la solicitud al origen. Para obtener más información, consulte los siguientestemas:• Almacenamiento en caché de contenido en función de cookies (p. 199)• Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 201)

¿La función afecta a la respuesta del origen?

Si desea que la función cambie la solicitud para que afecte la respuesta del origen, utilice el eventode solicitud al origen. Normalmente, la mayoría de los eventos de solicitud de espectadores no sereenvían a los eventos de origen, sino que CloudFront responde a una solicitud con un objeto que yaestá en la caché perimetral. Si la función modifica la solicitud basándose en un evento de solicitud alorigen, CloudFront almacena en caché la respuesta a la solicitud al origen modificada.

Añadir disparadores mediante la consola de LambdaPara añadir disparadores a una función de Lambda@Edge (consola de AWS Lambda)

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 de regiones de la parte superior de la página, elija US East (N. Virginia).3. En la página Functions, elija el nombre de la función a la que desee añadir disparadores.4. Elija Qualifiers y, a continuación, seleccione la pestaña Versions.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ónnumerada.

Una vez elegida una versión, el nombre del botón cambia a Version: $LATEST o Version: número deversión.

6. Elija la pestaña Triggers.7. Elija Add triggers.8. En el cuadro de diálogo Add trigger, elija el cuadro con puntos y, a continuación, CloudFront.

Note

Si ya ha creado uno o varios disparadores, CloudFront es el servicio predeterminado.9. Especifique los siguientes valores para indicar cuándo desea que se ejecute la función de Lambda.

Distribution ID

Elija el ID de la distribución donde desea añadir el disparador.Cache behavior

Elija el comportamiento de la caché que especifica los objetos en los que desea ejecutar lafunción.

CloudFront event

Elija el evento de CloudFront que provoca la ejecución de la función.Versión de API 2016-09-29306

Amazon CloudFront Guía para desarrolladoresAñadir disparadores mediante la consola de CloudFront

Enable trigger and replicate

Seleccione esta casilla para que AWS Lambda replique la función a las regiones de todo elmundo.

10. Elija Enviar.

La función comienza a procesar solicitudes de los eventos de CloudFront especificados cuandola distribución de CloudFront actualizada se implementa. Para determinar si una distribución seha implementado, seleccione Distributions en el panel de navegación. Cuando una distribución seimplementa, el valor de la columna Status de la distribución cambia de In Progress a Deployed.

Añadir disparadores mediante la consola deCloudFrontPara añadir disparadores para eventos de CloudFront a una función de Lambda (consola deCloudFront)

1. Identifique el ARN de la función de Lambda para la que desee añadir disparadores:

a. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Lambda enhttps://console.aws.amazon.com/lambda/.

b. En la lista de regiones de la parte superior de la página, seleccione US East (N. Virginia).c. En la lista de funciones, seleccione el nombre de la función a la que desee añadir disparadores.d. Seleccione Qualifiers, la pestaña Versions y la versión numerada a la que desee añadir

disparadores.

Important

Puede añadir disparadores solo a versiones numeradas, no a $LATEST.e. Copie el ARN que aparece en la parte superior de la página, por ejemplo:

arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

El número del final (en este ejemplo es 2) es el número de versión de la función.2. Abra la consola de CloudFront en https://console.aws.amazon.com/cloudformation/.3. En la lista de distribuciones, seleccione el ID de la distribución a la que desee añadir disparadores.4. Seleccione la pestaña Behaviors.5. Seleccione la casilla del comportamiento de la caché al que desee añadir disparadores y, a

continuación, seleccione Edit.6. At Lambda Function Associations, en la lista Event Type, elija cuándo desea que se ejecute la función:

con solicitudes de espectadores, con respuestas al espectador, solicitudes al origen o respuestas alorigen.

Para obtener más información, consulte Cómo decidir el evento de CloudFront que utilizar paradisparar una función de Lambda (p. 305).

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. Para ejecutar la misma función con distintos tipos de eventos, elija + y repita los pasos 6 y 7.9. Seleccione Yes, Edit.10. Para añadir disparadores de varios comportamientos de la caché para esa distribución, repita los

pasos 5 al 9. Versión de API 2016-09-29307

Amazon CloudFront Guía para desarrolladoresComprobación y depuración

La función comienza a procesar solicitudes de los eventos de CloudFront especificados cuandola distribución de CloudFront actualizada se implementa. Para determinar si una distribución seha implementado, seleccione Distributions en el panel de navegación. Cuando una distribución seimplementa, el valor de la columna Status de la distribución cambia de In Progress a Deployed.

Prueba y depuración de funciones deLambda@Edge

Puede probar las funciones de Lambda@Edge en la consola de Lambda utilizando eventos de pruebamodelados en los eventos de CloudFront. Sin embargo, las pruebas en la consola solo validan la lógica yno aplican límites de servicio específicos de Lambda@Edge.

Para monitorizar la ejecución de su función en CloudFront y ayudar a determinar si funciona segúnlo previsto, puede crear instrucciones de registro para las funciones de Lambda que se ejecutan enLambda@Edge que escribirán en CloudWatch Logs.

Cuando compruebe los archivos de registro, tenga en cuenta que los archivos de registro se almacenan enla región más cercana a la ubicación donde se ejecuta la función. Por lo tanto, si visita un sitio web desde,por ejemplo, Londres, debe cambiar la región para ver el CloudWatch Logs para la región de Londres.

Para obtener más información, consulte Métricas de CloudWatch y CloudWatch Logs para funciones deLambda.

Para obtener más información, consulte los siguientes temas:

• Estructura de eventos (p. 309)• Requisitos y restricciones en funciones de Lambda (p. 333)

Métricas de CloudWatch y CloudWatch Logs parafunciones de Lambda

Utilice métricas de CloudWatch para monitorizar en tiempo real las solicitudes de CloudFront que disparanfunciones de Lambda. También puede utilizar CloudWatch Logs para obtener información agregada. Losregistros y las métricas no suponen ningún cargo adicional.

Temas• Métricas de CloudWatch (p. 308)• CloudWatch Logs (p. 309)

Métricas de CloudWatchAl crear un disparador para un evento de CloudFront, Lambda comienza a enviar automáticamentemétricas a CloudWatch. Las métricas están disponibles para todas las regiones Lambda. El nombre decada métrica /aws/lambda/us-east-1.function-name donde function-name es el nombre que dioa la función al crearla. CloudWatch envía métricas a la región que está más cerca de la ubicación donde seejecuta la función.

Para obtener más información acerca de métricas de CloudWatch, consulte la Guía del usuario de AmazonCloudWatch.

Versión de API 2016-09-29308

Amazon CloudFront Guía para desarrolladoresCloudWatch Logs

CloudWatch LogsAl crear un disparador, Lambda comienza a enviar automáticamente datos a CloudWatch Logs acerca delas solicitudes de CloudFront que disparan funciones de Lambda. Utilice las herramientas de CloudWatchLogs para obtener acceso a los registros.

Lambda crea flujos de registro de CloudWatch Logs en las regiones de CloudWatch Logs más cercanasa las ubicaciones donde se ejecuta la función. El formato del nombre de cada flujo de registros es /aws/lambda/us-east-1.function-name donde function-name es el nombre que dio a la función alcrearla.

Para obtener información acerca de los permisos necesarios para enviar datos a CloudWatch Logs,consulte Setting IAM Permissions and Roles for Lambda@Edge en la Guía del usuario de IAM.

Para obtener información acerca de la adición de registros a una función de Lambda, consulte Logging(Node.js) en la AWS Lambda Developer Guide.

Para obtener más información acerca de límites de CloudWatch Logs, consulte Límites en la AmazonCloudWatch Logs User Guide.

Lambda@Edge limita los registros en función del volumen de solicitudes y el tamaño de los registros.

Eliminación de funciones de Lambda@Edge yréplicas

Puede eliminar una función de Lambda@Edge solo cuando CloudFront haya eliminado las réplicasde la función. Las réplicas de una función de Lambda se eliminan automáticamente en las siguientessituaciones:

• Una vez que haya eliminado la última asociación de la función desde todas sus distribuciones deCloudFront. Si más de una distribución utiliza una función, las réplicas se eliminan solo después de quela función se desvincule de 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.

También puede eliminar una versión específica de una función si la versión no tiene ninguna distribuciónde CloudFront asociada. Si elimina la asociación para una versión de función, puede eliminar normalmentela función unas pocas horas más tarde.

Las réplicas no se pueden eliminar manualmente en este momento. Esto contribuye a evitar una situaciónen la que se elimine una réplica que todavía esté utilizando, lo que daría lugar a un error.

Tenga en cuenta que es importante no crear aplicaciones que utilicen réplicas de la función fuera deCloudFront, ya que las réplicas se eliminarán siempre que se eliminen sus asociaciones con distribucioneso cuando se eliminen las propias distribuciones. Por lo tanto, la réplica de la que depende una aplicaciónexterna podría eliminarse sin ningún tipo de advertencia, lo que provocaría un error.

Estructura de eventosLos ejemplos de esta sección muestran eventos de solicitud y respuesta que CloudFront pasa o devuelvede una función de Lambda@Edge cuando se activa.

Temas

Versión de API 2016-09-29309

Amazon CloudFront Guía para desarrolladoresSelección de origen dinámico basada en contenido

• Selección de origen dinámico basada en contenido (p. 310)• Evento de solicitud (p. 310)• Evento de respuesta (p. 314)

Selección de origen dinámico basada en contenidoPuede utilizar el patrón de ruta de un comportamiento de la caché para direccionar las solicitudes a unorigen, en función de la ruta y el nombre del objeto solicitado, como images/*.jpg. Lambda@Edge tambiénle permite direccionar las solicitudes a un origen en función de otras características, como los valores delos encabezados de solicitudes.

Esta selección dinámica del origen basada en el contenido puede resultar útil en varios casos. Por ejemplo,puede distribuir solicitudes entre orígenes de diferentes zonas geográficas para facilitar el balanceo decarga global. También puede direccionar solicitudes selectivamente a varios orígenes, cada uno de elloscon un propósito distinto: control de bots, optimización SEO, autenticación, etc. Para obtener códigos demuestra que muestran cómo utilizar esta característica, consulte Funciones de ejemplo para selección deorigen dinámico basada en contenido.

En el evento de solicitud al origen de CloudFront, el elemento de origen de la estructura de eventoscontiene información sobre el origen personalizado o de Amazon S3 al que se direccionaría la solicitud, enfunción del patrón de ruta. Puede actualizar los valores del objeto de origen para direccionar una solicituda otro origen. El origen no tiene por qué estar definido en la distribución, y se puede sustituir un objeto deorigen de Amazon S3 por un objeto de origen personalizado y viceversa.

Es posible especificar un origen personalizado o un origen de Amazon S3 en una única solicitud, pero noambos.

Evento de solicitudEste es el formato del objeto de evento que CloudFront pasa a una función de Lambda cuando un eventode solicitud del espectador o de solicitud al origen de CloudFront la disparan:

{ "Records": [ { "cf": { "config": { "distributionDomainName": "d123.cloudfront.net", "distributionId": "EDFDVBD6EXAMPLE", "eventType": "viewer-request", "requestId": "MRVMF7KydIvxMWfJIglgwHQwZsbG2IhRJ07sn9AkKUFSHS9EXAMPLE==" }, "request": { "clientIp": "2001:0db8:85a3:0:0:8a2e:0370:7334", "querystring": "size=large", "uri": "/picture.jpg", "method": "GET", "headers": { "host": [ { "key": "Host", "value": "d111111abcdef8.cloudfront.net" } ], "user-agent": [ { "key": "User-Agent", "value": "curl/7.51.0" }

Versión de API 2016-09-29310

Amazon CloudFront Guía para desarrolladoresEvento de solicitud

] }, "origin": { "custom": { "customHeaders": { "my-origin-custom-header": [ { "key": "My-Origin-Custom-Header", "value": "Test" } ] }, "domainName": "example.com", "keepaliveTimeout": 5, "path": "/custom_path", "port": 443, "protocol": "https", "readTimeout": 5, "sslProtocols": [ "TLSv1", "TLSv1.1" ] }, "s3": { "authMethod": "origin-access-identity", "customHeaders": { "my-origin-custom-header": [ { "key": "My-Origin-Custom-Header", "value": "Test" } ] }, "domainName": "my-bucket.s3.amazonaws.com", "path": "/s3_path", "region": "us-east-1" } } } } } ]}

Los eventos de solicitud incluyen los siguientes valores:

Valores de configuración

distributionDomainName (solo lectura)

El nombre de dominio de la distribución asociada a la solicitud.distributionID (solo lectura)

El ID de la distribución asociada a la solicitud.eventType (solo lectura)

El tipo del disparador asociado a la solicitud.requestId (eventos de solicitud del espectador de solo lectura)

Una cadena cifrada que identifica una solicitud de forma única. El valor de requestId tambiénaparece en los logs de los accesos de CloudFront como x-edge-request-id. Para obtener másinformación, consulte Configuración y uso de registros de acceso (p. 371) y Formato de archivos deregistro de distribución web (p. 377).

Versión de API 2016-09-29311

Amazon CloudFront Guía para desarrolladoresEvento de solicitud

Valores de solicitud: general

clientIp (solo lectura)

La dirección IP del espectador que ha realizado la solicitud. Si el espectador utiliza un proxy HTTP oun balanceador de carga para enviar la solicitud, el valor es la dirección IP del proxy o del balanceadorde carga.

headers (lectura/escritura)

Los encabezados de la solicitud. Las claves del objeto headers son los nombres de encabezadoen minúscula en la solicitud HTTP. Estas claves en minúsculas le dan acceso a los valoresdel encabezado sin diferenciar mayúsculas de minúsculas. Cada encabezado (por ejemplo,headers["accept"] o headers["host"]) es una matriz de pares clave-valor, en la que key es elnombre del encabezado sin diferenciar mayúsculas de minúsculas que aparece en una solicitud HTTPy value es un valor de encabezado. El número de elementos de la matriz es el número de veces quese repite un encabezado en una solicitud HTTP.

Para obtener más información acerca de restricciones de uso de encabezados, consulteEncabezados (p. 334).

method (solo lectura)

El método HTTP de la solicitud del espectador.querystring

La cadena de consulta, si hay alguna, que CloudFront ha recibido en la solicitud del espectador.Si la solicitud del espectador no incluye una cadena de consulta, la estructura del evento incluyequerystring con un valor vacío. Para obtener más información acerca de cadenas de consulta,consulte Almacenar en caché contenido en función de parámetros de cadenas de consulta (p. 196).

uri (lectura/escritura)

La ruta relativa del objeto solicitado. Tenga en cuenta lo siguiente:• La nueva ruta relativa debe comenzar por una barra inclinada (/).• Si una función cambia la URI por una solicitud, eso cambia el objeto que el espectador está

solicitando.• 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.

Valores de solicitud: origen personalizado

Es posible especificar un origen personalizado o un origen de Amazon S3 en una única solicitud, pero noambos.

customHeaders

Si desea incluir encabezados personalizados con la solicitud, especifique un nombre de encabezadoy un par de valores para cada uno de ellos. No es posible añadir encabezados que están en la listanegra para encabezados personalizados o enlaces de origen, y no puede existir un encabezadocon el mismo nombre en request.headers ni en request.origin.custom.customHeaders. Lasrestricciones para request.headers también se aplican a los encabezados personalizados. Paraobtener más información, consulte Encabezados personalizados que CloudFront no puede reenviar alorigen (p. 250) y Encabezados de listas negras (p. 334).

domainName

El nombre de dominio del servidor de origen, como www.example.com. El nombre de dominio nopuede estar vacío, no puede incluir dos puntos (:) y no puede utilizar el formato de dirección IPV4. Elnombre de dominio puede tener una longitud de hasta 253 caracteres.

Versión de API 2016-09-29312

Amazon CloudFront Guía para desarrolladoresEvento de solicitud

keepaliveTimeout

El periodo de tiempo, en segundos, que CloudFront debería intentar mantener la conexión conel origen después de recibir el último paquete de una respuesta. El valor debe ser un númerocomprendido entre 1 y 60 segundos.

path

La ruta del directorio del servidor donde la solicitud debería encontrar el contenido. La ruta debeempezar por una barra inclinada (/), pero no debe incluirla al final (por ejemplo, ruta/). La ruta debeestar codificada en URL, con una longitud máxima de 255 caracteres.

port

El puerto del origen personalizado. Este valor debe ser 80 o 443, o un número comprendido entre1024 y 65535.

protocolo

La política del protocolo de origen que CloudFront debe utilizar al recuperar objetos del origen. El valorpuede ser http o https.

readTimeout

El periodo de tiempo, en segundos, que CloudFront debe esperar para obtener una respuestadespués de enviar una solicitud al origen, y el periodo de tiempo que CloudFront debe esperardespués de recibir un paquete de una respuesta antes de recibir el paquete siguiente. El valor debeser un número comprendido entre 4 y 60 segundos.

sslProtocols

Los protocolos de SSL que CloudFront puede utilizar a la hora de establecer una conexión HTTPS consu origen. Los valores pueden ser los siguientes: TLSv1.2, TLSv1.1, TLSv1, SSLv3.

Valores de solicitud: origen de Amazon S3

Es posible especificar un origen personalizado o un origen de Amazon S3 en una única solicitud, pero noambos.

authMethod

Establézcalo en origin-access-identity si su bucket de Amazon S3 tiene configurada unade identidad de acceso de origen (OAI), o en none si no se utiliza OAI. Si establece authMethod enorigin-access-identity, se deben cumplir varios requisitos:• Debe especificar una región en el encabezado.• Debe utilizar la misma OAI al cambiar de un origen de Amazon S3 a otro.• No se puede utilizar una OAI al cambiar de un origen personalizado a un origen de Amazon S3.

Para obtener más información acerca del uso de una OAI, consulte Restricción del acceso a contenidode Amazon S3 utilizando una identidad de acceso de origen (p. 110).

customHeaders

Si desea incluir encabezados personalizados con la solicitud, especifique un nombre de encabezadoy un par de valores para cada uno de ellos. No es posible añadir encabezados que están en la listanegra para encabezados personalizados o enlaces de origen, y no puede existir un encabezadocon el mismo nombre en request.headers ni en request.origin.custom.customHeaders. Lasrestricciones para request.headers también se aplican a los encabezados personalizados. Paraobtener más información, consulte Encabezados personalizados que CloudFront no puede reenviar alorigen (p. 250) y Encabezados de listas negras (p. 334).

domainName

El nombre de dominio del servidor de origen de Amazon S3, como my-bucket.s3.amazonaws.com.El nombre de dominio no puede estar vacío y debe ser un nombre de bucket válido (tal y como lo

Versión de API 2016-09-29313

Amazon CloudFront Guía para desarrolladoresEvento de respuesta

define Amazon S3). No utilice un punto de enlace específico de la región, como my-bucket.s3-eu-west-1.amazonaws.com. El nombre puede tener una longitud de hasta 128 caracteres y debeescribirse en letras minúsculas.

path

La ruta del directorio del servidor donde la solicitud debería encontrar el contenido. La ruta debeempezar por una barra inclinada (/), pero no debe incluirla al final (por ejemplo, ruta/).

region

La región del bucket de Amazon S3. Esto solo es obligatoria si se utiliza OAI.

Evento de respuestaEste es el formato del objeto de evento que CloudFront pasa a una función de Lambda cuando un eventode respuesta al espectador o de respuesta del origen de CloudFront la disparan:

{ "Records": [ { "cf": { "config": { "distributionDomainName": "d123.cloudfront.net", "distributionId": "EDFDVBD6EXAMPLE", "eventType": "viewer-response", "requestId": "xGN7KWpVEmB9Dp7ctcVFQC4E-nrcOcEKS3QyAez--06dV7TEXAMPLE==" }, "request": { "clientIp": "2001:0db8:85a3:0:0:8a2e:0370:7334", "method": "GET", "uri": "/picture.jpg", "querystring": "size=large", "headers": { "host": [ { "key": "Host", "value": "d111111abcdef8.cloudfront.net" } ], "user-agent": [ { "key": "User-Agent", "value": "curl/7.18.1" } ] } }, "response": { "status": "200", "statusDescription": "OK", "headers": { "server": [ { "key": "Server", "value": "MyCustomOrigin" } ], "set-cookie": [ { "key": "Set-Cookie", "value": "theme=light" },

Versión de API 2016-09-29314

Amazon CloudFront Guía para desarrolladoresEvento de respuesta

{ "key": "Set-Cookie", "value": "sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT" } ] } } } } ]}

Los eventos de respuesta incluyen los valores que aparecen en el evento de solicitud correspondiente,además los valores siguientes. Si la función de Lambda@Edge genera una respuesta HTTP, consulteGeneración de respuestas HTTP en los disparadores de solicitud (p. 316).

distributionID (solo lectura)

El ID de la distribución asociada a la solicitud.eventType (solo lectura)

El tipo del disparador asociado a la respuesta.headers

Los encabezados que desea que devuelva CloudFront en la respuesta generada. Tenga en cuenta losiguiente:• 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 diferenciarmayúsculas de minúsculas.

• Cada encabezado (por ejemplo, headers["accept"] or headers["host"]) es una matriz depares clave-valor. Para un encabezado determinado, la matriz contiene un par de clave-valor paracada valor de la respuesta generada.

• Especifique key como el nombre del encabezado que diferencia mayúsculas de minúsculas talcomo aparece en una solicitud HTTP; por ejemplo, accept o host.

• Especifique value como un valor de encabezado.

Para obtener más información acerca de restricciones de uso de encabezados, consulteEncabezados (p. 334).

requestId (solo eventos de respuesta al espectador de solo lectura)

Una cadena cifrada que identifica una solicitud de forma única. El valor de requestId tambiénaparece en los registros de acceso de CloudFront como el x-edge-request-id. Para obtener másinformación, consulte Configuración y uso de registros de acceso (p. 371) y Formato de archivos deregistro de distribución web (p. 377).

request: uno de los siguientes:• Viewer response: la solicitud que CloudFront ha recibido del espectador y que podría haber sido

modificada por la función de Lambda que fue disparada por un evento de solicitud del espectador.• Origin response: la solicitud que CloudFront ha reenviado al origen y que podría haber sido

modificada por la función de Lambda que fue disparada por un evento de solicitud al origen.

Si la función de Lambda modifica el objeto de la solicitud, los cambios se pasan por alto.response: uno de los siguientes:

• Viewer response: la respuesta que CloudFront devolverá al espectador en caso de eventos derespuesta al espectador.

• Origin response: la respuesta que CloudFront ha recibido del origen en caso de eventos derespuesta del origen.

Versión de API 2016-09-29315

Amazon CloudFront Guía para desarrolladoresGeneración de respuestas HTTPen los disparadores de solicitud

status

El código de estado HTTP que CloudFront devuelve al espectador.statusDescription

La descripción del estado HTTP que CloudFront devuelve al espectador.

Generación de respuestas HTTP en losdisparadores de solicitud

Cuando CloudFront recibe una solicitud, es posible utilizar una función de Lambda para generar unarespuesta HTTP que CloudFront devuelve directamente al espectador sin enviarla al origen. La generaciónde respuestas HTTP reduce la carga en el origen, y normalmente también reduce la latencia para elespectador.

Entre las situaciones más comunes para generar respuestas HTTP se incluyen las siguientes:

• Devolución de una página web de pequeño tamaño al espectador• Devolución de un código de estado HTTP 301 o 302 para redirigir al usuario a otra página web• Devolución de un código de estado HTTP 401 al espectador si el usuario no se ha autenticado

Una función de Lambda@Edge puede generar una respuesta HTTP cuando ocurren los siguientes eventosde CloudFront:

Eventos de solicitud del espectador

Cuando un evento de solicitud del espectador activa una función, CloudFront devuelve la respuesta alespectador 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é perimetraluna respuesta generada previamente por la función.• Si la respuesta está en la caché, la función no se ejecuta y CloudFront devuelve al espectador la

respuesta almacenada en la caché.• Si la respuesta no está en la caché, la función se ejecuta, CloudFront devuelve la respuesta al

espectador y también la almacena en la caché.

Para ver algunos ejemplos de código para generar respuestas HTTP, consulte cifrado en el nivel decampo. También puede sustituir las respuestas HTTP en disparadores de respuesta. Para obtenermás información, consulte Actualización de respuestas HTTP en disparadores de respuesta delorigen (p. 318).

Modelo de programaciónEn esta sección se describe el modelo de programación a seguir para usar Lambda@Edge con el fin degenerar respuestas HTTP.

Temas• Objeto de respuesta (p. 317)• Errores (p. 318)• Campos obligatorios (p. 318)

Versión de API 2016-09-29316

Amazon CloudFront Guía para desarrolladoresModelo de programación

Objeto de respuestaLa respuesta que devuelva como parámetro result del método callback debe tener la siguienteestructura (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' }], ... }, status: 'HTTP status code', statusDescription: 'status description'};

El objeto de respuesta puede incluir los siguientes valores:

body

El cuerpo, si lo hay, que desea que CloudFront devuelva en la respuesta generada.bodyEncoding

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 comotexto.

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 losiguiente:• 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 diferenciarmayúsculas de minúsculas.

• Cada encabezado (por ejemplo, headers["accept"] or headers["host"]) es una matriz depares clave-valor. Para un encabezado determinado, la matriz contiene un par de clave-valor paracada valor de la respuesta generada. Por ejemplo, si desea incluir 3 valores en el encabezado dehost, la matriz headers["host"] contendrá 3 pares clave-valor.

• key es el nombre del encabezado que diferencia mayúsculas de minúsculas tal como aparece enuna solicitud HTTP; por ejemplo, accept o host.

• value es un valor de encabezado.

Para obtener más información acerca de restricciones de uso de encabezados, consulteEncabezados (p. 334).

status

El código de estado HTTP que desea que CloudFront utilice para:• Devolverlo en la respuesta• Almacenarlo en la caché perimetral de CloudFront cuando la respuesta la generó una función

activada por un evento de solicitud al origen• Iniciar sesión en los Configuración y uso de registros de acceso (p. 371) de CloudFront

Versión de API 2016-09-29317

Amazon CloudFront Guía para desarrolladoresActualización de respuestas HTTP endisparadores de respuesta del origen

Si el valor de status no está comprendido entre 200 y 599, CloudFront devuelve un error alespectador.

statusDescription

La descripción que desea que CloudFront devuelva en la respuesta, y que acompañará al códigode estado HTTP. No es obligatorio utilizar descripciones estándar, como OK en un código de estadoHTTP 200.

ErroresLos siguientes son posibles errores de respuestas HTTP generadas.

La respuesta contiene un cuerpo y especifica un código de estado 204 (Sin contenido)

Cuando una solicitud del espectador activa una función, CloudFront devuelve un código de estadoHTTP 502 (Puerta de enlace incorrecta) al espectador cuando se cumplen las dos condicionessiguientes:• 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 queuna respuesta HTTP 204 no necesita contener cuerpo de mensaje.

Límites en el tamaño de la respuesta generada

El tamaño máximo de una respuesta generada por una función de Lambda (incluidos cuerpo yencabezados) depende del evento que dispara la función:• Eventos de solicitud del espectador: 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(Puerta de enlace incorrecta) al espectador.

Campos obligatoriosEl campo status es obligatorio.

Todos los demás campos son opcionales.

Actualización de respuestas HTTP en disparadoresde respuesta del origen

Cuando CloudFront recibe una respuesta HTTP desde el servidor de origen, si existe un disparador derespuesta del origen asociado al comportamiento de la caché, es posible modificar la respuesta HTTP paraanular lo que ha devuelto el origen.

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 contenidoestático para devolverlo al espectador cuando un origen devuelva un código de estado de error (4xx o5xx). Para ver código de muestra, consulte Ejemplo: Uso de un disparador de respuesta del origen paraactualizar el código de estado de error a 200-OK (p. 332).

Versión de API 2016-09-29318

Amazon CloudFront Guía para desarrolladoresFunciones de ejemplo

• Cambiar el estado para establecer un código de estado HTTP 301 o 302, con objeto de redirigir alusuario a otro sitio web cuando un origen devuelve un código de estado de error (4xx o 5xx). Para vercódigo de muestra, consulte Ejemplo: Uso de un disparador de respuesta del origen para actualizar elcódigo de estado de error a 302-Found (p. 332).

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 desolicitud (p. 316).

Cuando esté trabajando con la respuesta HTTP, tenga en cuenta que Lambda@Edge no expone el cuerpoHTML que devuelve el servidor de origen al disparador de respuesta del origen. Puede generar un cuerpocon contenido estático estableciéndolo en el valor deseado, o eliminar el cuerpo dentro de la funciónestableciendo un valor vacío. Si no actualiza el campo de cuerpo de la función, se devolverá al espectadorel cuerpo original devuelto por el servidor de origen.

Funciones de ejemplo de Lambda@EdgeConsulte las secciones siguientes para ver ejemplos de cómo usar funciones de Lambda con CloudFront.

Tenga en cuenta que cada función de Lambda@Edge debe contener el parámetro callback paraprocesar una solicitud o devolver una respuesta correctamente. Para obtener más información, consulteEscritura y creación de una función de Lambda@Edge (p. 299).

Temas• Ejemplos generales (p. 319)• Generación de respuestas: ejemplos (p. 321)• Trabajar con cadenas de consulta: ejemplos (p. 323)• Personalizar contenido por encabezados de tipo de dispositivo o país: ejemplos (p. 325)• Selección de origen dinámico basada en contenido: ejemplos (p. 327)• Actualización de estados de error: ejemplos (p. 332)

Ejemplos generalesEjemplo: prueba A/BPuede utilizar el siguiente ejemplo si desea probar dos versiones diferentes de la página de inicio, pero nodesea crear redirecciones ni cambiar la URL. En este ejemplo se establecen cookies cuando CloudFrontrecibe una solicitud, el usuario se asigna aleatoriamente a la versión A o B y, a continuación, se devuelvela versión correspondiente al espectador.

'use strict';

exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; const headers = request.headers;

if (request.uri !== '/experiment-pixel.jpg') { // do not process if this is not an A-B test request callback(null, request); return; }

const cookieExperimentA = 'X-Experiment-Name=A';

Versión de API 2016-09-29319

Amazon CloudFront Guía para desarrolladoresEjemplos generales

const cookieExperimentB = 'X-Experiment-Name=B'; const pathExperimentA = '/experiment-group/control-pixel.jpg'; const pathExperimentB = '/experiment-group/treatment-pixel.jpg';

/* * 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; 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);};

Ejemplo: sobrescritura de un encabezado de respuestaEn el siguiente ejemplo se muestra cómo cambiar el valor de un encabezado de respuesta según el valorde otro encabezado:

'use strict';

exports.handler = (event, context, callback) => { const response = event.Records[0].cf.response; const headers = response.headers;

const headerNameSrc = 'X-Amz-Meta-Last-Modified'; const headerNameDst = 'Last-Modified';

Versión de API 2016-09-29320

Amazon CloudFront Guía para desarrolladoresGeneración de respuestas: ejemplos

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);};

Generación de respuestas: ejemplosEjemplo: envío de contenido estático (respuesta generada)En el siguiente ejemplo se muestra cómo utilizar una función de Lambda para enviar contenido de sitio webestático, lo que reduce la carga en el servidor de origen y la latencia total.

Note

Puede generar respuestas HTTP para los eventos de solicitud del espectador y al origen. Paraobtener más información, consulte Generación de respuestas HTTP en los disparadores desolicitud (p. 316). También puede sustituir la respuesta HTTP en eventos de respuesta delorigen y al espectador. Para obtener más información, consulte Actualización de respuestas HTTPen disparadores de respuesta del origen (p. 318).

'use strict';

let 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>`;

exports.handler = (event, context, callback) => { /* * Generate HTTP OK response using 200 status code with HTML body. */ const response = { status: '200', statusDescription: 'OK', headers: { 'cache-control': [{ key: 'Cache-Control', value: 'max-age=100' }], 'content-type': [{ key: 'Content-Type', value: 'text/html' }], 'content-encoding': [{ key: 'Content-Encoding', value: 'UTF-8' }], },

Versión de API 2016-09-29321

Amazon CloudFront Guía para desarrolladoresGeneración de respuestas: ejemplos

body: content, }; callback(null, response);};

Ejemplo: distribución de contenido de sitio web estático comocontenido comprimido Gzip (Respuesta generada)Esta función demuestra cómo utilizar una función de Lambda para distribuir contenido de sitio web estáticocomo contenido comprimido gzip, que reduce tanto la carga en el servidor de origen como la latenciageneral.

Puede generar respuestas HTTP para los eventos de solicitud del espectador y al origen. Para obtenermás información, consulte Generación de respuestas HTTP en los disparadores de solicitud (p. 316).

'use strict';

const zlib = require('zlib');

let 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>`;

exports.handler = (event, context, callback) => {

/* * Generate HTTP OK response using 200 status code with a gzip compressed content HTML body. */ const buffer = zlib.gzipSync(content); const base64EncodedBody = buffer.toString('base64'); var response = { headers: { 'content-type': [{key:'Content-Type', value: 'text/html; charset=utf-8'}], 'content-encoding' : [{key:'Content-Encoding', value: 'gzip'}] }, body: base64EncodedBody, bodyEncoding: 'base64', status: '200', statusDescription: "OK" } callback(null, response);};

Ejemplo: generación de una redirección HTTP (respuestagenerada)En el siguiente ejemplo se muestra cómo generar una redirección HTTP.

Versión de API 2016-09-29322

Amazon CloudFront Guía para desarrolladoresTrabajar con cadenas de consulta: ejemplos

Note

Puede generar respuestas HTTP para los eventos de solicitud del espectador y al origen. Paraobtener más información, consulte Generación de respuestas HTTP en los disparadores desolicitud (p. 316).

'use strict';

exports.handler = (event, context, callback) => { /* * Generate HTTP redirect response with 302 status code and Location header. */ const response = { status: '302', statusDescription: 'Found', headers: { location: [{ key: 'Location', value: 'http://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html', }], }, }; callback(null, response);};

Trabajar con cadenas de consulta: ejemplosEjemplo: agregar un encabezado en función de un parámetro dela cadena de consultaEl siguiente ejemplo muestra cómo obtener el par clave-valor de un parámetro de la cadena de consulta y,a continuación, añadir un encabezado en función de dichos valores.

'use strict';

const querystring = require('querystring');exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; /* 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. */

/* Parse request querystring to get javascript object */ const params = querystring.parse(request.querystring);

/* Move auth param from querystring to headers */ const headerName = 'Auth-Header'; request.headers[headerName.toLowerCase()] = [{ key: headerName, value: params.auth }]; delete params.auth;

/* Update request querystring */ request.querystring = querystring.stringify(params);

callback(null, request);}

Versión de API 2016-09-29323

Amazon CloudFront Guía para desarrolladoresTrabajar con cadenas de consulta: ejemplos

;

Ejemplo: normalizar parámetros de cadenas de consulta paramejorar la tasa de acceso a la cachéEl siguiente ejemplo muestra cómo mejorar la tasa de acceso a la caché haciendo los siguientes cambiosen las cadenas de consulta antes de que CloudFront reenvíe las solicitudes a su origen:

• Alfabetizar los pares clave-valor por el nombre del parámetro• Cambiar a minúsculas el modelo de mayúsculas y minúsculas de los pares clave-valor

Para obtener más información, consulte Almacenar en caché contenido en función de parámetros decadenas de consulta (p. 196).

'use strict';

const querystring = require('querystring');

exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; /* When you configure a distribution to forward query strings to the origin and * to cache based on a whitelist of query string parameters, we recommend * the following to improve the cache-hit ratio: * - Always list parameters in the same order. * - Use the same case for parameter names and values. * * This function normalizes query strings so that parameter names and values * are lowercase and parameter names are in alphabetical order. * * For more information, see: * http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/QueryStringParameters.html */

console.log('Query String: ', request.querystring);

/* Parse request query string to get javascript object */ const params = querystring.parse(request.querystring.toLowerCase()); const sortedParams = {};

/* Sort param keys */ Object.keys(params).sort().forEach(key => { sortedParams[key] = params[key]; });

/* Update request querystring with normalized */ request.querystring = querystring.stringify(sortedParams);

callback(null, request);};

Ejemplo: redireccionamiento de los usuarios sin autenticar a unapágina de inicio de sesiónEl siguiente ejemplo muestra cómo redirigir a los usuarios una página de inicio de sesión si no haintroducido sus credenciales.

'use strict';

Versión de API 2016-09-29324

Amazon CloudFront Guía para desarrolladoresPersonalizar contenido por encabezados

de tipo de dispositivo o país: ejemplos

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;}

exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; const headers = request.headers;

/* 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. */

/* Check for session-id in cookie, if present then proceed with request */ const parsedCookies = parseCookies(headers); if (parsedCookies && parsedCookies['session-id']) { callback(null, request); }

/* URI encode the original request to be sent as redirect_url in query params */ const encodedRedirectUrl = encodeURIComponent(`https://${headers.host[0].value}${request.uri}?${request.querystring}`); const response = { status: '302', statusDescription: 'Found', headers: { location: [{ key: 'Location', value: `http://www.example.com/signin?redirect_url=${encodedRedirectUrl}`, }], }, }; callback(null, response);};

Personalizar contenido por encabezados de tipo dedispositivo o país: ejemplosEjemplo: redireccionamiento de solicitudes de espectadores auna URL específica del paísEl siguiente ejemplo muestra cómo generar una respuesta de redireccionamiento HTTP con una URLespecífica del país y devolver la respuesta al espectador. Esto resulta útil cuando se quiere proporcionarrespuestas específicas del país. Por ejemplo:

• Si tiene subdominios específicos de un país, como us.ejemplo.com y tw.ejemplo.com, puede generaruna respuesta de redireccionamiento cuando un espectador solicite ejemplo.com.

• Si está haciendo streaming de vídeo, pero no tiene derechos para transmitir el contenido en un paísdeterminado, puede redirigir a los usuarios de dicho país a una página en la que se explica por qué nopueden ver el vídeo.

Versión de API 2016-09-29325

Amazon CloudFront Guía para desarrolladoresPersonalizar contenido por encabezados

de tipo de dispositivo o país: ejemplos

Tenga en cuenta lo siguiente:

• 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 desolicitud seleccionados (p. 41).

• CloudFront añade el encabezado CloudFront-Viewer-Country después del evento de solicitud delespectador. Para utilizar este ejemplo, debe crear un activador para el evento de solicitud al origen.

'use strict';

/* This is an origin request function */exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; const headers = request.headers;

/* * 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. */

let url = 'https://example.com/'; if (headers['cloudfront-viewer-country']) { const countryCode = headers['cloudfront-viewer-country'][0].value; if (countryCode === 'TW') { url = 'https://tw.example.com/'; } else if (countryCode === 'US') { url = 'https://us.example.com/'; } }

const response = { status: '302', statusDescription: 'Found', headers: { location: [{ key: 'Location', value: url, }], }, }; callback(null, response);};

Ejemplo: ofrecer distintas versiones de un objeto en función deldispositivoEl siguiente ejemplo muestra cómo ofrecer distintas versiones de un objeto en función del tipo dedispositivo que el usuario está utilizando; por ejemplo, un dispositivo móvil o una tablet. Tenga en cuenta losiguiente:

• Debe configurar la distribución para almacenar en la caché en función de los encabezadosCloudFront-Is-*-Viewer. Para obtener más información, consulte Caché en función deencabezados de solicitud seleccionados (p. 41).

Versión de API 2016-09-29326

Amazon CloudFront Guía para desarrolladoresSelección de origen dinámico

basada en contenido: ejemplos

• CloudFront añade los encabezados CloudFront-Is-*-Viewer después del evento de solicitud delespectador. Para utilizar este ejemplo, debe crear un activador para el evento de solicitud al origen.

'use strict';

/* This is an origin request function */exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; const headers = request.headers;

/* * 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. */

const desktopPath = '/desktop'; const mobilePath = '/mobile'; const tabletPath = '/tablet'; const smarttvPath = '/smarttv';

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);};

Selección de origen dinámico basada en contenido:ejemplosEjemplo: Uso de un disparador de solicitud al origen paracambiar desde un origen personalizado a un origen de AmazonS3Esta función demuestra cómo utilizar un disparador de solicitud al origen para cambiar desde un origenpersonalizado a un origen de Amazon S3 desde el que recuperar el contenido, en función de laspropiedades de la solicitud.

'use strict';

Versión de API 2016-09-29327

Amazon CloudFront Guía para desarrolladoresSelección de origen dinámico

basada en contenido: ejemplos

const querystring = require('querystring'); exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; /** * Reads query string to check if S3 origin should be used, and * if true, sets S3 origin properties. */ const params = querystring.parse(request.querystring); if (params['useS3Origin']) { if (params['useS3Origin'] === 'true') { const s3DomainName = 'my-bucket.s3.amazonaws.com'; /* Set S3 origin fields */ request.origin = { s3: { domainName: s3DomainName, region: '', authMethod: 'none', path: '', customHeaders: {} } }; request.headers['host'] = [{ key: 'host', value: s3DomainName}]; } } callback(null, request);};

Ejemplo: Uso de un disparador de solicitud al origen paracambiar la región del origen de Amazon S3Esta función demuestra cómo utilizar un disparador de solicitud al origen para cambiar el origen deAmazon S3 desde el que se recupera el contenido, en función de las propiedades de la solicitud.

En este ejemplo, utilizamos el valor del encabezado CloudFront-Viewer-Country para actualizar el nombrede dominio del bucket de S3 a un bucket en una región que está más cerca al espectador. Esto puederesultar útil de varias maneras:

• Reduce las latencias cuando la región especificada está más cerca del país del espectador.• 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.

Para utilizar este ejemplo, debe hacer lo siguiente:

• Configurar su distribución para caché en función del encabezado CloudFront-Viewer-Country. Paraobtener más información, consulte Caché en función de encabezados de solicitud seleccionados (p. 41).

• Crear un disparador para esta función en el evento de solicitud al origen. CloudFront añade elencabezado CloudFront-Viewer-Country después del evento de solicitud del espectador; por tanto, parautilizar este ejemplo, debe asegurarse de que la función ejecuta una solicitud al origen.

'use strict';

exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request;

Versión de API 2016-09-29328

Amazon CloudFront Guía para desarrolladoresSelección de origen dinámico

basada en contenido: ejemplos

/** * 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' };

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);};

Versión de API 2016-09-29329

Amazon CloudFront Guía para desarrolladoresSelección de origen dinámico

basada en contenido: ejemplos

Ejemplo: Uso de un disparador de solicitud al origen paracambiar desde un origen de Amazon S3 a un origenpersonalizadoEsta función demuestra cómo utilizar un disparador de solicitud al origen para cambiar el origenpersonalizado desde el que se recupera el contenido, en función de las propiedades de la solicitud.

'use strict';

const querystring = require('querystring'); exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; /** * Reads query string to check if custom origin should be used, and * if true, sets custom origin properties. */ const params = querystring.parse(request.querystring); if (params['useCustomOrigin']) { if (params['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'}]; } } callback(null, request);};

Ejemplo: Uso de un disparador de solicitud al origen paratransferir gradualmente el tráfico desde un bucket de Amazon S3a otroEsta función demuestra cómo transferir gradualmente el tráfico desde un bucket de Amazon S3 a otro, deforma controlada.

'use strict';

function getRandomInt(min, max) { /* Random number is inclusive of min and max*/ return Math.floor(Math.random() * (max - min + 1)) + min; }

exports.handler = (event, context, callback) => {

Versión de API 2016-09-29330

Amazon CloudFront Guía para desarrolladoresSelección de origen dinámico

basada en contenido: ejemplos

const request = event.Records[0].cf.request; const BLUE_TRAFFIC_PERCENTAGE = 80;

/** * 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. */

const randomNumber = getRandomInt(1, 100);

if (randomNumber <= BLUE_TRAFFIC_PERCENTAGE) { const domainName = 'blue-bucket.s3.amazonaws.com'; request.origin.s3.domainName = domainName; request.headers['host'] = [{ key: 'host', value: domainName}]; } callback(null, request);};

Ejemplo: Uso de un disparador de solicitud al origen paracambiar el nombre del dominio de origen en función delencabezado de paísEsta función demuestra cómo cambiar el nombre del dominio de origen en función del encabezadoCloudFront-Viewer-Country, de forma que el contenido se distribuya desde un origen más cercano al paísdel espectador.

La implementación de esta funcionalidad para su distribución puede tener ventajas como las siguientes:

• Reducción de las latencias cuando la región especificada está más cerca del país del espectador.• 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.

Tenga en cuenta que para habilitar esta funcionalidad, debe configurar su distribución para almacenar enla caché en función del encabezado CloudFront-Viewer-Country. Para obtener más información, consulteCaché en función de encabezados de solicitud seleccionados (p. 41).

'use strict';

exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; if (request.headers['cloudfront-viewer-country']) { const countryCode = request.headers['cloudfront-viewer-country'][0].value; if (countryCode === 'UK' || countryCode === 'DE' || countryCode === 'IE' ) { const domainName = 'eu.example.com'; request.origin.custom.domainName = domainName; request.headers['host'] = [{key: 'host', value: domainName}]; } } callback(null, request);};

Versión de API 2016-09-29331

Amazon CloudFront Guía para desarrolladoresActualización de estados de error: ejemplos

Actualización de estados de error: ejemplosEjemplo: Uso de un disparador de respuesta del origen paraactualizar el código de estado de error a 200-OKEsta función demuestra cómo actualizar el estado de la respuesta a 200 y generar un cuerpo concontenido estático para devolverlo al espectador en la siguiente situación:

• La función se activa en una respuesta del origen• El estado de la respuesta del servidor de origen es un código de estado de error (4xx o 5xx)

'use strict';

exports.handler = (event, context, callback) => { const response = event.Records[0].cf.response;

/** * 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) */

if (response.status >= 400 && response.status <= 599) { response.status = 200; response.statusDescription = 'OK'; response.body = 'Body generation example'; }

callback(null, response);};

Ejemplo: Uso de un disparador de respuesta del origen paraactualizar el código de estado de error a 302-FoundEsta función demuestra cómo actualizar el código de estado HTTP a 302 para la redirección a otraruta (comportamiento de la caché) en la que se ha configurado un origen diferente. Tenga en cuenta losiguiente:

• La función se activa en una respuesta del origen• El estado de la respuesta del servidor de origen es un código de estado de error (4xx o 5xx)

'use strict';

exports.handler = (event, context, callback) => { const response = event.Records[0].cf.response; const request = event.Records[0].cf.request;

/** * 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) */

Versión de API 2016-09-29332

Amazon CloudFront Guía para desarrolladoresRequisitos y restricciones

if (response.status >= 400 && response.status <= 599) { const redirect_path = `/plan-b/path?${request.querystring}`;

response.status = 302; response.statusDescription = 'Found';

/* Drop the body, as it is not required for redirects */ response.body = ''; response.headers['location'] = [{ key: 'Location', value: redirect_path }]; }

callback(null, response);};

Requisitos y restricciones en funciones de LambdaConsulte las siguientes secciones para ver los requisitos y las restricciones sobre el uso de funciones deLambda con CloudFront.

Temas• Distribuciones y asociaciones de CloudFront (p. 333)• Disparadores de CloudFront de funciones de Lambda (p. 333)• CloudWatch Logs (p. 334)• Encabezados (p. 334)• HTTP Status Codes (p. 336)• Entorno de ejecución y configuración de función de Lambda (p. 336)• Límites (p. 336)• Microsoft Smooth Streaming (p. 336)• Network Access (p. 337)• Parámetros de cadenas de consulta (p. 337)• Etiquetado (p. 337)• URI (p. 337)• Codificación de los URI y las cadenas de consulta (p. 337)

Distribuciones y asociaciones de CloudFront• Puede crear disparadores (asociaciones) de funciones de Lambda para un máximo de 25 distribuciones

por cuenta de AWS.• Puede crear un máximo de 100 disparadores (asociaciones) por distribución.• No se puede asociar una función de Lambda con una distribución de CloudFront propiedad de otra

cuenta de AWS.

Disparadores de CloudFront de funciones de Lambda• Puede añadir disparadores solo de versiones numeradas, no de $LATEST o alias.• Puede añadir disparadores solo de funciones en la región US East (N. Virginia).• Para añadir disparadores, el rol de la ejecución de IAM asociado a la función de Lambda

deben poder asumirlo las entidades principales del servicio lambda.amazonaws.com y

Versión de API 2016-09-29333

Amazon CloudFront Guía para desarrolladoresCloudWatch Logs

edgelambda.amazonaws.com. Para obtener más información, consulte Setting IAM Permissions andRoles for Lambda@Edge en la Guía del usuario de IAM.

CloudWatch LogsPara obtener más información acerca de límites de Amazon CloudWatch Logs, consulte Límites deCloudWatch Logs en la Guía del usuario de Amazon CloudWatch.

EncabezadosTenga en cuenta los siguientes requisitos y restricciones de uso de encabezados en Lambda@Edge.

Temas• Encabezados de listas negras (p. 334)• Encabezados de solo lectura (p. 334)• Encabezados CloudFront-* (p. 335)

Encabezados de listas negrasLos encabezados de listas negras no se exponen y las funciones de Lambda@Edge no pueden añadirlos.Si la función de Lambda añade un encabezado de una lista negra, ocurrirá un error al validar la solicitud enCloudFront. CloudFront devuelve código de estado HTTP 502 (Puerta de enlace incorrecta) al espectador.

• 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

Encabezados de solo lecturaLos encabezados de solo lectura pueden leerse, pero no se pueden editar. Puede utilizarlos como entradapara la lógica de almacenamiento en caché de CloudFront, y su función de Lambda puede leer los valoresde encabezado, pero no puede cambiarlos. Si la función de Lambda añade o edita un encabezado de solo

Versión de API 2016-09-29334

Amazon CloudFront Guía para desarrolladoresEncabezados

lectura, ocurrirá un error al validar la solicitud en CloudFront. CloudFront devuelve código de estado HTTP502 (Puerta de enlace incorrecta) al espectador.

Encabezados de solo lectura para eventos de solicitud del espectador deCloudFront

• Content-Length• Host• Transfer-Encoding• Via

Encabezados de solo lectura para eventos de solicitud al origen de CloudFront

• Accept-Encoding• Content-Length• If-Modified-Since• If-None-Match• If-Range• If-Unmodified-Since• Range• Transfer-Encoding• Via

Encabezados de solo lectura para eventos de respuesta del origen de CloudFront

• Transfer-Encoding• Via

Encabezados de solo lectura para eventos de respuesta al espectador deCloudFront

• Content-Encoding• Content-Length• Transfer-Encoding• Warning• Via

Encabezados CloudFront-*Una función de Lambda pueden leer, editar, quitar o añadir 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

Versión de API 2016-09-29335

Amazon CloudFront Guía para desarrolladoresHTTP Status Codes

Tenga en cuenta lo siguiente:

• Si desea que CloudFront añada estos encabezados, debe configurar CloudFront para almacenaren caché en función de estos encabezados. Para obtener información acerca de cómo configurarCloudFront para almacenar en caché en función de los encabezados especificados, consulte Caché enfunción de encabezados de solicitud seleccionados (p. 41) en el tema Valores que deben especificarseal crear o actualizar una distribución (p. 30).

• CloudFront añade los encabezados después del evento de solicitud del espectador.• Si el espectador añade encabezados que tienen estos nombres, CloudFront sobrescribe los valores de

los encabezados.• Para los eventos de espectadores, 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ónde Lambda añade un encabezado incluido en la lista negra, la solicitud no supera la validación deCloudFront y CloudFront devuelve código de estado HTTP 502 (Puerta de enlace incorrecta) alespectador.

Para obtener más información, consulte los ejemplos siguientes:

• Ejemplo: redireccionamiento de solicitudes de espectadores a una URL específica del país (p. 325)• Ejemplo: ofrecer distintas versiones de un objeto en función del dispositivo (p. 326)

HTTP Status CodesCloudFront no ejecuta funciones de Lambda para eventos de respuesta al espectador si el origen devuelveel código de estado HTTP 400 o un número superior.

Entorno de ejecución y configuración de función deLambda• Debe crear funciones con la propiedad de tiempo de ejecución nodejs6.10 o nodejs8.10.• No puede configurar su función de Lambda para obtener acceso a recursos dentro de la VPC.• No se puede asociar su función de Lambda a una distribución de CloudFront propiedad de otra cuenta

de AWS.• La cola de mensajes fallidos (DLQ) no es compatible.• Las variables de entorno no son compatibles.

LímitesPara obtener información sobre los límites, consulte la siguiente documentación:

• Límites de Lambda@Edge (p. 417) en esta guía• AWS Lambda Limits en la AWS Lambda Developer Guide

Microsoft Smooth StreamingNo se pueden crear disparadores para una distribución de CloudFront que esté utilizando para streamingbajo demanda de archivos multimedia que haya transcodificado en formato Microsoft Smooth Streaming.

Versión de API 2016-09-29336

Amazon CloudFront Guía para desarrolladoresNetwork Access

Network AccessTanto las funciones disparadas por los eventos de solicitud al origen y respuesta del origen como lasdisparadas por los eventos de solicitud del espectador y respuesta al espectador pueden efectuar llamadasde red a recursos de Internet y a servicios de las regiones de AWS, como buckets de Amazon S3, tablasde DynamoDB o instancias de Amazon EC2.

Parámetros de cadenas de consulta• Para acceder a una cadena de consulta en una función de Lambda, utiliceevent.Records[0].cf.request.querystring.

• Una función puede actualizar una cadena de consulta para los eventos de solicitud al origen y delespectador. La cadena de consulta actualizada no puede incluir espacios, caracteres de control ni elidentificador de fragmento (#).

• Una función solo puede leer una cadena de consulta para los eventos de respuesta del origen y alespectador.

• La configuración de CloudFront para almacenar en caché en función de los parámetros de una cadenade consulta afecta a si una función puede obtener acceso o no a la cadena de consulta:• Eventos de solicitud y respuesta al espectador: una función puede obtener acceso a una cadena

de consulta independientemente de la configuración de Reenvío de cadenas de consulta yalmacenamiento en caché (p. 43).

• Eventos de solicitud al origen y respuesta del origen: una función solo puede obtener acceso a unacadena de consulta si Reenvío de cadenas de consulta y almacenamiento en caché (p. 43) estáconfigurado en Forward All, Cache Based on Whitelist (Reenviar todo y almacenar en caché enfunción de la lista blanca) o Forward All, Cache Basado en Todas (Reenviar todo y almacenar todo encaché).

• Le recomendamos que utilice la codificación de porcentaje para el URI y la cadena de consulta. Paraobtener más información, consulte Codificación de los URI y las cadenas de consulta (p. 337).

• El tamaño total del URI (event.Records[0].cf.request.uri) y la cadena de consulta(event.Records[0].cf.request.querystring) debe ser inferior a 8 192 caracteres.

Para obtener más información, consulte Almacenar en caché contenido en función de parámetros decadenas de consulta (p. 196).

EtiquetadoAlgunos servicios de AWS, incluidos Amazon CloudFront y AWS Lambda, admiten que agregue etiquetasa recursos en el servicio. Sin embargo, en este momento, no puede aplicar etiquetas a los recursos deLambda@Edge. Para obtener más información acerca del etiquetado en CloudFront, consulte Etiquetardistribuciones de Amazon CloudFront (p. 370).

URISi una función cambia la URI de una solicitud, eso no cambia el comportamiento de la caché frente a lasolicitud ni el origen al que se reenvía la solicitud.

Codificación de los URI y las cadenas de consultaLas funciones de Lambda requieren que el URI y la cadena de consulta tengan la codificación UTF-8. (Lacodificación de porcentaje es compatible con la codificación UTF-8). El comportamiento de CloudFront yLambda depende de lo siguiente:

Versión de API 2016-09-29337

Amazon CloudFront Guía para desarrolladoresCodificación de los URI y las cadenas de consulta

• La codificación del URI y la cadena de consulta que CloudFront recibió en la solicitud del espectador• Si una función activada por un evento de solicitud al origen o del espectador cambió el URI o la cadena

de consulta

Los valores tienen codificación UTF-8

CloudFront reenvía los valores a su función de Lambda sin modificarlos.Los valores tienen codificación ISO 8859-1

CloudFront convierte la codificación de caracteres ISO 8859-1 a la codificación UTF-8 antes dereenviar los valores a su función de Lambda.

Los valores están codificados mediante otra codificación de caracteres

Si los valores están codificados mediante cualquier otra codificación de caracteres, CloudFront suponeque tienen la codificación ISO 8859-1 e intenta convertir esa codificación ISO 8859-1 a UTF-8.

Important

La versión convertida podría ser una interpretación inexacta de los valores de la solicitudoriginal. Esto puede hacer que una función de Lambda o su origen produzca un resultado nodeseado.

El valor que CloudFront reenvía a su servidor de origen depende de si las funciones activadas por loseventos de solicitud del espectador 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 origenlos valores que recibió en la solicitud del espectador.

• Si las funciones cambian el URI o la cadena de consulta: CloudFront reenvía el valor con codificaciónUTF-8.

En ambos casos, el comportamiento no se ve afectado por la codificación de caracteres de la solicitud delespectador.

Versión de API 2016-09-29338

Amazon CloudFront Guía para desarrolladoresInformes de uso y facturación de AWS para CloudFront

Informes, registros de acceso ymonitoreo

Hay disponibles diversos informes para ver el uso y la actividad de las distribuciones de CloudFront,incluidos informes de facturación, estadísticas de caché, contenido popular y principales remitentes.

Temas• Informes de uso y facturación de AWS para CloudFront (p. 339)• Informes de CloudFront (p. 344)• Seguimiento de los cambios en la configuración mediante AWS Config (p. 368)• Etiquetar distribuciones de Amazon CloudFront (p. 370)• Configuración y uso de registros de acceso (p. 371)• Usar AWS CloudTrail para capturar las solicitudes enviadas a la API de CloudFront (p. 387)• Monitorizar la actividad de CloudFront en CloudWatch (p. 392)

Informes de uso y facturación de AWS paraCloudFront

AWS proporciona dos informes de uso de CloudFront:

• El informe de facturación es una vista general de toda la actividad de los servicios de AWS que utiliza,CloudFront incluido. Para obtener más información, consulte Informe de facturación de AWS paraCloudFront (p. 339).

• 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 visual de su uso de CloudFront.Para obtener más información, consulte Informe de uso de AWS para CloudFront (p. 340).

Para ayudarle a comprender estos informes, consulte la información detallada en Interpretar su factura deAWS y el informe de uso de AWS para CloudFront (p. 341).

Note

Al igual que ocurre con otros servicios de AWS, CloudFront le cobra solo lo que utiliza. Paraobtener más información, consulte Precios de CloudFront (p. 9).

Informe de facturación de AWS para CloudFrontPuede ver un resumen de su consumo de AWS y los cargos por servicio en la página Bills de la Consolade administración de AWS.

También puede descargar una versión más detallada del informe en formato CSV. El informe defacturación detallado incluye los siguientes valores aplicables a CloudFront:

• ProductCode: AmazonCloudFront• UsageType: uno de los siguientes valores:

• Un código que identifica el tipo de transferencia de datos.• Invalidations

Versión de API 2016-09-29339

Amazon CloudFront Guía para desarrolladoresInforme de uso de AWS para CloudFront

• SSL-Cert-Custom

Para obtener más información, consulte Interpretar su factura de AWS y el informe de uso de AWS paraCloudFront (p. 341).

• ItemDescription: una descripción de la tarifa de facturación por el valor UsageType.• Usage Start Date/Usage End Date: el día correspondiente al uso en tiempo 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 a distribuciones de

CloudFront habilitadas. Por ejemplo, si tiene un certificado asociado a una distribución habilitada porun mes entero y otro certificado asociado a una distribución habilitado para la mitad del mes, estevalor será 1,5.

Para visualizar la información de facturación resumida y descargar el informe de facturacióndetallado

1. Inicie sesión en la Consola de administración de AWS en https://console.aws.amazon.com/console/home.

2. En la barra de título, haga clic en su nombre de usuario de IAM y luego haga clic en Billing & CostManagement.

3. En el panel de navegación, haga clic en Bills.4. Para ver información resumida de CloudFront, en Details, haga clic en CloudFront.5. Para descargar un informe de facturación detallado en formato CSV, haga clic en Download CSVy

siga las instrucciones que aparecen en pantalla para guardar el informe.

Informe de uso de AWS para CloudFrontAWS proporciona un informe de uso de CloudFront más detallado que el de facturación pero menos quelos registros de acceso de CloudFront. El informe de uso proporciona datos de uso por hora, día o mes;y se enumeran las operaciones por región y tipo de uso, como datos transferidos fuera de la región deAustralia.

El informe de uso de CloudFront incluye los siguientes valores:

• Service: AmazonCloudFront• Operation: método HTTP. Entre los valores se incluyen DELETE, GET, HEAD, OPTIONS, PATCH, POST yPUT.

• 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 Interpretar su factura de AWS y el informe de uso de AWS paraCloudFront (p. 341).

• Resource: el ID de la distribución de CloudFront asociada al uso o el ID de un certificado SSL que hayaasociado a una distribución de CloudFront.

• StartTime/EndTime: el día correspondiente al uso en tiempo universal coordinado (UTC).• UsageValue: (1) La cantidad de solicitudes durante el periodo especificado o (2) la cantidad de datos

transferidos en bytes.

Versión de API 2016-09-29340

Amazon CloudFront Guía para desarrolladoresInterpretar su factura de AWS y el

informe de uso de AWS para CloudFront

Si utiliza Amazon S3 como origen de CloudFront, le aconsejamos generar también el informe de usode Amazon S3. Sin embargo, si utiliza Amazon S3 para fines que no sean de origen de distribución deCloudFront, no estaría claro qué parte sería aplicable a su uso de CloudFront.

Tip

Para obtener información detallada acerca de cada solicitud que CloudFront recibe de susobjetos, active los registros de acceso de CloudFront de su distribución. Para obtener másinformación, consulte Configuración y uso de registros de acceso (p. 371).

Para descargar el informe de uso de CloudFront o Amazon S3

1. Inicie sesión en la Consola de administración de AWS en https://console.aws.amazon.com/console/home.

2. En la barra de título, haga clic en su nombre de usuario de IAM y luego haga clic en Billing & CostManagement.

3. En el panel de navegación, haga clic en Reports.4. En AWS Usage Report, haga clic en AWS Usage Report.5. En la lista Service, haga clic en CloudFront o Amazon Simple Storage Service.6. Seleccione la configuración aplicable:

• Tipos deUsage Types:para obtener una explicación detallada de los tipos de uso de CloudFront,consulte the section called “Interpretar su factura de AWS y el informe de uso de AWS paraCloudFront” (p. 341).

Para Amazon S3, seleccione All Usage Types.• Operation: seleccione All Operations.• Time Period: seleccione el periodo que desea que el informe abarque.• Report Granularity: 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.

Interpretar su factura de AWS y el informe de uso deAWS para CloudFrontSu factura de AWS para el servicio de CloudFront incluye códigos y abreviaturas que podrían no sercomprensibles a primera vista. En la primera columna de la siguiente tabla se enumeran los elementos queaparecen en su factura y se explican sus significados.

Además, puede obtener un informe de uso de AWS para CloudFront más detallado que la factura deAWS para CloudFront. En la segunda columna de la tabla se enumeran los elementos que aparecen en elinforme 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ónde la actividad. En la siguiente tabla, la región de un código se sustituirá en su factura de AWS y en elinforme de uso por una de las siguientes abreviaturas de dos letras:

• AP: Hong Kong, Filipinas, Corea del Sur, Singapur y Taiwán (Asia Pacífico)• AU: Australia• CA: Canadá• EU: Europa

Versión de API 2016-09-29341

Amazon CloudFront Guía para desarrolladoresInterpretar su factura de AWS y el

informe de uso de AWS para CloudFront

• IN: India• JP: Japón• SA: América del Sur• US: Estados Unidos

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 transferir sus objetos desde un bucket de Amazon S3 aubicaciones de borde de CloudFront. Estos cargos, de haberlos, aparecen en la sección AWSData Transfer su factura de AWS.

Elementos de su factura de CloudFront Valores de la columna Usage Type del informe de uso deCloudFront

región-DataTransfer-Out-Bytes

Total de bytes que CloudFront haenviado para distribuciones web yRTMP:

• Distribuciones web: total de bytesenviados desde las ubicaciones deborde de CloudFront en regiónen respuesta a las solicitudes deusuarios GET y HEAD.

• Distribuciones RTMP: total de bytestransferidos desde las ubicacionesde borde de CloudFront en regiónhasta los usuarios finales.

Distribuciones web:

• región-Out-Bytes-HTTP-Static: bytes enviados por HTTPde objetos con un TTL ≥ 3 600 segundos.

• región-Out-Bytes-HTTP-Static: bytes enviados por HTTPSde objetos con un TTL ≥ 3 600 segundos.

• región-Out-Bytes-HTTP-Dynamic: bytes enviados porHTTP de objetos con un TTL < 3 600 segundos.

• región-Out-Bytes-HTTPS-Dynamic: bytes enviados porHTTPS de objetos con un TTL < 3 600 segundos.

• región-Out-Bytes-HTTP-Proxy: bytes devueltos deCloudFront a los espectadores por HTTP en respuesta asolicitudes DELETE, OPTIONS, PATCH, POST y PUT.

• región-Out-Bytes-HTTPS-Proxy: bytes devueltos deCloudFront a los espectadores por HTTPS en respuesta asolicitudes DELETE, OPTIONS, PATCH, POST y PUT.

Distribuciones RTMP:

• región-FMS-Out-Bytes

región-DataTransfer-Out-OBytes

Solo distribuciones web: total de bytestransferidos por HTTP desde lasubicaciones de borde de CloudFronta su origen en respuesta a solicitudesDELETE, OPTIONS, PATCH, POST y PUT.

región-DataTransfer-HTTP-Proxy

Total de bytes transferidos por HTTP desde las ubicacionesde borde de CloudFront a su origen en respuesta a solicitudesDELETE, OPTIONS, PATCH, POST y PUT.

región-DataTransfer-HTTPS-Proxy

Total de bytes transferidos por HTTPS desde las ubicacionesde borde de CloudFront a su origen en respuesta a solicitudesDELETE, OPTIONS, PATCH, POST y PUT.

region-Requests-Tier1

Solo distribuciones web: cantidad desolicitudes HTTP GET y HEAD.

región-Requests-HTTP-Static

Cantidad de solicitudes HTTP GET y HEAD para la que sedistribuyeron objetos con TTL ≥ 3 600 segundos.

región-Requests-HTTP-Dynamic

Versión de API 2016-09-29342

Amazon CloudFront Guía para desarrolladoresInterpretar su factura de AWS y el

informe de uso de AWS para CloudFront

Elementos de su factura de CloudFront Valores de la columna Usage Type del informe de uso deCloudFrontCantidad de solicitudes HTTP GET y HEAD para la que sedistribuyeron objetos con TTL < 3 600 segundos.

región-Requests-Tier2-HTTPS

Solo distribuciones web: cantidad desolicitudes HTTPS GET y HEAD.

región-Requests-HTTPS-Static

Cantidad de solicitudes HTTPS GET y HEAD para la que sedistribuyeron objetos con TTL ≥ 3 600 segundos.

región-Requests-HTTPS-Dynamic

Cantidad de solicitudes HTTPS GET y HEAD para la que sedistribuyeron objetos con TTL < 3 600 segundos.

región-Requests-HTTP-Proxy

Solo distribuciones web: cantidad desolicitudes HTTP DELETE, OPTIONS,PATCH, POST y PUT que CloudFrontrenvía al origen.

región-Requests-HTTP-Proxy

El mismo que el elemento correspondiente en su factura deCloudFront.

región-Requests-HTTPS-Proxy

Solo distribuciones web: cantidad desolicitudes HTTPS DELETE, OPTIONS,PATCH, POST y PUT que CloudFrontrenvía al origen.

región-Requests-HTTPS-Proxy

El mismo que el elemento correspondiente en su factura deCloudFront.

región-Requests-HTTPS-Proxy-FLE

Solo distribuciones web: cantidad desolicitudes HTTPS DELETE, OPTIONS,PATCH y POST que CloudFront renvía alorigen que se procesaron con el cifradoen el nivel de campo.

región-Requests-HTTPS-Proxy-FLE

El mismo que el elemento correspondiente en su factura deCloudFront.

Invalidaciones

Solo distribuciones web: el cargo porinvalidación de objetos (eliminar losobjetos de las ubicaciones de bordede CloudFront); para obtener másinformación, consulte Cargos porinvalidación de archivo (p. 80).

Invalidaciones

El mismo que el elemento correspondiente en su factura deCloudFront.

SSL-Cert-Custom

Solo distribuciones web: el cargo porel uso de un certificado SSL con unnombre de dominio alternativo deCloudFront, como example.com, enlugar del certificado SSL predeterminadode CloudFront y el nombre de dominioque CloudFront asignó a su distribución.

SSL-Cert-Custom

El mismo que el elemento correspondiente en su factura deCloudFront.

Versión de API 2016-09-29343

Amazon CloudFront Guía para desarrolladoresInformes de CloudFront

Informes de CloudFrontLa consola de CloudFront incluye una serie de informes:

• CloudFront Cache Statistics Reports (p. 344)• CloudFront Popular Objects Report (p. 344)• CloudFront Top Referrers Report (p. 344)• CloudFront Usage Reports (p. 344)• CloudFront Viewers Reports (p. 345)

La mayoría de estos informes se basa en los datos de los registros de acceso de CloudFront, quecontienen información detallada sobre cada solicitud de usuario que CloudFront recibe. No es necesariohabilitar los registros de acceso para ver los informes. Para obtener más información, consulteConfiguración y uso de registros de acceso (p. 371). El informe de uso de CloudFront se basa en elinforme de uso de AWS para CloudFront, que tampoco requiere ninguna configuración especial. Paraobtener más información, consulte Informe de uso de AWS para CloudFront (p. 340).

Informes CloudFront Cache Statistics

El informe estadístico de caché de CloudFront incluye la siguiente información:

• Total Requests: 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: muestra los aciertos, fallos y errores como porcentajesdel total de solicitudes de los espectadores a la distribución de CloudFront seleccionada.

• Bytes Transferred to Viewers: muestra la cantidad total de bytes y la de bytes de fallos.• HTTP Status Codes: muestra las solicitudes de los espectadores por código de estado HTTP.• Percentage of GET Requests that Didn't Finish Downloading: muestra las solicitudes GET de

espectadores que no terminaron de descargar el objeto solicitado, como un porcentaje del total.

Para obtener más información, consulte Informes CloudFront Cache Statistics (p. 345).

Informe CloudFront Popular Objects

El informe de objetos populares de CloudFront enumera los 50 objetos más populares y las estadísticasde esos objetos, incluida la cantidad de solicitudes del objeto, el número de aciertos y fallos, la tasa deaciertos, la cantidad de bytes enviados que resultaron en fallos, el total de bytes enviados, la cantidad dedescargas 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 CloudFront Popular Objects (p. 349).

Informe CloudFront Top Referrers

El informe de remitentes principales de CloudFront incluye los primeros 25 remitentes, la cantidad desolicitudes de cada remitente y este mismo valor como porcentaje del total de solicitudes realizadas en unperiodo específico.

Para obtener más información, consulte Informe Top Referrers de CloudFront (p. 353).

Informes CloudFront Usage

Los informes de uso de CloudFront incluyen la siguiente información:

• Number of Requests: muestra la cantidad de solicitudes HTTP y HTTPS a las que responde CloudFrontdesde ubicaciones de borde en la región seleccionada durante cada intervalo de tiempo, en ladistribución de CloudFront especificada.

Versión de API 2016-09-29344

Amazon CloudFront Guía para desarrolladoresInformes CloudFront Cache Statistics

• Data Transferred by Protocol: muestra la cantidad total de datos transferidos por HTTP y HTTPS desdeubicaciones de borde de CloudFront en la región seleccionada durante cada intervalo de tiempo, en ladistribución de CloudFront especificada.

• Data Transferred by Destination: muestra la cantidad total de datos transferidos por HTTP y HTTPSdesde ubicaciones de borde de CloudFront en la región seleccionada durante cada intervalo de tiempo,en la distribución de CloudFront especificada.

Para obtener más información, consulte Informes de uso de CloudFront (p. 355).

Informes CloudFront Viewers

Los informes de espectadores de CloudFront incluyen la siguiente información:

• Devices: muestra los tipos de dispositivo (por ejemplo, de escritorio o móvil) que los usuarios utilizanpara obtener acceso a su contenido.

• Browsers: muestra el nombre (o el nombre y versión) de los navegadores que los usuarios utilizan conmayor frecuencia para obtener acceso a su contenido (por ejemplo, Chrome o Firefox).

• Operating Systems : muestra el nombre (o el nombre y la versión) del sistema operativo desde el que losespectadores obtienen acceso a su contenido con mayor frecuencia, como, por ejemplo, Linux, Mac OSX o Windows.

• Locations: muestra la ubicación por país o estado o territorio de EE. UU. desde el que los espectadoresobtienen acceso a su contenido con mayor frecuencia.

Para obtener más información, consulte Informes de espectadores de CloudFront (p. 360).

Informes CloudFront Cache StatisticsPuede utilizar la consola de Amazon CloudFront para mostrar una representación gráfica de estadísticasrelacionadas con las ubicaciones de borde de CloudFront. Los datos de estas estadísticas procedende la misma fuente que los registros de acceso de CloudFront. Puede visualizar gráficos durante unintervalo de tiempo especificado dentro de los últimos 60 días, con puntos de datos cada hora o cada día.Generalmente puede ver datos sobre las solicitudes que CloudFront ha recibido tan recientemente comodurante la hora anterior, pero en ocasiones es posible que los datos se retrasen hasta 24 horas.

Note

No es necesario habilitar el registro de accesos para ver las estadísticas de caché.

Para visualizar las estadísticas de caché de CloudFront

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. En el panel de navegación, haga clic en Cache Statistics.3. En el panel CloudFront Cache Statistics Reports, en Start Date y End Date, seleccione el intervalo de

fechas cuyos gráficos de estadísticas de caché desea ver. Los rangos disponibles dependen del valorseleccionado en Granularity:

• Daily: para ver gráficos con un punto de datos por día, seleccione un rango de fechas dentro de losúltimos 60 días.

• Hourly: para ver gráficos con un punto de datos por cada hora, seleccione un rango de fechas igualo inferior a 14 días en los últimos 60 días.

Las fechas y horas se muestran según la hora universal coordinada (UTC).

Versión de API 2016-09-29345

Amazon CloudFront Guía para desarrolladoresInformes CloudFront Cache Statistics

4. En Granularity, especifique si mostrar un punto de datos por día o por hora en los gráficos. Siespecifica un intervalo de fechas de más de 14 días, la opción de especificar un punto de datos porhora no estará disponible.

5. En Viewer Location, seleccione el continente desde el que se originaron las solicitudes de losespectadores, o seleccione All Locations (todas las ubicaciones). Los gráficos de estadísticasde caché incluyen los datos de las solicitudes que CloudFront haya recibido desde la ubicaciónespecificada.

6. En la lista Distribution, seleccione las distribuciones cuyos datos desea visualizar en los gráficos deuso:

• An individual web distribution: los gráficos muestran los datos de la distribución web de CloudFrontseleccionada. La lista Distribution muestra el ID de distribución y los nombres de dominioalternativos (CNAME), de haberlos. Si una distribución no tiene otros nombres de dominio, la listaincluye los nombres de dominio de origen para la distribución.

• All Web Distributions: los gráficos muestran el total de datos de todas las distribuciones webasociadas a la cuenta de AWS actual, excluyendo las distribuciones web que ha eliminado.

7. Haga clic en Update.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. 346)• Cómo los gráficos estadísticos de caché están relacionados con los datos contenidos en los registros

de acceso de CloudFront (p. 348)

Descargar datos en formato CSVPuede descargar el informe Cache Statistics en formato CSV. En esta sección se explica cómo hacerlo ydescribe los valores del informe.

Para descargar el informe Cache Statistics en formato CSV

1. Al visualizar el informe Cache Statistics, haga clic en CSV.2. En el cuadro de diálogo Opening file name, decida si abrir o guardar el archivo.

Información acerca del informe

Las primeras filas del informe incluyen la siguiente información:

Version

La versión del formato del archivo CSVInforme

El nombre del informe.DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

Versión de API 2016-09-29346

Amazon CloudFront Guía para desarrolladoresInformes CloudFront Cache Statistics

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

La fecha y hora en ha solicitado el informe, en tiempo universal coordinado (UTC).Grado de detalle

Define si cada fila del informe representa una hora o un día.ViewerLocation

El continente desde el que se originan las solicitudes de los espectadores, o ALL si ha decididodescargar un informe de todas las ubicaciones.

Datos en los informes estadísticos de caché

El informe incluye los siguientes valores:

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

ViewerLocation

El continente desde el que se originan las solicitudes de los espectadores; o ALL si ha decididodescargar 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 todoslos métodos (por ejemplo, GET, HEAD o POST).

HitCount

La cantidad de solicitudes de espectadores para las que se ofrece el objeto desde una cachéperimetral de CloudFront.

MissCount

La cantidad de solicitudes de espectadores para las cuales el objeto no se encuentra actualmente enuna caché perimetral, por lo que CloudFront debe obtener el objeto desde su origen.

ErrorCount

La cantidad de solicitudes de espectadores que generaron un error, por lo que CloudFront no pudoservir el objeto.

Versión de API 2016-09-29347

Amazon CloudFront Guía para desarrolladoresInformes CloudFront Cache Statistics

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 (realizadocorrectamente).

HTTP3xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 3xx (acciónadicional requerida).

HTTP4xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 4xx (error delcliente).

HTTP5xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 5xx (error delservidor).

TotalBytes

La cantidad total de bytes enviados por CloudFront a los espectadores en respuesta a todas lassolicitudes para todos los métodos de HTTP.

BytesFromMisses

La cantidad de bytes enviados a espectadores para objetos que no estaban en la caché perimetralaplicable en el momento de la solicitud. Este valor es una buena estimación de los bytes transferidosdesde el origen hasta las cachés perimetrales de CloudFront. Sin embargo, excluye las solicitudes deobjetos que ya están en la caché perimetral, pero que han caducado.

Cómo los gráficos estadísticos de caché están relacionados conlos datos contenidos en los registros de acceso de CloudFrontLa siguiente tabla muestra cómo gráficos de estadísticas de caché en la consola de CloudFront secorresponden con los valores contenidos en los registros de acceso de CloudFront. Para obtener másinformación acerca de los registros de acceso de CloudFront, consulte Configuración y uso de registros deacceso (p. 371)

Total Requests

Este gráfico muestra la cantidad total de solicitudes de todos los códigos de estado HTTP (porejemplo, 200 o 404) y todos los métodos (por ejemplo, GET, HEAD, or POST). El total de solicitudesque se muestran en esta tabla es igual a la cantidad total de solicitudes en los archivos de registro delmismo periodo.

Percentage of Viewer Requests by Result Type

Este gráfico muestra los aciertos, fallos y errores como porcentaje del total de solicitudes de losespectadores a la distribución de CloudFront seleccionada:• Hit: una solicitud del espectador cuyo objeto se envió desde una caché perimetral de CloudFront. En

los registros de acceso, estas son solicitudes cuyo valor de x-edge-response-result-type esHit.

• Miss: una solicitud del espectador para la cual el objeto no se encuentra en ese momento en unacaché perimetral, por lo que CloudFront debe obtener el objeto desde su origen. En los registros deacceso, estas son solicitudes cuyo valor de x-edge-response-result-type es Miss.

Versión de API 2016-09-29348

Amazon CloudFront Guía para desarrolladoresInforme CloudFront Popular Objects

• Error: una solicitud del espectador en la que ocurrió un error, por lo que CloudFront no pudo ofrecerel 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é perimetral,pero que han caducado). En los registros de acceso, las visitas de actualización son solicitudes cuyovalor de x-edge-response-result-type es RefreshHit.

Bytes Transferred to Viewers

Este gráfico muestra dos valores:• Total Bytes: la cantidad total de bytes enviados por CloudFront a los espectadores en respuesta a

todas las solicitudes para todos los métodos de HTTP. En los registros de acceso de CloudFront,Total Bytes es la suma de los valores de la columna sc-bytes de todas las solicitudes realizadasdurante el mismo periodo.

• Bytes from Misses: la cantidad de bytes enviados a espectadores para objetos que no estaban en lacaché perimetral aplicable en el momento de la solicitud. En los registros de acceso de CloudFront,Bytes from Misses es la suma de los valores de la columna sc-bytes cuyo valor de x-edge-result-type es Miss. Este valor es una buena estimación de los bytes transferidos desde elorigen hasta las cachés perimetrales de CloudFront. Sin embargo, excluye las solicitudes de objetosque ya están en la caché perimetral, pero que han caducado.

HTTP Status Codes

Este gráfico muestra las solicitudes de los espectadores por código de estado HTTP. En los registrosde acceso de CloudFront, los códigos de estado aparecen en la columna sc-status:• 2xx: la solicitud se ha realizado correctamente.• 3xx: acción adicional requerida. 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 deespectadores GET que no terminaron de descargar el objeto solicitado. Normalmente, la descarga deun objeto no finaliza correctamente porque el espectador cancela la descarga, por ejemplo, al hacerclic en un enlace diferente o cerrar el navegador. En los registros de acceso de CloudFront, estassolicitudes tienen un valor de 200 en la columna sc-status y un valor de Error en la columna x-edge-result-type.

Informe CloudFront Popular ObjectsLa consola Amazon CloudFront puede mostrar una lista de los 50 objetos más populares de unadistribución durante un intervalo de tiempo especificado dentro de los últimos 60 días.

Los datos del informe de objetos populares procede de la misma fuente que los registros de acceso deCloudFront. Para obtener un conteo preciso de los 50 objetos más populares, CloudFront cuenta lassolicitudes de todos los objetos en intervalos de 10 minutos a partir de la medianoche y mantiene unrecuento actual de los 150 objetos más populares durante las próximas 24 horas. (CloudFront tambiénconserva los totales diarios de los 150 objetos más populares durante 60 días). Cerca de la parte inferiorde la lista, los objetos suben y bajan puestos constantemente o salen de la lista, así que los totales dedichos objetos son aproximados. Los cincuenta objetos de la parte superior de la lista de 150 objetospueden subir o bajar, pero no suelen salir de la lista, así que el total de los objetos de esa parte suele sermás fiable.

Versión de API 2016-09-29349

Amazon CloudFront Guía para desarrolladoresInforme CloudFront Popular Objects

Cuando un objeto sale de la lista de los 150 objetos más populares y vuelve a entrar pasado un día,CloudFront añade un número estimado de solicitudes para el período durante el cual el objeto no estuvoen la lista. La estimación se basa en el número de solicitudes recibidas por cualquier objeto de la parteinferior de la lista durante dicho periodo. Si el objeto sube a la parte de los primeros 50 objetos más tardeel mismo día, las estimaciones de la cantidad de solicitudes que CloudFront recibió mientras el objetoestaba fuera de la parte de los primeros 150 objetos suele provocar que la cantidad de solicitudes deese objeto reflejada en el informe de objetos populares sea mayor que la que aparece en los registros deacceso.

Note

No es necesario habilitar el registro de accesos para ver una lista de objetos populares.

Para visualizar objetos populares de una distribución

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Haga clic en Popular Objects en el panel de navegación.3. En el panel CloudFront Popular Objects Report, en Start Date y End Date, seleccione el intervalo de

fechas cuya lista de objetos populares desee ver. Puede elegir cualquier intervalo de fechas de losúltimos 60 días.

Las fechas y horas se muestran según la hora universal coordinada (UTC).4. En la lista Distribution, seleccione la distribución cuya lista de objetos populares desea visualizar.5. Haga clic en Update.

Temas• Descargar datos en formato CSV (p. 350)• Cómo los datos del informe Popular Objects están relacionados con los datos de los registros de

acceso de CloudFront (p. 352)

Descargar datos en formato CSVPuede descargar el informe Popular Objects en formato CSV. En esta sección se explica cómo hacerlo ydescribe los valores del informe.

Para descargar el informe Popular Objects en formato CSV

1. Al visualizar el informe Popular Objects, haga clic en CSV.2. En el cuadro de diálogo Opening file name, decida si abrir o guardar el archivo.

Información acerca del informe

Las primeras filas del informe incluyen la siguiente información:

Version

La versión del formato del archivo CSVInforme

El nombre del informe.DistributionID

El ID de la distribución para la que ha solicitado el informe.

Versión de API 2016-09-29350

Amazon CloudFront Guía para desarrolladoresInforme CloudFront Popular Objects

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

La fecha y hora en ha solicitado el informe, en tiempo universal coordinado (UTC).

Datos del informe Popular Objects

El informe incluye los siguientes valores:

DistributionID

El ID de la distribución para la que ha solicitado el informe.FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

Objeto

Lo últimos 500 caracteres de la URL del objeto.RequestCount

La cantidad total de solicitudes de este objeto.HitCount

La cantidad de solicitudes de espectadores para las que se ofrece el objeto desde una cachéperimetral de CloudFront.

MissCount

La cantidad de solicitudes de espectadores para las cuales el objeto no se encuentra actualmente enuna caché perimetral, por lo que CloudFront debe obtener el objeto desde su origen.

HitCountPct

El valor de HitCount como porcentaje del valor de RequestCount.BytesFromMisses

La cantidad de bytes enviados a espectadores para este objeto mientras no estaba en la cachéperimetral aplicable en el momento de la solicitud.

TotalBytes

La cantidad total de bytes enviados por CloudFront a los espectadores para este objeto en respuesta atodas 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 noterminó de descargarse dicho objeto.

HTTP2xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 2xx (realizadocorrectamente).

Versión de API 2016-09-29351

Amazon CloudFront Guía para desarrolladoresInforme CloudFront Popular Objects

HTTP3xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 3xx (acciónadicional requerida).

HTTP4xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 4xx (error delcliente).

HTTP5xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 5xx (error delservidor).

Cómo los datos del informe Popular Objects están relacionadoscon los datos de los registros de acceso de CloudFrontLa siguiente lista muestra cómo los valores del informe Popular Objects de la consola de CloudFront secorresponden con los valores contenidos en los registros de acceso de CloudFront. Para obtener másinformación acerca de los registros de acceso de CloudFront, consulte Configuración y uso de registros deacceso (p. 371)

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 lacantidad de solicitudes GET del objeto en los registros de acceso de CloudFront.

Hits

La cantidad de solicitudes de espectadores para las que se envió el objeto desde una caché perimetralde 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 espectadores para las cuales el objeto no se encontraba en una cachéperimetral, 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 como porcentaje del valor de la columna Requests.Bytes from Misses

La cantidad de bytes enviados a espectadores para objetos que no estaban en la caché perimetralaplicable en el momento de la solicitud. En los registros de acceso de CloudFront, Bytes from Misseses la suma de los valores de la columna sc-bytes cuyo valor de x-edge-result-type es Miss.

Total Bytes

La cantidad total de bytes que CloudFront ha enviado a los espectadores en respuesta a todas lassolicitudes del objeto por todos los métodos HTTP. En los registros de acceso de CloudFront, TotalBytes es la suma de los valores de la columna sc-bytes de todas las solicitudes realizadas duranteel mismo periodo.

Incomplete Downloads

La cantidad de solicitudes de espectadores que no terminaron de descargar el objeto solicitado.Normalmente, el motivo de que una descarga no finalice correctamente es que el espectador la haya

Versión de API 2016-09-29352

Amazon CloudFront Guía para desarrolladoresInforme Top Referrers de CloudFront

cancelado, por ejemplo, al hacer clic en un enlace diferente o cerrar el navegador. En los registros deacceso de CloudFront, estas solicitudes tienen un valor de 200 en la columna sc-status y un valorde Error en la columna x-edge-result-type.

2xx

La cantidad de solicitudes cuyo código de estado HTTP es 2xx, Successful. En los registros deacceso de CloudFront, los códigos de estado aparecen en la columna sc-status.

3xx

La cantidad de solicitudes cuyo código de estado HTTP es 3xx, Redirection. Los códigos deestado 3xx indican que se requiere 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 código de estado HTTP es 4xx, Client Error. Los códigos deestado 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 código de estado HTTP es 5xx, Server Error. Los códigos deestado 5xx indican que el servidor de origen no satisfizo la solicitud. Por ejemplo, 503 (Servicio nodisponible) significa que el servidor de origen no está disponible en ese momento.

Informe Top Referrers de CloudFrontLa consola de CloudFront puede mostrar una lista de los 25 dominios de los sitios web que originaron lamayoría de solicitudes HTTP y HTTPS de los objetos que CloudFront está enviando por una distribucióndeterminada. Estos remitentes principales pueden ser motores de búsqueda, otros sitios web que enlazandirectamente con sus objetos o su propio sitio web. Por ejemplo, si http://example.com/index.html enlazaa 10 gráficos, example.com es el remitente de todos ellos. Puede visualizar el informe de los remitentesprincipales para cualquier intervalo de fechas de los últimos 60 días.

Note

Si un usuario escribe una URL directamente en el navegador, no hay remitente para el objetosolicitado.

Los datos del informe Top Referrers proceden de la misma fuente que los registros de acceso deCloudFront. Para obtener un conteo preciso de los 25 remitentes principales, CloudFront cuenta lassolicitudes de todos los objetos en intervalos de 10 minutos y mantiene un recuento actual de los75 remitentes principales. Cerca de la parte inferior de la lista, los remitentes suben y bajan puestosconstantemente o salen de la lista, así que los totales de dichos remitentes son aproximados. Los 25remitentes de la parte superior de la lista de 75 remitentes pueden subir o bajar, pero no suelen salir de lalista, 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.

Para visualizar remitentes populares de una distribución

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. En el panel de navegación, haga clic en Top Referrers.3. En el panel CloudFront Top Referrers Report, en Start Date y End Date, seleccione el intervalo de

fechas cuya lista de remitentes principales desee ver.

Versión de API 2016-09-29353

Amazon CloudFront Guía para desarrolladoresInforme Top Referrers de CloudFront

Las fechas y horas se muestran según la hora universal coordinada (UTC).4. En la lista Distribution, seleccione la distribución cuya lista de remitentes principales desea visualizar.5. Haga clic en Update.

Temas• Descargar datos en formato CSV (p. 354)• Cómo los datos del informe Top Referrers están relacionados con los datos de los registros de acceso

de CloudFront (p. 355)

Descargar datos en formato CSVPuede descargar el informe Top Referrers en formato CSV. En esta sección se explica cómo hacerlo ydescribe los valores del informe.

Para descargar el informe Top Referrers en formato CSV

1. Al visualizar el informe Top Referrers, haga clic en CSV.2. En el cuadro de diálogo Opening file name, decida si abrir o guardar el archivo.

Información acerca del informeLas primeras filas del informe incluyen la siguiente información:

Version

La versión del formato del archivo CSVInforme

El nombre del informe.DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

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

La fecha y hora en ha solicitado el informe, en tiempo universal coordinado (UTC).

Los datos del informe Top ReferrersEl informe incluye los siguientes valores:

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

Versión de API 2016-09-29354

Amazon CloudFront Guía para desarrolladoresInformes de uso de CloudFront

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

Remitente

El nombre del dominio del remitente.

La cantidad total de solicitudes desde el nombre de dominio de la columna Referrer.RequestsPct

La cantidad de solicitudes enviadas por el remitente como porcentaje de las solicitudes realizadas enun periodo específico.

Cómo los datos del informe Top Referrers están relacionados conlos datos de los registros de acceso de CloudFrontLa siguiente lista muestra cómo los valores del informe Top Referrers de la consola de CloudFront secorresponden con los valores contenidos en los registros de acceso de CloudFront. Para obtener másinformación acerca de los registros de acceso de CloudFront, consulte Configuración y uso de registros deacceso (p. 371)

Remitente

El nombre del dominio del remitente. En los registros de acceso, los remitentes se enumeran en lacolumna cs(Referer).

Request Count

La cantidad total de solicitudes desde el nombre de dominio de la columna Referrer. Este valor suelecorresponderse estrechamente con la cantidad de solicitudes GET del remitente en los registros deacceso de CloudFront.

Solicitud %

La cantidad de solicitudes enviadas por el remitente como porcentaje de las solicitudes realizadasen un periodo específico. Si tiene más de 25 remitentes, no podrá calcular el valor Request % enfunción de los datos en esta tabla, ya que la columna Request Count no incluye todas las solicitudesdel período especificado.

Informes de uso de CloudFrontLa consola Amazon CloudFront puede mostrar una representación gráfica del uso que ha hecho deCloudFront. Esta representación se basa en un subconjunto de los datos del informe de uso. Puedevisualizar gráficos durante un intervalo de tiempo especificado dentro de los últimos 60 días, con puntos dedatos cada hora o cada día. Generalmente puede ver datos de las solicitudes que CloudFront ha recibidotan recientemente como durante las cuatro horas anteriores, pero en ocasiones es posible que los datos seretrasen hasta 24 horas.

Para obtener más información, consulte Cómo los gráficos de uso están relacionados con los datoscontenidos en el informe de uso de CloudFront (p. 359).

Para visualizar gráficos de uso de CloudFront

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

Versión de API 2016-09-29355

Amazon CloudFront Guía para desarrolladoresInformes de uso de CloudFront

2. En el panel navigation, haga clic en Usage Reports.3. En el panel CloudFront Usage Reports, en Start Date y End Date, seleccione el intervalo de fechas

cuyos gráficos de uso desea ver. Los rangos disponibles dependen del valor seleccionado enGranularity:

• Daily: para ver gráficos con un punto de datos por día, seleccione un rango de fechas dentro de losúltimos 60 días.

• Hourly: para ver gráficos con un punto de datos por hora, seleccione un rango de fechas igual oinferior a 14 días en los últimos 60 días.

Las fechas y horas se muestran según la hora universal coordinada (UTC).4. En Granularity, especifique si mostrar un punto de datos por día o por hora en los gráficos. Si

especifica un intervalo de fechas de más de 14 días, la opción de especificar un punto de datos porhora no estará disponible.

5. En Billing Region, seleccione la región de facturación de CloudFront que contiene los datos que deseaver o elegir All Regions. Los gráficos de uso incluyen los datos de las solicitudes que CloudFrontprocesa en las ubicaciones de borde en la región determinada. La región en la que CloudFrontprocesa solicitudes que pueden o no corresponder con la ubicación de los usuarios.

Seleccione solo regiones que se incluyan en la clase de precio de su distribución; de lo contrario,los gráficos de uso probablemente no contendrán ningún dato. Por ejemplo, si selecciona la clasede precio 200 para su distribución, las regiones de facturación de América del Sur y Australia no seincluyen por lo que, por lo general, CloudFront no procesará las solicitudes de esas regiones. Paraobtener más información acerca de las clases de precios, consulte Elegir la clase de precio de unadistribución de CloudFront (p. 10).

6. En la lista Distribution, seleccione las distribuciones cuyos datos desea visualizar en los gráficos deuso:

• An individual web distribution: los gráficos muestran los datos de la distribución de CloudFrontseleccionada. La lista Distribution muestra el ID de distribución y los nombres de dominioalternativos (CNAME), de haberlos. Si una distribución no tiene otros nombres de dominio, la listaincluye los nombres de dominio de origen para la distribución.

• All Web Distributions (excludes deleted): los gráficos muestran el total de datos de todas lasdistribuciones web asociadas a la cuenta de AWS actual, excluyendo las distribuciones web que haeliminado.

• All Deleted Distributions: los gráficos muestran el total de datos de todas las distribuciones webasociadas a la cuenta de AWS actual, y las eliminadas durante los últimos 60 días.

7. Haga clic en Update Graphs.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. 356)• Cómo los gráficos de uso están relacionados con los datos contenidos en el informe de uso de

CloudFront (p. 359)

Descargar datos en formato CSVPuede descargar el informe de uso en formato CSV. En esta sección se explica cómo hacerlo y describelos valores del informe.

Versión de API 2016-09-29356

Amazon CloudFront Guía para desarrolladoresInformes de uso de CloudFront

Para descargar el informe de uso en formato CSV

1. Al visualizar el informe de uso, haga clic en CSV.2. En el cuadro de diálogo Opening file name, decida si abrir o guardar el archivo.

Información acerca del informe

Las primeras filas del informe incluyen la siguiente información:

Version

La versión del formato del archivo CSVInforme

El nombre del informe.DistributionID

El ID de la distribución del informe solicitado, ALL si se ha solicitado el informe de todas lasdistribuciones o ALL_DELETED si se ha solicitado el informe de todas las distribuciones eliminadas.

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

La fecha y hora en ha solicitado el informe, en tiempo universal coordinado (UTC).Grado de detalle

Define si cada fila del informe representa una hora o un día.BillingRegion

El continente desde el que se han originado las solicitudes de los espectadores; o ALL si ha decididodescargar un informe de todas las regiones de facturación.

Datos del informe de uso

El informe incluye los siguientes valores:

DistributionID

El ID de la distribución del informe solicitado, ALL si se ha solicitado el informe de todas lasdistribuciones o ALL_DELETED si se ha solicitado el informe de todas las distribuciones eliminadas.

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

BillingRegion

La región de facturación de CloudFront cuyo informe ha solicitado o ALL.

Versión de API 2016-09-29357

Amazon CloudFront Guía para desarrolladoresInformes de uso de CloudFront

TimeBucket

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 enla 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 origenHTTPS

La cantidad de solicitudes HTTPS a las que CloudFront ha respondido desde ubicaciones de borde enla 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 origenHTTPBytes

La cantidad total de datos transferidos a través de HTTP desde las ubicaciones de borde deCloudFront en la región de facturación seleccionada durante el periodo de tiempo especificado para ladistribució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 solicitudesDELETE, OPTIONS, PATCH, POST y PUT.

• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a lassolicitudes DELETE, OPTIONS, PATCH, POST y PUT

HTTPSBytes

La cantidad total de datos transferidos a través de HTTPS desde las ubicaciones de borde deCloudFront en la región de facturación seleccionada durante el periodo de tiempo especificado para ladistribució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 solicitudesDELETE, OPTIONS, PATCH, POST y PUT.

• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a lassolicitudes DELETE, OPTIONS, PATCH, POST y PUT

BytesIn

La cantidad total de datos transferidos desde CloudFront hasta el origen en respuesta a las solicitudesDELETE, OPTIONS, PATCH, POST y PUT en la región seleccionada durante cada intervalo de tiempoespecificado para la distribución de CloudFront.

BytesOut

La cantidad total de datos transferidos a través de HTTP y HTTPS desde CloudFront hasta sususuarios en la región seleccionada durante cada intervalo de tiempo especificado para la distribuciónde CloudFront. Entre los valores se encuentran:

Versión de API 2016-09-29358

Amazon CloudFront Guía para desarrolladoresInformes de uso de CloudFront

• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a lassolicitudes GET y HEAD

• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a lassolicitudes DELETE, OPTIONS, PATCH, POST y PUT

Cómo los gráficos de uso están relacionados con los datoscontenidos en el informe de uso de CloudFrontLa siguiente lista muestra cómo el uso de gráficos en la consola de CloudFront se corresponde con losvalores de la columna Usage Type del informe de uso de CloudFront.

Temas• Cantidad de solicitudes (p. 359)• Datos transferidos por protocolo (p. 359)• Datos transferidos por destino (p. 360)

Cantidad de solicitudes

Este gráfico muestra la cantidad de solicitudes HTTP y HTTPS a las que CloudFront responde desdeubicaciones de borde en la región seleccionada durante cada intervalo de tiempo, en la distribución deCloudFront especificada.

Cantidad de solicitudes HTTP• región-Requests-HTTP-Static: cantidad de solicitudes HTTP GET y HEAD de objetos con TTL ≥

3 600 segundos enviadas.• región-Requests-HTTP-Dynamic: cantidad de solicitudes HTTP GET y HEAD de objetos con TTL <

3 600 segundos enviadas.• región-Requests-HTTP-Proxy: cantidad de solicitudes HTTP DELETE, OPTIONS, PATCH, POST yPUT que CloudFront envía a su origen.

Cantidad de solicitudes HTTPS• región-Requests-HTTPS-Static: cantidad de solicitudes HTTPS GET y HEAD de objetos con TTL ≥

3 600 segundos enviadas.• región-Requests-HTTPS-Dynamic: cantidad de solicitudes HTTPS GET y HEAD de objetos con TTL

< 3 600 segundos enviadas.• región-Requests-HTTPS-Proxy: cantidad de solicitudes HTTPS DELETE, OPTIONS, PATCH, POST

y PUT que CloudFront envía a su origen.

Datos transferidos por protocolo

Este gráfico muestra la cantidad total de datos transferidos por HTTP y HTTPS desde ubicaciones deborde de CloudFront en la región seleccionada durante cada intervalo de tiempo, en la distribución deCloudFront especificada.

Datos transferidos a través de HTTP• región-Out-Bytes-HTTP-Static: bytes enviados por HTTP de objetos con un TTL ≥ 3 600

segundos.• región-Out-Bytes-HTTP-Dynamic: bytes enviados por HTTP de objetos con un TTL < 3 600

segundos.• región-Out-Bytes-HTTP-Proxy: bytes devueltos de CloudFront a los espectadores por HTTP en

respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.

Versión de API 2016-09-29359

Amazon CloudFront Guía para desarrolladoresInformes de espectadores de CloudFront

• región-Out-OBytes-HTTP-Proxy: total de bytes transferidos por HTTP desde las ubicaciones deborde de CloudFront al origen en respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.

Datos transferidos a través de HTTPS• región-Out-Bytes-HTTPS-Static: bytes enviados por HTTPS de objetos con un TTL ≥ 3 600

segundos.• región-Out-Bytes-HTTPS-Dynamic: bytes enviados por HTTPS de objetos con un TTL < 3 600

segundos.• región-Out-Bytes-HTTPS-Proxy: bytes devueltos de CloudFront a los espectadores por HTTPS en

respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.• región-Out-OBytes-HTTPS-Proxy: 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.

Datos transferidos por destino

Este gráfico muestra la cantidad total de datos transferidos por HTTP y HTTPS desde ubicaciones deborde de CloudFront en la región seleccionada durante cada intervalo de tiempo, en la distribución deCloudFront especificada.

Datos transferidos desde CloudFront a sus usuarios• región-Out-Bytes-HTTP-Static: bytes enviados por HTTP de objetos con un TTL ≥ 3 600

segundos.• región-Out-Bytes-HTTP-Static: bytes enviados por HTTPS de objetos con un TTL ≥ 3 600

segundos.• región-Out-Bytes-HTTP-Dynamic: bytes enviados por HTTP de objetos con un TTL < 3 600

segundos.• región-Out-Bytes-HTTPS-Dynamic: bytes enviados por HTTPS de objetos con un TTL < 3 600

segundos.• región-Out-Bytes-HTTP-Proxy: bytes devueltos de CloudFront a los espectadores por HTTP en

respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.• región-Out-Bytes-HTTPS-Proxy: bytes devueltos de CloudFront a los espectadores por HTTPS en

respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.Datos transferidos desde CloudFront al origen

• región-Out-OBytes-HTTP-Proxy: total de bytes transferidos por HTTP desde las ubicaciones deborde de CloudFront al origen en respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.

• región-Out-OBytes-HTTPS-Proxy: total de bytes transferidos por HTTPS desde las ubicaciones deborde de CloudFront al origen en respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.

Informes de espectadores de CloudFrontLa consola de CloudFront puede mostrar cuatro informes sobre los dispositivos físicos (equipos deescritorio, dispositivos móviles) y sobre los espectadores (por lo general, navegadores web) que accedenal contenido:

• Devices: los tipos de dispositivo que los usuarios utilizan con mayor frecuencia para obtener acceso a sucontenido, como por ejemplo, de escritorio o móvil.

• Browsers: el nombre (o el nombre y versión) de los navegadores que los usuarios utilizan con mayorfrecuencia para obtener acceso a su contenido (por ejemplo, Chrome o Firefox). El informe muestra los10 navegadores principales.

• Operating Systems : el nombre (o el nombre y la versión) del sistema operativo desde el que losespectadores obtienen acceso a su contenido con mayor frecuencia, como, por ejemplo, Linux, Mac OSX o Windows. El informe muestra los 10 sistemas operativos principales.

Versión de API 2016-09-29360

Amazon CloudFront Guía para desarrolladoresInformes de espectadores de CloudFront

• Locations: la ubicación por país o estado o territorio de EE. UU. desde el que los espectadores obtienenacceso a su contenido con mayor frecuencia. El informe muestra los 50 países principales de losEstados Unidos o de los estados y territorios.

Puede visualizar los cuatro informes de espectadores para cualquier intervalo de fechas de los últimos60 días. En el informe Locations también puede visualizar los puntos de datos de cada hora dentro decualquier intervalo de fechas de hasta 14 días en los últimos 60 días.

Note

No es necesario habilitar el registro de accesos para ver gráficos e informes de espectadores.

Temas• Visualización de gráficos e informes de espectadores (p. 361)• Descargar datos en formato CSV (p. 362)• Cómo los datos del informe Locations están relacionados con los datos de los registros de acceso de

CloudFront (p. 367)

Visualización de gráficos e informes de espectadoresPara visualizar gráficos e informes de espectadores de CloudFront, siga el procedimiento a continuación.

Para visualizar gráficos e informes de espectadores de CloudFront

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. En el panel de navegación, haga clic en Viewers.3. En el panel CloudFront Viewers, en Start Date y End Date, seleccione el intervalo de fechas cuyos

gráficos e informes de espectadores desea ver.

En el gráfico Locations, los rangos disponibles dependen del valor seleccionado en Granularity:

• Daily: para ver gráficos con un punto de datos por día, seleccione un rango de fechas dentro de losúltimos 60 días.

• Hourly: para ver gráficos con un punto de datos por cada hora, seleccione un rango de fechas igualo inferior a 14 días en los últimos 60 días.

Las fechas y horas se muestran según la hora universal coordinada (UTC).4. Solo gráficos de navegadores y de sistemas operativos: en Grouping, especifique si desea agrupar

los navegadores y sistemas operativos por nombre (Chrome, Firefox) o bien por nombre y versión(Chrome 40,0, Firefox 35,0).

5. Solo gráfico de ubicaciones: en Granularity, especifique si mostrar un punto de datos por día o porhora. Si especifica un intervalo de fechas de más de 14 días, la opción de especificar un punto dedatos por hora no estará disponible.

6. Solo gráfico de ubicaciones: en Details, especifique si mostrar las ubicaciones más populares por paíso por estados de Estados Unidos.

7. En la lista Distribution, seleccione la distribución cuyos datos desea visualizar en los gráficos de uso:

• An individual web distribution: los gráficos muestran los datos de la distribución web de CloudFrontseleccionada. La lista Distribution 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 unnombre de dominio de origen para la distribución.

Versión de API 2016-09-29361

Amazon CloudFront Guía para desarrolladoresInformes de espectadores de CloudFront

• All Web Distributions (excludes deleted): los gráficos muestran el total de datos de todas lasdistribuciones web asociadas a la cuenta de AWS actual, excluyendo las distribuciones web que haeliminado.

8. Haga clic en Update.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.

Descargar datos en formato CSVPuede descargar todos los informes de espectadores en formato CSV. En esta sección se explica cómodescargar dichos informes y describe sus valores.

Para descargar informes de espectadores en formato CSV

1. Al visualizar el informe de espectadores de su interés, haga clic en CSV.2. Elija los datos que desea descargar, por ejemplo, Devices o Devices Trends.3. En el cuadro de diálogo Opening file name, decida si abrir o guardar el archivo.

Temas• información acerca de los informes (p. 362)• Informe Devices (p. 363)• Informe Device Trends (p. 363)• Informe Browsers (p. 364)• Browser Trends Report (p. 364)• Informe Operating Systems (p. 365)• Informe Operating System Trends (p. 366)• Informe Locations (p. 366)• Informe Location Trends (p. 367)

información acerca de los informes

Las primeras filas de cada informe incluyen la siguiente información:

Version

La versión del formato del archivo CSVInforme

El nombre del informe.DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones web.

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).

Versión de API 2016-09-29362

Amazon CloudFront Guía para desarrolladoresInformes de espectadores de CloudFront

GeneratedTimeUTC

La fecha y hora en ha solicitado el informe, en tiempo universal coordinado (UTC).Grouping (solo en informes de navegadores y de sistemas operativos)

Forma de agrupación de los datos: por el nombre del navegador o sistema operativo, o por su nombrey versión.

Grado de detalle

Define si cada fila del informe representa una hora o un día.Details (solo informe de ubicaciones)

Forma de listar las solicitudes: por país o por estado de los Estados Unidos.

Informe DevicesEl informe incluye los siguientes valores:

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

Solicitudes

La cantidad de solicitudes que CloudFront ha recibido de cada tipo de dispositivo.RequestsPct

La cantidad de solicitudes que CloudFront ha recibido desde cada tipo de dispositivo como porcentajedel total de solicitudes que CloudFront ha recibido de todos los dispositivos.

Informe Device TrendsEl informe incluye los siguientes valores:

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

TimeBucket

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 periodoestablecido.

Aplicaciones

La cantidad de solicitudes que CloudFront ha recibido desde dispositivos móviles durante el periodoestablecido. Entre los dispositivos móviles se pueden incluir tablets y teléfonos móviles. Si CloudFront

Versión de API 2016-09-29363

Amazon CloudFront Guía para desarrolladoresInformes de espectadores de CloudFront

no puede determinar si una solicitud se ha originado desde un dispositivo móvil o una tablet, se reflejaen la columna Mobile.

Smart-TV

La cantidad de solicitudes que CloudFront ha recibido desde televisores inteligentes durante el periodoestablecido.

Tablet

La cantidad de solicitudes que CloudFront ha recibido desde tablets durante el periodo establecido.Si CloudFront no puede determinar si una solicitud se ha originado desde un dispositivo móvil o unatablet, se refleja en la columna Mobile.

Desconocido

Solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció con uno de los tipos dedispositivo estándar, por ejemplo, Desktop o Mobile.

Empty

La cantidad de solicitudes que CloudFront ha recibido y que no incluyeron un valor en el encabezadoHTTP User-Agent durante el periodo establecido.

Informe BrowsersEl informe incluye los siguientes valores:

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

Grupo

El navegador o el navegador y versión desde el que CloudFront ha recibido solicitudes en función delvalor de Grouping. Además de los nombres de los navegadores, otros valores son:• Bot/Crawler: sobre todo solicitudes de motores de búsqueda que están indexando su contenido.• Empty: solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.• Other: 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: solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció con uno delos tipos de dispositivo estándar. La mayoría de las solicitudes de esta categoría proceden deaplicaciones personalizadas o secuencias de comandos.

Solicitudes

La cantidad de solicitudes que CloudFront ha recibido de cada tipo de navegador.RequestsPct

La cantidad de solicitudes que CloudFront ha recibido desde cada tipo de navegador como porcentajedel total de solicitudes que CloudFront ha recibido durante el período determinado.

Browser Trends ReportEl informe incluye los siguientes valores:

Versión de API 2016-09-29364

Amazon CloudFront Guía para desarrolladoresInformes de espectadores de CloudFront

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

TimeBucket

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óndel valor de Grouping. Además de los nombres de los navegadores, otros valores son:• Bot/Crawler: sobre todo solicitudes de motores de búsqueda que están indexando su contenido.• Empty: solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.• Other: 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: solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció con uno delos tipos de dispositivo estándar. La mayoría de las solicitudes de esta categoría proceden deaplicaciones personalizadas o secuencias de comandos.

Informe Operating SystemsEl informe incluye los siguientes valores:

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

Grupo

El sistema operativo o sistema operativo y versión desde el que CloudFront ha recibido solicitudes enfunción del valor de Grouping. Además de los nombres de los sistemas operativos, otros valores son:• Bot/Crawler: sobre todo solicitudes de motores de búsqueda que están indexando su contenido.• Empty: solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.• Other: 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: solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció con uno delos tipos de dispositivo estándar. La mayoría de las solicitudes de esta categoría proceden deaplicaciones personalizadas o secuencias de comandos.

Solicitudes

La cantidad de solicitudes que CloudFront ha recibido de cada tipo de sistema operativo.RequestsPct

La cantidad de solicitudes que CloudFront ha recibido desde cada tipo de sistema operativo comoporcentaje del total de solicitudes que CloudFront ha recibido durante el período determinado.

Versión de API 2016-09-29365

Amazon CloudFront Guía para desarrolladoresInformes de espectadores de CloudFront

Informe Operating System TrendsEl informe incluye los siguientes valores:

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

TimeBucket

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 susversiones en función del valor de Grouping. Además de los nombres de los sistemas operativos,otros valores son:• Bot/Crawler: sobre todo solicitudes de motores de búsqueda que están indexando su contenido.• Empty: solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.• Other: 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: solicitudes cuyo sistema operativo no se especifica en el encabezado HTTP de User-Agent.

Informe LocationsEl informe incluye los siguientes valores:

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

LocationCode

La abreviatura de la ubicación desde la que CloudFront recibe solicitudes. Para obtener másinformación acerca de los valores posibles, consulte la descripción de Location en Cómo losdatos del informe Locations están relacionados con los datos de los registros de acceso deCloudFront (p. 367).

LocationName

El nombre de la ubicación desde la que CloudFront ha recibido solicitudes.Solicitudes

La cantidad de solicitudes que CloudFront ha recibido desde cada ubicación.RequestsPct

La cantidad de solicitudes que CloudFront ha recibido desde cada ubicación como porcentaje del totalde solicitudes que CloudFront ha recibido de todas las ubicaciones durante el período determinado.

Versión de API 2016-09-29366

Amazon CloudFront Guía para desarrolladoresInformes de espectadores de CloudFront

TotalBytes

La cantidad total de bytes que CloudFront ha enviado a los espectadores en el estado o país, en ladistribución y el periodo especificados.

Informe Location Trends

El informe incluye los siguientes valores:

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas lasdistribuciones.

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

TimeBucket

La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).(Locations)

Las demás columnas del informe reflejan las ubicaciones desde las que CloudFront ha recibidosolicitudes. Para obtener más información acerca de los valores posibles, consulte la descripción deLocation en Cómo los datos del informe Locations están relacionados con los datos de los registros deacceso de CloudFront (p. 367).

Cómo los datos del informe Locations están relacionados con losdatos de los registros de acceso de CloudFrontLa siguiente lista muestra cómo los datos del informe Locations de la consola de CloudFront secorresponden con los valores contenidos en los registros de acceso de CloudFront. Para obtener másinformación acerca de los registros de acceso de CloudFront, consulte Configuración y uso de registros deacceso (p. 371).

Ubicación

El país o estado de EE. UU. en el que se encuentra el espectador. En los registros de acceso, lacolumna 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 enfunción de la dirección IP.

Si consulta el informe Location por país, tenga en cuenta que la lista se basa en los códigos de lanorma ISO 3166-2 de representación de nombres de países y sus subdivisiones (parte 2: código desubdivisión de país). La lista de países incluye los siguientes valores adicionales:• Anonymous Proxy: la solicitud se ha originado en un proxy anónimo.• Satellite Provider; 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): 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. CloudFrontutiliza Europe (Unknown) como valor predeterminado.

• Asia/Pacific (Unknown): la solicitud se ha originado desde una IP en un bloque utilizado por variospaíses de la región Asia/Pacífico. No se puede determinar el país en el que se ha originado lasolicitud. CloudFront utiliza Asia/Pacific (Unknown) como valor predeterminado.

Versión de API 2016-09-29367

Amazon CloudFront Guía para desarrolladoresSeguimiento de los cambios en la

configuración mediante AWS Config

Si consulta el informe Locations (Ubicaciones) por estado de Estados Unidos, tenga en cuenta quepuede incluir regiones de territorios y zonas militares estadounidenses.

Note

Si CloudFront no puede determinar la ubicación de un usuario, la ubicación aparecerá comodesconocida los informes de espectador.

Request Count

La cantidad total de solicitudes del país o estado de Estados Unidos en el que se encuentrael espectador, en la distribución y el periodo especificados. Este valor suele corresponderseestrechamente con la cantidad de solicitudes GET desde direcciones IP en ese país o estado en losregistros de acceso de CloudFront.

Solicitud %

Una de las siguientes, en función del valor que haya seleccionado para Details:• Countries: las solicitudes de este país como porcentaje del total de solicitudes.• U.S. States: 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 % en función delos datos en esta tabla, ya que la columna Request Count no incluye todas las solicitudes del períodoespecificado.

Bytes

La cantidad total de bytes que CloudFront ha enviado a los espectadores en el estado o país, en ladistribució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.

Seguimiento de los cambios en la configuraciónmediante AWS Config

Puede usar AWS Config para registrar los cambios de configuración para los cambios de configuración dedistribución de CloudFront. Por ejemplo, puede capturar cambios en los estados de distribución, clases deprecios, orígenes, configuración de restricciones geográficas y configuraciones de Lambda@Edge.

Configurar AWS Config con CloudFrontCuando se configura AWS Config, puede elegir registrar todos los recursos de AWS compatibles o puedeespecificar solo determinados recursos para registrar cambios en la configuración, como, por ejemplo, sololos cambios de grabación para CloudFront. Para ver los recursos específicos admitidos para CloudFront,consulte la lista de Tipos de recursos de AWS admitidos en la AWS Config Developer Guide.

Para realizar un seguimiento de cambios de configuración de CloudFront, debe iniciar sesión en la consolade AWS en la región pública EE.UU. Este (Norte de Virginia).

Note

Es posible que haya un retraso en la grabación de recursos con AWS Config. AWS Config registralos recursos solo después de detectarlos.

Configurar AWS Config con CloudFront mediante la Consola de administración de AWS

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

Versión de API 2016-09-29368

Amazon CloudFront Guía para desarrolladoresVisualización del historial de configuración de CloudFront

2. Seleccione Get Started Now.3. En la página Settings (Configuración), para Resource types to record (Tipos de recursos que registrar),

especifique los tipos de recursos de AWS que desea que registre AWS Config. Si desea registrar sololos 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 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 derecursos.

Para obtener más información, consulte Configuración de AWS Config con la consola en la AWS ConfigDeveloper Guide.

Para configurar AWS Config con CloudFront mediante la CLI de AWS o mediante una API, consulte una delas siguientes opciones:

• Usar la CLI de AWS: Configuración de AWS Config con la CLI de AWS en la AWS Config DeveloperGuide

• Utilizar una API: la acción StartConfigurationRecorder y otra información en la AWS Config APIReference

Visualización del historial de configuración deCloudFrontDespués de que AWS Config comience a grabar los cambios de configuración para sus distribuciones,puede obtener el historial de configuración de cualquier distribución que haya configurado para CloudFront.

Para ver los historiales de configuración, use cualquiera de las siguientes formas:

• Uso de la consola de AWS Config. Para cada recurso registrado, puede ver una página de escalade tiempo que proporciona un historial con detalles de la configuración. Para ver esta página, elija elicono gris en la columna Config Timeline de la página Dedicated Hosts. Para obtener más información,consulte Visualización de los detalles de configuración en la consola AWS Config en la AWS ConfigDeveloper Guide.

• Ejecutar comandos de la CLI de AWS. Para obtener una lista de todas sus distribuciones, utilice elcomando list-discovered-resources. Para obtener los detalles de configuración de una distribución paraun intervalo de tiempo específico, utilice el comando get-resource-config-history. Para obtener másinformación, consulte la sección de Visualización de los detalles de configuración mediante la CLI en laAWS Config Developer Guide.

• Utilice la API de AWS Config en sus aplicaciones. Para obtener una lista de todas sus distribuciones,utilice la acción ListDiscoveredResources. Para obtener los detalles de configuración de una distribuciónpara un intervalo de tiempo específico, utilice la acción GetResourceConfigHistory. Para obtener másinformación, consulte AWS Config API Reference.

Por ejemplo, para obtener una lista de todas sus distribuciones de AWS Config, podría ejecutar uncomando de CLI como el siguiente:

aws configservice list-discovered-resources --resource-typeAWS::CloudFront::Distribution

O, para obtener una lista de todas sus distribuciones de streaming de RTMP de AWS Config, ejecute uncomando de CLI como el siguiente:

Versión de API 2016-09-29369

Amazon CloudFront Guía para desarrolladoresEtiquetar distribuciones de Amazon CloudFront

aws configservice list-discovered-resources --resource-typeAWS::CloudFront::StreamingDistribution

Etiquetar distribuciones de Amazon CloudFrontLas etiquetas son palabras o frases que puede utilizar para identificar y organizar sus recursos de AWS.Puede añadir varias etiquetas a cada recurso, y cada etiqueta incluye una clave y un valor que usteddefine. Por ejemplo, la clave puede ser "dominio" y el valor puede ser "example.com". Puede buscar yfiltrar sus recursos en función de las etiquetas que añada.

Al aplicar etiquetas a distribuciones de CloudFront y a otros recursos de AWS (por ejemplo, instanciasAmazon EC2 o buckets de Amazon S3) y activarlas, AWS genera un informe de asignación de costos enformato de valores separados por comas (archivo CSV) con el uso y los costos agrupados por etiquetasactivas. Puede aplicar etiquetas que representen categorías de negocio (por ejemplo, centros de costos,nombres de aplicación o propietarios) para estructurar los costos entre diferentes servicios. Para obtenermás información acerca del uso de etiquetas para la asignación de costos, consulte Uso de etiquetas deasignación de costos en la Guía del usuario de AWS Billing and Cost Management.

Para consultar el límite actual de la cantidad de etiquetas que puede añadir a una distribución web,consulte Límites (p. 413). Para solicitar una ampliación del límite, abra un caso en el Centro AWSSupport.

Tenga en cuenta lo siguiente:

• Puede etiquetar distribuciones web y RTMP, pero no puede etiquetar identidades de acceso de origen niinvalidaciones.

• Tag Editor y Resource Groups no son compatibles con CloudFront.

También puede aplicar etiquetas a recursos a través de la API de CloudFront, AWS CLI, SDKy Herramientas de AWS para Windows PowerShell. Para obtener más información, consulte ladocumentación siguiente:

• API de CloudFront: consulte las siguientes operaciones en la Amazon CloudFront API Reference:• ListTagsForResource• TagResource• UntagResource

• AWS CLI: consulte cloudfront en la AWS CLI Command Reference.• SDK: consulte la documentación de SDK aplicable en la página documentación de AWS.• Herramientas para Windows PowerShell: consulte Amazon CloudFront en la Herramientas de AWS para

PowerShell Cmdlet Reference.

Temas• Restricciones de las etiquetas (p. 370)• Añadir, editar y eliminar etiquetas para distribuciones (p. 371)

Restricciones de las etiquetasSe aplican las siguientes restricciones básicas a las etiquetas:

• Cantidad máxima de etiquetas por recurso: 10.• Longitud máxima de la clave: 128 caracteres Unicode.

Versión de API 2016-09-29370

Amazon CloudFront Guía para desarrolladoresAñadir, editar y eliminar etiquetas para distribuciones

• Longitud máxima del valor: 256 caracteres Unicode.• Valores válidos para claves y valores: a-z, A-Z, 0-9, espacio y los siguientes caracteres: _ . : / = + - y @• Las claves y los valores de las etiquetas distinguen entre mayúsculas y minúsculas• No utilice aws: como prefijo para claves, ya que su uso está reservado a AWS.

Añadir, editar y eliminar etiquetas para distribucionesEn el siguiente procedimiento se explica cómo añadir, editar y eliminar etiquetas para sus distribuciones enla consola de CloudFront.

Para añadir, editar o eliminar etiquetas en una distribución

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. Elija la ID de la distribución que desea actualizar.3. Elija la pestaña Tags.4. Elija Add or edit tags.5. En la página Add or edit tags, puede hacer lo siguiente:

Añada una etiqueta

Escriba una clave y, opcionalmente, un valor para la etiqueta.Editar una etiqueta

Cambie la clave, el valor o ambos. También puede eliminar el valor de una etiqueta, pero la clavees necesaria.

Eliminar una etiqueta

Elija la X en la parte derecha del campo de valor.6. Seleccione Save.

Configuración y uso de registros de accesoPuede configurar CloudFront para crear archivos de registro que contengan información detallada sobrecada solicitud de usuario que CloudFront recibe. Estos registros de acceso están disponibles tanto paradistribuciones web como para distribuciones RTMP. Si habilita el registro, también puede especificar enqué bucket de Amazon S3 desea que CloudFront guarde los archivos.

Puede habilitar el registro como una opción que especifica al crear una distribución. Para obtener másinformación, consulte la sección Registro del tema Valores que deben especificarse al crear o actualizaruna distribución web.

Temas• Cómo funciona el proceso de registro (p. 372)• Elección de un bucket de Amazon S3 para sus registros de acceso (p. 372)• Permisos necesarios para configurar el registro y el acceso a sus archivos de registro (p. 373)• Formato del nombre de archivo (p. 374)• Intervalo de entrega de archivos de registro (p. 374)• Análisis de registros de acceso (p. 374)• Editar la configuración de registro (p. 375)• Eliminar archivos de registro de un bucket de Amazon S3 (p. 375)

Versión de API 2016-09-29371

Amazon CloudFront Guía para desarrolladoresCómo funciona el proceso de registro

• Formato de archivo de registro (p. 376)• Cargos por los registros de acceso (p. 386)

Cómo funciona el proceso de registroEl siguiente diagrama muestra cómo CloudFront registra la información acerca de las solicitudes que sehacen a sus objetos.

A continuación se explica cómo CloudFront registra información acerca de las solicitudes de sus objetos,tal y como se muestra en el gráfico anterior.

1. En este diagrama se muestran dos sitios web, A y B, y sus distribuciones de CloudFrontcorrespondientes. Los usuarios solicitan sus objetos a través de URL asociadas a las distribuciones.

2. CloudFront dirige cada solicitud a la ubicación de borde adecuada.3. CloudFront escribe los datos de cada solicitud a un archivo de registro específico para esa distribución.

En este ejemplo, la información acerca de las solicitudes relacionadas con la Distribución A seescriben en un archivo de registro solo para la Distribución A, y la información acerca de las solicitudesrelacionadas con la Distribución B se escriben en un archivo de registro solo para la Distribución B.

4. CloudFront periódicamente guarda el archivo de registro de la distribución en el bucket de Amazon S3especificado al habilitar el registro. A continuación, CloudFront comienza a guardar información acercade las posteriores solicitudes en un nuevo archivo de registro para la distribución.

Cada entrada del archivo de registro ofrece información acerca de una única solicitud. Para obtener másinformación acerca del formato del archivo de registro, consulte Formato de archivo de registro (p. 376).

Elección de un bucket de Amazon S3 para susregistros de accesoAl habilitar el registro para una distribución, especifica el bucket de Amazon S3 en el que desea queCloudFront almacene los archivos de registro. Si utiliza Amazon S3 como origen, le recomendamosque no use el mismo bucket para los archivos de registro. Usar un bucket independiente simplifica elmantenimiento.

Versión de API 2016-09-29372

Amazon CloudFront Guía para desarrolladoresPermisos necesarios para configurar el

registro y el acceso a sus archivos de registro

Puede almacenar los archivos de registro de varias distribuciones en el mismo bucket. Al habilitar elregistro, puede especificar un prefijo para los nombres de archivo, para así realizar un seguimiento de quelos archivos de registro que se asocian con las distribuciones.

Si ningún usuario obtiene acceso a su contenido durante una hora determinada, no se reciben archivos deregistro de esa hora.

Permisos necesarios para configurar el registro y elacceso a sus archivos de registroSu cuenta de AWS debe tener los siguientes permisos para el bucket que especifique para los archivos deregistro:

• La lista de control de acceso de S3 (ACL) del bucket debe concederle FULL_CONTROL. Si es elpropietario del bucket, su cuenta tiene este permiso de forma predeterminada. Si no está, el propietariodel bucket debe actualizar la ACL del bucket.

• s3:GetBucketAcl

• s3:PutBucketAcl

Tenga en cuenta lo siguiente:

ACL para el bucket

Al crear o actualizar una distribución y habilitar el registro, CloudFront utiliza estos permisospara actualizar la ACL y que el bucket le conceda a la cuenta awsdatafeeds permiso del tipoFULL_CONTROL. La cuenta awsdatafeeds escribe archivos de registro en el bucket. Si su cuenta notiene los permisos necesarios, ocurrirá un error al crear o actualizar la distribución.

En determinadas circunstancias, si envía una solicitud de forma programada para crear un bucketcon un nombre específico, pero ya existe uno con ese nombre, S3 restablece los permisos del bucketa sus valores predeterminados. Si configura CloudFront para guardar los registros de acceso en unbucket de S3 y los registros dejan de guardarse, revise los permisos del bucket para asegurarse deque CloudFront dispone de los permisos necesarios.

Restauración de la ACL para el bucket

Si elimina permisos para la cuenta awsdatafeeds, CloudFront no podrá guardar registros en el bucketde S3. Para permitir que CloudFront se inicie de nuevo para guardar los registros de su distribución,restaure el permiso de ACL realizando una de estas acciones:1. Deshabilite el registro de su distribución en CloudFront y, a continuación, habilítelo de nuevo. Para

obtener más información, consulte Registro en el tema Valores que deben especificarse al crear oactualizar una distribución web.

2. Añada el permiso de ACL para awsdatafeeds manualmente accediendo al bucket de S3 enla consola de Amazon S3 y añadiendo permiso. Para añadir la ACL para awsdatafeeds, debeproporcionar el nombre canónico de la cuenta, que es el siguiente:

c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0

Para obtener más información acerca de la adición de ACL a buckets de S3, consulte Configuraciónde permisos para buckets con ACL en la Guía del usuario de la consola de Amazon Simple StorageService.

ACL para cada archivo de registro

Además de la ACL del bucket, hay una ACL en cada archivo de registro. El propietario del buckettiene permisos FULL_CONTROL en cada archivo de registro, el propietario de la distribución (si no esel mismo que el del bucket) no tiene permiso, y la cuenta awsdatafeeds tiene permisos de lectura yescritura.

Versión de API 2016-09-29373

Amazon CloudFront Guía para desarrolladoresFormato del nombre de archivo

Deshabilitar los registros

Si deshabilita el registro, CloudFront no elimina las ACL del bucket ni de los archivos de registro. Si lodesea, puede hacerlo usted mismo.

Formato del nombre de archivoEl nombre de cada archivo de registro que CloudFront guarda en el bucket de Amazon S3 utiliza el formatode nombre de archivo siguiente:

bucket-name.s3.amazonaws.com/optional-prefix/distribution-ID.YYYY-MM-DD-HH.unique-ID.gz

La fecha y la hora se muestran según la hora universal coordinada (UTC).

Por ejemplo, si el nombre del bucket es mylogs, el prefijo es myprefix/ y su ID de distribuciónEMLARXS9EXAMPLE, los nombres de archivo serán similares a este ejemplo:

mylogs.s3.amazonaws.com/myprefix/EMLARXS9EXAMPLE.2014-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. Siincluye un valor para el prefijo del archivo de registro y dicho prefijo no incluye una /, CloudFront añadeuna automáticamente. Si su valor incluye una /, CloudFront no añade otra.

El .gz al final del nombre del archivo indica que CloudFront ha comprimido el archivo de registro con gzip.

Intervalo de entrega de archivos de registroCloudFront proporciona registros de acceso para una distribución hasta varias veces cada hora. Engeneral, un archivo de registro contiene información acerca de las solicitudes que CloudFront ha recibidodurante un período determinado. Normalmente, CloudFront entrega el archivo de registro de ese periodoen el bucket de Amazon Amazon S3 en el plazo máximo de una hora después de que se produzcan loseventos reflejados en el registro. Tenga en cuenta, sin embargo, que algunas o todas las entradas delos archivos de registro de un periodo a veces pueden retrasarse hasta 24 horas. Cuando se retrasanentradas de registro, CloudFront las guarda en un archivo de registro cuyo nombre incluye la fecha y lahora del periodo en el que se realizaron las solicitudes en lugar de incluir la fecha y la hora de entrega delarchivo.

Al crear un archivo de registro, CloudFront consolida información para su distribución desde todas lasubicaciones de borde que recibieron solicitudes de sus objetos durante el periodo que abarca dichoarchivo.

CloudFront puede guardar más de un archivo por periodo en función de la cantidad de solicitudes deobjetos asociados con una distribución que recibe CloudFront.

CloudFront comienza a enviar de forma fiable los registros de acceso sobre cuatro horas después deactivar 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 eseperiodo.

Análisis de registros de accesoDado que puede recibir varios logs de acceso por hora, le recomendamos que combine en un mismoarchivo todos los archivos log que reciba para un periodo determinado. Así podrá analizar los datos de eseperiodo de forma más rápida y precisa.

Versión de API 2016-09-29374

Amazon CloudFront Guía para desarrolladoresEditar la configuración de registro

Una forma de analizar sus logs de acceso consiste en utilizar Amazon Athena. Athena es un servicio deconsultas interactivo que puede ayudarle a analizar datos de los servicios de AWS, incluido CloudFront.Para obtener más información, consulte Consulta de logs de Amazon CloudFront en la Guía del usuariode Amazon Athena.

Además, en los siguientes blogs de AWS se explican algunas formas de analizar logs de acceso.

Blog de AWS: Amazon CloudFront Request Logging (para contenido distribuido a través de HTTP)

Blog de AWS: Amazon CloudFront Now Supports Streaming Access Logs (para contenido entregado através de RTMP)

Blog de AWS: Enhanced CloudFront Logs, Now With Query Strings

Important

Recomendamos utilizar los registros de acceso para comprender la naturaleza de las solicitudeshechas a su contenido y no como una relación exhaustiva de todas las solicitudes. CloudFrontentrega registros de acceso en la medida en que sea posible. La entrada de registro de unasolicitud determinada puede entregarse mucho después de la solicitud se haya procesadorealmente y, en casos contados, es probable que una entrada de registro no se entregue enabsoluto. Cuando se omite una entrada de registro de los registros de acceso, la cantidad deentradas de los registros de acceso no coincide con el uso que aparece en el uso de AWS y enlos informes de facturación.

Editar la configuración de registroPuede habilitar o deshabilitar el registro, cambiar el bucket de Amazon S3 en la que se almacenan losregistros y cambiar el prefijo de los archivos de registro a través de la consola o la API de CloudFront. Loscambios de configuración de registro surten efecto en un plazo de 12 horas.

Para obtener más información, consulte los siguientes temas:

• Actualización de una distribución web o RTMP mediante la consola de CloudFront: Visualizar y actualizardistribuciones (p. 53).

• Actualización de una distribución web mediante la API de CloudFront: UpdateDistribution en la AmazonCloudFront API Reference.

• Actualización de una distribución RTMP mediante la API de CloudFront: UpdateStreamingDistribution enla Amazon CloudFront API Reference.

Para cambiar la configuración del registro de acceso para las distribuciones web mediante la API deCloudFront, utilice la versión 2009-04-02 o posterior de la API. Para cambiar la configuración del registrode acceso para las distribuciones RTMP mediante la API de CloudFront, utilice la versión 2010-05-01 oposterior de la API.

Eliminar archivos de registro de un bucket de AmazonS3CloudFront no elimina automáticamente los archivos de registro del bucket de Amazon S3. Para obtenerinformación acerca de cómo eliminar archivos de registro de un bucket de Amazon S3, consulte lossiguientes temas:

• Con la consola de Amazon S3: Deleting an Object en la Amazon Simple Storage Service Console UserGuide.

Versión de API 2016-09-29375

Amazon CloudFront Guía para desarrolladoresFormato de archivo de registro

• Con la API REST: DELETE Object en la Amazon Simple Storage Service API Reference.• Con la API SOAP: DeleteObject en la Amazon Simple Storage Service API Reference.

Formato de archivo de registroTemas

• Formato de archivos de registro de distribución web (p. 377)• Formato de archivos de registro de distribución RTMP (p. 384)

Cada entrada del archivo de registro ofrece información acerca de una única solicitud de usuario. Losarchivos de registro para las distribuciones RTMP y web no son idénticos, pero comparten las siguientescaracterísticas:

• Utilizan el formato de archivo de registro ampliado W3C. Para obtener más información, consulte http://www.w3.org/TR/WD-logfile.html.

• Contienen valores separados por pestañas.• Contienen registros que no están necesariamente en orden cronológico.• Contienen dos líneas de encabezado: una con la versión de formato de archivo, y otra que muestra la

cantidad de campos de W3C incluidos en cada registro.• Cambie los equivalentes de URL codificadas por espacios y caracteres no estándar en los valores de

campo.

Estos caracteres no estándar se componen de todos los códigos de ASCII por debajo de 32 y porencima de 127, además de los caracteres de la siguiente tabla. El estándar de codificación URL es RFC1738. Para obtener más información, consulte http://www.ietf.org/rfc/rfc1738.txt.

Valor de URL codificada Carácter

%3C <

%3E >

%2522 "

%23 #

%25 %

%7B {

%7D }

%7C |

%255C \

%5E ^

%7E ~

%5B [

%5D ]

%60 `

Versión de API 2016-09-29376

Amazon CloudFront Guía para desarrolladoresFormato de archivo de registro

Valor de URL codificada Carácter

%27 '

%2520 espacio

Formato de archivos de registro de distribución webEl archivo de registro para una distribución web incluye los siguientes campos en el orden que se muestraa continuación:

Número decampo

Nombre delcampo

Descripción

1 date La fecha en que se produjo el evento en el formato yyyy-mm-dd, porejemplo, 2015-06-30. La fecha y la hora se muestran según la horauniversal coordinada (UTC).

2 time La hora a la que el servidor de CloudFront terminó de responder a lasolicitud (en UTC), por ejemplo, 01:42:39.

3 x-edge-location

La ubicación de borde que atendió la solicitud. Cada ubicación deborde se identifica mediante un código de tres letras y un númeroasignado arbitrariamente, por ejemplo, DFW3. El código de tres letrasnormalmente se corresponde con el código de aeropuerto (segúnla Asociación de Transporte Aéreo Internacional) más cercano ala ubicación de borde. Estas abreviaturas pueden cambiar en elfuturo. Para ver una lista de las ubicaciones de borde, visite la páginade información de Amazon CloudFront, http://aws.amazon.com/cloudfront.

4 sc-bytes La cantidad total de bytes que CloudFront ha enviado al espectadoren respuesta a la solicitud, incluyendo encabezados; por ejemplo,1045619.

5 c-ip La dirección IP del espectador que ha realizadola solicitud, por ejemplo, 192.0.2.183 o2001:0db8:85a3:0000:0000:8a2e:0370:7334. Si elespectador utiliza un proxy HTTP o un balanceador de carga paraenviar la solicitud, el valor de c-ip es la dirección IP del proxy o delbalanceador de carga. Consulte también X-Forwarded-For en elcampo 20.

6 cs-method El método de acceso HTTP: DELETE, GET, HEAD, OPTIONS, PATCH,POST, o bien PUT.

7 cs(Host) El nombre de dominio de la distribución de CloudFront, por ejemplo,d111111abcdef8.cloudfront.net.

8 cs-uri-stem La parte de la URI que identifica la ruta y el objeto; por ejemplo, /images/daily-ad.jpg.

9 sc-status Uno de los valores siguientes:

• Un código de estado HTTP; por ejemplo, 200. Para obtener unalista de códigos de estado HTTP, consulte RFC 2616, HypertextTransfer Protocol—HTTP 1.1, section 10, Status Code Definitions.

Versión de API 2016-09-29377

Amazon CloudFront Guía para desarrolladoresFormato de archivo de registro

Número decampo

Nombre delcampo

Descripción

Para obtener más información, consulte Cómo CloudFront procesay almacena en caché los códigos de estado HTTP 4xx y 5xx desdeel origen (p. 251).

• 000, que indica que el visitante ha interrumpido la conexión (porejemplo, ha cerrado la pestaña del navegador) antes de queCloudFront pudiera responder a la solicitud.

Si el espectador interrumpe la conexión después de queCloudFront comienza a enviar el objeto, el registro contiene elcódigo de estado HTTP aplicable.

10 cs(Referer) El nombre del dominio que ha originado la solicitud. Entre losremitentes principales se incluyen motores de búsqueda, otros sitiosweb que enlazan directamente con sus objetos y su propio sitio web.

11 cs(User-Agent)

El valor del encabezado User-Agent de la solicitud. El encabezadoUser-Agent identifica la fuente de la solicitud, como el tipo dedispositivo y el navegador que presentaron la solicitud y, si la solicitudprovino de un motor de búsqueda, de cuál. Para obtener másinformación, consulte Encabezado usuario-agente (p. 245).

12 cs-uri-query La parte de la cadena de consulta de la URI, de haberla. Cuando unaURI no contiene una cadena de consulta, el valor de cs-uri-queryes un guion (-).

Para obtener más información, consulte Almacenar en cachécontenido en función de parámetros de cadenas de consulta (p. 196).

13 cs(Cookie) El encabezado de la cookie, incluidos pares nombre-valor y losatributos asociados. Si habilita el registro de cookies en los registros,CloudFront registra las de todas las solicitudes independientementede qué cookies elija enviar al origen: ninguna, todas o una listablanca de los nombres de las cookies. Cuando una solicitud noincluye un encabezado de cookie, el valor de cs(Cookie) es unguion (-).

Para obtener más información acerca de cookies, consulteAlmacenamiento en caché de contenido en función decookies (p. 199).

Versión de API 2016-09-29378

Amazon CloudFront Guía para desarrolladoresFormato de archivo de registro

Número decampo

Nombre delcampo

Descripción

14 x-edge-result-type

Cómo CloudFront clasifica la respuesta después de que el último bytehaya abandonado la ubicación de borde. En algunos casos, el tipode resultado puede cambiar entre el momento en que CloudFrontestá listo para enviar la respuesta y el momento en que dicho envíofinaliza. Por ejemplo, supongamos que, durante la transmisiónHTTP, CloudFront encuentra un segmento en la caché perimetral.El valor de x-edge-response-result-type, el tipo de resultadoinmediatamente antes de CloudFront comience a responder a lasolicitud, es Hit. No obstante, si el usuario cierra el espectadorantes de que CloudFront haya entregado todo el segmento, el tipo deresultado final, es decir, el valor de x-edge-result-type, cambiaa Error.

Entre los valores posibles se incluyen:

• Hit: CloudFront ofreció el objeto al espectador desde la cachéperimetral.

Para obtener información acerca de una situación en la queCloudFront clasifica el tipo de resultado como Hit a pesar de quela respuesta del origen contiene un encabezado Cache-Control:no-cache, consulte Solicitudes simultáneas del mismo objeto(picos de tráfico) (p. 245).

• RefreshHit: CloudFront encontró el objeto en la caché perimetralpero había caducado, por lo que CloudFront se puso en contactocon el origen para determinar si la caché tenía la última versión delobjeto y, si no, para obtener la versión más reciente.

• Miss: un objeto en la caché perimetral no pudo satisfacer lasolicitud, así que CloudFront la envió al servidor de origen ydevolvió el resultado al espectador.

• LimitExceeded: la solicitud se denegó porque se superó unlímite de CloudFront.

• CapacityExceeded: CloudFront devolvió un código de estadoHTTP 503 (servicio no disponible), ya que el servidor perimetral deCloudFront no pudo responder a las solicitudes temporalmente.

• Error: suele significar un error de cliente durante la solicitud (sc-status es 4xx) o un error de servidor (sc-status es 5xx).

• Redirect: CloudFront redirige de HTTP a HTTPS.

Si sc-status es 403 y había configurado CloudFront pararestringir geográficamente la distribución de su contenido, lasolicitud puede haber venido de una ubicación restringida.Para obtener más información acerca de las restriccionesgeográficas consulte Restringir la distribución geográfica de sucontenido (p. 123).

Si el valor de x-edge-result-type es Error y el valor dex-edge-response-result-type no es Error, el cliente sedesconectó antes de finalizar la descarga.

15 x-edge-request-id

Una cadena cifrada que identifica una solicitud de forma única.

Versión de API 2016-09-29379

Amazon CloudFront Guía para desarrolladoresFormato de archivo de registro

Número decampo

Nombre delcampo

Descripción

16 x-host-header

El valor que el espectador incluyó en el encabezado Host de estasolicitud. Este es el nombre de dominio de la solicitud:

• Si está utilizando el nombre de dominio de CloudFronten las URL de los objetos, como, por ejemplo http://d111111abcdef8.cloudfront.net/logo.png, el campo x-host-header es el que contiene dicho nombre de dominio.

• Si está utilizando nombres de dominio alternativos en la URL delos objetos, como http://example.com/logo.png, el campo x-host-header es el que contiene el nombre de dominio alternativo, comopor ejemplo example.com. Para utilizar nombres de dominioalternativo, debe añadirlos a su distribución. Para obtener másinformación, consulte Uso de URL personalizadas para archivosañadiendo nombres de dominio alternativos (CNAME) (p. 60).

Si está utilizando nombres de dominio alternativo, consultecs(Host) en el campo 7 para ver el nombre de dominio asociadocon su distribución.

17 cs-protocol El protocolo que el espectador especificó en la solicitud, http ohttps.

18 cs-bytes La cantidad de bytes de datos que el espectador incluyó en lasolicitud (servidor de cliente para bytes), incluidos los encabezados.

19 time-taken La cantidad de segundos (hasta la milésima de segundo, porejemplo, 0,002) entre el momento en que un servidor perimetral deCloudFront recibe una solicitud del espectador y el momento enque CloudFront escribe el último byte de la respuesta en la cola desalida de servidor perimetral, tal como lo mide el servidor. Desde elpunto de vista del espectador, el tiempo total para obtener el objetocompleto será superior a este valor debido a la latencia de la red y dealmacenamiento en búfer de TCP.

20 x-forwarded-for

Si el espectador utiliza un proxy HTTP o un balanceador de cargapara enviar la solicitud, el valor de c-ip en el campo 5 es ladirección IP del proxy o del balanceador de carga. En ese caso, x-forwarded-for es la dirección IP del espectador que originó lasolicitud.

Si el espectador no utiliza un proxy HTTP o un balanceador de carga,el valor de x-forwarded-for es un guion (-).

Note

El encabezado X-Forwarded-For contienedirecciones IPv4 (como 192.0.2.44) e IPv6 (como2001:0db8:85a3:0000:0000:8a2e:0370:7334) segúncorresponda.

Versión de API 2016-09-29380

Amazon CloudFront Guía para desarrolladoresFormato de archivo de registro

Número decampo

Nombre delcampo

Descripción

21 ssl-protocol Cuando cs-protocol en el campo 17 es https, el protocolo SSLque el cliente y CloudFront negociaron para transmitir la solicitudy la respuesta. Cuando cs-protocol es http, el valor de ssl-protocol es un guion (-).

Entre los valores posibles se incluyen:

• SSLv3

• TLSv1

• TLSv1.1

• TLSv1.2

22 ssl-cipher Cuando cs-protocol en el campo 17 es https, el protocolo decifrado SSL que el cliente y CloudFront negociaron para encriptar lasolicitud y la respuesta. Cuando cs-protocol es http, el valor dessl-cipher es un guion (-).

Entre los valores posibles se incluyen:

• ECDHE-RSA-AES128-GCM-SHA256

• ECDHE-RSA-AES128-SHA256

• ECDHE-RSA-AES128-SHA

• ECDHE-RSA-AES256-GCM-SHA384

• ECDHE-RSA-AES256-SHA384

• ECDHE-RSA-AES256-SHA

• AES128-GCM-SHA256

• AES256-GCM-SHA384

• AES128-SHA256

• AES256-SHA

• AES128-SHA

• DES-CBC3-SHA

• RC4-MD5

Versión de API 2016-09-29381

Amazon CloudFront Guía para desarrolladoresFormato de archivo de registro

Número decampo

Nombre delcampo

Descripción

23 x-edge-response-result-type

Cómo CloudFront clasifica la respuesta antes de devolver larespuesta al espectador. Consulte también x-edge-result-typeen el campo 14.

Entre los valores posibles se incluyen:

• Hit: CloudFront ofreció el objeto al espectador desde la cachéperimetral.

• RefreshHit: CloudFront encontró el objeto en la cachéperimetral, pero había caducado, por lo que CloudFront se pusoen contacto con el origen para verificar si la caché tenía la últimaversión del objeto y, si no, para obtener la versión más reciente.

• Miss: un objeto en la caché perimetral no pudo satisfacer lasolicitud, así que CloudFront la envió al servidor de origen ydevolvió el resultado al espectador.

• LimitExceeded: la solicitud se denegó porque se superó unlímite de CloudFront.

• CapacityExceeded: CloudFront devuelve un error 503 porquela ubicación de borde no dispone de capacidad suficiente en elmomento de la solicitud para ofrecer el objeto.

• Error: suele significar un error de cliente durante la solicitud (sc-status es 4xx) o un error de servidor (sc-status es 5xx).

• Redirect: CloudFront redirige de HTTP a HTTPS.

Si sc-status es 403 y había configurado CloudFront pararestringir geográficamente la distribución de su contenido, lasolicitud puede haber venido de una ubicación restringida.Para obtener más información acerca de las restriccionesgeográficas consulte Restringir la distribución geográfica de sucontenido (p. 123).

Si el valor de x-edge-result-type es Error y el valor dex-edge-response-result-type no es Error, el cliente sedesconectó antes de finalizar la descarga.

24 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.

Versión de API 2016-09-29382

Amazon CloudFront Guía para desarrolladoresFormato de archivo de registro

Número decampo

Nombre delcampo

Descripción

25 fle-status Cuando se configura el cifrado en el nivel de campo para unadistribución, un código que indica si el cuerpo de la solicitud se haprocesado correctamente. Si no se ha configurado el cifrado en elnivel de campo para la distribución, el valor de fle-status es unguion (-).

Si CloudFront procesa correctamente el cuerpo de la solicitud, cifralos valores de los campos especificados y reenvía la solicitud alorigen, el valor de la columna fle-status es Processed. El valorde x-edge-result-type, la columna 14, puede seguir indicandoun error del lado del cliente o del lado del servidor.

Si la solicitud supera un límite del cifrado en el nivel de campo, fle-status contiene uno de los siguientes códigos de error y CloudFrontdevuelve el código de estado HTTP 400 al espectador. Para obteneruna lista de los límites actuales del cifrado en el nivel de campo,consulte Límites del cifrado en el nivel de campo (p. 416).

• FieldLengthLimitClientError: un campo que se haconfigurado como cifrado ha superado la longitud máxima

• FieldNumberLimitClientError: una solicitud que CloudFrontha configurado como cifrada contiene un número de campos mayordel permitido

• RequestLengthLimitClientError: la longitud del cuerpo de lasolicitud ha superado el límite si se ha configurado el cifrado en elnivel de campo

Otros valores posibles para fle-status son:

• ForwardedByContentType: CloudFront ha reenviado la solicitudal origen sin analizar ni cifrar porque no se ha configurado ningúntipo de contenido.

• ForwardedByQueryArgs: CloudFront ha reenviado la solicitudal origen sin analizar ni cifrar porque la solicitud contiene unargumento de consulta que no estaba en la configuración delcifrado en el nivel de campo.

• ForwardedDueToNoProfile: CloudFront ha reenviado lasolicitud al origen sin analizar ni cifrar porque no se ha especificadoningún perfil en la configuración del cifrado en el nivel de campo.

• MalformedContentTypeClientError: CloudFront harechazado la solicitud y ha devuelto un código de estado HTTP 400al espectador porque el valor del encabezado Content-Type estabaen un formato no válido.

• MalformedInputClientError: CloudFront ha rechazadola solicitud y ha devuelto un código de estado HTTP 400 alespectador porque el cuerpo de la solicitud estaba en un formatono válido.

• MalformedQueryArgsClientError: CloudFront ha rechazadola solicitud y ha devuelto un código de estado HTTP 400 alespectador porque un argumento de consulta estaba vacío o teníaun formato no válido.

Versión de API 2016-09-29383

Amazon CloudFront Guía para desarrolladoresFormato de archivo de registro

Número decampo

Nombre delcampo

Descripción

• RejectedByContentType: CloudFront ha rechazado la solicitudy ha devuelto un código de estado HTTP 400 al espectador porqueno se ha especificado ningún tipo de contenido en la configuracióndel cifrado en el nivel de campo.

• RejectedByQueryArgs: CloudFront ha rechazado la solicitudy ha devuelto un código de estado HTTP 400 al espectadorporque no se ha especificado ningún argumento de consulta en laconfiguración del cifrado en el nivel de campo.

• ServerError: el servidor ha devuelto un error.

26 fle-encrypted-fields

El número de campos que CloudFront ha cifrado y reenviado alorigen. CloudFront transmite la solicitud procesada al origen amedida que cifra los datos, por lo que fle-encrypted-fieldspuede tener un valor aunque el valor de fle-status sea un error.Si no se ha configurado el cifrado en el nivel de campo para ladistribución, el valor de fle-encrypted-fields es un guion (-).

Note

Los signos de interrogación (?) de los URL y las cadenas de consulta no están incluidas en elregistro.

A continuación, se muestra un ejemplo de archivo de registro para una distribución web:

#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 2014-05-23 01:13:11 FRA2 182 192.0.2.10 GET d111111abcdef8.cloudfront.net /view/my/file.html 200 www.displaymyfiles.com Mozilla/4.0%20(compatible;%20MSIE%205.0b1;%20Mac_PowerPC) - zip=98101 RefreshHit MRVMF7KydIvxMWfJIglgwHQwZsbG2IhRJ07sn9AkKUFSHS9EXAMPLE== d111111abcdef8.cloudfront.net http - 0.001 - - - RefreshHit HTTP/1.1 Processed 12014-05-23 01:13:12 LAX1 2390282 192.0.2.202 GET d111111abcdef8.cloudfront.net /soundtrack/happy.mp3 304 www.unknownsingers.com Mozilla/4.0%20(compatible;%20MSIE%207.0;%20Windows%20NT%205.1) a=b&c=d zip=50158 Hit xGN7KWpVEmB9Dp7ctcVFQC4E-nrcOcEKS3QyAez--06dV7TEXAMPLE== d111111abcdef8.cloudfront.net http - 0.002 - - - Hit HTTP/1.1 - -

Formato de archivos de registro de distribución RTMPCada registro dentro de un registro de acceso RTMP representa un evento de reproducción, como, porejemplo, conectar, reproducir, pausar, detener, desconectarse, etc. Como resultado, CloudFront generavarios registros cada vez que un espectador mira un video. Para ver los registros que se derivan del mismoID de transmisión, utilice el campo x-sid.

Note

Algunos campos tienen valores para todos los eventos, y algunos tienen valores solo para loseventos de reproducción, pausa, quitado de pausa y búsqueda. Normalmente, si el archivo deregistro contiene un guion (-) en un campo, quiere decir que ese campo no le es relevante.

En la siguiente tabla se describen los campos que están presentes en cada registro en el archivo deregistro de la distribución RTMP, independientemente del tipo de evento. Los campos aparecerán en elregistro en el orden en el que se enumeran.

Versión de API 2016-09-29384

Amazon CloudFront Guía para desarrolladoresFormato de archivo de registro

Número decampo

Nombre delcampo

Descripción

1 date La fecha en que se produjo el evento en el formato, por ejemplo, .aaaa-mm-dd; por ejemplo: 2014-05-23. La fecha y la hora semuestran según la hora universal coordinada (UTC).

2 tiempo El momento en el que el servidor recibió la solicitud (en UTC), porejemplo, 01:42:39.

3 x-edge-location

La ubicación de borde en la que ocurrió el evento de reproducción.Cada ubicación de borde se identifica mediante un código de tresletras y un número asignado arbitrariamente, por ejemplo, DFW3. Elcódigo de tres letras normalmente se corresponde con el código deaeropuerto (según la Asociación de Transporte Aéreo Internacional)más cercano a la ubicación de borde. Estas abreviaturas puedencambiar en el futuro. Para ver una lista de las ubicaciones deborde, visite la página de información de Amazon CloudFront, http://aws.amazon.com/cloudfront.

4 c-ip IP del cliente, por ejemplo, 192.0.2.183.

5 x-event El tipo de evento. Se trata de un evento Connect, Disconnect, Play,Stop, Pause, Unpause o Seek .

6 sc-bytes La cantidad total de bytes en ejecución enviada desde el servidorhacia el cliente, hasta el momento del evento.

7 x-cf-status Un código que indica el estado del evento. En la actualidad, "OK" es elúnico valor de este campo. Nuevas funciones futuras podrían requerirnuevos códigos de estado.

8 x-cf-client-id Un identificador de cadenas opacas que puede utilizarse paradiferenciar clientes.

Este valor es único para cada conexión.

9 cs-uri-stem La parte de la raíz de la URI, incluida la aplicación y lainstancia de la aplicación. Esto es lo que a veces se denominala cadena de conexión de FMS. Por ejemplo, rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st.

10 cs-uri-query La parte de la cadena de consulta de la URI que se incluye en lacadena de conexión.

11 c-referrer La URI del remitente.

12 x-page-url La URL de la página desde la que está vinculado SWF.

13 c-user-agent El valor del encabezado User-Agent de la solicitud. El encabezadoUser-Agent identifica el tipo de dispositivo que presentó la solicitud.Para obtener más información, consulte Encabezado usuario-agente (p. 245).

Los siguientes campos suelen tener valores solo para los eventos Play, Stop, Pause, Unpause y Seek.Para otros eventos, tienen un solo guion (-) como valor. Estos campos aparecen en el registro después delos campos de la tabla anterior y en el orden en el que se enumeran.

Versión de API 2016-09-29385

Amazon CloudFront Guía para desarrolladoresCargos por los registros de acceso

Campo Descripción

x-sname El nombre de la transmisión.

x-sname-query La cadena de consulta de la transmisión, de haberla.

x-file-ext El tipo de transmisión; por ejemplo, FLV.

x-sid El ID de transmisión. Se trata de un único identificador en número entero para laconexión.

Note

Los signos de interrogación (?) de los URL y las cadenas de consulta no están incluidas en elregistro.

A continuación, se muestra un ejemplo de archivo de registro para una distribución RTMP:

#Version: 1.0#Fields: date time x-edge-location c-ip x-event sc-bytes x-cf-status x-cf-client-id cs-uri-stem cs-uri-query c-referrer x-page-url c-user-agent x-sname x-sname-query x-file-ext x-sid2010-03-12 23:51:20 SEA4 192.0.2.147 connect 2014 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.longtailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 - - - -2010-03-12 23:51:21 SEA4 192.0.2.222 play 3914 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.longtailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 myvideo p=2&q=4 flv 12010-03-12 23:53:44 SEA4 192.0.2.4 stop 323914 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.longtailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 dir/other/myvideo p=2&q=4 flv 12010-03-12 23:53:44 SEA4 192.0.2.103 play 8783724 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.longtailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 dir/favs/myothervideo p=42&q=14 mp4 22010-03-12 23:56:21 SEA4 192.0.2.199 stop 429822014 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.longtailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 dir/favs/myothervideo p=42&q=14 mp4 22010-03-12 23:59:44 SEA4 192.0.2.14 disconnect 429824092 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.longtailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 - - - -

Cargos por los registros de accesoEl registro de accesos es una característica opcional de CloudFront. No se aplica ningún cargo adicionalpor habilitar el registro de acceso. Sin embargo, sí se incurre en cargos de Amazon S3 por conceptode almacenamiento y acceso a los archivos en Amazon S3 (puede eliminarlos en cualquier momento).Para obtener más información acerca de los cargos aplicables a CloudFront, consulte Informes deCloudFront (p. 344).

Versión de API 2016-09-29386

Amazon CloudFront Guía para desarrolladoresCapturar solicitudes de la API con CloudTrail

Usar AWS CloudTrail para capturar las solicitudesenviadas a la API de CloudFront

CloudFront se integra con CloudTrail, un servicio de AWS que recopila información acerca de cadasolicitud que se envía a la API de CloudFront en su cuenta de AWS, incluidas las de sus usuarios de IAM.CloudTrail guarda periódicamente los archivos de registro de estas solicitudes en el bucket de Amazon S3que especifique. CloudTrail recopila información acerca de todas las solicitudes, independientemente de sise realizaron con la consola de CloudFront, la API de CloudFront, los SDK de AWS, la CLI de CloudFront ocualquier otro servicio, como AWS CloudFormation.

Puede utilizar la información de los archivos de registro de CloudTrail, para determinar las solicitudesque se realizaron a CloudFront, la dirección IP de origen desde la que se realizó cada solicitud, quién larealizó, cuándo, etcétera. Para obtener más información acerca de CloudTrail, incluido cómo configurarlo yhabilitarlo, consulte la AWS CloudTrail User Guide.

Note

CloudFront es un servicio global. Para ver las solicitudes de CloudFront en los registros deCloudTrail, debe actualizar un rastro existente para que incluya servicios globales. Para obtenermás información, consulte Actualización de un registro de seguimiento y Acerca de los eventos deservicios globales en la AWS CloudTrail User Guide.

Temas• Información de CloudFront en CloudTrail (p. 387)• Comprender las entradas de los archivos de registro de CloudFront (p. 388)

Información de CloudFront en CloudTrailCloudTrail se habilita en una cuenta de AWS al crearla. Cuando se produce una actividad en CloudFront,dicha actividad se registra en un evento de CloudTrail junto con los eventos de los demás servicios deAWS en el Event history (Historial de eventos). Puede ver, buscar y descargar los últimos eventos de lacuenta de AWS. Debido a que CloudFront es un servicio global, los eventos para el servicio se registran enUS East (N. Virginia). Para obtener más información, consulte Visualización de eventos con el historial deeventos de CloudTrail.

Para mantener un registro continuo de los eventos de la cuenta de AWS, incluidos los eventos deCloudFront, cree un registro de seguimiento. Su registro de seguimiento incluye eventos de servicioglobales. Un registro de seguimiento permite a CloudTrail enviar archivos de registro a un bucket deAmazon S3. De forma predeterminada, cuando se crea un registro de seguimiento en la consola, elregistro de seguimiento se aplica a todas las regiones e incluye eventos de servicio globales. El registrode seguimiento registra los eventos de todas las regiones de la partición de AWS y envía los archivos deregistro al bucket de Amazon S3 especificado. También puede configurar otros servicios de AWS paraanalizar y actuar en función de los datos de eventos recopilados en los logs de CloudTrail. Para obtenermás información, consulte:

• Introducción a la creación de registros de seguimiento• Servicios e integraciones compatibles con CloudTrail• Configuración de Amazon SNS Notifications para CloudTrail• Para obtener más información, consulte Recibir archivos de registro de CloudTrail de varias regiones y

Recepción de archivos de registro de CloudTrail de varias cuentas.

Versión de API 2016-09-29387

Amazon CloudFront Guía para desarrolladoresComprender las entradas de los

archivos de registro de CloudFront

CloudTrail registra todas las acciones de la API de CloudFront, que se documentan en laAmazon CloudFront API Reference. Por ejemplo, las llamadas a las API CreateDistribution,GetDistribution y ListInvalidations generan entradas en los archivos de log de CloudTrail.

Cada entrada de registro o evento contiene información acerca de quién generó la solicitud. La informaciónde identidad del usuario le ayuda a determinar lo siguiente:

• Si la solicitud se realizó con las credenciales del nodo raíz o del usuario de IAM.• Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.• Si la solicitud la realizó otro servicio de AWS.

Para obtener más información, consulte el elemento userIdentity de CloudTrail.

Comprender las entradas de los archivos de registrode CloudFrontCada archivo de registro con formato JSON de CloudTrail puede contener una o varias entradas deregistro. Una entrada de registro representa una única solicitud de cualquier origen e incluye informaciónacerca de la acción solicitada, incluidos todos los parámetros, la fecha y la hora de la acción, etcétera. Nose garantiza que las entradas de registro sigan un orden específico; es decir, no son un rastro del stackordenado de llamadas a la API.

El elemento eventName identifica la acción que se ha producido y la versión de la API que se utilizó pararealizar dicha acción. Por ejemplo, el siguiente valor eventName indica que una distribución web se haactualizado 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:

• Actualizar una configuración de distribución web. El valor de eventName es UpdateDistribution.• Enumerar distribuciones web asociadas a la cuenta actual. El valor de eventName esListDistributions.

• Obtener la configuración de una distribución web específica. El valor de eventName esGetDistribution.

• Crear una solicitud de lote de invalidación. El valor de eventName es CreateInvalidation.• Enumerar identidades de acceso de origen asociadas a la cuenta actual. El valor de eventName esListCloudFrontOriginAccessIdentities.

{ "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",

Versión de API 2016-09-29388

Amazon CloudFront Guía para desarrolladoresComprender las entradas de los

archivos de registro de CloudFront

"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": { "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 },

Versión de API 2016-09-29389

Amazon CloudFront Guía para desarrolladoresComprender las entradas de los

archivos de registro de CloudFront

"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 }, "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",

Versión de API 2016-09-29390

Amazon CloudFront Guía para desarrolladoresComprender las entradas de los

archivos de registro de CloudFront

"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", "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"] } },

Versión de API 2016-09-29391

Amazon CloudFront Guía para desarrolladoresMonitorizar la actividad de CloudFront en CloudWatch

"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" }]}

Monitorizar la actividad de CloudFront enCloudWatch

Amazon CloudFront se integra con las métricas de Amazon CloudWatch para que pueda monitorizar susitio web o aplicación. Actualmente, CloudFront ofrece seis métricas gratuitas que no cuentan para loslímites de CloudWatch. Al visualizar las métricas, puede especificar un intervalo de tiempo de tan solo unminuto para periodos dentro de las últimas dos semanas.

Visualizar métricas de una distribuciónPara ver las métricas de una distribución en la consola de CloudWatch

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

2. En el panel de navegación, haga clic en Monitoring and Alarms.3. En el panel CloudFront Metrics and Alarms From CloudWatch, especifique los siguientes valores:

From and To

Seleccione la fecha y la hora cuyas métricas de CloudWatch desea visualizar.Grado de detalle

Especifique el intervalo de los puntos de datos, por ejemplo, uno por minuto o por hora. Tengaen cuenta que el periodo que elija afecta a la granularidad disponible. Por ejemplo, si decideconsultar los datos de dos semanas, la granularidad más detallada de hora en hora; y si prefierever los datos de 24 horas, será de minuto en minuto.

Versión de API 2016-09-29392

Amazon CloudFront Guía para desarrolladoresRecibir notificaciones

Web Distribution

Seleccione la distribución cuyas métricas desea mostrar.4. Haga clic en Update Graph para actualizar el gráfico en función de la configuración especificada.

Recibir notificacionesPara recibir una notificación Amazon Simple Notification Service (Amazon SNS) basada en unamétrica de CloudFront

1. En la página CloudFront Metrics and Alarms From CloudWatch, expanda la lista de alarmas existentespara confirmar que la alarma que desee crear no exista todavía.

2. Haga clic en Create Alarm.3. En el cuadro de diálogo Create Alarm, especifique los valores siguientes:

Métrica

Seleccione la métrica para la que desea crear la alarma.Distribución

Seleccione la distribución de CloudFront para la que desea crear la alarma.Name of alarm

Escriba un nombre para la alarma.Send notification to

Elija el tema de Amazon SNS al que desea enviar las notificaciones si el estado de la métricaseleccionada dispara una alarma.

Whenever métrica valor del operador

Especifique cuándo CloudWatch debe disparar una alarma y enviar una notificación a la listade correo electrónico especificada. Por ejemplo, para recibir una notificación cuando la tasa deerrores 5xx supere el 1%, especifique lo siguiente:

Whenever Average of 5xxErrorRate > 1

Tenga en cuenta lo siguiente en relación con la especificación de valores para valor:• Escriba solo números enteros sin puntuación. Por ejemplo, para especificar mil, escriba 1000.• Para 4xx, 5xx y el total de tasas de error, el valor a especificar es un porcentaje.• Para solicitudes y bytes cargados y descargados, el valor debe especificarse en unidades, por

ejemplo, 1000000000 bytes.For at least x consecutive periods of periodo

Especifique por cuántos periodos consecutivos de la duración especificada la métrica debecumplir los criterios antes de que CloudWatch envíe una notificación. Al elegir un valor, debeencontrar un equilibrio adecuado entre un valor que produzca notificaciones frecuentes paraproblemas menores y notificaciones diferidas para problemas reales.

4. Si ha creado un nuevo tema Amazon SNS, al hacer clic en Create, Amazon SNS le envía un mensajede correo electrónico con información acerca del nuevo tema. Siga las instrucciones que se detallanen el correo electrónico.

Versión de API 2016-09-29393

Amazon CloudFront Guía para desarrolladoresDescargar datos en formato CSV

Descargar datos en formato CSVPuede descargar el informe CloudWatch Metrics en formato CSV. En esta sección se explica cómo hacerloy describe los valores del informe.

Para descargar el informe CloudWatch Metrics en formato CSV

1. Una vez en las métricas de CloudWatch, haga clic en CSV.2. En el cuadro de diálogo Opening file name, decida si abrir o guardar el archivo.

Información acerca del informeLas primeras filas del informe incluyen la siguiente información:

Version

La versión de informes de CloudFront.Informe

El nombre del informe.DistributionID

El ID de la distribución para la que ha solicitado el informe.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

La fecha y hora en ha solicitado el informe, en tiempo universal coordinado (UTC).Grado de detalle

El periodo de cada fila del informe, por ejemplo, ONE_MINUTE.

Datos del informe CloudWatch MetricsEl informe incluye los siguientes valores:

DistributionID

El ID de la distribución para la que ha solicitado el informe.FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución notiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.

TimeBucket

La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).

Versión de API 2016-09-29394

Amazon CloudFront Guía para desarrolladoresMétricas de Amazon CloudFront

Solicitudes

Cantidad total de solicitudes de todos los códigos de estado HTTP (por ejemplo, 200 o 404) y todoslos métodos (por ejemplo, GET, HEAD o POST) durante ese periodo.

BytesDownloaded

La cantidad de bytes que los espectadores han descargado mediante la distribución especificadadurante el periodo de tiempo definido.

BytesUploaded

La cantidad de bytes que los espectadores han cargado al origen mediante la distribución especificadadurante el periodo de tiempo definido.

TotalErrorRatePct

Solicitudes cuyo código de estado HTTP en la distribución en cuestión es un error 4xx o 5xx durante elperiodo especificado.

4xxErrorRatePct

Solicitudes cuyo código de estado HTTP en la distribución en cuestión es un error 4xx durante elperiodo especificado.

5xxErrorRatePct

Solicitudes cuyo código de estado HTTP en la distribución en cuestión es un error 5xx durante elperiodo especificado.

Métricas de Amazon CloudFrontEl espacio de nombres de AWS/CloudFront incluye las siguientes métricas.

Note

Solo se aplica una estadística, Average o Sum, a cada métrica. Sin embargo, todas lasestadísticas están disponibles a través de la consola, la API y AWS Command Line Interface. Enla tabla siguiente, cada métrica especifica la estadística aplicable a dicha métrica.

Métrica Descripción

Requests El número de solicitudes para todos los métodos HTTP ypara las solicitudes HTTP y HTTPS.

Estadísticas válidas: Sum

Unidades: ninguna

BytesDownloaded El número de bytes descargados por los visitantes paralas solicitudes GET, HEAD y OPTIONS.

Estadísticas válidas: Sum

Unidades: ninguna

BytesUploaded El número de bytes cargados en el origen conCloudFront mediante solicitudes POST y PUT.

Estadísticas válidas: Sum

Unidades: ninguna

Versión de API 2016-09-29395

Amazon CloudFront Guía para desarrolladoresDimensiones de métricas de CloudFront

Métrica Descripción

TotalErrorRate El porcentaje de todas las solicitudes para las que elestado de código HTTP es 4xx o 5xx.

Estadísticas válidas: Average

Unidades: porcentaje

4xxErrorRate El porcentaje de todas las solicitudes para las que elestado de código HTTP es 4xx.

Estadísticas válidas: Average

Unidades: porcentaje

5xxErrorRate El porcentaje de todas las solicitudes para las que elestado de código HTTP es 5xx.

Estadísticas válidas: Average

Unidades: porcentaje

Dimensiones de métricas de CloudFrontLas métricas de CloudFront utilizan el espacio de nombres de CloudFront y proporcionan métricas parados dimensiones:

Dimensión Descripción

DistributionId El ID de CloudFront de la distribución para la que deseamostrar métricas.

Region La región para la que desea mostrar métricas. Este valordebe ser Global. La dimensión Region es diferentede la región en la que se almacenan las métricas deCloudFront, que es US East (N. Virginia).

Versión de API 2016-09-29396

Amazon CloudFront Guía para desarrolladoresAutenticación

Autenticación y control de acceso deAWS para CloudFront

Para realizar cualquier operación en los recursos de CloudFront, como crear una distribución web oinvalidar un objeto, AWS Identity and Access Management (IAM) requiere que se autentique como usuariode AWS aprobado. Si está utilizando la consola de CloudFront, debe autenticar su identidad de AWSproporcionando su nombre de usuario y contraseña. Si accede a CloudFront de forma programada, suaplicación autentica su identidad con claves de acceso o firmando solicitudes.

Después de autenticar su identidad, IAM controla su acceso a AWS verificando que tiene permisos pararealizar operaciones y obtener acceso a los recursos. Si es un administrador de la cuenta, puede utilizarIAM para controlar el acceso de otros usuarios a los recursos que están asociados a dicha cuenta.

Este capítulo explica cómo utilizar AWS Identity and Access Management (IAM) y CloudFront para ayudara proteger sus recursos.

Temas

• Autenticación (p. 397)• Control de acceso (p. 398)

AutenticaciónPuede tener acceso a AWS como cualquiera de los siguientes tipos de identidades:

• Usuario de la cuenta raíz de AWS – Cuando crea por primera vez una cuenta de AWS, comienzaúnicamente por una identidad de inicio de sesión único que tiene acceso completo a todos los serviciosy recursos de AWS de la cuenta. Esta identidad recibe el nombre de usuario raíz de la cuenta de AWSy se obtiene acceso a ella iniciando sesión con la dirección de correo electrónico y la contraseña queutilizó para crear la cuenta. Le recomendamos que no utilice el usuario raíz en sus tareas cotidianas,ni siquiera en las tareas administrativas. En lugar de ello, es mejor ceñirse a la práctica recomendadade utilizar el usuario raíz exclusivamente para crear el primer usuario de IAM. A continuación, guardelas credenciales del usuario raíz en un lugar seguro y utilícelas únicamente para algunas tareas deadministración de cuentas y servicios.

• Usuario de IAM: un usuario de IAM es una identidad dentro de su cuenta de AWS que tiene permisospersonalizados específicos (por ejemplo, permisos para crear una distribución web in CloudFront).Puede utilizar un nombre de usuario de IAM y una contraseña para iniciar sesión en páginas webseguras de AWS, como la de Consola de administración de AWS, los foros de discusión de AWS o elAWS Support Center.

 

Además de un nombre de usuario y una contraseña, también puede generar claves de acceso paracada usuario. Puede utilizar estas claves cuando obtenga acceso a los servicios de AWS medianteprogramación, ya sea a través de uno de los varios SDK o mediante la AWS Command Line Interface(CLI). El SDK y las herramientas de CLI usan claves de acceso para firmar criptográficamente susolicitud. Si no utiliza las herramientas de AWS, debe firmar usted mismo la solicitud. CloudFront admiteSignature Version 4, un protocolo para autenticar solicitudes de API de entrada. Para obtener másinformación sobre las solicitudes de autenticación, consulte Signature Version 4 Signing Process en laAWS General Reference.

Versión de API 2016-09-29397

Amazon CloudFront Guía para desarrolladoresControl de acceso

 • Rol de IAM: Un rol de IAM es una identidad de IAM que se puede crear en la cuenta y que tiene

permisos específicos. Es similar a un usuario de IAM, pero no está asociado a una determinada persona.Un rol de IAM le permite obtener claves de acceso temporal que se pueden utilizar para tener accesoa los servicios y recursos de AWS. Los roles de IAM con credenciales temporales son útiles en lassiguientes situaciones:

 • Acceso de usuario federado: En lugar de crear un usuario de IAM, puede utilizar identidades de

usuario existentes de AWS Directory Service, del directorio de usuarios de su compañía o de unproveedor de identidades web. Esto se conoce como usuarios federados. AWS asigna un rol a unusuario federado cuando se solicita acceso a través de un proveedor de identidad. Para obtener másinformación acerca de los usuarios federados, consulte Usuarios federados y roles en la Guía delusuario de IAM.

 • Acceso al servicio de AWS: puede utilizar un rol de IAM en su cuenta para conceder permisos a un

servicio de AWS de forma que pueda tener acceso a los recursos de su cuenta. Por ejemplo, puedecrear un rol que permita a Amazon Redshift tener acceso a un bucket de Amazon S3 en su nombrey, a continuación, cargar los datos de ese bucket en un clúster de Amazon Redshift. Para obtenermás información, consulte Creating a Role to Delegate Permissions to an AWS Service en la Guía delusuario 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 realizansolicitudes de API de AWS. Es preferible hacerlo de este modo a almacenar claves de acceso en lainstancia EC2. Para asignar un rol de AWS a una instancia EC2 y ponerla a disposición de todas lasaplicaciones, cree un perfil de instancia asociado a la misma. Un perfil de instancia contiene el rol ypermite a los programas que se ejecutan en la instancia EC2 obtener credenciales temporales. Paraobtener más información, consulte Uso de un rol de IAM para conceder permisos a aplicaciones quese ejecutan en instancias Amazon EC2 en la Guía del usuario de IAM.

Control de accesoPara crear, actualizar, eliminar o enumerar recursos de CloudFront, necesita permisos para realizar laoperación y obtener acceso a los recursos correspondientes. Además, para realizar la operación de formaprogramada, necesita claves de acceso válidas.

En las secciones siguientes se describe cómo administrar los permisos para CloudFront:

• Información general acerca de la administración de permisos para sus recursos de CloudFront (p. 398)• Usar políticas basadas en identidad (políticas de IAM) para CloudFront (p. 401)• Permisos del API de CloudFront: referencia de acciones, recursos y condiciones (p. 407)

Información general acerca de la administración depermisos para sus recursos de CloudFront

Cada recurso de AWS es propiedad de una cuenta de AWS, y los permisos para crear o tener acceso a unrecurso se rigen por las políticas de permisos.

Versión de API 2016-09-29398

Amazon CloudFront Guía para desarrolladoresARN para recursos de CloudFront

Note

Un administrador de la cuenta (o usuario administrador) es un usuario que cuenta con privilegiosde administrador. Para obtener más información acerca de administradores, consulte IAM BestPractices en la Guía del usuario de IAM.

Al conceder permisos, puede decidir a quién concederlos, los recursos para los que los concede y lasacciones que se les permiten realizar.

Temas• ARN para recursos de CloudFront (p. 399)• Titularidad de los recursos (p. 399)• Administración del acceso a los recursos (p. 399)• Especificar elementos de políticas: recursos, acciones, efectos y entidades principales (p. 401)• Especificación de condiciones en una política (p. 401)

ARN para recursos de CloudFrontTodos los recursos de CloudFront (distribuciones RTMP y web, invalidaciones e identidades de acceso deorigen) utilizan el mismo formato para los Nombres de recursos de Amazon (ARN):

arn:aws:cloudfront::optional-account-id:*

CloudFront ofrece acciones de la API para trabajar con cada uno de estos tipos de recursos. Para obtenermás información, consulte Amazon CloudFront API Reference. Para consultar una lista de acciones y elARN a especificar para conceder o denegar permisos para ejecutar cada acción, visite Permisos del APIde CloudFront: referencia de acciones, recursos y condiciones (p. 407).

Titularidad de los recursosUna cuenta de AWS es la propietaria de los recursos que se crean en ella, independientemente de quiénlos haya creado. En concreto, el propietario de los recursos es la cuenta de AWS; de la entidad principal(es decir, la cuenta raíz, un usuario de IAM o un rol IAM) que autentica la solicitud de creación de recursos.

Los siguientes ejemplos ilustran cómo funciona:

• Si utiliza las credenciales de cuenta raíz de su cuenta de AWS para crear una distribución web, estacuenta 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 webpara ese usuario, el usuario puede crear una distribución. La cuenta de AWS que creó el usuario es lapropietaria de la distribución.

• Si crea un rol de IAM en su cuenta de AWS con permisos para crear una distribución web, cualquierpersona que pueda asumir el rol podrá crear una distribución web. Sin embargo, la propietaria de ladistribución será su cuenta de AWS, a la que pertenece el rol.

Administración del acceso a los recursosUna política de permisos especifica quién tiene acceso a qué. En esta sección se explican las opcionespara crear políticas de permisos para CloudFront. Para obtener información general sobre la sintaxis ydescripciones de las políticas de IAM, consulte la Referencia de políticas de IAM de AWS en la Guía delusuario de IAM.

Las políticas asociadas a una identidad de IAM se denominan "políticas basadas en identidad" (políticas deIAM) y las políticas asociadas a un recurso se denominan "políticas basadas en recursos". CloudFront soloadmite políticas basadas en identidad (políticas de IAM).

Versión de API 2016-09-29399

Amazon CloudFront Guía para desarrolladoresAdministración del acceso a los recursos

Temas• Políticas basadas en identidad (políticas de IAM) (p. 400)• Políticas basadas en recursos (p. 400)

Políticas basadas en identidad (políticas de IAM)Puede asociar políticas a identidades de IAM. Por ejemplo, puede hacer lo siguiente:

• Asociar una política de permisos a un usuario o grupo de su cuenta: un administrador de la cuentapuede utilizar una política de permisos asociada a un usuario determinado para concederle permisospara crear una distribución web.

• Asociar una política de permisos a un rol (conceder permisos entre cuentas): puede conceder permisospara realizar acciones de CloudFront a un usuario que haya sido creado en otra cuenta de AWS. Parahacerlo, asocie una política de permisos a un rol IAM y, a continuación, permita al usuario en la otracuenta asumir el rol. En el siguiente ejemplo se explica cómo funciona este proceso para dos cuentas deAWS, cuentas A y B:1. El administrador de la cuenta A crea un rol de IAM y asocia a dicho rol una política que concede

permisos de creación o acceso a recursos propiedad de la cuenta A.2. El administrador de la cuenta A asocia una política de confianza al rol. La política de confianza

identifica la cuenta B como la principal, que puede asumir el rol.3. El administrador de la cuenta B puede entonces delegar permisos para asumir el rol a usuarios o

grupos de la cuenta B. Esto permite a los usuarios de la cuenta B crear u obtener acceso a recursosde la cuenta A.

Para obtener más información acerca de cómo delegar permisos a usuarios de otra cuenta de AWS,consulte Access Management en la Guía del usuario de IAM.

La siguiente política de ejemplo permite un usuario realizar la acción CreateDistribution para crearuna distribución web 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 laconsola de CloudFront, consulte Permisos necesarios para usar la consola de CloudFront (p. 402). Paraobtener más información acerca de cómo asociar políticas a identidades de CloudFront, consulte Usarpolíticas basadas en identidad (políticas de IAM) para CloudFront (p. 401). Para obtener más informaciónacerca de los usuarios, grupos, roles y permisos, consulte Identities (Users, Groups, and Roles) en la Guíadel usuario de IAM.

Políticas basadas en recursosOtros servicios, como Amazon S3, admiten asociar políticas de permisos a recursos. Por ejemplo, puedeasociar una política a un bucket de S3 para administrar los permisos de acceso a dicho bucket. CloudFrontno admite asociar políticas a recursos. 

Versión de API 2016-09-29400

Amazon CloudFront Guía para desarrolladoresEspecificar elementos de políticas: recursos,

acciones, efectos y entidades principales

Especificar elementos de políticas: recursos, acciones,efectos y entidades principalesCloudFront incluye acciones de la API (consulte Amazon CloudFront API Reference) que puede utilizar encada recurso de CloudFront (consulte ARN para recursos de CloudFront (p. 399)). Puede conceder a unusuario o un usuario federado permiso para realizar alguna de estas acciones o todas.

A continuación, se indican los elementos básicos de la política:

• Recurso –: use un nombre de recurso de Amazon (ARN) para identificar el recurso al que se aplica lapolítica. Para obtener más información, consulte ARN para recursos de CloudFront (p. 399).

• Acción –: use palabras de clave de acción para identificar las operaciones del recurso que deseapermitir o denegar. Por ejemplo, en función del elemento Effect especificado, el permisocloudfront:CreateDistribution permite o deniega los permisos de usuario para realizar la acciónCreateDistribution de CloudFront.

• Efecto: especifique el efecto (permitir o denegar) cuando un usuario intente realizar la acción en elrecurso especificado. Si no concede acceso de forma explícita a una acción, el acceso se deniegaimplícitamente. También puede denegar explícitamente el acceso a un recurso para asegurarse de queun usuario no pueda obtener acceso a él, aunque otra política le conceda acceso.

• Entidad principal: en las políticas basadas en identidad (políticas de IAM), el usuario al que se asociaesta política es la entidad principal implícita. Para las políticas basadas en recursos, debe especificar elusuario, la cuenta, el servicio u otra entidad que desee que reciba permisos (se aplica solo a las políticasbasadas en recursos). CloudFront no admite políticas basadas en recursos.

Para obtener más información acerca de la sintaxis y descripciones de las políticas de IAM, consulte AWSIAM Policy Reference 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 queson aplicables, consulte Permisos del API de CloudFront: referencia de acciones, recursos ycondiciones (p. 407).

Especificación de condiciones en una políticaAl conceder permisos, puede utilizar el lenguaje de la política de IAM para especificar las condiciones enla que se debe aplicar una política. Por ejemplo, es posible que desee que solo se aplique una políticadespués de una fecha específica. Para obtener más información sobre cómo especificar condiciones en unlenguaje de política, consulte Condition en la Guía del usuario de IAM.

Para expresar condiciones, se usan claves de condición predefinidas. No hay claves de condiciónespecíficas para CloudFront. No obstante, existen claves de condición que se aplican a todo AWS quepuede utilizar cuando corresponda. Para ver una lista completa de claves generales de AWS, consulteAvailable Keys for Conditions en la Guía del usuario de IAM.

Usar políticas basadas en identidad (políticas deIAM) para CloudFront

En este tema se ofrecen ejemplos de políticas basadas en identidad que muestran cómo un administradorde una cuenta puede asociar políticas de permisos a identidades de IAM (es decir, usuarios, grupos yroles) y, de ese modo, conceder permisos para realizar operaciones en recursos de CloudFront.

Versión de API 2016-09-29401

Amazon CloudFront Guía para desarrolladoresPermisos necesarios para usar la consola de CloudFront

Important

Le recomendamos que consulte primero los temas de introducción en los que se explicanlos conceptos básicos y las opciones disponibles para administrar el acceso a sus recursosde CloudFront. Para obtener más información, consulte Información general acerca de laadministración de permisos para sus recursos de CloudFront (p. 398).

Temas• Permisos necesarios para usar la consola de CloudFront (p. 402)• Políticas administradas (predefinidas) por AWS para CloudFront (p. 404)• Ejemplos de políticas administradas por el cliente (p. 404)

A continuación se muestra una política de permisos. El Sid o ID de instrucción es opcional.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllCloudFrontPermissions", "Effect": "Allow", "Action": ["cloudfront:*"], "Resource": "*" } ]}

La política concede permisos para realizar todas las operaciones de CloudFront, suficiente para accedera CloudFront de forma programada. Si utiliza la consola para obtener acceso a CloudFront, consultePermisos necesarios para usar la consola de CloudFront (p. 402).

Para consultar una lista de acciones y el ARN a especificar para conceder o denegar permisos paraejecutar cada acción, visite Permisos del API de CloudFront: referencia de acciones, recursos ycondiciones (p. 407).

Permisos necesarios para usar la consola deCloudFrontPara conceder acceso total a la consola de CloudFront, debe conceder los permisos en la siguiente políticade permisos:

{ "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" ],

Versión de API 2016-09-29402

Amazon CloudFront Guía para desarrolladoresPermisos necesarios para usar la consola de CloudFront

"Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets", "s3:PutBucketPolicy" ], "Resource":"arn:aws:s3:::*" } ]}

Aquí se explica por qué son necesarios los permisos:

acm:ListCertificates

Al crear y actualizar distribuciones web a través desde la consola de CloudFront si desea configurarCloudFront para que requiera HTTPS entre el espectador y CloudFront o entre CloudFront y el origen,este permiso le permite ver una lista de certificados de ACM.

Este permiso no es necesario si no está utilizando la consola de CloudFront.cloudfront:*

Le permite realizar todas las acciones de CloudFront.cloudwatch:DescribeAlarms y cloudwatch:PutMetricAlarm

Le permite crear y ver alarmas de CloudWatch en la consola de CloudFront. Consulte tambiénsns:ListSubscriptionsByTopic y sns:ListTopics.

Estos permisos no son necesarios si no está utilizando la consola de CloudFront.cloudwatch:GetMetricStatistics

Permite a CloudFront mostrar métricas de CloudWatch en la consola de CloudFront.

Este permiso no es necesario si no está utilizando la consola de CloudFront.elasticloadbalancing:DescribeLoadBalancers

Al crear y actualizar las distribuciones web, le permite ver una lista de balanceadores de carga ElasticLoad Balancing en la lista de orígenes disponibles.

Este permiso no es necesario si no está utilizando la consola de CloudFront.iam:ListServerCertificates

Al crear y actualizar distribuciones web a través desde la consola de CloudFront si desea configurarCloudFront para que requiera HTTPS entre el espectador y CloudFront o entre CloudFront y el origen,este permiso le permite ver una lista de certificados del almacén de certificados de IAM.

Este permiso no es necesario si no está utilizando la consola de CloudFront.s3:ListAllMyBuckets

Al crear y actualizar las distribuciones web y RTMP, le permite realizar las siguientes operaciones:• Ver una lista de buckets de S3 en la lista de orígenes disponibles• Ver una lista de buckets de S3 en los que se puede ahorrar registros de acceso

Este permiso no es necesario si no está utilizando la consola de CloudFront.S3:PutBucketPolicy

Al crear o actualizar distribuciones que restringen el acceso a buckets de S3, le permite a unusuario actualizar la política del bucket para conceder acceso a la identidad de acceso de origen de

Versión de API 2016-09-29403

Amazon CloudFront Guía para desarrolladoresPolíticas administradas (predefinidas)

por AWS para CloudFront

CloudFront. Para obtener más información, consulte Restricción del acceso a contenido de AmazonS3 utilizando una identidad de acceso de origen (p. 110).

Este permiso no es necesario si no está utilizando la consola de CloudFront.sns:ListSubscriptionsByTopic y sns:ListTopics

Al crear alarmas de CloudWatch en la consola de CloudFront, le permite escoger un tema de SNSpara las notificaciones.

Estos permisos no son necesarios si no está utilizando la consola de CloudFront.waf:GetWebACL y waf:ListWebACLs

Le permite ver una lista de ACL web de AWS WAF en la consola de CloudFront.

Estos permisos no son necesarios si no está utilizando la consola de CloudFront.

Políticas administradas (predefinidas) por AWS paraCloudFrontAWS aborda muchos casos de uso comunes proporcionando políticas de IAM independientes creadas yadministradas por AWS. Estas políticas administradas por AWS conceden los permisos necesarios paracasos de uso comunes, lo que le evita tener que investigar los permisos que se necesitan. Para obtenermás información, consulte AWS Managed Policies en la Guía del usuario de IAM. Para CloudFront, IAMofrece dos políticas administradas:

• CloudFrontFullAccess: concede acceso total a todos los recursos de CloudFront.

Important

Si desea que CloudFront cree y guarde registros de acceso, debe conceder permisosadicionales. Para obtener más información, consulte Permisos necesarios para configurar elregistro y el acceso a sus archivos de registro (p. 373).

• 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 laspolíticas específicas. También puede crear sus propias políticas de IAM personalizadas con el finde conceder permisos para realizar operaciones de la API de CloudFront. Puede asociar estaspolíticas personalizadas a los usuarios o grupos de IAM que requieran esos permisos.

Ejemplos de políticas administradas por el clienteTambién puede crear sus propias políticas de IAM personalizadas con el fin de conceder permisos pararealizar acciones de la API de CloudFront. Puede adjuntar estas políticas personalizadas a los usuarios ogrupos de IAM que requieran los permisos especificados. Estas políticas funcionan cuando se utiliza la APIde CloudFront, los AWS SDK o la CLI de AWS. A continuación se muestran algunos ejemplos de permisosen algunos casos de uso comunes. Para saber más acerca de la política que concede acceso total ausuarios de CloudFront, consulte Permisos necesarios para usar la consola de CloudFront (p. 402).

Ejemplos• Ejemplo 1: permitir acceso de lectura a todas las distribuciones web (p. 405)• Ejemplo 2: permitir la creación, actualización y eliminación de distribuciones web (p. 405)

Versión de API 2016-09-29404

Amazon CloudFront Guía para desarrolladoresEjemplos de políticas administradas por el cliente

• Ejemplo 3: Permitir la creación y enumeración de invalidaciones (p. 406)

Ejemplo 1: permitir acceso de lectura a todas las distribucioneswebLa siguiente política de permisos concede al usuario permisos para ver todas las distribuciones web en laconsola de 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:::*" } ]}

Ejemplo 2: permitir la creación, actualización y eliminación dedistribuciones webLa siguiente política de permisos permite a los usuarios crear, actualizar y eliminar distribuciones web através de la consola de CloudFront:

{ "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",

Versión de API 2016-09-29405

Amazon CloudFront Guía para desarrolladoresEjemplos de políticas administradas por el cliente

"iam:ListServerCertificates", "sns:ListSubscriptionsByTopic", "sns:ListTopics", "waf:GetWebACL", "waf:ListWebACLs" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets", "s3:PutBucketPolicy" ], "Resource":"arn:aws:s3:::*" } ]}

cloudfront:ListCloudFrontOriginAccessIdentities permite a los usuarios conceder permisoautomáticamente a una identidad de acceso de origen existente para obtener acceso a objetos en unbucket de Amazon S3. Si desea que los usuarios puedan crear identidades de acceso de origen, tambiénes necesario conceder el permiso cloudfront:CreateCloudFrontOriginAccessIdentity.

Ejemplo 3: Permitir la creación y enumeración de invalidacionesLa siguiente política de permisos concede a los usuarios permiso para crear y enumerar invalidaciones.Incluye acceso de lectura a las distribuciones de CloudFront, ya que para crear y visualizar invalidaciones,primero se muestra la configuración de una distribución:

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "acm:ListCertificates", "cloudfront:GetDistribution", "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:::*" } ]}

Versión de API 2016-09-29406

Amazon CloudFront Guía para desarrolladoresReferencia de permisos de la API de CloudFront

Permisos del API de CloudFront: referencia deacciones, recursos y condiciones

Al configurar Control de acceso (p. 398) y escribir una política de permisos que se pueda asociar a unaidentidad de IAM (políticas basadas en identidad), puede utilizar las siguientes listas como referencia.La lista incluye cada operación de la API de CloudFront, las acciones correspondientes a las que puedeconceder permisos para realizar la acción y el recurso de AWS al que puede conceder los permisos. Lasacciones se especifican en el campo Action de la política y el valor del recurso se especifica en el campoResource de la política.

Puede utilizar claves de condiciones generales de AWS en sus políticas de CloudFront para expresarcondiciones. Para ver una lista completa de claves generales de AWS, consulte la sección Available Keysde la guía Guía del usuario de IAM.

Temas• Permisos necesarios para realizar acciones en distribuciones web (p. 407)• Permisos necesarios para realizar acciones en distribuciones RTMP (p. 408)• Permisos necesarios para realizar acciones en las invalidaciones (p. 410)• Permisos necesarios para acciones en identidades de acceso de origen (p. 410)• Permisos necesarios para acciones de CloudFront relacionadas con Lambda@Edge (p. 411)• Permisos necesarios para realizar acciones en etiquetas (p. 412)

Permisos necesarios para realizar acciones endistribuciones webCreateDistribution

Permisos necesarios (acción de la API):• cloudfront:CreateDistribution

• acm:ListCertificates (solo consola de CloudFront)• Solo si configura CloudFront para guardar los registros de acceso:

• s3:GetBucketAcl

• s3:PutBucketAcl

• La ACL de S3 del bucket debe concederle FULL_CONTROL.

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

Permisos necesarios (acción de la API):• cloudfront:CreateDistribution, cloudfront:TagResource• acm:ListCertificates (solo consola de CloudFront)• Solo si configura CloudFront para guardar los registros de acceso:

• s3:GetBucketAcl

• s3:PutBucketAcl

Versión de API 2016-09-29407

Amazon CloudFront Guía para desarrolladoresPermisos necesarios para realizaracciones en distribuciones RTMP

• La ACL de S3 del bucket debe concederle FULL_CONTROL.

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.GetDistribution

Permisos necesarios(acción de la API) cloudfront:GetDistribution,acm:ListCertificates: (solo consola de CloudFront)

Recursos: *GetDistributionConfig

Permisos necesarios(acción de la API) cloudfront:GetDistributionConfig,acm:ListCertificates: (solo consola de CloudFront)

Recursos: *ListDistributions

Permisos necesarios (acción de la API): cloudfront:ListDistributions

Recursos: *UpdateDistribution

Permisos necesarios (acción de la API):• cloudfront:UpdateDistribution

• acm:ListCertificates (solo consola de CloudFront)• Solo si configura CloudFront para guardar los registros de acceso:

• s3:GetBucketAcl

• s3:PutBucketAcl

• La ACL de S3 del bucket debe concederle FULL_CONTROL.

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

Permisos necesarios (acción de la API): cloudfront:DeleteDistribution

Recursos: *

Permisos necesarios para realizar acciones endistribuciones RTMPCreateStreamingDistribution

Permisos necesarios (acción de la API): cloudfront:CreateStreamingDistribution

Versión de API 2016-09-29408

Amazon CloudFront Guía para desarrolladoresPermisos necesarios para realizaracciones en distribuciones RTMP

Solo si configura CloudFront para guardar los registros de acceso:• s3:GetBucketAcl

• s3:PutBucketAcl

• La ACL de S3 del bucket debe concederle FULL_CONTROL.

Recursos: *

Si configura CloudFront para guardar los registros de acceso, tiene la opción de restringir el acceso aun bucket especificado.

CreateStreamingDistributionWithTags

Permisos necesarios (acción de la API): cloudfront:CreateStreamingDistribution,cloudfront:TagResource

Solo si configura CloudFront para guardar los registros de acceso:• s3:GetBucketAcl

• s3:PutBucketAcl

• La ACL de S3 del bucket debe concederle FULL_CONTROL.

Recursos: *

Si configura CloudFront para guardar los registros de acceso, tiene la opción de restringir el acceso aun bucket especificado.

GetStreamingDistribution

Permisos necesarios (acción de la API): cloudfront:GetStreamingDistribution

Recursos: *GetStreamingDistributionConfig

Permisos necesarios (acción de la API): cloudfront:GetStreamingDistributionConfig

Recursos: *ListStreamingDistributions

Permisos necesarios (acción de la API): cloudfront:ListStreamingDistributions

Recursos: *UpdateStreamingDistribution

Permisos necesarios (acción de la API): cloudfront:UpdateStreamingDistribution

Solo si configura CloudFront para guardar los registros de acceso:• s3:GetBucketAcl

• s3:PutBucketAcl

• La ACL de S3 del bucket debe concederle FULL_CONTROL.

Recursos: *

Si configura CloudFront para guardar los registros de acceso, tiene la opción de restringir el acceso aun bucket especificado.

DeleteStreamingDistribution

Permisos necesarios (acción de la API): cloudfront:DeleteDistribution

Recursos: *

Versión de API 2016-09-29409

Amazon CloudFront Guía para desarrolladoresPermisos necesarios para realizar

acciones en las invalidaciones

Permisos necesarios para realizar acciones en lasinvalidacionesCreateInvalidation

Permisos necesarios (acción de la API): cloudfront:CreateInvalidation

Recursos: *GetInvalidation

Permisos necesarios (acción de la API): cloudfront:GetInvalidation

Recursos: *ListInvalidations

Permisos necesarios (acción de la API): cloudfront:ListInvalidations

Recursos: *

Permisos necesarios para acciones en identidades deacceso de origenCreateCloudFrontOriginAccessIdentity

Permisos necesarios (acción de la API):cloudfront:CreateCloudFrontOriginAccessIdentity

Recursos: *GetCloudFrontOriginAccessIdentity

Permisos necesarios (acción de la API): cloudfront:GetCloudFrontOriginAccessIdentity

Recursos: *GetCloudFrontOriginAccessIdentityConfig

Permisos necesarios (acción de la API):cloudfront:GetCloudFrontOriginAccessIdentityConfig

Recursos: *ListCloudFrontOriginAccessIdentities

Permisos necesarios (acción de la API): cloudfront:ListDistributions

Recursos: *UpdateCloudFrontOriginAccessIdentity

Permisos necesarios (acción de la API):cloudfront:UpdateCloudFrontOriginAccessIdentity

Recursos: *DeleteCloudFrontOriginAccessIdentity

Permisos necesarios (acción de la API):cloudfront:DeleteCloudFrontOriginAccessIdentity

Versión de API 2016-09-29410

Amazon CloudFront Guía para desarrolladoresPermisos necesarios para acciones de

CloudFront relacionadas con Lambda@Edge

Recursos: *

Permisos necesarios para acciones de CloudFrontrelacionadas con Lambda@EdgePara utilizar Lambda@Edge, necesita los siguientes permisos de CloudFront que le habilitarán parapoder crear o actualizar una distribución que incluya disparadores de funciones Lambda. Para obtenerinformación acerca de los permisos de Lambda que necesita, consulte Setting IAM Permissions en elcapítulo "AWS Lambda@Edge" de la AWS Lambda Developer Guide.

CreateDistribution

Permisos necesarios (acción de la API):• cloudfront:CreateDistribution

• acm:ListCertificates (solo consola de CloudFront)• Solo si configura CloudFront para guardar los registros de acceso:

• s3:GetBucketAcl

• s3:PutBucketAcl

• La ACL de S3 del bucket debe concederle FULL_CONTROL.

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

Permisos necesarios (acción de la API):• cloudfront:CreateDistribution, cloudfront:TagResource• acm:ListCertificates (solo consola de CloudFront)• Solo si configura CloudFront para guardar los registros de acceso:

• s3:GetBucketAcl

• s3:PutBucketAcl

• La ACL de S3 del bucket debe concederle FULL_CONTROL.

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

Permisos necesarios (acción de la API):• cloudfront:UpdateDistribution

• acm:ListCertificates (solo consola de CloudFront)• Solo si configura CloudFront para guardar los registros de acceso:

• s3:GetBucketAcl

• s3:PutBucketAcl

• La ACL de S3 del bucket debe concederle FULL_CONTROL.

Versión de API 2016-09-29411

Amazon CloudFront Guía para desarrolladoresPermisos necesarios para realizar acciones en etiquetas

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.

Permisos necesarios para realizar acciones enetiquetasTagResource

Permisos necesarios (acción de la API): cloudfront:TagResource

Recursos: *UntagResource

Permisos necesarios (acción de la API): cloudfront:UntagResource

Recursos: *ListTagsForResource

Permisos necesarios (acción de la API): cloudfront:ListTagsForResource

Recursos: *

Versión de API 2016-09-29412

Amazon CloudFront Guía para desarrolladoresLímites generales

LímitesCloudFront está sujeto a los siguientes límites. Tenga en cuenta que Lambda@Edge también tiene límitesespecíficos, además de los límites predeterminados de CloudFront.

Temas• Límites generales (p. 413)• Límites generales de las distribuciones web (p. 414)• Límites de cookies incluidas en listas blancas (solo para distribuciones web) (p. 414)• Límites de las cadenas de consulta incluidas en listas blancas (solo para distribuciones web) (p. 415)• Límites de encabezados personalizados (solo para distribuciones web) (p. 415)• Límites de certificados SSL (solo para distribuciones web) (p. 415)• Límites de invalidaciones (p. 416)• Límites del cifrado en el nivel de campo (p. 416)• Límites de Lambda@Edge (p. 417)• Tiempo de espera de la solicitud (p. 418)• Límites de las distribuciones RTMP (p. 418)

Límites generales

Entidad Límite

Tasa de transferencia de datos por distribución 40 Gbps

Solicitar una ampliacióndel límite

Solicitudes por segundo por distribución 100 000

Solicitar una ampliacióndel límite

Etiquetas que se pueden añadir a una distribución RTMP o web deCloudFront

50

Objetos que puede ofrecer por distribución Sin límite

Longitud máxima de una solicitud, incluidos encabezados y cadenas deconsulta

20,480 bytes

Longitud máxima de una URL 8,192 bytes

Pares de claves de CloudFront activas para signatarios de confianza

Para obtener más información, consulte Especificar las cuentas de AWSque pueden crear URL firmadas y cookies firmadas (signatarios deconfianza) (p. 130).

2

Versión de API 2016-09-29413

Amazon CloudFront Guía para desarrolladoresLímites generales de las distribuciones web

Límites generales de las distribuciones web

Entidad Límite

Distribuciones web por cuenta de AWS

Para obtener más información, consulte Creación de una distribución (p. 29).

200

Solicitar una ampliacióndel límite

Tamaño máximo de archivo para solicitudes HTTP GET, POST y PUT 20 GB

Tiempo de espera de respuesta por origen

Para obtener más información, consulte Tiempo de espera de respuestadel origen (solo Amazon EC2, Elastic Load Balancing y otros orígenespersonalizados) (p. 36).

4-60 segundos

Solicitar una ampliacióndel límite

Compresión de archivos: intervalo de tamaños de archivos que CloudFrontcomprime

Para obtener más información, consulte Ofrecer archivos comprimidos (p. 81).

1 000 a 10 000 000bytes

Nombres de dominio alternativos (CNAME) por distribución

Para obtener más información, consulte Uso de URL personalizadas paraarchivos añadiendo nombres de dominio alternativos (CNAME) (p. 60).

100

Solicitar una ampliacióndel límite

Orígenes por distribución 25

Solicitar una ampliacióndel límite

Comportamientos de la caché por distribución 25

Solicitar una ampliacióndel límite

Límites de cookies incluidas en listas blancas (solopara distribuciones web)

Entidad Límite

Cookies en lista blanca por comportamiento de la caché

Para obtener más información, consulte Almacenamiento en caché decontenido en función de cookies (p. 199).

10

Solicitar una ampliacióndel límite

Cantidad total de bytes en nombres de cookies incluidos en listas blancas (noes aplicable si configura CloudFront para reenviar todas las cookies al origen)

512 menos la cantidadde cookies incluidas enlistas blancas

Versión de API 2016-09-29414

Amazon CloudFront Guía para desarrolladoresLímites de las cadenas de consulta incluidas

en listas blancas (solo para distribuciones web)

Límites de las cadenas de consulta incluidas enlistas blancas (solo para distribuciones web)

Entidad Límite

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 delista blanca en el mismo parámetro

512 caracteres

Comportamiento de las cadenas de consulta de lista blanca por caché

Para obtener más información, consulte Almacenar en caché contenido enfunción de parámetros de cadenas de consulta (p. 196).

10

Solicitar una ampliacióndel límite

Límites de encabezados personalizados (solo paradistribuciones web)

Entidad Límite

Encabezados en lista blanca por comportamiento de la caché

Para obtener más información, consulte Almacenamiento en caché decontenido en función de encabezados de solicitud (p. 201).

10

Solicitar una ampliacióndel límite

Encabezados personalizados: cantidad máxima de encabezadospersonalizados que puede configurar en CloudFront para que los reenvíe alorigen

Para obtener más información, consulte Reenviar encabezadospersonalizados al origen (solo para distribuciones web) (p. 249).

10 pares nombre-valor

Solicitar una ampliacióndel límite

Encabezados personalizados: longitud máxima de un nombre de encabezado 256 caracteres

Encabezados personalizados: longitud máxima de un valor de encabezado 1,783 caracteres

Encabezados personalizados: longitud máxima de todos los nombres yvalores de encabezados combinados

10,240 caracteres

Límites de certificados SSL (solo paradistribuciones web)

Entidad Límite

Certificados SSL por cuenta AWS al atender solicitudes HTTPS mediantedirecciones IP dedicadas (sin límite si las solicitudes HTTPS se atiendenmediante SNI)

2

Versión de API 2016-09-29415

Amazon CloudFront Guía para desarrolladoresLímites de invalidaciones

Entidad LímitePara obtener más información, consulte Usar HTTPS con CloudFront (p. 85). Solicitar una ampliación

del límite

Certificados SSL que pueden asociarse a una distribución web de CloudFront 1

Límites de invalidaciones

Entidad Límite

Invalidación de objetos: cantidad máxima de objetos permitidos en solicitudesde invalidación activas, excepto invalidaciones comodín

Para obtener más información, consulte Invalidar archivos (p. 73).

3,000

Invalidación de objetos: cantidad máxima de anulaciones comodín activaspermitidas

15

Invalidación de objetos: cantidad máxima de objetos que puede procesar unainvalidación comodín

Sin límite

Límites del cifrado en el nivel de campo

Entidad Límite

Longitud máxima del campo que se va a cifrar

Para obtener más información, consulte Uso del cifrado en el nivel de campopara ayudar a proteger la información confidencial (p. 115).

16 KB

Número máximo de campos en un cuerpo de la solicitud cuando estáconfigurado el cifrado en el nivel de campo

10

Longitud máxima de un cuerpo de la solicitud cuando está configurado elcifrado en el nivel de campo

1 MB

Número máximo de configuraciones de cifrado en el nivel de campo quepueden asociarse a una cuenta de AWS

10

Número máximo de perfiles de cifrado en el nivel de campo que puedenasociarse a una cuenta de AWS

10

Número máximo de claves públicas que se pueden añadir a una cuenta deAWS

10

Número máximo de campos para cifrar que se pueden especificar en un perfil 10

Número máximo de distribuciones de CloudFront que pueden asociarse a unaconfiguración de cifrado en el nivel de campo

20

Número máximo de asignaciones de perfil del argumento de consulta que sepueden incluir en una configuración de cifrado en el nivel de campo

5

Versión de API 2016-09-29416

Amazon CloudFront Guía para desarrolladoresLímites de Lambda@Edge

Límites de Lambda@EdgeLos límites de esta sección se aplican a Lambda@Edge. Estos límites se suman a los límites deCloudFront y Lambda predeterminados, que también se aplican. Consulte los límites de Lambdapredeterminados en la sección Límites de la AWS Lambda Developer Guide.

Note

Lambda escala dinámicamente la capacidad en respuesta al aumento del tráfico, según los límitesde la cuenta. Para obtener más información, consulte la sección Escalado de la AWS LambdaDeveloper Guide.

Además, tenga en cuenta que existen algunas otras restricciones al utilizar las funciones deLambda@Edge. Para obtener más información, consulte Requisitos y restricciones en funciones deLambda (p. 333).

Límites que difieren según el tipo de evento

Entidad Límites de los eventosde solicitud al origen yrespuesta del origen

Límites de los eventosde solicitud delespectador y respuestaal espectador

Asignación de recursos a la función Igual que los límites deLambda

128 MB

Tiempo de espera de la función. La función puederealizar llamadas de red a recursos como bucketsde Amazon S3, tablas de DynamoDB o instanciasde Amazon EC2 en las regiones de AWS.

30 segundos 5 segundos

Tamaño de una respuesta generada por unafunción de Lambda, incluidos los encabezados y elcuerpo

1 MB 40 KB

Tamaño comprimido máximo de una función deLambda y cualquier biblioteca incluida

50 MB 1 MB

Otros límites

Entidad Límite

Distribuciones por cuenta de AWS para los que puede crear disparadores 25

Solicitar una ampliacióndel límite

Disparadores por distribución 25

Solicitar una ampliacióndel límite

Solicitudes por segundo 10 000 (en cada región)

Solicitar una ampliacióndel límite

Ejecuciones simultáneas 1000 (en cada región)

Versión de API 2016-09-29417

Amazon CloudFront Guía para desarrolladoresTiempo de espera de la solicitud

Entidad LímitePara obtener más información, consulte Lambda Function ConcurrentExecutions en la AWS Lambda Developer Guide.

Solicitar una ampliacióndel límite

Tiempo de espera de la solicitudEntidad Límite

Tiempo de espera de la solicitud 30 segundos

Solicitar una ampliacióndel límite

Límites de las distribuciones RTMPEntidad Límite

Distribuciones RTMP por cuenta de AWS

Para obtener más información, consulte Trabajar con distribuciones deRTMP (p. 270).

100

Solicitar una ampliacióndel límite

Versión de API 2016-09-29418

Amazon CloudFront Guía para desarrolladoresDocumentación adicional de Amazon CloudFront

Recursos de Amazon CloudFrontAunque es bastante sencillo de utilizar, CloudFront incluye numerosas funcionalidades. Los recursos quese enumeran aquí puede ayudarle a obtener más información acerca de CloudFront.

Temas• Documentación adicional de Amazon CloudFront (p. 419)• Cómo obtener soporte (p. 419)• Herramientas para desarrolladores de CloudFront y SDK (p. 420)• Sugerencias adicionales del blog de Amazon Web Services (p. 420)• Invalidar objetos (p. 420)• Herramientas y ejemplos de código para configurar contenido privado (p. 421)

Documentación adicional de Amazon CloudFrontLos recursos relacionados siguientes pueden serle de ayuda cuando trabaje con este servicio.

• Amazon CloudFront API Reference: ofrece descripciones completas de las acciones, parámetros y tiposde datos de la API, y una lista de errores que el servicio devuelve.

• Novedades de CloudFront: anuncios de nuevas características de CloudFront y ubicaciones de bordeañadidas recientemente.

• Documentación técnica sobre Amazon Simple Storage Service (S3): información detallada del serviciode Amazon S3, incluidos los aspectos básicos de la introducción, una descripción general del servicio yreferencias sobre la programación y sobre la API.

• Información del producto Amazon CloudFront: la página web principal con información acerca deCloudFront, incluido características y precios.

• Términos de uso: información detallada sobre nuestros derechos de autor y marca comercial, y sucuenta, licencia y acceso al sitio, entre otros temas.

Cómo obtener soporteHay diversas formas de obtener soporte en CloudFront.

• Foros de debate: un foro de la comunidad en el que los desarrolladores pueden debatir aspectostécnicos relacionados con CloudFront.

• Centro de AWS Support: este sitio aúna información acerca de casos de soporte recientes y resultadosde AWS Trusted Advisor y comprobaciones de estado. Además, proporciona enlaces a foros de debate,preguntas técnicas más frecuentes, panel de salud e información acerca de planes de soporte de AWS.

• información acerca de AWS Premium Support: la página web principal con información acerca de AWSPremium Support, un canal de soporte individualizado y de respuesta rápida que le ayudará a crear yejecutar aplicaciones en AWS Infrastructure Services.

• Contacte con nosotros: enlaces para hacernos llegar sus preguntas sobre facturación o su cuenta. Parapreguntas técnicas, utilice los foros de debate o los enlaces de soporte previamente proporcionados.

Versión de API 2016-09-29419

Amazon CloudFront Guía para desarrolladoresHerramientas para desarrolladores de CloudFront y SDK

Herramientas para desarrolladores de CloudFront ySDK

Consulte la página de Herramientas para desarrolladores y encuentre enlaces a recursos paradesarrolladores que proporcionan documentación, código de muestra, notas de versiones y más, paraayudarle a crear aplicaciones innovadoras con AWS.

Además, Amazon Web Services ofrece kits de desarrollo de software para acceder a CloudFront deforma programada. Las bibliotecas de SDK automatizan una serie de tareas comunes, incluida la firmacriptográfica de las solicitudes de servicio, de nuevos intentos o la gestión de las respuestas de error.

• AWS SDK para Java: configuración y otra documentación.• AWS SDK para .NET: configuración y otra documentación.• AWS SDK para PHP: configuración y otra documentación.• AWS SDK para Ruby: configuración y otra documentación.

Sugerencias adicionales del blog de Amazon WebServices

En el blog de AWS encontrará diversas publicaciones que le ayudarán a utilizar CloudFront. Por ejemplo,consulte las siguientes entradas de blog acerca del uso de Drupal y WordPress con CloudFront.

• Aceleración del contenido de Drupal con Amazon CloudFront• Cómo acelerar su sitio de WordPress con Amazon CloudFront

Invalidar objetosAdemás de los métodos de invalidación que ofrece CloudFront, puede utilizar las siguientes herramientasde terceros para invalidar objetos.

Note

Estas herramientas han sido desarrolladas por proveedores externos que no están asociados conAmazon Web Services. Para obtener más información acerca de cómo utilizar estas herramientas,consulte la documentación de proveedor o contáctelo.

• CloudBerry Explorer: http://cloudberrylab.com• Ylastic: http://ylastic.com• Cyberduck: http://cyberduck.io• CloudFront Invalidator: https://github.com/swook/jQuery-CloudFront-Invalidator• CDN Planet CloudFront Purge Tool: http://www.cdnplanet.com/tools/cloudfront-purge-tool/

También puede buscar código de muestra en Github, https://github.com. Busque la frase CloudFrontinvalidation.

Versión de API 2016-09-29420

Amazon CloudFront Guía para desarrolladoresHerramientas y ejemplos de códigopara configurar contenido privado

Herramientas y ejemplos de código para configurarcontenido privado

Además de los métodos proporcionados por CloudFront, las siguientes herramientas de tercerosproporcionan formularios web para configurar la distribución de contenido privado. Algunas de lasherramientas también proporcionan formularios web para crear URL firmadas.

• CloudBerry: admite la configuración de una distribución de contenido privado y la creación de URLfirmadas.

Para obtener más información acerca del uso de CloudBerry para contenido privado de CloudFront,consulte How to Configure Private Content for CloudFront Streaming with CloudBerry.

Para obtener más información acerca de la configuración de un objeto raíz predeterminado, consulteHow to set CloudFront Default Object with CloudBerry S3 Explorer.

Para obtener más información acerca de contenido privado, consulte al artículo New Amazon CloudFrontFeature: Private Content del blog de AWS.

Si desea ver un ejemplo de cómo utilizar cookies firmadas, utilice su nombre de dominio en URL de objetosy siga usando el certificado SSL para el dominio cloudfront.net, consulte el artículo Using CloudFrontSigned Cookies del blog Space Vatican. Esto le permite utilizar un nombre de dominio alternativo conHTTPS sin los gastos que implica contar con direcciones IP dedicadas o tener limitaciones de SNI, tal ycomo se documenta en Usar nombres de dominio alternativos y HTTPS (p. 95).

Versión de API 2016-09-29421

Amazon CloudFront Guía para desarrolladores

Historial de revisión• Versión de API: 2017-10-30• Última actualización de la documentación: 20 de marzo de 2018

Cambio Descripción Fecha demodificación

Reorganización La Guía para desarrolladores de Amazon CloudFront se hareorganizado para simplificar la búsqueda de contenido relacionadoy mejorar la capacidad de escaneado y la navegación.

28 de junio de2018

Nuevacaracterística

Lambda@Edge le permite ahora personalizar más la entrega decontenido almacenado en un bucket de Amazon S3, permitiéndoleacceder a encabezados adicionales en lista blanca, incluidosencabezados personalizados, dentro de eventos producidos enel origen. Para obtener más información, consulte estos ejemplosque muestran la personalización del contenido en función de laubicación del espectador y del tipo de dispositivo del espectador.

20 de marzo de2018

Nuevacaracterística

Ahora puede utilizar Amazon CloudFront para negociar conexionesHTTPS con los orígenes utilizando el Algoritmo de firma digital decurva elíptica (ECDSA). ECDSA utiliza claves más pequeñas queson más rápidas, aunque, tan seguras como el algoritmo de RSAmás antiguo. Para obtener más información, consulte ProtocolosSSL/TLS y cifrados soportados para comunicación entre CloudFronty su origen y Acerca de los cifrados RSA y ECDSA.

15 de marzo de2018

Nuevacaracterística

Lambda@Edge le permite personalizar respuestas de errorrecibidas desde el origen, ya que le permite ejecutar funcionesde Lambda como respuesta a los errores HTTP que AmazonCloudFront reciba desde el origen. Para obtener más información,consulte los ejemplos que muestran los redireccionamientos a otraubicación y la generación de respuestas con el código de estado200 (OK).

21 de diciembrede 2017

Nuevacaracterística

Una nueva capacidad de CloudFront, el cifrado en el nivel decampo, le permite mejorar aún más la seguridad de los datosconfidenciales, como números de tarjetas de crédito o datospersonales como números de la seguridad social. Para obtener másinformación, consulte Uso del cifrado en el nivel de campo paraayudar a proteger la información confidencial (p. 115).

14 de diciembrede 2017

Historialde revisiónarchivado

Se archivó el historial de revisión más antiguo. Diciembre de2017

Versión de API 2016-09-29422

Amazon CloudFront Guía para desarrolladores

AWS GlossaryFor the latest AWS terminology, see the AWS Glossary in the AWS General Reference.

Versión de API 2016-09-29423