0% encontró este documento útil (0 votos)
3 vistas543 páginas

Amazon CloudFront 2021

La 'Guía para desarrolladores de Amazon CloudFront' proporciona información detallada sobre cómo configurar y utilizar CloudFront para la entrega de contenido, incluyendo casos de uso, acceso, precios y políticas de caché. También abarca aspectos técnicos como la creación de distribuciones, el uso de orígenes, la gestión de contenido y la optimización del almacenamiento en caché. Además, se incluyen instrucciones sobre la configuración de acceso seguro y la restricción de contenido, así como la solución de problemas comunes.

Cargado por

lmendiolag
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas543 páginas

Amazon CloudFront 2021

La 'Guía para desarrolladores de Amazon CloudFront' proporciona información detallada sobre cómo configurar y utilizar CloudFront para la entrega de contenido, incluyendo casos de uso, acceso, precios y políticas de caché. También abarca aspectos técnicos como la creación de distribuciones, el uso de orígenes, la gestión de contenido y la optimización del almacenamiento en caché. Además, se incluyen instrucciones sobre la configuración de acceso seguro y la restricción de contenido, así como la solución de problemas comunes.

Cargado por

lmendiolag
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 543

Amazon CloudFront

Guía para desarrolladores

Amazon CloudFront: Guía para desarrolladores


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

Las marcas comerciales y la imagen comercial de Amazon no se pueden utilizar en relación con ningún producto
o servicio que no sea de Amazon, de ninguna manera que pueda causar confusión entre los clientes y de ninguna
manera que menosprecie o desacredite a Amazon. Todas las demás marcas comerciales que no son propiedad de
Amazon son propiedad de sus respectivos propietarios, que pueden o no estar afiliados, conectados o patrocinados
por Amazon.
Amazon CloudFront Guía para desarrolladores

Table of Contents
¿Qué es Amazon CloudFront? .............................................................................................................. 1
Cómo configurar CloudFront para entregar contenido ....................................................................... 1
Casos de uso ............................................................................................................................ 3
Acelerar la entrega de contenidos de sitios web estáticos ......................................................... 3
Distribuir vídeo bajo demanda o en streaming ......................................................................... 4
Cifrar campos específicos a través del procesamiento del sistema ............................................. 4
Personalizar en el borde ...................................................................................................... 4
Distribuir contenido privado mediante personalizaciones de Lambda@Edge ................................. 4
Cómo CloudFront entrega el contenido .......................................................................................... 5
Cómo CloudFront entrega contenido a sus usuarios ................................................................ 5
Cómo funciona CloudFront con las cachés de borde regionales ................................................. 6
Ubicaciones e intervalos de direcciones IP de servidores de borde de CloudFront ................................. 7
Acceso a CloudFront .................................................................................................................. 7
Cómo empezar a utilizar Amazon CloudFront ................................................................................. 8
AWS Identity and Access Management (IAM) ................................................................................. 8
Precios de CloudFront ................................................................................................................. 8
Paquete de ahorros .......................................................................................................... 10
Elegir la clase de precio para una distribución de CloudFront ................................................... 14
Configuración ................................................................................................................................... 15
Suscríbase a AWS .................................................................................................................... 15
Acceso a la cuenta ................................................................................................................... 15
Acceso a la consola .......................................................................................................... 16
Acceso a la API, la CLI de AWS, las herramientas de AWS para Windows PowerShell o los SDK
de AWS .......................................................................................................................... 16
Crear un usuario de IAM ........................................................................................................... 16
Configurar la interfaz de línea de comandos de AWS o las herramientas de AWS para Windows
PowerShell ............................................................................................................................... 18
Descargar un SDK de AWS ....................................................................................................... 18
Introducción ..................................................................................................................................... 19
Introducción a una distribución simple .......................................................................................... 19
Requisitos previos ............................................................................................................. 19
Paso 1: Cargue el contenido en Amazon S3 y conceda permisos para los objetos ....................... 20
Paso 2: Cree una distribución de CloudFront ........................................................................ 21
Paso 3: Acceda a su contenido a través de CloudFront .......................................................... 22
Introducción a AWS for WordPress ............................................................................................. 22
Requisitos previos ............................................................................................................. 23
Paso 1: Instalar el complemento ......................................................................................... 25
Paso 2: Configurar y usar CloudFront con el complemento ...................................................... 26
(Opcional) Desactivar la aceleración del sitio ........................................................................ 28
(Opcional) Quitar la aceleración del sitio y eliminar la distribución de CloudFront ......................... 29
(Opcional) Desactivar y eliminar el complemento ................................................................... 29
(Opcional) Crear una distribución de CloudFront para el contenido de Amazon Polly .................... 30
Solución de problemas ...................................................................................................... 31
Introducción a un sitio web seguro estático ................................................................................... 33
Información general de la solución ...................................................................................... 33
Implementación de la solución ............................................................................................ 34
Trabajo con distribuciones .................................................................................................................. 38
Información general de distribuciones .......................................................................................... 38
Acciones que puede usar con distribuciones ......................................................................... 39
Campos obligatorios para crear y actualizar distribuciones ...................................................... 39
Creación, actualización y eliminación de distribuciones ................................................................... 41
Pasos para crear una distribución ....................................................................................... 41
Creación de una distribución .............................................................................................. 42
Valores que especifica ....................................................................................................... 43

iii
Amazon CloudFront Guía para desarrolladores

Valores que se muestran ................................................................................................... 69


Prueba de una distribución ................................................................................................. 70
Actualización de una distribución ......................................................................................... 71
Etiquetado de una distribución ............................................................................................ 72
Eliminar una distribución .................................................................................................... 73
Uso de orígenes diferentes ........................................................................................................ 74
Uso de buckets de Amazon S3 para su origen ...................................................................... 75
Uso de buckets de Amazon S3 configurados como puntos de enlace de sitio web para su origen .... 76
Uso de un contenedor MediaStore o un canal MediaPackage para su origen .............................. 76
Uso de Amazon EC2 u otros orígenes personalizados ............................................................ 76
Uso de grupos de origen ................................................................................................... 77
Agregar CloudFront cuando tenga contenido de Amazon S3 ................................................... 78
Cambiar un bucket de Amazon S3 de región ........................................................................ 79
Uso de URL personalizadas ....................................................................................................... 80
Añadir un nombre de dominio alternativo .............................................................................. 80
Mover un nombre de dominio alternativo a una distribución de CloudFront diferente .................... 83
Eliminar un nombre de dominio alternativo ........................................................................... 86
Uso de comodines en los nombres de dominio alternativos que se agregan a CloudFront ............ 87
Requisitos para el uso de nombres de dominio alternativos .................................................... 87
Restricciones de uso de nombres de dominio alternativos ....................................................... 89
Uso de Websockets .................................................................................................................. 90
Cómo funciona el protocolo WebSocket ............................................................................... 90
Requisitos de WebSocket .................................................................................................. 90
Trabajo con políticas ......................................................................................................................... 92
Control de la clave de caché ...................................................................................................... 93
Descripción de las políticas de caché .................................................................................. 93
Creación de políticas de caché ........................................................................................... 98
Uso de las políticas de caché administradas ....................................................................... 101
Descripción de la clave de caché ...................................................................................... 103
Control de solicitudes de origen ................................................................................................ 105
Descripción de políticas de solicitud de origen ..................................................................... 106
Creación de políticas de solicitud de origen ......................................................................... 108
Uso de las políticas de solicitud de origen administrada ........................................................ 111
Uso de los encabezados HTTP de CloudFront ............................................................................ 113
Encabezados para determinar el tipo de dispositivo del lector ................................................ 113
Encabezados para determinar la ubicación del lector ............................................................ 114
Otros encabezados de CloudFront ..................................................................................... 114
Añadir, eliminar o sustituir contenido .................................................................................................. 115
Añadir y acceder al contenido ................................................................................................... 115
Actualización de contenido existente .......................................................................................... 115
Actualización de archivos existentes con versiones de nombres de archivos ............................. 116
Actualizar contenidos existentes con los mismos nombres de archivos .................................... 116
Eliminación de contenido para que CloudFront no lo distribuya ....................................................... 117
Personalización de las URL de archivo ...................................................................................... 117
Uso de su propio nombre de dominio (Example.com) ........................................................... 118
Uso de una barra final (/) en las URL ................................................................................ 118
Creación de URL firmadas para contenido restringido ........................................................... 118
Especificar un objeto raíz predeterminado ................................................................................... 118
Cómo especificar un objeto raíz predeterminado .................................................................. 119
Cómo funcionan los encabezados con objetos raíz predeterminados ....................................... 120
Cómo funciona CloudFront si no se define un objeto raíz ...................................................... 121
Invalidar archivos .................................................................................................................... 121
Elegir entre invalidar archivos y utilizar nombres de archivo con versiones ................................ 122
Determinar qué archivos invalidar ...................................................................................... 122
Especificar los archivos que invalidar ................................................................................. 122
Invalidar archivos con la consola ....................................................................................... 125
Invalidar archivos mediante la API de CloudFront ................................................................. 127

iv
Amazon CloudFront Guía para desarrolladores

Máximo de solicitud de invalidación simultánea .................................................................... 127


Cargos por invalidación de archivo .................................................................................... 127
Ofrecer archivos comprimidos ................................................................................................... 128
Configuración de una distribución de CloudFront para comprimir contenido .............................. 128
Uso de CloudFront para comprimir el contenido ................................................................... 129
Generación de respuestas de error personalizadas ...................................................................... 132
Configurar el comportamiento de respuestas de error ........................................................... 133
Creación de una página de error personalizada para códigos de estado HTTP específicos .......... 134
Almacenamiento de objetos y páginas de error personalizadas en diferentes lugares .................. 135
Cambio de códigos de respuesta devueltos por CloudFront ................................................... 135
Control de cuánto tiempo CloudFront almacena los errores en caché ...................................... 136
Configuración de acceso seguro y restricción de acceso a contenido ...................................................... 138
Uso de HTTPS con CloudFront ................................................................................................. 138
Exigir HTTPS entre lectores y CloudFront ........................................................................... 139
Exigir HTTPS en un origen personalizado ........................................................................... 141
Requiriendo HTTPS a un origen de Amazon S3 .................................................................. 144
Protocolos y cifrados admitidos entre lectores y CloudFront ................................................... 145
Protocolos y cifrados admitidos entre CloudFront y el origen .................................................. 148
Cargos por conexiones HTTPS ......................................................................................... 149
Usar nombres de dominio alternativos y HTTPS .......................................................................... 150
Elegir cómo CloudFront atiende las solicitudes HTTPS ......................................................... 150
Requisitos para la utilización de certificados SSL/TLS con CloudFront ..................................... 152
Cuotas al usar certificados SSL/TLS con CloudFront (solo HTTPS entre lectores y CloudFront) .... 155
Configurar nombres de dominio alternativos y HTTPS ........................................................... 157
Determinar el tamaño de la clave pública en un certificado SSL/TLS ....................................... 160
Ampliar las cuotas de certificados SSL/TLS ........................................................................ 160
Rotar certificados SSL/TLS ............................................................................................... 162
Volver de un certificado SSL/TLS personalizado al certificado de CloudFront predeterminado ....... 162
Cambiar de un certificado SSL/TLS personalizado con direcciones IP dedicadas a SNI ............... 163
Restricción de contenido con URL firmadas y cookies firmadas ...................................................... 164
Información general acerca de la distribución de contenido privado ......................................... 164
Lista de tareas para la distribución de contenido privado ....................................................... 166
Especificación de signatarios ............................................................................................ 166
Elegir entre URL firmadas y cookies firmadas ...................................................................... 173
Uso de URL firmadas ...................................................................................................... 174
Uso de cookies firmadas .................................................................................................. 188
Uso de comandos de Linux y OpenSSL para codificación y cifrado base64 .............................. 204
Ejemplos de código para URL firmadas .............................................................................. 204
Restricción del acceso al contenido de Amazon S3 ...................................................................... 223
Información general de la configuración de OAI ................................................................... 224
Crear una OAI de CloudFront y agregarla a la distribución ..................................................... 225
Concesión de permiso a la OAI para leer los archivos del bucket de Amazon S3 ....................... 227
Uso de una OAI en regiones de Amazon S3 que solo admiten autenticación Signature Version 4 .. 230
Restringir el acceso a los balanceadores de carga de aplicaciones ................................................. 230
Configuración de CloudFront para agregar un encabezado HTTP personalizado a las solicitudes .. 231
Configuración de un balanceador de carga de aplicaciones para que solo reenvíe solicitudes que
contengan un encabezado específico ................................................................................. 232
(Opcional) Mejore la seguridad de esta solución .................................................................. 236
Utilizar AWS WAF para controlar el acceso al contenido ............................................................... 237
Restricción geográfica de contenido ........................................................................................... 238
Uso de la restricción geográfica de CloudFront .................................................................... 238
Utilizar un servicio de geolocalización de terceros ................................................................ 240
Uso del cifrado en el nivel de campo para ayudar a proteger la información confidencial ..................... 241
Información general del cifrado en el nivel de campo ............................................................ 243
Configuración del cifrado en el nivel de campo .................................................................... 244
Descifrado de campos de datos en el origen ....................................................................... 248
Optimización del almacenamiento en caché y la disponibilidad ............................................................... 251

v
Amazon CloudFront Guía para desarrolladores

Almacenamiento en caché con ubicaciones de borde ................................................................... 251


Mejora de la tasa de aciertos de caché ...................................................................................... 252
Especificar cuánto tiempo CloudFront almacena en caché los objetos ..................................... 252
Uso del escudo de origen ................................................................................................ 252
Almacenamiento en caché en función de parámetros de cadenas de consulta ........................... 252
Almacenamiento en caché en función de valores de cookies .................................................. 253
Almacenamiento en caché en función de encabezados de solicitud ......................................... 254
No es necesario eliminar el encabezado Accept-Encoding al comprimir .................................. 254
Ofrecer contenido multimedia a través de HTTP .................................................................. 255
Uso del escudo de origen ........................................................................................................ 255
Casos de uso para el escudo de origen ............................................................................. 256
Elegir la región de AWS para Origin Shield ......................................................................... 259
Activación del escudo de origen ........................................................................................ 260
Estimación de los costos del escudo de origen .................................................................... 262
Alta disponibilidad del escudo de origen ............................................................................. 262
Cómo interactúa Origin Shield con otras características de CloudFront .................................... 263
Aumento de alta disponibilidad con conmutación por error ............................................................. 263
Creación de un grupo de origen ........................................................................................ 265
Control de los tiempos de espera de origen y los intentos ..................................................... 266
Utilizar la conmutación por error de origen con funciones de Lambda@Edge ............................ 267
Utilizar páginas de error personalizadas con conmutación por error de origen ........................... 268
Administración de vencimiento de caché .................................................................................... 268
Utilizar encabezados para controlar la duración del almacenamiento en caché de objetos
individuales .................................................................................................................... 269
Especificar durante cuánto tiempo CloudFront almacena objetos en caché ............................... 270
Agregar encabezados a los objetos con la consola de Amazon S3 .......................................... 274
Almacenamiento en caché y parámetros de cadenas de consulta ................................................... 274
Configuración de la consola y de la API para el reenvío de cadenas de consulta y
almacenamiento en caché ................................................................................................ 276
Optimización del almacenamiento en caché ........................................................................ 276
Parámetros de cadena de consulta y registros estándar de CloudFront (registros de acceso) ....... 277
Almacenamiento en caché de contenido en función de cookies ...................................................... 277
Almacenamiento en caché de contenido en función de encabezados de solicitud .............................. 280
Encabezados y distribuciones: información general .............................................................. 280
Selección de los encabezados para basar el almacenamiento en caché ................................... 281
Configuración de CloudFront para respetar la configuración CORS ......................................... 282
Configuración del almacenamiento en caché en función del tipo de dispositivo .......................... 282
Configuración del almacenamiento en caché en función del idioma del lector ............................ 283
Configurar el almacenamiento en caché en función de la ubicación del lector ............................ 283
Configurar el almacenamiento en caché en función del protocolo de la solicitud ......................... 283
Configuración del almacenamiento en caché para archivos comprimidos .................................. 283
Cómo afecta al rendimiento el almacenamiento en caché en función de los encabezados ............ 283
Cómo afectan al almacenamiento en caché las mayúsculas o minúsculas de los encabezados y
sus valores .................................................................................................................... 284
Encabezados que CloudFront devuelve al lector .................................................................. 284
Solución de problemas ..................................................................................................................... 285
Solucionar problemas de distribuciones ...................................................................................... 285
CloudFront devuelve un error InvalidViewerCertificate al intentar agregar un nombre de dominio
alternativo ...................................................................................................................... 285
No puedo ver los archivos de mi distribución ....................................................................... 286
Mensaje de error: Certificate: <id-certificado> is being used by CloudFront ............................... 288
Solucionar respuestas de error del origen ................................................................................... 288
Código de estado HTTP 400 (solicitud errónea) ................................................................... 288
Código de estado HTTP 500 (Error de ejecución de Lambda) ................................................ 289
Código de estado HTTP 502 (Puerta de enlace incorrecta) .................................................... 289
Código de estado HTTP 502 (Error de validación de Lambda) ................................................ 292
Código de estado HTTP 503 (Se ha superado el límite de Lambda) ........................................ 292

vi
Amazon CloudFront Guía para desarrolladores

Código de estado HTTP 503 (Servicio no disponible) ........................................................... 293


Código de estado HTTP 504 (tiempo de espera de gateway agotado) ..................................... 293
Pruebas de carga de CloudFront ............................................................................................... 297
Comportamiento de solicitudes y respuestas ....................................................................................... 298
Comportamiento de solicitudes y respuestas para orígenes de Amazon S3 ...................................... 298
Cómo procesa CloudFront las solicitudes HTTP y HTTPS ..................................................... 298
Cómo CloudFront procesa y reenvía solicitudes a su servidor de origen de Amazon S3 .............. 299
Cómo procesa CloudFront las respuestas de su servidor de origen de Amazon S3 .................... 303
Comportamiento de solicitudes y respuestas para orígenes personalizados ...................................... 305
Cómo CloudFront procesa y reenvía solicitudes a su servidor de origen personalizado ............... 305
Cómo CloudFront procesa las respuestas desde el servidor de origen personalizado .................. 315
Comportamiento de solicitudes y respuestas para grupos de origen ................................................ 319
Agregar encabezados personalizados a solicitudes de origen ......................................................... 319
Casos de uso de encabezados personalizados de origen ...................................................... 320
Configurar CloudFront para agregar encabezados personalizados a solicitudes de origen ........... 320
Encabezados personalizados que CloudFront no puede agregar a solicitudes de origen .............. 321
Configuración de CloudFront para reenviar el encabezado Authorization ........................... 321
Cómo se procesan los Range GET ........................................................................................... 322
Cómo CloudFront procesa los códigos de estado HTTP 3xx desde el origen .................................... 323
Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xx desde el
origen .................................................................................................................................... 323
Cómo CloudFront procesa los errores cuando las páginas de error personalizadas están
configuradas ................................................................................................................... 324
Cómo CloudFront procesa los errores cuando las páginas de error personalizadas no están
configuradas ................................................................................................................... 325
Códigos de estado HTTP 4xx y 5xx que CloudFront almacena en caché .................................. 327
Vídeo bajo demanda y en streaming ................................................................................................. 328
Acerca del vídeo en streaming: vídeo bajo demanda y streaming en directo ..................................... 328
Distribución de vídeo bajo demanda .......................................................................................... 329
Configuración de vídeo bajo demanda para Microsoft Smooth Streaming ................................. 329
Distribución de streaming de video en directo .............................................................................. 331
Distribución de vídeo con AWS Elemental MediaStore como origen ........................................ 331
Servir vídeo en directo formateado con AWS Elemental MediaPackage ................................... 333
Personalización con Lambda@Edge .................................................................................................. 337
Primeros pasos para la creación y uso de funciones de Lambda@Edge .......................................... 338
Tutorial: Creación de una función sencilla ........................................................................... 339
Configuración de permisos y roles de IAM .................................................................................. 349
Permisos de IAM necesarios para asociar funciones de Lambda con distribuciones de
CloudFront ..................................................................................................................... 349
Rol de ejecución de funciones para las entidades principales del servicio ................................ 350
Roles vinculados a servicios para Lambda@Edge ................................................................ 350
Escritura y creación de funciones .............................................................................................. 355
Creación de funciones para Lambda@Edge ........................................................................ 355
Creación de una función de Lambda@Edge en la consola de Lambda .................................... 356
Edición de una función de Lambda para Lambda@Edge ....................................................... 357
Creación de funciones de Lambda y desencadenadores de CloudFront mediante programación ... 359
Adición de disparadores ........................................................................................................... 359
Eventos de CloudFront que pueden desencadenar una función de Lambda .............................. 360
A continuación, se explica cómo decidir qué evento de CloudFront utilizar para desencadenar
una función de Lambda. ................................................................................................... 361
Agregar desencadenadores mediante la consola de Lambda ................................................. 362
Agregar desencadenadores mediante la consola de CloudFront ............................................. 363
Comprobación y depuración ..................................................................................................... 364
Prueba de sus funciones de Lambda@Edge ...................................................................... 365
Identificación de errores de función de Lambda en CloudFront ............................................... 365
Solución de problemas de respuestas no válidas de funciones de Lambda (errores de validación) . 368
Solución de errores de ejecución de funciones de Lambda .................................................... 369

vii
Amazon CloudFront Guía para desarrolladores

Determinación de la región de Lambda@Edge ................................................................... 369


Determinación de si su cuenta inserta registros en CloudWatch .............................................. 369
Métricas de CloudWatch y CloudWatch Logs .............................................................................. 370
Métricas de CloudWatch .................................................................................................. 370
Registros de CloudWatch ................................................................................................. 370
Eliminación de funciones y réplicas ............................................................................................ 371
Estructura de eventos .............................................................................................................. 372
Selección dinámica del origen ........................................................................................... 372
Eventos de solicitud ........................................................................................................ 372
Eventos de respuesta ...................................................................................................... 377
Trabajo con solicitudes y respuestas .......................................................................................... 383
Uso de funciones de Lambda@Edge con conmutación por error de origen ............................... 383
Generación de respuestas HTTP en los disparadores de solicitud ........................................... 383
Actualización de respuestas HTTP en disparadores de respuesta del origen ............................. 386
Acceso al cuerpo de una solicitud eligiendo la opción Include Body (Incluir cuerpo) .................... 387
Funciones de ejemplo .............................................................................................................. 387
Ejemplos generales ......................................................................................................... 388
Generación de respuestas: ejemplos .................................................................................. 391
Trabajar con cadenas de consulta: ejemplos ....................................................................... 393
Personalizar contenido por encabezados de tipo de dispositivo o país: ejemplos ....................... 397
Selección de origen dinámico basada en contenido: ejemplos ................................................ 401
Actualización de estados de error: ejemplos ........................................................................ 408
Acceso al cuerpo de la solicitud: ejemplos .......................................................................... 410
Requisitos y restricciones ......................................................................................................... 414
Distribuciones y asociaciones de CloudFront ....................................................................... 414
Desencadenadores de CloudFront para funciones de Lambda ............................................... 414
Registros de CloudWatch ................................................................................................. 415
Encabezados .................................................................................................................. 415
Códigos de estado HTTP ................................................................................................. 417
Configuración y tiempos de ejecución admitidos de la función Lambda .................................... 417
Cuotas ........................................................................................................................... 418
Microsoft Smooth Streaming ............................................................................................. 420
Network Access .............................................................................................................. 420
Parámetros de cadenas de consulta .................................................................................. 420
Tamaño máximo del cuerpo con la opción Include Body (Incluir cuerpo) ................................... 420
Etiquetado ...................................................................................................................... 420
URI ............................................................................................................................... 421
Codificación de los URI y las cadenas de consulta ............................................................... 421
Informes, métricas y registros ........................................................................................................... 422
Informes de uso y facturación de AWS para CloudFront ................................................................ 422
Informe de facturación de AWS para CloudFront .................................................................. 422
Informe de uso de AWS para CloudFront ........................................................................... 423
Interpretación de la factura de AWS y el informe de uso de AWS para CloudFront ..................... 424
Informes de la consola de CloudFront ........................................................................................ 426
Informes estadísticos de caché de CloudFront ..................................................................... 428
Informe de objetos populares de CloudFront ....................................................................... 432
Informe de remitentes principales de CloudFront .................................................................. 436
Informes de uso de CloudFront ......................................................................................... 439
Informe de lectores de CloudFront ..................................................................................... 444
Monitoreo de CloudFront con Amazon CloudWatch ...................................................................... 452
Visualización de métricas de CloudFront y Lambda @Edge ................................................... 452
Configurar las alarmas ..................................................................................................... 456
Descargar datos .............................................................................................................. 457
Obtención de métricas mediante la API .............................................................................. 459
Registro de CloudFront ............................................................................................................ 462
Solicitudes de registro ...................................................................................................... 462
Registro de la actividad del servicio ................................................................................... 463

viii
Amazon CloudFront Guía para desarrolladores

Uso de registros estándar (registros de acceso) ................................................................... 463


Registros en tiempo real .................................................................................................. 476
Captura de solicitudes a la API con CloudTrail .................................................................... 488
Seguimiento de los cambios en la configuración mediante AWS Config ........................................... 494
Configurar AWS Config con CloudFront .............................................................................. 494
Consultar historial de configuración de CloudFront ............................................................... 495
Seguridad ...................................................................................................................................... 496
Protección de los datos ............................................................................................................ 496
Cifrado en tránsito ........................................................................................................... 497
Cifrado en reposo ........................................................................................................... 498
Restricción del acceso a contenido .................................................................................... 498
Identity and Access Management .............................................................................................. 499
Autenticación .................................................................................................................. 499
Control de acceso ........................................................................................................... 500
Información general sobre la administración de acceso ......................................................... 500
Uso de políticas de IAM para CloudFront ............................................................................ 505
Referencia de permisos de la API de CloudFront ................................................................. 510
Registro y monitorización ......................................................................................................... 515
Validación de la conformidad .................................................................................................... 515
Prácticas recomendadas de conformidad de CloudFront ........................................................ 515
Resiliencia .............................................................................................................................. 517
Conmutación por error de CloudFront ................................................................................ 517
Seguridad de la infraestructura .................................................................................................. 517
Cuotas ........................................................................................................................................... 519
Cuotas generales .................................................................................................................... 519
Cuotas generales de distribuciones ............................................................................................ 519
Cuotas generales sobre políticas ............................................................................................... 520
Cuotas de conexiones WebSocket ............................................................................................. 521
Cuotas en las cookies de la lista blanca ..................................................................................... 522
Cuotas de cadenas de consulta incluidas en la lista blanca (solo para distribuciones web) ................... 522
Cuotas en encabezados personalizados ..................................................................................... 522
Cuotas en certificados SSL ...................................................................................................... 523
Cuotas de invalidaciones .......................................................................................................... 523
Cuotas en grupos de claves ..................................................................................................... 523
Cuotas de cifrado en el nivel de campo ...................................................................................... 524
Cuotas de Lambda@Edge ........................................................................................................ 524
Cuotas de tamaño en URI y cadena de consulta ................................................................. 525
Cuotas de tamaño para el cuerpo de la solicitud con la opción Include Body (Incluir cuerpo) ........ 526
Tiempo de espera de la solicitud ............................................................................................... 526
Información relacionada ................................................................................................................... 527
Documentación adicional de Amazon CloudFront ......................................................................... 527
Cómo obtener soporte ............................................................................................................. 527
SDK y herramientas para desarrolladores de CloudFront ............................................................... 528
Consejos del blog de Amazon Web Services .............................................................................. 528
Historial de revisión ......................................................................................................................... 529
Glosario de AWS ............................................................................................................................ 534

ix
Amazon CloudFront Guía para desarrolladores
Có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ámico
como archivos .html, .css, .js y archivos de imágenes a los usuarios. CloudFront entrega el contenido a
través de una red mundial de centros de datos que reciben el nombre de ubicaciones de borde. Cuando un
usuario solicita contenido que se distribuye con CloudFront, la solicitud se redirige a la ubicación de borde
que ofrece la mínima latencia (retraso de tiempo), de modo que el contenido se entregue con el mejor
rendimiento posible.

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


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

Por ejemplo, supongamos que distribuye una imagen desde un servidor web tradicional, en lugar de
hacerlo desde CloudFront. Por ejemplo, puede distribuir una imagen, sunsetphoto.png, utilizando la URL
http://example.com/sunsetphoto.png.

Sus usuarios podrían navegar fácilmente a esta URL y ver la imagen. Pero probablemente no sepan que
su solicitud se dirige de una red a otra (a través de la compleja colección de redes interconectadas que
componen Internet) hasta que se encuentra la imagen.

CloudFront agiliza la distribución de su contenido dirigiendo cada solicitud de usuario mediante la red
troncal de AWS a la ubicación de borde que mejor ofrezca su contenido. Por lo general, se trata de un
servidor de borde de CloudFront que proporciona la entrega más rápida al lector. Con la red de AWS se
reduce drásticamente la cantidad de redes que tienen que atravesar las solicitudes de los usuarios, lo que
mejora el rendimiento. Los usuarios experimentan una menor latencia (el tiempo que se tarda en cargar el
primer byte del archivo) y una mayor velocidad de transferencia de datos.

También logra mayor confiabilidad y disponibilidad, ya que las copias de los archivos (también conocidos
como objetos) ahora se guardan (o se almacenan en caché) en varias ubicaciones de borde en todo el
mundo.

Temas
• Cómo configurar CloudFront para entregar contenido (p. 1)
• Casos de uso CloudFront (p. 3)
• Cómo CloudFront entrega el contenido (p. 5)
• Ubicaciones e intervalos de direcciones IP de servidores de borde de CloudFront (p. 7)
• Acceso a CloudFront (p. 7)
• Cómo empezar a utilizar Amazon CloudFront (p. 8)
• AWS Identity and Access Management (IAM) (p. 8)
• Precios de CloudFront (p. 8)

Cómo configurar CloudFront para entregar


contenido
Debe crear una distribución de CloudFront para indicar a CloudFront desde dónde desea enviar el
contenido y los detalles acerca de cómo realizar un seguimiento y administrar la entrega de contenido.

1
Amazon CloudFront Guía para desarrolladores
Cómo configurar CloudFront para entregar contenido

A continuación, CloudFront utiliza equipos (servidores perimetrales) que se encuentran próximos a los
lectores para entregar dicho contenido rápidamente cuando alguien quiere verlo o utilizarlo.

Cómo configurar CloudFront para entregar su contenido

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

Un servidor de origen almacena la versión original y definitiva de sus objetos. Si ofrece contenido
a través de HTTP, su servidor de origen es un bucket de Amazon S3 o un servidor HTTP, como un
servidor web. Su servidor HTTP puede ejecutarse en una instancia Amazon Elastic Compute Cloud
(Amazon EC2) o en un servidor que usted administre; estos servidores también reciben el nombre de
orígenes personalizados.
2. Cargue sus archivos en sus servidores de origen. Los archivos, también conocidos como objetos,
suelen incluir páginas web, imágenes y archivos multimedia, pero pueden ser cualquier cosa que se
pueda servir a través de HTTP.

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

2
Amazon CloudFront Guía para desarrolladores
Casos de uso

3. Cree una distribución de CloudFront que le indique al mismo CloudFront desde qué servidores de
origen obtener los archivos cuando los usuarios los soliciten archivos a través de su aplicación o sitio
web. También debe especificar detalles como si desea que CloudFront registre todas las solicitudes y
que la distribución se habilite en cuanto se cree.
4. CloudFront asigna un nombre de dominio a su nueva distribución que puede ver en la consola de
CloudFront o que se devuelve en respuesta a una solicitud programada, por ejemplo, una solicitud de
la API. Si lo desea, puede añadir un nombre de dominio alternativo para usarlo en su lugar.
5. CloudFront envía la configuración de su distribución (pero no el contenido) a todas las ubicaciones
de borde o puntos de presencia (POP): conjuntos de servidores en centros de datos dispersos
geográficamente, en los que CloudFront almacena en caché las copias de los archivos.

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

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

También puede configurar su servidor de origen para agregar encabezados a los archivos, para indicar el
tiempo durante el que desea que los archivos se mantengan en la caché en las ubicaciones de borde de
CloudFront. De forma predeterminada, cada uno de los archivos permanece en una ubicación de borde
durante 24 horas antes de caducar. El tiempo de vencimiento mínimo es de 0 segundos y no hay un
tiempo máximo. Para obtener más información, consulte Administración de cuánto tiempo se mantiene el
contenido en una caché (vencimiento) (p. 268).

Casos de uso CloudFront


El 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 sitios web estáticos (p. 3)
• Distribuir vídeo bajo demanda o en streaming (p. 4)
• Cifrar campos específicos a través del procesamiento del sistema (p. 4)
• Personalizar en el borde (p. 4)
• Distribuir contenido privado mediante personalizaciones de Lambda@Edge (p. 4)

Acelerar la entrega de contenidos de sitios web


estáticos
CloudFront puede acelerar la entrega de su contenido estático (por ejemplo, imágenes, hojas de estilo,
JavaScript, etc.) para lectores de todo el mundo. Mediante el uso de CloudFront, puede aprovechar la red
troncal de AWS y los servidores perimetrales de CloudFront para ofrecer a los lectores una experiencia
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 Amazon
S3. El uso de S3 conjuntamente con CloudFront presenta una serie de ventajas, entre las que se incluye la
opción de usar la identidad de acceso de origen (OAI) para restringir fácilmente el acceso a su contenido
de S3.

3
Amazon CloudFront Guía para desarrolladores
Distribuir vídeo bajo demanda o en streaming

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

Distribuir vídeo bajo demanda o en streaming


CloudFront ofrece varias opciones para el streaming de archivos multimedia a lectores de todo el mundo,
tanto de archivos grabados y como de eventos en directo.

• Para el streaming de vídeo bajo demanda (VOD), puede usar CloudFront para transmitir formatos
comunes tales como MPEG DASH, Apple HLS, Microsoft Smooth Streaming y CMAF a cualquier
dispositivo.
• Para difusión de una transmisión en directo, puede almacenar en caché fragmentos multimedia en el
borde, de forma que varias solicitudes para el archivo de manifiesto que envía los fragmentos en el
orden correcto se puedan combinar, con el fin de reducir la carga en su servidor de origen.

Para obtener más información acerca de cómo entregar contenido en streaming con CloudFront, consulte
Vídeo bajo demanda y streaming de vídeo en directo con CloudFront (p. 328).

Cifrar campos específicos a través del procesamiento


del sistema
Cuando se configura HTTPS con CloudFront, ya tiene conexiones integrales seguras a servidores de
origen. Cuando se añade el cifrado en el nivel de campo, puede proteger datos específicos durante
su procesamiento en el sistema además de la seguridad HTTPS, de forma que solo determinadas
aplicaciones en el origen puedan ver los datos.

Para configurar el cifrado en el nivel de campo, agregue una clave pública a CloudFront y, a continuación,
especifique el conjunto de campos que desee cifrar con la clave. Para obtener más información, consulte
Uso del cifrado en el nivel de campo para ayudar a proteger la información confidencial (p. 241).

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

El uso de Lambda@Edge con CloudFront permite distintas formas de personalizar el contenido que
ofrece CloudFront. Para obtener más información acerca de Lambda@Edge y cómo crear e implementar
funciones con CloudFront, consulte Personalización en el borde con Lambda@Edge (p. 337). Para ver
una serie de ejemplos de código que puede personalizar para sus propias soluciones, consulte Funciones
de ejemplo de Lambda@Edge (p. 387).

Distribuir contenido privado mediante


personalizaciones de Lambda@Edge
El uso de Lambda@Edge puede ayudarle a configurar su distribución de CloudFront para ofrecer
contenidos privados desde su origen personalizado, como opción al uso de URL firmadas o cookies
firmadas.

4
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront entrega el contenido

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

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

Cómo CloudFront entrega el contenido


Después de una configuración inicial, CloudFront funciona conjuntamente con el sitio web o aplicación y
acelera la entrega de su contenido. En esta sección se explica cómo distribuye CloudFront su contenido
cuando los lectores lo solicitan.

Temas
• Cómo CloudFront entrega contenido a sus usuarios (p. 5)
• Cómo funciona CloudFront con las cachés de borde regionales (p. 6)

Cómo CloudFront entrega contenido a sus usuarios


Después de configurar CloudFront para distribuir su contenido, esto es lo que ocurre cuando los usuarios
solicitan sus archivos:

1. Un usuario obtiene acceso a su sitio web o aplicación y solicita uno o varios archivos, como un archivo
de imagen y un archivo HTML.
2. DNS dirige la solicitud a la ubicación de borde de CloudFront que mejor atiende la solicitud
(normalmente, el punto de presencia más cercano de CloudFront en términos de latencia) y dirige la
solicitud a esa ubicación de borde.
3. En el punto de presencia, CloudFront busca los archivos solicitados en su caché. Si los archivos se
encuentran en la caché, CloudFront los devuelve al usuario. Si los archivos no están en la caché, hace
lo siguiente:
a. CloudFront compara la solicitud con las especificaciones de su distribución y reenvía la solicitud de
los archivos al servidor de origen correspondiente según el tipo de archivo (por ejemplo, a su bucket
de Amazon S3 para archivos de imagen y a su servidor HTTP para los archivos HTML).
b. Los servidores de origen devuelven los archivos a la ubicación de borde.
c. En cuanto llega el primer byte desde el origen, CloudFront comienza a reenviar los archivos al
usuario. CloudFront también agrega los archivos a la caché en la ubicación de borde para la próxima
vez que alguien los solicite.

5
Amazon CloudFront Guía para desarrolladores
Cómo funciona CloudFront con
las cachés de borde regionales

Cómo funciona CloudFront con las cachés de borde


regionales
Los puntos de presencia (POP) de CloudFront (ubicaciones de borde) garantizan que el contenido popular
se pueda servir rápidamente a los lectores. CloudFront dispone también de cachés de borde regionales
que acercan más su contenido a los lectores, incluso cuando el contenido no es tan popular como para
permanecer en un punto de presencia, para ayudar a mejorar el rendimiento de dicho contenido.

Las cachés perimetrales regionales ayudan con todo tipo de contenidos, especialmente los que pierden
popularidad con el tiempo. Entre los ejemplos se incluyen contenido generado por usuarios como videos,
fotos o ilustraciones; recursos de e-commerce como fotos y videos de productos, así como noticias y
contenido relacionado con eventos que podrían hacerse populares de repente.

Cómo funcionan las cachés regionales

Las cachés de borde regionales son ubicaciones de CloudFront implementadas en todo el mundo y
cercanas a sus lectores. Están ubicadas entre el servidor de origen y los puntos de presencia: ubicaciones
de borde globales que distribuyen contenido directamente a los lectores. A medida que los objetos se
hacen menos populares, los puntos de presencia individuales podrían quitar dichos objetos para dejar
espacio a contenido más popular. Las cachés perimetrales regionales tienen una caché mayor que un
punto de presencia individual, de modo que los objetos permanecen más tiempo en la ubicación de caché
perimetral regional más cercana. De esta manera, es posible conservar un mayor volumen de contenido
más cerca de los lectores, lo que reduce la necesidad de que CloudFront regrese al servidor de origen y
mejora el rendimiento general para los lectores.

Cuando un espectador realiza una solicitud a su sitio web o mediante su aplicación, DNS dirige la solicitud
al punto de presencia que puede distribuir mejor la solicitud del usuario. Esta ubicación suele ser la
ubicación de borde de CloudFront más cercana en términos de latencia. En el punto de presencia,
CloudFront busca los archivos solicitados en su caché. Si los archivos se encuentran en la caché,
CloudFront los devuelve al usuario. Si los archivos no están en la caché, los puntos de presencia buscan el
objeto en la caché perimetral regional más cercana.

6
Amazon CloudFront Guía para desarrolladores
Ubicaciones e intervalos de direcciones
IP de servidores de borde de CloudFront

En la caché de borde regional, CloudFront vuelve a buscar los archivos solicitados en su caché. Si los
archivos se encuentran en la caché, CloudFront reenvía los archivos al punto de presencia que los solicitó.
En cuanto el primer byte llega desde la caché de borde regional, CloudFront comienza a reenviar los
archivos al usuario. CloudFront también agrega los archivos a la caché en el punto de presencia para la
próxima vez que alguien los solicite.

Para los archivos no almacenados en caché en el punto de presencia o la ubicación de caché de borde
regional, CloudFront compara la solicitud con las especificaciones de sus distribuciones y reenvía la
solicitud de sus archivos al servidor de origen. Una vez que el servidor de origen devuelve los archivos a la
ubicación de caché de borde regional, se reenvían al punto de presencia y CloudFront reenvía los archivos
al usuario. En este caso, CloudFront también agrega los archivos a la caché en la ubicación de caché de
borde regional, además de agregarlos al punto de presencia para la próxima vez que un lector solicite los
archivos. Esto garantiza que todos los puntos de presencia de una región compartan una caché local, con
lo que no es necesario realizar varias solicitudes a los servidores de origen. CloudFront mantiene además
conexiones permanentes con los servidores de origen, de modo que los archivos se obtengan desde los
orígenes lo antes posible.
Note

• Las cachés perimetrales regionales tienen paridad de características con los puntos de
presencia. Por ejemplo, una solicitud de invalidación de la caché elimina un objeto tanto de
las cachés de los puntos de presencia como de las cachés perimetrales regionales antes de
caducar. La próxima vez que un lector solicite el objeto, CloudFront volverá al origen para
recuperar la última versión.
• Los métodos proxy PUT/POST/PATCH/OPTIONS/DELETE van directamente desde los puntos
de presencia al origen sin pasar por las cachés perimetrales regionales.
• Las solicitudes dinámicas, según se determinan en el momento de la solicitud, no fluyen a
través de las cachés de borde regionales, sino que van directamente al origen.

Ubicaciones e intervalos de direcciones IP de


servidores de borde de CloudFront
Para obtener una lista de las ubicaciones de los servidores de borde de CloudFront, consulte la página de
detalles del producto de Amazon CloudFront.

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

Para encontrar los intervalos de direcciones IP asociadas a servidores de borde de CloudFront, busque la
siguiente cadena en ip-ranges.json:

"service": "CLOUDFRONT"

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

Acceso a CloudFront
Puede acceder a Amazon CloudFront de las siguientes maneras:

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

7
Amazon CloudFront Guía para desarrolladores
Cómo empezar a utilizar Amazon CloudFront

• SDK de AWS: si utiliza un lenguaje de programación para el que AWS proporciona un SDK, puede usar
un SDK para obtener acceso a CloudFront. Los SDK simplifican la autenticación, se integran fácilmente
con su entorno de desarrollo y proporcionan acceso a los comandos de CloudFront. Para obtener más
información, consulte Herramientas para Amazon Web Services.
• API de CloudFront: si utiliza un lenguaje de programación para el que no exista un SDK, consulte la
Referencia de la API de Amazon CloudFront para obtener información acerca de las acciones de API y
cómo realizar solicitudes de API.
• Interfaz de línea de comandos de AWS: para obtener más información, consulte Configuración inicial de
la interfaz de línea de comandos de AWS en la Guía del usuario de la interfaz de línea de comandos de
AWS.
• AWS Tools for Windows PowerShell: para obtener más información, consulte Configuración de AWS
Tools for Windows PowerShell en la Guía del usuario de AWS Tools for Windows PowerShell.

Cómo empezar a utilizar Amazon CloudFront


Para obtener información acerca de cómo comenzar a utilizar Amazon CloudFront, consulte los temas
siguientes de esta guía:

• Configuración de Amazon CloudFront (p. 15), donde se explica cómo iniciar sesión en AWS, cómo
proteger el acceso a su cuenta de AWS y cómo establecer acceso mediante programación a CloudFront.
• Introducción a Amazon CloudFront (p. 19), que describe cómo crear una distribución que pueda
distribuir contenido a los lectores desde su origen, como un bucket de Amazon S3 o un sitio web, y, a
continuación, comprobar que funciona.

AWS Identity and Access Management (IAM)


Amazon CloudFront se integra con AWS Identity and Access Management (IAM), un servicio que permite a
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 pueden
crear una nueva distribución o actualizar la configuración de comportamiento de la caché.

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

• Administración de identidades y accesos en CloudFront (p. 499)


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

Precios de CloudFront
Amazon CloudFront se ha diseñado para que no tenga que pagar cuotas por adelantado ni tenga que
comprometerse con cantidades de contenido específicas. Al igual que ocurre con otros servicios de AWS,

8
Amazon CloudFront Guía para desarrolladores
Precios de CloudFront

pagará por uso, es decir, solo por el consumo realizado. Para obtener información sobre los precios,
consulte Precios de Amazon CloudFront.
Tip

Para evitar cargos inesperados por CloudFront (o cualquier servicio de AWS), puede utilizar AWS
Budgets. Con AWS Budgets, puede establecer umbrales de costos y recibir notificaciones por
correo electrónico o por tema de Amazon SNS cuando sus cargos reales o previstos superen un
umbral. Para obtener más información, consulte Administración de costos con AWS Budgets y
Creación de un presupuesto en la Guía del usuario de la administración de costos y facturación de
AWS. Para comenzar, diríjase a AWS Budgets en la consola.

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

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

9
Amazon CloudFront Guía para desarrolladores
Paquete de ahorros

1. Cargo por almacenamiento en un bucket de Amazon S3. Se cobran los cargos normales de
almacenamiento en Amazon S3 por almacenar objetos en su bucket. Los cargos aparecen en la sección
de Amazon S3 de su factura de AWS.
2. Cargo por distribución de objetos desde ubicaciones de borde. Se aplican cargos de CloudFront cuando
CloudFront responde a las solicitudes de sus objetos. Los cargos incluyen la transferencia de datos
para datos de WebSocket de servidor a cliente. Los cargos de CloudFront aparecen en la parte de
CloudFront de su factura de AWS como región -DataTransfer-Out-Bytes.
3. Cargo por envío de datos a su origen. Se le cobrarán cargos de CloudFront cuando los usuarios
transfieran datos a su origen, incluidas solicitudes DELETE, OPTIONS, PATCH, POST y PUT. Los cargos
incluyen la transferencia de datos para datos de WebSocket de cliente a servidor. Los cargos de
CloudFront aparecen en la parte de CloudFront de su factura de AWS como región -DataTransfer-Out-
OBytes.

Tenga en cuenta lo siguiente:

• También se aplica un recargo por las solicitudes HTTPS y un recargo adicional por las solicitudes
que también tengan habilitado el cifrado a nivel de campo o que utilizan Origin Shield (p. 255) como
una capa incremental de almacenamiento en caché. Para obtener más información sobre los precios,
consulte Precios de Amazon CloudFront.
• No se aplicarán cargos adicionales de CloudFront cuando se utilicen grupos de orígenes. Continúe
pagando las mismas cuotas de solicitud y las tasas de transferencia de datos de la misma forma que
cuando se utiliza CloudFront con cualquier otro origen de AWS o distinto de AWS. Para obtener más
información, consulte Uso de los grupos de origen de CloudFront (p. 77).

Paquete de ahorro de seguridad CloudFront


El paquete de ahorro de seguridad de CloudFront es una forma sencilla de ahorrar hasta un 30% en los
cargos de CloudFront en su factura de AWS cuando se compromete por adelantado. Cuando compra un
paquete de ahorros, también obtiene créditos para AWS WAF, un firewall de aplicaciones web que ayuda a
proteger su distribución de CloudFront frente a vulnerabilidades web comunes.

Para obtener más información, consulte las siguientes secciones. Para comprar un paquete de ahorros,
vaya a la página general del paquete de ahorros en la consola de CloudFront.

Secciones
• Descripción general del paquete de ahorros (p. 10)
• Ejemplo de paquete de ahorros (p. 11)
• Compra de un paquete de ahorros (p. 11)
• Visualización y actualización de sus paquetes de ahorros (p. 12)
• Permisos para administrar un paquete de ahorros (p. 12)
• Más información sobre paquetes de ahorros (p. 13)

Descripción general del paquete de ahorros


Así funciona el paquete de ahorros de seguridad de CloudFront:

1. Para comprar un paquete de ahorros, se compromete a pagar una cantidad mensual consistente
(dólares por mes) para CloudFront durante un año. Se le facturará el importe comprometido cada
mes, durante 12 meses, comenzando en el período de facturación en el que adquiera el paquete de
ahorros. Si compra un paquete de ahorros el último día del período de facturación, los cargos y créditos
comienzan el siguiente período de facturación.

10
Amazon CloudFront Guía para desarrolladores
Paquete de ahorros

2. A cambio de su compromiso, CloudFront aplica automáticamente créditos a su factura de AWS en cada


uno de los 12 períodos de facturación del plazo de un año. El valor de estos créditos es superior al
importe de pago comprometido, lo que da como resultado un descuento de hasta un 30% en el precio
estándar de CloudFront para el importe comprometido. Estos créditos compensan automáticamente los
cargos de CloudFront en su factura de AWS. Para obtener un ejemplo detallado, consulte la siguiente
sección.
3. Además de los créditos de CloudFront, obtendrá créditos para compensar los cargos por solicitud por
uso de AWS WAF. El importe de los créditos WAF de AWS es hasta el 10% del importe del compromiso
mensual de CloudFront. Para obtener más información acerca del uso de AWS WAF con CloudFront,
consulte Utilizar AWS WAF para controlar el acceso al contenido (p. 237).

Ejemplo de paquete de ahorros


Considere un escenario en el que los cargos por uso de CloudFront suelen ser de 600 USD al mes. Para
aprovechar al máximo el paquete de ahorro de seguridad de CloudFront, se compromete a pagar $420
por CloudFront cada mes durante un año. Esto es un 30% menos que los cargos de uso típicos (600
USD x 0,7). A cambio de este compromiso, CloudFront le ofrece créditos por valor de 600 USD que se
aplican a los cargos de CloudFront en su factura mensual de AWS para cada uno de los 12 períodos de
facturación siguientes. Estos créditos se aplican automáticamente a sus cargos de CloudFront, que siguen
apareciendo en la factura a las tarifas estándar. En efecto, pagará un costo de $420 por mes por 600 USD
al mes de uso de CloudFront.

Además, obtendrá 42 USD en créditos WAF de AWS para compensar los cargos de solicitud de AWS WAF
por usar AWS WAF con su distribución CloudFront.

Cuando compra un paquete de ahorro de seguridad de CloudFront con un compromiso mensual de $420,
su ahorro anual total estimado es de hasta $2664.

Compra de un paquete de ahorros


Para comprar un paquete de ahorros, vaya a la página de descripción general del paquete de ahorros en la
consola de CloudFront y elija Introducción.

En el primer paso, la consola muestra un importe de compromiso mensual recomendado basado en el


uso histórico de CloudFront durante los últimos meses. Puede elegir la pestaña Calculadora para utilizar
la calculadora de uso para introducir el uso estimado de CloudFront y recibir un importe de compromiso
mensual recomendado basado en sus estimaciones.

Después de ver su compromiso recomendado y elegir Siguiente, puede elegir la cantidad de su


compromiso mensual y si desea renovar automáticamente su plan de ahorros cada año. Puede ver un
resumen de los beneficios basado en el importe de su compromiso mensual.

11
Amazon CloudFront Guía para desarrolladores
Paquete de ahorros

Elija Siguiente para revisar y luego comprar su paquete de ahorro de seguridad CloudFront.

Visualización y actualización de sus paquetes de ahorros


Para ver o actualizar los paquetes de ahorros que compró, vaya a la página de inventario de paquetes
de ahorros en la consola de CloudFront. Esta página muestra los paquetes de ahorros que compró y le
permite activar o desactivar la renovación automática de un paquete de ahorros comprado.

Puede comprar más de un paquete de ahorros y puede tener varios paquetes de ahorros activos al mismo
tiempo. Si compra un paquete de ahorros y luego descubre que su uso mensual de CloudFront excede
constantemente los créditos del paquete, puede comprar otro paquete para obtener ahorros adicionales.

Permisos para administrar un paquete de ahorros


Para administrar un paquete de ahorro de seguridad de CloudFront, la identidad de IAM debe tener los
permisos necesarios. Las identidades con acceso completo a CloudFront (cloudfront:*) heredan estos
permisos automáticamente. Para otras identidades, puede agregar manualmente los siguientes permisos:

• Los siguientes permisos de solo lectura permiten a la identidad obtener información relacionada con los
paquetes de ahorros de seguridad existentes de CloudFront, incluida la información necesaria para ver
recomendaciones y ahorros estimados en la consola de CloudFront:
• cloudfront:ListSavingsPlans
• cloudfront:GetSavingsPlan
• cloudfront:ListRateCards
• cloudfront:ListUsages
• cloudfront:CreateSavingsPlan : permite que la identidad compre un paquete de ahorro de
seguridad de CloudFront.
• cloudfront:UpdateSavingsPlan : permite que la identidad active o deshabilite la renovación
automática de un paquete de ahorro de seguridad de CloudFront adquirido.

12
Amazon CloudFront Guía para desarrolladores
Paquete de ahorros

Más información sobre paquetes de ahorros


Utilice las siguientes preguntas y respuestas para ayudarle a comprender más detalles sobre los paquetes
de ahorro de seguridad de CloudFront.

¿Los créditos del paquete de ahorros se aplican a una distribución específica o a todas las distribuciones?

Los créditos se aplican a nivel de cuenta de AWS a todo el uso de CloudFront en la cuenta de AWS.
¿Los créditos se aplican a todos los tipos de uso de CloudFront?

Sí. Los créditos se aplican a todos los cargos de CloudFront, incluidos los cargos por transferencia de
datos, cargos de solicitud y cargos de Lambda @Edge.
¿Puedo utilizar un paquete de ahorro de seguridad de CloudFront con facturación unificada?

Sí, siempre que esté habilitado el uso compartido de créditos (puede verificarlo consultando la página
de preferencias de facturación en la consola de facturación y gestión de costos de AWS). Usted
compra el paquete de ahorros con la cuenta pagadora (cuenta de administración). Los créditos se
aplican primero a los cargos de CloudFront acumulados en la cuenta pagadora y, a continuación, a los
cargos de CloudFront acumulados en las cuentas de miembro, dependiendo de cuándo la cuenta se
une o abandona una organización. Para obtener más información sobre cómo se aplican los créditos
de AWS en cuentas individuales y múltiples, consulte los créditos de AWS en la Guía del usuario de
facturación y gestión de costos de AWS.
¿Qué sucede si no uso todos los créditos en un período de facturación determinado?

Los créditos se aplican a la factura de AWS cada período de facturación y deben utilizarse en ese
período de facturación. Si alguno de los créditos se deja sin utilizar al final del período de facturación,
caducarán. Los créditos no se arrastran al siguiente período de facturación.
¿Qué ocurre si mi uso de CloudFront o AWS WAF supera la cantidad de los créditos?

Los cargos de CloudFront y AWS WAF que se acumulan se compensan con los créditos del paquete
de ahorro de seguridad de CloudFront. Si su uso excede los créditos disponibles para ese período de
facturación, se le facturará la diferencia a las tarifas estándar.
¿Se prorratean los cargos o créditos por meses parciales?

No. Cuando compra un plan de ahorro de seguridad de CloudFront, el cargo se aplica a su factura
para el período de facturación actual. Del mismo modo, los créditos se aplican a los cargos del período
de facturación actual. Si compra un paquete de ahorros el último día del período de facturación, los
cargos y créditos comienzan el siguiente período de facturación (al día siguiente).
¿Qué sucede cuando caduca el paquete de ahorros?

Puede elegir si desea renovar automáticamente el paquete al final del plazo de un año. Si decide no
renovar automáticamente, el paquete de ahorros caduca después del plazo de un año. Cuando esto
sucede, los créditos ya no se aplican a su factura de AWS y se le cobrará el uso de CloudFront y AWS
WAF a tarifas estándar.
¿Puedo recibir notificaciones si mi uso de CloudFront supera la cantidad cubierta por los créditos del
paquete de ahorros?

Sí. Con AWS Budgets, puede establecer umbrales de coste o uso. Cuando sus cargos reales o
previstos para CloudFront superan un umbral, recibirá notificaciones por correo electrónico o por tema
de Amazon SNS. Puede crear un presupuesto personalizado filtrado para CloudFront y establecer
el importe del umbral presupuestario para el uso cubierto por su paquete de ahorro de seguridad de
CloudFront. Para obtener más información, consulte Administración de costos con AWS Budgets y
Creación de un presupuesto en la Guía del usuario de la administración de costos y facturación de
AWS. Para comenzar, diríjase a AWS Budgets en la consola.

13
Amazon CloudFront Guía para desarrolladores
Elegir la clase de precio para una distribución de CloudFront

¿Cómo aparece el paquete de ahorro de seguridad de CloudFront en mi factura?

Los cargos por el importe del compromiso aparecen en la sección Paquete de seguridad de
CloudFront de su factura mensual. Los créditos aparecen en la sección CloudFront y AWS WAF de su
factura con la descripción Uso cubierto por CloudFront Security Savings Bundle.

Para obtener más información, consulte Precios de Amazon CloudFront en el sitio web de AWS.

Elegir la clase de precio para una distribución de


CloudFront
CloudFront dispone de ubicaciones de borde en todo el mundo. Cada ubicación de borde tiene un costo
diferente y, por consiguiente, los cargos variarán en función de la ubicación de borde desde la que
CloudFront sirva sus solicitudes.

Las ubicaciones de borde de CloudFront se agrupan por regiones geográficas, y hemos agrupado las
regiones por clases de precios. La clase de precio predeterminada incluye todas las regiones. Hay otra
clase de precio que contiene la mayoría de las regiones (Estados Unidos, Canadá, Europa, Hong Kong,
Filipinas, Corea del Sur, Taiwán, y Singapur, Japón, India, Sudáfrica Oriente Medio), pero excluye las
más caras. La tercera clase de precio solamente contiene las regiones más económicas (Estados Unidos,
Canadá y Europa).

De forma predeterminada, CloudFront responde a las solicitudes de sus objetos solo según el rendimiento:
los objetos se ofrecen desde la ubicación de borde cuya latencia sea la menor para ese lector. Si está
dispuesto a aceptar latencias más altas para sus lectores en algunas regiones geográficas a cambio de
menor costo, puede elegir una clase de precios que no incluya todas las regiones de CloudFront. Aunque
CloudFront servirá los objetos solo desde ubicaciones de borde de la clase de precios seleccionada, lo
hará desde la que ofrezca la mínima latencia posible entre ellas. Sin embargo, algunos de los lectores,
en particular los de las regiones geográficas no incluidas en su clase de precios, pueden experimentar
latencias más altas que si el contenido se ofreciera con un plan que ofrezca todas las ubicaciones de borde
de CloudFront. Por ejemplo, si elige la clase de precio que incluya únicamente Estados Unidos y Europa,
los espectadores en Australia y en Asia pueden experimentar latencias más altas que si elige la clase de
precio que incluye Australia y Asia.

Si elige una clase de precios que no incluye todas las ubicaciones de borde, CloudFront igualmente podría
atender ocasionalmente solicitudes de contenido desde una ubicación de borde de una región no incluida
en su clase de precios. Si esto ocurre, no se le cobra la tarifa de la región más cara desde la que se
ofrecen sus objetos. En su lugar, se le cobrará la tarifa de la región más económica de la clase de precio
que haya elegido.

Puede elegir una clase de precios al crear o actualizar una distribución de CloudFront. Para obtener más
información, consulte Trabajo con distribuciones (p. 38).

Si va a crear o actualizar una distribución mediante la API de CloudFront, uno de los SDK de AWS o AWS
CloudFormation, consulte el tipo complejo DistributionConfig (busque PriceClass).

Para obtener más información acerca de los precios y las clases de precios de CloudFront, consulte
Precios de Amazon CloudFront.

14
Amazon CloudFront Guía para desarrolladores
Suscríbase a AWS

Configuración de Amazon CloudFront


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

Temas
• Suscríbase a AWS (p. 15)
• Acceso a la cuenta (p. 15)
• Crear un usuario de IAM (p. 16)
• Configurar la interfaz de línea de comandos de AWS o las herramientas de AWS para Windows
PowerShell (p. 18)
• Descargar un SDK de AWS (p. 18)

Suscríbase a AWS
Cuando se registra en AWS, su cuenta de AWS se registra automáticamente en todos los servicios de
AWS, incluido Amazon CloudFront. Solo se le cobrará por los servicios que utilice.

Si ya tiene una cuenta de AWS configurada, pase a Acceso a la cuenta (p. 15). De lo contrario, cree
una.

Para crear una cuenta de AWS

1. Abra https://portal.aws.amazon.com/billing/signup.
2. Siga las instrucciones en línea.

Parte del procedimiento de inscripción consiste en recibir una llamada telefónica e indicar un código de
verificación en el teclado del teléfono.

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 registrarse en S3. Para obtener más información,
consulte Inscribirse en Amazon S3.

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

• Consola de administración de AWS


• API de cada servicio
• Interfaz de línea de comandos de AWS (AWS CLI)
• Herramientas de AWS para Windows PowerShell
• AWS SDK

15
Amazon CloudFront Guía para desarrolladores
Acceso a la consola

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

Acceso a la consola
Para acceder a la consola de administración de AWS por primera vez, indique una dirección de correo
electrónico y una contraseña. Esta combinación de dirección de correo electrónico y contraseña se
denomina identidad raíz o credenciales de cuenta raíz. Después de acceder a su cuenta por primera vez,
le recomendamos que no vuelva a utilizar las credenciales de la cuenta raíz de nuevo para el uso diario.
En su lugar, debe crear nuevas credenciales mediante AWS Identity and Access Management. Para ello,
cree una cuenta de usuario para usted, un usuario de IAM y, a continuación, agregue este usuario de IAM
a un grupo IAM con permisos administrativos o concédalos al usuario de IAM. De este modo podrá tener
acceso a AWS mediante una dirección URL especial y las credenciales del usuario de IAM. Después podrá
agregar también otros usuarios de IAM y restringir su acceso a determinados recursos de la cuenta.
Note

Algunos complementos para el bloqueo de anuncios de los navegadores web interfieren en


las operaciones de la consola de Amazon CloudFront y pueden provocar comportamientos
impredecibles. 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 CLI de AWS, las herramientas de


AWS para Windows PowerShell o los SDK de AWS
Para utilizar la API, la CLI de AWS, 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 acceso
secreta, 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. Le recomendamos que inicie
sesión con sus credenciales de usuario de IAM en lugar de hacerlo con sus credenciales raíz. Para obtener
más información, consulte Administración de claves de acceso para usuarios de IAM en la Guía de usuario
de IAM.

Crear un usuario de IAM


Siga los procedimientos siguientes para crear un grupo de administradores, crear un usuario de IAM y
agregarlo después al grupo de administradores. Si se ha suscrito a AWS pero no ha creado un usuario
de IAM, puede crear uno en la consola de IAM. Si no está familiarizado con el uso de la consola, consulte
Trabajar con consola de administración de AWS para obtener información general.

Para crearse usted mismo un usuario administrador y agregarlo a un grupo de administradores


(consola)

1. Inicie sesión en la consola de IAM como propietario de la cuenta seleccionando Root user (Usuario
raíz) y escribiendo la dirección de correo electrónico de su cuenta de AWS. En la siguiente página,
escriba su contraseña.
Note

Le recomendamos que siga la práctica recomendada de utilizar el usuario de IAM


Administrator como se indica a continuación y guardar de forma segura las credenciales
del usuario raíz. Inicie sesión como usuario raíz únicamente para realizar algunas tareas de
administración de servicios y de cuentas.

16
Amazon CloudFront Guía para desarrolladores
Crear un usuario de IAM

2. En el panel de navegación, elija Users (Usuarios) y, a continuación, elija Add user (Añadir usuario).
3. En User name (Nombre de usuario), escriba Administrator.
4. Active la casilla de verificación situada junto al AWS Management Console access (Acceso a la
consola de administración de AWS). A continuación, seleccione Custom password (Contraseña
personalizada) y luego escriba la nueva contraseña en el cuadro de texto.
5. (Opcional) De forma predeterminada, AWS requiere que el nuevo usuario cree una nueva contraseña
la primera vez que inicia sesión. Puede quitar la marca de selección de la casilla de verificación
situada junto a User must create a new password at next sign-in (El usuario debe crear una nueva
contraseña en el siguiente inicio de sesión) para permitir al nuevo usuario restablecer su contraseña
después de iniciar sesión.
6. Elija Next: Permissions.
7. En Set permissions (Establecer persmisos), elija Add user to group (Añadir usuario a grupo).
8. Elija Create group (Crear grupo).
9. En el cuadro de diálogo Create group (Crear grupo), en Group name (Nombre del grupo) escriba
Administrators.
10. Elija Filter policies (Filtrar políticas) y, a continuación, seleccione AWS managed - job function
(Función de trabajo administrada por AWS) para filtrar el contenido de la tabla.
11. En la lista de políticas, active la casilla de verificación AdministratorAccess. A continuación, elija
Create group (Crear grupo).
Note

Debe activar el acceso de usuario y rol de IAM a Facturación antes de poder utilizar los
permisos AdministratorAccess para acceder a la consola de AWS Billing and Cost
Management. Para ello, siga las instrucciones que se indican en el paso 1 del tutorial sobre
cómo delegar el acceso a la consola de facturación.
12. Retroceda a la lista de grupos y active la casilla de verificación del nuevo grupo. Elija Refresh si es
necesario para ver el grupo en la lista.
13. Elija Next: Tags (Siguiente: Etiquetas).
14. (Opcional) Añadir metadatos al rol asociando las etiquetas como pares de clave-valor. Para obtener
más información sobre el uso de etiquetas en IAM, consulte Etiquetado de entidades de IAM en la
guía del usuario de IAM.
15. Elija Next: Review para ver la lista de suscripciones a grupos que se van a añadir al nuevo usuario.
Cuando esté listo para continuar, elija Create user (Crear usuario).

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

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 con la siguiente URL, donde your_account_id (el_id_de_su_cuenta) es
el 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 de cuenta de AWS será 123456789012:

https://your_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ña que acaba de crear. Cuando haya iniciado sesión, en la barra de navegación
se mostrará "your_user_name (el_nombre_de_usuario) @ your_account_id
(el_id_de_su_cuenta)".

17
Amazon CloudFront Guía para desarrolladores
Configurar la interfaz de línea de comandos de AWS
o las herramientas de AWS para Windows PowerShell

Si no desea que la dirección URL de la página de inicio de sesión contenga el ID de su cuenta de AWS,
puede crear un alias de cuenta.

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

1. En la consola de IAM, elija Dashboard (Panel) en el panel de navegación.


2. En el panel, elija Customize (Personalizar) 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/

Para verificar el enlace de inicio de sesión de los usuarios de IAM de su cuenta, abra la consola de IAM
y compruebe el valor de IAM users sign-in link (Enlace de inicio de sesión de los usuarios de IAM) en el
panel.

Para obtener más información acerca del uso de la IAM, consulte Administración de identidades y accesos
en CloudFront (p. 499).

Configurar la interfaz de línea de comandos de


AWS o las herramientas de AWS para Windows
PowerShell
La interfaz de la línea de comandos de AWS (CLI de AWS) es una herramienta unificada para administrar
los servicios de AWS. Para obtener más información sobre cómo instalar y configurar la CLI de AWS,
consulte Configuración inicial de la interfaz de línea de comandos de AWS en la Guía de usuario de la
interfaz de línea de comandos de AWS.

Si tiene experiencia con Windows PowerShell, es posible que prefiera utilizar las herramientas de AWS
para Windows PowerShell. Para obtener más información, consulte Configuración de las herramientas de
AWS para Windows PowerShell en la Guía del usuario de AWS Tools for Windows PowerShell.

Descargar un SDK de AWS


Si usa un lenguaje de programación para el que AWS proporciona un SDK, recomendamos utilizar
ese SDK en lugar de la API de Amazon CloudFront. Los SDK simplifican la autenticación, se integran
fácilmente en su entorno de desarrollo y proporcionan acceso sencillo a los comandos de CloudFront. Para
obtener más información, consulte Herramientas para crear en AWS.

18
Amazon CloudFront Guía para desarrolladores
Introducción a una distribución simple

Introducción a Amazon CloudFront


Comience con los pasos básicos para entregar su contenido con CloudFront mediante la creación de una
distribución de CloudFront sencilla, usando el complemento AWS for WordPress o creando un sitio web
estático seguro. Si ya tiene un sitio web de WordPress, le recomendamos que use el complemento AWS
for WordPress para crear una distribución de CloudFront.

Temas
• Introducción a una distribución sencilla de CloudFront (p. 19)
• Introducción al complemento AWS for WordPress (p. 22)
• Introducción a un sitio web seguro estático (p. 33)

Introducción a una distribución sencilla de


CloudFront
Los procedimientos de esta sección muestran cómo utilizar CloudFront para definir una configuración
básica que haga lo siguiente:

• Almacene las versiones originales de sus objetos en un solo bucket de Amazon Simple Storage Service
(Amazon S3)
• Hace que sus objetos sean accesibles para todo el mundo.
• Utilice el nombre de dominio de CloudFront en las URL de sus objetos (por ejemplo, http://
d111111abcdef8.cloudfront.net/index.html).
• Mantenga los objetos en ubicaciones de borde de CloudFront durante el período predeterminado de 24
horas (la duración mínima es de 0 segundos).

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

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

Temas
• Requisitos previos (p. 19)
• Paso 1: Cargue el contenido en Amazon S3 y conceda permisos para los objetos (p. 20)
• Paso 2: Cree una distribución de CloudFront (p. 21)
• Paso 3: Acceda a su contenido a través de CloudFront (p. 22)

Requisitos previos
Antes de comenzar, asegúrese de que ha completado los pasos que se detallan en Configuración de
Amazon CloudFront (p. 15).

19
Amazon CloudFront Guía para desarrolladores
Paso 1: Cargue el contenido en Amazon
S3 y conceda permisos para los objetos

Paso 1: Cargue el contenido en Amazon S3 y conceda


permisos para los objetos
Un bucket de Amazon S3 es un contenedor para archivos (objetos) o carpetas. CloudFront puede distribuir
casi cualquier tipo de archivo por usted utilizando un bucket de Amazon S3 como origen. Por ejemplo,
CloudFront puede distribuir texto, imágenes y vídeos. No hay un máximo para la cantidad de datos que
puede almacenar en Amazon S3.

De forma predeterminada, el bucket de Amazon S3 y todos los archivos que contiene son privados: solo la
cuenta de AWS que creó el bucket tiene permisos para leer o escribir los archivos. Si desea permitir que
cualquier persona tenga acceso a los archivos de un bucket de Amazon S3 mediante direcciones URL de
CloudFront, debe conceder permisos de lectura públicos a los objetos.
Note

Si desea restringir quién puede descargar su contenido, puede utilizar la característica de


contenido privado de CloudFront. Para obtener más información acerca de la distribución de
contenido privado, consulte Distribución de contenido privado con URL firmadas y cookies
firmadas (p. 164).

Para cargar el contenido en 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. Elija Create bucket (Crear bucket).
3. En Bucket name (Nombre del bucket), introduzca un nombre de bucket.
Important

Para que su bucket pueda funcionar con CloudFront, el nombre debe cumplir los requisitos de
nomenclatura de DNS. Para obtener más información, consulte Restricciones y limitaciones
de los buckets en la Guía para desarrolladores de Amazon Simple Storage Service.
4. En Region (Región), elija una región de AWS para su bucket. Le recomendamos que elija una región
cercana a usted para optimizar la latencia y minimizar los costos o bien puede elegir otra región para
satisfacer los requisitos reglamentarios.
5. En la sección Block Public Access settings for bucket (Configuración de bloqueo de acceso público del
bucket), desactive la casilla de verificación Block all public access (Bloquear todo el acceso público).

Debe permitir el acceso público de lectura al bucket y a los archivos para que las URL de
CloudFront puedan servir contenido desde el bucket. Sin embargo, puede restringir el acceso
a contenido específico a través de la característica de contenido privado de CloudFront. Para
obtener más información, consulte Distribución de contenido privado con URL firmadas y cookies
firmadas (p. 164).

Seleccione la casilla de verificación de I acknowledge that the current settings may result in this bucket
and the objects within becoming public (Reconozco que la configuración actual podría dar lugar a que
este bucket y los objetos dentro se conviertan en públicos).
6. Deje todas las demás configuraciones en sus valores predeterminados y, a continuación, elija Create
bucket (Crear bucket).
7. (Opcional) Si no tiene su propio contenido de sitio web, o si solo desea experimentar con CloudFront
antes de cargar su propio contenido, utilice el siguiente enlace para descargar una simple página web
de hola mundo: hello-world-html.zip.
8. En la sección Buckets, elija su nuevo bucket y, a continuación, elija Upload (Cargar).
9. Utilice la página Upload (Cargar) para agregar su contenido al bucket de S3. Si descargó la
simple página web hola mundo, agregue el archivo index.html y la carpeta css (con el archivo
style.css dentro de él).

20
Amazon CloudFront Guía para desarrolladores
Paso 2: Cree una distribución de CloudFront

10. Seleccione Additional upload options (Opciones de carga adicionales) para expandir la sección.
11. En la sección Access control list (ACL) (Lista de control de acceso [ACL]), active la casilla de
verificación Read (Leer) junto a Everyone (public access) (Todos [acceso público]) en la columna
Objects (Objetos).
12. Seleccione la casilla de verificación de I understand the effects of these changes on the specified
objects (Entiendo los efectos de estos cambios en los objetos especificados).
13. En la parte inferior de la página, elija Upload (Cargar).

Una vez que finalice el proceso de carga, podrá acceder al elemento con su URL. Por ejemplo:

https://<bucket name>.s3-<AWS Region>.amazonaws.com/<object name>

Reemplace <bucket name>, <AWS Region> y <object name> con los valores apropiados
basados en su bucket y contenido. Si utilizó el simple sitio web hola mundo en este procedimiento,
reemplace <object name> por index.html.
Note

Si creó el bucket en la región EE. UU. Este (Norte de Virginia) (us-east-1), omita la parte
<AWS Region> (Región AWS) de la URL. Por ejemplo:

https://<bucket name>.s3.amazonaws.com/<object name>

Utilice la URL de Amazon S3 para comprobar que su contenido sea accesible al público, pero
recuerde que esta no es la URL que utilizará para acceder a su contenido con CloudFront.

Paso 2: Cree una distribución de CloudFront


Para crear una distribución de CloudFront.

1. Abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.


2. Elija Create Distribution (Crear distribución) y, a continuación, elija Get Started (Empezar).
3. En Origin Settings (Configuración de origen), para Origin Domain Name (Nombre de dominio de
origen), elija el bucket de Amazon S3 que creó con anterioridad.

Para los demás ajustes en Origin Settings (Configuración de origen), acepte los valores
predeterminados.
4. Para los ajuste en Default Cache Behavior Settings (Configuración del comportamiento de caché
predeterminado), acepte los valores predeterminados.

Para obtener más información acerca de las opciones de comportamiento de la caché, consulte
Configuración del comportamiento de la caché (p. 52).
5. Para los ajustes en Distribution Settings (Configuración de distribución), acepte los valores
predeterminados.

Para obtener más información acerca de las opciones de distribución, consulte Ajustes de la
distribución (p. 61).
6. En la parte inferior de la página, elija Create Distribution (Crear distribución).
7. Después de que CloudFront crea la distribución, el valor de la columna Status (Estado) de la
distribución cambia de In Progress (En curso) a Deployed (Implementada). Esto normalmente dura
unos minutos.

21
Amazon CloudFront Guía para desarrolladores
Paso 3: Acceda a su contenido a través de CloudFront

Registre el nombre de dominio que CloudFront asigna a su distribución, que aparece en la lista de
distribuciones. (También aparece en la pestaña General de la distribución seleccionada). Tendrá un
aspecto similar al siguiente: d111111abcdef8.cloudfront.net.

Paso 3: Acceda a su contenido a través de CloudFront


Para acceder a su contenido a través de CloudFront, combine el nombre de dominio de distribución de
CloudFront con la ruta de acceso a su contenido. Por ejemplo, el nombre de dominio de distribución
tiene un aspecto similar al siguiente: d111111abcdef8.cloudfront.net. Tradicionalmente, la ruta
para acceder a la página principal de un sitio web es /index.html. En este caso, puede acceder a su
contenido a través de CloudFront en una URL similar a la siguiente:

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

Si siguió los pasos anteriores y utilizó la simple página web hola mundo, debería ver el contenido de la
página web:

Cuando carga contenido nuevo en el bucket de S3, puede acceder al contenido a través de
CloudFront combinando el nombre de dominio de distribución de CloudFront (por ejemplo,
d111111abcdef8.cloudfront.net) con la ruta al objeto en el bucket de S3. Por ejemplo, si carga un
nuevo archivo denominado new-page.html en la raíz de su bucket de S3, puede acceder a esta página a
través de CloudFront en una URL similar a la siguiente:

https://d111111abcdef8.cloudfront.net/new-page.html

Ha configurado CloudFront correctamente para que entregue el contenido de su sitio web almacenado
en Amazon S3. Si desea ir un paso más allá, puede configurar su distribución de CloudFront
para que use un nombre de dominio personalizado (por ejemplo, www.example.com en lugar
de d111111abcdef8.cloudfront.net). Para obtener más información, consulte Uso de URL
personalizadas (p. 80).

Introducción al complemento AWS for WordPress


Con el complemento AWS for WordPress, puede configurar varios servicios de AWS, incluido Amazon
CloudFront. Con CloudFront, puede proporcionar a los visitantes de su sitio web de WordPress una
experiencia de visualización acelerada con contenido almacenado en caché en ubicaciones de borde de
todo el mundo. Cuando los visitantes llegan a su sitio web, CloudFront los dirige a la ubicación de borde
que proporciona la latencia más baja para ofrecerles una experiencia más rápida y fiable.

22
Amazon CloudFront Guía para desarrolladores
Requisitos previos

El complemento AWS for WordPress crea una distribución de CloudFront que está optimizada para sitios
web de WordPress, utilizando múltiples comportamientos de caché para gestionar los distintos tipos de
contenido en su sitio web. Las características de CloudFront del complemento funcionan con sitios web
alojados en WordPress.com y con sitios web de WordPress autoalojados en Amazon Lightsail, Amazon
EC2 u otra plataforma de alojamiento web.

También puede utilizar el complemento para configurar otros servicios de AWS como Amazon Polly y
Amazon Translate, y, a continuación, configurar CloudFront para acelerar el contenido generado por
esos servicios. Para obtener más información sobre el uso del complemento para configurar Amazon
Polly, consulte Complemento WordPress para Amazon Polly en la Guía para desarrolladores de Amazon
Polly. Para obtener más información sobre el uso de CloudFront para acelerar el contenido generado por
Amazon Polly, consulte (Opcional) Crear una distribución de CloudFront para el contenido de Amazon
Polly (p. 30).

Temas
• Requisitos previos (p. 23)
• Paso 1: Instalar el complemento (p. 25)
• Paso 2: Configurar y usar CloudFront con el complemento (p. 26)
• (Opcional) Desactivar la aceleración del sitio (p. 28)
• (Opcional) Quitar la aceleración del sitio y eliminar la distribución de CloudFront (p. 29)
• (Opcional) Desactivar y eliminar el complemento (p. 29)
• (Opcional) Crear una distribución de CloudFront para el contenido de Amazon Polly (p. 30)
• Solución de problemas (p. 31)

Requisitos previos
Para utilizar el complemento AWS for WordPress, necesita una cuenta de AWS, un usuario de AWS
Identity and Access Management (IAM) y un sitio web de WordPress.

Temas
• Creación de una cuenta de AWS (p. 23)
• Creación de un usuario de IAM (p. 23)
• Creación de un sitio web de WordPress (p. 25)

Creación de una cuenta de AWS


Si ya tiene una cuenta de AWS, puede omitir esta sección. De lo contrario, cree una.

Para crear una cuenta de AWS

1. Abra https://portal.aws.amazon.com/billing/signup.
2. Siga las instrucciones en línea.

Parte del procedimiento de inscripción consiste en recibir una llamada telefónica e indicar un código de
verificación en el teclado del teléfono.

Creación de un usuario de IAM


Para usar el complemento AWS for WordPress, debe crear un usuario de IAM para el complemento. Un
usuario de IAM es una persona o aplicación bajo una cuenta de AWS que tiene permiso para realizar
llamadas de API a servicios de AWS.

23
Amazon CloudFront Guía para desarrolladores
Requisitos previos

Note

Si no utiliza WordPress.com y en su lugar tiene un sitio web de WordPress autoalojado en


Amazon EC2, puede usar un rol de IAM en lugar de un usuario de IAM. Para obtener más
información, consulte Roles de IAM para Amazon EC2 en la Guía del usuario de Amazon EC2.

El siguiente procedimiento incluye los pasos para asociar una política de IAM al usuario de IAM. Una
política de IAM es un documento que define los permisos que se aplican al usuario.

Para crear un usuario de IAM

1. Inicie sesión en la consola de administración de AWS y abra la consola de IAM en https://


console.aws.amazon.com/iam/.
2. En el panel de navegación, seleccione Users. A continuación, elija Add user (Añadir usuario).
3. En la página Set user details (Especificar detalles de usuario), haga lo siguiente:

a. En User name (Nombre de usuario), escriba AWSForWordPressPlugin.


b. En Access type (Tipo de acceso), elija Programmatic access (Acceso mediante programación).
c. Elija Next: Permissions.
4. En la página Set permissions (Establecer permisos), haga lo siguiente:

a. Elija Attach existing policies directly.


b. En el cuadro de búsqueda, escriba WordPress y, a continuación, active la casilla de verificación
situada junto a AWSForWordPressPluginPolicy.
Note

AWSForWordPressPluginPolicy es una política administrada de AWS que da permiso


al usuario para utilizar todas las características incluidas en el complemento AWS
for WordPress. Cuando se agreguen nuevas características al complemento, AWS
actualizará esta política para incluir los permisos necesarios para usar las nuevas
características.
c. Elija Next: Tags (Siguiente: Etiquetas).
5. Elija Next: Review.
6. Seleccione la opción Create user.
7. Elija Download .csv (Descargar .csv) para guardar las credenciales del usuario (ID de clave de acceso
y clave de acceso secreta) en el equipo. Los necesitará para configurar el complemento AWS for
WordPress.
Important

Esta es la única vez que puede guardar la clave de acceso secreta del usuario, así que
asegúrese de guardarla ahora.

Proteger las credenciales del usuario de IAM


El usuario de IAM que creó en la sección anterior puede hacer lo siguiente en su cuenta de AWS:

• Crear, modificar, etiquetar, enumerar y eliminar distribuciones de CloudFront con la etiqueta


"createdBy" : "AWSForWordPressPlugin" y crear y enumerar invalidaciones en esas
distribuciones.
• Solicitar, etiquetar, enumerar y eliminar certificados de AWS Certificate Manager en la región EE. UU.
Este (Norte de Virginia).
• Crear pilas de AWS CloudFormation en la región EE. UU. Este (Norte de Virginia) y modificar, enumerar
y eliminar pilas con la etiqueta "createdBy" : "AWSForWordPressPlugin".

24
Amazon CloudFront Guía para desarrolladores
Paso 1: Instalar el complemento

• Utilizar Amazon Polly para convertir texto en voz y mostrar las voces de Amazon Polly disponibles.
• Utilizar Amazon Translate para traducir texto de un idioma a otro.
• Determinar si existe un determinado bucket de Amazon S3.
• Crear buckets de Amazon S3 cuyos nombres empiecen por audio_for_wordpress o audio-for-
wordpress, y crear, eliminar y enumerar objetos en esos buckets.

Important

Para evitar que usuarios no autorizados obtengan estos permisos, proteja las credenciales
de usuario de IAM. Trate la clave de acceso secreta como una contraseña; guárdela en un
lugar seguro y no la comparta con nadie. Al igual que una contraseña, rote la clave de acceso
periódicamente. Si la clave de acceso secreta se filtró accidentalmente, elimínela de inmediato. A
continuación, puede crear una nueva clave de acceso para usarla con el complemento AWS for
WordPress.

Creación de un sitio web de WordPress


Si ya tiene un sitio web de WordPress, puede pasar a Paso 1: Instalar el complemento (p. 25).

Si no tiene un sitio web de WordPress, puede crear uno usando WordPress.com. Para utilizar el
complemento AWS for WordPress, necesita un plan de WordPress.com Business o eCommerce.

También puede instalar el software de WordPress en su propio servidor web, utilizando Amazon Lightsail,
Amazon EC2 u otra plataforma de alojamiento web. El alojamiento de su propio sitio web de WordPress no
se limita al uso de WordPress.com y requiere la capacidad de configurar y administrar un servidor web, un
balanceador de carga, registros DNS y certificados de servidor web.

Independientemente de cómo configure su sitio web de WordPress, necesita lo siguiente para poder utilizar
el complemento AWS for WordPress:

• Su sitio web debe tener su propio nombre de dominio. Un nombre de dominio, también conocido como
dirección web o URL (localizador uniforme de recursos), es la dirección que los visitantes utilizan para ir
a su sitio web. Por ejemplo, el nombre de dominio de Amazon es amazon.com. En este tema, usamos
example.com como nombre de dominio de ejemplo genérico, pero necesita un nombre de dominio
personalizado para su sitio web.
• Su sitio web debe funcionar con HTTPS. Esta es una práctica recomendada de seguridad y el
complemento supone que su sitio web funciona con HTTPS. Para comprobarlo, vaya a la dirección de
su sitio web usando HTTPS (por ejemplo, https: //example.com) y asegúrese de que su sitio web se
muestra correctamente.

Para obtener un tutorial paso a paso que explica cómo crear un sitio web de WordPress en AWS mediante
Amazon Lightsail, consulte Aceleración de WordPress con CloudFront mediante el complemento AWS for
WordPress en el blog de entrega de contenido y redes de AWS.

Cuando su sitio web tenga un nombre de dominio y funcione con HTTPS, vaya a la siguiente sección.

Paso 1: Instalar el complemento


Antes de instalar el complemento, asegúrese de completar los requisitos previos (p. 23).

Para instalar el complemento

1. Inicie sesión en el panel de administración de su sitio web de WordPress, también conocido como WP
Admin.

25
Amazon CloudFront Guía para desarrolladores
Paso 2: Configurar y usar CloudFront con el complemento

2. Elija Plugins (Complementos).


3. • Si ya tiene el complemento Amazon AI (el nombre anterior del complemento) o AWS for WordPress:
1. Active la casilla de verificación situada junto a Amazon AI o AWS for WordPress.
2. En el menú Bulk Action (Acción en bloque), seleccione Update (Actualizar) y, a continuación, elija
Apply (Aplicar).
• Si no tiene el complemento Amazon AI o AWS for WordPress:
1. Elija Add new (Añadir nuevo).
2. En el cuadro de búsqueda, escriba AWS for WordPress.
3. Busque el complemento AWS for WordPress. Seleccione Install Now (Instalar ahora) y, a
continuación, elija Activate (Activar).

Después de activar el complemento, vaya a la siguiente sección para configurarlo y utilizarlo.

Paso 2: Configurar y usar CloudFront con el


complemento
Cuando se utiliza CloudFront con el complemento AWS for WordPress para la aceleración del sitio, el
complemento utiliza un subdominio, también conocido como nombre de dominio alternativo o CNAME,
para enviar el tráfico de su sitio web a través de CloudFront. Esto puede reducir la latencia y mejorar la
experiencia de visualización al cargar recursos más rápido.

Sin la aceleración del sitio del complemento, todo el tráfico de los espectadores de su sitio web
va al servidor que aloja su sitio web de WordPress. Después de completar los pasos del siguiente
procedimiento, puede habilitar la aceleración del sitio del complemento, que ofrece a los espectadores dos
opciones para visitar su sitio web:

• Cuando los lectores utilizan el nombre de dominio de su sitio web, como ejemplo.com, todo el tráfico
pasa por CloudFront, excepto la página de índice del sitio web y algunos archivos de imagen pequeños.
• Cuando los lectores utilizan el nombre de dominio alternativo de su sitio web, como www.ejemplo.com,
todo el tráfico pasa por CloudFront.

Al usar cualquiera de los dominios, los espectadores de su sitio web obtienen una latencia más baja y una
experiencia de visualización más rápida y fiable. Le recomendamos que indique a los espectadores que
utilicen el nombre de dominio alternativo de su sitio web. Los siguientes diagramas muestran el tráfico de
los espectadores con y sin la aceleración del sitio del complemento.

Sin la aceleración del sitio del complemento

26
Amazon CloudFront Guía para desarrolladores
Paso 2: Configurar y usar CloudFront con el complemento

Con la aceleración del sitio del complemento

Para configurar y usar CloudFront con el complemento (habilitar la aceleración del sitio)

1. Inicie sesión en el panel de administración de su sitio web de WordPress, también conocido como WP
Admin.
2. En el panel de navegación izquierdo, seleccione AWS.
3. Pegue o escriba el ID de clave de acceso y la clave de acceso secreta que guardó
anteriormente (p. 23), y, a continuación, elija Save Changes (Guardar cambios).
Note

Si aloja WordPress en Amazon EC2, puede omitir este paso y utilizar un rol de IAM en lugar
de un usuario de IAM. En ese caso, deje estos dos campos en blanco. Para obtener más
información acerca de los roles de IAM, consulte Roles de IAM para Amazon EC2 en la Guía
del usuario de Amazon EC2.
Note

Independientemente del valor que elija en AWS Region (Región de AWS), la característica
de CloudFront del complemento crea todos los recursos en la región EE. UU. Este (Norte de
Virginia).
4. En el panel de navegación, elija CloudFront.
5. En la página CloudFront Setup (Configuración de CloudFront), haga lo siguiente:

a. Si es necesario, en Origin Domain Name (Nombre de dominio de origen), escriba el nombre de


dominio de su sitio web, por ejemplo, example.com.
b. En CloudFront Alternate Domain Name (Nombre de dominio alternativo de CloudFront), escriba
un subdominio que los espectadores utilizarán para la experiencia acelerada de su sitio web.
Le recomendamos utilizar www delante del nombre de dominio de su sitio web, por ejemplo,
www.example.com.
c. Seleccione Initiate Setup (Iniciar configuración).
6. CloudFront utiliza AWS Certificate Manager para crear un certificado para el nombre de dominio
alternativo y se debe validar el certificado dentro de las 72 horas siguientes a la solicitud. Para ello,
agregue el registro DNS que el complemento muestra en la página de configuración. El proceso
para agregar este registro de validación varía en función del proveedor de servicios DNS. Si utiliza

27
Amazon CloudFront Guía para desarrolladores
(Opcional) Desactivar la aceleración del sitio

servicios de alojamiento de WordPress.com, consulte su documentación para obtener información


sobre cómo actualizar registros DNS con una entrada personalizada. Si utiliza Amazon Route 53
para DNS, consulte Creación de registros mediante la consola de Amazon Route 53 en la Guía para
desarrolladores de Amazon Route 53.

Después de agregar el registro DNS, vuelva a la página de configuración y elija Check status of SSL
certificate (Comprobar estado del certificado SSL).

Al completar este paso, CloudFront configura una distribución que está optimizada para WordPress.
Este proceso puede tardar algún tiempo en implementarse globalmente. La página de configuración
se actualiza automáticamente cada diez segundos para mantenerlo actualizado mientras la
implementación está en curso.
7. Una vez finalizada la implementación, cree un registro de DNS para apuntar al nombre de dominio
alternativo (por ejemplo, www.ejemplo.com) a la nueva distribución de CloudFront. Para ello, agregue
el registro DNS que el complemento muestra en la página de configuración. El proceso para agregar
este registro de validación varía en función del proveedor de servicios DNS. Si utiliza servicios
de alojamiento de WordPress.com, consulte su documentación para obtener información sobre
cómo actualizar registros DNS con una entrada personalizada. Si utiliza Amazon Route 53 para
DNS, consulte Creación de registros mediante la consola de Amazon Route 53 en la Guía para
desarrolladores de Amazon Route 53.

Después de agregar el registro de DNS, vuelva a la página de configuración y elija Check status of
CloudFront DNS record (Comprobar estado del registro DNS de CloudFront).
8. Elija Activate Site Acceleration (Activar aceleración del sitio) y, a continuación, elija Save Changes
(Guardar cambios).

Al activar la aceleración del sitio, el complemento AWS for WordPress configura su sitio web para que
sirva los recursos del sitio web (por ejemplo, archivos CSS y JavaScript, e imágenes) de su distribución
de CloudFront. Puede verificar que el complemento acelera el sitio web para los espectadores viendo el
sitio web desde una ventana de navegación privada o utilizando un navegador diferente fuera del modo
de administración de WordPress. Asegúrese de navegar a su sitio web utilizando el nombre de dominio
alternativo, por ejemplo, www.example.com.

(Opcional) Desactivar la aceleración del sitio


Puede desactivar la aceleración del sitio para servir todos los recursos de su sitio web desde el host del
servidor web, sin pasar por la distribución de CloudFront. Esto deja la distribución intacta y disponible para
su uso cuando decide reactivar la aceleración del sitio del complemento.
Warning

Antes de desactivar la aceleración del sitio, edite el registro DNS del nombre de dominio
alternativo (como www.example.com) para que apunte al dominio del sitio web (como
example.com). Si no hace esto primero, es posible que experimente tiempo de inactividad o
problemas con el sitio web. Después de editar el registro DNS, espere un tiempo superior al valor
de tiempo de vida (TTL) del registro antes de desactivar la aceleración del sitio.
Si utiliza servicios de alojamiento de WordPress.com, consulte su documentación para obtener
información sobre cómo editar registros DNS. Si utiliza Amazon Route 53 para DNS, consulte
Edición de registros en la Guía para desarrolladores de Amazon Route 53.

Para desactivar la aceleración del sitio

1. Inicie sesión en su sitio web de WordPress y, a continuación, elija WP Admin (Admin. de WP).
2. En el panel de navegación, elija AWS.
3. En el panel de navegación, elija CloudFront.

28
Amazon CloudFront Guía para desarrolladores
(Opcional) Quitar la aceleración del sitio
y eliminar la distribución de CloudFront

4. Desactive la casilla de verificación Activate Site Acceleration (Activar aceleración del sitio) y, a
continuación, elija Save Changes (Guardar cambios).

La desactivación de la aceleración del sitio es reversible. Para reactivarlo, seleccione la casilla de


verificación Activate Site Acceleration (Activar aceleración del sitio) y, a continuación, elija Save Changes
(Guardar cambios).

(Opcional) Quitar la aceleración del sitio y eliminar la


distribución de CloudFront
Puede usar el complemento AWS for WordPress para eliminar su distribución de CloudFront. Esto no es
reversible. Para volver a utilizar el complemento AWS for WordPress para la aceleración del sitio, debe
volver a configurar el complemento (p. 26), lo que crea una nueva distribución de CloudFront.
Warning

Antes de eliminar la distribución de CloudFront, edite el registro DNS del nombre de dominio
alternativo (como www.ejemplo.com) para que apunte al dominio del sitio web (como
ejemplo.com). Si no hace esto primero, es posible que experimente tiempo de inactividad o
problemas con el sitio web. Después de editar el registro DNS, espere un tiempo superior al valor
de tiempo de vida (TTL) del registro antes de eliminar la distribución de CloudFront.
Si utiliza servicios de alojamiento de WordPress.com, consulte su documentación para obtener
información sobre cómo editar registros DNS. Si utiliza Amazon Route 53 para DNS, consulte
Edición de registros en la Guía para desarrolladores de Amazon Route 53.

Para quitar la aceleración del sitio y eliminar la distribución de CloudFront

1. Inicie sesión en su sitio web de WordPress y, a continuación, elija WP Admin (Admin. de WP).
2. En el panel de navegación, elija AWS.
3. En el panel de navegación, elija CloudFront.
4. Elija Remove Site Acceleration (Eliminar la aceleración del sitio) y, a continuación, elija OK (Aceptar).

Cuando complete estos pasos, el complemento AWS for WordPress eliminará su distribución de
CloudFront. Esto puede tardar varios minutos en completarse. Una vez finalizado el proceso, puede abrir
si lo desea la consola de administración de AWS para comprobar que se han eliminado los recursos de
CloudFront, AWS Certificate Manager y AWS CloudFormation creados por el complemento.

(Opcional) Desactivar y eliminar el complemento


Puede desactivar el complemento AWS for WordPress para dejar de usar todas sus características para
CloudFront y otros servicios de AWS. También puede eliminar el complemento para eliminarlo de su sitio
web de WordPress por completo.
Warning

Antes de desactivar y eliminar el complemento, edite el registro DNS del nombre de dominio
alternativo (como www.example.com) para que apunte al dominio del sitio web (como
example.com). Si no hace esto primero, es posible que experimente tiempo de inactividad o
problemas con el sitio web. Después de editar el registro DNS, espere un tiempo superior al valor
de tiempo de vida (TTL) del registro antes de desactivar y eliminar el complemento.
Si utiliza servicios de alojamiento de WordPress.com, consulte su documentación para obtener
información sobre cómo editar registros DNS. Si utiliza Amazon Route 53 para DNS, consulte
Edición de registros en la Guía para desarrolladores de Amazon Route 53.

29
Amazon CloudFront Guía para desarrolladores
(Opcional) Crear una distribución de
CloudFront para el contenido de Amazon Polly

Note

Si desactiva y elimina el complemento sin eliminar primero la aceleración del sitio, el complemento
no elimina los recursos de CloudFront, AWS Certificate Manager y AWS CloudFormation
que creó. Estos recursos permanecen en su cuenta de AWS y se le cobrará por cualquier
uso que supere la capa gratuita de AWS. Para eliminar estos recursos antes de eliminar el
complemento, consulte (Opcional) Quitar la aceleración del sitio y eliminar la distribución de
CloudFront (p. 29).

Para desactivar el complemento AWS for WordPress

1. Inicie sesión en su sitio web de WordPress y, a continuación, elija WP Admin (Admin. de WP).
2. Elija Plugins (Complementos).
3. Busque el complemento AWS for WordPress y, a continuación, elija Deactivate (Desactivar).

Desactivar el complemento es reversible. Para reactivarlo, elija Activate (Activar).


4. Para eliminar completamente el complemento AWS for WordPress, elija Delete (Eliminar).

(Opcional) Crear una distribución de CloudFront para


el contenido de Amazon Polly
Si utiliza el complemento AWS for WordPress con Amazon Polly, puede crear una distribución de
CloudFront para acelerar el contenido de audio generado por Amazon Polly. Para obtener más información
sobre el uso del complemento con Amazon Polly, consulte Complemento WordPress para Amazon Polly
en la Guía para desarrolladores de Amazon Polly.

Para crear una distribución de CloudFront para el audio de Amazon Polly

1. Inicie sesión en el panel de administración de su sitio web de WordPress, también conocido como WP
Admin.
2. En el panel de navegación izquierdo, seleccione AWS.
3. En la sección Cloud Storage (Almacenamiento en la nube), anote el nombre de su bucket de S3.
Comenzará con audio-for-wordpress o audio_for_wordpress. Necesita este nombre de bucket para
completar los siguientes pasos.
4. Inicie sesión en la consola de administración de AWS y abra la consola de CloudFront en https://
console.aws.amazon.com/cloudfront/
5. Seleccione Create Distribution (Crear distribución).
6. Elija Get Started (Introducción) para una distribución Web.
7. En Origin Domain Name (Nombre de dominio de origen), elija el bucket de Amazon S3 cuyo nombre
anotó en un paso anterior.
8. Desplácese hasta la parte inferior de la página y, a continuación, elija Create Distribution (Crear
distribución).
9. Elija la distribución que creó en el paso anterior y, a continuación, tome nota del Domain Name
(Nombre de dominio) de la distribución. Necesita este nombre de dominio para completar los
siguientes pasos.
10. Inicie sesión en el panel de administración de su sitio web de WordPress, también conocido como WP
Admin.
11. En el panel de navegación izquierdo, seleccione AWS.
12. En Amazon CloudFront (CDN) domain name (Nombre de dominio de Amazon CloudFront [CDN]),
escriba el nombre de dominio que anotó en un paso anterior.
13. Elija Guardar cambios.

30
Amazon CloudFront Guía para desarrolladores
Solución de problemas

Solución de problemas
Si tiene problemas con el complemento AWS for WordPress, los siguientes temas pueden ayudarle a
resolverlos. Para informar de errores o para obtener ayuda con otros problemas que no están cubiertos por
estos temas, abra un problema en GitHub.

Temas
• No puedo conectarme a AWS (p. 31)
• El usuario no está autorizado (p. 31)
• La página de configuración de CloudFront está en blanco (p. 31)
• Error DescribeCertificate (p. 31)
• Error de AWS CloudFormation (p. 32)
• La implementación de distribución de CloudFront parece bloqueada (p. 32)
• El dominio alternativo no funciona (p. 32)
• No se pueden encontrar recursos de AWS (p. 32)

No puedo conectarme a AWS


Es posible que el complemento muestre el siguiente error: Can't connect to AWS. Check your credentials
and make sure your AWS account is active. Si aparece este error, intente lo siguiente:

• Asegúrese de que ha introducido la clave de acceso de AWS y la clave secreta de AWS en la página de
General configuration (Configuración general) del complemento. Para obtener más información, consulte
Paso 2: Configurar y usar CloudFront con el complemento (p. 26).
• Asegúrese de que el usuario de IAM que creó para el complemento tenga los permisos correctos. Para
obtener más información, consulte Creación de un usuario de IAM (p. 23).

El usuario no está autorizado


El complemento podría mostrar los siguientes mensajes de error:

• Error in Setup
• AccessDenied
• User: <ARN de usuario> is not authorized to perform <acción>

Si ve uno de estos errores, asegúrese de que el usuario de IAM que creó para el complemento tenga los
permisos correctos. Para obtener más información, consulte Creación de un usuario de IAM (p. 23).

La página de configuración de CloudFront está en blanco


Cuando navega a la página de configuración de CloudFront del complemento, la página puede estar en
blanco. Esto significa que no ha introducido la clave de acceso de AWS ni la clave secreta de AWS en la
página de General configuration (Configuración general) del complemento. Para obtener más información,
consulte Paso 2: Configurar y usar CloudFront con el complemento (p. 26).

Error DescribeCertificate
El complemento podría mostrar los siguientes mensajes de error:

• Error in Setup

31
Amazon CloudFront Guía para desarrolladores
Solución de problemas

• Found 1 error while validating the input provided for the DescribeCertificate operation: [CertificateArn]
expected string length to be >= 20, but found string length of 0

Si ve uno de estos errores, elija Restart Setup (Reiniciar configuración) y, a continuación, asegúrese de
que introduce un nombre de dominio, no una dirección IP, en Origin Domain Name (Nombre de dominio de
origen) y CloudFront Alternate Domain Name (Nombre de dominio alternativo CloudFront). Para obtener
más información, consulte Paso 2: Configurar y usar CloudFront con el complemento (p. 26).

Error de AWS CloudFormation


El complemento podría mostrar los siguientes mensajes de error:

• Caught exception in method AmazonAI_Cloudformation


• Stack is in an unexpected state. CloudFront Distribution state is: <estado de distribución> and
Stack state is: estado de pila

Si ve uno de estos errores, elija Restart Setup (Reiniciar configuración) para intentarlo de nuevo. Si está
familiarizado con el diagnóstico de errores mediante la consola de AWS CloudFormation, puede abrir la
consola para ver los problemas que han surgido.

La implementación de distribución de CloudFront parece


bloqueada
Al configurar la aceleración del sitio, el complemento podría mostrar el paso CloudFront Distribution
Deployment (Implementación de distribución de CloudFront) durante un largo tiempo y podría parecer que
el complemento se ha bloqueado en este paso. Este paso puede tardar varios minutos en completarse. El
complemento se actualiza cada diez segundos durante este paso y muestra un mensaje como este: Last
updated at <fecha y hora de la última actualización>. Busque este mensaje para ver cuándo
el complemento actualizó la página por última vez. Si fue en el último minuto, le recomendamos que siga
esperando a que se complete este paso. Si el complemento no se ha actualizado en un tiempo, puede
intentar volver a cargar la página.

El dominio alternativo no funciona


Si terminó de configurar CloudFront con el complemento, pero su nombre de dominio alternativo (por
ejemplo, www.ejemplo.com) no funciona, asegúrese de haber agregado un registro CNAME a sus registros
DNS. Si utiliza servicios de alojamiento de WordPress.com, consulte su documentación para obtener
información sobre cómo actualizar registros DNS con una entrada personalizada. Si utiliza Amazon Route
53 para DNS, consulte Creación de registros mediante la consola de Amazon Route 53 en la Guía para
desarrolladores de Amazon Route 53.

Si utilizó el complemento para eliminar su distribución de CloudFront y su nombre de dominio alternativo


(por ejemplo, www.ejemplo.com) no funciona, asegúrese de actualizar los registros DNS para que vuelvan
a apuntar el nombre de dominio alternativo al dominio principal de su sitio web (por ejemplo, ejemplo.com)
y de que ha esperado más tiempo que el valor de tiempo de vida (TTL) del registro DNS. Si utiliza servicios
de alojamiento de WordPress.com, consulte su documentación para obtener información sobre cómo
actualizar registros DNS con una entrada personalizada. Si utiliza Amazon Route 53 para DNS, consulte
Creación de registros mediante la consola de Amazon Route 53 en la Guía para desarrolladores de
Amazon Route 53.

No se pueden encontrar recursos de AWS


La característica de CloudFront del complemento crea recursos en varios servicios de AWS, incluidos
CloudFront, AWS Certificate Manager y AWS CloudFormation. Si está buscando estos recursos en la

32
Amazon CloudFront Guía para desarrolladores
Introducción a un sitio web seguro estático

consola de administración de AWS o mostrándolos mediante una API, asegúrese de utilizar la región
EE. UU. Este (Norte de Virginia) (us-east-1).

Introducción a un sitio web seguro estático


Puede comenzar a usar Amazon CloudFront con la solución descrita en este tema para crear un sitio
web estático seguro para su nombre de dominio. Un sitio web estático solo utiliza archivos estáticos,
como HTML, CSS, JavaScript, imágenes y vídeos, y no necesita servidores ni procesamiento del lado del
servidor. Con esta solución, su sitio web obtiene los siguientes beneficios:

• Utiliza el almacenamiento duradero de Amazon Simple Storage Service (Amazon S3): esta solución crea
un bucket de Amazon S3 para alojar el contenido de su sitio web estático. Para actualizar el sitio web,
solo tiene que cargar los archivos nuevos en el bucket de S3.
• Está acelerado por la red de entrega de contenido de Amazon CloudFront: esta solución crea una
distribución de CloudFront para servir su sitio web a los lectores con baja latencia. La distribución está
configurada con una identidad de acceso de origen (p. 223) para asegurarse de que solo se pueda
acceder al sitio web mediante CloudFront, no directamente desde S3.
• Está protegido por HTTPS y encabezados de seguridad adicionales: esta solución crea un certificado
SSL/TLS en AWS Certificate Manager (ACM) y lo asocia a la distribución de CloudFront. Este certificado
permite que la distribución sirva el sitio web de su dominio de forma segura con HTTPS.

Esta solución también usa Lambda @Edge (p. 337) para agregar encabezados de seguridad a cada
respuesta del servidor. Los encabezados de seguridad son un grupo de encabezados en la respuesta
del servidor web que indican a los navegadores web que tomen precauciones de seguridad adicionales.
Para obtener más información, consulte esta entrada de blog: Agregar encabezados de seguridad HTTP
mediante Lambda @Edge y Amazon CloudFront.
• Se configura e implementa con AWS CloudFormation: esta solución utiliza una plantilla de AWS
CloudFormation para configurar todos los componentes, de modo que pueda centrarse más en el
contenido de su sitio web y menos en la configuración de componentes.

Esta solución es de código abierto en GitHub. Para ver el código, enviar una solicitud de extracción o abrir
una incidencia, vaya a https://github.com/aws-samples/amazon-cloudfront-secure-static-site.

Temas
• Información general de la solución (p. 33)
• Implementación de la solución (p. 34)

Información general de la solución


En el siguiente diagrama se muestra información general de cómo funciona esta solución de sitio web
estático:

33
Amazon CloudFront Guía para desarrolladores
Implementación de la solución

1. El lector solicita el sitio web en www.example.com.


2. Si el objeto solicitado está en caché, CloudFront devuelve el objeto de su caché al lector.
3. Si el objeto no está en la caché de CloudFront, CloudFront solicita el objeto desde el origen (un bucket
de S3).
4. S3 devuelve el objeto a CloudFront, que desencadena el evento de respuesta de origen (p. 360) de
Lambda @Edge.
5. El objeto, incluidos los encabezados de seguridad que ha agregado la función de Lambda @Edge, se
agrega a la memoria caché de CloudFront.
6. (No se muestra) Los objetos se devuelven al lector. Las solicitudes posteriores del objeto que llegan a la
misma ubicación de borde de CloudFront se sirven desde la memoria caché de CloudFront.

Implementación de la solución
Para implementar esta solución de sitio web estático seguro, puede elegir una de las siguientes opciones:

• Utilice la consola de AWS CloudFormation para implementar la solución con contenido predeterminado
y, a continuación, cargue el contenido del sitio web en Amazon S3.
• Clone la solución en su equipo para agregar contenido de su sitio web. A continuación, implemente la
solución con la interfaz de línea de comandos de AWS (AWS CLI).

Temas
• Requisitos previos (p. 34)
• Abra la consola de AWS CloudFormation. (p. 35)
• Clonación local de la solución (p. 36)
• Búsqueda de registros de acceso (p. 37)

Requisitos previos
Para utilizar esta solución, debe cumplir los siguientes requisitos previos:

34
Amazon CloudFront Guía para desarrolladores
Implementación de la solución

• Un nombre de dominio registrado, como example.com, que apunte a una zona alojada por Amazon
Route 53. La zona alojada debe estar en la misma cuenta de AWS en la que implementa esta solución.
Si no tiene un nombre de dominio registrado, puede registrarlo con Route 53. Si tiene un nombre de
dominio registrado pero no apunta a una zona alojada por Route 53, configure Route 53 como su
servicio de DNS.
• Permisos de AWS Identity and Access Management (IAM) para lanzar plantillas de CloudFormation que
crean roles de IAM y permisos para crear todos los recursos de AWS en la solución.

Usted es responsable de los costos generados durante el uso de esta solución. Para obtener más
información sobre los costos, consulte las páginas de precios de cada servicio de AWS.

Abra la consola de AWS CloudFormation.


Para efectuar la implementación mediante la consola de CloudFormation

1. Elija Launch on AWS para abrir esta solución en la consola de AWS CloudFormation. Si es necesario,
inicie sesión en su cuenta de AWS.

2. Se abre el asistente Create stack (Crear pila) se abre en la consola de AWS CloudFormation, con
campos rellenados previamente que especifican la plantilla de CloudFormation de esta solución.

En la parte inferior de la página, elija Next.


3. En la página Especificar los detalles de la pila, escriba valores para los siguientes campos:

• SubDomain (SubDominio): escriba el subdominio que se va a utilizar para su sitio web. Por
ejemplo, si el subdominio es www, el sitio web está disponible en www.example.com. (Reemplace
example.com por su nombre de dominio, como se explica en el siguiente punto).
• DomainName (NombreDominio): escriba su nombre de dominio, como example.com. Este dominio
debe apuntar a una zona alojada por Route 53.

Cuando haya terminado, elija Next (Siguiente).


4. (Opcional) En la página Configure stack options (Configurar las opciones la de pila), agregue etiquetas
y otras opciones de pila.

Cuando haya terminado, elija Next (Siguiente).


5. En la página Revisar, desplácese hasta la parte inferior de la página y, a continuación, seleccione
los dos cuadros de la sección Capacidades. Estas capacidades permiten a AWS CloudFormation
crear un rol de IAM que permite el acceso a los recursos de la pila y asignar nombres a los recursos
dinámicamente.
6. Elija Create stack.
7. Espere a que termine la creación de la pila. La pila crea algunas pilas anidadas y puede tardar varios
minutos en terminar. Cuando termine, el estado cambia a CREATE_COMPLETE.

Cuando el estado sea CREATE_COMPLETE, vaya a https://www.example.com para ver su sitio web
(reemplace www.example.com por el subdominio y el nombre de dominio especificados en el paso 3).
Debería ver el contenido predeterminado del sitio web:

35
Amazon CloudFront Guía para desarrolladores
Implementación de la solución

Para reemplazar el contenido predeterminado del sitio web por el suyo propio

1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.


2. Elija el bucket cuyo nombre comienza por amazon-cloudfront-secure-static-site-s3bucketroot-.
Note

Asegúrese de elegir el bucket que tiene s3bucketroot en el nombre, no s3bucketlogs.


El bucket con s3bucketroot en el nombre incluye el contenido del sitio web. El que tiene
s3bucketlogs solo contiene archivos de registro.
3. Elimine el contenido predeterminado del sitio web y, a continuación, cargue el suyo propio.
Note

Si ha visto su sitio web con el contenido predeterminado de esta solución, es probable que
parte del contenido predeterminado se almacene en caché en una ubicación de borde de
CloudFront. Para asegurarse de que los lectores vean el contenido actualizado del sitio web,
invalide los archivos para quitar las copias almacenadas en caché de las ubicaciones de
borde de CloudFront. Para obtener más información, consulte Invalidar archivos (p. 121).

Clonación local de la solución


Requisitos previos

Para agregar contenido de su sitio web antes de implementar esta solución, debe empaquetar localmente
los artefactos de la solución, lo que requiere Node.js y npm. Para obtener más información, consulte
https://www.npmjs.com/get-npm.

Para agregar contenido de su sitio web e implementar la solución

1. Clone o descargue la solución desde https://github.com/aws-samples/amazon-cloudfront-secure-static-


site. Después de clonarla o descargarla, abra un símbolo del sistema o terminal y navegue hasta la
carpeta amazon-cloudfront-secure-static-site.
2. Ejecute el siguiente comando para instalar y empaquetar los artefactos de la solución:

make package-function

3. Copie el contenido de su sitio web en la carpeta www, con lo que se sobrescribe el contenido
predeterminado del sitio web.
4. Ejecute el siguiente comando de AWS CLI para crear un bucket de Amazon S3 para almacenar los
artefactos de la solución. Reemplace example-bucket-for-artifacts por el nombre de su
propio bucket.

aws s3 mb s3://example-bucket-for-artifacts --region us-east-1

5. Ejecute el siguiente comando de AWS CLI para empaquetar los artefactos de la solución como una
plantilla de AWS CloudFormation. Reemplace example-bucket-for-artifacts por el nombre del
bucket que ha creado en el paso anterior.

aws cloudformation package \


--region us-east-1
--template-file templates/main.yaml \
--s3-bucket example-bucket-for-artifacts \
--output-template-file packaged.template

6. Ejecute el siguiente comando para implementar la solución con AWS CloudFormation; para ello,
reemplace los siguientes valores:

36
Amazon CloudFront Guía para desarrolladores
Implementación de la solución

• su-nombre-de-pila-de-CloudFormation: reemplace con un nombre para la pila de AWS


CloudFormation.
• example.com: reemplácelo por el nombre de su dominio. Este dominio debe apuntar a una zona
alojada por Route 53 en la misma cuenta de AWS.
• www: reemplácelo por el subdominio que se usará para su sitio web. Por ejemplo, si el subdominio
es www, el sitio web está disponible en www.example.com.

aws cloudformation deploy \


--region us-east-1
--stack-name your-CloudFormation-stack-name \
--template-file packaged.template \
--capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND \
--parameter-overrides DomainName=example.com SubDomain=www

7. Espere a que se termine de crear la pila de AWS CloudFormation. La pila crea algunas pilas
anidadas y puede tardar varios minutos en terminar. Cuando termine, el estado cambia a
CREATE_COMPLETE.

Cuando el estado cambie a CREATE_COMPLETE, vaya a https://www.example.com para ver su sitio


web (reemplace www.example.com por el subdominio y el nombre de dominio especificados en el
paso anterior). Debería ver el contenido de su sitio web.

Búsqueda de registros de acceso


Esta solución habilita los registros de acceso (p. 463) para la distribución de CloudFront. Complete los
siguientes pasos para localizar los registros de acceso de la distribución.

Para localizar los registros de acceso de la distribución

1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.


2. Elija el bucket cuyo nombre comience por amazon-cloudfront-secure-static-site-s3bucketlogs-.
Note

Asegúrese de elegir el bucket que tiene s3bucketlogs en el nombre, no s3bucketroot.


El bucket con s3bucketlogs en el nombre contiene los archivos de registro. El que tiene
s3bucketroot incluye el contenido del sitio web.
3. La carpeta denominada cdn contiene los registros de acceso de CloudFront.

37
Amazon CloudFront Guía para desarrolladores
Información general de distribuciones

Trabajo con distribuciones


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

Temas
• Información general de distribuciones (p. 38)
• Creación, actualización y eliminación de distribuciones (p. 41)
• Uso de Amazon S3 Origins, canales MediaPackage y orígenes personalizados para distribuciones
web (p. 74)
• Uso de URL personalizadas para archivos añadiendo nombres de dominio alternativos
(CNAME) (p. 80)
• Uso de WebSocket con distribuciones de CloudFront (p. 90)

Información general de distribuciones


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

• Su origen de contenido, es decir, el bucket de Amazon S3, el canal MediaPackage o el servidor HTTP
desde el que CloudFront obtiene los archivos para distribuir. Puede especificar cualquier combinación de
hasta 25 buckets de Amazon S3, canales o servidores HTTP como sus orígenes.
• Acceso: si desea que los archivos estén disponibles para todos los usuarios o si prefiere restringir el
acceso a algunos usuarios.
• Seguridad: si desea que CloudFront exija a los usuarios utilizar HTTPS para obtener acceso a su
contenido.
• Clave de caché: qué valores, si los hay, desea incluir en la clave de caché. La clave de caché solo
identifica cada archivo en la caché para una distribución determinada.
• Configuración de solicitud de origen: si se desea que CloudFront incluya encabezados HTTP, cookies o
cadenas de consulta en las solicitudes que envía a su origen.
• Restricciones geográficas: si desea que CloudFront evite que los usuarios de ciertos países accedan a
su contenido.
• Registros de acceso: si desea que CloudFront cree registros de acceso que muestren actividad del
lector.

Para consultar el máximo actual de la cantidad de distribuciones que puede crear en cada cuenta de AWS,
consulte Cuotas generales de distribuciones (p. 519). No hay un número máximo de archivos que se
pueden entregar por cada distribución.

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

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

38
Amazon CloudFront Guía para desarrolladores
Acciones que puede usar con distribuciones

• Video bajo demanda en distintos formatos, como Apple HTTP Live Streaming (HLS) y Microsoft Smooth
Streaming. Para obtener más información, consulte Distribución de vídeo bajo demanda (VOD) con
CloudFront (p. 329).
• Un evento en directo, como una reunión, conferencia o concierto, en tiempo real. Para streaming en
directo, puede crear la distribución automáticamente con una pila de AWS CloudFormation. Para obtener
más información, consulte Distribución de streaming de vídeo en directo con CloudFront y AWS Media
Services (p. 331).

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

Acciones que puede usar con distribuciones


En la siguiente tabla se muestran las acciones de CloudFront que puede realizar para trabajar con
distribuciones y se proporcionan enlaces a la correspondiente documentación acerca de cómo realizar
dichas acciones con la consola de CloudFront y las API de CloudFront.

Acción Uso de la consola de CloudFront Mediante API de CloudFront

Crear una distribución Consulte Pasos para crear Vaya a CreateDistribution


una distribución (Información
general) (p. 41)

Enumerar sus distribuciones Consulte Actualización de una Vaya a ListDistributions


distribución (p. 71)

Obtener toda la información de Consulte Actualización de una Vaya a GetDistribution


una distribución distribución (p. 71)

Obtener la configuración de la Consulte Actualización de una Vaya a GetDistributionConfig


distribución distribución (p. 71)

Actualizar una distribución Consulte Actualización de una Vaya a UpdateDistribution


distribución (p. 71)

Eliminar una distribución Consulte Eliminar una Vaya a DeleteDistribution


distribución (p. 73)

Campos obligatorios para crear y actualizar


distribuciones
Al actualizar una distribución mediante la acción UpdateDistribution de la API de CloudFront, hay más
campos obligatorios que al crear una distribución mediante CreateDistribution. Examine las siguientes
tablas para ver un resumen de los campos que son necesarios para la creación y actualización de una
distribución.

DistributionConfig

Miembros Obligatorio en la llamada API Obligatorio en la llamada API


Create Update

CallerReference S S

39
Amazon CloudFront Guía para desarrolladores
Campos obligatorios para crear y actualizar distribuciones

Miembros Obligatorio en la llamada API Obligatorio en la llamada API


Create Update

Alias - S

DefaultRootObject - S

Origins S S

DefaultCacheBehavior S S

CacheBehaviors - S

CustomErrorResponses - S

Comentario S S

Registro - S

PriceClass - S

Habilitado S S

ViewerCertificate - S

Restricciones - S

WebACLId - S

HttpVersion - S

IsIPV6Enabled - -

CacheBehavior

Miembros Obligatorio en la llamada API Obligatorio en la llamada API


Create Update

PathPattern S S

TargetOriginId S S

ForwardedValues S S

TrustedSigners S S

ViewerProtocolPolicy S S

MinTTL S S

AllowedMethods - S

SmoothStreaming - S

DefaultTTL - S

MaxTTL S S

Compress - S

LambdaFunctionAssociations - S

40
Amazon CloudFront Guía para desarrolladores
Creación, actualización y eliminación de distribuciones

Miembros Obligatorio en la llamada API Obligatorio en la llamada API


Create Update

FieldLevelEncryptionId - S

Creación, actualización y eliminación de


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

Temas
• Pasos para crear una distribución (Información general) (p. 41)
• Creación de una distribución (p. 42)
• Valores que deben especificarse al crear o actualizar una distribución (p. 43)
• Valores que CloudFront muestra en la consola (p. 69)
• Prueba de una distribución (p. 70)
• Actualización de una distribución (p. 71)
• Etiquetado de distribuciones de Amazon CloudFront (p. 72)
• Eliminar una distribución (p. 73)

Pasos para crear una distribución (Información


general)
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. Un
origen es la ubicación en la que se almacena la versión original del contenido. Cuando CloudFront
recibe una solicitud de archivos, se dirige al origen para obtener los archivos que distribuye en
ubicaciones de borde. Puede utilizar cualquier combinación de buckets de Amazon S3 y servidores
HTTP en sus servidores de origen.

Si utiliza Amazon S3, tenga en cuenta que el nombre de su bucket debe estar todo en minúscula y no
puede contener espacios.

Si utiliza un servidor de Amazon EC2 u otro origen personalizado, revise Uso de Amazon EC2 u otros
orígenes personalizados (p. 76).

Para obtener información sobre el número máximo actual de orígenes que puede crear para una
distribución o para solicitar una cuota (antes denominada límite) más alta, consulte Cuotas generales
de distribuciones (p. 519).
2. Cargue el contenido en sus servidores de origen. Si no desea restringir el acceso al contenido
mediante URL firmadas de CloudFront, permita que los objetos sean legibles públicamente.
Important
Usted es responsable de garantizar la seguridad de su servidor de origen. Debe asegurarse
de que CloudFront tenga permiso para obtener acceso al servidor y que la configuración de
seguridad sea la adecuada para proteger su contenido.

41
Amazon CloudFront Guía para desarrolladores
Creación de una distribución

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. 42).
• Para obtener información sobre cómo crear una distribución mediante la API de CloudFront, vaya a
CreateDistribution en la Referencia de la API de Amazon CloudFront.
4. Opcional: si creó la distribución por medio de la consola de CloudFront cree más comportamientos de
la caché u orígenes para la distribución. Para obtener más información, consulte Para actualizar una
distribución de CloudFront (p. 71).
5. Pruebe su distribución. Para obtener más información, consulte Prueba de una distribución (p. 70).
6. Desarrolle el sitio web o aplicación para obtener acceso al contenido utilizando el nombre de dominio
que CloudFront devolvió después de creada la distribución en el paso 3. Por ejemplo, si CloudFront
devuelve d111111abcdef8.cloudfront.net como nombre de dominio para su distribución, la dirección
URL del archivo image.jpg en un bucket de Amazon S3 o en el directorio raíz de un servidor HTTP
será http://d111111abcdef8.cloudfront.net/image.jpg.

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

Tenga en cuenta lo siguiente:

• Si desea utilizar URL firmadas para restringir el acceso a su contenido, consulte Distribución de
contenido privado con URL firmadas y cookies firmadas (p. 164).
• Si desea ofrecer contenido comprimido, consulte Ofrecer archivos comprimidos (p. 128).
• Para obtener información sobre el comportamiento de respuesta y solicitud de CloudFront
para Amazon S3 y orígenes personalizados, consulte Comportamiento de solicitudes y
respuestas (p. 298).

Creación de una distribución


Puede 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 mediante la API de CloudFront, consulte Crear distribución o
Actualizar distribución en la Referencia de la API de Amazon CloudFront.
Important

Al actualizar su distribución, tenga en cuenta que hay una serie de campos adicionales necesarios
que no se necesitan para crear una distribución. Para asegurarse de que todos los campos
obligatorios se incluyen al actualizar su distribución mediante la API de CloudFront, siga los pasos
que se describen en la Referencia de la API de Amazon CloudFront.

Para ver el número máximo actual de distribuciones que puede crear para cada cuenta de AWS
o para solicitar una cuota (antes denominada límite) más alta, consulte Cuotas generales de
distribuciones (p. 519).

Para crear una distribución web 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 del Create Distribution Wizard (Asistente de creación de distribuciones), en la
sección Web, elija Get Started (Empezar).

42
Amazon CloudFront Guía para desarrolladores
Valores que especifica

4. Especifique la configuración de la distribución. Para obtener más información, consulte Valores que
deben especificarse al crear o actualizar una distribución (p. 43).
5. Guarde los cambios.
6. Después de que CloudFront cree una distribución, el valor de la columna Status (Estado) de la
distribución cambia de InProgress (En curso) a Deployed (Implementada). Si decidió habilitar
la distribución, estará lista para procesar solicitudes cuando el estado cambie a Deployed
(Implementado).

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 por
CloudFront, siguiendo los pasos de Uso de URL personalizadas para archivos añadiendo
nombres de dominio alternativos (CNAME) (p. 80).
7. Una vez implementada la distribución, confirme que puede obtener acceso al contenido con la
nueva URL o CNAME de CloudFront. Para obtener más información, consulte Prueba de una
distribución (p. 70).

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

Valores que deben especificarse al crear o actualizar


una distribución
Cuando se utiliza la consola de CloudFront para crear una nueva distribución o actualizar una distribución
existente, se especifican los siguientes valores.

Para obtener más información acerca de cómo crear o actualizar una distribución utilizando la consola de
CloudFront, consulte Creación de una distribución (p. 42) o Actualización de una distribución (p. 71).

Configuración del origen (p. 45)

Los siguientes valores se aplican a todos los tipos de orígenes:

• Nombre de dominio de origen (p. 46)


• Ruta de origen (p. 47)
• ID de origen (p. 47)
• Intentos de conexión de origen (p. 48)
• Tiempo de espera de conexión de origen (p. 48)
• Encabezados personalizados de origen (p. 48)

Los siguientes valores se aplican solo a orígenes de Amazon S3 (aquellos que no utilizan el punto de
enlace de sitio web estático de S3):

• Restricción del acceso a un bucket (p. 49)


• Identidad de acceso de origen (p. 49) (Solo se aplica cuando elige Yes (Sí) para Restrict Bucket
Access (Restringir acceso al bucket))
• Comentario (p. 49) (Solo se aplica cuando se elige Create a New Identity (Crear una nueva identidad)
para Origin Access Identity (Identidad de acceso de origen))
• Sus identidades (p. 50) (Solo se aplica cuando se elige Use an Existing Identity (Usar una identidad
existente) para Origin Access Identities (Identidades de acceso de origen))

43
Amazon CloudFront Guía para desarrolladores
Valores que especifica

• Conceder permisos de lectura en un bucket (p. 50) (Solo se aplica cuando elige Yes (Sí) para Restrict
Bucket Access (Restringir acceso al bucket))

Los siguientes valores se aplican únicamente a orígenes personalizados, como instancias de Amazon
EC2, balanceadores de carga de Elastic Load Balancing, orígenes de MediaPackage, contenedores de
MediaStore o su propio servidor web:

• Protocolo SSL mínimo del origen (p. 50)


• Origin Protocol Policy (p. 50)
• Tiempo de espera de respuesta del origen (p. 51)
• Tiempo de conexión persistente del origen (p. 52)
• Puerto HTTP (p. 52)
• Puerto HTTPS (p. 52)

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

Los siguientes valores se aplican a la Configuración predeterminada de comportamiento de caché (cuando


se crea una distribución) y a otros comportamientos de caché que se crean más adelante.

• Patrón de ruta (p. 53)


• Origen o grupo de origen (p. 55) (Solo se aplica cuando se crea o actualiza un comportamiento de
caché para una distribución existente)
• Viewer Protocol Policy (p. 55)
• Métodos HTTP permitidos (p. 55)
• Configuración de cifrado de nivel de campo (p. 56)
• Métodos HTTP almacenados en caché (p. 56)
• Caché en función de encabezados de solicitud seleccionados (p. 56)
• Whitelist Headers (p. 56) (Se aplica solo cuando elige Whitelist (Lista blanca) para Cache Based on
Selected Request Headers (Caché basada en cabeceras de solicitud seleccionadas))
• Almacenamiento de objetos en caché (p. 57)
• Tiempo de vida mínimo (p. 57)
• Tiempo de vida máximo (p. 57)
• Tiempo de vida (TTL) predeterminado (p. 57)
• Forward Cookies (Reenvío de cookies) (p. 58)
• Whitelist Cookies (Lista blanca de cookies) (p. 58) (Solo se aplica cuando elige la Whitelist (Lista
blanca) para Forward Cookies (Reenvío de cookies))
• Reenvío de cadenas de consulta y almacenamiento en caché (p. 59)
• Lista blanca de cadenas de consulta (p. 59) (Se aplica solo cuando elige Forward all, cache based
on whitelist (Reenviar todo, caché basada en la lista blanca) para Query String Forwarding and Caching
(Reenvío de cadenas de consulta y almacenamiento en caché))
• Smooth Streaming (p. 59)
• Restringir el acceso del visor (usar URL firmadas o cookies firmadas) (p. 59)
• Signatarios de confianza (p. 60) (Solo se aplica cuando elige Yes (Sí) para Restrict Viewer Access
(Use Signed URLs or Signed Cookies (Restringir acceso al lector (Usar URL firmadas o cookies
firmadas)))
• Números de cuenta de AWS (p. 60) (Solo se aplica cuando elige Specify Accounts (Especificar
cuentas) para Trusted Signers (Signatarios de confianza))
• Comprimir objetos automáticamente (p. 60)

44
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Los siguientes valores se aplican a las Asociaciones de funciones Lambda.

• Evento CloudFront (p. 60)


• El ARN de la función de Lambda. (p. 61)
• Incluir cuerpo (p. 387)

Ajustes de la distribución (p. 61)

• Clase de precio (p. 61)


• ACL web de AWS WAF (p. 61)
• Nombres de dominio alternativos (CNAME) (p. 61)
• Certificado SSL (p. 62)
• Compatibilidad con clientes SSL personalizados (p. 63) (Se aplica solo cuando elige Custom
SSL Certificate (example.com) (Certificado SSL personalizado (example.com)) para SSL Certificate
(Certificado SSL))
• Política de seguridad (p. 63) (Versión mínima de SSL/TLS)
• Versiones de HTTP compatibles (p. 64)
• Objeto raíz predeterminado (p. 64)
• Registro (p. 65)
• Bucket para registros (p. 65)
• Prefijo de registros (p. 65)
• Cookie Logging (p. 66)
• Habilitar IPv6 (p. 66)
• Comentario (p. 67)
• Estado de la distribución (p. 67)

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

• Código de error HTTP (p. 68)


• Ruta de la página de respuesta (p. 68)
• Código de respuesta de HTTP (p. 68)
• TTL mínimo de almacenamiento de errores en caché (segundos) (p. 68)

Restricciones (p. 68)

• Habilitar restricción geográfica (p. 68)


• Tipo de restricción (p. 68)
• Países (p. 69)

Configuración del origen


Al 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. CloudFront
obtiene el contenido web desde sus orígenes y los envía a los lectores a través de una red global de
servidores de borde. Cada origen es un bucket de Amazon S3 o un servidor HTTP como, por ejemplo, un
servidor web.

Para obtener información sobre el número máximo actual de orígenes que puede crear para una
distribución o para solicitar una cuota (antes denominada límite) más alta, consulte Cuotas generales de
distribuciones (p. 519).

45
Amazon CloudFront Guía para desarrolladores
Valores que especifica

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

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

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

Nombre de dominio de origen


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

• Bucket de Amazon S3: DOC-EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com


Note

Si ha creado recientemente el bucket de S3, la distribución de CloudFront podría devolver


respuestas HTTP 307 Temporary Redirect durante un periodo máximo de 24 horas. El
nombre del bucket de S3 puede tardar hasta 24 horas en propagarse a todas las regiones de
AWS. Cuando se complete la propagación, la distribución deja de enviar automáticamente
estas respuestas de redirección; no es necesario que realice ninguna acción. Para obtener más
información, consulte ¿Por qué recibo una respuesta de redirección temporal HTTP 307 de
Amazon S3? y Redirección temporal de solicitudes.
• Bucket de Amazon S3 configurado como un sitio web: https://DOC-EXAMPLE-BUCKET.s3-
website.us-west-2.amazonaws.com
• Contenedor MediaStore: examplemediastore.data.mediastore.us-west-1.amazonaws.com
• Punto de enlace de MediaPackage: examplemediapackage.mediapackage.us-
west-1.amazonaws.com
• Instancia Amazon EC2: ec2-203-0-113-25.compute-1.amazonaws.com
• Balanceador de carga Elastic Load Balancing: example-load-balancer-1234567890.us-
west-2.elb.amazonaws.com
• Su propio servidor web: https://example.com

Elija el nombre de dominio en el campo Origin Domain Name (Nombre de dominio de origen) o escriba el
nombre. El nombre de dominio no distingue entre mayúsculas y minúsculas.

Si su origen es un bucket de Amazon S3, tenga en cuenta lo siguiente:

• Si el bucket está configurado como sitio web, escriba el punto de enlace de alojamiento de sitios
web estáticos de Amazon S3 del bucket. No seleccione el nombre del bucket en la lista del campo
Origin Domain Name (Nombre de dominio de origen). Este punto de enlace de hosting del sitio web
aparecerá en la consola de Amazon S3 en la página Properties (Propiedades), en Static Website Hosting
(Alojamiento de sitio web estático). Para obtener más información, consulte Uso de buckets de Amazon
S3 configurados como puntos de enlace de sitio web para su origen (p. 76).
• Si ha configurado Amazon S3 Transfer Acceleration en su bucket, no especifique el punto de enlace s3-
accelerate para Origin Domain Name (Nombre de dominio de origen).
• Si utiliza un bucket de una cuenta de AWS distinta y el bucket no está configurado como un sitio web,
escriba el nombre en el siguiente formato:

bucket-name.s3.region.amazonaws.com

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

46
Amazon CloudFront Guía para desarrolladores
Valores que especifica

bucket-name.s3.us-east-1.amazonaws.com
• Los archivos deben ser legibles públicamente a no ser que proteja su contenido en Amazon S3 mediante
una identidad de acceso de origen de CloudFront. Para obtener más información, consulte Restricción
del acceso a contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 223).

Important

Si el origen es un bucket de Amazon S3, el nombre del bucket debe cumplir los requisitos de
nomenclatura de DNS. Para obtener más información, consulte Restricciones y limitaciones de los
buckets en la Guía para desarrolladores de Amazon Simple Storage Service.

Al cambiar el valor de Origin Domain Name (Nombre de dominio de origen) por un origen, CloudFront
inmediatamente comienza a replicar el cambio en las ubicaciones de borde de CloudFront. Hasta que
la configuración de la distribución se actualiza en una ubicación de borde determinada, CloudFront
continúa reenviando solicitudes al servidor HTTP o al bucket de Amazon S3 anterior. Tan pronto como la
configuración de la distribución se actualiza en esa ubicación de borde, CloudFront comienza a reenviar
solicitudes al nuevo servidor HTTP o bucket de Amazon S3.

Cambiar el origen no requiere que CloudFront vuelva a incluir las cachés de borde con objetos del
nuevo origen. Siempre que las solicitudes de los lectores en su aplicación no cambien, CloudFront sigue
ofreciendo objetos que ya estén en una caché de borde hasta que el TTL de cada objeto caduque o hasta
que los objetos poco solicitados sean desalojados.

Ruta de origen
Si desea que CloudFront solicite el contenido de un directorio del recurso de AWS o de un origen
personalizado, escriba la ruta del directorio comenzando por una barra inclinada (/). CloudFront agrega
la ruta del directorio al valor de Origin Domain Name (Nombre de dominio de origen), por ejemplo, cf-
origin.example.com/production/images. No añada una barra inclinada (/) al final de la ruta.

Por ejemplo, suponga que ha especificado los siguientes valores para su distribución:

• Origin Domain Name (Nombre de dominio de origen): un bucket de Amazon S3 llamado DOC-
EXAMPLE-BUCKET
• Origin Path (Ruta de origen): /production
• Alternate Domain Names (CNAMEs) (Nombres de dominio alternativos (CNAME)): example.com

Cuando un usuario escribe example.com/index.html en un navegador, CloudFront envía una solicitud a


Amazon S3 de DOC-EXAMPLE-BUCKET/production/index.html.

Cuando un usuario escribe example.com/acme/index.html en un navegador, CloudFront envía una solicitud


a Amazon S3 de DOC-EXAMPLE-BUCKET/production/acme/index.html.

ID de origen
Una cadena que distingue de forma exclusiva este origen o grupo de origen en esta distribución. Si
crea comportamientos de la caché además del que ya hay predeterminado, utilice la ID de origen que
especifique aquí para identificar el origen o el grupo de origen al que desea que CloudFront dirija una
solicitud cuando la solicitud coincida con el patrón de ruta de ese comportamiento de la caché.

Para obtener más información, consulte los siguientes temas:

• Orígenes que puede especificar: Uso de los grupos de origen de CloudFront (p. 77)
• Creación de grupos de origen: Creación de un grupo de origen (p. 265)
• Trabajar con comportamientos de la caché: Configuración del comportamiento de la caché (p. 52)

47
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Intentos de conexión de origen


El número de veces que CloudFront intenta conectarse al origen. Puede especificar 1, 2 o 3 como el
número de intentos. El número predeterminado (si no especifica lo contrario) es 3.

Utilice esta configuración junto con Origin Connection Timeout (Tiempo de espera de conexión de origen)
para especificar cuánto tiempo debe esperar CloudFront antes de intentar conectarse al origen secundario
o devolver una respuesta de error al lector. De forma predeterminada, CloudFront espera hasta 30
segundos (3 intentos de 10 segundos cada uno) antes de intentar conectarse al origen secundario o
devolver una respuesta de error. Puede reducir este tiempo si especifica menos intentos, un tiempo de
espera de conexión más corto o ambas opciones.

Si se produce un error en el número especificado de intentos de conexión, CloudFront realiza una de las
acciones siguientes:

• Si el origen forma parte de un grupo de orígenes, CloudFront intenta conectarse al origen secundario. Si
se produce un error en el número especificado de intentos de conexión al origen secundario, CloudFront
devuelve una respuesta de error al lector.
• Si el origen no forma parte de un grupo de orígenes, CloudFront devuelve una respuesta de error al
lector.

En el caso de un origen personalizado (incluido un bucket de Amazon S3 configurado con alojamiento


de sitio web estático), esta configuración también especifica el número de veces que CloudFront intenta
obtener una respuesta del origen. Para obtener más información, consulte Tiempo de espera de respuesta
del origen (p. 51).

Tiempo de espera de conexión de origen


Número de segundos que espera CloudFront al intentar establecer una conexión con el origen. Puede
especificar un número de segundos entre 1 y 10 (ambos inclusive). El tiempo de espera predeterminado (si
no especifica lo contrario) es de 10 segundos.

Utilice esta configuración junto con Origin Connection Attempts (Intentos de conexión al origen) para
especificar cuánto tiempo debe esperar CloudFront antes de intentar conectarse al origen secundario o
antes de devolver una respuesta de error al lector. De forma predeterminada, CloudFront espera hasta
30 segundos (3 intentos de 10 segundos cada uno) antes de intentar conectarse al origen secundario o
devolver una respuesta de error. Puede reducir este tiempo si especifica menos intentos, un tiempo de
espera de conexión más corto o ambas opciones.

Si CloudFront no establece una conexión con el origen en el número de segundos especificado,


CloudFront realiza una de las acciones siguientes:

• Si el número especificado de Origin Connection Attempts (Intentos de conexión de origen) es superior


a 1, CloudFront intenta de nuevo establecer una conexión. CloudFront intenta hasta 3 veces, según lo
determinado por el valor de Origin Connection Attempts (Intentos de conexión de origen).
• Si fallan todos los intentos de conexión y el origen forma parte de un grupo de orígenes, CloudFront
intenta conectarse al origen secundario. Si se produce un error en el número especificado de intentos de
conexión al origen secundario, CloudFront devuelve una respuesta de error al lector.
• Si fallan todos los intentos de conexión y el origen no forma parte de un grupo de orígenes, CloudFront
devuelve una respuesta de error al lector.

Encabezados personalizados de origen


Si desea que CloudFront agregue encabezados personalizados cada vez que envía una solicitud al origen,
especifique los siguientes valores:

48
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Nombre del encabezado

El nombre de un encabezado que desea que CloudFront agregue a las solicitudes que envía a su
origen.
Valor

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


personalizado).

Para obtener más información, consulte Agregar encabezados personalizados a solicitudes de


origen (p. 319).

Para ver la cantidad máxima actual de encabezados personalizados que puede reenviar al origen, la
longitud máxima de los nombres de encabezado personalizados sus valores, y la longitud máxima total de
todos los nombres y valores de encabezados, consulte Cuotas (p. 519).

Restricción del acceso a un bucket


Note

Esto solo se aplica a los orígenes del bucket de Amazon S3 (aquellos que no utilizan el punto de
enlace del sitio web estático de S3).

Elija Yes (Sí) si desea requerir a los usuarios que accedan a los objetos de un bucket de Amazon S3
utilizando únicamente las URL de CloudFront, no las URL de Amazon S3. A continuación, especifique
valores adicionales.

Elija No si desea que los usuarios puedan acceder a los objetos mediante direcciones URL de CloudFront
o URL de Amazon S3.

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

Para obtener información acerca de cómo exigir a los usuarios a obtener acceso a los objetos de un
origen personalizado empleando solo URL de CloudFront, consulte Restricción del acceso a archivos en
orígenes personalizados (p. 165).

Identidad de acceso de origen


Note

Esto solo se aplica a los orígenes del bucket de Amazon S3 (aquellos que no utilizan el punto de
enlace del sitio web estático de S3).

Si eligió Yes (Sí) en Restrict Bucket Access (Restringir acceso al bucket), elija entre crear una nueva
identidad de acceso de origen o usar una existente que esté asociada a su cuenta de AWS. Si ya tiene
una identidad de acceso de origen, le recomendamos que use esa para facilitar el mantenimiento. Para
obtener más información acerca de las identidades de acceso de origen, consulte Restricción del acceso a
contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 223).

Comentario
Note

Esto solo se aplica a los orígenes del bucket de Amazon S3 (aquellos que no utilizan el punto de
enlace del sitio web estático de S3).

Si elige Create a New Identity (Crear una nueva identidad) enOrigin Access Identity (Identidad de acceso
de origen), escriba un comentario que identifique la nueva identidad de acceso de origen. CloudFront
creará la identidad de acceso de origen al crear esta distribución.

49
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Sus identidades
Note

Esto solo se aplica a los orígenes del bucket de Amazon S3 (aquellos que no utilizan el punto de
enlace del sitio web estático de S3).

Si eligió Use an Existing Identity (Utilizar una identidad existente) en Origin Access Identity (Identidad de
acceso de origen), elija la identidad de acceso de origen que desea utilizar. No puede utilizar una identidad
de acceso de origen asociada a otra cuenta de AWS.

Conceder permisos de lectura en un bucket


Note

Esto solo se aplica a los orígenes del bucket de Amazon S3 (aquellos que no utilizan el punto de
enlace del sitio web estático de S3).

Si desea que CloudFront conceda automáticamente a la identidad de acceso de origen permisos de lectura
de objetos de su bucket de Amazon S3, elija Yes, Update Bucket Policy (Sí, actualizar política de bucket).
Important

Al elegir Yes, Update Bucket Policy (Sí, actualizar política de bucket), CloudFront actualiza la
política del bucket para conceder a la identidad de acceso de origen especificada permisos de
lectura de objetos de dicho bucket. Sin embargo, CloudFront no elimina los permisos existentes
de la política del bucket ni los permisos sobre objetos individuales. Si los usuarios tenían permisos
de acceso a los objetos en dicho bucket con URL de Amazon S3, los conservan aún después de
que CloudFront actualice la política del bucket. Para ver o cambiar la política actual del bucket
y los permisos actuales de los objetos en dicho bucket, utilice un método proporcionado por
Amazon S3. Para obtener más información, consulte Concesión de permiso a la OAI para leer los
archivos del bucket de Amazon S3 (p. 227).

Si desea actualizar los permisos de forma manual, por ejemplo, si desea actualizar las ACL en sus objetos
en lugar de la actualizar los permisos del bucket, elija No, I will Update Permissions (No, actualizaré los
permisos).

Protocolo SSL mínimo del origen


Note

Esto solo se aplica a los orígenes personalizados.

Elija el protocolo TLS/SSL que CloudFront puede utilizar como mínimo cuando establece una conexión
HTTPS con el origen. Los protocolos TLS inferiores son menos seguros, por lo que le recomendamos que
elija el protocolo TLS más reciente que admita el origen.

Si utiliza la API de CloudFront para establecer el protocolo TLS/SSL para que CloudFront lo utilice, no
podrá establecer un protocolo mínimo. En su lugar, debe especificar todos los protocolos TLS/SSL que
CloudFront puede utilizar con su origen. Para obtener más información, consulte OriginSslProtocols en la
Referencia de la API de Amazon CloudFront.

Origin Protocol Policy


Note

Esto solo se aplica a los orígenes personalizados.

La política de protocolo que desea que CloudFront utilice cuando solicite objetos del servidor de origen.

50
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Elija uno de los valores siguientes:

• HTTP Only (Solo HTTP): CloudFront utiliza solo HTTP para acceder al origen.
Important

HTTP Only (Solo HTTP): es la configuración predeterminada cuando el origen es un punto


de enlace de alojamiento de sitio web estático de Amazon S3, ya que Amazon S3 no admite
conexiones HTTPS para puntos de enlace de alojamiento de sitio web estático. La consola de
CloudFront no admite el cambio de esta configuración para los puntos de enlace de alojamiento
de sitios web estáticos de Amazon S3.
• HTTPS Only (Solo HTTPS): CloudFront solo utiliza HTTPS para obtener acceso al origen.
• Match Viewer (Coincidir con lector): CloudFront se comunica con el origen mediante HTTP o HTTPS, en
función del protocolo de la solicitud del lector. Tenga en cuenta que CloudFront almacena en caché el
objeto solo una vez, incluso si los lectores realizan solicitudes a través de los protocolos HTTP y HTTPS.
Important

En el caso de solicitudes HTTPS de lectores que CloudFront reenvía a este origen, uno de los
nombres de dominio del certificado SSL en su servidor de origen debe coincidir con el nombre
de dominio que especifique en Origin Domain Name (Nombre de dominio de origen). En caso
contrario, CloudFront responde a las solicitudes del lector con un código de estado HTTP 502
(Gateway incorrecta) en lugar de devolver el objeto solicitado. Para obtener más información,
consulte Requisitos para la utilización de certificados SSL/TLS con CloudFront (p. 152).

Tiempo de espera de respuesta del origen


Note

Esto solo se aplica a los orígenes personalizados.

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

• Tiempo (en segundos) que CloudFront espera una respuesta después de enviar una solicitud al origen.
• Tiempo (en segundos) que CloudFront espera después de recibir el paquete de una respuesta desde el
origen y antes de recibir el paquete siguiente.

El tiempo de espera predeterminado es de 30 segundos. Puede cambiar el valor para que sea de 1 a 60
segundos. Si necesita un valor de tiempo de espera situado fuera de ese intervalo, cree un caso en el
Centro de soporte de AWS.
Tip

Si desea aumentar el valor de tiempo de espera porque los lectores están experimentando
errores de código de estado HTTP 504, considere la posibilidad de explorar otras formas de
eliminar dichos errores antes de cambiar el valor del tiempo de espera. Consulte las sugerencias
de resolución de problemas en Código de estado HTTP 504 (tiempo de espera de gateway
agotado) (p. 293).

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

• Solicitudes GET y HEAD: si el origen no responde o deja de responder durante el tiempo de espera de la
respuesta, CloudFront interrumpe la conexión. CloudFront intenta de nuevo conectarse de acuerdo con
el valor de Intentos de conexión de origen (p. 48).
• Solicitudes DELETE, OPTIONS, PATCH, PUT y POST: si el origen no responde mientras dura el tiempo de
espera de lectura, CloudFront interrumpe la conexión y no vuelve a intentar ponerse en contacto con el
origen. El cliente puede volver a enviar la solicitud en caso de que sea necesario.

51
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Tiempo de conexión persistente del origen


Note

Esto solo se aplica a los orígenes personalizados.

Tiempo (en segundos) que CloudFront intenta mantener una conexión con el origen personalizado
después de que obtenga el último paquete de una respuesta. Garantizar una conexión persistente
ahorra el tiempo necesario para restablecer la conexión TCP y realizar otro protocolo de enlace TLS para
solicitudes posteriores. Aumentar el tiempo de keep-alive ayuda a mejorar la métrica de solicitud por
conexión en distribuciones.
Note

Para que el valor de Origin Keep-alive Timeout (Tiempo de espera de keep-alive de origen) tenga
efecto, el origen debe estar configurado para permitir las conexiones persistentes.

El tiempo de espera predeterminado es de 5 segundos. Puede cambiar el valor a un número comprendido


entre 1 y 60 segundos. Si necesita un tiempo de espera de actividad mantenida superior a 60 segundos,
cree un caso en el Centro de soporte de AWS.

Puerto HTTP
Note

Esto solo se aplica a los orígenes personalizados.

Opcional. El puerto HTTP que escucha el origen personalizado. Los valores válidos son los puertos 80,
443 y 1024 y 65535. El valor predeterminado es el puerto 80.
Important

El puerto 80 es la configuración predeterminada cuando el origen es un punto de enlace de


alojamiento de sitio web estático de Amazon S3, ya que Amazon S3 solo admite el puerto 80 para
los puntos de enlace de alojamiento de sitio web estático. La consola de CloudFront no admite el
cambio de esta configuración para los puntos de enlace de alojamiento de sitios web estáticos de
Amazon S3.

Puerto HTTPS
Note

Esto solo se aplica a los orígenes personalizados.

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.

Configuración del comportamiento de la caché


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

• El patrón de ruta.
• Si ha configurado varios orígenes para su distribución de CloudFront, el origen al que desea que
CloudFront reenvíe sus solicitudes.

52
Amazon CloudFront Guía para desarrolladores
Valores que especifica

• 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 agregue 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 crear
la distribución. Después de crear una distribución, puede crear más comportamientos de la caché que
definen cómo CloudFront responde cuando recibe una solicitud de objetos que coincide con un patrón de
ruta, por ejemplo, *.jpg. Si crea más comportamientos de la caché, el predeterminado será siempre el
último en procesarse. Los demás comportamientos de la caché se procesan en el orden en que aparecen
en la consola de CloudFront o, si está utilizando la API de CloudFront, en el orden en que se enumeran en
el elemento DistributionConfig de la distribución. Para obtener más información, consulte Patrón de
ruta (p. 53).

Al crear un comportamiento de la caché, debe especificar el origen desde el que desea que CloudFront
obtenga objetos. Por lo tanto, si desea que CloudFront distribuya objetos de todos los orígenes, debe
crear al menos tantos comportamientos de la caché (incluido el predeterminado) como orígenes tenga.
Por ejemplo, si tiene dos orígenes y solo el comportamiento de la caché predeterminado, este hace que
CloudFront obtenga objetos desde uno de los orígenes, pero el otro origen no se usa jamás.

Para obtener información sobre el número máximo actual de comportamientos de la caché que puede
agregar a una distribución o para solicitar una cuota (antes denominada límite) más alta, consulte Cuotas
generales de distribuciones (p. 519).

Patrón de ruta
El patrón de ruta (por ejemplo, images/*.jpg) que especifica a qué solicitudes desea que sea aplicable
este comportamiento de la caché. Cuando CloudFront recibe una solicitud de un usuario final, la ruta
solicitada se compara con patrones de ruta en el orden en el que se enumeran los comportamientos de la
caché en la distribución. La primera coincidencia determina el comportamiento de la caché que se aplicará
a dicha solicitud. Por ejemplo, suponga que tiene tres comportamientos de la caché con los siguientes tres
patrones de ruta, en este orden:

• images/*.jpg
• images/*
• *.gif

Note

De forma opcional, puede incluir una barra inclinada (/) al principio de la ruta de acceso, por
ejemplo, /images/*.jpg. El comportamiento de CloudFront es el mismo con o sin la / al
principio.

Una solicitud del archivo images/sample.gif no satisface el primer patrón de ruta, por lo que los
comportamientos de la caché asociados no se aplicarán a la solicitud. El archivo satisface el segundo
patrón de ruta, por lo que los comportamientos de la caché asociados al segundo patrón de ruta se aplican
a pesar de que la solicitud también coincide con el tercer patrón de ruta.
Note

Al crear una nueva distribución, el valor de Path Pattern (Patrón de ruta) del comportamiento
de la caché predeterminado se establece como * (todos los archivos) y no puede modificarse.
Este valor hace que CloudFront reenvíe todas las solicitudes de los objetos al origen que ha
especificado en el campo Nombre de dominio de origen (p. 46). Si la solicitud de un objeto no

53
Amazon CloudFront Guía para desarrolladores
Valores que especifica

coincide con el patrón de ruta de ningún otro comportamiento de la caché, CloudFront aplica el
comportamiento que especifique al comportamiento de la caché predeterminado.
Important
Defina los patrones de ruta y su orden detenidamente para evitar que los usuarios puedan
acceder a contenido al que no desea otorgar acceso. Supongamos que una solicitud coincide
con el patrón de ruta de dos comportamientos de la caché. El primer comportamiento de la caché
no requiere URL firmadas ni cookies firmadas y el segundo requiere URL firmadas. Los usuarios
pueden tener acceso a los objetos sin usar una URL firmada porque CloudFront procesa el
comportamiento de la caché asociado a la primera coincidencia.

Si trabaja con un canal de MediaPackage, debe incluir patrones de ruta específicos para el
comportamiento de la caché que se haya definido para el tipo de punto de enlace del origen. Por ejemplo,
en el caso de un punto de enlace DASH, debería escribir *.mpd para Path Pattern (Patrón de ruta). Para
obtener más información e instrucciones específicas, consulte Servir vídeo en directo formateado con AWS
Elemental MediaPackage (p. 333).

La ruta especificada es aplicable a las solicitudes de todos los archivos del directorio especificado y sus
subdirectorios. CloudFront no tiene en cuenta las cadenas de consulta ni cookies a la hora de evaluar el
patrón de ruta. Por ejemplo, si un directorio images contiene subdirectorios product1 y product2, el
patrón de ruta images/*.jpg resulta aplicable a las solicitudes de cualquier archivo .jpg en los directorios
images, images/product1y images/product2. Si desea aplicar un comportamiento de la caché a los
archivos del directorio images/product1 que sea distinto al comportamiento a aplicar a los archivos de
los directorios images y images/product2, cree un comportamiento de la caché independiente para
images/product1 y muévalo a la posición superior (previa) a la del comportamiento de la caché para el
directorio images.

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 les
siguen exactamente dos caracteres, por ejemplo, ant.jpg y abe.jpg.

*.doc* Todos los archivos cuyas extensiones de nombre de archivo comienzan por .doc,
por ejemplo, archivos .doc, .docx y .docm. En este caso no se puede utilizar
el patrón de ruta *.doc?, ya que no sería aplicable a las solicitudes de archivos
.doc; el comodín ? sustituye exactamente un carácter.

La longitud máxima de un patrón de ruta es 255 caracteres. El valor puede contener cualquiera de los
siguientes caracteres:

• A-Z, a-z

54
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Los patrones de ruta distinguen entre mayúsculas y minúsculas, por lo que el patrón de ruta *.jpg no
sería aplicable al archivo LOGO.JPG.
• 0-9
• _-.*$/~"'@:+
• &, pasado y devuelto como &amp;

Origen o grupo de origen


Especifique el valor de un origen o grupo de origen existente. Este identifica el origen o el grupo de
orígenes al que desea que CloudFront dirija solicitudes cuando una solicitud (como https://example.com/
logo.jpg) coincide con el patrón de ruta para un comportamiento de caché (como *.jpg) o para el
comportamiento de caché predeterminado (*).

Viewer Protocol Policy


Elija la política de protocolo que desea que los lectores utilicen para acceder a su contenido en las
ubicaciones de borde de CloudFront:

• HTTP and HTTPS (HTTP y HTTPS): los espectadores pueden utilizar ambos protocolos.
• Redirect HTTP to HTTPS (Redireccionamiento de HTTP a HTTPS): los espectadores pueden utilizar
ambos protocolos, pero las solicitudes HTTP se redirigirán automáticamente a solicitudes HTTPS.
• HTTPS Only (Solo HTTPS): los espectadores solo pueden obtener acceso a su contenido si utilizan
HTTPS.

Para obtener más información, consulte Exigir HTTPS para la comunicación entre lectores y
CloudFront (p. 139).

Métodos HTTP permitidos


Especifique 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 o para obtener
encabezados de objeto.
• GET, HEAD, OPTIONS: puede utilizar CloudFront solo para obtener objetos del origen, obtener
encabezados de objeto o recuperar una lista de las opciones admitidas por su servidor de origen.
• GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE: puede utilizar CloudFront para obtener, agregar,
actualizar y eliminar objetos, así como para obtener encabezados de objeto. Además, puede realizar
otras operaciones de POST como enviar datos desde un formulario web.
Note
CloudFront almacena en caché las respuestas a las solicitudes GET y HEAD y, de forma
opcional, de las solicitudes OPTIONS. CloudFront no almacena en caché las respuestas a las
solicitudes que utilizan los otros métodos.

Si utiliza un bucket de Amazon S3 como origen de la distribución y, además, usa identidades de acceso
de origen de CloudFront, las solicitudes POST no se admiten en algunas regiones de Amazon S3 y las
solicitudes PUT en esas regiones necesitarán un encabezado adicional. Para obtener más información,
consulte Uso de una OAI en regiones de Amazon S3 que solo admiten autenticación Signature Version
4 (p. 230).
Important
Si elige GET, HEAD, OPTIONS o GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE,
seguramente necesite restringir el acceso al bucket de Amazon S3 o a su origen personalizado

55
Amazon CloudFront Guía para desarrolladores
Valores que especifica

para que los usuarios no puedan realizar operaciones indeseadas. Los siguientes ejemplos
explican cómo restringir el acceso:

• Si utiliza Amazon S3 como origen de la distribución: cree una identidad de acceso de origen
de CloudFront para restringir el acceso a su contenido de Amazon S3 y conceda permisos a la
identidad de acceso de origen. Por ejemplo, si configura CloudFront para que acepte y reenvíe
estos métodos solo porque desea utilizar PUT, deberá volver a configurar la políticas del bucket
de Amazon S3 o las ACL para gestionar las solicitudes DELETE de forma adecuada. Para
obtener más información, consulte Restricción del acceso a contenido de Amazon S3 utilizando
una identidad de acceso de origen (p. 223).
• Si utiliza un origen personalizado: configure el servidor de origen para gestionar todos los
métodos. Por ejemplo, si configura CloudFront para que acepte y reenvíe estos métodos solo
porque desea utilizar POST, deberá volver a configurar el servidor de origen para gestionar las
solicitudes DELETE de forma adecuada.

Configuración de cifrado de nivel de campo


Si desea aplicar el cifrado en el nivel de campo en campos de datos específicos, elija una configuración de
cifrado 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 la
información confidencial (p. 241).

Métodos HTTP almacenados en caché


Especifique si desea que CloudFront almacene en caché la respuesta de su origen cuando un lector envíe
una solicitud OPTIONS. CloudFront siempre almacena en caché las respuesta a las solicitudes GET y
HEAD.

Caché en función de encabezados de solicitud seleccionados


Especifique si desea que CloudFront almacene en caché objetos en función de los valores de los
encabezados especificados:

• None (improves caching) (Ninguno (mejora el almacenamiento en caché)): CloudFront no almacena en


caché los objetos en función de los valores de encabezado.
• Whitelist (Lista blanca): CloudFront almacena en caché los objetos solo según los valores de los
encabezados especificados. Utilice Whitelist Headers (Encabezados de la lista blanca) para elegir los
encabezados en los que desea que CloudFront base el almacenamiento en caché.
• All (Todos): CloudFront no almacena en caché los objetos que están asociados con este
comportamiento de la caché. En su lugar, CloudFront envía todas las solicitudes al origen. (No se
recomienda para los orígenes de Amazon S3).

Independientemente de la opción que elija, CloudFront reenvía determinados encabezados a su origen y


realiza acciones específicas en función de los encabezados que reenvíe. Para obtener más información
acerca de cómo administra CloudFront el reenvío de encabezado, consulte Encabezados de solicitudes
HTTP y comportamiento de CloudFront (personalizado y orígenes de S3) (p. 309).

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

Whitelist Headers
Especifique los encabezados que desea que CloudFront tenga en cuenta a la hora de almacenar los
objetos en caché. Seleccione los encabezados en la lista de encabezados disponibles y elija Add (Añadir).

56
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Para reenviar un encabezado personalizado, escriba el nombre en el campo y elija Add Custom (Añadir
personalizado).

Para obtener información sobre el número máximo actual de encabezados que puede incluir en la lista
blanca para cada comportamiento de la caché o para solicitar una cuota (antes denominada límite) más
alta, consulte Cuotas en encabezados personalizados (p. 522).

Almacenamiento de objetos en caché


Si su servidor de origen está agregando un encabezado Cache-Control a sus objetos para controlar
el tiempo durante el cual deben mantenerse en la caché de CloudFront y no desea cambiar el valor de
Cache-Control, elija Use Origin Cache Headers (Usar encabezados de caché de origen).

Para especificar el tiempo mínimo y máximo durante el cual los objetos deben mantenerse en la caché
de CloudFront independientemente de los encabezados Cache-Control y un tiempo predeterminado
durante el cual un objeto deberá mantenerse en la caché de CloudFront cuando le falte el encabezado
Cache-Control, elija Customize (Personalizar). A continuación, especifique los valores en los campos
Minimum TTL (Tiempo de vida mínimo), Default TTL (Tiempo de vida predeterminado) y Maximum TTL
(Tiempo de vida máximo).

Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).

Tiempo de vida mínimo


Especifique el tiempo mínimo, en segundos, que desea que los objetos permanezcan en la caché de
CloudFront antes de que CloudFront envíe otra solicitud al origen para ver si el objeto se ha actualizado.

Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).

Tiempo de vida máximo


Especifique el tiempo máximo en segundos durante el cual desea que los objetos permanezcan en las
cachés de CloudFront antes de que CloudFront consulte a su origen para determinar si el objeto se ha
actualizado. El valor que especifique en Maximum TTL (Tiempo de vida máximo) será aplicable solo
cuando el origen personalizado añada 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ánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).

Para especificar un valor en Maximum TTL (Tiempo de vida máximo), elija la opción Customize
(Personalizar) en el ajuste Object Caching (Almacenamiento de objetos en caché).

El valor predeterminado de Maximum TTL (Tiempo de vida máximo) es 31 536 000 segundos (un
año). Si cambia el valor de Minimum TTL (Tiempo de vida mínimo) o de Default TTL (Tiempo de vida
predeterminado) a más de 31 536 000 segundos, el valor predeterminado de Maximum TTL (Tiempo de
vida máximo) cambia al valor Default TTL (Tiempo de vida predeterminado).

Tiempo de vida (TTL) predeterminado


Especifique el tiempo predeterminado, en segundos, durante el cual desea que los objetos permanezcan
en las cachés de CloudFront antes de que CloudFront reenvíe otra solicitud a su origen para determinar si
el objeto se ha actualizado. El valor que especifique en Default TTL (Tiempo de vida predeterminado) es
aplicable solo cuando el origen 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ánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).

Para especificar un valor en Default TTL (Tiempo de vida predeterminado), elija la opción Customize
(Personalizar) en el ajuste Object Caching (Almacenamiento de objetos en caché).

57
Amazon CloudFront Guía para desarrolladores
Valores que especifica

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

Forward Cookies (Reenvío de cookies)


Note

Esta opción solo se aplica a los buckets de Amazon S3 configurados como punto de enlace del
sitio web.

Especifique si desea que CloudFront reenvíe las cookies al servidor de origen y, en tal caso, cuáles de
ellas. Si decide reenviar únicamente unas cookies determinadas (las contenidas en una lista blanca
de cookies), escriba sus nombres en el campo Whitelist Cookies (Lista blanca de cookies). Si elige All
(Todas), CloudFront reenvía todas las cookies independientemente de la cantidad que utilice la aplicación.

Amazon S3 no procesa las cookies, y reenviar cookies al origen reduce la capacidad de almacenamiento
en caché. Para comportamientos de la caché que reenvíen solicitudes a un origen de Amazon S3, elija
None (Ninguna) en Forward Cookies (Reenviar cookies).

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

Whitelist Cookies (Lista blanca de cookies)


Note

Esta opción solo se aplica a los buckets de Amazon S3 configurados como punto de enlace del
sitio web.

Si eligió Whitelist (Lista blanca) en la lista Forward Cookies (Reenviar cookies), escriba en el campo
Whitelist Cookies (Lista blanca de cookies) los nombres de las cookies que desea que CloudFront reenvíe
a su servidor de origen para este comportamiento de la caché. Escriba una cookie por línea.

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 cookie
con el nombre:

userid_member-number

Donde el valor de member-number es único para cada usuario. Desea que CloudFront almacene en
caché una versión independiente del objeto por cada miembro. Podría conseguirlo reenviando todas las
cookies al origen, pero las solicitudes de lectores incluyen algunas que no desea que CloudFront las
almacene en caché. Otra opción sería especificar el siguiente valor como nombre de cookie, lo que haría
que CloudFront reenviara al origen todas las cookies que comienzan por userid_:

userid_*

Para obtener información sobre el número máximo actual de nombres de cookies que puede incluir en la
lista blanca para cada comportamiento de la caché o para solicitar una cuota (antes denominada límite)
más alta, consulte Cuotas en las cookies de la lista blanca (p. 522).

58
Amazon CloudFront Guía para desarrolladores
Valores que especifica

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 los
parámetros de las cadenas de consulta. Elija una de las siguientes opciones:

Ninguno (mejora el almacenamiento en caché)

Seleccione esta opción si el origen devuelve la misma versión de un objeto independientemente


de los valores de los parámetros de las cadenas de consulta. Esto aumenta la probabilidad de que
CloudFront pueda atender una solicitud de la caché, lo que mejora el rendimiento y reduce la carga en
el origen.
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ón
de uno o más parámetros de cadenas de consulta. A continuación, especifique los parámetros que
desee que CloudFront utilice como base para el almacenamiento en caché en el campo Lista blanca
de cadenas de consulta (p. 59).
Reenviar todo y almacenar todo en caché

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

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

Lista blanca de cadenas de consulta


Si eligió Forward all, cache based on whitelist (Reenviar todo y almacenar en caché en función de la
lista blanca) en Reenvío de cadenas de consulta y almacenamiento en caché (p. 59), especifique qué
parámetros de cadenas de consulta desea que CloudFront utilice como base para almacenar en caché.

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

Elija No si tiene un servidor Microsoft IIS que desea utilizar como origen para distribuir archivos multimedia
en el formato Microsoft Smooth Streaming, o si no distribuye archivos multimedia Smooth Streaming.
Note

Si especifica Yes (Sí), puede seguir distribuyendo otro tipo de contenido con este comportamiento
de la caché si dicho contenido coincide con el valor de Path Pattern (Patrón de ruta).

Para obtener más información, consulte Configuración de vídeo bajo demanda para Microsoft Smooth
Streaming (p. 329).

Restringir el acceso del visor (usar URL firmadas o cookies firmadas)


Si desea que las solicitudes de objetos que coinciden con el valor de PathPattern en este
comportamiento 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 este
comportamiento de la caché utilicen direcciones URL firmadas, elija Yes (Sí). A continuación, especifique
las cuentas de AWS que desea utilizar para crear URL firmadas; a estas cuentas se les conoce como
signatarios de confianza.

59
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Para obtener más información acerca de los signatarios de confianza, consulte Especificación de los
signatarios que pueden crear URL firmadas y cookies firmadas (p. 166).

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

• Self (Automático): utilice la cuenta con la que tiene la sesión iniciada en la consola de administración
de AWS como signatario de confianza. Si actualmente su sesión está iniciada como usuario de IAM, la
cuenta de AWS asociada se añade como signatario de confianza.
• Specify Accounts (Especificar cuentas): escriba los números de cuenta de los signatarios de confianza
en el campo AWS Account Numbers (Números de cuenta de AWS).

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

Si está actualizando una distribución que ya utiliza para distribuir contenido, añada signatarios
de confianza solo cuando esté listo para comenzar a generar URL firmadas para los objetos.
Después de añadir signatarios de confianza a una distribución, los usuarios deben utilizar las
URL firmadas para obtener acceso a los objetos que coincidan con PathPattern para este
comportamiento de la caché.

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 con
la cuenta actual, escriba un número de cuenta de AWS por línea en este campo. Tenga en cuenta lo
siguiente:

• Las cuentas que especifique deben tener al menos un par de claves de CloudFront activo. Para obtener
más información, consulte Creación de pares de claves para los signatarios (p. 168).
• No puede crear pares de claves de CloudFront para usuarios de IAM, lo que significa que no puede
utilizar usuarios de IAM como signatarios de confianza.
• Para obtener información acerca de cómo obtener el número de una cuenta de AWS, consulte ¿Cómo
obtengo credenciales de seguridad? en la Referencia general de Amazon Web Services.
• Si escribe el número de la cuenta actual, CloudFront marca automáticamente la casilla Self (Automático)
y elimina el número de cuenta de la lista AWS Account Numbers (Números de cuenta de AWS).

Comprimir objetos automáticamente


Si desea que CloudFront comprima automáticamente archivos de tipos determinados cuando los lectores
admiten contenido comprimido, elija Yes (Sí). Cuando CloudFront comprime el contenido, las descargas
son más veloces, ya que los archivos son más pequeños y las páginas web se muestran más rápido a sus
usuarios. Para obtener más información, consulte Ofrecer archivos comprimidos (p. 128).

Evento CloudFront
Puede elegir ejecutar una función de Lambda cuando se produzcan uno o varios de los siguientes eventos
de 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)

60
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Para obtener más información, consulte A continuación, se explica cómo decidir qué evento de CloudFront
utilizar para desencadenar una función de Lambda. (p. 361).

El ARN de la función de Lambda.


Especifique el nombre de recurso de Amazon (ARN) de la función de Lambda para la que desea agregar
un desencadenador. Para obtener información sobre cómo obtener el ARN de una función, consulte el
paso 1 del procedimiento Agregar desencadenadores mediante la consola de CloudFront.

Ajustes de la distribución
Los siguientes valores se aplican a toda la distribución.

Clase de precio
Elija la clase de precio que corresponde al precio máximo que desea pagar por el servicio de CloudFront.
De forma predeterminada, CloudFront distribuye sus objetos desde ubicaciones de borde en todas las
regiones de CloudFront.

Para obtener más información acerca de las clases de precios y cómo la clase que elija afecta al
rendimiento de CloudFront para su distribución, consulte Elegir la clase de precio para una distribución de
CloudFront (p. 14). Para obtener más información acerca de los precios de CloudFront, incluido cómo se
asignan las clases de precios a las regiones de CloudFront, consulte Precios de Amazon CloudFront.

ACL web de AWS WAF


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

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

Nombres de dominio alternativos (CNAME)


Opcional. Especifique uno o varios nombres de dominio que desee utilizar para direcciones URL de
sus objetos en lugar del nombre de dominio que CloudFront asigna al crear la distribución. Debe ser el
propietario del nombre de dominio, o tener autorización para utilizarlo, lo que puede demostrar añadiendo
un certificado SSL/TLS.

Por ejemplo, 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

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

61
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Important

Si añade un CNAME para www.example.com a la distribución, también debe hacer lo siguiente:

• Crear o actualizar un registro de CNAME en el servicio de DNS para dirigir las consultas de
www.example.com a d111111abcdef8.cloudfront.net.
• Agregar un certificado a CloudFront de una entidad de certificación (CA) de confianza emitido
para el nombre de dominio (CNAME) que va a agregar a la distribución, con el fin de demostrar
que dispone de autorización para utilizar el nombre de dominio.

Debe tener permiso para crear un registro CNAME con el proveedor de servicios de DNS para el
dominio. Por lo general, esto indica que es el propietario del dominio o que está desarrollando una
aplicación para el propietario del dominio.

Para obtener el número máximo actual de nombres de dominio alternativos que puede agregar a una
distribución o solicitar una cuota (antes denominada límite) más alta, consulte Cuotas generales de
distribuciones (p. 519).

Para obtener más información acerca de los nombres de dominio alternativos, consulte Uso de URL
personalizadas para archivos añadiendo nombres de dominio alternativos (CNAME) (p. 80). Para
obtener más información acerca de las direcciones URL de CloudFront, consulte Personalización del
formato de URL para archivos en CloudFront (p. 117).

Certificado SSL
Si ha especificado un nombre de dominio alternativo para usarlo con la distribución, seleccione Custom
SSL Certificate (Certificado SSL personalizado) y, a continuación, para validar su autorización para utilizar
el nombre de dominio alternativo, elija un certificado emitido para él. Si desea que los espectadores utilicen
HTTPS para obtener acceso a sus objetos, elija el ajuste correspondiente.
Note

Antes de que pueda especificar un certificado SSL personalizado, debe especificar un nombre
de dominio alternativo válido. Para obtener más información, consulte Requisitos para el
uso de nombres de dominio alternativos (p. 87) y Usar nombres de dominio alternativos y
HTTPS (p. 150).

• Default CloudFront Certificate (*.cloudfront.net) (Certificado de CloudFront predeterminado


(*.cloudfront.net)): elija esta opción si desea utilizar el nombre de dominio de CloudFront en las URL de
los objetos, por ejemplo, https://d111111abcdef8.cloudfront.net/image1.jpg.
• Custom SSL Certificate (Certificado SSL personalizado): elija esta opción si desea utilizar su propio
nombre de dominio en las URL de sus objetos como nombre de dominio alternativo; por ejemplo
https://example.com/image1.jpg. A continuación, elija un certificado que haya sido emitido para
el nombre de dominio alternativo. En la lista de certificados puede haber los elementos siguientes:
• Certificados proporcionados por AWS Certificate Manager
• Certificados adquiridos a una entidad de certificación de terceros y cargados en ACM
• Certificados adquiridos a una entidad de certificación de terceros y cargados en el almacén de
certificados de IAM

Si elige esta opción, le recomendamos que utilice solo un nombre de dominio alternativo en las URL
de sus objetos (https://example.com/logo.jpg). Si utiliza el nombre de dominio de la distribución de
CloudFront (https://d111111abcdef8.cloudfront.net/logo.jpg) y un cliente utiliza un lector antiguo que
no admite SNI, la respuesta del lector depende del valor que elija para Clients Supported (Clientes
admitidos):
• All Clients (Todos los clientes): el lector muestra una advertencia, ya que el nombre de dominio de
CloudFront no coincide con el nombre de dominio del certificado SSL/TLS.

62
Amazon CloudFront Guía para desarrolladores
Valores que especifica

• Only Clients that Support Server Name Indication (SNI) (Solo los clientes que admiten indicación de
nombre de servidor (SNI)): CloudFront interrumpe la conexión con el lector sin devolver el objeto.

Compatibilidad con clientes SSL personalizados


Si especificó uno o más nombres de dominio alternativos y un certificado SSL personalizado para la
distribución, elija cómo desea que CloudFront sirva las solicitudes HTTPS:

• Clientes compatibles con la indicación de nombre de servidor (SNI) - (recomendado): con esta
configuración, prácticamente todos los navegadores web y clientes modernos pueden conectarse a
la distribución, ya que admiten SNI. Sin embargo, algunos usuarios pueden utilizar navegadores web
antiguos o clientes que no admiten SNI, lo que significa que no pueden conectarse a la distribución.

Para aplicar esta configuración mediante la API de CloudFront, especifique sni-only en el campo
SSLSupportMethod. En AWS CloudFormation, el campo se denomina SslSupportMethod (tenga en
cuenta el uso de mayúsculas y minúsculas).
• Compatibilidad con clientes heredados: con esta configuración, los navegadores web antiguos y los
clientes que no admiten SNI pueden conectarse a la distribución. Sin embargo, a esta configuración se
le aplican cargos mensuales adicionales. Para obtener el precio exacto, vaya a la página Precios de
Amazon CloudFront y busque la página de SSL personalizado de IP dedicada.

Para aplicar esta configuración mediante la API de CloudFront, especifique vip en el campo
SSLSupportMethod. En AWS CloudFormation, el campo se denomina SslSupportMethod (tenga en
cuenta el uso de mayúsculas y minúsculas).

Para obtener más información, consulte Elegir cómo CloudFront atiende las solicitudes HTTPS (p. 150).

Política de seguridad
Especifique la política de seguridad que desea que utilice CloudFront para las conexiones HTTPS con
lectores (clientes). Una política de seguridad determina dos ajustes:

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

Para obtener más información acerca de las políticas de seguridad, incluidos los protocolos y los cifrados
que incluye cada una, consulte Protocolos y cifrados admitidos entre lectores y CloudFront (p. 145).

Las políticas de seguridad disponibles dependen de los valores que especifique para el Certificado SSL
y el Soporte de cliente SSL personalizado (conocidos como CloudFrontDefaultCertificate y
SSLSupportMethod en la API de CloudFront):

• Cuando el SSL Certificate (Certificado SSL) es el Default CloudFront Certificate


(*.cloudfront.net) (Certificado predeterminado de CloudFront (*.cloudfront.net)) (cuando
CloudFrontDefaultCertificate es true en la API), CloudFront configura automáticamente la
política de seguridad a TLSv1.
• Cuando el Certificado SSL es el Certificado SSL personalizado (ejemplo.com), y el Soporte de cliente
SSL personalizado es Clientes que admiten la indicación de nombre de servidor (SNI) (Recomendado)
(cuando CloudFrontDefaultCertificate es false y SSLSupportMethod es sni-only en la
API), puede elegir entre las siguientes políticas de seguridad:
• TLSv1.2_2019
• TLSv1.2_2018
• TLSv1.1_2016
• TLSv1_2016

63
Amazon CloudFront Guía para desarrolladores
Valores que especifica

• TLSv1
• Cuando el Certificado SSL es el Certificado SSL personalizado (ejemplo.com) y el Soporte de cliente
SSL personalizado es el Soporte de clientes heredados (cuando CloudFrontDefaultCertificate
es false y SSLSupportMethod es vip en la API), puede elegir entre las siguientes políticas de
seguridad:
• TLSv1
• SSLv3

En esta configuración, las políticas de seguridad TLSv1.2_2019, TLSv1.2_2018, TLSv1.1_2016 y


TLSv1_2016 no están disponibles en la API ni en la consola de CloudFront. Si desea utilizar una de
estas políticas de seguridad, tiene las siguientes opciones:
• Evalúe si su distribución necesita soporte de clientes heredados con direcciones IP dedicadas. Si sus
espectadores admiten la indicación de nombre de servidor (SNI), le recomendamos que actualice la
configuración de Soporte de cliente SSL personalizado de su distribución a Clientes que admiten la
indicación de nombre de servidor (SNI) (pase de SSLSupportMethod a sni-only en la API). Esto le
permite utilizar cualquiera de las políticas de seguridad TLS disponibles y también puede reducir sus
cargos de CloudFront.
• Si tiene que mantener el soporte de clientes heredados con direcciones IP dedicadas, puede solicitar
alguna de las otras políticas de seguridad de TLS (TLSv1.2_2019, TLSv1.2_2018, TLSv1.1_2016 o
TLSv1_2016) mediante la creación de un caso en el Centro de soporte de AWS.
Note
Antes de ponerse en contacto con AWS Support para solicitar este cambio, tenga en cuenta
lo siguiente:
• Cuando agrega una de estas políticas de seguridad (TLSv1.2_2019, TLSv1.2_2018,
TLSv1.1_2016, o TLSv1_2016) a una distribución de soporte de clientes heredados, la
política de seguridad se aplica a todas las solicitudes de lector que no sean SNI para todas
las distribuciones de soporte de clientes heredados de su cuenta de AWS. En cambio,
cuando los espectadores envían solicitudes SNI a una distribución con soporte de clientes
heredados, se aplica la política de seguridad de dicha distribución. Para asegurarse de que
se aplica su política de seguridad deseada a todas las solicitudes de espectador enviadas
a todas las distribuciones de soporte de clientes heredados de su cuenta de AWS, añada la
política de seguridad deseada a cada distribución individualmente.
• Por definición, la nueva política de seguridad no admite los mismos cifrados y protocolos
que la anterior. Por ejemplo, si decide actualizar la política de seguridad de una distribución
de TLSv1 a TLSv1.1_2016, esa distribución ya no admitirá el cifrado DES-CBC3-SHA. Para
obtener más información sobre los cifrados y protocolos compatibles con cada política de
seguridad, consulte Protocolos y cifrados admitidos entre lectores y CloudFront (p. 145).

Versiones de HTTP compatibles


Elija las versiones de HTTP que desea que admita la distribución cuando los lectores se comuniquen
con CloudFront. Para que los lectores y CloudFront utilicen HTTP/2, los lectores deben admitir TLS 1.2 o
posterior e Identificación de nombres de servidor (SNI).

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

Objeto raíz predeterminado


Opcional. El objeto que quiera que CloudFront solicite desde su origen (por ejemplo, index.html) cuando
un lector solicite la URL raíz de la distribución (http://www.example.com/) en lugar de 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.

64
Amazon CloudFront Guía para desarrolladores
Valores que especifica

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

• A-Z, a-z
• 0-9
• _-.*$/~"'
• &, pasado y devuelto como &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. 118).

Registro
Si desea que CloudFront registre información acerca de cada solicitud de un objeto y almacene los
archivos de registro en un bucket de Amazon S3. Puede habilitar o deshabilitar el registro de acceso
en cualquier momento. No se aplica ningún cargo adicional si activa los registros, pero se acumulan los
cargos típicos de Amazon S3 por almacenar y acceder a los archivos que se encuentren en el bucket de
Amazon S3. Puede eliminar los registros en cualquier momento. Para obtener más información sobre
los registros de acceso de CloudFront, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).

Bucket para registros


Si eligió On (Activado) en Logging (Registro), el bucket de Amazon S3 donde desea que CloudFront
almacene los registros, por ejemplo, myLogs-DOC-EXAMPLE-BUCKET.s3.amazonaws.com.
Note
No elija un bucket de Amazon S3 en ninguna de las siguientes regiones, ya que CloudFront no
envía registros de acceso a los buckets de estas regiones:

• África (Ciudad del Cabo) af-south-1


• Asia-Pacífico (Hong Kong) ap-east-1
• Europa (Milán) eu-south-1
• Medio Oriente (Baréin) me-south-1

La consola de Amazon S3 muestra la región del bucket.

Si habilita el registro, CloudFront registra información acerca de las solicitudes de cada objeto realizadas
por cada usuario final y almacena los archivos en el bucket de Amazon S3 especificado. Puede habilitar
o deshabilitar el registro de acceso en cualquier momento. Para obtener más información sobre los
registros de acceso de CloudFront, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).
Note
Debe tener los permisos necesarios para obtener y actualizar ACL de buckets de Amazon S3 y la
ACL de S3 del bucket debe concederle FULL_CONTROL. Esto permite a CloudFront concederle
a awsdatafeeds permiso en la cuenta para guardar archivos de registro en el bucket. Para
obtener más información, consulte Permisos necesarios para configurar el registro estándar y el
acceso a los archivos de registro (p. 465).

Prefijo de registros
Opcional. Si eligió On (Act.) en Logging (Registro), especifique la cadena, de haberla, a la que CloudFront
debe agregar un prefijo para los nombres de archivo de los registros de acceso de esta distribución; por

65
Amazon CloudFront Guía para desarrolladores
Valores que especifica

ejemplo, exampleprefix/. La barra inclinada (/) al final es opcional pero recomendable para simplificar
la navegación de los archivos de registro. Para obtener más información sobre los registros de acceso de
CloudFront, consulte Configuración y uso de registros estándar (registros de acceso) (p. 463).

Cookie Logging
Si desea que CloudFront incluya cookies en los registros de acceso, elija On (Act.). Si decide incluir las
cookies en los registros, CloudFront registra todas las cookies independientemente de cómo configura los
comportamientos de la caché para esta distribución: para reenviar al origen todas las cookies, ninguna o
las que se determinen en una lista concreta.

Amazon S3 no procesa las cookies, por lo que, a menos que la distribución también incluya un origen de
Amazon EC2 u otro personalizado, le recomendamos que elija el valor Off (Desact.) en Cookie Logging
(Registros de cookies).

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

Habilitar IPv6
IPv6 es una nueva versión del protocolo IP. Es la sustitución final de IPv4 y utiliza un espacio de
direcciones mayor. CloudFront siempre responde a las solicitudes por IPv4. Si desea que CloudFront
responda a las solicitudes de direcciones IP IPv4 (como 192.0.2.44) y a las de direcciones IPv6 (como
2001:0db8:85a3:0000:0000:8a2e:0370:7334), seleccione Enable IPv6 (Habilitar IPv6).

En general, debe habilitar IPv6 si tiene usuarios en redes IPv6 que desean obtener acceso a su contenido.
Sin embargo, si utiliza URL firmadas o cookies firmadas para restringir el acceso a su contenido además
de una política personalizada con el parámetro IpAddress para restringir las direcciones IP que pueden
obtener acceso a su contenido, no habilite IPv6. Si desea restringir el acceso a algún contenido por
dirección IP pero no restringir otro contenido (o restringir el acceso, pero no por dirección IP), puede crear
dos distribuciones. Para obtener información acerca de cómo crear URL firmadas mediante una política
personalizada, consulte Creación de una URL firmada mediante una política personalizada (p. 181). Para
obtener información acerca de cómo crear cookies firmadas mediante una política personalizada, consulte
Establecer cookies firmadas mediante una política personalizada (p. 196).

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

• 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 Direccionamiento del tráfico a una distribución de Amazon
CloudFront mediante el nombre de dominio en la Guía para desarrolladores de Amazon Route 53.

Si ha creado un conjunto de registros de recursos de CNAME, ya sea con Route 53 o con otro servicio de
DNS, no es necesario realizar ningún cambio. Un registro CNAME dirige el tráfico hacia la distribución, sin
tener en cuenta el formato de la dirección IP de la solicitud del espectador.

Si habilita IPv6 y registros de acceso de CloudFront, la columna c-ip incluye valores en formato IPv4
e IPv6. Para obtener más información, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).
Note

Para mantener una alta disponibilidad para los clientes, CloudFront responde a solicitudes de los
lectores a través de IPv4 si nuestros datos sugieren que ese protocolo proporcionará una mejor

66
Amazon CloudFront Guía para desarrolladores
Valores que especifica

experiencia de usuario. Para saber qué porcentaje de solicitudes CloudFront atiende por IPv6,
habilite el registro de CloudFront para su distribución y analice la columna c-ip, que contiene
la dirección IP del lector que hizo la solicitud. Este porcentaje debería crecer con el paso del
tiempo, pero seguirá siendo una minoría de tráfico ya que IPv6 aún no es compatible con todas
las redes de espectadores en todo el mundo. Algunas redes de espectadores tienen excelente
compatibilidad con IPv6, pero otras no admiten IPv6 en absoluto. (En este sentido, una red de
espectadores es sinónimo de su red doméstica u operador de Internet).
Para obtener más información acerca de la compatibilidad con IPv6, consulte las preguntas
frecuentes de CloudFront. Para obtener más información acerca de la activación de registros
de acceso, consulte los campos Registro (p. 65), Bucket para registros (p. 65)y Prefijo de
registros (p. 65).

Comentario
Opcional. Al crear una distribución, puede incluir un comentario de hasta 128 caracteres. Puede
actualizarlo en cualquier momento.

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

• Enabled (Habilitada) significa que tan pronto como la distribución se implemente totalmente, podrá
implementar enlaces que utilizan el nombre de dominio de la distribución y los usuarios podrán recuperar
contenido. Cuando una distribución está habilitada, CloudFront acepta y gestiona cualquier solicitud
de contenido realizada por cualquier usuario final y que utilice el nombre de dominio asociado a esa
distribución.

Al crear, modificar o eliminar una distribución de CloudFront, lleva tiempo propagar los cambios a la base
de datos de CloudFront. Una solicitud inmediata para obtener información acerca de una distribución
puede no mostrar el cambio. La propagación suele completarse en cuestión de minutos, pero una carga
de sistema o una partición de red elevadas podrían aumentar este tiempo.
• Disabled (Deshabilitada) significa que, aunque la distribución puede haberse implementado y estar lista
para su uso, los usuarios no pueden utilizarla. Cuando una distribución está desactivada, CloudFront no
acepta ninguna solicitud realizada por ningún usuario final y que utilice el nombre de dominio asociado
a esa distribución. Hasta que no cambie la distribución de deshabilitada a habilitada (actualizando de la
distribución de la configuración), nadie podrá utilizarla.

Puede cambiar una distribución entre habilitada y deshabilitada tantas veces como quiera. Siga el proceso
para actualizar la configuración de una distribución. Para obtener más información, consulte Actualización
de una distribución (p. 71).

Páginas de error personalizadas y almacenamiento de errores en


caché
Puede hacer que CloudFront devuelva un objeto al lector (por ejemplo, un archivo HTML) cuando
su origen de Amazon S3 u origen personalizado devuelve un código de estado HTTP 4xx y 5xx de
CloudFront. También puede especificar por cuánto tiempo almacenar en las cachés de borde de
CloudFront una respuesta de error desde su origen o una página de error personalizada. Para obtener
más información, consulte Creación de una página de error personalizada para códigos de estado HTTP
específicos (p. 134).
Note

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

67
Amazon CloudFront Guía para desarrolladores
Valores que especifica

Código de error HTTP


El 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 todos
los códigos de estado HTTP que CloudFront almacena en caché.

TTL mínimo de almacenamiento de errores en caché (segundos)


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

Ruta de la página de respuesta


La ruta a la página de error personalizada (por ejemplo, /4xx-errors/403-forbidden.html) que
desea que CloudFront lector a un lector cuando el origen devuelve el código de estado HTTP especificado
en Error Code (Código de error) (por ejemplo, 403). Si desea almacenar los objetos y las páginas de error
personalizadas en diferentes ubicaciones, la distribución debe incluir un comportamiento de la caché que
cumpla con las siguientes condiciones:

• El valor de Path Pattern (Patrón de ruta) debe coincidir con la ruta de los mensajes de error
personalizados. Por ejemplo, supongamos que ha guardado páginas para errores 4xx personalizadas
en un bucket de Amazon S3 en un directorio llamado /4xx-errors. La distribución debe incluir
un comportamiento de caché cuyo patrón de ruta dirija las solicitudes de las páginas de error
personalizadas a esa ubicación, por ejemplo, /4xx-errors/*.
• El valor de Origin (Origen) especifica el valor de Origin ID (ID de origen) del origen que contiene las
páginas de error personalizadas.

Código de respuesta de HTTP


El código de estado HTTP que desea que CloudFront devuelva al lector junto con la página de error
personalizada.

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

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

Habilitar restricción geográfica


Si desea evitar que los usuarios de ciertos países accedan a su contenido. No se aplica ningún cargo
adicional 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 (Países) incluye todos los países a cuyos usuarios desea permitirles
acceso a su contenido.

68
Amazon CloudFront Guía para desarrolladores
Valores que se muestran

• Lista negra: la lista Countries (Países) incluye todos los países a cuyos usuarios no desea permitirles
acceso a su contenido.

Países
Los países que desea añadir a la lista positiva o lista negra. Para añadir un país, selecciónelo en la lista de
la izquierda y elija Add (Añadir). Tenga en cuenta lo siguiente:

• Para añadir varios países consecutivos, seleccione el primer país, mantenga pulsada la tecla Mayús,
seleccione el último país y elija Add (Añadir).
• Para añadir varios países no consecutivos, seleccione el primer país, mantenga pulsada la tecla Ctrl,
seleccione cada uno de los demás países y elija Add (Añadir).
• Para encontrar un país en la lista de la izquierda, escriba los primeros caracteres del nombre completo
del país.
• El código de dos letras que aparece delante del nombre de cada país es el valor que debe escribir si
desea crear o actualizar una distribución de CloudFront mediante la API. Utilizamos los códigos de país
de la Organización Internacional de Normalización. Para obtener una lista sencilla y organizable por
código y nombre de país, consulte la entrada de Wikipedia ISO 3166-1 alpha-2.

Valores que CloudFront muestra en la consola


Al 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 de
CloudFront activas y que se pueden utilizar para crear URL firmadas válidas, actualmente no son
visibles 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 para
especificar qué distribución desea utilizar, por ejemplo, EDFDVBD6EXAMPLE. No se puede cambiar el ID de
distribució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 han


propagado totalmente a los servidores perimetrales.

Deployed La distribución se ha creado o actualizado y los cambios se han propagado por


(Implementada) completo al sistema de CloudFront.

Note

Además de asegurarse de que el estado de la distribución sea Deployed (Implementado), debe


habilitar la distribución antes de que los usuarios puedan utilizar CloudFront para obtener acceso
a su contenido. Para obtener más información, consulte Estado de la distribución (p. 67).

69
Amazon CloudFront Guía para desarrolladores
Prueba de una distribución

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 de
dominio de su distribución es d111111abcdef8.cloudfront.net, el enlace a /images/image.jpg
será http://d111111abcdef8.cloudfront.net/images/image.jpg. No se puede cambiar
el nombre de dominio de CloudFront para la distribución. Para obtener más información acerca de las
URL de CloudFront para los objetos, consulte Personalización del formato de URL para archivos en
CloudFront (p. 117).

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

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

Prueba de una distribución


Una vez creada la distribución, CloudFront; conocerá el lugar en el que se encuentra su servidor de
origen, y usted sabrá el nombre de dominio asociado a la distribución. Puede crear enlaces a sus objetos
por medio del nombre de dominio de CloudFront, y CloudFront ofrecerá los objetos a su página web o
aplicación.
Note

Deberá esperar hasta que el estado de la distribución cambie a Deployed (Implementada) antes
de poder probar sus enlaces.

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 de
dominio de su distribución y sustituya object-name con el nombre de su objeto.

<html>
<head>My CloudFront Test</head>
<body>
<p>My text content goes here.</p>
<p><img src="http://domain-name/object-name" alt="my test image"
</body>
</html>

Por ejemplo, si su nombre de dominio es d111111abcdef8.cloudfront.net y su objeto es


image.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 en
la URL. Por ejemplo, si image.jpg estaba situada en la carpeta de imágenes de su servidor de origen,
la URL debería ser:

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

70
Amazon CloudFront Guía para desarrolladores
Actualización de una distribución

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 de
borde que CloudFront determinó que era adecuada para servir el objeto.

Actualización de una distribución


En 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 los
cambios de configuración que realice no surtirán efecto hasta que la distribución no se haya propagado a
las ubicaciones de borde de AWS.

Para actualizar 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. Seleccione el ID de una distribución. La lista incluye todas las distribuciones asociadas a la cuenta de
AWS que utilizó para iniciar sesión en la consola de CloudFront.
3. Para editar la configuración de una distribución, elija la pestaña Distribution Settings (Configuración de
distribución).
4. Para actualizar la configuración general, elija Edit (Editar). De lo contrario, elija la pestaña para
actualizar los ajustes que desee: Origins (Orígenes) o Behaviors (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: Ajustes de la distribución (p. 61)


• Configuración del origen: Configuración del origen (p. 45)
• Configuración del comportamiento de la caché: Configuración del comportamiento de la
caché (p. 52):
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 los


comportamientos predeterminados de la caché asociados con el origen.
b. Elija Origins (Orígenes) y, a continuación, seleccione un origen.
c. Elija Eliminar.

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

• Para actualizar una distribución, consulte UpdateDistribution en la Referencia de API de Amazon


CloudFront.

Important

Al actualizar su distribución, tenga en cuenta que hay una serie de campos adicionales necesarios
que no se necesitan para crear una distribución. Para ver un resumen de los campos que son
necesarios para la creación o actualización de una distribución, consulte Campos obligatorios
para crear y actualizar distribuciones (p. 39). Para asegurarse de que todos los campos
obligatorios se incluyen al actualizar una distribución mediante la API de CloudFront, siga los
pasos que se describen en UpdateDistribution en la Referencia de la API de Amazon CloudFront.

Al guardar los cambios en la configuración de su distribución, CloudFront comienza a propagar los cambios
en todas las ubicaciones de borde. Hasta que la configuración se actualiza en una ubicación de borde,

71
Amazon CloudFront Guía para desarrolladores
Etiquetado de una distribución

CloudFront continúa ofreciendo el contenido desde dicha ubicación en función de la configuración anterior.
Después de que la configuración se actualiza en una ubicación de borde, CloudFront comienza a ofrecer el
contenido inmediatamente desde dicha ubicación en función de la configuración nueva.

Los cambios no se propagan a todas las ubicaciones de borde instantáneamente. Cuando finaliza la
propagación, el estado de la distribución cambia de InProgress a Deployed (Implementada). Aunque
CloudFront propaga los cambios, lamentablemente no podemos determinar si una ubicación de borde
concreta está ofreciendo su contenido en función de la configuración anterior o de la nueva.

Etiquetado de distribuciones de Amazon CloudFront


Las 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 usted
define. Por ejemplo, la clave puede ser "dominio" y el valor puede ser "example.com". Puede buscar y
filtrar sus recursos en función de las etiquetas que añada.

A continuación se muestran dos ejemplos de cómo puede resultar útil trabajar con etiquetas en CloudFront:

• Utilizar etiquetas para realizar un seguimiento de la información de facturación en diferentes categorías.


Al aplicar etiquetas a distribuciones de CloudFront y a otros recursos de AWS (por ejemplo, instancias
de Amazon EC2 o buckets de Amazon S3) y activarlas, AWS genera un informe de asignación de
costos en formato de valores separados por comas (archivo CSV) con el uso y los costos agrupados por
etiquetas activas. 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 obtener más información sobre el uso de etiquetas para la asignación de costos, consulte Uso de
etiquetas de asignación de costos en la Guía del usuario de Administración de costos y facturación de
AWS.
• Utilizar etiquetas para aplicar permisos basados en etiquetas a las distribuciones de CloudFront. Para
obtener más información, consulte Políticas basadas en etiquetas (p. 503).

Tenga en cuenta lo siguiente:

• Puede etiquetar distribuciones, pero no puede etiquetar identidades de acceso de origen ni


invalidaciones.
• Tag Editor y Resource Groups no son compatibles con CloudFront.

Para consultar el máximo actual de la cantidad de etiquetas que puede agregar a una distribución web,
consulte Cuotas (p. 519). Para solicitar una cuota (antes denominada límite) más alta, cree un caso en el
Centro de soporte de AWS.

También puede aplicar etiquetas a los recursos mediante la API de CloudFront, la CLI de AWS, los
SDK y las herramientas de AWS para Windows PowerShell. Para obtener más información, consulte la
documentación siguiente:

• API de CloudFront: consulte las siguientes operaciones en la Referencia de la API de Amazon


CloudFront:
• ListTagsForResource
• TagResource
• UntagResource
• CLI de AWS: consulte cloudfront en la Referencia de comandos de la CLI de AWS
• SDK: consulte la documentación del SDK aplicable en la página Documentación de AWS.
• Herramientas para Windows PowerShell: consulte Amazon CloudFront en la Referencia de cmdlet de
herramientas de AWS para PowerShell

72
Amazon CloudFront Guía para desarrolladores
Eliminar una distribución

Temas
• Restricciones de las etiquetas (p. 73)
• Añadir, editar y eliminar etiquetas para distribuciones (p. 73)

Restricciones de las etiquetas


Se aplican las siguientes restricciones básicas a las etiquetas:

• Número máximo de etiquetas por recurso: 50


• Longitud máxima de la clave: 128 caracteres Unicode.
• 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 distribuciones


En el siguiente procedimiento se explica cómo agregar, editar y eliminar etiquetas para sus distribuciones
en la 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 (Añadir o editar etiquetas).
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 clave
es necesaria.
Eliminar una etiqueta

Elija la X en la parte derecha del campo de valor.


6. Seleccione Save.

Eliminar una distribución


Si ya no desea utilizar una distribución, siga este procedimiento para eliminarla desde la consola de
CloudFront o con su API.

Tenga en cuenta que para poder eliminar una distribución, debe deshabilitarla, lo que requiere permiso
para actualizar la distribución. Para obtener más información sobre la configuración de permisos para
trabajar con CloudFront, incluida la configuración de los permisos UpdateDistribution y DeleteDistribution,
consulte Ejemplos de políticas administradas por el cliente (p. 508).

73
Amazon CloudFront Guía para desarrolladores
Uso de orígenes diferentes

Note

Si desactiva una distribución que tiene asociado un nombre de dominio alternativo, CloudFront
deja de aceptar tráfico para ese nombre de dominio (por ejemplo, www.ejemplo.com), aunque
haya otra distribución que tenga un nombre de dominio alternativo con un carácter comodín (*)
que coincida con el mismo dominio (por ejemplo, *.example.com).

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 (Estado) es Disabled (Deshabilitada), vaya al paso 7.

Si el valor de State (Estado) es Enabled (Habilitada) y el valor de Status (Estado) es Deployed


(Implementada), continúe con el paso 4 para deshabilitar la distribución antes de eliminarla.

Si el valor de State (Estado) es Enabled (Habilitada) y el valor de Status (Estado) es InProgress (En
curso), espere hasta que Status (Estado) cambie a Deployed (Implementada). A continuación, siga
con el paso 4 para deshabilitar la distribución antes de eliminarla.
4. En el panel derecho de la consola de CloudFront, seleccione la casilla de la distribución que desea
eliminar.
5. Elija Disable (Deshabilitar) para deshabilitar la distribución y elija Yes, Disable (Sí, deshabilitar) para
confirmar la operación. A continuación, seleccione Close (Cerrar).
Note

Dado que CloudFront debe propagar este cambio a todas las ubicaciones de borde, es
posible que tenga que esperar unos minutos hasta que finalice la actualización para poder
eliminar la distribución.
6. El valor de la columna State (Estado) cambia inmediatamente a Disabled (Deshabilitada). Espere
hasta que el valor de la columna Status (Estado) cambie a Deployed (Implementada).
7. Marque la casilla de la distribución que desea eliminar.
8. Elija Delete (Eliminar) y, a continuación, elija Yes, Delete (Sí, eliminar) para confirmar la acción.
Después, haga clic en Close (Cerrar).
Note

Si acaba de marcar la distribución como desactivada, es posible que CloudFront necesite


unos minutos para propagar el cambio a las ubicaciones de borde. La opción Delete
(Eliminar) no está disponible hasta que no finalice la propagación.

También puede eliminar una distribución con la API de CloudFront. Para obtener más información,
consulte DeleteDistribution en la Referencia de la API de Amazon CloudFront.

Uso de Amazon S3 Origins, canales MediaPackage


y orígenes personalizados 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 especificar un
bucket de Amazon S3 o un contenedor MediaStore, un canal MediaPackage o un origen personalizado,
como una instancia de Amazon EC2 o su propio servidor web HTTP.

Temas

74
Amazon CloudFront Guía para desarrolladores
Uso de buckets de Amazon S3 para su origen

• Uso de buckets de Amazon S3 para su origen (p. 75)


• Uso de buckets de Amazon S3 configurados como puntos de enlace de sitio web para su
origen (p. 76)
• Uso de un contenedor MediaStore o un canal MediaPackage para su origen (p. 76)
• Uso de Amazon EC2 u otros orígenes personalizados (p. 76)
• Uso de los grupos de origen de CloudFront (p. 77)
• Agregar CloudFront cuando ya está distribuyendo contenido desde Amazon S3 (p. 78)
• Cambiar un bucket de Amazon S3 de región (p. 79)

Uso de buckets de Amazon S3 para su origen


Cuando utiliza Amazon S3 como origen para su distribución, coloque los objetos que desea que
CloudFront entregue en un bucket de Amazon S3. Puede utilizar cualquier método admitido por Amazon
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, del mismo
modo que lo haría con cualquier otro bucket de Amazon S3.

El uso de un bucket de Amazon S3 ya existente como su servidor de origen de CloudFront no cambia el


bucket en absoluto. Puede utilizarlo como lo haría normalmente para almacenar y obtener acceso a los
objetos de Amazon S3 a precios estándar de Amazon S3. Se le cobrarán los cargos habituales de Amazon
S3 por almacenar los objetos en el bucket. Para obtener más información acerca de los cargos por uso de
CloudFront, consulte Informes de CloudFront en la consola (p. 426).
Important
Para que su bucket pueda funcionar con CloudFront, el nombre debe cumplir los requisitos de
nomenclatura de DNS. Para obtener más información, consulte Restricciones y limitaciones de los
buckets en la Guía para desarrolladores de Amazon Simple Storage Service.

Cuando especifique el bucket de Amazon S3 del que desee que CloudFront obtenga objetos, le
recomendamos que utilice el siguiente formato para acceder al bucket:

bucket-name.s3.region.amazonaws.com

Otra opción podría ser utilizar el siguiente formato más general, pero tenga en cuenta que este formato no
funciona para las regiones lanzadas en 2019 o con posterioridad:

bucket-name.s3.amazonaws.com

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

• Configure CloudFront para que se comunique con su bucket de Amazon S3 mediante SSL. Para obtener
más información, consulte Uso de HTTPS con CloudFront (p. 138).
• Utilice una identidad de acceso de origen para solicitar que los usuarios obtengan acceso al contenido
utilizando la URL de CloudFront, y no mediante las URL de Amazon S3. Para obtener más información,
consulte Restricción del acceso a contenido de Amazon S3 utilizando una identidad de acceso de
origen (p. 223).
• Actualice el contenido de su bucket mediante el envío de las solicitudes POST y PUT a CloudFront. Para
obtener más información, consulte Métodos HTTP (p. 300) en el tema Cómo CloudFront procesa y
reenvía solicitudes a su servidor de origen de Amazon S3 (p. 299).

No especificar el bucket utilizando los siguientes formatos:

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


• El CNAME de Amazon S3, en su caso

75
Amazon CloudFront Guía para desarrolladores
Uso de buckets de Amazon S3 configurados como
puntos de enlace de sitio web para su origen

Uso de buckets de Amazon S3 configurados como


puntos de enlace de sitio web para su origen
Puede configurar un bucket de Amazon S3 que está configurado como punto de enlace de sitio web como
origen personalizado con CloudFront.

• Al configurar su distribución de CloudFront, para el origen, escriba el punto de enlace de alojamiento de


sitio web estático de Amazon S3 para el bucket. Este valor aparecerá en la consola de Amazon S3 en
la pestaña Properties (Propiedades), en el panel Static Website Hosting (Alojar sitio web estático). Por
ejemplo:

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

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

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

El uso de un bucket de Amazon S3 como servidor de origen de CloudFront no lo cambia de ninguna


manera. Puede seguir utilizándolo como lo haría normalmente y se le cobrarán los cargos normales de
Amazon S3. Para obtener más información acerca de los cargos por usar CloudFront, consulte Precios de
CloudFront.
Note

Si utiliza la API de CloudFront para crear su distribución con un bucket de Amazon


S3 configurado como 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ón acerca de la creación de distribuciones mediante la API de CloudFront,
consulte CreateDistribution en la Referencia de la API de Amazon CloudFront.

Uso de un contenedor MediaStore o un canal


MediaPackage para su origen
Para transmitir vídeo mediante CloudFront, puede configurar un depósito de Amazon S3 configurado como
contenedor MediaStore o crear un canal y puntos de enlace con MediaPackage. A continuació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. 331)
• Servir vídeo en directo formateado con AWS Elemental MediaPackage (p. 333)

Uso de Amazon EC2 u otros orígenes personalizados


Un origen personalizado es un servidor HTTP, como por ejemplo, un servidor web. El servidor HTTP puede
ser una instancia de Amazon Elastic Compute Cloud (Amazon EC2) o un servidor HTTP que administre

76
Amazon CloudFront Guía para desarrolladores
Uso de grupos de origen

de forma privada. Un origen de Amazon S3 configurado como punto de enlace de sitio web también se
considera un origen personalizado.

Al utilizar un origen personalizado que es su propio servidor HTTP, debe especificar el nombre de DNS del
servidor, junto con los puertos HTTP y HTTPS y el protocolo que desee que utilice CloudFront a la hora de
recuperar los objetos del origen.

La mayoría de las características de CloudFront se admiten al utilizar un origen personalizado, excepto en


los siguientes casos:

• Contenido privado: aunque puede utilizar una URL firmada para distribuir contenido desde un origen
personalizado, para que CloudFront obtenga acceso al origen personalizado, el origen debe mantenerse
accesible públicamente. Para obtener más información, consulte Distribución de contenido privado con
URL firmadas y cookies firmadas (p. 164).

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

• Aloje y distribuya el mismo contenido en todos los servidores que están distribuyendo contenido para el
mismo origen de CloudFront. Para obtener más información, consulte Configuración del origen (p. 45)
en el tema Valores que deben especificarse al crear o actualizar una distribución (p. 43).
• Registre las entradas del encabezado X-Amz-Cf-Id en todos los servidores; CloudFront requiere esta
información para depurar.
• Restrinja las solicitudes de acceso a los puertos HTTP y HTTPS que escucha su origen personalizado.
• Sincronice los relojes de todos los servidores de su implementación. Tenga en cuenta que CloudFront
utiliza la hora universal coordinada (UTC, por sus siglas en inglés) para las URL y cookies firmadas, para
los registros de acceso y los informes. Además, si monitorea la actividad de CloudFront mediante las
métricas de CloudWatch, tenga en cuenta que CloudWatch también utiliza UTC.
• Utilice servidores redundantes para gestionar errores.
• Para obtener más información acerca del uso de un origen personalizado para ofrecer contenido
privado, consulte Restricción del acceso a archivos en orígenes personalizados (p. 165).
• Para obtener más información acerca del comportamiento de solicitudes y respuestas y códigos de
estado HTTP admitidos, consulte Comportamiento de solicitudes y respuestas (p. 298).

Si utiliza Amazon EC2 para sus orígenes personalizados, le recomendamos que haga lo siguiente:

1. Utilice una Imagen de máquina de Amazon que instale el software de un servidor web
automáticamente. Para obtener más información, consulte la documentación de Amazon EC2.
2. Utilice un balanceador de carga de Elastic Load Balancing para gestionar el tráfico en varias instancias
de Amazon EC2 y aislar la aplicación de los cambios realizados en las instancias de Amazon EC2.
Por ejemplo, si utiliza un balanceador de carga, puede agregar y eliminar instancias Amazon EC2
sin cambiar su aplicación. Para obtener más información, consulte la Documentación de Elastic Load
Balancing.
3. Al crear su distribución de CloudFront, especifique la URL del balanceador de carga para el nombre
de dominio del servidor de origen. Para obtener más información, consulte Creación de una
distribución (p. 42).

Uso de los grupos de origen de CloudFront


Puede especificar un grupo de origen para su origen de CloudFront si, por ejemplo, desea configurar
escenarios de conmutación por error de origen cuando necesite alta disponibilidad. Utilice una
conmutación por error de origen para designar un origen principal para CloudFront además de un segundo

77
Amazon CloudFront Guía para desarrolladores
Agregar CloudFront cuando tenga contenido de Amazon S3

origen al que CloudFront cambia automáticamente cuando el origen principal devuelve respuestas de error
de código de estado HTTP específicas.

Para ver los pasos para configurar un grupo de origen y para obtener más información, consulte
Optimización de alta disponibilidad con conmutación por error de origen de CloudFront (p. 263).

Agregar CloudFront cuando ya está distribuyendo


contenido desde Amazon S3
Si almacena sus objetos en un bucket de Amazon S3, puede permitir que los usuarios obtengan acceso
a sus objetos directamente desde S3 o puede configurar CloudFront para obtener sus objetos desde S3 y
distribuirlos después a los usuarios.
Note
Para obtener más información sobre el uso de buckets de Amazon S3 para su origen con
CloudFront, incluido cuando tiene un bucket de Amazon S3 configurado como punto de enlace de
sitio web, consulte Uso de Amazon S3 Origins, canales MediaPackage y orígenes personalizados
para distribuciones web (p. 74).

Usar CloudFront puede ser más rentable si sus usuarios obtienen acceso a sus objetos frecuentemente
porque si el uso es elevado, el precio de transferencia de datos de CloudFront es menor que el de Amazon
S3. Además, las descargas son más rápidas con CloudFront que con solo Amazon S3 porque sus objetos
se almacenan más cerca de sus usuarios.
Note
Si desea que CloudFront respete la configuración de uso compartido de recursos de origen
cruzado de Amazon S3, configure CloudFront para que reenvíe el encabezado Origin a Amazon
S3. Para obtener más información, consulte Almacenamiento en caché de contenido en función
de encabezados de solicitud (p. 280).

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

Para agregar CloudFront cuando ya esté distribuyendo su contenido desde Amazon S3

1. Crear una distribución de CloudFront. Para obtener más información, consulte Pasos para crear una
distribución (Información general) (p. 41).

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 de
nomenclatura de DNS. Para obtener más información, consulte Restricciones y limitaciones
de los buckets en la Guía para desarrolladores de Amazon Simple Storage Service.

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

Para obtener más información acerca del formato de las URL de CloudFront, consulte Personalización
del formato de URL para archivos en CloudFront (p. 117).
3. Si utiliza CNAME de Amazon S3, la aplicación utiliza su nombre de dominio (por ejemplo,
example.com) para hacer referencia a los objetos de su bucket de Amazon S3 en lugar de utilizar el

78
Amazon CloudFront Guía para desarrolladores
Cambiar un bucket de Amazon S3 de región

nombre del bucket (por ejemplo, DOC-EXAMPLE-BUCKET1s3.amazonaws.com). Para seguir utilizando


su nombre de dominio para hacer referencia a objetos en lugar de usar el nombre de dominio de
CloudFront de su distribución (por ejemplo, d111111abcdef8.cloudfront.net), debe actualizar la
configuración con su proveedor de servicios de DNS.

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

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

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

http://DOC-EXAMPLE-BUCKET1.s3.amazonaws.com/images/image.jpg

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

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

Para obtener más información acerca del uso de CNAME con CloudFront, consulte Uso de URL
personalizadas para archivos añadiendo nombres de dominio alternativos (CNAME) (p. 80).

Después de actualizar el conjunto de registros de recursos de CNAME, la propagación a lo largo


del sistema DNS puede tardar hasta 72 horas, aunque suele ser más rápida. Durante este tiempo,
algunas de las solicitudes de contenido seguirán dirigiéndose a su bucket de Amazon S3 y otras se
dirigirán a CloudFront.

Cambiar un bucket de Amazon S3 de región


Si 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 las
dos 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 utiliza
para solicitar los objetos de su bucket. Para obtener más información acerca de OAI, consulte Restricción
del acceso a contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 223). Para
obtener una lista de las regiones de Amazon S3 y las versiones de firma compatibles, consulte Amazon
Simple Storage Service (Amazon S3) en el capítulo «Regiones y puntos de enlace» de la Referencia
general de Amazon Web Services.

Para forzar una actualización más rápida de los registros de CloudFront, puede actualizar su distribución
de CloudFront, por ejemplo, al actualizar el campo Comment (Comentario) en la pestaña General de la
consola de CloudFront. Al actualizar una distribución, CloudFront comprueba inmediatamente la región

79
Amazon CloudFront Guía para desarrolladores
Uso de URL personalizadas

en la que se encuentra su bucket; la propagación del cambio a todas las ubicaciones de borde no debería
tomar más de 15 minutos.

Uso de URL personalizadas para archivos


añadiendo nombres de dominio alternativos
(CNAME)
En CloudFront, un nombre de dominio alternativo, también conocido como un CNAME, le permite utilizar
su propio nombre de dominio (por ejemplo, www.example.com) en las URL de sus archivos en lugar de
utilizar el nombre de dominio que CloudFront asigna a su distribución.

Al crear una distribución, CloudFront, devuelve un nombre de dominio para la distribución, por ejemplo:

d111111abcdef8.cloudfront.net

Al utilizar el nombre de dominio de CloudFront para sus archivos, la URL de un archivo denominado /
images/image.jpg es:

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

Si desea utilizar su propio nombre de dominio, como por ejemplo www.example.com, en lugar del
nombre de dominio cloudfront.net, puede añadir un nombre de dominio alternativo a la distribución,
como www.example.com. A continuación, puede utilizar la siguiente dirección URL para ver /images/
image.jpg:

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

Temas
• Añadir un nombre de dominio alternativo (p. 80)
• Mover un nombre de dominio alternativo a una distribución de CloudFront diferente (p. 83)
• Eliminar un nombre de dominio alternativo (p. 86)
• Uso de comodines en los nombres de dominio alternativos que se agregan a CloudFront (p. 87)
• Requisitos para el uso de nombres de dominio alternativos (p. 87)
• Restricciones de uso de nombres de dominio alternativos (p. 89)

Añadir un nombre de dominio alternativo


En la siguiente lista de tareas, se describe cómo utilizar la consola de CloudFront para agregar un nombre
de dominio alternativo a la distribución, de modo que pueda utilizar su propio nombre de dominio en lugar
del nombre de dominio de CloudFront. Para obtener información acerca de cómo actualizar su distribución
con la API de CloudFront, consulte Trabajo con distribuciones (p. 38).
Note
Si desea que los espectadores usen HTTPS con su nombre de dominio alternativo, consulte Usar
nombres de dominio alternativos y HTTPS (p. 150).

Antes de comenzar: asegúrese de hacer lo siguiente antes de actualizar la distribución para añadir un
nombre de dominio alternativo:

• Registre el nombre de dominio en Route 53 o en otro proveedor de dominios.


• Agregue un certificado de una entidad de certificación (CA) autorizada a CloudFront que haya sido
emitido para el nombre de dominio que piensa utilizar con la distribución, con el fin de demostrar que

80
Amazon CloudFront Guía para desarrolladores
Añadir un nombre de dominio alternativo

tiene autorización para utilizar el dominio. Para obtener más información, consulte Requisitos para el
uso de nombres de dominio alternativos (p. 87).

Añadir un nombre de dominio alternativo

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 o
escriba uno por línea.
SSL Certificate

Elija la siguiente opción:


• Utilizar HTTPS: elija Custom SSL Certificate (Certificado SSL personalizado) y elija un
certificado de la lista. La lista incluye certificados aprovisionados por AWS Certificate Manager
(ACM), certificados adquiridos en otra CA y cargados en ACM y certificados adquiridos en otra
CA y cargados en el almacén de certificados de IAM.

Si ha cargado un certificado en el almacén de certificados de IAM pero no aparece en la


lista, revise el procedimiento Importar un certificado SSL/TLS (p. 158) para confirmar que el
certificado se ha cargado correctamente.

Si elige esta opción, le recomendamos que utilice solo un nombre de dominio alternativo en
las URL de sus objetos (https://www.example.com/logo.jpg). Si utiliza el nombre de
dominio de la distribución de CloudFront (https://d111111abcdef8.cloudfront.net/
logo.jpg), un lector podría comportarse del modo siguiente, en función del valor que elija para
Clients Supported (Clientes admitidos):
• All Clients (Todos los clientes): si el lector no admite SNI, se muestra una advertencia, ya que
el nombre de dominio de CloudFront no coincide con el nombre de dominio de su certificado
TLS/SSL.
• Only Clients that Support Server Name Indication (SNI) (Solo los clientes que admiten
indicación de nombre de servidor (SNI)): CloudFront interrumpe la conexión con el lector sin
devolver el objeto.
Cliente admitidos

Elija una opción:


• All Clients (Todos los clientes): 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 Amazon CloudFront.
• Only Clients that Support Server Name Indication (SNI) (Solo los clientes que admiten
indicación de nombre de servidor (SNI)) (Recomendado): los navegadores antiguos u otros
clientes que no admitan SNI deben usar otro método para tener acceso al contenido.

Para obtener más información, consulte Elegir cómo CloudFront atiende las solicitudes
HTTPS (p. 150).
5. Elija Yes, Edit (Sí, editar).
6. En la pestaña General de la distribución, confirme que Distribution Status (Estado de la distribución)
ha cambiado a Deployed (Implementada). Si intenta utilizar un nombre de dominio alternativo antes de
81
Amazon CloudFront Guía para desarrolladores
Añadir un nombre de dominio alternativo

que las actualizaciones de la distribución se hayan implementado, los enlaces que cree en los pasos
siguientes probablemente no funcionen.
7. Configure el servicio de DNS para que el dominio dirija el tráfico del dominio (como
www.example.com) al nombre de dominio de CloudFront de su distribución (como
d111111abcdef8.cloudfront.net). El método que utilice dependerá de si está utilizando Route 53 como
proveedor de servicios de DNS para el dominio u otro proveedor.
Note

Si el registro de DNS ya apunta a una distribución que no es la que está actualizando, solo
añadirá el nombre de dominio alternativo a la distribución después de actualizar el DNS.
Para obtener más información, consulte Restricciones de uso de nombres de dominio
alternativos (p. 89).

Route 53

Cree un conjunto de registros de recursos de alias. Si cuenta con uno, no tendrá que pagar por
las consultas de Route 53. Además, puede crear un conjunto de registros de recursos de alias
del nombre de dominio raíz (example.com) cuyo DNS no permita CNAME. Para obtener más
información, consulte Direccionamiento del tráfico a una distribución web de Amazon CloudFront
mediante el nombre de dominio en la Guía para desarrolladores de Amazon Route 53.
Otro proveedor de servicios de DNS

Utilice el método proporcionado por el proveedor de servicios DNS para añadir un registro
CNAME a su dominio. Este nuevo registro de CNAME dirigirá las consultas de DNS de su
dominio (por ejemplo, www.example.com) al nombre de dominio de CloudFront de su distribución
(por ejemplo, d111111abcdef8.cloudfront.net). Para obtener más información, consulte la
documentación de su proveedor de servicios de DNS.
Important

Si ya tiene un registro de CNAME para su nombre de dominio, actualice dicho registro


o sustitúyalo por uno nuevo que apunte al nombre de dominio de CloudFront para su
distribución.
Confirme también que su conjunto de registros de recursos de CNAME apunte al nombre
de 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 creado
en el paso 7 apunta al nombre de dominio de su distribución.

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

PROMPT> dig www.example.com

; <<> DiG 9.3.3rc2 <<> www.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:
;www.example.com. IN A

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

La sección de respuestas muestra un registro CNAME que enruta las consultas


para www.example.com al nombre de dominio de distribución de CloudFront
82
Amazon CloudFront Guía para desarrolladores
Mover un nombre de dominio alternativo
a una distribución de CloudFront diferente

d111111abcdef8.cloudfront.net. Si el nombre a la derecha de CNAME es el nombre de dominio de su


distribución de CloudFront, el registro de CNAME está configurado correctamente. Si es cualquier
otro valor, por ejemplo, el nombre de dominio de su bucket de Amazon S3, el registro de CNAME está
configurado de forma incorrecta. En ese caso, vuelva al paso 4 y corrija el registro de CNAME para
que apunte al nombre de dominio de su distribución.
9. Pruebe el nombre de dominio alternativo visitando las URL con su nombre de dominio en lugar del
nombre del dominio de CloudFront para su distribución.
10. En su aplicación, cambie las URL de sus objetos para utilizar su nombre de dominio alternativo en
lugar del nombre de dominio de su distribución de CloudFront.

Mover un nombre de dominio alternativo a una


distribución de CloudFront diferente
Si 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 www.example.com, puede mover el dominio usted mismo. Para conocer los
pasos en detalle, consulte Mover un nombre de subdominio a otra distribución (p. 83).
• Para un dominio como example.com (un dominio de ápex), debe trabajar con AWS Support para mover
el dominio a otra distribución Mover un nombre de dominio de ápex a otra distribución (p. 85).

Mover un nombre de subdominio a otra distribución


Siga estos pasos para mover un nombre de subdominio, por ejemplo www.example.com.

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ás
información, consulte Creación de una distribución (p. 42).
3. Añada a la distribución un nombre de dominio alternativo que incluya un comodín para el conjunto de
registros de alias o registro CNAME. Por ejemplo, si el nombre de subdominio que desea mover a la
nueva distribución es www.example.com, añada el nombre de dominio alternativo *.example.com.
Para obtener más información, consulte Uso de comodines en los nombres de dominio alternativos
que se agregan a CloudFront (p. 87).
Note

No se puede agregar 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 una nueva distribución, consulte Mover un nombre de dominio de ápex a otra
distribución (p. 85).
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 www.example.com para dirigir tráfico al
nombre de dominio de CloudFront para su distribución, d111111abcdef8.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 haya
configurado el nombre de dominio alternativo originalmente. Para obtener más información, consulte
Edición de registros en la Guía para desarrolladores de Amazon Route 53.

83
Amazon CloudFront Guía para desarrolladores
Mover un nombre de dominio alternativo
a una distribución de CloudFront diferente

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

En este punto, el subdominio sigue siendo atendido por la distribución original, ya que allí
es donde el dominio alternativo está configurado actualmente.
5. Con dig o una herramienta similar, confirme que el conjunto de registros de recursos que ha creado
en el paso 4 apunta al nombre de dominio de su distribución.

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

PROMPT> dig www.example.com

; <<> DiG 9.3.3rc2 <<> www.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:
;www.example.com. IN A

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

La sección de respuestas muestra un registro CNAME que enruta las consultas


para www.example.com al nombre de dominio de distribución de CloudFront
d111111abcdef8.cloudfront.net. Si el nombre a la derecha de CNAME es el nombre de dominio de su
distribución de CloudFront, el registro de CNAME está configurado correctamente. Si es cualquier
otro valor, por ejemplo, el nombre de dominio de su bucket de Amazon S3, el registro de CNAME está
configurado de forma incorrecta. En ese caso, vuelva al paso 4 y corrija el registro de CNAME para
que apunte al nombre de dominio de su distribución.
Note

Cuando se utilizan registros de alias de Route 53, no es posible utilizar dig para confirmar
que el registro de recursos apunta a la nueva distribución. En este caso, puede cambiar el
tipo de registro de recursos de alias a CNAME, o esperar hasta que el valor de tiempo de vida
(TTL) del registro haya vencido.
6. Elimine el CNAME de la distribución existente y, a continuación, agréguelo a la nueva distribución de
CloudFront a la que se agregó previamente el nombre alternativo comodín.
Note

Mientras se propagan estos cambios, el nombre del dominio alternativo puede ser atendido
por la distribución original o por una nueva, lo que se determina al azar. Este comportamiento
puede persistir durante unos minutos después de que ambas distribuciones hayan alcanzado
el estado Deployed (Implementado).
7. Pruebe el nombre de dominio alternativo visitando algunas URL que usen su nombre de dominio en
lugar del nombre del dominio de CloudFront para su distribución.
8. (Opcional) Ahora se puede quitar el nombre alternativo comodín de la nueva distribución.
9. Si ya no utiliza la distribución original, elimínela. Para obtener más información, consulte Eliminar una
distribución (p. 73).

84
Amazon CloudFront Guía para desarrolladores
Mover un nombre de dominio alternativo
a una distribución de CloudFront diferente

Mover un nombre de dominio de ápex a otra distribución


Para nombres de dominio de ápex, como example.com, debe ponerse en contacto con AWS Support para
mover el nombre de dominio a otra distribución de CloudFront. Los pasos adicionales son necesarios,
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 parte del
nombre de dominio. Para los dominios de ápex, para este paso, tendrá que configurar la polí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. 42).

Mover un nombre de dominio como example.com a una nueva distribución consta de dos pasos:

Paso 1: Proporcionar una prueba a AWS Support de que posee su propio nombre de dominio mediante la
creación de un registro TXT para su dominio en su proveedor de servicios de DNS. Esto ayuda a impedir
que otra persona realice cambios en su configuración de distribución.

Paso 2: Solicitar a AWS Support que mueva su dominio a la nueva distribución de CloudFront.

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:

domain name TXT CloudFrontdistribution domain name

Por ejemplo: example.com TXT d111111abcdef8.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 que
cree el registro TXT por usted.
Tip

Si su proveedor de servicios no permite un registro TXT para un dominio que tenga la


misma información que un registro CNAME, considere la posibilidad de crear un registro
TXT que utilice su nombre de dominio con un guion bajo (_) antepuesto. Para ver un
ejemplo, consulte el siguiente artículo de Knowledge Center: Resolve CNAME Already
Exists Error.
3. Si su proveedor de servicios de DNS es Route 53, utilice los siguientes pasos para crear un registro
TXT para demostrar la propiedad del dominio:

a. Abra la página Hosted zones (Zonas alojadas) en la consola de Route 53.


b. Elija el nombre de dominio para el que está creando un registro TXT.
c. Elija Create record (Crear registro).
d. En la página Quick create record (Crear registro rápidamente), introduzca los siguientes valores:

• En Record name (Nombre de registro), deje el campo en blanco.


• En Record type (Tipo de registro), elija TXT.
• En Value (Valor) introduzca el nombre de dominio de la distribución de CloudFront a la que
desea agregar este nombre de dominio, tal como, d111111abcdef8.cloudfront.net.

85
Amazon CloudFront Guía para desarrolladores
Eliminar un nombre de dominio alternativo

• Para el resto de los campos, deje los valores predeterminados.


e. Elija Create records (Crear registros).

Paso 2: solicitar a AWS Support que mueva su dominio a la nueva distribución de CloudFront

• Inicie sesión en AWS y póngase en contacto con AWS Support para solicitarles que verifiquen que es
propietario del dominio y que muevan el dominio a una nueva distribución de CloudFront.
Note

AWS Support no puede verificar su propiedad de dominio hasta que puedan ver el registro TXT
que creó para su dominio. Tenga en cuenta que los registros que cree en su proveedor de DNS
pueden tardar un tiempo (hasta varios días) en propagarse a través del sistema de DNS.

Eliminar un nombre de dominio alternativo


Si desea dejar de direccionar tráfico para un dominio o subdominio a una distribución de CloudFront, siga
los 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 actualizar
su configuración de DNS. Esto ayuda a evitar problemas más tarde si desea asociar el nombre de
dominio con otra distribución de CloudFront. Si un nombre de dominio alternativo ya está asociado a una
distribución, no se puede configurar con otra.
Note

Si desea eliminar el nombre de dominio alternativo de esta distribución para que pueda añadirlo a
otra, siga los pasos que se indican en Mover un nombre de dominio alternativo a una distribución
de CloudFront diferente (p. 83). Si sigue los pasos que se indican aquí (para eliminar un
dominio) y, a continuación, agrega el dominio a otra distribución, habrá un periodo de tiempo
durante el cual el dominio no se enlazará con la nueva distribución ya que CloudFront se está
propagando a las actualizaciones a las ubicaciones de borde.

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

1. Para empezar, dirija el tráfico de Internet de su dominio a otro recurso que no sea la distribución de
CloudFront, como un balanceador de carga de Elastic Load Balancing. O bien, puede eliminar el
registro DNS que está dirigiendo tráfico a CloudFront.

Lleve a cabo una de las siguientes acciones, en función del servicio DNS para su dominio:

• Si utiliza Route 53, actualice o elimine registros de alias o registros CNAME. Para obtener más
información, consulte Edición de registros o Eliminación de registros.
• Si utiliza otro proveedor de servicios de DNS, utilice el método proporcionado por el proveedor del
servicio DNS para actualizar o eliminar el registro CNAME que dirige el tráfico hacia CloudFront.
Para obtener más información, consulte la documentación de su proveedor de servicios de DNS.
2. Después de actualizar los registros DNS de su dominio, espere hasta que los cambios se hayan
propagado y los servicios de resolución de nombres DNS redirigen el tráfico al nuevo recurso. Puede
comprobar cuando se completa esto mediante la creación de algunos enlaces de prueba que utilicen
su dominio en la URL.
3. Inicie sesión en la consola de administración de AWS y abra la consola de CloudFront en https://
console.aws.amazon.com/cloudfront/, y actualice su distribución de CloudFront para eliminar el
nombre de dominio haciendo lo siguiente:

a. Elija la ID de la distribución que desea actualizar.

86
Amazon CloudFront Guía para desarrolladores
Uso de comodines en los nombres de dominio
alternativos que se agregan a CloudFront

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 su
distribución.
d. Elija Yes, Edit (Sí, editar).

Uso de comodines en los nombres de dominio


alternativos que se agregan a CloudFront
Al añadir nombres de dominio alternativos, puede utilizar el comodín * al principio de un nombre
de dominio en lugar de añadir subdominios individualmente. Por ejemplo, con un nombre de
dominio alternativo *.example.com, puede utilizar cualquier nombre de dominio que termine en
example.com en las URL de sus objetos, como www.example.com, product-name.example.com y
marketing.product-name.example.com. El nombre de un objeto es el mismo, independientemente
del 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

Siga estos requisitos para nombres de dominio alternativos que incluyan comodines:

• El nombre de dominio alternativo debe empezar por un asterisco y un punto (*.).


• No puede utilizar un comodín para reemplazar parte de un nombre de subdominio, como este:
*domain.example.com.
• No puede sustituir un subdominio en mitad de un nombre de dominio, como este:
subdomain.*.example.com.
• Todos los nombres de dominio alternativos, incluidos los nombres de dominio alternativos que utilizan
comodines, deben quedar cubiertos por el nombre alternativo de asunto (SAN) en el certificado.

Un nombre de dominio alternativo comodín, como *.example.com, puede incluir un nombre de dominio
alternativo, como example.com, siempre y cuando ambos estén en la misma distribución de CloudFront o
en distribuciones creadas con la misma cuenta de AWS.

Requisitos para el uso de nombres de dominio


alternativos
Cuando agrega un nombre de dominio alternativo, como www.example.com, a una distribución de
CloudFront, los requisitos son los siguientes:

Los nombres de dominio alternativos deben estar en minúsculas

Para ser válidos, todos los nombres de dominio alternativos (CNAME) deben estar en minúsculas.
Se debe haber emitido un certificado SSL/TLS válido para los nombres de dominio alternativo

Para agregar un nombre de dominio alternativo (CNAME) para utilizarlo con una distribución de
CloudFront, se debe asociar a la distribución un certificado SSL/TLS válido de confianza que haya sido
emitido para el nombre de dominio alternativo. De este modo, se garantiza que solo las personas con
acceso al certificado del dominio pueden asociar a CloudFront un CNAME relacionado con el dominio.

87
Amazon CloudFront Guía para desarrolladores
Requisitos para el uso de nombres de dominio alternativos

Un certificado de confianza es aquel emitido por AWS Certificate Manager (ACM) o por otra entidad de
certificación (CA) válida; no se puede utilizar un certificado autofirmado. CloudFront admite las mismas
entidades de certificación que Mozilla. Para consultar la lista actualizada, visite Mozilla Included CA
Certificate List.

Para verificar un nombre de dominio alternativo mediante el certificado que se asocia, incluidos
los nombres de dominio alternativos que incluyen comodines, CloudFront comprueba el nombre
alternativo de asunto (SAN) en el certificado. El nombre de dominio alternativo que va a añadir debe
estar incluido en el SAN.
Note

Solo puede haber un certificado asociado a una distribución de CloudFront en cada momento.

Para demostrar que tiene autorización para añadir un nombre de dominio alternativo a la distribución,
realice una de las operaciones siguientes:
• Adjuntar un certificado que incluya el nombre de dominio alternativo, como product-
name.example.com.
• Asociar un certificado con un carácter comodín * al principio de un nombre de dominio, para que
incluya varios subdominios en un certificado. Si especifica un carácter comodín, puede agregar
varios subdominios como nombres de dominio alternativos a CloudFront.

Los siguientes ejemplos ilustran cómo el uso de caracteres comodín en los nombres de dominio de
un certificado sirven para permitirle que agregue otros nombres de dominio alternativos específicos a
CloudFront.
• Desea añadir marketing.example.com como nombre de dominio alternativo. El certificado
incluye el siguiente nombre de dominio: *.example.com. Si asocia este certificado a CloudFront,
puede agregar cualquier nombre de dominio alternativo a la distribución que sustituya el carácter
comodín en ese nivel, como marketing.example.com. También puede, por ejemplo, añadir los
siguientes nombres de dominio alternativos:
• product.example.com
• api.example.com

Sin embargo, no se puede añadir otros nombres de dominio que estén en niveles superiores o
inferiores al carácter comodín. Por ejemplo, no puede añadir los nombres de dominio alternativos
example.com ni marketing.product.example.com.
• Desea añadir example.com como nombre de dominio alternativo. Para ello, debe incluir el nombre
de dominio example.com en el certificado asociado a la distribución.
• Desea añadir marketing.product.example.com como nombre de dominio alternativo. Para
ello, puede incluir *.product.example.com o marketing.product.example.com en el
certificado.
Permiso para cambiar la configuración de DNS

Cuando agrega nombres de dominio alternativos, debe crear registros CNAME para dirigir las
consultas de DNS de los nombres de dominio a la distribución de CloudFront. Para ello, debe tener
permiso para crear registros CNAME en el proveedor de servicios de DNS para los nombres de
dominio alternativos que está utilizando. Por lo general, esto indicará que es el propietario de los
dominios, aunque también puede estar desarrollando una aplicación para el propietario del dominio.
Nombres de dominio alternativos y HTTPS

Si desea que los espectadores utilicen HTTPS con un nombre de dominio alternativo, debe configurar
ajustes adicionales. Para obtener más información, consulte Usar nombres de dominio alternativos y
HTTPS (p. 150).

88
Amazon CloudFront Guía para desarrolladores
Restricciones de uso de nombres de dominio alternativos

Restricciones de uso de nombres de dominio


alternativos
Tome en cuenta las siguientes restricciones de uso de nombres de dominio alternativos:

Cantidad máxima de nombres de dominio alternativos

Para obtener el número máximo actual de nombres de dominio alternativos que puede agregar a una
distribución o solicitar una cuota (antes denominada límite) más alta, consulte Cuotas generales de
distribuciones (p. 519).
Nombres de dominio alternativos superpuestos y duplicados

No puede agregar un nombre de dominio alternativo a una distribución de CloudFront si el nombre


de dominio alternativo ya existe en otra distribución de CloudFront, incluso si su cuenta de AWS es
propietaria 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 alternativos superpuestos pueden
estar en la misma distribución o en distribuciones diferentes, siempre y cuando ambas distribuciones
se hayan creado con la misma cuenta de AWS.

Si tiene nombres de dominio alternativos superpuestos en dos distribuciones, CloudFront envía la


solicitud a la distribución que tiene la coincidencia de nombre más específica, independientemente
de la distribución a la que apunta el registro DNS. Por ejemplo, marketing.domain.com es más
específico que *.domain.com.
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 su
proveedor de DNS para poder agregar el nombre de dominio de su distribución de CloudFront.

Para corregirlo, inicie sesión en su proveedor de DNS y quite el registro DNS existente o póngase en
contacto con su proveedor de DNS para eliminarlo. A continuación, cree el registro de DNS correcto
para su distribución, de acuerdo con los pasos que se indican para agregar o cambiar el nombre de
dominio alternativo de una distribución. Para obtener más información, consulte Añadir un nombre
de dominio alternativo (p. 81) o Mover un nombre de dominio alternativo a una distribución de
CloudFront diferente (p. 83).
Domain Fronting

CloudFront incluye protección contra el domain fronting que se produce en diferentes cuentas de
AWS. Domain fronting es una situación en la que un cliente no estándar crea una conexión TLS/
SSL con un nombre de dominio de una cuenta de AWS, pero a continuación realiza una solicitud
HTTPS para un nombre no relacionado de otra cuenta de AWS. Por ejemplo, la conexión TLS puede
conectarse a y www.example.com, a continuación, enviar una solicitud para www.example.org.

Para evitar los casos en los que el domain fronting atraviesa distintas cuentas de AWS, CloudFront
se asegura de que la cuenta de AWS a la que pertenece el certificado que sirve para una conexión
específica siempre coincide con la cuenta de AWS a la que pertenece la solicitud que gestiona en esa
misma conexión.

Si los dos números de cuenta de AWS no coinciden, CloudFront responderá con una respuesta HTTP
421 de solicitud desencaminada para dar al cliente la oportunidad de conectarse mediante el dominio
correcto.
Agregar un nombre de dominio alternativo en el nodo principal (ápex de zona) para un dominio

Al agregar un nombre de dominio alternativo a una distribución, normalmente debe crear un registro
CNAME en su configuración de DNS para dirigir las consultas de DNS del nombre de dominio a su

89
Amazon CloudFront Guía para desarrolladores
Uso de Websockets

distribución de CloudFront. Sin embargo, no puede crear un registro CNAME para el nodo superior
de un espacio de nombres de DNS, también conocido como ápex de zona; el protocolo de DNS no lo
permite. Por ejemplo, si registra el nombre DNS example.com, el ápex de zona será example.com.
No se puede crear un registro CNAME para example.com, pero puede crear registros CNAME para
www.example.com, newproduct.example.comy así sucesivamente.

Si utiliza Route 53 como servicio de DNS, puede crear un conjunto de registros de recursos de alias,
que tiene dos ventajas con respecto a los registros CNAME. Puede crear un conjunto de registros de
recursos de alias para un nombre de dominio en el nodo principal (example.com). Además, al usar un
conjunto de registros de recursos de alias, no tiene que pagar por las consultas de Route 53.
Note
Si habilita IPv6, debe crear dos conjuntos de registros de recursos de alias: uno para dirigir
el tráfico IPv4 (un registro A) y otro para dirigir el tráfico IPv6 (un registro AAAA). Para
obtener más información, consulte Habilitar IPv6 (p. 66) en el tema Valores que deben
especificarse al crear o actualizar una distribución (p. 43).

Para obtener más información, consulte Direccionamiento del tráfico a una distribución web de
Amazon CloudFront mediante el nombre de dominio en la Guía para desarrolladores de Amazon
Route 53.

Uso de WebSocket con distribuciones de


CloudFront
Amazon CloudFront admite el uso de WebSocket, un protocolo basado en TCP que resulta útil cuando
se necesitan conexiones bidireccionales de larga duración entre clientes y servidores. Una conexión
persistente suele ser un requisito con aplicaciones en tiempo real. Las situaciones en las que puede utilizar
Websockets incluyen plataformas de chat sociales, espacios de trabajo de colaboración en línea, juegos
de varios jugadores, y servicios que proporcionan fuentes de distribución de datos en tiempo real como las
plataformas de comercio financiero. Los datos a través de una conexión WebSocket pueden fluir en ambas
direcciones para la comunicación de dúplex completo.

CloudFront admite conexiones WebSocket necesarias en todo el mundo sin configuración adicional
necesaria. Todas las distribuciones de CloudFront tienen compatibilidad del protocolo WebSocket
integrada, siempre y cuando el cliente y el servidor también admitan el protocolo.

Cómo funciona el protocolo WebSocket


El protocolo WebSocket es un protocolo independiente, basado en TCP que le permite evitar cierta
sobrecarga (y potencialmente mayor latencia) de HTTP.

Para establecer una conexión WebSocket regular, el cliente envía una solicitud HTTP que utiliza
actualización de semántica de HTTP para cambiar el protocolo. El servidor puede completar el protocolo
de enlace. La conexión WebSocket permanece abierta y el cliente o el servidor puede enviar marcos de
datos entre sí sin tener que establecer nuevas conexiones cada vez.

De forma predeterminada, el protocolo WebSocket utiliza el puerto 80 para conexiones WebSocket


regulares y puerto 443 para conexiones WebSocket sobre TLS/SSL. Las opciones que elija para su
CloudFront Viewer Protocol Policy (p. 55) y Origin Protocol Policy (p. 50) se aplican a conexiones
WebSocket así como para el tráfico HTTP.

Requisitos de WebSocket
Las solicitudes de WebSocket deben cumplir con RFC 6455 (http://tools.ietf.org/html/rfc6455) en los
siguientes formatos estándar.

90
Amazon CloudFront Guía para desarrolladores
Requisitos de WebSocket

Ejemplo de solicitud del cliente:

GET /chat HTTP/1.1


Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

Ejemplo de respuesta de servidor:

HTTP/1.1 101 Switching Protocols


Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: chat

Si la conexión WebSocket la desconecta el cliente o el servidor, o mediante una interrupción de red, se


espera que las aplicaciones cliente vuelvan a iniciar la conexión con el servidor.

91
Amazon CloudFront Guía para desarrolladores

Trabajo con políticas


Con las políticas de CloudFront, puede controlar los valores que se incluyen en la clave de caché para los
objetos que se almacenan en caché en ubicaciones de borde de CloudFront. En estos valores se pueden
incluir cadenas de consulta de solicitud HTTP, encabezados y cookies. La clave de caché determina si una
solicitud de lector da como resultado un acierto de caché (el objeto se sirve al lector desde una ubicación
de borde de CloudFront).

Cuando hay un error de caché (el objeto solicitado no se almacena en caché en la ubicación de borde),
CloudFront envía una solicitud al origen para recuperar el objeto. Esto se denomina una solicitud de origen.
Puede controlar por separado cuáles de estos valores (cadenas de consulta, encabezados y cookies) se
incluyen en la solicitud de origen.

Puede controlar la clave de caché con una política de caché y la solicitud de origen con una política de
solicitud de origen. Al controlar la clave de caché y la solicitud de origen por separado, puede reenviar los
valores de solicitud a su origen sin duplicar el contenido almacenado en caché cuando el contenido no
difiere en función de esos valores.

Para obtener más información, consulte los siguientes temas.

Contenido
• Control de la clave de caché (p. 93)
• Descripción de las políticas de caché (p. 93)
• Información de políticas (p. 94)
• Configuración del tiempo de vida (TTL) (p. 94)
• Configuración de la clave de caché (p. 94)
• Creación de políticas de caché (p. 98)
• Uso de las políticas de caché administradas (p. 101)
• Asociar una política de caché administrada (p. 102)
• Descripción de las políticas de caché administradas (p. 102)
• Descripción de la clave de caché (p. 103)
• La clave de caché predeterminada (p. 104)
• Personalización de la clave de caché (p. 104)
• Control de solicitudes de origen (p. 105)
• Descripción de políticas de solicitud de origen (p. 106)
• Información de políticas (p. 106)
• Configuración de solicitud de origen (p. 107)
• Creación de políticas de solicitud de origen (p. 108)
• Uso de las políticas de solicitud de origen administrada (p. 111)
• Asociar una política de solicitud de origen administrada (p. 112)
• Descripción de las políticas de solicitud de origen administrada (p. 112)
• Uso de los encabezados HTTP de CloudFront (p. 113)
• Encabezados para determinar el tipo de dispositivo del lector (p. 113)
• Encabezados para determinar la ubicación del lector (p. 114)
• Otros encabezados de CloudFront92(p. 114)
Amazon CloudFront Guía para desarrolladores
Control de la clave de caché

Control de la clave de caché


Con Amazon CloudFront, puede controlar la clave de caché de los objetos que se almacenan en caché
en ubicaciones de borde de CloudFront. La clave de caché es el identificador único de cada objeto de la
caché y determina si una solicitud de lector da como resultado un acierto de la caché. Un acierto de caché
se produce cuando una solicitud de lector genera la misma clave de caché que una solicitud anterior y
el objeto de esa clave de caché está en la caché de la ubicación de borde y es válido. Cuando hay un
acierto de caché, el objeto se sirve al lector desde una ubicación de borde de CloudFront, lo que tiene los
siguientes beneficios:

• Carga reducida en el servidor de origen


• Latencia reducida para el lector

Puede obtener un mejor rendimiento de su sitio web o aplicación cuando tiene una proporción de aciertos
de caché más alta (una mayor proporción de solicitudes de lectores da como resultado un acierto de
caché). Una forma de mejorar la proporción de aciertos de caché es incluir solo los valores mínimos
necesarios en la clave de caché. Para obtener más información, consulte Descripción de la clave de
caché (p. 103).

Para controlar la clave de caché, se utiliza una política de caché de CloudFront. Puede asociar una política
de caché a uno o más comportamientos de caché en una distribución de CloudFront.

Contenido
• Descripción de las políticas de caché (p. 93)
• Información de políticas (p. 94)
• Configuración del tiempo de vida (TTL) (p. 94)
• Configuración de la clave de caché (p. 94)
• Creación de políticas de caché (p. 98)
• Uso de las políticas de caché administradas (p. 101)
• Asociar una política de caché administrada (p. 102)
• Descripción de las políticas de caché administradas (p. 102)
• Descripción de la clave de caché (p. 103)
• La clave de caché predeterminada (p. 104)
• Personalización de la clave de caché (p. 104)

Descripción de las políticas de caché


Puede utilizar una política de caché para mejorar la proporción de aciertos de caché controlando los
valores (cadenas de consulta de URL, encabezados HTTP y cookies) que se incluyen en la clave de
caché. CloudFront proporciona algunas políticas de caché predefinidas, conocidas como políticas
administradas, para casos de uso comunes. Puede usar estas políticas administradas o puede crear su
propia política de caché que sea específica para sus necesidades. Para obtener más información sobre las
políticas administradas, consulte Uso de las políticas de caché administradas (p. 101).

Una política de caché contiene la siguiente configuración, que se clasifica en información de política,
configuración del tiempo de vida (TTL) y configuración de clave de caché.

93
Amazon CloudFront Guía para desarrolladores
Descripción de las políticas de caché

Información de políticas
Nombre

Un nombre para identificar la política de caché. En la consola, se utiliza el nombre para asociar la
política de caché a un comportamiento de caché.
Comentario

Un comentario para describir la política de caché. Esto es opcional, pero puede ayudarle a identificar
el propósito de la política de caché.

Configuración del tiempo de vida (TTL)


La configuración del tiempo de vida (TTL) funciona junto con los encabezados HTTP Cache-Control
y Expires (si están en la respuesta de origen) para determinar cuánto tiempo permanecen válidos los
objetos de la caché de CloudFront.

Tiempo de vida mínimo

La cantidad de tiempo mínima, en segundos, que desea que los objetos permanezcan en la caché
de CloudFront antes de que CloudFront compruebe con el origen si el objeto se ha actualizado. Para
obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).
Tiempo de vida máximo

La cantidad de tiempo máxima, en segundos, que los objetos permanecen en la caché de CloudFront
antes de que CloudFront compruebe con el origen si el objeto se ha actualizado. CloudFront utiliza
esta configuración solo cuando el origen envía los encabezados Cache-Control o Expires con
el objeto. Para obtener más información, consulte Administración de cuánto tiempo se mantiene el
contenido en una caché (vencimiento) (p. 268).
Tiempo de vida (TTL) predeterminado

La cantidad de tiempo predeterminada, en segundos, que desea que los objetos permanezcan en la
caché de CloudFront antes de que CloudFront compruebe con el origen si el objeto se ha actualizado.
CloudFront utiliza este valor de configuración como TTL del objeto solo cuando el origen no envía
encabezados Cache-Control ni Expires con el objeto. Para obtener más información, consulte
Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).

Configuración de la clave de caché


La configuración de la clave de caché especifica los valores de las solicitudes de lector que CloudFront
incluye en la clave de caché. Los valores pueden incluir cadenas de consulta de URL, encabezados HTTP
y cookies. Los valores que se incluyen en la clave de caché se incluyen automáticamente en las solicitudes
que CloudFront envía al origen, conocidas como solicitudes de origen. Para obtener información sobre
cómo controlar las solicitudes de origen sin afectar a la clave de caché, consulte Control de solicitudes de
origen (p. 105).

La configuración de la clave de caché incluye:

• Cadenas de consulta (p. 95)


• Encabezados (p. 95)
• Cookies (p. 95)
• Compatibilidad con la compresión (p. 96)

94
Amazon CloudFront Guía para desarrolladores
Descripción de las políticas de caché

Cadenas de consulta

Las cadenas de consulta de URL en las solicitudes de lector que CloudFront incluye en la clave de
caché y en las solicitudes de origen. Para cadenas de consulta, puede elegir una de las opciones
siguientes:
• None (Ninguna): las cadenas de consulta de las solicitudes del lector no se incluyen en la clave de
caché y no se incluyen automáticamente en las solicitudes de origen.
• All (Todas): todas las cadenas de consulta de las solicitudes de lector se incluyen en la clave de
caché y también se incluyen automáticamente en las solicitudes de origen.
• Whitelist (Lista blanca): esta opción le permite especificar cuál de las cadenas de consulta en
las solicitudes de lector se incluyen en la clave de caché y se incluyen automáticamente en las
solicitudes de origen.
• All-Except (Todo excepto): esta opción le permite especificar cuál de las cadenas de consulta en las
solicitudes de lector no se incluyen en la clave de caché y no se incluyen automáticamente en las
solicitudes de origen. Todas las demás cadenas de consulta, excepto las especificadas, se incluyen
en la clave de caché y se incluyen automáticamente en las solicitudes de origen.

Cuando se utiliza la opción Whitelist (Lista blanca) o All-Except (Todo excepto), se especifican las
cadenas de consulta por su nombre, no por su valor. Por ejemplo, fíjese en la ruta URL siguiente:

/content/stories/example-story.html?split-pages=false

En este caso, se especifica la cadena de consulta como split-pages, no como split-


pages=false. Sin embargo, CloudFront incluye la cadena de consulta completa, incluido el valor, en
la clave de caché y en las solicitudes de origen.
Encabezados

Los encabezados HTTP en las solicitudes del lector que CloudFront incluye en la clave de caché y en
las solicitudes de origen. En encabezados, puede elegir una de las siguientes configuraciones:
• None (Ninguno): los encabezados HTTP en las solicitudes de lector no se incluyen en la clave de
caché y no se incluyen automáticamente en las solicitudes de origen.
• Whitelist (Lista blanca): esta opción le permite especificar cuáles de los encabezados HTTP en
las solicitudes de lector se incluyen en la clave de caché y se incluyen automáticamente en las
solicitudes de origen.

Cuando se utiliza la opción Whitelist (Lista blanca), se especifican los encabezados HTTP por su
nombre, no por su valor. Por ejemplo, fíjese en el encabezado HTTP siguiente:

Accept-Language: en-US,en;q=0.5

En este caso, se especifica el encabezado como Accept-Language, no como Accept-Language:


en-US,en;q=0.5. Sin embargo, CloudFront incluye el encabezado completo, incluido su valor, en la
clave de caché y en las solicitudes de origen.

También puede incluir ciertos encabezados generados por CloudFront en la clave de caché. Para
obtener más información, consulte Uso de los encabezados HTTP de CloudFront (p. 113).
Cookies

Las cookies en las solicitudes del lector que CloudFront incluye en la clave de caché y en las
solicitudes de origen. Para cookies, puede elegir una de las siguientes configuraciones:
• None (Ninguna): las cookies en las solicitudes de lector no se incluyen en la clave de caché y no se
incluyen automáticamente en las solicitudes de origen.

95
Amazon CloudFront Guía para desarrolladores
Descripción de las políticas de caché

• All (Todas): las cookies en las solicitudes de lector se incluyen en la clave de caché y se incluyen
automáticamente en las solicitudes de origen.
• Whitelist (Lista blanca): esta opción le permite especificar cuáles de las cookies en las solicitudes de
lector se incluyen en la clave de caché y se incluyen automáticamente en las solicitudes de origen.
• All-Except (Todo excepto): esta opción le permite especificar cuáles de las cookies en las solicitudes
del lector no se incluyen en la clave de caché y no se incluyen automáticamente en las solicitudes
de origen. Todas las demás cookies, excepto las que especifique, se incluyen en la clave de caché y
se incluyen automáticamente en las solicitudes de origen.

Cuando se utiliza la opción Whitelist (Lista blanca) o All-Except (Todo excepto), se especifican las
cookies por su nombre, no por su valor. Por ejemplo, fíjese en el encabezado Cookie siguiente:

Cookie: session_ID=abcd1234

En este caso, se especifica la cookie como session_ID, no como session_ID=abcd1234. Sin


embargo, CloudFront incluye la cookie completa, incluido su valor, en la clave de caché y en las
solicitudes de origen.
Compatibilidad con la compresión

Esta configuración permite a CloudFront solicitar y almacenar en caché objetos comprimidos en los
formatos de compresión Gzip o Brotli, cuando el lector lo admite. Esta configuración también permite
que la compresión de CloudFront (p. 128) funcione. Los lectores indican su compatibilidad con estos
formatos de compresión con el encabezado HTTP Accept-Encoding.
Note

Los navegadores web Chrome y Firefox admiten compresión Brotli solo cuando la solicitud se
envía mediante HTTPS. Estos navegadores no admiten Brotli con solicitudes HTTP.

Habilite esta configuración cuando se cumpla cualquiera de las siguientes condiciones:


• Su origen devuelve objetos comprimidos Gzip cuando los lectores los admiten (las solicitudes
contienen el encabezado HTTP Accept-Encoding con gzip como valor). En este caso, utilice la
configuración Gzip enabled (Gzip habilitado) (establezca EnableAcceptEncodingGzip en true
en la API de CloudFront, los AWS de SDK, la CLI de AWS o AWS CloudFormation).
• El origen devuelve objetos comprimidos Brotli cuando los lectores los admiten (las solicitudes
contienen el encabezado HTTP Accept-Encoding con br como valor). En este caso, utilice la
configuración Brotli enabled (Brotli habilitado) (establezca EnableAcceptEncodingBrotli en
true en la API de CloudFront, los SDK de AWS, la CLI de AWS o AWS CloudFormation).
• El comportamiento de caché al que está asociada esta política de caché se configura con
compresión de CloudFront (p. 128). En este caso, puede habilitar el almacenamiento en caché
para Gzip o Brotli, o ambos. Cuando la compresión de CloudFront está habilitada, habilitar el
almacenamiento en caché para ambos formatos puede ayudar a reducir los costos de transferencia
de datos salientes a Internet.
Note

Si habilita el almacenamiento en caché para uno de estos formatos de compresión o


ambos, no incluya el encabezado Accept-Encoding en una política de solicitud de
origen (p. 105) asociada con el mismo comportamiento de caché. CloudFront siempre
incluye este encabezado en las solicitudes de origen cuando el almacenamiento en caché
está habilitado para cualquiera de estos formatos, por lo que incluir Accept-Encoding en
una política de solicitud de origen no tiene ningún efecto.

Si el servidor de origen no devuelve objetos comprimidos Gzip o Brotli o si el comportamiento de


caché no está configurado con compresión de CloudFront, no habilite el almacenamiento en caché

96
Amazon CloudFront Guía para desarrolladores
Descripción de las políticas de caché

para objetos comprimidos. Si lo hace, es posible que provoque una disminución en la proporción de
aciertos de caché (p. 252).

A continuación, se explica cómo afecta esta configuración a una distribución de CloudFront. Todos los
escenarios que se muestran a continuación, suponen que la solicitud del lector incluye el encabezado
Accept-Encoding. Cuando la solicitud del lector no incluye el encabezado Accept-Encoding,
CloudFront no incluye este encabezado en la clave de caché y no lo incluye en la solicitud de origen
correspondiente.
Cuando se habilita el almacenamiento en caché de objetos comprimidos para ambos formatos de
compresión

Si el lector admite Gzip y Brotli, es decir, si los valores gzip y br están en el encabezado
Accept-Encoding de la solicitud del lector, CloudFront hace lo siguiente:
• Normaliza el encabezado en Accept-Encoding: br,gzip e incluye el encabezado
normalizado en la clave de caché. La clave de caché no incluye otros valores que estaban en el
encabezado Accept-Encoding enviado por el lector.
• Si la ubicación de borde tiene un objeto comprimido Brotli o Gzip en la caché que coincide con
la solicitud y no ha caducado, la ubicación de borde devuelve el objeto al lector.
• Si la ubicación de borde no tiene un objeto comprimido Brotli o Gzip en la caché que coincida
con la solicitud y no haya vencido, CloudFront incluye el encabezado normalizado (Accept-
Encoding: br,gzip) en la solicitud de origen correspondiente. La solicitud de origen no
incluye otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.

Si el lector admite un formato de compresión pero no el otro, por ejemplo, si gzip es un valor
en el encabezado Accept-Encoding de la solicitud del lector pero br no, CloudFront hace lo
siguiente:
• Normaliza el encabezado en Accept-Encoding: gzip e incluye el encabezado normalizado
en la clave de caché. La clave de caché no incluye otros valores que estaban en el encabezado
Accept-Encoding enviado por el lector.
• Si la ubicación de borde tiene un objeto comprimido Gzip en la caché que coincide con la
solicitud y no ha caducado, la ubicación de borde devuelve el objeto al lector.
• Si la ubicación de borde no tiene un objeto comprimido Gzip en la caché que coincida con
la solicitud y no haya vencido, CloudFront incluye el encabezado normalizado (Accept-
Encoding: gzip) en la solicitud de origen correspondiente. La solicitud de origen no incluye
otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.

Para entender lo que CloudFront hace si el lector admite Brotli pero no Gzip, reemplace los dos
formatos de compresión entre sí en el ejemplo anterior.

Si el lector no admite Brotli ni Gzip, es decir, el encabezado Accept-Encoding de la solicitud del


lector no contiene br ni gzip como valores, CloudFront:
• No incluye el encabezado Accept-Encoding en la clave de caché.
• Incluye Accept-Encoding: identity en la solicitud de origen correspondiente. La solicitud
de origen no incluye otros valores que estaban en el encabezado Accept-Encoding enviado
por el lector.
Cuando el almacenamiento en caché de objetos comprimidos está habilitado para un formato de
compresión, pero no para el otro

Si el lector admite el formato para el que está habilitado el almacenamiento en caché, por
ejemplo, si el almacenamiento en caché de objetos comprimidos está habilitado para Gzip y
el lector admite Gzip (gzip es uno de los valores del encabezado Accept-Encoding de la
solicitud del lector), CloudFront hace lo siguiente:
• Normaliza el encabezado en Accept-Encoding: gzip e incluye el encabezado normalizado
en la clave de caché.

97
Amazon CloudFront Guía para desarrolladores
Creación de políticas de caché

• Si la ubicación de borde tiene un objeto comprimido Gzip en la caché que coincide con la
solicitud y no ha caducado, la ubicación de borde devuelve el objeto al lector.
• Si la ubicación de borde no tiene un objeto comprimido Gzip en la caché que coincida con
la solicitud y no haya vencido, CloudFront incluye el encabezado normalizado (Accept-
Encoding: gzip) en la solicitud de origen correspondiente. La solicitud de origen no incluye
otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.

Este comportamiento es el mismo cuando el lector admite Gzip y Brotli (el encabezado Accept-
Encoding de la solicitud del lector incluye gzip y br como valores), porque en este escenario, el
almacenamiento en caché de objetos comprimidos para Brotli no está habilitado.

Para entender lo que CloudFront hace si el almacenamiento en caché de objetos comprimidos


está habilitado para Brotli pero no para Gzip, reemplace los dos formatos de compresión entre sí
en el ejemplo anterior.

Si el lector no admite el formato de compresión para el que está habilitado el almacenamiento en


caché (el encabezado Accept-Encoding de la solicitud del lector no contiene el valor de ese
formato), CloudFront:
• No incluye el encabezado Accept-Encoding en la clave de caché.
• Incluye Accept-Encoding: identity en la solicitud de origen correspondiente. La solicitud
de origen no incluye otros valores que estaban en el encabezado Accept-Encoding enviado
por el lector.
Cuando se desactiva el almacenamiento en caché de objetos comprimidos para ambos formatos de
compresión

Cuando el almacenamiento en caché de objetos comprimidos está desactivado para ambos


formatos de compresión, CloudFront trata el encabezado Accept-Encoding igual que cualquier
otro encabezado HTTP en la solicitud del lector. De forma predeterminada, no se incluye en la
clave de caché y no se incluye en las solicitudes de origen. Puede incluirlo en la lista blanca de
encabezados de una política de caché o una política de solicitud de origen como cualquier otro
encabezado HTTP.

Creación de políticas de caché


Puede utilizar una política de caché para mejorar la proporción de aciertos de caché controlando los
valores (cadenas de consulta de URL, encabezados HTTP y cookies) que se incluyen en la clave de
caché. Puede crear una política de caché en la consola de CloudFront, con la interfaz de línea de
comandos de AWS (CLI de AWS) o con la API de CloudFront.

Después de crear una política de caché, puede asociarla a uno o más comportamientos de caché en una
distribución de CloudFront.

Creación de políticas de caché (consola)


Para crear una política de caché (consola)

1. Inicie sesión en la consola de administración de AWS y abra la página Policies (Políticas) en la


consola de CloudFront en https://console.aws.amazon.com/cloudfront/v2/home?#/policies.
2. Elija Create cache policy (Crear política de caché).
3. Elija la configuración deseada para esta política de caché. Para obtener más información, consulte
Descripción de las políticas de caché (p. 93).
4. Cuando haya terminado, elija Create cache policy (Crear política de caché).

Después de crear una política de caché, puede asociarla a un comportamiento de caché.

98
Amazon CloudFront Guía para desarrolladores
Creación de políticas de caché

Para asociar una política de caché a una distribución existente (consola)

1. Abra la página Distributions (Distribuciones) en la consola de CloudFront en https://


console.aws.amazon.com/cloudfront/home#distributions:.
2. Elija la distribución que se va a actualizar y, a continuación, elija la pestaña Behaviors
(Comportamientos).
3. Elija el comportamiento de caché que se va a actualizar y, a continuación, elija Edit (Editar).

O bien, para crear un nuevo comportamiento de caché, elija Create Behavior (Crear comportamiento).
4. En Cache and origin request settings (Configuración de la solicitud de origen y caché), asegúrese
de que se elige Use a cache policy and origin request policy (Usar una política de caché y política de
solicitud de origen).
5. En Cache Policy (Política de caché), elija la política de caché que se va a asociar a este
comportamiento de caché.
6. En la parte inferior de la página, elija Yes, Edit (Sí, editar).

Para asociar una política de caché a una nueva distribución (consola)

1. Abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/home.


2. Elija Create Distribution (Crear distribución) y, a continuación, en Web, elija Get Started (Empezar).
3. En Cache and origin request settings (Configuración de la solicitud de origen y caché), asegúrese
de que se elige Use a cache policy and origin request policy (Usar una política de caché y política de
solicitud de origen).
4. En Cache Policy (Política de caché), elija la política de caché que se asocia al comportamiento
predeterminado de la caché de esta distribución.
5. Elija la configuración deseada para el origen, el comportamiento predeterminado de la caché y la
distribución. Para obtener más información, consulte Valores que deben especificarse al crear o
actualizar una distribución (p. 43).
6. Cuando haya terminado, elija Create Distribution (Crear distribución).

Creación de políticas de caché (CLI de AWS)


Para crear una política de caché con la interfaz de línea de comandos de AWS (CLI de AWS), utilice el
comando aws cloudfront create-cache-policy. Puede utilizar un archivo de entrada para proporcionar los
parámetros de entrada del comando, en lugar de especificar cada parámetro individual como entrada de
línea de comandos.

Para crear una política de caché (CLI con archivo de entrada)

1. Utilice el siguiente comando para crear un archivo denominado cache-policy.yaml que contenga
todos los parámetros de entrada del comando create-cache-policy.

aws cloudfront create-cache-policy --generate-cli-skeleton yaml-input > cache-


policy.yaml

Note

La opción yaml-input solo está disponible en la versión 2 de la CLI de AWS. Con la versión
1 de la CLI de AWS, puede generar un archivo de entrada en formato JSON. Para obtener
más información, consulte Generar el esqueleto y los parámetros de entrada de AWS CLI a
partir de un archivo de entrada JSON o YAML en la Guía del usuario de la interfaz de línea de
comandos de AWS.

99
Amazon CloudFront Guía para desarrolladores
Creación de políticas de caché

2. Abra el archivo llamado cache-policy.yaml que acaba de crear. Edite el archivo para especificar
la configuración de política de caché que desee y, a continuación, guarde el archivo. Puede eliminar
campos opcionales del archivo, pero no eliminar los campos obligatorios.

Para obtener más información acerca de la configuración de política de caché, consulte Descripción
de las políticas de caché (p. 93).
3. Utilice el siguiente comando para crear la política de caché utilizando parámetros de entrada del
archivo de cache-policy.yaml.

aws cloudfront create-cache-policy --cli-input-yaml file://cache-policy.yaml

Anote el valor de Id en la salida del comando. Este es el ID de política de caché y lo necesita para
asociar la política de caché al comportamiento de caché de una distribución de CloudFront.

Para asociar una política de caché a una distribución existente (CLI con archivo de entrada)

1. Utilice el comando siguiente para guardar la configuración de distribución de la distribución de


CloudFront que desea actualizar. Reemplace distribución_ID por el ID de la distribución.

aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-


config.yaml

Note

La opción --output yaml solo está disponible en la versión 2 de la CLI de AWS. Con la
versión 1 de la CLI de AWS, puede generar la salida en formato JSON. Para obtener más
información, consulte Control de la salida de comandos de la CLI de AWS en la Guía del
usuario de la interfaz de línea de comandos de AWS.
2. Abra el archivo llamado dist-config.yaml que acaba de crear. Edite el archivo, realizando los
siguientes cambios en cada comportamiento de caché que actualice para utilizar una política de
caché.

• En el comportamiento de caché, agregue un campo denominado CachePolicyId. Para el valor del


campo, utilice el ID de política de caché que anotó después de crear la política.
• Elimine los campos MinTTL, MaxTTL, DefaultTTL y ForwardedValues del comportamiento de
la caché. Estas configuraciones se especifican en la política de caché, por lo que no puede incluir
estos campos ni una política de caché en el mismo comportamiento de caché.
• Cambie el nombre del campo ETag a IfMatch, pero no cambie el valor del campo.

Guarde el archivo cuando haya terminado.


3. Utilice el siguiente comando para actualizar la distribución y utilizar la política de caché. Reemplace
distribución_ID por el ID de la distribución.

aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-


config.yaml

Para asociar una política de caché a una nueva distribución (CLI con archivo de entrada)

1. Utilice el siguiente comando para crear un archivo denominado distribution.yaml que contenga
todos los parámetros de entrada del comando create-distribution.

100
Amazon CloudFront Guía para desarrolladores
Uso de las políticas de caché administradas

aws cloudfront create-distribution --generate-cli-skeleton yaml-input >


distribution.yaml

Note

La opción yaml-input solo está disponible en la versión 2 de la CLI de AWS. Con la versión
1 de la CLI de AWS, puede generar un archivo de entrada en formato JSON. Para obtener
más información, consulte Generar el esqueleto y los parámetros de entrada de AWS CLI a
partir de un archivo de entrada JSON o YAML en la Guía del usuario de la interfaz de línea de
comandos de AWS.
2. Abra el archivo llamado distribution.yaml que acaba de crear. En el comportamiento de caché
predeterminado, en el campo CachePolicyId, escriba el ID de política de caché que anotó después
de crear la política. Siga editando el archivo para especificar la configuración de distribución que
desee y, a continuación, guarde el archivo cuando termine.

Para obtener más información acerca de la configuración de distribución, consulte Valores que deben
especificarse al crear o actualizar una distribución (p. 43).
3. Utilice el siguiente comando para crear la distribución mediante los parámetros de entrada del archivo
de distribution.yaml.

aws cloudfront create-distribution --cli-input-yaml file://distribution.yaml

Creación de políticas de caché (API)


Para crear una política de caché con la API de CloudFront, utilice CreateCachePolicy. Para obtener más
información acerca de los campos que especifique en esta llamada a la API, consulte Descripción de las
políticas de caché (p. 93) y la documentación de referencia de la API para el SDK de AWS u otro cliente
de la API.

Después de crear una política de caché, puede asociarla a un comportamiento de caché mediante una de
las siguientes llamadas a la API:

• Para asociarla a un comportamiento de caché en una distribución existente, utilice UpdateDistribution.


• Para asociarlo con un comportamiento de caché en una nueva distribución, utilice CreateDistribution.

Para estas llamadas a la API, proporcione el ID de la política de caché en el campo CachePolicyId,


dentro de un comportamiento de caché. Para obtener más información acerca de los otros campos que
especifique en estas llamadas a la API, consulte Valores que deben especificarse al crear o actualizar una
distribución (p. 43) y la documentación de referencia de la API para el SDK de AWS u otro cliente de la
API.

Uso de las políticas de caché administradas


CloudFront proporciona un conjunto de políticas de caché administradas que puede asociar a cualquiera
de los comportamientos de caché de la distribución. Con una política de caché administrada, no necesita
escribir ni mantener su propia política de caché. Las políticas administradas utilizan configuraciones
optimizadas para casos de uso específicos.

Contenido
• Asociar una política de caché administrada (p. 102)
• Descripción de las políticas de caché administradas (p. 102)

101
Amazon CloudFront Guía para desarrolladores
Uso de las políticas de caché administradas

Asociar una política de caché administrada


Para utilizar una política de caché administrada, debe asociarla a un comportamiento de caché en su
distribución. El proceso es el mismo que cuando crea una política de caché, pero en lugar de crear una
nueva, simplemente asocia una de las políticas de caché administradas. Puede asociar la política por
nombre (con la consola) o por ID (con la CLI o los SDK de AWS). Los nombres e ID se muestran en la
siguiente sección.

Para obtener más información, consulte Creación de políticas de caché (p. 98).

Descripción de las políticas de caché administradas


En la siguiente lista se describen las políticas de caché administradas.

Nombre: Managed-CachingOptimized, ID: 658327ea-f89d-4fab-a63d-7e88639e58f6

Esta política está diseñada para optimizar la eficacia de la caché minimizando los valores que
CloudFront incluye en la clave de caché. CloudFront no incluye cadenas de consulta ni cookies en
la clave de caché y solo incluye el encabezado Accept-Encoding normalizado. Esto permite a
CloudFront almacenar en caché objetos por separado en los formatos de compresión Gzip y Brotli
cuando el origen los devuelve o cuando se habilita la compresión de borde de CloudFront (p. 128).

Configuración de política
• MinTTL: 1 segundo.
• MaxTTL: 31 536 000 segundos (365 días).
• DefaultTTL: 86 400 segundos (24 horas).
• Cadenas de consulta incluidas en la clave de caché: ninguna.
• Encabezados incluidos en la clave de caché: no se incluye ninguno explícitamente. El encabezado
Accept-Encoding normalizado se incluye porque la configuración de objetos comprimidos en
caché está habilitada. Para obtener más información, consulte Objetos comprimidos en caché
(utiliza el encabezado Accept-Encoding) (p. 96).
• Cookies incluidas en la clave de caché: ninguna.
• Configuración de objetos comprimidos en caché: habilitada. Para obtener más información, consulte
Objetos comprimidos en caché (utiliza el encabezado Accept-Encoding) (p. 96).
Nombre: Managed-CachingOptimizedForUncompressedObjects, ID: b2884449-e4de-46a7-
ac36-70bc7f1ddd6d

Esta política está diseñada para optimizar la eficacia de la caché minimizando los valores incluidos
en la clave de caché. No se incluyen cadenas de consulta, encabezados ni cookies. Esta política es
idéntica a la anterior, pero desactiva la configuración de objetos comprimidos en caché.

Configuración de política
• MinTTL: 1 segundo
• MaxTTL: 31 536 000 segundos (365 días)
• DefaultTTL: 86 400 segundos (24 horas)
• Cadenas de consulta incluidas en la clave de caché: ninguna
• Encabezados incluidos en la clave de caché: ninguno
• Cookies incluidas en la clave de caché: ninguna
• Configuración de objetos comprimidos en caché: desactivada
Nombre: Managed-CachingDisabled, ID: 4135ea2d-6df8-44a3-9df3-4b5a84be39ad

Esta política desactiva el almacenamiento en caché. Esta política es útil para el contenido dinámico y
para las solicitudes que no se pueden almacenar en caché.

102
Amazon CloudFront Guía para desarrolladores
Descripción de la clave de caché

Configuración de política
• MinTTL: 0 segundos
• MaxTTL: 0 segundos
• DefaultTTL: 0 segundos
• Cadenas de consulta incluidas en la clave de caché: ninguna
• Encabezados incluidos en la clave de caché: ninguno
• Cookies incluidas en la clave de caché: ninguna
• Configuración de objetos comprimidos en caché: desactivada
Nombre: Managed-Elemental-MediaPackage, ID: 08627262-05a9-4f76-9ded-b50ca2e3a84f

Esta política está diseñada para su uso con un origen que es un punto de enlace de AWS Elemental
MediaPackage.

Configuración de política
• MinTTL: 0 segundos
• MaxTTL: 31 536 000 segundos (365 días)
• DefaultTTL: 86 400 segundos (24 horas)
• Cadenas de consulta incluidas en la clave de caché:
• m
• start
• end
• aws.manifestfilter
• Encabezados incluidos en la clave de caché:
• Origin
• Cookies incluidas en la clave de caché: ninguna
• Configuración de objetos comprimidos en caché: habilitada. Para obtener más información, consulte
Objetos comprimidos en caché (utiliza el encabezado Accept-Encoding) (p. 96).

Descripción de la clave de caché


La clave de caché determina si una solicitud del lector a una ubicación de borde de CloudFront da como
resultado un acierto de caché. La clave de caché es el identificador único de un objeto en la caché. Cada
objeto de la caché tiene una clave de caché única.

Un acierto de caché se produce cuando una solicitud de lector genera la misma clave de caché que una
solicitud anterior y el objeto de esa clave de caché está en la caché de la ubicación de borde y es válido.
Cuando hay un acierto de caché, el objeto solicitado atiende al lector desde una ubicación de borde de
CloudFront, lo que tiene los siguientes beneficios:

• Carga reducida en el servidor de origen


• Latencia reducida para el lector

Puede obtener un mejor rendimiento de su sitio web o aplicación cuando tiene una proporción de aciertos
de caché mayor (una mayor proporción de solicitudes de lectores que dan lugar a un acierto de caché).
Una forma de mejorar la proporción de aciertos de caché es incluir solo los valores mínimos necesarios en
la clave de caché. Para obtener más información, consulte las siguientes secciones.

Puede modificar los valores (cadenas de consulta de URL, encabezados HTTP y cookies) en la clave de
caché mediante una política de caché (p. 93). (También puede modificar la clave de caché usando

103
Amazon CloudFront Guía para desarrolladores
Descripción de la clave de caché

una función Lambda@Edge (p. 337)). Antes de modificar la clave de caché, es importante comprender
cómo se diseña la aplicación y cuándo y cómo es posible que sirva diferentes respuestas en función de las
características de la solicitud del lector. Cuando un valor de la solicitud del lector determina la respuesta
que devuelve el origen, debe incluir ese valor en la clave de caché. Pero si incluye un valor en la clave de
caché que no afecta a la respuesta que devuelve su origen, es posible que termine almacenando en caché
objetos duplicados.

La clave de caché predeterminada


De forma predeterminada, la clave de caché de una distribución de CloudFront incluye la siguiente
información:

• El nombre de dominio de la distribución de CloudFront (por ejemplo, d111111abcdef8.cloudfront.net)


• La ruta URL del objeto solicitado (por ejemplo, /content/stories/example-story.html)

Otros valores de la solicitud del lector no se incluyen en la clave de caché, de forma predeterminada.
Considere la siguiente solicitud HTTP desde un navegador web.

GET /content/stories/example-story.html?ref=0123abc&split-pages=false HTTP/1.1


Host: d111111abcdef8.cloudfront.net
User-Agent: Mozilla/5.0 Gecko/20100101 Firefox/68.0
Accept: text/html,*/*
Accept-Language: en-US,en
Cookie: session_id=01234abcd
Referer: https://news.example.com/

Cuando una solicitud de lector como esta entra en una ubicación de borde de CloudFront, CloudFront
usa la clave de caché para determinar si hay un acierto de caché. De forma predeterminada, solo la
información mostrada en negrita se incluye en la clave de caché. Si el objeto solicitado no está en la caché
(un error de caché), CloudFront envía una solicitud al origen para obtener el objeto. Después de obtener el
objeto, CloudFront lo devuelve al lector y lo almacena en la caché de la ubicación de borde.

Cuando CloudFront recibe otra solicitud para el mismo objeto, según lo determinado por la clave de caché,
CloudFront sirve el objeto almacenado en caché al lector inmediatamente, sin enviar una solicitud al
origen. Por ejemplo, considere la siguiente solicitud HTTP que aparece después de la solicitud anterior.

GET /content/stories/example-story.html?ref=xyz987&split-pages=true HTTP/1.1


Host: d111111abcdef8.cloudfront.net
User-Agent: Mozilla/5.0 AppleWebKit/537.36 Chrome/83.0.4103.116
Accept: text/html,*/*
Accept-Language: en-US,en
Cookie: session_id=wxyz9876
Referer: https://rss.news.example.net/

Esta solicitud es para el mismo objeto que la solicitud anterior, pero es diferente de la solicitud anterior.
Tiene una cadena de consulta de URL diferente, encabezados User-Agent y Referer diferentes y una
cookie de session_id diferente. Sin embargo, ninguno de estos valores forma parte de la clave de caché
de forma predeterminada, por lo que esta segunda solicitud da como resultado un acierto de caché.

Personalización de la clave de caché


En algunos casos, es posible que desee incluir más información en la clave de caché, aunque al hacerlo
es posible que dé como resultado menos aciertos de la caché. Se especifica qué incluir en la clave de
caché mediante una política de caché (p. 93).

104
Amazon CloudFront Guía para desarrolladores
Control de solicitudes de origen

Por ejemplo, si el servidor de origen utiliza el encabezado HTTP Accept-Language en las solicitudes
del lector para devolver contenido diferente en función del idioma del lector, es posible que desee incluir
este encabezado en la clave de caché. Al hacerlo, CloudFront utiliza este encabezado para determinar los
aciertos de caché e incluye el encabezado en solicitudes de origen (solicitudes que CloudFront envía al
origen cuando hay un error de caché).

Una consecuencia potencial de incluir valores adicionales en la clave de caché es que es posible que
CloudFront termine almacenando en caché objetos duplicados debido a la variación que puede ocurrir
en las solicitudes del lector. Por ejemplo, es posible que los lectores puedan enviar cualquiera de los
siguientes valores para el encabezado Accept-Language:

• en-US,en
• en,en-US
• en-US, en
• en-US

Todos estos valores diferentes indican que el idioma del lector es el inglés, pero la variación puede hacer
que CloudFront almacene en caché el mismo objeto varias veces. Esto puede reducir los aciertos de
caché y aumentar el número de solicitudes de origen. Se puede evitar esta duplicación si no se incluye el
encabezado Accept-Language en la clave de caché y, en su lugar, se configura su sitio web o aplicación
para utilizar diferentes URL para el contenido en diferentes idiomas (por ejemplo, /en-US/content/
stories/example-story.html).

Para cualquier valor dado que se pretenda incluir en la clave de caché, se debe estar seguro de
comprender cuántas variaciones diferentes de ese valor es posible que aparezcan en las solicitudes del
lector. Para ciertos valores de solicitud, rara vez tiene sentido incluirlos en la clave de caché. Por ejemplo,
el encabezado User-Agent puede tener miles de variaciones únicas, por lo que generalmente no es
un buen candidato para incluirlo en la clave de caché. Las cookies que tienen valores específicos del
usuario o específicos de la sesión y son únicas en miles (o incluso millones) de solicitudes tampoco son
buenos candidatos para la inclusión de claves de caché. Si incluye estos valores en la clave de caché,
cada variación única da como resultado otra copia del objeto en la caché. Si estas copias del objeto no
son únicas o si termina con un número tan grande de objetos ligeramente diferentes que cada objeto solo
obtiene un pequeño número de aciertos de caché, es posible que desee considerar un enfoque diferente.
Puede excluir estos valores altamente variables de la clave de caché o puede marcar objetos como no
almacenables en caché.

Tenga cuidado al personalizar la clave de caché. A veces es deseable, pero puede tener consecuencias
no deseadas como almacenar en caché objetos duplicados, reducir la proporción de aciertos de caché y
aumentar el número de solicitudes de origen. Si su sitio web o aplicación de origen necesita recibir ciertos
valores de las solicitudes del lector para análisis, telemetría u otros usos, pero estos valores no cambian el
objeto que devuelve el origen, utilice una política de solicitud de origen (p. 105) para incluir estos valores
en las solicitudes de origen pero no incluirlos en la clave de caché.

Control de solicitudes de origen


Cuando una solicitud de lector en CloudFront da como resultado un error de caché (el objeto solicitado no
se almacena en caché en la ubicación de borde), CloudFront envía una solicitud al origen para recuperar
el objeto. Esto se denomina una solicitud de origen. La solicitud de origen siempre incluye la siguiente
información de la solicitud del lector:

• La ruta de URL (solo la ruta, sin cadenas de consulta de URL ni el nombre de dominio)
• El cuerpo de la solicitud (si hay uno)
• Los encabezados HTTP que CloudFront incluye automáticamente en cada solicitud de origen, incluidos
Host, User-Agent y X-Amz-Cf-Id.

105
Amazon CloudFront Guía para desarrolladores
Descripción de políticas de solicitud de origen

Otra información de la solicitud del lector, como cadenas de consulta de URL, encabezados HTTP y
cookies, no se incluye en la solicitud de origen de forma predeterminada. Pero es posible que desee recibir
parte de esta otra información en el origen, por ejemplo, para recopilar datos para análisis o telemetría.
Puede utilizar una política de solicitud de origen para controlar la información que se incluye en una
solicitud de origen.

Las políticas de solicitud de origen son independientes de las políticas de caché (p. 93), que controlan
la clave de caché. Esta separación le permite recibir información adicional en el origen y también mantener
una buena proporción de aciertos de la caché (la proporción de solicitudes de lector que dan lugar a un
acierto de la caché). Para ello, controle por separado qué información se incluye en las solicitudes de
origen (mediante la política de solicitud de origen) y cuál se incluye en la clave de caché (mediante la
política de caché).

Aunque los dos tipos de políticas son independientes, están relacionadas. Todas las cadenas de consulta
de URL, encabezados HTTP y cookies que se incluyen en la clave de caché (mediante una política de
caché) se incluyen automáticamente en las solicitudes de origen. Utilice la política de solicitud de origen
para especificar la información que desea incluir en las solicitudes de origen, pero no en la clave de
caché. Al igual que una política de caché, puede asociar una política de solicitud de origen a uno o más
comportamientos de caché de una distribución de CloudFront.

También puede utilizar una política de solicitud de origen para agregar encabezados HTTP adicionales
a una solicitud de origen que no se incluyeron en la solicitud del lector. CloudFront agrega estos
encabezados adicionales antes de enviar la solicitud de origen, con valores de encabezado que se
determinan automáticamente en función de la solicitud del lector. Para obtener más información, consulte
Uso de los encabezados HTTP de CloudFront (p. 113).

Contenido
• Descripción de políticas de solicitud de origen (p. 106)
• Información de políticas (p. 106)
• Configuración de solicitud de origen (p. 107)
• Creación de políticas de solicitud de origen (p. 108)
• Uso de las políticas de solicitud de origen administrada (p. 111)
• Asociar una política de solicitud de origen administrada (p. 112)
• Descripción de las políticas de solicitud de origen administrada (p. 112)

Descripción de políticas de solicitud de origen


CloudFront proporciona algunas políticas de solicitud de origen predefinidas, conocidas como políticas
administradas, para casos de uso comunes. Puede usar estas políticas administradas o puede crear su
propia política de solicitud de origen específica para sus necesidades. Para obtener más información sobre
las políticas administradas, consulte Uso de las políticas de solicitud de origen administrada (p. 111).

Una política de solicitud de origen contiene la siguiente configuración, que se clasifica en información de
política y configuración de solicitud de origen.

Información de políticas
Nombre

Un nombre para identificar la política de solicitud de origen. En la consola, se utiliza el nombre para
asociar la política de solicitud de origen a un comportamiento de caché.
Comentario

Un comentario para describir la política de solicitud de origen. Esto es opcional.

106
Amazon CloudFront Guía para desarrolladores
Descripción de políticas de solicitud de origen

Configuración de solicitud de origen


La configuración de la solicitud de origen especifica los valores de las solicitudes de lector que se incluyen
en las solicitudes que CloudFront envía al origen (conocidas como solicitudes de origen). Los valores
pueden incluir cadenas de consulta de URL, encabezados HTTP y cookies. Los valores que especifique se
incluyen en las solicitudes de origen, pero no se incluyen en la clave de caché. Para obtener información
sobre cómo controlar la clave de caché, consulte Control de la clave de caché (p. 93).

Cadenas de consulta

Las cadenas de consulta de URL en las solicitudes de lector que CloudFront incluye en las solicitudes
de origen. Para cadenas de consulta, puede elegir una de las opciones siguientes:
• None (Ninguna): las cadenas de consulta en las solicitudes de lector no se incluyen en las
solicitudes de origen.
• All (Todas): todas las cadenas de consulta de las solicitudes de lector se incluyen en las solicitudes
de origen.
• Whitelist (Lista blanca): esta opción le permite especificar cuál de las cadenas de consulta de las
solicitudes de lector se incluye en las solicitudes de origen.

Cuando se utiliza la opción Whitelist (Lista blanca), se especifican cadenas de consulta por su nombre,
no por su valor. Por ejemplo, fíjese en la ruta URL siguiente:

/content/stories/example-story.html?split-pages=false

En este caso, se especifica la cadena de consulta como split-pages, no como split-


pages=false. Sin embargo, CloudFront incluye la cadena de consulta completa, incluido su valor, en
las solicitudes de origen.
Encabezados

Los encabezados HTTP en las solicitudes del lector que CloudFront incluye en solicitudes de origen.
En encabezados, puede elegir una de las siguientes configuraciones:
• None (Ninguna): los encabezados HTTP en las solicitudes de lector no se incluyen en solicitudes de
origen.
• All viewer headers (Todos los encabezados del lector): todos los encabezados HTTP de las
solicitudes de lector se incluyen en las solicitudes de origen.
• Whitelist (Lista blanca): esta opción le permite especificar qué encabezados HTTP se incluyen en
solicitudes de origen.
• All viewer headers and whitelisted CloudFront-* headers (Todos los encabezados del lector y
los encabezados CloudFront* incluidos en la lista blanca): todos los encabezados HTTP de las
solicitudes de lector se incluyen en las solicitudes de origen. Además, se especifica cuál de los
encabezados de CloudFront se desea agregar a las solicitudes de origen. Para obtener más
información acerca de los encabezados de CloudFront, consulte Uso de los encabezados HTTP de
CloudFront (p. 113).

Cuando se utiliza la configuración Whitelist (Lista blanca) o All viewer headers and whitelisted
CloudFront-* headers (Todos los encabezados del lector y los encabezados de CloudFront* incluidos
en la lista blanca), se especifican los encabezados HTTP por su nombre, no por su valor. Por ejemplo,
fíjese en el encabezado HTTP siguiente:

Accept-Language: en-US,en;q=0.5

En este caso, se especifica el encabezado como Accept-Language, no como Accept-Language:


en-US,en;q=0.5. Sin embargo, CloudFront incluye el encabezado completo, incluido su valor, en las
solicitudes de origen.

107
Amazon CloudFront Guía para desarrolladores
Creación de políticas de solicitud de origen

Cookies

Las cookies en las solicitudes del lector que CloudFront incluye en solicitudes de origen. Para cookies,
puede elegir una de las siguientes configuraciones:
• None (Ninguna): las cookies en las solicitudes de lector no están incluidas en las solicitudes de
origen.
• All (Todas): las cookies en las solicitudes de lector se incluyen en las solicitudes de origen.
• Whitelist (Lista blanca): esta opción le permite especificar cuáles de las cookies en las solicitudes de
lector se incluyen en las solicitudes de origen.

Cuando utiliza la opción Whitelist (Lista blanca), se especifican las cookies por su nombre, no por su
valor. Por ejemplo, fíjese en el encabezado Cookie siguiente:

Cookie: session_ID=abcd1234

En este caso, se especifica la cookie como session_ID, no como session_ID=abcd1234. Sin


embargo, CloudFront incluye la cookie completa, incluido su valor, en las solicitudes de origen.

Creación de políticas de solicitud de origen


Puede utilizar una política de solicitud de origen para controlar los valores (cadenas de consulta de URL,
encabezados HTTP y cookies) que se incluyen en las solicitudes que CloudFront envía al origen. Puede
crear una política de solicitud de origen en la consola de CloudFront, con la interfaz de línea de comandos
de AWS (AWS CLI) o con la API de CloudFront.

Después de crear una política de solicitud de origen, puede asociarla a uno o más comportamientos de
caché en una distribución de CloudFront.

Las políticas de solicitud de origen no son obligatorias. Cuando un comportamiento de caché no tiene una
política de solicitud de origen asociada, la solicitud de origen incluye todos los valores especificados en la
política de caché (p. 93), pero nada más.
Note

Para utilizar una política de solicitud de origen, el comportamiento de caché también debe utilizar
una política de caché (p. 93). No se puede utilizar una política de solicitud de origen en un
comportamiento de caché sin una política de caché.

Creación de políticas de solicitud de origen (consola)

Para crear una política de solicitud de origen (consola)

1. Inicie sesión en la consola de administración de AWS y abra la página Policies (Políticas) en la


consola de CloudFront en https://console.aws.amazon.com/cloudfront/v2/home?#/policies.
2. Elija Origin request policy (Política de solicitud de origen) y, a continuación, elija Create origin request
policy (Crear política de solicitud de origen).
3. Elija la configuración deseada para esta política de solicitud de origen. Para obtener más información,
consulte Descripción de políticas de solicitud de origen (p. 106).
4. Cuando haya terminado, elija Create origin request policy (Crear política de solicitud de origen).

Después de crear una política de solicitud de origen, puede asociarla a un comportamiento de caché.

108
Amazon CloudFront Guía para desarrolladores
Creación de políticas de solicitud de origen

Para asociar una política de solicitud de origen a una distribución existente (consola)

1. Abra la página Distributions (Distribuciones) en la consola de CloudFront en https://


console.aws.amazon.com/cloudfront/home#distributions:.
2. Elija la distribución que se va a actualizar y, a continuación, elija la pestaña Behaviors
(Comportamientos).
3. Elija el comportamiento de caché que se va a actualizar y, a continuación, elija Edit (Editar).

O bien, para crear un nuevo comportamiento de caché, elija Create Behavior (Crear comportamiento).
4. En Cache and origin request settings (Configuración de la solicitud de origen y caché), asegúrese
de que se elige Use a cache policy and origin request policy (Usar una política de caché y política de
solicitud de origen).
5. En Origin Request Policy (Política de solicitud de origen), elija la política de solicitud de origen que se
va a asociar a este comportamiento de caché.
6. En la parte inferior de la página, elija Yes, Edit (Sí, editar).

Para asociar una política de solicitud de origen con una nueva distribución (consola)

1. Abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/home.


2. Elija Create Distribution (Crear distribución) y, a continuación, en Web, elija Get Started (Empezar).
3. En Cache and origin request settings (Configuración de la solicitud de origen y caché), asegúrese
de que se elige Use a cache policy and origin request policy (Usar una política de caché y política de
solicitud de origen).
4. En Origin Request Policy (Política de solicitud de origen), elija la política de solicitud de origen que se
va a asociar al comportamiento de la caché predeterminado de esta distribución.
5. Elija la configuración deseada para el origen, el comportamiento predeterminado de la caché y la
distribución. Para obtener más información, consulte Valores que deben especificarse al crear o
actualizar una distribución (p. 43).
6. Cuando haya terminado, elija Create Distribution (Crear distribución).

Creación de políticas de solicitud de origen (AWS CLI)


Para crear una política de solicitud de origen con la interfaz de línea de comandos de AWS (AWS CLI),
utilice el comando aws cloudfront create-origin-request-policy. Puede utilizar un archivo de entrada para
proporcionar los parámetros de entrada del comando, en lugar de especificar cada parámetro individual
como entrada de línea de comandos.

Para crear una política de solicitud de origen (CLI con archivo de entrada)

1. Utilice el siguiente comando para crear un archivo denominado origin-request-policy.yaml


que contenga todos los parámetros de entrada del comando create-origin-request-policy.

aws cloudfront create-origin-request-policy --generate-cli-skeleton yaml-input >


origin-request-policy.yaml

Note

La opción yaml-input solo está disponible en la versión 2 de la CLI de AWS. Con la versión
1 de la CLI de AWS, puede generar un archivo de entrada en formato JSON. Para obtener
más información, consulte Generar el esqueleto y los parámetros de entrada de AWS CLI a
partir de un archivo de entrada JSON o YAML en la Guía del usuario de la interfaz de línea de
comandos de AWS.

109
Amazon CloudFront Guía para desarrolladores
Creación de políticas de solicitud de origen

2. Abra el archivo llamado origin-request-policy.yaml que acaba de crear. Edite el archivo para
especificar la configuración de política de solicitud de origen que desee y, a continuación, guarde el
archivo. Puede eliminar campos opcionales del archivo, pero no eliminar los campos obligatorios.

Para obtener más información acerca de la configuración de política de solicitud de origen, consulte
Descripción de políticas de solicitud de origen (p. 106).
3. Utilice el siguiente comando para crear la política de solicitud de origen utilizando parámetros de
entrada del archivo de origin-request-policy.yaml.

aws cloudfront create-origin-request-policy --cli-input-yaml file://origin-request-


policy.yaml

Anote el valor de Id en la salida del comando. Este es el ID de política de solicitud de origen y se


necesita para asociar la política de solicitud de origen al comportamiento de caché de una distribución
de CloudFront.

Para asociar una política de solicitud de origen a una distribución existente (CLI con archivo de
entrada)

1. Utilice el comando siguiente para guardar la configuración de distribución de la distribución de


CloudFront que desea actualizar. Reemplace distribución_ID por el ID de la distribución.

aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-


config.yaml

Note

La opción --output yaml solo está disponible en la versión 2 de la CLI de AWS. Con la
versión 1 de la CLI de AWS, puede generar la salida en formato JSON. Para obtener más
información, consulte Control de la salida de comandos de la CLI de AWS en la Guía del
usuario de la interfaz de línea de comandos de AWS.
2. Abra el archivo llamado dist-config.yaml que acaba de crear. Edite el archivo, realizando los
siguientes cambios en cada comportamiento de caché que actualice para utilizar una política de
solicitud de origen.

• En el comportamiento de caché, agregue un campo denominado OriginRequestPolicyId. Para


el valor del campo, utilice el ID de política de solicitud de origen que anotó después de crear la
política.
• Cambie el nombre del campo ETag a IfMatch, pero no cambie el valor del campo.

Guarde el archivo cuando haya terminado.


3. Utilice el siguiente comando para actualizar la distribución para utilizar la política de solicitud de origen.
Reemplace distribución_ID por el ID de la distribución.

aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-


config.yaml

110
Amazon CloudFront Guía para desarrolladores
Uso de las políticas de solicitud de origen administrada

Para asociar una política de caché a una nueva distribución (CLI con archivo de entrada)

1. Utilice el siguiente comando para crear un archivo denominado distribution.yaml que contenga
todos los parámetros de entrada del comando create-distribution.

aws cloudfront create-distribution --generate-cli-skeleton yaml-input >


distribution.yaml

Note

La opción yaml-input solo está disponible en la versión 2 de la CLI de AWS. Con la versión
1 de la CLI de AWS, puede generar un archivo de entrada en formato JSON. Para obtener
más información, consulte Generar el esqueleto y los parámetros de entrada de AWS CLI a
partir de un archivo de entrada JSON o YAML en la Guía del usuario de la interfaz de línea de
comandos de AWS.
2. Abra el archivo llamado distribution.yaml que acaba de crear. En el comportamiento de caché
predeterminado, en el campo OriginRequestPolicyId, escriba el ID de política de solicitud
de origen que anotó después de crear la política. Siga editando el archivo para especificar la
configuración de distribución que desee y, a continuación, guarde el archivo cuando termine.

Para obtener más información acerca de la configuración de distribución, consulte Valores que deben
especificarse al crear o actualizar una distribución (p. 43).
3. Utilice el siguiente comando para crear la distribución mediante los parámetros de entrada del archivo
de distribution.yaml.

aws cloudfront create-distribution --cli-input-yaml file://distribution.yaml

Creación de políticas de solicitud de origen (API)


Para crear una política de solicitud de origen con la API de CloudFront, utilice CreateOriginRequestPolicy.
Para obtener más información acerca de los campos que especifique en esta llamada a la API, consulte
Descripción de políticas de solicitud de origen (p. 106) y la documentación de referencia de la API para el
SDK de AWS u otro cliente de la API.

Después de crear una política de solicitud de origen, puede asociarla a un comportamiento de caché
mediante una de las siguientes llamadas a la API:

• Para asociarla a un comportamiento de caché en una distribución existente, utilice UpdateDistribution.


• Para asociarlo con un comportamiento de caché en una nueva distribución, utilice CreateDistribution.

Para estas llamadas a la API, proporcione el ID de la política de solicitud de origen en el campo


OriginRequestPolicyId, dentro de un comportamiento de caché. Para obtener más información
acerca de los otros campos que especifique en estas llamadas a la API, consulte Valores que deben
especificarse al crear o actualizar una distribución (p. 43) y la documentación de referencia de la API para
el SDK de AWS u otro cliente de la API.

Uso de las políticas de solicitud de origen


administrada
CloudFront proporciona un conjunto de políticas de solicitud de origen administradas que puede asociar
a cualquiera de los comportamientos de caché de la distribución. Con una política de solicitud de origen

111
Amazon CloudFront Guía para desarrolladores
Uso de las políticas de solicitud de origen administrada

administrada, no es necesario escribir ni mantener su propia política de solicitud de origen. Las políticas
administradas utilizan configuraciones optimizadas para casos de uso específicos.

Contenido
• Asociar una política de solicitud de origen administrada (p. 112)
• Descripción de las políticas de solicitud de origen administrada (p. 112)

Asociar una política de solicitud de origen administrada


Para utilizar una política de solicitud de origen administrada, debe asociarla a un comportamiento de
caché en su distribución. El proceso es el mismo que cuando se crea una política de solicitud de origen,
pero en lugar de crear una nueva, simplemente se asocia una de las políticas de solicitud de origen
administradas. Puede asociar la política por nombre (con la consola) o por ID (con la CLI o los SDK de
AWS). Los nombres e ID se muestran en la siguiente sección.

Para obtener más información, consulte Creación de políticas de solicitud de origen (p. 108).

Descripción de las políticas de solicitud de origen administrada


En la siguiente lista se describen las políticas de solicitud de origen administrada.

Nombre: Managed-UserAgentRefererHeaders, ID: acba4595-bd28-49b8-b9fe-13317c0390fa

Esta política incluye solo los encabezados User-Agent y Referer. No incluye cadenas de consulta
ni cookies.

Configuración de política
• Cadenas de consulta incluidas en las solicitudes de origen: ninguna
• Encabezados incluidos en las solicitudes de origen:
• User-Agent
• Referer
• Cookies incluidas en las solicitudes de origen: ninguna
Nombre: Managed-CORS-CustomOrigin, ID: 59781a5b-3903-41f3-afcb-af62929ccde1

Esta política incluye el encabezado que habilita las solicitudes de uso compartido de recursos de
origen cruzado (CORS) cuando el origen es un origen personalizado.

Configuración de política
• Cadenas de consulta incluidas en las solicitudes de origen: ninguna
• Encabezados incluidos en las solicitudes de origen:
• Origin
• Cookies incluidas en las solicitudes de origen: ninguna
Nombre: Managed-CORS-S3Origin, ID: 88a5eaf4-2fd4-4709-b370-b4c650ea3fcf

Esta política incluye los encabezados que habilitan las solicitudes de uso compartido de recursos de
origen cruzado (CORS) cuando el origen es un bucket de Amazon S3.

Configuración de política
• Cadenas de consulta incluidas en las solicitudes de origen: ninguna
• Encabezados incluidos en las solicitudes de origen:
• Origin
• Access-Control-Request-Headers
• Access-Control-Request-Method

112
Amazon CloudFront Guía para desarrolladores
Uso de los encabezados HTTP de CloudFront

• Cookies incluidas en las solicitudes de origen: ninguna


Nombre: Managed-AllViewer, ID: 216adef6-5c7f-47e4-b989-5492eafa07d3

Esta política incluye todos los valores (cadenas de consulta, encabezados y cookies) en la solicitud del
lector.

Configuración de política
• Cadenas de consulta incluidas en las solicitudes de origen: todas
• Encabezados incluidos en las solicitudes de origen: todos los encabezados de la solicitud del lector
• Cookies incluidas en las solicitudes de origen: todas
Nombre: Managed-Elemental-MediaTailor-PersonalizedManifests, ID: 775133bc-15f2-49f9-abea-
afb2e0bf67d2

Esta política está diseñada para su uso con un origen que es un punto de enlace de AWS Elemental
MediaTailor.

Configuración de política
• Cadenas de consulta incluidas en las solicitudes de origen: todas
• Encabezados incluidos en las solicitudes de origen:
• Origin
• Access-Control-Request-Headers
• Access-Control-Request-Method
• User-Agent
• X-Forwarded-For
• Cookies incluidas en las solicitudes de origen: ninguna

Uso de los encabezados HTTP de CloudFront


Puede configurar CloudFront para agregar encabezados HTTP específicos en función de las
características de la solicitud del lector. Con estos encabezados, su origen puede recibir información sobre
el tipo de dispositivo del lector, la ubicación geográfica, etc., sin necesidad de un código personalizado
para determinar esta información. Si su origen devuelve respuestas diferentes en función de la información
de estos encabezados, puede incluirlas en la clave de caché para que CloudFront almacene en caché las
diferentes respuestas por separado.

Para recibir estos encabezados en su origen, utilice una política de solicitud de origen. Para obtener más
información, consulte Control de solicitudes de origen (p. 105).

Para incluir estos encabezados en la clave de caché, utilice una política de caché. Para obtener más
información, consulte Control de la clave de caché (p. 93) y Descripción de la clave de caché (p. 103).

Temas
• Encabezados para determinar el tipo de dispositivo del lector (p. 113)
• Encabezados para determinar la ubicación del lector (p. 114)
• Otros encabezados de CloudFront (p. 114)

Encabezados para determinar el tipo de dispositivo del


lector
Utilice los siguientes encabezados para determinar el tipo de dispositivo del lector. En función del valor
del encabezado User-Agent, CloudFront establece el valor de estos encabezados en true o false.

113
Amazon CloudFront Guía para desarrolladores
Encabezados para determinar la ubicación del lector

Si un dispositivo entra en más de una categoría, más de un valor podría ser true. Por ejemplo, en el
caso de algunas tabletas, CloudFront podría establecer tanto CloudFront-Is-Mobile-Viewer como
CloudFront-Is-Tablet-Viewer en true.

• CloudFront-Is-Android-Viewer: se establece en true cuando CloudFront determina que el lector


es un dispositivo con el sistema operativo Android.
• CloudFront-Is-Desktop-Viewer: se establece en true cuando CloudFront determina que el lector
es un dispositivo de sobremesa.
• CloudFront-Is-IOS-Viewer: se establece en true cuando CloudFront determina que el lector es un
dispositivo con un sistema operativo Apple.
• CloudFront-Is-Mobile-Viewer: se establece en true cuando CloudFront determina que el lector
es un dispositivo móvil.
• CloudFront-Is-SmartTV-Viewer: se establece en true cuando CloudFront determina que el lector
es una TV inteligente.
• CloudFront-Is-Tablet-Viewer: se establece en true cuando CloudFront determina que el lector
es una tableta.

Encabezados para determinar la ubicación del lector


Utilice los siguientes encabezados para la ubicación del lector. CloudFront determina los valores de estos
encabezados en función de la dirección IP del lector.
Note

Para los caracteres no ASCII en los valores de estos encabezados, CloudFront aplica la
codificación de porcentaje de acuerdo con la sección 1.2 de RFC 3986.

• CloudFront-Viewer-City: contiene el nombre de la ciudad del lector.


• CloudFront-Viewer-Country: contiene el código de país de dos letras del país del lector. Para
obtener una lista de códigos de países, consulte ISO 3166-1 alpha-2.
• CloudFront-Viewer-Country-Name: contiene el nombre del país del lector.
• CloudFront-Viewer-Country-Region: contiene un código (hasta tres caracteres) que representa la
región del lector. La región es la subdivisión más específica del código ISO 3166-2 .
• CloudFront-Viewer-Country-Region-Name: contiene el nombre de la región del lector. La región
es la subdivisión más específica del código ISO 3166-2 .
• CloudFront-Viewer-Latitude: contiene la latitud aproximada del lector.
• CloudFront-Viewer-Longitude: contiene la longitud aproximada del lector.
• CloudFront-Viewer-Metro-Code: contiene el código del área metropolitana del lector. Esto solo
está presente cuando el lector se encuentra en los Estados Unidos.
• CloudFront-Viewer-Postal-Code: contiene el código postal del lector.
• CloudFront-Viewer-Time-Zone contiene la zona horaria del lector, en formato de base de datos de
zona horaria de IANA (por ejemplo, America/Los_Angeles).

Otros encabezados de CloudFront


Utilice los siguientes encabezados para determinar el protocolo y la versión HTTP de la solicitud del lector.

• CloudFront-Forwarded-Proto: contiene el protocolo de la solicitud del lector (HTTP o HTTPS).


• CloudFront-Viewer-Http-Version: contiene la versión HTTP de la solicitud del lector.

114
Amazon CloudFront Guía para desarrolladores
Añadir y acceder al contenido

Agregar, eliminar o sustituir contenido


que distribuye CloudFront
En esta sección se explica cómo asegurarse de que CloudFront pueda acceder al contenido que desea
distribuir a los lectores, cómo especificar los objetos en su sitio web o en su aplicación y cómo quitar o
reemplazar contenido.

Temas
• Agregar y acceder al contenido que distribuye CloudFront (p. 115)
• Actualización del contenido existente con una distribución de CloudFront (p. 115)
• Eliminación de contenido para que CloudFront no lo distribuya (p. 117)
• Personalización del formato de URL para archivos en CloudFront (p. 117)
• Especificar un objeto raíz predeterminado (p. 118)
• Invalidar archivos (p. 121)
• Ofrecer archivos comprimidos (p. 128)
• Generación de respuestas de error personalizadas (p. 132)

Agregar y acceder al contenido que distribuye


CloudFront
Si desea que CloudFront distribuya contenido (objetos), agregue archivos a uno de los orígenes que haya
especificado para la distribución y exponga un enlace de CloudFront a los archivos. Una ubicación de
borde de CloudFront no recupera los nuevos archivos desde un origen hasta que la ubicación de borde
recibe solicitudes de lectores para ellos. Para obtener más información, consulte Cómo CloudFront entrega
el contenido (p. 5).

Cuando agrega un archivo que desee que CloudFront distribuya, asegúrese de agregarlo a uno de los
buckets de Amazon S3 especificados en la distribución o, en el caso de un origen personalizado, a un
directorio en el dominio especificado. Confirme también que el patrón de ruta en el comportamiento de la
caché aplicable envía solicitudes al origen correcto.

Por ejemplo, suponga que el patrón de una ruta de comportamiento de la caché es *.html. Si no dispone
de ningún otro comportamiento de caché configurado para reenviar solicitudes a dicho origen, CloudFront
solo reenviará archivos *.html. En este caso, por ejemplo, CloudFront nunca distribuirá archivos .jpg que
carga al origen, ya que no ha creado un comportamiento de caché que incluya archivos .jpg.

Los servidores de CloudFront no determinan el tipo MIME de los objetos que distribuyen. Al cargar un
archivo en su origen, le recomendamos que establezca el campo de encabezado Content-Type del
mismo.

Actualización del contenido existente con una


distribución de CloudFront
Hay dos formas de actualizar el contenido existente que CloudFront tiene configurado para distribuirle:

115
Amazon CloudFront Guía para desarrolladores
Actualización de archivos existentes
con versiones de nombres de archivos

• Actualizar los archivos que usen el mismo nombre


• Actualizar utilizando un identificador de versión en el nombre de archivo

Le recomendamos que utilice un identificador de versión en nombres de archivos o en nombres de


carpetas, para contribuir a darle un mayor control en la administración del contenido que distribuye
CloudFront.

Actualización de archivos existentes con versiones de


nombres de archivos
Al actualizar los archivos existentes en una distribución de CloudFront, le recomendamos incluir algún
identificador de versión en sus nombres de archivo o de directorios para tener un mejor control de su
contenido. Este identificador puede ser una marca temporal fecha-hora, un número en secuencia o algún
otro 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. Cuando
desee comenzar a ofrecer una nueva versión del archivo, deberá llamarlo image_2.jpg y actualizar los
enlaces en su sitio o aplicación web para que apunten a image_2.jpg. De forma alternativa, puede colocar
todos los gráficos en un directorio images_v1 y, cuando desee comenzar a distribuir nuevas versiones de
uno o varios gráficos, crear un nuevo directorio images_v2 y actualizar los enlaces para apuntar a dicho
directorio. Con el control de versiones, no es necesario esperar a que un objeto caduque antes de que
CloudFront comience a ofrecer una nueva versión del mismo ni pagar por la invalidación de objetos.

Incluso si crea versiones de sus archivos, recomendamos que defina una fecha de vencimiento. Para
obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).
Note

Especificar nombres de archivo o de directorios con versiones no está relacionado con el control
de versiones de objetos de Amazon S3.

Actualizar contenidos existentes con los mismos


nombres de archivos
Aunque puede actualizar los archivos existentes en una distribución de CloudFront y utilizar los mismos
nombres de archivos, no se lo recomendamos. CloudFront distribuye archivos a ubicaciones de borde solo
cuando los archivos se solicitan, no cuando carga archivos nuevos o actualizados en el origen. Si actualiza
un archivo existente en el origen con una versión más reciente que tenga el mismo nombre, una ubicación
de 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é (vencimiento) (p. 268).
• Dicha ubicación de borde reciba una solicitud del archivo de parte de un usuario.

Si utiliza los mismos nombres al sustituir los archivos, no puede controlar cuándo CloudFront comienza a
distribuir los nuevos archivos. De forma predeterminada, CloudFront almacena archivos en las cachés de
ubicaciones de borde durante 24 horas. (Para obtener más información, consulte Administración de cuánto
tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).) Por ejemplo, si sustituye todos los
archivos de un sitio web completo:

• Los archivos de las páginas menos populares pueden no estar en las ubicaciones de borde. Las nuevas
versiones de estos archivos comenzarán a ofrecerse a partir de la siguiente solicitud.

116
Amazon CloudFront Guía para desarrolladores
Eliminación de contenido para
que CloudFront no lo distribuya

• Los archivos de algunas páginas pueden estar en algunas ubicaciones de borde y no en otras, por lo
que los usuarios finales verán distintas versiones en función de la ubicación de borde desde la que los
reciben.
• Es posible que las versiones nuevas de los archivos de las páginas más populares no se ofrezcan
durante hasta 24 horas porque CloudFront puede haber recuperado los archivos de dichas páginas solo
antes de sustituir los archivos con nuevas versiones.

Eliminación de contenido para que CloudFront no lo


distribuya
Puede quitar archivos de su origen que ya no desee incluir en su distribución de CloudFront. Sin embargo,
CloudFront seguirá mostrando a los lectores contenido desde la caché de borde hasta que los archivos
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. 121).
• Utilizar el control de versiones de archivos. Cuando se utiliza el control de versiones, las distintas
versiones de un archivo tienen diferentes nombres que puede usar en su distribución de CloudFront,
para cambiar el archivo que se devuelve a los lectores. Para obtener más información, consulte
Actualización de archivos existentes con versiones de nombres de archivos (p. 116).

Personalización del formato de URL para archivos


en CloudFront
Después de configurar el origen con los objetos (contenido) que desee que CloudFront distribuya a los
lectores, debe utilizar las URL correctas para hacer referencia a dichos objetos en su sitio web o có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 web
puede ser uno de los siguientes:

• El nombre de dominio, como d111111abcdef8.cloudfront.net, que CloudFront asigna


automá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 origen
personalizado, como uno de sus servidores web.
Note

El formato de URL depende en parte del valor que especifique para Origin Path (Ruta de origen)
en su distribución. Este valor ofrece a CloudFront una ruta de directorio de nivel superior para sus

117
Amazon CloudFront Guía para desarrolladores
Uso de su propio nombre de dominio (Example.com)

objetos. Para obtener más información sobre la configuración de la ruta de origen al crear una
distribución, consulte Ruta de origen (p. 47).

Para obtener más información sobre los formatos de URL, consulte las siguientes secciones.

Uso de su propio nombre de dominio (Example.com)


En lugar de utilizar el nombre de dominio predeterminado que CloudFront le asigna al crear una
distribución, puede agregar un nombre de dominio alternativo con el que sea más fácil trabajar, como
example.com. Al configurar su propio nombre de dominio con CloudFront, puede utilizar una URL como
esta para los objetos de su distribución:

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

Si tiene previsto utilizar HTTPS entre los lectores y CloudFront, consulte Usar nombres de dominio
alternativos y HTTPS (p. 150).

Uso de una barra final (/) en las URL


Cuando 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 para
todas 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 puede
ayudar a prevenir problemas cuando desea invalidar un directorio más tarde. CloudFront almacena las
URL exactamente como se definen, incluidas las barras finales. Por tanto, si el formato es incoherente,
tendrá que invalidar las URL de directorio con y sin la barra, para garantizar que CloudFront quite el
directorio.

Resulta incómodo tener que invalidar ambos formatos de URL y puede suponer costos adicionales. Esto
se debe a que si hay que duplicar las invalidaciones para cubrir ambos tipos de URL, se podría exceder el
número máximo de invalidaciones gratuitas permitidas durante el mes. Y si esto ocurre, tendrá que pagar
por todas las invalidaciones, aunque solo exista en CloudFront un formato para cada URL de directorio.

Creación de URL firmadas para contenido restringido


Si tiene contenido al que desea restringir el acceso, puede crear URL firmadas. Por ejemplo, si desea
distribuir su contenido únicamente a los usuarios que se hayan autenticado, puede crear unas URL que
solo sean válidas durante un periodo de tiempo indicado o que solo estén disponibles desde una dirección
IP especificada. Para obtener más información, consulte Distribución de contenido privado con URL
firmadas y cookies firmadas (p. 164).

Especificar un objeto raíz predeterminado


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

Temas

118
Amazon CloudFront Guía para desarrolladores
Cómo especificar un objeto raíz predeterminado

• Cómo especificar un objeto raíz predeterminado (p. 119)


• Cómo funcionan los encabezados con objetos raíz predeterminados (p. 120)
• Cómo funciona CloudFront si no se define un objeto raíz (p. 121)

Cómo especificar un objeto raíz predeterminado


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

Especificar un objeto raíz predeterminado para su distribución

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

El archivo puede ser cualquier tipo admitido por CloudFront. Para obtener una lista de las limitaciones
de los nombres de archivo, consulte la descripción del elemento DefaultRootObject en Tipo
complejo DistributionConfig.
Note
Si el nombre de archivo del objeto raíz predeterminado es demasiado largo o contiene
caracteres no válidos, CloudFront devuelve el error HTTP 400 Bad Request -
InvalidDefaultRootObject. Además, CloudFront almacena en caché el código durante
10 segundos (de forma predeterminada) y escribe los resultados en los registros de acceso.
2. Confirme que los permisos del objeto conceden a CloudFront al menos acceso read.

Para obtener más información acerca de los permisos de Amazon S3, consulte Control de acceso en
la Guía para desarrolladores de Amazon Simple Storage Service. Para obtener información sobre el
uso de la consola de Amazon S3 para actualizar permisos, vaya a Guía del usuario de la consola de
Amazon Simple Storage Service.
3. Actualice la distribución para referirse al objeto raíz predeterminado mediante la consola de
CloudFront o la API de CloudFront.

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 a
actualizar.
c. En el panel Distribution Details (Detalles de la distribución), en la pestaña General, elija Edit
(Editar).
d. En el cuadro de diálogo Edit Distribution (Editar distribución), en el campo Default Root Object
(Objeto raíz predeterminado), escriba el nombre de archivo del objeto raíz predeterminado.

Escriba solo el objeto, por ejemplo, index.html. No añada / antes del nombre del objeto.
e. Seleccione Yes, Edit (Sí, editar) para guardar los cambios.

Para actualizar la configuración mediante la API de CloudFront, debe especificar un valor en el


elemento DefaultRootObject de su distribución. Para obtener información sobre el uso de la API
de CloudFront para especificar un objeto raíz predeterminado, consulte PUT Distribution Config en la
Referencia de la API de Amazon CloudFront.
4. Realice una solicitud de su URL raíz para confirmar si el objeto raíz predeterminado está habilitado. Si
el navegador no muestra el objeto raíz predeterminado, siga los pasos siguientes:

a. Consulte el estado de su distribución en la consola de CloudFront para confirmar que está


implementada por completo.

119
Amazon CloudFront Guía para desarrolladores
Cómo funcionan los encabezados
con objetos raíz predeterminados

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

Cómo funcionan los encabezados con objetos raíz


predeterminados
A continuación, se muestra un ejemplo de cómo funciona un objeto raíz predeterminado. Suponga que la
siguiente 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 objeto
específico, como en el primer ejemplo:

http://d111111abcdef8.cloudfront.net/

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

http://d111111abcdef8.cloudfront.net/

Devuelve:

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

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

http://d111111abcdef8.cloudfront.net/install/

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

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

El comportamiento de los objetos raíz predeterminados de CloudFront es diferente del comportamiento


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

Recuerde que un objeto raíz predeterminado es aplicable únicamente a su distribución de


CloudFront. Aún tendrá que administrar la seguridad de su origen. Por ejemplo, si utiliza un
origen de Amazon S3, deberá configurar las ACL de su bucket de Amazon S3 de forma tal que se
asegure el nivel de acceso que desea en dicho bucket.

120
Amazon CloudFront Guía para desarrolladores
Cómo funciona CloudFront si no se define un objeto raíz

Cómo funciona CloudFront si no se define un objeto


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

• Una lista del contenido de su bucket de Amazon S3: cualquier persona que utilice CloudFront para
obtener acceso a su distribución podrá ver el contenido de su origen si se cumple cualquiera de estas
condiciones:
• Si su bucket no está configurado correctamente.
• Si los permisos de Amazon S3 del bucket asociado a su distribución y de los objetos del bucket
conceden acceso a todo el mundo.
• Si un usuario final obtiene acceso a su origen mediante la URL raíz del origen.
• Una lista del contenido privado de su origen: si configura el origen como una distribución privada (solo
usted y CloudFront tienen acceso), cualquiera que tenga las credenciales para obtener acceso a la
distribución a través de CloudFront podrá ver el contenido del bucket de Amazon S3 asociado a su
distribución. En este caso, los usuarios no podrán obtener acceso a su contenido a través de la URL
raíz del origen. Para obtener más información acerca de la distribución de contenido privado, consulte
Distribución de contenido privado con URL firmadas y cookies firmadas (p. 164).
• Error 403 Forbidden: CloudFront devuelve este error si los permisos del bucket de Amazon S3
asociado a la distribución o los permisos de los objetos de dicho bucket deniegan el acceso a CloudFront
y a los demás usuarios.

Invalidar archivos
Si necesita quitar un archivo de cachés de borde de CloudFront antes de que caduquen, puede elegir una
de las siguientes alternativas:

• Invalide el archivo de las cachés perimetrales. La vez siguiente que un lector solicita el archivo,
CloudFront vuelve al origen para recuperar la última versión.
• Utilice el control de versiones de archivos para ofrecer una versión diferente del archivo con un nombre
distinto. Para obtener más información, consulte Actualización de archivos existentes con versiones de
nombres de archivos (p. 116).

Para invalidar archivos, puede especificar la ruta de archivos individuales o una ruta que termine en el
comodín *, que puede ser aplicable a un archivo o a muchos, tal y como se muestra en los siguientes
ejemplos:

• /images/image1.jpg
• /images/image*
• /images/*

Note
Si utiliza la interfaz de línea de comandos de AWS (AWS CLI) para la invalidación de archivos y
especifica una ruta que incluye el comodín *, debe utilizar comillas (") en torno a la ruta.
Por ejemplo: aws cloudfront create-invalidation --distribution-id
distribution_ID --paths "/*"

Puede enviar una cierta cantidad de rutas de invalidación al mes de forma gratuita. Si supera la cantidad
de rutas de invalidación enviadas que se le asignan por mes, pagará un cargo por cada ruta que envíe.

121
Amazon CloudFront Guía para desarrolladores
Elegir entre invalidar archivos y utilizar
nombres de archivo con versiones

Para obtener más información acerca de los cargos por invalidaciones, consulte Cargos por invalidación de
archivo (p. 127).

Temas
• Elegir entre invalidar archivos y utilizar nombres de archivo con versiones (p. 122)
• Determinar qué archivos invalidar (p. 122)
• Especificar los archivos que invalidar (p. 122)
• Invalidar archivos con la consola (p. 125)
• Invalidar archivos mediante la API de CloudFront (p. 127)
• Máximo de solicitud de invalidación simultánea (p. 127)
• Cargos por invalidación de archivo (p. 127)

Elegir entre invalidar archivos y utilizar nombres de


archivo con versiones
Para controlar las versiones de los archivos que se distribuyen desde su distribución, puede invalidar
archivos 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 usuario
tiene una versión almacenada en caché, ya sea localmente o tras un proxy de almacenamiento en caché
de empresa. Si invalida el archivo, el usuario podría seguir viendo la versión antigua hasta que caduque
en esas cachés.
• Los registros de acceso de CloudFront incluyen los nombres de los archivos, así que el control de
versiones facilita el análisis de los resultados de los cambios de archivos.
• El control de versiones es una forma de ofrecer distintas versiones de archivos a diferentes usuarios.
• El control de versiones simplifica la progresión y restauración de archivos entre revisiones.
• El control de versiones es más económico. Todavía tendrá que pagar la transferencia que hace
CloudFront de las nuevas versiones de los archivos a ubicaciones de borde, pero no tendrá que pagar
por la invalidación de archivos.

Para obtener más información acerca del control de versiones, consulte Actualización de archivos
existentes con versiones de nombres de archivos (p. 116).

Determinar qué archivos invalidar


Si desea invalidar varios archivos como, por ejemplo, todos los archivos de un directorio o todos los
archivos que comienzan por los mismos caracteres, puede incluir el comodín * al final de la ruta de
invalidación. Para obtener más información acerca de cómo utilizar el comodín *, consulte Rutas de
invalidación.

Si desea invalidar archivos seleccionados, pero los usuarios no necesariamente obtienen acceso a todos
los del origen, puede determinar qué archivos de CloudFront han sido solicitados por lectores e invalidar
solo esos. Para determinar qué archivos han solicitado los lectores, habilite el registro de acceso de
CloudFront. Para obtener más información acerca de los registros de acceso, consulte Configuración y uso
de registros estándar (registros de acceso) (p. 463).

Especificar los archivos que invalidar


Tenga en cuenta lo siguiente acerca de especificar los archivos que desea invalidar.

122
Amazon CloudFront Guía para desarrolladores
Especificar los archivos que 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.
Cambiar el URI Usando una función Lambda

Si su distribución de CloudFront activa una función de Lambda en eventos de solicitud del lector, y si
la función cambia el URI del archivo solicitado, recomendamos que invalide ambos URI para quitar el
archivo de las cachés de borde de CloudFront:
• El URI de la solicitud del espectador
• El URI después de que la función lo cambiara

Por ejemplo, suponga que su función de Lambda cambia el URI de un archivo de lo siguiente:

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

a un URI que incluye un directorio de idioma:

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

Para invalidar el archivo, debe especificar las siguientes rutas:


• /index.html
• /en/index.html

Para obtener más información, consulte Rutas de invalidación.


Objeto raíz predeterminado

Para invalidar el objeto raíz predeterminado (archivo), especifique la ruta del mismo modo que
especifica la de cualquier otro archivo.
Reenvío de cookies

Si configura CloudFront para reenviar cookies a su origen, las cachés de borde de CloudFront pueden
contener varias versiones del archivo. Al invalidar un archivo, CloudFront invalida todas las versiones
del archivo almacenado en caché independientemente de sus cookies asociadas. No se puede
invalidar de manera selectiva algunas versiones y otras no en función de las cookies asociadas.
Para obtener más información, consulte Almacenamiento en caché de contenido en función de
cookies (p. 277).
Reenvío de encabezados

Si ha configurado una lista blanca de CloudFront para reenviar encabezados al origen y para
almacenar en caché en función de los valores de los encabezados, las cachés de borde de
CloudFront pueden contener varias versiones del archivo. Al invalidar un archivo, CloudFront invalida
todas las versiones del archivo almacenado en caché independientemente de los valores de los
encabezados. No se puede invalidar de manera selectiva algunas versiones y otras no en función de
los valores de los encabezados. (Si configura CloudFront para reenviar todos los encabezados a su
origen, CloudFront no almacenará en caché los archivos). Para obtener más información, consulte
Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 280).
Reenvío de cadenas de consulta

Si configura CloudFront para que reenvíe cadenas de consultas a su origen, deberá incluir las
cadenas de consulta a la hora de invalidar archivos, tal y como se muestra en los siguientes ejemplos:
• /images/image.jpg?parameter1=a
• /images/image.jpg?parameter1=b

Si los clientes incluyen cinco cadenas de consulta diferentes para el mismo archivo, puede invalidar el
archivo cinco veces, una vez por cadena de consulta, o utilizar el comodín * en la ruta, tal y como se
muestra en el ejemplo siguiente:

123
Amazon CloudFront Guía para desarrolladores
Especificar los archivos que invalidar

/images/image.jpg*

Para obtener más información acerca del uso de comodines en la ruta de invalidación, consulte
Rutas de invalidación. Para obtener más información acerca de cadenas de consulta, consulte
Almacenamiento en caché de contenido en función de parámetros de cadenas de consulta (p. 274).
Para determinar qué cadenas de consulta están en uso, puede habilitar el registro de CloudFront.
Para obtener más información, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).
Máximo permitido

Para obtener información sobre el número máximo de invalidaciones permitidas, consulte Máximo de
solicitud de invalidación simultánea (p. 127).
Archivos de Microsoft Smooth Streaming

No es posible invalidar archivos multimedia en formato Microsoft Smooth Streaming si se ha activado


Smooth Streaming para el comportamiento de la caché correspondiente.
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, codifique los
caracteres como URL. No codifique como URL otros caracteres de la ruta, o CloudFront no invalidará
la versión antigua del archivo actualizado.
Rutas de invalidación

La ruta es relativa a la distribución. Por ejemplo, para invalidar el archivo en https://


d111111abcdef8.cloudfront.net/images/image2.jpg, especifique lo siguiente:

/images/image2.jpg
Note

En la consola de CloudFront, puede omitir la barra diagonal inicial en la ruta, así: images/
image2.jpg. Cuando se utiliza la API de CloudFront directamente, las rutas de invalidación
deben comenzar con una barra diagonal a la izquierda.

También puede invalidar varios archivos simultáneamente mediante el comodín *. El *, que sustituye
a 0 o más caracteres, debe ser el último carácter de la ruta de invalidación. Además, si utiliza la
interfaz de línea de comandos de AWS (AWS CLI) para la invalidación de archivos y especifica una
ruta que incluye el comodín *, debe utilizar comillas (") en torno a la ruta (de esta manera: "/*").

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 y
subdirectorios:

/ruta-directorio*
• Para invalidar todos los archivos que tienen el mismo nombre, pero diferentes extensiones, como
logo.jpg, logo.png y logo.gif:

/ruta-directorio/nombre-archivo.*
• Para invalidar todos los archivos de un directorio cuyos nombres comienzan por los mismos
caracteres (como, por ejemplo, todos los archivos de video en formato HLS), independientemente
de la extensión del nombre del archivo:

/ruta-directorio/primeros-caracteres-nombre-archivo*
• Si ha configurado CloudFront para almacenar en caché en función de los parámetros de cadenas de
consulta y desea invalidar todas las versiones de un archivo:

124
Amazon CloudFront Guía para desarrolladores
Invalidar archivos con la consola

/ruta-directorio/nombre-archivo.extensión-nombre-archivo*
• Para invalidar todos los archivos de una distribución:

/*

La longitud máxima de una ruta es 4 000 caracteres. No se puede utilizar un comodín dentro de la
ruta; solo al final de la ruta.

Para obtener información sobre la invalidación de archivos si utiliza una función de Lambda para
cambiar el URI, consulte Cambio del URI mediante una función Lambda.

El cargo por enviar una ruta de invalidación es la misma independientemente de la cantidad de


archivos que invalide: un único archivo (/images/logo.jpg) o todos los archivos asociados a una
distribución (/*). Para obtener más información, consulte Precios de Amazon CloudFront.

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 inclinada
al 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 de
interrogación (?).

Invalidar archivos con la consola


Puede utilizar la consola de CloudFront para crear y ejecutar una invalidación, mostrar una lista de las
invalidaciones que ha enviado anteriormente y mostrar información detallada acerca de invalidaciones
individuales. También puede copiar una invalidación existente, editar la lista de las rutas de archivos y
ejecutar la invalidación editada. No puede eliminar las invalidaciones de la lista.

• Invalidar archivos (p. 125)


• Copiar, editar y volver a ejecutar una invalidación existente (p. 126)
• Cancelación de invalidaciones (p. 126)
• Listado de invalidaciones (p. 126)
• Visualización de información acerca de una invalidación (p. 127)

Invalidar archivos
Para 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 (Configuración de distribución).
4. Elija la pestaña Invalidations (Invalidaciones).
5. Elija Create Invalidation (Crear invalidación).
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 que
invalidar (p. 122).

125
Amazon CloudFront Guía para desarrolladores
Invalidar archivos con la consola

Important

Especifique las rutas de archivos cuidadosamente. Las solicitudes de invalidación no se


pueden cancelar una vez comenzadas.
7. Elija Invalidate (Invalidar).

Copiar, editar y volver a ejecutar una invalidación existente


Puede copiar invalidaciones que haya creado anteriormente, actualizar la lista de rutas de invalidación y
ejecutar las invalidaciones actualizadas. No es posible copiar invalidaciones existentes, actualizar rutas de
invalidació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, a
continuación, ejecuta la invalidación actualizada, CloudFront no detiene ni elimina la invalidación
que ha copiado. Si aparece cualquier ruta de invalidación en el original y en la copia, CloudFront
intentará invalidar los archivos dos veces, y ambas invalidaciones se contabilizarán como parte de
la cantidad máxima de invalidaciones gratuitas del mes. Si ya se ha alcanzado la cantidad máxima
de invalidaciones gratuitas, se le facturarán las invalidaciones de ambos archivos. Para obtener
más información, consulte Máximo de solicitud de invalidación simultánea (p. 127).

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 (Configuración de distribución).
4. Elija la pestaña Invalidations (Invalidaciones).
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 Detalles
para mostrar información detallada acerca de la misma.
6. Elija Copy.
7. Actualice la lista de rutas de invalidación si procede.
8. Elija Invalidate (Invalidar).

Cancelación de invalidaciones
Al enviar una solicitud de invalidación a CloudFront, CloudFront reenvía la solicitud a todas las ubicaciones
de borde al cabo de unos segundos, y cada ubicación de borde comienza a procesar la invalidación de
forma inmediata. Por consiguiente, no puede cancelar una invalidación después de enviarla.

Listado de invalidaciones
Puede mostrar una lista de las 100 últimas invalidaciones que ha creado y ejecutado para una distribución
utilizando la consola de CloudFront. Si desea obtener una lista de más de 100 invalidaciones, utilice la
acción de la API ListInvalidations. Para obtener más información, consulte ListInvalidations en la
Referencia de la API de Amazon CloudFront.

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/

126
Amazon CloudFront Guía para desarrolladores
Invalidar archivos mediante la API de CloudFront

2. Elija la distribución cuyas invalidaciones desee mostrar en una lista.


3. Elija Distribution Settings (Configuración de distribución).
4. Elija la pestaña Invalidations (Invalidaciones).

Note
No puede eliminar las invalidaciones de la lista.

Visualización de información acerca de una invalidación


Visualice 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 rutas
de invalidación.

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 (Configuración de distribución).
4. Elija la pestaña Invalidations (Invalidaciones).
5. Elija la invalidación aplicable.
6. Elija Details (Detalles).

Invalidar archivos mediante la API de CloudFront


Para obtener información acerca de la invalidación de objetos y mostrar información acerca de
invalidaciones utilizando la API de CloudFront, consulte los siguientes temas en la Referencia de la API de
Amazon CloudFront:

• Invalidación de objetos: CreateInvalidation


• Obtención de una lista de las invalidaciones: ListInvalidations
• Obtención de información sobre una invalidación específica: GetInvalidation

Máximo de solicitud de invalidación simultánea


Si está invalidando archivos uno a uno, podría haber solicitudes de invalidación de hasta 3000 archivos
por distribución en ejecución simultáneamente. Podría tratarse de una sola solicitud de invalidación para
hasta 3000 archivos, hasta 3000 solicitudes de un archivo cada una o cualquier otra combinación que no
supere 3000 archivos. Por ejemplo, puede enviar 30 solicitudes de invalidación para 100 archivos cada
una. Mientras las 30 solicitudes de invalidación estén realizándose, no se pueden enviar más solicitudes
de invalidación. Si supera el máximo, CloudFront devuelve un mensaje de error.

Si está utilizando el comodín *, puede tener solicitudes de hasta 15 patrones de invalidación ejecutándose
simultáneamente. También puede tener solicitudes de invalidación de hasta 3000 archivos individuales
por distribución ejecutándose simultáneamente; el máximo permitido de solicitudes de invalidación con
comodines es independiente del máximo de invalidación de archivos individuales.

Cargos por invalidación de archivo


Las primeras 1 000 rutas de invalidación que envíe al mes son gratis; cada ruta de invalidación adicional a
las 1 000 mensuales genera cargos. Una ruta de invalidación puede ser aplicable a un único archivo (por

127
Amazon CloudFront Guía para desarrolladores
Ofrecer archivos comprimidos

ejemplo, /images/logo.jpg) o a varios archivos (como, por ejemplo, /images/*). Cualquier ruta que
incluya el comodín * cuenta como una ruta incluso si hace que CloudFront invalide miles de archivos.

Este máximo de 1000 rutas de invalidación gratuitas al mes se aplica al número total de rutas de
invalidación de todas las distribuciones que haya creado con una cuenta de AWS. Por ejemplo, si utiliza
la cuenta de AWS [email protected] para crear tres distribuciones y envía 600 rutas de invalidación
por distribución en un mes (lo que generaría un total de 1 800 rutas de invalidación), AWS cobrará 800
rutas de invalidación ese mes. Para obtener información específica acerca de los precios de invalidación,
consulte Precios de Amazon CloudFront. Para obtener más información acerca de rutas de invalidación,
consulte Rutas de invalidación.

Ofrecer archivos comprimidos


Puede utilizar CloudFront para comprimir automáticamente archivos de ciertos tipos y servir los archivos
comprimidos cuando los lectores los admiten (los lectores indican su compatibilidad con los archivos
comprimidos con el encabezado HTTP Accept-Encoding). CloudFront puede comprimir los archivos
utilizando los formatos de compresión Gzip y Brotli. Cuando el lector admite ambos formatos, CloudFront
utiliza Brotli.
Note

Los navegadores web Chrome y Firefox admiten compresión Brotli solo cuando la solicitud se
envía mediante HTTPS. Estos navegadores no admiten Brotli con solicitudes HTTP.

Al comprimir el contenido, las descargas son más rápidas, ya que los archivos son más pequeños: en
algunos casos: menos de una cuarta parte del original. Especialmente para archivos CSS y JavaScript,
descargas más rápidas pueden resultar en páginas web que se muestran más rápido a los usuarios.
Además, como el costo de transferencia de datos de CloudFront se basa en la cantidad total de datos que
se sirven, enviar archivos comprimidos puede ser más económico que distribuirlos sin comprimir.

Si utiliza un origen personalizado, puede configurar su origen para comprimir archivos. Es posible que su
origen pueda comprimir archivos que CloudFront no comprime (consulte Tipos de archivos que CloudFront
comprime (p. 131)). Si el origen devuelve un archivo comprimido a CloudFront, CloudFront detecta que
el archivo se ha comprimido en función del valor del encabezado Content-Encoding y no comprime el
archivo de nuevo.

Si configura CloudFront para servir contenido comprimido, también debería almacenar en caché objetos
comprimidos (p. 96).

Configuración de una distribución de CloudFront para


comprimir contenido
Para configurar una distribución para comprimir contenido, actualice el comportamiento de caché que
desea ofrecer contenido comprimido haciendo lo siguiente:

1. Asegúrese de que la opción Compress Objects Automatically (Comprimir objetos automáticamente) está
activada. (En AWS CloudFormation o la API de CloudFront, establezca Compress en true).
2. Utilice una política de caché (p. 93) para especificar la configuración de almacenamiento en caché y
asegúrese de que la configuración de Gzip y Brotli estén habilitadas. (En AWS CloudFormation o la API
de CloudFront, establezca EnableAcceptEncodingGzip y EnableAcceptEncodingBrotli en
true).
3. Asegúrese de que los valores TTL de la política de caché estén establecidos en un valor superior
a cero. Cuando establece los valores de TTL en cero, el almacenamiento en caché se desactiva y
CloudFront no comprime el contenido.

128
Amazon CloudFront Guía para desarrolladores
Uso de CloudFront para comprimir el contenido

Para actualizar un comportamiento de caché, puede utilizar cualquiera de las siguientes herramientas:

• La consola de CloudFront
• AWS CloudFormation
• Los SDK de AWS y las herramientas de línea de comandos

Uso de CloudFront para comprimir el contenido


CloudFront puede comprimir archivos tanto de orígenes de Amazon S3 como de orígenes personalizados.
Cuando se configura CloudFront para comprimir el contenido, se debe especificar la configuración en uno
o más de los comportamientos de la caché.

Cuando configura CloudFront para comprimir su contenido, así es como CloudFront sirve su contenido:

1. Puede crear o actualizar una distribución de CloudFront y configurar CloudFront para comprimir
contenido. Para obtener más información, consulte la sección anterior.
2. Un espectador solicita un archivo. El lector incluye el encabezado HTTP Accept-Encoding en la
solicitud y los valores de encabezado incluyen gzip, br o ambos. Esto indica que el espectador admite
contenido comprimido. Cuando el lector admite ambos formatos, CloudFront utiliza Brotli.
Note

Los navegadores web Chrome y Firefox admiten compresión Brotli solo cuando la solicitud se
envía mediante HTTPS. Estos navegadores no admiten Brotli con solicitudes HTTP.
3. En la ubicación de borde, CloudFront comprueba la caché en busca de una versión comprimida del
archivo solicitado.
4. Si el archivo comprimido ya está en la caché, CloudFront lo devuelve al lector y omite los demás pasos.
5. Si el archivo comprimido no está en la caché, CloudFront reenvía la solicitud al servidor de origen, que
puede ser un bucket de Amazon S3 o un origen personalizado.
Note

Si CloudFront dispone de una versión sin comprimir del archivo en la caché, envía igualmente
una solicitud al origen.
6. El servidor de origen devuelve una versión sin comprimir del archivo solicitado a CloudFront.
7. CloudFront determina si el archivo es comprimible:
• El archivo debe ser de un tipo que CloudFront pueda comprimir. Para obtener más información,
consulte Tipos de archivos que CloudFront comprime (p. 131).
• El tamaño del archivo debe ser de entre 1 000 y 10 000 000 bytes.
• La respuesta debe incluir un encabezado Content-Length para que CloudFront pueda determinar
si el tamaño del archivo se encuentra en el intervalo que CloudFront comprime. Si no se encuentra el
encabezado Content-Length, CloudFront no comprime el archivo.
• La respuesta no debe incluir un encabezado Content-Encoding.
8. Si el archivo es comprimible, CloudFront lo comprime, lo devuelve comprimido al lector y lo agrega a la
caché.
9. El espectador descomprime el archivo.

Tenga en cuenta lo siguiente:

Tipos de archivos que CloudFront comprime

CloudFront comprime archivos para una gran cantidad de tipos. Para ver una lista completa, consulte
Tipos de archivos que CloudFront comprime (p. 131).

129
Amazon CloudFront Guía para desarrolladores
Uso de CloudFront para comprimir el contenido

Tamaño de los archivos que CloudFront comprime

CloudFront comprime archivos con tamaños entre 1000 y 10 000 000 bytes.
Encabezado Content-Length

El origen debe incluir un encabezado Content-Length en la respuesta para que CloudFront pueda
determinar si el tamaño del archivo se encuentra en el intervalo que comprime. Si no se encuentra el
encabezado Content-Length, CloudFront no comprime el archivo.
Encabezado ETag

Cuando el objeto sin comprimir del origen incluye un encabezado HTTP ETag válido y seguro,
CloudFront convierte el valor de encabezado ETag fuerte en un ETag débil y devuelve el valor ETag
débil al lector. Los lectores pueden almacenar el valor ETag débil y utilizarlo para enviar solicitudes
condicionales con el encabezado HTTP If-None-Match. Esto permite a los lectores, a CloudFront
y al origen tratar las versiones comprimidas y no comprimidas de un objeto como semánticamente
equivalentes, lo que reduce la transferencia de datos innecesaria.

Un valor de encabezado ETag válido y fuerte comienza con un carácter de comillas dobles ("). Para
convertir el valor ETag fuerte en uno débil, CloudFront agrega los caracteres W/ al principio del valor
ETag fuerte.

Cuando el objeto del origen incluye un valor de encabezado ETag débil (un valor que comienza con
los caracteres W/), CloudFront no modifica este valor y lo devuelve al lector tal como se ha recibido del
origen.

Cuando el objeto del origen incluye un valor de encabezado ETag no válido (el valor no comienza por
" ni por W/), CloudFront elimina el encabezado ETag y devuelve el objeto al lector sin el encabezado
de respuesta ETag.

Para obtener más información, consulte las páginas siguientes en los documentos web de MDN:
• Directivas (encabezado HTTP ETag)
• Validación débil (solicitudes condicionales HTTP)
• Encabezado HTTP If-None-Match
Contenido presente en las ubicaciones de borde al configurar CloudFront para comprimir archivos

CloudFront comprime archivos en cada ubicación de borde cuando obtiene los archivos de su origen.
Al configurar CloudFront para comprimir el contenido, CloudFront no comprime los archivos que ya
se han almacenado en caché en ubicaciones de borde. Además, cuando un archivo caduca en una
ubicación de borde y CloudFront envía otra solicitud del archivo al origen, CloudFront no comprime
el archivo si el origen devuelve un código de estado HTTP 304, que significa que la ubicación de
borde ya tiene la última versión del archivo. Si desea que CloudFront comprima los archivos que ya
se han almacenado en ubicaciones de borde, tiene que invalidar esos archivos. Para obtener más
información, consulte Invalidar archivos (p. 121).
Origen ya configurado para comprimir archivos

Si configura CloudFront para comprimir archivos y el origen también comprime archivos, el origen
incluye un encabezado Content-Encoding, que indica que el archivo ya está comprimido.
CloudFront devuelve el archivo almacenado en caché al lector y lo almacena en caché en la ubicación
de borde.
Note
CloudFront no comprime un archivo si la respuesta incluye un encabezado Content-
Encoding, independientemente del valor del encabezado.
La solicitud no incluye el encabezado Accept-Encoding

Si el encabezado Accept-Encoding no se encuentra en la solicitud del lector, CloudFront ofrece


el contenido sin comprimir. Si el encabezado Accept-Encoding incluye valores adicionales como
deflate o sdch, CloudFront los elimina antes de reenviar la solicitud al servidor de origen.

130
Amazon CloudFront Guía para desarrolladores
Uso de CloudFront para comprimir el contenido

La solicitud utiliza HTTP 1.0

Si una solicitud a CloudFront utiliza HTTP 1.0, CloudFront elimina el encabezado Accept-Encoding
y sirve el contenido sin comprimir.
CloudFront está ocupado

En casos excepcionales, cuando una ubicación de borde de CloudFront está inusualmente ocupada,
algunos archivos no se comprimen.

Tipos de archivos que CloudFront comprime


Si configura CloudFront para comprimir el contenido, CloudFront comprime los archivos que tienen los
siguientes valores en el encabezado Content-Type:

• application/dash+xml
• application/eot
• application/font
• application/font-sfnt
• application/javascript
• application/json
• application/opentype
• application/otf
• application/pkcs7-mime
• application/protobuf
• application/rss+xml
• application/truetype
• application/ttf
• application/vnd.apple.mpegurl
• application/vnd.mapbox-vector-tile
• application/vnd.ms-fontobject
• application/xhtml+xml
• application/xml
• application/x-font-opentype
• application/x-font-truetype
• application/x-font-ttf
• application/x-httpd-cgi
• application/x-javascript
• application/x-mpegurl
• application/x-opentype
• application/x-otf
• application/x-perl
• application/x-ttf
• font/eot
• font/opentype
• font/otf

131
Amazon CloudFront Guía para desarrolladores
Generación de respuestas de error personalizadas

• font/ttf
• image/svg+xml
• text/css
• text/csv
• text/html
• text/javascript
• text/js
• text/plain
• text/richtext
• text/tab-separated-values
• text/xml
• text/x-component
• text/x-java-source
• text/x-script
• vnd.apple.mpegurl

Generación de respuestas de error personalizadas


Si un objetos que ofrece a través de CloudFront no está disponible por algún motivo, el servidor web suele
devolver un código de estado HTTP a CloudFront. Por ejemplo, si un lector especifica una URL no válida,
el servidor web devuelve un código de estado HTTP 404 (no encontrado) a CloudFront y CloudFront se lo
devuelve al lector.

Puede configurar CloudFront para que devuelva una respuesta de error personalizada al lector, si lo desea.
También tiene varias opciones para administrar cómo responde CloudFront cuando hay un error. Para
especificar opciones para mensajes de error personalizados, se actualiza la distribución de CloudFront
para especificar esos valores. Para obtener más información, consulte Configurar el comportamiento de
respuestas de error (p. 133).

Si configura CloudFront para devolver una página de error personalizada para un código de estado HTTP
pero la página de error personalizada no está disponible, CloudFront devuelve al lector el código de
estado que CloudFront recibió del origen que contiene las páginas de error personalizadas. Por ejemplo,
supongamos que el origen personalizado devuelve un código de estado 500 y que haya configurado
CloudFront para obtener de un bucket de Amazon S3 una página de error personalizada para un código
de estado 500. Sin embargo, alguien ha eliminado accidentalmente la página de error personalizada del
bucket. CloudFront devolverá un código de estado HTTP 404 (no encontrado) al lector que solicitó el
objeto.

Cuando CloudFront devuelve una página de error personalizada a un lector, paga los cargos estándar de
CloudFront por la página de error personalizada, no paga cargos por el objeto solicitado. Para obtener más
información acerca de los cargos de CloudFront, consulte Precios de Amazon CloudFront.

Temas
• Configurar el comportamiento de respuestas de error (p. 133)
• Creación de una página de error personalizada para códigos de estado HTTP específicos (p. 134)
• Almacenamiento de objetos y páginas de error personalizadas en diferentes lugares (p. 135)
• Cambio de códigos de respuesta devueltos por CloudFront (p. 135)
• Control de cuánto tiempo CloudFront almacena los errores en caché (p. 136)

132
Amazon CloudFront Guía para desarrolladores
Configurar el comportamiento de respuestas de error

Configurar el comportamiento de respuestas de error


Para configurar respuestas de errores personalizadas, puede utilizar la consola de CloudFront, la API de
CloudFront o AWS CloudFormation. Independientemente de cómo elija actualizar la configuración, tenga
en cuenta las siguientes sugerencias y recomendaciones:

• Guarde las páginas de error personalizadas en una ubicación accesible para CloudFront. Le
recomendamos que las almacene en un bucket de Amazon S3 y que no las almacene en el mismo
lugar que el resto del contenido de su sitio web o aplicación (p. 135). Si almacena las páginas de error
personalizadas en el mismo origen que su sitio web o aplicación y el origen comienza a devolver errores
5xx, CloudFront no puede obtener las páginas de error personalizadas porque el servidor de origen no
está disponible. Para obtener más información, consulte Almacenamiento de objetos y páginas de error
personalizadas en diferentes lugares (p. 135).
• Asegúrese de que CloudFront tenga permiso para obtener sus páginas de error personalizadas. Si las
páginas de error personalizadas se almacenan en Amazon S3, deben ser accesibles públicamente o
debe configurar una identidad de acceso de origen (OAI) (p. 223)de CloudFront. Si las páginas de error
personalizadas se almacenan en un origen personalizado, deben ser accesibles públicamente.
• (Opcional) Configure su origen para agregar un encabezado Cache-Control o Expires junto con
las páginas de error personalizadas, si lo desea. También puede utilizar la configuración TTL mínimo
de almacenamiento de errores en caché para controlar cuánto tiempo CloudFront almacena en caché
las páginas de error personalizadas. Para obtener más información, consulte Control de cuánto tiempo
CloudFront almacena los errores en caché (p. 136).

Configurar respuestas de error personalizadas (consola de


CloudFront)
Para configurar respuestas de error personalizadas en la consola de CloudFront, debe tener una
distribución de CloudFront. En la consola, la configuración de las respuestas de error personalizadas solo
está disponible para distribuciones existentes. Para obtener información sobre cómo crear una distribución,
consulte Introducción a una distribución sencilla de CloudFront (p. 19).

Para configurar respuestas de error personalizadas (consola)

1. Inicie sesión en la consola de administración de AWS y abra la página Distributions (Distribuciones) en


la consola de CloudFront en https://console.aws.amazon.com/cloudfront/home?#distributions:.
2. En la lista de distribuciones, elija la distribución que desea actualizar.
3. Elija la pestaña Error Pages (Páginas de error) y, a continuación, elija Create Custom Error Response
(Crear respuesta de error personalizada).
4. Escriba los valores aplicables. Para obtener más información, consulte Páginas de error
personalizadas y almacenamiento de errores en caché (p. 67) en Values That You Specify When
You Create or Update a Distribution (Valores que deben especificarse al crear o actualizar una
distribución).
5. Después de introducir los valores deseados, elija Create (Crear).

Configurar respuestas de error personalizadas (API de


CloudFront o AWS CloudFormation)
Para configurar respuestas de error personalizadas con la API de CloudFront o AWS CloudFormation,
utilice el tipo CustomErrorResponse en una distribución. Para obtener más información, consulte los
siguientes temas:

• AWS::CloudFront::Distribution CustomErrorResponse en la Guía del usuario de AWS CloudFormation

133
Amazon CloudFront Guía para desarrolladores
Creación de una página de error personalizada
para códigos de estado HTTP específicos

• CustomErrorResponse en la Referencia de la API de Amazon CloudFront

Creación de una página de error personalizada para


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 del sitio web), puede hacer que CloudFront devuelva
al lector un objeto (por ejemplo, un archivo HTML) que contenga el mensaje de error personalizado.

Para especificar el archivo que desea devolver y los errores por los que se debe devolver este archivo,
debe actualizar la distribución de CloudFront y especificar esos valores. Para obtener más información,
consulte Configurar el comportamiento de respuestas de error (p. 133).

Por ejemplo, la siguiente es una página de error personalizada:

Puede especificar un objeto diferente por código de estado HTTP admitido o el mismo objeto para todos
los códigos de estado admitidos. Puede elegir especificar páginas de error personalizadas para algunos
códigos de estado y no para otros.

Los objetos que ofrece a través de CloudFront pueden no estar disponibles por diversas razones. Estas se
dividen en dos amplias categorías:

• Errores de cliente, que indican un problema con la solicitud. Por ejemplo, un objeto con el nombre
especificado no está disponible o el usuario no tiene los permisos necesarios para obtener un objeto en
el bucket de Amazon S3. Cuando se produce un error de cliente, el origen devuelve a CloudFront un
código de estado HTTP en el intervalo de los 4xx.
• Errores de servidor, que indican un problema con el servidor de origen. Por ejemplo, el servidor HTTP
está ocupado o no disponible. Cuando se produce un error de servidor, el servidor de origen devuelve a
CloudFront un código de estado HTTP en el intervalo de los 5xx o CloudFront no obtiene respuesta del
servidor de origen durante un periodo determinado y supone un código de estado 504 (tiempo de espera
de gateway agotado).

Los códigos de estado HTTP para los que CloudFront puede devolver una página de error personalizada
son:

134
Amazon CloudFront Guía para desarrolladores
Almacenamiento de objetos y páginas de
error personalizadas en diferentes lugares

• 400, 403, 404, 405, 414, 416


Note

Puede crear una página de error personalizada para el código de estado HTTP 416 (Intervalo
solicitado no puede ser satisfecho) y puede cambiar el código de estado HTTP que CloudFront
proporciona a los lectores cuando el origen devuelve un código de estado 416 a CloudFront.
(Para obtener más información, consulte Cambio de códigos de respuesta devueltos por
CloudFront (p. 135).) Sin embargo, CloudFront no almacena en caché las respuestas de los
códigos de estado 416, así que, aunque especifique un valor para Error Caching Minimum
TTL (TTL mínimo de almacenamiento de errores en caché) para el código de estado 416,
CloudFront no lo utiliza.
• 500, 501, 502, 503, 504
Note

En algunos casos, CloudFront no devuelve una página de error personalizada para el código
de estado HTTP 503, incluso si configura CloudFront para hacerlo. Si el código de error de
CloudFront es Capacity Exceeded o Limit Exceeded, CloudFront devuelve un código de
estado 503 al lector sin utilizar la página de error personalizada.

Para obtener una explicación detallada acerca de cómo CloudFront gestiona las respuestas de error del
origen, consulte Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xx
desde el origen (p. 323).

Almacenamiento de objetos y páginas de error


personalizadas en diferentes lugares
Si desea almacenar los objetos y las páginas de error personalizadas en diferentes ubicaciones, la
distribución debe incluir un comportamiento de la caché que cumpla con las siguientes condiciones:

• El valor de Path Pattern (Patrón de ruta) debe coincidir con la ruta de los mensajes de error
personalizados. Por ejemplo, supongamos que ha guardado páginas para errores 4xx personalizadas
en un bucket de Amazon S3 en un directorio llamado /4xx-errors. La distribución debe incluir
un comportamiento de la caché cuyo patrón de ruta dirija las solicitudes de las páginas de error
personalizadas a esa ubicación, por ejemplo, /4xx-errors/*.
• El valor de Origin (Origen) especifica el valor de Origin ID (ID de origen) del origen que contiene las
páginas de error personalizadas.

Para obtener más información, consulte Configuración del comportamiento de la caché (p. 52) en el tema
Valores que deben especificarse al crear o actualizar una distribución (p. 43).

Cambio de códigos de respuesta devueltos por


CloudFront
Puede configurar CloudFront para que devuelva al lector un código de estado HTTP diferente al que
CloudFront recibió del origen. Por ejemplo, si el origen devuelve un código de estado 500 a CloudFront,
es posible que desee que CloudFront devuelva una página de error personalizada y un código de estado
200 (OK) al lector. Existen diversas razones por las que puede querer que CloudFront devuelva al lector un
código de estado diferente del que el origen ha devuelto a CloudFront:

• Algunos dispositivos de Internet (algunos firewalls y proxis corporativos, por ejemplo) interceptan los
códigos de estado HTTP 4xx y 5xx y evitan que la respuesta se devuelva al lector. En este escenario, si
sustituye 200, la respuesta no se intercepta.

135
Amazon CloudFront Guía para desarrolladores
Control de cuánto tiempo CloudFront
almacena los errores en caché

• Si no le resulta especialmente importante distinguir entre diferentes errores de servidor y de cliente,


puede especificar 400 o 500 como el valor que CloudFront devuelve 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 no
sepan que su sitio web está caído.

Si habilita los registros estándar de CloudFront (p. 463) y configura CloudFront para cambiar el código
de estado HTTP en la respuesta, el valor de la columna sc-status de los registros contiene el código
de estado que se especifique. Sin embargo, el valor de la columna x-edge-result-type no se ve
afectado. Contiene el tipo de resultado de la respuesta del origen. Por ejemplo: supongamos que configura
CloudFront para devolver un código de estado de 200 al espectador cuando el origen devuelve 404 (No
encontrado) a CloudFront. Cuando el origen responda a una solicitud con un código de estado 404, el
valor de la columna sc-status en el registro será 200, pero el valor de la columna x-edge-result-
type será Error.

Puede configurar CloudFront para devolver cualquiera de los siguientes códigos de estado HTTP junto con
una página de error personalizada:

• 200
• 400, 403, 404, 405, 414, 416
• 500, 501, 502, 503, 504

Control de cuánto tiempo CloudFront almacena los


errores en caché
De forma predeterminada, cuando el origen devuelve un código de estado HTTP 4xx o 5xx, CloudFront
almacena en caché estas respuestas de error durante 10 segundos. A continuación, CloudFront envía la
siguiente solicitud para el objeto al origen para ver si el problema que causó el error se ha resuelto y el
objeto solicitado está ahora disponible.
Note

Puede crear una página de error personalizada para el código de estado HTTP 416 (Intervalo
solicitado no puede ser satisfecho) y puede cambiar el código de estado HTTP que CloudFront
proporciona a los lectores cuando el origen devuelve un código de estado 416 a CloudFront.
(Para obtener más información, consulte Cambio de códigos de respuesta devueltos por
CloudFront (p. 135).) Sin embargo, CloudFront no almacena en caché las respuestas de los
códigos de estado 416, así que, aunque especifique un valor para Error Caching Minimum TTL
(TTL mínimo de almacenamiento de errores en caché) para el código de estado 416, CloudFront
no lo utiliza.

Puede especificar la duración de almacenamiento en caché de errores (Error Caching Minimum TTL [TTL
mínimo de almacenamiento de errores en caché]) para cada código de estado 4xx y 5xx que CloudFront
almacena en las caché. Al especificar una duración, tenga en cuenta lo siguiente:

• Si se especifica una duración breve de almacenamiento de errores en caché, CloudFront reenvía más
solicitudes al origen que si se especifica una mayor duración. En el caso de errores 5xx, esto podría
agravar el problema que causó el origen para devolver un error.
• Cuando el origen devuelve un error por un objeto, CloudFront responde a las solicitudes de dicho
objeto con la respuesta de error o con la página de error personalizada hasta que finaliza la duración
de almacenamiento de errores en caché. Si especifica una duración de almacenamiento de errores en
caché mayor, es posible que CloudFront continúe respondiendo a las solicitudes con una respuesta de
error o la página de error personalizada durante mucho tiempo después de que el objeto vuelva a estar
disponible.

136
Amazon CloudFront Guía para desarrolladores
Control de cuánto tiempo CloudFront
almacena los errores en caché

Si desea controlar el tiempo durante el cual CloudFront almacena errores por objetos individuales en la
caché, puede configurar el servidor de origen para agregar el encabezado aplicable a la respuesta de error
por dicho objeto:

• Si el origen agrega una directiva Cache-Control: max-age o Cache-Control: s-maxage, o un


encabezado Expires:

CloudFront almacena en caché respuestas de error para el valor mayor en el encabezado o el valor de
Error Caching Minimum TTL (TTL mínimo de almacenamiento de errores en caché).

Tenga en cuenta que los valores Cache-Control: max-age y Cache-Control: s-maxage no


pueden ser mayores que el valor de Maximum TTL (TTL máximo) definido para el comportamiento de la
caché para el que se está obteniendo la página de error.
• Si el origen agrega otras directivas Cache-Control o no agrega encabezados:

CloudFront almacena en caché las respuestas de error para el valor de Error Caching Minimum TTL
(TTL mínimo de almacenamiento de errores en caché).

Si la fecha de vencimiento de un código de estado 4xx o 5xx de un objeto es más lejana de lo que desea y
el objeto está disponible nuevamente, puede invalidar el código de error almacenado en caché utilizando
la URL del objeto solicitado. Si el origen devuelve una respuesta de error para varios objetos, es necesario
invalidar cada uno de los objetos por separado. Para obtener más información acerca de las invalidaciones
de objetos, consulte Invalidar archivos (p. 121).

137
Amazon CloudFront Guía para desarrolladores
Uso de HTTPS con CloudFront

Configuración de acceso seguro y


restricción de acceso a contenido
CloudFront proporciona varias opciones para proteger el contenido que ofrece. A continuación, se
muestran algunas formas de utilizar CloudFront para proteger y restringir el acceso al contenido:

• Configure las conexiones HTTPS.


• Impida que los usuarios de ubicaciones geográficas específicas accedan al contenido
• Solicitar a los usuarios que accedan al contenido mediante URL o cookies firmadas de CloudFront
• Configure el cifrado en el nivel de campo para campos de contenido específicos
• Utilizar AWS WAF para controlar el acceso al contenido

Temas
• Uso de HTTPS con CloudFront (p. 138)
• Usar nombres de dominio alternativos y HTTPS (p. 150)
• Distribución de contenido privado con URL firmadas y cookies firmadas (p. 164)
• Restricción del acceso a contenido de Amazon S3 utilizando una identidad de acceso de
origen (p. 223)
• Restringir el acceso a los balanceadores de carga de aplicaciones (p. 230)
• Utilizar AWS WAF para controlar el acceso al contenido (p. 237)
• Restringir la distribución geográfica de su contenido (p. 238)
• Uso del cifrado en el nivel de campo para ayudar a proteger la información confidencial (p. 241)

Uso de HTTPS con CloudFront


Puede configurar CloudFront para exigir a los lectores que utilicen HTTPS al solicitar sus objetos, de modo
que las conexiones se cifren cuando CloudFront se comunique con los lectores. También puede configurar
CloudFront con el fin de usar HTTPS para obtener objetos 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 lectores y con su origen, esto es lo que
ocurre cuando CloudFront recibe una solicitud de un objeto.

1. Un lector envía una solicitud HTTPS a CloudFront. Hay una negociación SSL/TLS entre el lector y
CloudFront. Al final, el espectador envía la solicitud en un formato cifrado.
2. Si el objeto se encuentra en la caché de borde de CloudFront, CloudFront cifra la respuesta y la
devuelve al lector, quien la descifra.
3. Si el objeto no se encuentra en la caché de CloudFront, CloudFront realiza la negociación SSL/TLS
con su origen y, cuando se haya completado la negociación, reenvía la solicitud al origen en un
formato cifrado.
4. Su origen descifra la solicitud, cifra el objeto solicitado y lo devuelve a CloudFront.

138
Amazon CloudFront Guía para desarrolladores
Exigir HTTPS entre lectores y CloudFront

5. CloudFront descifra la respuesta, vuelve a cifrarla y reenvía el objeto al lector. CloudFront también
guarda el objeto en la caché de borde para que esté disponible la próxima vez que lo solicite.
6. El espectador descifra la respuesta.

El proceso es prácticamente el mismo tanto si el origen es un bucket de Amazon S3, MediaStore o un


origen personalizado como si es un servidor HTTP/S:
Note

Para ayudar a frustrar los ataques de tipo SSL renegociación, CloudFront no admite
renegociación de lector y las solicitudes de origen.

Para obtener información acerca de cómo solicitar HTTPS entre lectores y CloudFront, y entre CloudFront
y su origen, consulte los siguientes temas.

Temas
• Exigir HTTPS para la comunicación entre lectores y CloudFront (p. 139)
• Exigir HTTPS para la comunicación entre CloudFront y su origen personalizado (p. 141)
• Requiriendo HTTPS para la comunicación entre CloudFront y su origen de Amazon S3 (p. 144)
• Protocolos y cifrados admitidos entre lectores y CloudFront (p. 145)
• Protocolos y cifrados admitidos entre CloudFront y el origen (p. 148)
• Cargos por conexiones HTTPS (p. 149)

Exigir HTTPS para la comunicación entre lectores y


CloudFront
Important

Recordatorio: Amazon CloudFront está migrando el certificado *.cloudfront.net de DigiCert


a Amazon Trust Services a partir del 23 de marzo de 2021. Este cambio no afecta a las cargas
de trabajo que utilizan solo HTTP o utilizan HTTPS con un nombre de dominio personalizado
como example.com. Si utiliza un punto de enlace predeterminado de CloudFront, como
d111111abcdef8.cloudfront.net para atender el tráfico HTTPS, lea el anuncio.

Puede configurar uno o varios comportamientos de la caché en la distribución de CloudFront para que
requieran HTTPS en la comunicación entre los lectores y CloudFront. También puede configurar uno o
varios comportamientos de la caché para permitir HTTP y HTTPS, de forma que CloudFront requiera
HTTPS para algunos objetos, pero no para otros. Los pasos de configuración dependerán del nombre de
dominio objeto que use en URL de objetos:

• Si utiliza el nombre de dominio que CloudFront ha asignado a su distribución, como, por ejemplo,
d111111abcdef8.cloudfront.net, cambie la configuración de Viewer Protocol Policy (Política de protocolo
del lector) de uno o varios comportamientos de la caché para que exijan que la comunicación se realice
mediante HTTPS. En dicha configuración, CloudFront ofrece el certificado SSL/TLS.

Para cambiar el valor de Viewer Protocol Policy (Política de protocolo del lector) desde la consola de
CloudFront, consulte el procedimiento más adelante en esta sección.

Para obtener información acerca de cómo utilizar la API de CloudFront para cambiar el valor del
elemento ViewerProtocolPolicy, consulte UpdateDistribution en la Referencia de la API de Amazon
CloudFront.
• Si utiliza su propio nombre de dominio, como example.com, necesita cambiar varias configuraciones de
CloudFront. También debe utilizar un certificado SSL/TLS proporcionado por AWS Certificate Manager

139
Amazon CloudFront Guía para desarrolladores
Exigir HTTPS entre lectores y CloudFront

(ACM) o importar un certificado de una entidad de certificación de terceros en ACM o en el almacén de


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

Note

Si desea asegurarse de que los objetos que los lectores obtienen de CloudFront se hayan cifrado
cuando CloudFront los obtenga del origen, utilice siempre HTTPS entre CloudFront y el origen. Si
ha cambiado recientemente de HTTP a HTTPS entre CloudFront y el origen, le recomendamos
que invalide objetos en ubicaciones de borde de CloudFront. CloudFront devolverá un objeto a un
lector independientemente de si el protocolo utilizado por dicho lector (HTTP o HTTPS) coincide
con el protocolo que CloudFront utilizó para obtener el objeto. Para obtener más información
acerca de la eliminación o la sustitución de objetos en una distribución, consulte Agregar, eliminar
o sustituir contenido que distribuye CloudFront (p. 115).

Para solicitar HTTPS entre los lectores y CloudFront para uno o varios comportamientos de la caché, siga
el siguiente procedimiento.

Para configurar CloudFront para que requiera HTTPS entre lectores y CloudFront

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 (Comportamientos), elija el comportamiento de la caché que desee actualizar
y, a continuación, elija Edit (Editar).
4. Especifique uno de los siguientes valores en Viewer Protocol Policy (Política de protocolo del
espectador):

Redireccionamiento de HTTP a HTTPS

Los espectadores pueden utilizar ambos protocolos. Las solicitudes HTTP GET y HEAD se
redirigen automáticamente a solicitudes HTTPS. CloudFront devuelve el código de estado HTTP
301 (Movido permanentemente) junto con la nueva URL HTTPS. A continuación, el lector vuelve a
enviar la solicitud a CloudFront través de la nueva URL HTTPS.
Important

Si envía POST, PUT, DELETE, OPTIONS o PATCH a través de HTTP a un comportamiento


de la caché de HTTP a HTTPS y una versión de protocolo de solicitud HTTP 1.1 o
superior, CloudFront redirige la solicitud a una ubicación HTTPS con un código de estado
HTTP 307 (Redirección temporal). Esto garantiza que la solicitud se envía de nuevo a la
nueva 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 un
comportamiento de la caché HTTPS con una protocolo de solicitud de versión inferior a
HTTP 1.1, CloudFront devuelve un código de estado HTTP 403 (Prohibido).

Cuando un lector realiza una solicitud HTTP que se redirige a una solicitud HTTPS, se aplican
cargos de CloudFront a ambas solicitudes. En el caso de la solicitud HTTP, el cargo es solo para
la solicitud y para los encabezados que CloudFront devuelve al lector. En el caso de la solicitud
HTTPS, el cargo es por la solicitud y por los encabezados y el objeto que devuelve el origen.
Solo HTTPS

Los espectadores pueden obtener acceso a su contenido solo si utilizan HTTPS. Si un lector
envía una solicitud HTTP en lugar de una solicitud HTTPS, CloudFront devuelve código de estado
HTTP 403 (Prohibido) y no devuelve el objeto.
5. Elija Yes, Edit (Sí, editar).

140
Amazon CloudFront Guía para desarrolladores
Exigir HTTPS en un origen personalizado

6. Repita los pasos 3 a 5 para cada comportamiento de la caché adicional para el que desee solicitar
HTTPS entre los lectores y CloudFront.
7. Confirme lo siguiente antes de utilizar la configuración actualizada en un entorno de producción:

• El patrón de ruta de cada comportamiento de la caché es aplicable únicamente a las solicitudes en


las que desea que los espectadores utilicen HTTPS.
• Los comportamientos de la caché se muestran en el orden en que desee que CloudFront los evalúe.
Para obtener más información, consulte Patrón de ruta (p. 53).
• Los comportamientos de la caché son solicitudes de redirección hacia los orígenes correctos.

Exigir HTTPS para la comunicación entre CloudFront y


su origen personalizado
Si desea exigir el uso de HTTPS para las comunicaciones entre CloudFront y un origen personalizado,
los pasos necesarios dependerán de si está utilizando el nombre de dominio que CloudFront asignó a
la distribución (como d111111abcdef8.cloudfront.net) o su propio nombre de dominio alternativo (como
example.com).
Note

Si su origen personalizado es un bucket de Amazon S3 configurado como punto de enlace del


sitio web, no puede configurar CloudFront para usar HTTPS con su origen porque Amazon S3 no
admite HTTPS para los puntos de enlace del sitio web.

Usar el nombre de dominio predeterminado de CloudFront

Si utiliza el nombre de dominio que CloudFront ha asignado a la distribución en las URL de los objetos
(por ejemplo, https://d111111abcdef8.cloudfront.net/logo.jpg), puede hacer obligatorio el uso de
HTTPS siguiendo los procedimientos de este tema para hacer lo siguiente:
• Cambiar la configuración de Origin Protocol Policy (Política de protocolo de origen) para
determinados orígenes de su distribución
• Instalar un certificado SSL/TLS en su servidor de origen personalizado (no es necesario cuando se
utiliza un origen de Amazon S3)
Uso de un nombre de dominio alternativo

En lugar de utilizar el nombre de dominio predeterminado con la distribución, puede añadir un nombre
de dominio alternativo con el que le resulte más sencillo trabajar como, por ejemplo, example.com.

Para hacer obligatorio el uso de HTTPS para las comunicaciones cuando utilice un nombre de
dominio alternativo, siga los pasos y las instrucciones de Usar nombres de dominio alternativos y
HTTPS (p. 150).

Temas
• Cambiar la configuración de CloudFront (p. 141)
• Instalar un certificado SSL/TLS en su servidor de origen personalizado (p. 142)
• Acerca de los cifrados RSA y ECDSA (p. 143)

Cambiar la configuración de CloudFront


En el siguiente procedimiento se explica cómo configurar CloudFront para que utilice HTTPS para
comunicarse con un balanceador de carga de Elastic Load Balancing, una instancia de Amazon EC2 u otro

141
Amazon CloudFront Guía para desarrolladores
Exigir HTTPS en un origen personalizado

origen personalizado. Para obtener información sobre el uso de la API de CloudFront para actualizar una
distribución, consulte UpdateDistribution en la Referencia de la API de Amazon CloudFront.

Para configurar CloudFront para que requiera HTTPS entre CloudFront y su origen personalizado

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 (Orígenes), elija el origen que desee actualizar y, a continuación, elija Edit
(Editar).
4. Actualice los siguientes valores de configuración:

Origin Protocol Policy

Cambie Origin Protocol Policy (Política de protocolo de origen) para los orígenes aplicables en su
distribución:
• HTTPS Only (Solo HTTPS): CloudFront solo utiliza HTTPS para comunicarse con su origen
personalizado.
• Match Viewer (Coincidir con lector): CloudFront se comunica con su origen personalizado
mediante HTTP o HTTPS, en función del protocolo de la solicitud del lector. Por ejemplo, si
elige Match Viewer (Coincidir con lector) en Origin Protocol Policy (Política de protocolo de
origen) y el lector usa HTTPS para solicitar un objeto de CloudFront, CloudFront también usa
HTTPS para reenviar la solicitud al origen.

Elija Match Viewer (Coincidir con espectador) solo si especifica Redirect HTTP to HTTPS
(Redireccionamiento de HTTP a HTTPS) o HTTPS Only (Solo HTTPS) en Viewer Protocol
Policy (Política de protocolo del espectador).

Tenga en cuenta que CloudFront almacena en caché el objeto solo una vez, incluso si los
lectores realizan solicitudes a través de los protocolos HTTP y HTTPS.
Origin SSL Protocols

Elija Origin SSL Protocols (Protocolos SSL de orige) para los orígenes aplicables a su
distribución. El protocolo SSLv3 es menos seguro, así que le recomendamos que lo seleccione
únicamente si su origen no admite TLSv1 o una versión posterior. El protocolo de enlace TLSv1
es bidireccionalmente compatible con SSLv3, pero TLSv1.1 y TLSv1.2 no. Cuando selecciona
SSLv3, CloudFront solo envía solicitudes de protocolo de enlace SSLv3.
5. Elija Yes, Edit (Sí, editar).
6. Repita los pasos 3 a 5 para cada origen adicional para el que desee solicitar HTTPS entre CloudFront
y su origen personalizado.
7. Confirme lo siguiente antes de utilizar la configuración actualizada en un entorno de producción:

• El patrón de ruta de cada comportamiento de la caché es aplicable únicamente a las solicitudes en


las que desea que los espectadores utilicen HTTPS.
• Los comportamientos de la caché se muestran en el orden en que desee que CloudFront los evalúe.
Para obtener más información, consulte Patrón de ruta (p. 53).
• Los comportamientos de la caché son solicitudes de redirección a los orígenes cuyo valor de Origin
Protocol Policy (Política de protocolos de origen) ha cambiado.

Instalar un certificado SSL/TLS en su servidor de origen


personalizado
Puede utilizar un certificado SSL/TLS de las siguientes fuentes en su origen personalizado:

142
Amazon CloudFront Guía para desarrolladores
Exigir HTTPS en un origen personalizado

• Si su origen es un balanceador de carga de Elastic Load Balancing, puede utilizar un certificado


proporcionado por AWS Certificate Manager (ACM). También puede utilizar un certificado firmado por
una entidad de certificación de terceros de confianza e importado a ACM.
• En el caso de orígenes diferentes a balanceadores de carga de Elastic Load Balancing, debe utilizar
un certificado firmado por una 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 certificado
haya sido emitido por una autoridad de certificados de confianza. CloudFront admite las mismas
autoridades de certificados que Mozilla. Para consultar la lista actualizada, consulte Mozilla Included CA
Certificate List. No se puede utilizar un certificado autofirmado para comunicación HTTPS entre CloudFront
y su origen.
Important

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, CloudFront
interrumpe la conexión TCP, devuelve código de estado HTTP 502 (Gateway incorrecta) y
establece el encabezado X-Cache como Error from cloudfront. Igualmente, si toda la
cadena de certificados, incluidos los certificados intermedios, no está presente, CloudFront
interrumpe la conexión TCP.

El certificado devuelto por el origen debe incluir el dominio que especificó en Origin Domain Name
(Nombre de dominio de origen) para el origen correspondiente en la distribución. Además, si configuró
CloudFront para reenviar el encabezado Host a su origen, el origen debe responder con un certificado que
coincida con el dominio en el encabezado Host.

Acerca de los cifrados RSA y ECDSA


El nivel de cifrado de una conexión de comunicaciones depende el tamaño de la clave y de la fuerza del
algoritmo que elija para su certificado de servidor de origen. Las dos opciones que admite CloudFront para
conexiones 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 y cifrados
admitidos entre CloudFront y el origen (p. 148).

Cómo funcionan los cifrados RSA


CloudFront y los servidores de origen normalmente utilizan claves asimétricas RSA de 2048 bits para
terminación SSL/TLS. Los algoritmos de RSA utilizan el producto de dos números primos grandes, con
otro 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ón
del producto de dos números primos grandes. Sin embargo, las mejoras en la tecnología informática han
debilitado los algoritmos de RSA dado que los cálculos informáticos más rápidos permiten que ahora sea
más sencillo romper el cifrado.

Si desea mantener el nivel del cifrado mientras sigue utilizando RSA, una opción sería aumentar el tamaño
de sus claves RSA. Sin embargo, este enfoque no es escalable fácilmente ya que las claves más grandes
aumentan el costo de computación para criptografía.

Cómo funcionan los cifrados ECDSA


Como alternativa, podría utilizar un certificado ECDSA. ECDSA basa su seguridad en un problema
matemático más complejo que RSA y que es más difícil de resolver, lo que significa que hace falta más
tiempo de procesamiento informático para romper el cifrado ECDSA. ECDSA se basa en el principio de
que la dificultad de resolver el logaritmo discreto de una curva elíptica aleatoria cuando se conoce su base,

143
Amazon CloudFront Guía para desarrolladores
Requiriendo HTTPS a un origen de Amazon S3

también conocido como Problema del logaritmo discreto de curva elíptica (ECDLP). Esto significa que
puede utilizar longitudes de clave más cortas para conseguir la seguridad equivalente a usar RSA con
tamaños de claves mucho mayores.

Además de proporcionar mejor seguridad, el uso de claves de ECDSA más pequeñas permite un cálculo
más rápido de algoritmos, certificados digitales más pequeños y menos bits para transmitir durante el
protocolo SSL/TLS. En consecuencia, las claves más pequeñas reducen el tiempo requerido para crear
y firmar certificados digitales para terminación SSL/TLS en servidores de origen. El uso de un tamaño
de clave más pequeño, por lo tanto, permite aumentar el desempeño reduciendo los ciclos informáticos
necesarios para criptografía, liberando recursos de servidor para procesar otros trabajos.

Elegir entre cifrados de RSA y ECDSA


Las pruebas de ejemplo que hemos ejecutado para comparar, por ejemplo, RSA de 2 048 bits con ECDSA
de 256 bits (nistp256) han indicado que la opción nistp256 fue un 95% más rápida que el RSA de 2 048
bits 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 de
su cifrado actual para la autenticación SSL/TLS en sus servidores de origen, ECDSA podría ser una opción
más recomendable. El esfuerzo para habilitar los certificados digitales de ECDSA en comparación con el
beneficio de seguridad que aporta ECDSA es una desventaja que tendrá que sopesar a la hora de tomar
una decisión. Además de permitir un cifrado más fuerte, la reducción de costo informático de la criptografía
al utilizar ECDSA en sus servidores de origen es una ventaja adicional.

Uso de cifrados de ECDSA


Para utilizar ECDSA para comunicaciones entre CloudFront y su origen, haga lo siguiente:

1. Genere una clave privada mediante una de las curvas admitidas (prime256v1, secp384r1 o X25519).
2. Genere un certificado digital ECDSA en el formato PEM X.509 con una autoridad de certificación de
confianza.
3. Configure su origen para que prefiera el certificado ECDSA.

El uso de ECDSA no requiere ningún cambio de configuración en la consola de CloudFront o en las API y
no hay cuota adicional.

Requiriendo HTTPS para la comunicación entre


CloudFront y su origen de Amazon S3
Cuando el origen es un bucket de Amazon S3, las opciones para utilizar HTTPS en las comunicaciones
con CloudFront dependerán de cómo se esté utilizando el bucket. Si su bucket de Amazon S3 se
configura como un punto de enlace de sitio web, no puede configurar CloudFront para usar HTTPS para
comunicarse con su origen porque Amazon S3 no admite conexiones HTTPS en dicha configuración.

Cuando el origen es un bucket de Amazon S3 que permite la comunicación HTTPS, CloudFront siempre
reenvía las solicitudes a S3 con el protocolo que los lectores utilizaron para enviar las solicitudes. El valor
predeterminado para la configuración Origin Protocol Policy (p. 50) es Match Viewer (Coincidir con lector) y
no puede modificarse.

Si desea solicitar HTTPS para la comunicación entre CloudFront y Amazon S3, deberá cambiar el valor de
protocolo de Viewer Protocol Policy (Política de protocolo del lector) a Redirect HTTP to HTTPS (Redirigir
HTTP a HTTPS) o HTTPS Only (Solo HTTPS). En el procedimiento que se indica más adelante en esta
sección se explica cómo usar la consola de CloudFront para cambiar Viewer Protocol Policy (Política de
protocolo del lector). Para obtener información sobre el uso de la API de CloudFront para actualizar el

144
Amazon CloudFront Guía para desarrolladores
Protocolos y cifrados admitidos entre lectores y CloudFront

elemento ViewerProtocolPolicy de una distribución, consulte UpdateDistribution en la Referencia de


la API de Amazon CloudFront.

Si utiliza HTTPS con un bucket de Amazon S3 que admite comunicaciones HTTPS, Amazon S3
proporciona el certificado SSL/TLS para que no tenga hacerlo usted.

Para configurar CloudFront para que requiera HTTPS a 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 (Comportamientos), elija el comportamiento de la caché que desee actualizar
y, a continuación, elija Edit (Editar).
4. Especifique uno de los siguientes valores en Viewer Protocol Policy (Política de protocolo del
espectador):

Redireccionamiento de HTTP a HTTPS

Los espectadores pueden usar tanto el protocolo HTTP como el HTTPS, pero las solicitudes
HTTP se redirigirán automáticamente a solicitudes HTTPS. CloudFront devuelve el código de
estado HTTP 301 (Movido permanentemente) junto con la nueva URL HTTPS. A continuación, el
lector vuelve a enviar la solicitud a CloudFront través de la nueva URL HTTPS.
Important
CloudFront no redirige las solicitudes DELETE, OPTIONS, PATCH, POST ni PUT de HTTP
a HTTPS. Si configura un comportamiento de la caché para que redirija a HTTPS,
CloudFront responde a solicitudes HTTP DELETE, OPTIONS, PATCH, POST o PUT de ese
comportamiento de la caché con el código de estado HTTP 403 (Prohibido).

Cuando un lector realiza una solicitud HTTP que se redirige a una solicitud HTTPS, se aplican
cargos de CloudFront a ambas solicitudes. En el caso de la solicitud HTTP, el cargo es solo para
la solicitud y para los encabezados que CloudFront devuelve al lector. En el caso de la solicitud
HTTPS, el cargo es por la solicitud y por los encabezados y el objeto devueltos por el origen.
Solo HTTPS

Los espectadores pueden obtener acceso a su contenido solo si utilizan HTTPS. Si un lector
envía una solicitud HTTP en lugar de una solicitud HTTPS, CloudFront devuelve código de estado
HTTP 403 (Prohibido) y no devuelve el objeto.
5. Elija Yes, Edit (Sí, editar).
6. Repita los pasos 3 a 5 para cada comportamiento de la caché adicional para el que desee solicitar
HTTPS entre los lectores y CloudFront, y entre CloudFront y S3.
7. Confirme lo siguiente antes de utilizar la configuración actualizada en un entorno de producción:

• El patrón de ruta de cada comportamiento de la caché es aplicable únicamente a las solicitudes en


las que desea que los espectadores utilicen HTTPS.
• Los comportamientos de la caché se muestran en el orden en que desee que CloudFront los evalúe.
Para obtener más información, consulte Patrón de ruta (p. 53).
• Los comportamientos de la caché son solicitudes de redirección hacia los orígenes correctos.

Protocolos y cifrados admitidos entre lectores y


CloudFront
Cuando necesite HTTPS entre los lectores y la distribución de CloudFront (p. 55), debe elegir una política
de seguridad (p. 63), que determine la siguiente configuración.

145
Amazon CloudFront Guía para desarrolladores
Protocolos y cifrados admitidos entre lectores y CloudFront

• El protocolo SSL/TLS mínimo que utiliza CloudFront para comunicarse con los lectores.
• Los cifrados que CloudFront puede utilizar para cifrar la comunicación con los lectores.

Para elegir una política de seguridad, especifique el valor aplicable para Política de seguridad (p. 63). En
la siguiente tabla se muestran los protocolos y los cifrados que CloudFront puede utilizar para cada política
de seguridad.

Un lector debe admitir al menos uno de los cifrados compatibles para establecer una conexión HTTPS con
CloudFront. Si utiliza un certificado SSL/TLS en AWS Certificate Manager, un lector debe admitir alguno de
los cifrados *-RSA-*. CloudFront elige un cifrado en el orden mostrado de entre los cifrados que admite el
lector. Véase también Nombres de cifrado OpenSSL, s2n y RFC (p. 147).

Política de seguridad

Protocolos SSL/TLS admitidos

TLSv1.3¹ ♦ ♦ ♦ ♦ ♦ ♦

TLSv1.2 ♦ ♦ ♦ ♦ ♦ ♦

TLSv1.1 ♦ ♦ ♦ ♦

TLSv1 ♦ ♦ ♦

SSLv3 ♦

Cifrados admitidos

TLS_AES_128_GCM_SHA256 ♦ ♦ ♦ ♦ ♦ ♦

TLS_AES_256_GCM_SHA384 ♦ ♦ ♦ ♦ ♦ ♦

TLS_CHACHA20_POLY1305_SHA256
♦ ♦ ♦ ♦ ♦ ♦

ECDHE-RSA-AES128-GCM- ♦ ♦ ♦ ♦ ♦ ♦
SHA256

ECDHE-RSA-AES128-SHA256 ♦ ♦ ♦ ♦ ♦ ♦

ECDHE-RSA-AES128-SHA ♦ ♦ ♦ ♦

ECDHE-RSA-AES256-GCM- ♦ ♦ ♦ ♦ ♦ ♦
SHA384

ECDHE-RSA-CHACHA20- ♦ ♦ ♦ ♦ ♦ ♦
POLY1305

ECDHE-RSA-AES256-SHA384 ♦ ♦ ♦ ♦ ♦ ♦

ECDHE-RSA-AES256-SHA ♦ ♦ ♦ ♦

AES128-GCM-SHA256 ♦ ♦ ♦ ♦ ♦

AES256-GCM-SHA384 ♦ ♦ ♦ ♦ ♦

AES128-SHA256 ♦ ♦ ♦ ♦ ♦

AES256-SHA ♦ ♦ ♦ ♦

AES128-SHA ♦ ♦ ♦ ♦

146
Amazon CloudFront Guía para desarrolladores
Protocolos y cifrados admitidos entre lectores y CloudFront

Política de seguridad

DES-CBC3-SHA ♦ ♦

RC4-MD5 ♦

¹CloudFront admite un protocolo de enlace de tiempo de ida y vuelta (1-RTT) para TLSv1.3, pero no admite
protocolos de enlace de tiempo de ida y vuelta cero (0-RTT).

Nombres de cifrado OpenSSL, s2n y RFC


OpenSSL y s2n usan nombres diferentes para cifrar que los estándares de TLS (RFC 2246, RFC 4346,
RFC 5246, y RFC 8446). En la siguiente tabla se mapean los nombres de OpenSSL y s2n al nombre de
RFC para cada uno de los cifrados.

Para todos los cifrados de curvas elípticas, CloudFront admite las siguientes curvas elípticas:

• prime256v1
• secp384r1
• X25519

Nombre del cifrado OpenSSL y s2n Nombre del cifrado RFC

TLS_AES_128_GCM_SHA256 TLS_AES_128_GCM_SHA256

TLS_AES_256_GCM_SHA384 TLS_AES_256_GCM_SHA384

TLS_CHACHA20_POLY1305_SHA256 TLS_CHACHA20_POLY1305_SHA256

ECDHE-RSA-AES128-GCM-SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

ECDHE-RSA-AES128-SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

ECDHE-RSA-AES128-SHA TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

ECDHE-RSA-AES256-GCM-SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

ECDHE-RSA-CHACHA20-POLY1305 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

ECDHE-RSA-AES256-SHA384 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

ECDHE-RSA-AES256-SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

AES128-GCM-SHA256 TLS_RSA_WITH_AES_128_GCM_SHA256

AES256-GCM-SHA384 TLS_RSA_WITH_AES_256_GCM_SHA384

AES128-SHA256 TLS_RSA_WITH_AES_128_CBC_SHA256

AES256-SHA TLS_RSA_WITH_AES_256_CBC_SHA

AES128-SHA TLS_RSA_WITH_AES_128_CBC_SHA

DES-CBC3-SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA

RC4-MD5 TLS_RSA_WITH_RC4_128_MD5

147
Amazon CloudFront Guía para desarrolladores
Protocolos y cifrados admitidos entre CloudFront y el origen

Esquemas de firma admitidos entre los lectores y CloudFront


CloudFront admite los siguientes esquemas de firma para conexiones entre lectores y CloudFront.

• TLS_SIGNATURE_SCHEME_RSA_PSS_RSAE_SHA256
• TLS_SIGNATURE_SCHEME_RSA_PSS_RSAE_SHA384
• TLS_SIGNATURE_SCHEME_RSA_PSS_RSAE_SHA512
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA256
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA384
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA512
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA224
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA1

Protocolos y cifrados admitidos entre CloudFront y el


origen
Si elige exigir HTTPS entre CloudFront y su origen, puede decidir el protocolo SSL/TLS que desea permitir
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
RSA mostrados en las siguientes tablas. El servidor de origen debe admitir al menos uno de estos
códigos cifrados de CloudFront para establecer una conexión HTTPS a su origen. Para obtener más
información sobre los dos tipos de cifrados que admite CloudFront, consulte Acerca de los cifrados RSA y
ECDSA (p. 143).

OpenSSL y s2n usan nombres diferentes para cifrar que los estándares de TLS (RFC 2246, RFC 4346,
RFC 5246, y RFC 8446). En las siguientes tablas se mapean los nombres de OpenSSL y s2n al nombre de
RFC para cada uno de los cifrados.

Cifrados de RSA compatibles

CloudFront admite los siguientes cifrados de RSA para las conexiones con un origen.

Para todos los cifrados de curvas elípticas, CloudFront admite las siguientes curvas elípticas:

• prime256v1
• secp384r1
• X25519

Nombre del cifrado OpenSSL y s2n 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

ECDHE-RSA-AES128-GCM-SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

ECDHE-RSA-AES128-SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

ECDHE-RSA-AES128-SHA TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

148
Amazon CloudFront Guía para desarrolladores
Cargos por conexiones HTTPS

Nombre del cifrado OpenSSL y s2n Nombre del cifrado RFC

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.

Para todos los cifrados de curvas elípticas, CloudFront admite las siguientes curvas elípticas:

• prime256v1
• secp384r1
• X25519

Nombre del cifrado OpenSSL y s2n 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

Esquemas de firma admitidos entre CloudFront y el origen

CloudFront admite los siguientes esquemas de firma para las conexiones entre CloudFront y el origen.

• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA256
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA384
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA512
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA224
• TLS_SIGNATURE_SCHEME_ECDSA_SHA256
• TLS_SIGNATURE_SCHEME_ECDSA_SHA384
• TLS_SIGNATURE_SCHEME_ECDSA_SHA512
• TLS_SIGNATURE_SCHEME_ECDSA_SHA224
• TLS_SIGNATURE_SCHEME_RSA_PKCS1_SHA1
• TLS_SIGNATURE_SCHEME_ECDSA_SHA1

Cargos por conexiones HTTPS


Siempre se aplica un recargo por solicitudes HTTPS. Para obtener más información, consulte Precios de
Amazon CloudFront.

149
Amazon CloudFront Guía para desarrolladores
Usar nombres de dominio alternativos y HTTPS

Usar nombres de dominio alternativos y HTTPS


Si desea utilizar su propio nombre de dominio en las URL de los archivos (por ejemplo, https://
www.example.com/image.jpg) y desea que los lectores utilicen HTTPS, debe completar los
pasos descritos en este tema. (Si utiliza el nombre de dominio de distribución de CloudFront
predeterminado en las URL, por ejemplo, https://d111111abcdef8.cloudfront.net/image.jpg,
siga las instrucciones del siguiente tema: Exigir HTTPS para la comunicación entre lectores y
CloudFront (p. 139)).
Important

Cuando se agrega un certificado a la distribución, CloudFront propaga inmediatamente el


certificado a todas las ubicaciones de borde. A medida que haya nuevas ubicaciones de borde
disponibles, CloudFront también propaga el certificado a dichas ubicaciones. No puede restringir
las ubicaciones de borde a las que CloudFront propaga los certificados.

Temas
• Elegir cómo CloudFront atiende las solicitudes HTTPS (p. 150)
• Requisitos para la utilización de certificados SSL/TLS con CloudFront (p. 152)
• Cuotas al usar certificados SSL/TLS con CloudFront (solo HTTPS entre lectores y
CloudFront) (p. 155)
• Configurar nombres de dominio alternativos y HTTPS (p. 157)
• Determinar el tamaño de la clave pública en un certificado SSL/TLS (p. 160)
• Ampliar las cuotas de certificados SSL/TLS (p. 160)
• Rotar certificados SSL/TLS (p. 162)
• Volver de un certificado SSL/TLS personalizado al certificado de CloudFront predeterminado (p. 162)
• Cambiar de un certificado SSL/TLS personalizado con direcciones IP dedicadas a SNI (p. 163)

Elegir cómo CloudFront atiende las solicitudes HTTPS


Si desea que los lectores usen HTTPS y nombres de dominio alternativos para los archivos, elija una de
las opciones siguientes de cómo CloudFront atiende las solicitudes HTTPS:

• Utilizar la indicación de nombre de servidor (SNI): recomendado


• Utilizar una dirección IP dedicada en cada ubicación de borde

En esta sección se explica cómo funciona cada opción.

Uso de SNI para atender solicitudes HTTPS (funciona en la


mayoría de los clientes)
La indicación de nombre de servidor (SNI) es una extensión del protocolo TLS que admiten los
navegadores y clientes disponibles desde 2010. Si configura CloudFront para atender solicitudes HTTPS
mediante SNI, CloudFront asocia el nombre de dominio alternativo a una dirección IP para cada ubicación
de borde. Cuando un espectador envía una solicitud HTTPS de contenido, el servicio DNS dirige la
solicitud a la dirección IP de la ubicación de borde correcta. La dirección IP de su nombre de dominio se
determina durante la negociación del protocolo SSL/TLS; la dirección IP no es exclusiva de su distribución.

La negociación SSL/TLS se produce muy pronto en el proceso de establecimiento de una conexión


HTTPS. Si CloudFront no puede determinar inmediatamente para qué dominio es la solicitud, interrumpe la
conexión. Cuando un espectador que admite SNI envía una solicitud HTTPS de contenido, esto es lo que
ocurre:

150
Amazon CloudFront Guía para desarrolladores
Elegir cómo CloudFront atiende las solicitudes HTTPS

1. El espectador obtiene automáticamente el nombre de dominio de la URL de la solicitud y lo añade a un


campo en el encabezado de la solicitud.
2. Cuando CloudFront recibe la solicitud, encuentra el nombre de dominio en el encabezado de la solicitud
y responde a la solicitud con el certificado SSL/TLS aplicable.
3. El lector y CloudFront llevan a cabo la negociación SSL/TLS.
4. CloudFront devuelve el contenido solicitado al lector.

Para obtener una lista actualizada de los navegadores que admiten SNI, consulte la entrada de Wikipedia
de Server Name Indication.

Si desea utilizar SNI pero algunos de los navegadores de los usuarios no lo admiten, dispone de varias
opciones:

• Configure CloudFront para atender solicitudes HTTPS a través de direcciones IP dedicadas en lugar de
SNI. Para obtener más información, consulte Uso de direcciones IP dedicadas para atender solicitudes
HTTPS (funciona en todos los clientes) (p. 151).
• Utilice el certificado SSL/TLS de CloudFront en lugar de un certificado personalizado. Esto requiere que
utilice el nombre de dominio de CloudFront para la distribución en las URL de los archivos; por ejemplo,
https://d111111abcdef8.cloudfront.net/logo.png.

Si utiliza el certificado de CloudFront predeterminado, los lectores deben admitir el protocolo SSL TLSv1
o versiones posteriores. CloudFront no admite SSLv3 con el certificado de CloudFront predeterminado.

También debe cambiar el certificado SSL/TLS que CloudFront utiliza, de un certificado personalizado al
certificado de CloudFront predeterminado:
• Si no ha usado su distribución para distribuir su contenido, puede simplemente cambiar la
configuración. Para obtener más información, consulte Actualización de una distribución (p. 71).
• Si ha usado su distribución para distribuir el contenido, debe crear una nueva distribución de
CloudFront y cambiar las URL de los archivos para reducir o eliminar la cantidad de tiempo que el
contenido no va a estar disponible. Para obtener más información, consulte Volver de un certificado
SSL/TLS personalizado al certificado de CloudFront predeterminado (p. 162).
• Si puede controlar qué navegador utilizarán los usuarios, haga que lo actualicen a uno que admita SNI.
• Utilice HTTP en lugar de HTTPS.

Uso de direcciones IP dedicadas para atender solicitudes HTTPS


(funciona en todos los clientes)
La indicación de nombre de servidor (SNI) es una manera de asociar una solicitud a un dominio. Otra
forma es utilizar una dirección IP dedicada. Si tiene usuarios que no pueden actualizar a un navegador
o cliente que se haya lanzado después de 2010, puede utilizar una dirección IP dedicada para atender
solicitudes HTTPS. Para obtener una lista actualizada de los navegadores que admiten SNI, consulte la
entrada de Wikipedia de Server Name Indication.
Important

Si configura CloudFront para atender solicitudes HTTPS mediante direcciones IP dedicadas, se le


aplicará una cuota mensual adicional. El cargo comienza cuando asocia el certificado SSL/TLS a
una distribución y la habilita. Para obtener más información acerca de los precios de CloudFront,
consulte Precios de Amazon CloudFront. Además, consulte Uso del mismo certificado para varias
distribuciones de CloudFront (p. 156).

Si configura CloudFront para atender solicitudes HTTPS mediante direcciones IP dedicadas, CloudFront
asocia el nombre de dominio alternativo a una dirección IP dedicada en cada ubicación de borde de
CloudFront. Cuando un espectador envía una solicitud HTTPS de contenido, esto es lo que ocurre:

151
Amazon CloudFront Guía para desarrolladores
Requisitos para la utilización de
certificados SSL/TLS con CloudFront

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 lector.
3. El lector y CloudFront llevan a cabo una negociación SSL/TLS con el certificado SSL/TLS.
4. CloudFront devuelve el contenido solicitado al lector.

Este método funciona con cualquier solicitud HTTPS, independientemente del navegador o espectador que
esté utilizando el usuario.

Requisitos para la utilización de certificados SSL/TLS


con CloudFront
En este tema se describen los requisitos de los certificados SSL/TLS. Salvo que se indique lo contrario, se
aplicarán a estos dos tipos de certificados:

• Certificados para utilizar HTTPS entre los lectores y CloudFront


• Certificados para utilizar HTTPS entre CloudFront y el origen

Temas
• Emisor de certificados (p. 152)
• Región de AWS en la que solicita un certificado (para AWS Certificate Manager) (p. 153)
• Formato del certificado (p. 153)
• Certificados intermedios (p. 153)
• Tipo de clave (p. 153)
• Clave privada (p. 154)
• Permisos (p. 154)
• Tamaño de la clave pública (p. 154)
• Tipos de certificados admitidos (p. 154)
• Fecha de vencimiento y renovación de certificados (p. 154)
• Nombres de dominio en la distribución de CloudFront y en el certificado (p. 155)
• Versión mínima de protocolo SSL (p. 155)
• Versiones de HTTP compatibles (p. 155)

Emisor de certificados
El emisor del certificado que debe utilizar depende de si desea solicitar HTTPS entre los lectores y
CloudFront o entre CloudFront y el origen:

• HTTPS entre los lectores y CloudFront: puede utilizar un certificado emitido por una entidad de
certificación (CA) de confianza como Comodo, DigiCert o Symantec o puede utilizar un certificado
proporcionado por AWS Certificate Manager (ACM).
Important

Si desea utilizar un nombre de dominio alternativo con la distribución de CloudFront, debe


demostrar a CloudFront que dispone de derechos autorizados para utilizar el nombre de
dominio alternativo. Para ello, debe asociar un certificado válido a la distribución y asegurarse
de que el certificado proviene de una entidad de certificación de confianza que se muestra en
Mozilla Included CA Certificate List. CloudFront no le permite utilizar un certificado autofirmado
para verificar sus derechos autorizados para utilizar un nombre de dominio alternativo.

152
Amazon CloudFront Guía para desarrolladores
Requisitos para la utilización de
certificados SSL/TLS con CloudFront

• HTTPS entre CloudFront y un origen personalizado : si el origen no es un balanceador de carga Elastic


Load Balancing (ELB), como Amazon EC2, una CA de confianza como Comodo, DigiCert o Symantec
debe emitir el certificado. Si el origen es un balanceador de carga ELB, también puede utilizar un
certificado proporcionado por ACM.
Important

Cuando CloudFront utiliza HTTPS para comunicarse con el origen, CloudFront comprueba
que una entidad de certificación de confianza ha emitido el certificado. CloudFront admite las
mismas autoridades de certificación que Mozilla; para la lista actualizada, consulte Mozilla
Included CA Certificate List. No puede utilizar un certificado autofirmado para comunicación
HTTPS entre CloudFront y el origen.

Para obtener más información acerca de cómo obtener e instalar un certificado SSL/TLS, consulte la
documentación de su software del servidor HTTP y la de la autoridad de certificados. Para obtener
información sobre ACM, consulte la Guía del usuario de AWS Certificate Manager.

Región de AWS en la que solicita un certificado (para AWS


Certificate Manager)
Si desea solicitar HTTPS entre lectores y CloudFront, debe cambiar la región de AWS a EE. UU. Este
(Norte de Virginia) en la consola de AWS Certificate Manager antes de solicitar o importar un certificado.

Si desea solicitar HTTPS entre CloudFront y el origen y utiliza un balanceador de carga ELB como origen,
puede solicitar o importar un certificado en cualquier región.

Formato del certificado


El certificado debe tener el formato X.509 PEM. Este es el formato predeterminado si utiliza AWS
Certificate Manager.

Certificados intermedios
Si utiliza una entidad de certificación (CA) de terceros, en el archivo .pem, incluya una lista de todos
los certificados intermedios de la cadena de certificados, comenzando por uno para el CA que firmó el
certificado para el dominio. Normalmente, en el sitio web de la CA encontrará un archivo que enumera los
certificados intermedios y raíz encadenados de la manera correcta.
Important

No incluya lo siguiente: el certificado raíz y los certificados intermedios que no estén en la ruta de
confianza, ni el certificado de clave pública de la CA.

A continuación se muestra un ejemplo:

-----BEGIN CERTIFICATE-----
Intermediate certificate 2
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Intermediate certificate 1
-----END CERTIFICATE-----

Tipo de clave
CloudFront solo admite pares de claves públicas/privadas de RSA.

153
Amazon CloudFront Guía para desarrolladores
Requisitos para la utilización de
certificados SSL/TLS con CloudFront

Clave privada
Si utiliza un certificado de una entidad de certificación (CA) de terceros, tenga en cuenta lo siguiente:

• La clave privada debe coincidir con la clave pública que se encuentra en el certificado.
• La clave privada también debe ser una clave privada RSA en formato PEM, donde el encabezado PEM
es BEGIN RSA PRIVATE KEY y la nota al pie de página es END RSA PRIVATE KEY.
• La clave privada no puede cifrarse con una contraseña.

Si AWS Certificate Manager (ACM) ha proporcionado el certificado, ACM no libera la clave privada. La
clave privada se almacena en ACM para que la usen los servicios de AWS integrados con ACM.

Permisos
Debe tener permiso para usar e importar el certificado SSL/TLS. Si utiliza AWS Certificate Manager (ACM),
le recomendamos que utilice los permisos de AWS Identity and Access Management para restringir el
acceso a los certificados. Para obtener más información, consulte Permisos y políticas en la Guía del
usuario de AWS Certificate Manager.

Tamaño de la clave pública


La longitud de la clave pública de un certificado depende del lugar en el que lo almacene.

• Importación de un certificado a AWS Certificate Manager (ACM): la longitud de la clave pública debe ser
de 1024 bits o 2048 bits. La longitud máxima de un certificado que se utiliza con CloudFront es de 2048
bits, aunque ACM admite claves más grandes.
• Cargar un certificado en el almacén de certificados de AWS Identity and Access Management (IAM): el
tamaño máximo de la clave pública es de 2048 bits.

Recomendamos utilizar 2 048 bits.

Para obtener información acerca de las claves públicas de los certificados proporcionados por ACM,
consulte Características de los certificados de ACM en la Guía del usuario de AWS Certificate Manager.

Para obtener información acerca de cómo determinar el tamaño de la clave pública, consulte Determinar el
tamaño de la clave pública en un certificado SSL/TLS (p. 160).

Tipos de certificados admitidos


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


Si utiliza certificados obtenidos de una entidad de certificación (CA) de terceros, debe monitorear fechas
de vencimiento de certificados y renovar los certificados SSL/TLS que importe a AWS Certificate Manager
(ACM) o cargue en el almacén de certificados de AWS Identity and Access Management.

154
Amazon CloudFront Guía para desarrolladores
Cuotas al usar certificados SSL/TLS con CloudFront
(solo HTTPS entre lectores y CloudFront)

Si utiliza certificados proporcionados por ACM, ACM administra las renovaciones de esos certificados por
usted. Para obtener más información, consulte Renovación administrada en la Guía del usuario de AWS
Certificate Manager.

Nombres de dominio en la distribución de CloudFront y en el


certificado
Cuando se utiliza un origen personalizado, el certificado SSL/TLS del origen incluye un nombre de dominio
en el campo Common Name (Nombre común) y, posiblemente, varios más en el campo Subject Alternative
Names (Nombres alternativos de sujetos). (CloudFront admite caracteres comodín en nombres de dominio
de certificados).
Important

Al agregar un nombre de dominio alternativo a una distribución, CloudFront comprueba que el


nombre de dominio alternativo esté cubierto por el certificado que se ha asociado. El certificado
debe cubrir el nombre de dominio alternativo en el campo de nombre alternativo del sujeto (SAN)
del certificado. Esto significa que el campo SAN debe contener una coincidencia exacta para el
nombre de dominio alternativo o contener un comodín en el mismo nivel del nombre de dominio
alternativo que está añadiendo.
Para obtener más información, consulte Requisitos para el uso de nombres de dominio
alternativos (p. 87).

Uno de los nombres de dominio del certificado debe coincidir con el nombre de dominio que especifique en
Origin Domain Name. Si no coincide ningún nombre de dominio, CloudFront devuelve al lector el código de
estado HTTP 502 (Bad Gateway).

Versión mínima de protocolo SSL


Si utiliza direcciones IP dedicadas, establezca la versión mínima de protocolo SSL para la conexión entre
lectores y CloudFront eligiendo una política de seguridad.

Para obtener más información, consulte Política de seguridad (p. 63) en el tema Valores que deben
especificarse al crear o actualizar una distribución (p. 43).

Versiones de HTTP compatibles


Si asocia un certificado con más de una distribución de CloudFront, todas las distribuciones asociadas con
el certificado deben utilizar la misma opción para Versiones de HTTP compatibles (p. 64). Esta opción se
especifica al crear o actualizar una distribución de CloudFront.

Cuotas al usar certificados SSL/TLS con CloudFront


(solo HTTPS entre lectores y CloudFront)
Tenga en cuenta las siguientes cuotas (antes denominadas límites) en cuanto al uso de certificados SSL/
TLS con CloudFront. Estas cuotas se aplican ú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 con HTTPS entre lectores y CloudFront.

Cantidad máxima de certificados por distribución de CloudFront

Puede asociar un máximo de un certificado SSL/TLS con 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 una


de las siguientes ubicaciones:

155
Amazon CloudFront Guía para desarrolladores
Cuotas al usar certificados SSL/TLS con CloudFront
(solo HTTPS entre lectores y CloudFront)

• AWS Certificate Manager: para la cuota actual del número de certificados de ACM, consulte Cuotas
en la Guía del usuario de AWS Certificate Manager. La cuota mostrada es un total que incluye los
certificados que aprovisione mediante ACM y los que importe a ACM.
• Almacén de certificados de IAM: para la cuota (antes denominada límite) actual en cuanto al número
de certificados que puede cargar en el almacén de certificados de IAM de una cuenta de AWS,
consulte Límites de IAM y STS en la Guía del usuario de IAM. Puede solicitar una cuota más alta en
la consola de administración de AWS.
Cantidad máxima de certificados por cuenta de AWS (solo direcciones IP dedicadas)

Si desea atender solicitudes HTTPS a través de direcciones IP dedicadas, tenga en cuenta lo


siguiente:
• De forma predeterminada, CloudFront le concede permiso para utilizar dos certificados con la
cuenta de AWS, uno para uso diario y otro para cuando necesite rotar certificados para varias
distribuciones.
• Si necesita más de dos certificados SSL/TLS personalizados para la cuenta de AWS, vaya al Centro
de soporte y cree un caso. 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.
Uso del mismo certificado para distribuciones de CloudFront creadas con distintas cuentas de AWS

Si utiliza una entidad de certificación de terceros y si desea utilizar el mismo certificado con varias
distribuciones de CloudFront creadas con diferentes cuentas de AWS, debe importar el certificado a
ACM o cargarlo en el almacén de certificados de IAM una vez por cada cuenta de AWS.

Si utiliza certificados proporcionados por ACM, no puede configurar CloudFront para utilizar
certificados creados por una cuenta de AWS diferente.
Utilizar el mismo certificado para CloudFront y para otros servicios de AWS (solo almacén de certificados
de IAM)

Si ha comprado un certificado de una autoridad de certificación de confianza como Comodo DigiCert


o Symantec, puede utilizar el mismo certificado para CloudFront y para otros servicios de AWS. Si
importa el certificado a ACM, solo es necesario importarlo una vez para utilizarlo con varios servicios
de AWS.

Si utiliza certificados proporcionados por ACM, estos se almacenan en ACM.


Uso del mismo certificado para varias distribuciones de CloudFront

Puede utilizar el mismo certificado para una o todas las distribuciones de CloudFront que utilice para
atender solicitudes HTTPS. Tenga en cuenta lo siguiente:
• Puede utilizar el mismo certificado tanto para atender solicitudes mediante direcciones IP dedicadas
como para proporcionar solicitudes con SNI.
• Puede asociar solo un certificado a cada distribución.
• Cada distribución debe incluir uno o varios nombres de dominio alternativos que también
aparecerán en los campos Common Name o Subject Alternative Names del certificado.
• Si está atendiendo solicitudes HTTPS mediante direcciones IP dedicadas y ha creado todas
sus distribuciones desde la misma cuenta de AWS, puede reducir significativamente sus costos
utilizando el mismo certificado para todas las distribuciones. CloudFront aplica cargos por cada
certificado, no por cada distribución.

Por ejemplo, suponga que crea tres distribuciones desde la misma cuenta de AWS y que utiliza el
mismo certificado para las tres distribuciones. Se le aplicará solo un cargo por el uso de direcciones
IP dedicadas.

Sin embargo, si atiende solicitudes HTTPS con direcciones IP dedicadas y con el mismo certificado
para crear distribuciones de CloudFront en diferentes cuentas de AWS, a cada cuenta se le aplica
el cargo de utilizar direcciones IP dedicadas. Por ejemplo, si crea tres distribuciones desde tres

156
Amazon CloudFront Guía para desarrolladores
Configurar nombres de dominio alternativos y HTTPS

cuentas de AWS diferentes y utiliza el mismo certificado para las tres distribuciones, a cada cuenta
se cobra la tarifa completa de uso de direcciones IP dedicadas.

Configurar nombres de dominio alternativos y HTTPS


Para utilizar nombres de dominio alternativos en las URL de los archivos y utilizar HTTPS entre los lectores
y CloudFront, realice los procedimientos aplicables.

Temas
• Solicitar permiso para utilizar tres o más certificados SSL/TLS de direcciones IP dedicadas (p. 157)
• Obtener un certificado SSL/TLS (p. 157)
• Importar un certificado SSL/TLS (p. 158)
• Actualización de la distribución de CloudFront (p. 158)

Solicitar permiso para utilizar tres o más certificados SSL/TLS de


direcciones IP dedicadas
Si necesita permiso para asociar de forma permanente tres o más certificados de IP dedicada SSL/TLS
con CloudFront, realice el siguiente procedimiento. Para obtener detalles acerca de solicitudes HTTPS,
consulte Elegir cómo CloudFront atiende las solicitudes HTTPS (p. 150).
Note

Este es el procedimiento que se debe seguir para utilizar tres o más certificados de direcciones
IP dedicadas en las distribuciones de CloudFront. El valor predeterminado es 2. Tenga en cuenta
que no puede vincular más de un certificado SSL a una distribución.
Solo puede asociar un único certificado SSL/TLS a una distribución de CloudFront cada vez. Este
es el total de certificados SSL de IP dedicadas que puede utilizar en todas las distribuciones de
CloudFront.

Para solicitar permiso para utilizar tres o más certificados con una distribución de CloudFront

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


Obtenga un certificado SSL/TLS si aún no dispone de uno. Para obtener más información, consulte la
documentación aplicable:

• Para utilizar un certificado proporcionado por AWS Certificate Manager (ACM), consulte la Guía
del usuario de AWS Certificate Manager. A continuación, vaya a Actualización de la distribución de
CloudFront (p. 158).
Note

Le recomendamos que utilice ACM para aprovisionar, administrar e implementar los certificados
SSL/TLS en los recursos administrados de AWS. Debe solicitar un certificado de ACM en la
región EE. UU. Este (Norte de Virginia).
• Para obtener un certificado de una entidad de certificación (CA) de terceros, consulte la documentación
que proporciona. Cuando tenga el certificado, continúe con el siguiente procedimiento.

157
Amazon CloudFront Guía para desarrolladores
Configurar nombres de dominio alternativos y HTTPS

• Para crear un certificado autofirmado, consulte la documentación de la aplicación que está utilizando
para crear y firmar el certificado. A continuación, pase al siguiente procedimiento.

Importar un certificado SSL/TLS


Si ha obtenido el certificado de una entidad de certificación de terceros, importe el certificado a ACM o
cárguelo en el almacén de certificados de IAM:

ACM (recomendado)

ACM le permite importar certificados de terceros desde la consola de ACM y de forma programada.
Para obtener información sobre la importación de un certificado a ACM, consulte Importación de
certificados a AWS Certificate Manager en la Guía del usuario de AWS Certificate Manager. Debe
importar el certificado en la región EE. UU. Este (Norte de Virginia).
Almacén de certificados de IAM

(No recomendado) Utilice el siguiente comando de la CLI de AWS para cargar el certificado de
terceros en el almacén de certificados de IAM.

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 con la misma
cuenta de AWS que utilizó para crear la distribución de CloudFront.
• Parámetro --path: al cargar el certificado en 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 diferentes de los valores asociados con los certificados existentes.
• Uso de la consola de CloudFront: el valor que especifique para el parámetro --server-
certificate-name en la CLI de AWS, por ejemplo, myServerCertificate, aparece en la lista
SSL Certificate (Certificado SSL) de la consola de CloudFront.
• Con la API de CloudFront: anote la cadena alfanumérica que devuelve la CLI de AWS, por
ejemplo, AS1A2M3P4L5E67SIIXR3J. Este es el valor que se especifica en el elemento
IAMCertificateId. No es necesario el ARN de IAM, que también devuelve la CLI.

Para obtener más información acerca de la CLI de AWS, consulte la Guía del usuario de la interfaz de
línea de comandos de AWS y la Referencia de comandos de la CLI de AWS.

Actualización de la distribución de CloudFront


Para actualizar la configuración de su distribución, realice el siguiente procedimiento:

Para configurar la 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.

158
Amazon CloudFront Guía para desarrolladores
Configurar nombres de dominio alternativos y HTTPS

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 con
comas o escriba uno por línea.
SSL Certificate

Elija Custom SSL Certificate (Certificado SSL personalizado) y seleccione un certificado de la


lista.

Aquí se enumeran hasta 100 certificados. Si tiene más de 100 certificados y no ve el certificado
que desea añadir, puede escribir un ARN de certificado en el campo para elegirlo.

Si ha cargado un certificado al almacén de certificados de IAM pero no está en la lista y no puede


elegirlo escribiendo el nombre en el campo, revise el procedimiento Importar un certificado SSL/
TLS (p. 158) para confirmar que el certificado se ha cargado correctamente.
Important

Después de asociar el certificado SSL/TLS con la distribución de CloudFront, no se


elimina el certificado de ACM o del almacén de certificados de IAM hasta que se elimina
el certificado de todas las distribuciones y hasta que el estado de las distribuciones ha
cambiado a Deployed (Implementado).
Cliente admitidos

Elija la opción aplicable:


• Todos los clientes: CloudFront ofrece el 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 los Precios de
Amazon CloudFront.
• Only Clients that Support Server Name Indication (SNI) (Solo los clientes que admiten
indicación de nombre de servidor) (SNI): los navegadores antiguos u otros clientes que no
admitan SNI deben usar otro método para obtener acceso a su contenido.

Para obtener más información, consulte Elegir cómo CloudFront atiende las solicitudes
HTTPS (p. 150).
5. Elija Yes, Edit (Sí, editar).
6. Configure CloudFront para que solicite HTTPS entre lectores y CloudFront:

a. En la pestaña Behaviors (Comportamientos), elija el comportamiento de la caché que desee


actualizar y después elija Edit (Editar).
b. Especifique uno de los siguientes valores en Viewer Protocol Policy (Política de protocolo del
espectador):

Redireccionamiento de HTTP a HTTPS

Los espectadores pueden usar tanto el protocolo HTTP como el HTTPS, pero las solicitudes
HTTP se redirigirán automáticamente a solicitudes HTTPS. CloudFront devuelve el código de
estado HTTP 301 (Moved Permanently) junto con la nueva URL HTTPS. A continuación,
el lector vuelve a enviar la solicitud a CloudFront través de la URL HTTPS.
Important

CloudFront no redirige las solicitudes DELETE, OPTIONS, PATCH, POST ni PUT de


HTTP a HTTPS. Si configura un comportamiento de la caché para que redirija a
HTTPS, CloudFront responde a solicitudes HTTP DELETE, OPTIONS, PATCH, POST

159
Amazon CloudFront Guía para desarrolladores
Determinar el tamaño de la clave
pública en un certificado SSL/TLS

o PUT para ese comportamiento de la caché con el código de estado HTTP 403
(Forbidden).

Cuando un lector realiza una solicitud HTTP que se redirige a una solicitud HTTPS, se
aplican cargos de CloudFront a ambas solicitudes. En el caso de la solicitud HTTP, el cargo
es solo para la solicitud y para los encabezados que CloudFront devuelve al lector. En el
caso de la solicitud HTTPS, el cargo es por la solicitud y por los encabezados y el archivo
que el origen devuelve.
Solo HTTPS

Los espectadores pueden obtener acceso a su contenido solo si utilizan HTTPS. Si un lector
envía una solicitud HTTP en lugar de una solicitud HTTPS, CloudFront devuelve el código de
estado HTTP 403 (Forbidden) y no devuelve el archivo.
c. Elija Yes, Edit (Sí, editar).
d. Repita los pasos de la "a" a la "c" para cada comportamiento de la caché adicional para el que
desee exigir HTTPS entre los lectores y CloudFront.
7. Confirme lo siguiente antes de utilizar la configuración actualizada en un entorno de producción:

• El patrón de ruta de cada comportamiento de la caché es aplicable únicamente a las solicitudes en


las que desea que los espectadores utilicen HTTPS.
• Los comportamientos de la caché se muestran en el orden en que desee que CloudFront los evalúe.
Para obtener más información, consulte Patrón de ruta (p. 53).
• Los comportamientos de la caché son solicitudes de redirección hacia los orígenes correctos.

Determinar el tamaño de la clave pública en un


certificado SSL/TLS
Al utilizar nombres de dominio alternativos de CloudFront y HTTPS, el tamaño máximo de la clave pública
en un certificado SSL/TLS es 2048 bits. (Este es el tamaño de la clave, no es la cantidad de caracteres de
la clave pública). Si utiliza AWS Certificate Manager para los certificados, aunque ACM 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 de resultados:

Public-Key: (2048 bit)

Ampliar las cuotas de certificados SSL/TLS


Existen cuotas (anteriormente conocidas como límites) en el número de certificados SSL/TLS que puede
importar a AWS Certificate Manager o cargar en AWS Identity and Access Management. También hay
una cuota en cuanto a la cantidad de certificados SSL/TLS que puede utilizar con una cuenta de AWS al

160
Amazon CloudFront Guía para desarrolladores
Ampliar las cuotas de certificados SSL/TLS

configurar CloudFront para atender solicitudes HTTPS con direcciones IP dedicadas. Sin embargo, puede
solicitar una ampliación de dichas cuotas.

Temas
• Certificados que puede importar a ACM (p. 161)
• Certificados que puede cargar en IAM (p. 161)
• Certificados que puede usar con direcciones IP dedicadas (p. 161)

Certificados que puede importar a ACM


Para obtener información sobre la cantidad de certificados que puede importar a ACM, consulte Cuotas en
la Guía del usuario de AWS Certificate Manager.

Para solicitar una cuota más alta, cree un caso en el Centro de soporte de AWS. Especifique los valores
siguientes:

• Acepte el valor predeterminado de Service limit increase (Aumento del límite del servicio).
• Limit type (Tipo de límite): elija Certificate Manager.
• En Region (Región), elija la región de AWS a la que desea importar certificados.
• En Limit (Límite), elija Number of ACM Certificates (Número de certificados de ACM).

A continuación, rellene el resto del formulario y envíelo.

Certificados que puede cargar en IAM


Para obtener información sobre la cuota (antes denominada límite) del número de certificados que puede
cargar en IAM, consulte Límites de IAM y STS en la Guía del usuario de IAM.

Para solicitar una cuota más alta, cree un caso en el Centro de soporte de AWS. Especifique los valores
siguientes:

• Acepte el valor predeterminado de Service limit increase (Aumento del límite del servicio).
• Limit type (Tipo de límite): elija Certificate Manager.
• En Region (Región), elija la región de AWS a la que desea importar certificados.
• En Limit (Límite), elija Server Certificate Limit (IAM) (Límite de certificados del servidor (IAM)).

A continuación, rellene el resto del formulario y envíelo.

Certificados que puede usar con direcciones IP dedicadas


Para consultar la cuota (antes denominada límite) de certificados SSL que puede utilizar por cada cuenta
de AWS si atiende solicitudes HTTPS utilizando direcciones IP dedicadas, consulte Cuotas en certificados
SSL (p. 523).

Para solicitar una cuota más alta, cree un caso en el Centro de soporte de AWS. Especifique los valores
siguientes:

• Acepte el valor predeterminado de Service limit increase (Aumento del límite del servicio).
• En Limit Type (Tipo de límite), elija CloudFront Distributions (Distribuciones de CloudFront).
• En Limit (Límite), elija Dedicated IP SSL Certificate Limit per Account (Límite de certificados SSL con IP
dedicadas por cuenta).

A continuación, rellene el resto del formulario y envíelo.

161
Amazon CloudFront Guía para desarrolladores
Rotar certificados SSL/TLS

Rotar certificados SSL/TLS


Si utiliza certificados proporcionados por AWS Certificate Manager (ACM), no es necesario rotar
certificados SSL/TLS. ACM administra las renovaciones de los certificados por usted. Para obtener más
información, consulte Renovación administrada en la Guía del usuario de AWS Certificate Manager.
Note

ACM no administra renovaciones de certificados que adquiera de autoridades de certificación de


terceros y que después importe a ACM.

Si utiliza una autoridad de certificación de terceros y ha importado certificados a ACM (recomendado) o los
ha cargado en el almacén de certificados de IAM, debe sustituir ocasionalmente un certificado por otro. Por
ejemplo, debe sustituir un certificado cuando se aproxime la fecha de vencimiento del certificado.
Important

Si configura CloudFront para atender solicitudes HTTPS a través de direcciones IP dedicadas,


es posible que se aplique un cargo prorrateado adicional por uso de uno o varios certificados
adicionales mientras rota certificados. Le recomendamos actualizar sus distribuciones cuanto
antes para minimizar los cargos adicionales.

Para rotar certificados, realice el siguiente procedimiento. Los espectadores pueden seguir obteniendo
acceso a su contenido mientras rota certificados y también una vez completado el proceso.

Para rotar certificados SSL/TLS

1. Ampliar las cuotas de certificados SSL/TLS (p. 160) para determinar si necesita permiso para utilizar
más certificados SSL. En caso afirmativo, solicite el permiso y espere hasta que se le conceda antes
de continuar con el paso 2.
2. Importe el nuevo certificado a ACM o cárguelo a IAM. Para obtener más información, consulte
Importación de un certificado SSL/TLS en la Guía para desarrolladores de Amazon CloudFront.
3. Actualice sus distribuciones de una en una para utilizar el nuevo certificado. Para obtener más
información, consulte Descripción, consulta y actualización de distribuciones de CloudFront en la Guía
para desarrolladores de Amazon CloudFront.
4. Después de actualizar todas las distribuciones de CloudFront, puede eliminar el certificado anterior de
ACM o IAM (opcional).
Important

No elimine un certificado SSL/TLS hasta eliminarlo de todas las distribuciones y hasta que el
estado de las distribuciones que ha actualizado haya cambiado a Deployed.

Volver de un certificado SSL/TLS personalizado al


certificado de CloudFront predeterminado
Si ha configurado CloudFront para utilizar HTTPS entre lectores y CloudFront y ha configurado CloudFront
para utilizar un certificado SSL/TLS personalizado, puede cambiar la configuración para utilizar el
certificado SSL/TLS de CloudFront predeterminado. El proceso depende de si ha utilizado la distribución
para 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 Actualización de una distribución (p. 71).
• Si ha usado su distribución para distribuir el contenido, debe crear una nueva distribución de CloudFront
y cambiar las URL de los archivos para reducir o eliminar la cantidad de tiempo que el contenido no va a
estar disponible. Para ello, realice el siguiente procedimiento.

162
Amazon CloudFront Guía para desarrolladores
Cambiar de un certificado SSL/TLS personalizado
con direcciones IP dedicadas a SNI

Para volver al certificado de CloudFront predeterminado

1. Cree una nueva distribución de CloudFront con la configuración deseada. En SSL Certificate
(Certificado SSL), elija Default CloudFront Certificate (*.cloudfront.net) (Certificado de CloudFront
predeterminado [*.cloudfront.net]).

Para obtener más información, consulte Pasos para crear una distribución (Información
general) (p. 41).
2. En el caso de los archivos distribuidos con CloudFront, actualice las URL en la aplicación
para que utilicen el nombre de dominio que CloudFront ha asignado a la nueva distribución.
Por ejemplo, cambie https://www.example.com/images/logo.png a https://
d111111abcdef8.cloudfront.net/images/logo.png.
3. Elimine la distribución asociada con un certificado SSL/TLS personalizado o actualice la distribución
para cambiar el valor de SSL Certificate (Certificado SSL) a Default CloudFront Certificate
(*.cloudfront.net) (Certificado de CloudFront predeterminado [*.cloudfront.net]). Para obtener más
información, consulte Actualización de una distribución (p. 71).
Important

Hasta que complete este paso, AWS seguirá acumulando cargos por utilizar un certificado
SSL/TLS personalizado.
4. Elimine su certificado SSL/TLS personalizado (opcional).

a. Ejecute el comando de la CLI de AWS list-server-certificates para obtener el ID de


certificado del certificado que desea eliminar. Para obtener más información, consulte list-server-
certificates en la Referencia de comandos de la CLI de AWS.
b. Ejecute el comando de la CLI de AWS delete-signing-certificate para eliminar el
certificado. Para obtener más información, consulte delete-signing-certificate en la Referencia de
comandos de la CLI de AWS.

Cambiar de un certificado SSL/TLS personalizado con


direcciones IP dedicadas a SNI
Si 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 a
direcciones 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 lectores que admiten SNI.
Los lectores pueden acceder al contenido antes y después del cambio, así como mientras el
cambio se propaga a las ubicaciones de borde de CloudFront. Los espectadores que no admiten
SNI no podrán obtener acceso a su contenido tras el cambio. Para obtener más información,
consulte Elegir cómo CloudFront atiende las solicitudes HTTPS (p. 150).

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 (Configuración de distribución).
4. En la pestaña General, seleccione Edit.
5. Cambie la configuración de Custom SSL Client Support (Compatibilidad con el cliente SSL
personalizado) a Only Clients that Support Server Name Indication (SNI) (Solo los clientes que
admitan Indicación de nombre de servidor (SNI)).

163
Amazon CloudFront Guía para desarrolladores
Restricción de contenido con
URL firmadas y cookies firmadas

6. Elija Yes, Edit (Sí, editar).

Distribución de contenido privado con URL firmadas


y cookies firmadas
Muchas empresas que distribuyen contenido a través de Internet desean restringir el acceso a
documentos, información corporativa, transmisiones multimedia o contenido destinado a una selección
de usuarios; por ejemplo, a los usuarios que hayan pagado una determinada tarifa. Para ofrecer este
contenido privado de forma segura a través de CloudFront, puede hacer lo siguiente:

• Solicite que los usuarios accedan al contenido privado mediante URL firmadas o cookies firmadas
especiales de CloudFront.
• Solicite que los usuarios accedan al contenido a través de URL de CloudFront, no URL que accedan al
contenido directamente en el servidor de origen (por ejemplo, Amazon S3 o un servidor HTTP privado).
No es necesario solicitar URL de CloudFront, pero lo recomendamos para impedir que los usuarios
eludan las restricciones que especifique en URL firmadas o cookies firmadas.

Temas
• Información general acerca de la distribución de contenido privado (p. 164)
• Lista de tareas para la distribución de contenido privado (p. 166)
• Especificación de los signatarios que pueden crear URL firmadas y cookies firmadas (p. 166)
• Elegir entre URL firmadas y cookies firmadas (p. 173)
• Uso de URL firmadas (p. 174)
• Uso de cookies firmadas (p. 188)
• Uso de comandos de Linux y OpenSSL para codificación y cifrado base64 (p. 204)
• Ejemplos de código para la creación de una firma para una URL firmada (p. 204)

Información general acerca de la distribución de


contenido privado
Puede controlar el acceso de los usuarios al contenido privado de dos maneras:

• Restringir el acceso a los archivos en las cachés de CloudFront (p. 164).


• Restrinja el acceso a los archivos en su origen de la siguiente manera:
• Configure una identidad de acceso de origen (OAI) para el bucket de Amazon S3 (p. 165).
• Configure encabezados personalizados para un servidor HTTP privado (un origen
personalizado) (p. 165).

Restricción del acceso a los archivos en cachés de CloudFront


Puede configurar CloudFront para que solicite que los usuarios accedan a los archivos mediante URL
firmadas o cookies firmadas. Después, deberá desarrollar la aplicación para crear y distribuir URL firmadas
para los usuarios autenticados o para enviar encabezados Set-Cookie que establecen cookies firmadas
para usuarios autenticados. (También puede crear URL firmadas manualmente para ofrecer a unos pocos
usuarios acceso largo plazo a un número reducido de archivos).

Si crea URL o cookies firmadas para controlar el acceso a sus archivos, puede especificar las siguientes
restricciones:

164
Amazon CloudFront Guía para desarrolladores
Información general acerca de la
distribución de contenido privado

• 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 el algoritmo hash y se firma con la
clave privada de un par de claves públicas-privadas. Cuando alguien utiliza una URL firmada o una cookie
firmada para acceder a un archivo, CloudFront compara las partes firmadas y sin firmar de la URL o de la
cookie. Si no coinciden, CloudFront no envía el archivo.

Debe utilizar RSA-SHA1 para firmar URL o cookies. CloudFront no acepta otros algoritmos.

Restricción del acceso a archivos en buckets de Amazon S3


Opcionalmente, puede proteger el contenido del bucket de Amazon S3 para que los usuarios puedan
acceder a él a través de CloudFront pero no puedan acceder directamente a él mediante las URL de
Amazon S3. Esto evita que se eluda CloudFront y se use la URL de Amazon S3 para obtener el contenido
cuyo acceso desea restringir. Este paso no es necesario para utilizar URL firmadas, pero recomendamos
seguirlo.

Para solicitar que los usuarios accedan al contenido a través de URL de CloudFront, realice las siguientes
tareas:

• Cree un usuario de CloudFront especial denominado identidad de acceso de origen y asócielo con la
distribución de CloudFront.
• Conceda a la identidad de acceso de origen permiso para leer los archivos del bucket.
• Quite a todos los demás el permiso para usar URL de Amazon S3 para leer los archivos.

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

Restricción del acceso a archivos en orígenes personalizados


Si utiliza un origen personalizado, tiene la opción de configurar encabezados personalizados para restringir
el acceso. Para que CloudFront obtenga los archivos de un origen personalizado, debe ser posible el
acceso de CloudFront a los archivos mediante una solicitud HTTP estándar (o HTTPS). Sin embargo,
mediante el uso de encabezados personalizados, puede restringir aún más el acceso al contenido para
que los usuarios puedan acceder al mismo solo a través de CloudFront, no directamente. Este paso no es
necesario para utilizar URL firmadas, pero recomendamos seguirlo.

Para solicitar que los usuarios accedan al contenido a través de CloudFront, cambie la siguiente
configuración de las distribuciones de CloudFront:

Encabezados personalizados de origen

Configure CloudFront para reenviar encabezados personalizados al origen. Consulte Configurar


CloudFront para agregar encabezados personalizados a solicitudes de origen (p. 320).
Viewer Protocol Policy

Configure la distribución para solicitar a los lectores que utilicen HTTPS para acceder a CloudFront.
Consulte Viewer Protocol Policy (p. 55).
Origin Protocol Policy

Configure la distribución para solicitar a CloudFront que utilice el mismo protocolo que los lectores
para reenviar solicitudes al origen. Consulte Origin Protocol Policy (p. 50).

165
Amazon CloudFront Guía para desarrolladores
Lista de tareas para la distribución de contenido privado

Después de haber realizado estos cambios, actualice la aplicación en el origen personalizado para aceptar
solo solicitudes que incluyan los encabezados personalizados que ha configurado para que CloudFront los
envíe.

La combinación de Viewer Protocol Policy (Política de protocolo del lector) y Origin Protocol Policy
(Política de protocolo de origen) garantiza que los encabezados personalizados se cifren en tránsito. Sin
embargo, le recomendamos realizar periódicamente las siguientes acciones para rotar los encabezados
personalizados que CloudFront reenvía al origen:

1. Actualice la distribución de CloudFront para comenzar a reenviar un nuevo encabezado al origen


personalizado.
2. Actualice la aplicación para aceptar el nuevo encabezado a modo de confirmación de que la solicitud
proviene de CloudFront.
3. Cuando las solicitudes ya no incluyan el encabezado que ha reemplazado, actualice la aplicación
para que ya no acepte el encabezado anterior a modo de confirmación de que la solicitud proviene de
CloudFront.

Lista de tareas para la distribución de contenido


privado
Para configurar CloudFront para que distribuya contenido privado, realice las siguientes tareas:

1. Solicite a los usuarios que accedan al contenido solo a través de CloudFront (opcional pero
recomendado). El método que utilice depende de si utiliza Amazon S3 u orígenes personalizados:

• Amazon S3: consulte Restricción del acceso a contenido de Amazon S3 utilizando una identidad de
acceso de origen (p. 223).
• Origen personalizado: consulte Restricción del acceso a archivos en orígenes
personalizados (p. 165).

Los orígenes personalizados incluyen Amazon EC2, buckets de Amazon S3 configurados como
puntos de enlace del sitio web, Elastic Load Balancing y sus propios servidores web HTTP.
2. Especifique los grupos de claves de confianza o los signatarios de confianza que desea utilizar para
crear URL firmadas o cookies firmadas. Le recomendamos que utilice grupos de claves de confianza.
Para obtener más información, consulte Especificación de los signatarios que pueden crear URL
firmadas y cookies firmadas (p. 166).
3. Escriba la aplicación para responder a las solicitudes de los usuarios autorizados con URL firmadas
o con encabezados Set-Cookie que establezcan cookies firmadas. Siga los pasos en uno de los
siguientes temas:

• Uso de URL firmadas (p. 174)


• Uso de cookies firmadas (p. 188)

Si no está seguro de qué método utilizar, consulte Elegir entre URL firmadas y cookies
firmadas (p. 173).

Especificación de los signatarios que pueden crear


URL firmadas y cookies firmadas
Temas

166
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios

• Elegir entre grupos de claves de confianza (recomendado) y cuentas de AWS (p. 167)
• Creación de pares de claves para los signatarios (p. 168)
• Volver a formatear la clave privada (solo .NET y Java) (p. 171)
• Agregar un signatario a una distribución (p. 171)
• Rotación de pares de claves (p. 173)

Para crear URL firmadas o cookies firmadas, necesita un signatario. Un signatario es un grupo de
claves de confianza que se crea en CloudFront o una cuenta de AWS que contiene un par de claves
de CloudFront. Le recomendamos que utilice grupos de claves de confianza con URL firmadas y
cookies firmadas. Para obtener más información, consulte Elegir entre grupos de claves de confianza
(recomendado) y cuentas de AWS (p. 167).

El signatario tiene dos fines:

• Tan pronto como agregue el signatario a la distribución, CloudFront comienza a requerir que los lectores
utilicen URL firmadas o cookies firmadas para acceder a los archivos.
• Al crear URL firmadas o cookies firmadas, se utiliza la clave privada del par de claves del signatario
para firmar una parte de la URL o la cookie. Cuando alguien solicita un archivo restringido, CloudFront
compara la firma de la URL o la cookie con la URL o la cookie sin firmar, para verificar que no se ha
manipulado. CloudFront también verifica que la URL o la cookie sean válidas, es decir, por ejemplo, que
la fecha y la hora de vencimiento no han pasado todavía.

Cuando se especifica un signatario, también se especifican indirectamente los archivos que requieren URL
firmadas o cookies firmadas al agregar el signatario a un comportamiento de la caché. Si la distribución
solo dispone de un comportamiento de la caché, los lectores deben utilizar URL o cookies firmadas para
acceder a cualquier archivo de la distribución. Si crea varios comportamientos de la caché y agrega
signatarios a algunos de ellos pero no a otros, puede exigir que los lectores utilicen URL o cookies
firmadas para acceder a algunos archivos y no a otros.

Para especificar los signatarios (las claves privadas) autorizados para crear URL firmadas o cookies
firmadas y para agregar los signatarios a la distribución de CloudFront, realice las siguientes tareas:

1. Decida si utilizar un grupo de claves de confianza o una cuenta de AWS como signatario.
Recomendamos utilizar un grupo de claves de confianza. Para obtener más información, consulte
Elegir entre grupos de claves de confianza (recomendado) y cuentas de AWS (p. 167).
2. Para el signatario que eligió en el paso 1, cree un par de claves privadas-públicas. Para obtener más
información, consulte Creación de pares de claves para los signatarios (p. 168).
3. Si utiliza .NET o Java para crear URL firmadas o cookies firmadas, vuelva a formatear la clave
privada. Para obtener más información, consulte Volver a formatear la clave privada (solo .NET y
Java) (p. 171).
4. En la distribución para la que va a crear URL firmadas o cookies firmadas, especifique el signatario.
Para obtener más información, consulte Agregar un signatario a una distribución (p. 171).

Elegir entre grupos de claves de confianza (recomendado) y


cuentas de AWS
Para utilizar URL firmadas o cookies firmadas, necesita un signatario. Un signatario es un grupo de
claves de confianza que se crea en CloudFront o una cuenta de AWS que contiene un par de claves de
CloudFront. Se recomienda utilizar grupos de claves de confianza, por los siguientes motivos:

• Con los grupos de claves de CloudFront, no es necesario utilizar el usuario raíz de la cuenta de AWS
para administrar las claves públicas de las URL firmadas y las cookies firmadas de CloudFront. Las
prácticas recomendadas de AWS recomiendan no utilizar el usuario raíz cuando no sea necesario.

167
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios

• Con los grupos de claves de CloudFront, puede administrar claves públicas, grupos de claves y
signatarios de confianza mediante la API de CloudFront. Puede usar la API para automatizar la creación
de claves y la rotación de claves. Cuando utiliza el usuario raíz de AWS, debe utilizar la consola de
administración de AWS para administrar los pares de claves de CloudFront, de modo que no puede
automatizar el proceso.
• Dado que puede administrar grupos de claves con la API de CloudFront, también puede utilizar las
políticas de permisos de AWS Identity and Access Management (IAM) para limitar lo que los distintos
usuarios pueden hacer. Por ejemplo, puede permitir a los usuarios cargar claves públicas, pero no
eliminarlas. También puede permitir que los usuarios eliminen claves públicas, pero solo cuando se
cumplen ciertas condiciones, como el uso de la autenticación multifactor, el envío de la solicitud desde
una red determinada o el envío de la solicitud dentro de un intervalo de fecha y hora determinado.

Cuando utiliza el usuario raíz de la cuenta de AWS para administrar pares de claves de CloudFront,
no puede restringir lo que puede hacer el usuario raíz ni las condiciones en las que puede hacerlo. No
puede aplicar políticas de permisos de IAM al usuario raíz, que es una de las razones por las que las
prácticas recomendadas de AWS recomiendan no usar el usuario raíz.
• Con los grupos de claves de CloudFront, puede asociar un número mayor de claves públicas con la
distribución de CloudFront, lo que le concede más flexibilidad en la forma de usar y administrar las
claves públicas. De forma predeterminada, puede asociar hasta cuatro grupos de claves con una sola
distribución y puede tener hasta cinco claves públicas en un grupo de claves.

Cuando utiliza el usuario raíz para administrar pares de claves de CloudFront, solo puede tener hasta
dos pares de claves activos de CloudFront por cuenta de AWS.

Creación de pares de claves para los signatarios


Cada signatario que utilice para crear URL firmadas o cookies firmadas de CloudFront debe tener un
par de claves públicas-privadas. El signatario utiliza la clave privada para firmar la URL o las cookies y
CloudFront utiliza la clave pública para comprobar la firma.

La forma en que se crea un par de claves depende de si se utiliza un grupo de claves de confianza como
el signatario (recomendado) o un par de claves de CloudFront. Para obtener más información, consulte las
siguientes secciones. El par de claves que cree debe cumplir los siguientes requisitos:

• Debe ser un par de claves SSH-2 RSA.


• Debe encontrarse en formato PEM codificado en Base64.
• Debe ser un par de claves de 2048 bits.

Para ayudar a proteger las aplicaciones, le recomendamos que cambie los pares de claves
periódicamente. Para obtener más información, consulte Rotación de pares de claves (p. 173).

Crear un par de claves para un grupo de claves de confianza (recomendado)


Para crear un par de claves para un grupo de claves de confianza, realice los siguientes pasos:

1. Cree el par de claves públicas-privadas.


2. Cargue la clave pública en CloudFront.
3. Agregue la clave pública a un grupo de claves de CloudFront.

Para obtener más información, consulte los siguientes procedimientos.

168
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios

Para crear un par de claves


Note

En los siguientes pasos se utiliza OpenSSL como ejemplo de una forma de crear un par de
claves. Hay muchas otras formas de crear un par de claves RSA.

1. El siguiente comando de ejemplo utiliza OpenSSL para generar un par de claves RSA con una
longitud de 2048 bits y guardarlo en el archivo denominado private_key.pem.

openssl genrsa -out private_key.pem 2048

2. El archivo resultante contiene tanto la clave pública como la privada. El siguiente comando de ejemplo
extrae la clave pública del archivo denominado private_key.pem.

openssl rsa -pubout -in private_key.pem -out public_key.pem

Se carga la clave pública (en el archivo public_key.pem) más adelante, en el siguiente


procedimiento.

Para cargar la clave pública en 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 menú de navegación, elija Public keys (Claves públicas).
3. Elija Add public key (Agregar clave pública).
4. En la ventana Add public key (Agregar clave pública), haga lo siguiente:

a. En Key name (Nombre de la clave), escriba un nombre para identificar la clave pública.
b. En Key value (Valor de clave), pegue la clave pública. Si ha seguido los pasos del procedimiento
anterior, la clave pública se encuentra en el archivo denominado public_key.pem. Para copiar
y pegar el contenido de la clave pública, puede:

• Use el comando cat en la línea de comandos de macOS o Linux, así:

cat public_key.pem

Copie el resultado de ese comando y péguelo en el campo Key value (Valor de clave).
• Abra el archivo public_key.pem con un editor de texto sin formato como el Bloc de notas (en
Windows) o TextEdit (en macOS). Copie el contenido del archivo y péguelo en el campo Key
value (Valor de clave).
c. (Opcional) En Comment (Comentario), agregue un comentario para describir la clave pública.

Cuando haya terminado, elija Add (Agregar).


5. Registre el ID de la clave pública. Lo usará más adelante cuando cree URL firmadas o cookies
firmadas, como valor del campo Key-Pair-Id.

Para agregar la clave pública a un grupo de claves

1. Abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

169
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios

2. En el menú de navegación, elija Key groups (Grupos de claves).


3. Elija Add key group (Agregar grupo de claves).
4. En la página Create key group (Crear grupo de claves), haga lo siguiente:

a. En Key group name (Nombre del grupo de claves), escriba un nombre para identificar el grupo de
claves.
b. (Opcional) En Comment (Comentario), escriba un comentario para describir el grupo de claves.
c. En Public keys (Claves públicas), seleccione la clave pública que desea agregar al grupo de
claves y, a continuación, elija Add (Agregar). Repita este paso para cada clave pública que desee
agregar al grupo de claves.
5. Elija Create key group (Crear grupo de claves).
6. Registre el nombre del grupo de claves. Se utiliza más adelante para asociar el grupo de claves con
un comportamiento de la caché en una distribución de CloudFront. (En la API de CloudFront, se utiliza
el ID del grupo de claves para asociar el grupo de claves con un comportamiento de la caché).

Crear un par de claves de CloudFront (no recomendado, requiere el usuario raíz de la cuenta de
AWS)
Important

Se recomienda crear una clave pública para un grupo de claves de confianza en lugar de seguir
estos pasos. Para obtener información sobre la forma recomendada de crear claves públicas para
URL firmadas y cookies firmadas, consulte Crear un par de claves para un grupo de claves de
confianza (recomendado) (p. 168).

Puede crear un par de claves de CloudFront de las siguientes maneras:

• Cree un par de claves en la consola de administración de AWS y descargue la clave privada. Consulte el
procedimiento siguiente.
• Cree un par de claves RSA mediante una aplicación como OpenSSL y, a continuación, cargue la clave
pública en la consola de administración de AWS. Para obtener más información acerca de la creación
de un par de claves RSA, consulte Crear un par de claves para un grupo de claves de confianza
(recomendado) (p. 168).

Para crear pares de claves de CloudFront en la consola de administración de AWS

1. Inicie sesión en la consola de administración de AWS utilizando las credenciales del usuario raíz de la
cuenta de AWS.
Important

Los usuarios de IAM no pueden crear pares de claves de CloudFront. Debe iniciar sesión con
credenciales de usuario raíz para crear pares de claves.
2. Elija el nombre de la cuenta y, a continuación, elija My Security Credentials (Mis credenciales de
seguridad).
3. Elija CloudFront key pairs (Pares de claves de CloudFront).
4. Confirme que no tiene más de un par de claves activas. No se puede crear un par de claves si ya
dispone de dos pares de claves activos.
5. Elija Create New Key Pair (Crear un nuevo par de claves).
Note

También puede elegir crear su propio par de claves y cargar la clave pública. Los pares de
claves de CloudFront admiten claves de 1024, 2048 o 4096 bits.

170
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios

6. En el cuadro de diálogo Create Key Pair (Crear par de claves), elija Download Private Key File
(Descargar archivo de claves privadas) y, a continuación, guarde el archivo en el equipo.
Important

Guarde la clave privada del par de claves de CloudFront en un lugar seguro y establezca
permisos en el archivo para que solo los administradores que usted decida puedan leerlo. Si
alguien obtiene su clave privada, puede generar URL y cookies firmadas válidas y descargar
su contenido. No podrá obtener la clave privada de nuevo, por lo que si la pierde o la elimina,
deberá crear un nuevo par de claves de CloudFront.
7. Registre el ID de su par de claves. (En la consola de administración de AWS, esto se denomina
Access Key ID [ID de clave de acceso]). Lo utilizará al crear URL firmadas o cookies firmadas.

Volver a formatear la clave privada (solo .NET y Java)


Si utiliza .NET o Java para crear URL firmadas o cookies firmadas, no puede utilizar la clave privada del
par de claves en el formato PEM predeterminado para crear la firma. En su lugar, haga lo siguiente:

• .NET framework: convierte la clave privada en el formato XML que utiliza .NET Framework. Hay varias
herramientas disponibles.
• Java: convierte la clave privada en formato DER. Una forma de hacerlo es con el siguiente comando de
OpenSSL. En el siguiente comando, private_key.pem es el nombre del archivo que contiene la clave
privada con formato PEM y private_key.der es el nombre del archivo que contiene la clave privada
con formato DER después de ejecutar el comando.

openssl pkcs8 -topk8 -nocrypt -in private_key.pem -inform PEM -out private_key.der -
outform DER

Para asegurarse de que el codificador funciona correctamente, agregue el recurso JAR de la API de
criptografía Java Bouncy Castle a su proyecto y, a continuación, agregue el proveedor Bouncy Castle.

Agregar un signatario a una distribución


Un signatario es el grupo de claves de confianza (recomendado) o el par de claves de CloudFront que
puede crear URL firmadas y cookies firmadas para una distribución. Para utilizar URL firmadas o cookies
firmadas con una distribución de CloudFront, debe especificar un signatario.

Los signatarios se asocian con comportamientos de la caché. Esto le permite exigir URL firmadas o
cookies firmadas para algunos archivos y no para otros dentro de la misma distribución. Una distribución
requiere URL o cookies firmadas solo para los archivos asociados con los comportamientos de la caché
correspondientes.

Del mismo modo, un signatario solo puede firmar URL o cookies para archivos asociados con
los comportamientos de la caché correspondientes. Por ejemplo, si tiene un signatario para un
comportamiento de la caché y un signatario diferente para un comportamiento de la caché diferente,
ninguno de los dos signatarios puede crear URL o cookies firmadas para los archivos asociados con el otro
comportamiento de la caché.
Important

Antes de agregar un signatario a la distribución, haga lo siguiente:

• Defina cuidadosamente los patrones de ruta y la secuencia de los comportamientos de la caché


para no conceder a los usuarios acceso no deseado al contenido o impedir que accedan al
contenido que desea que esté disponible para todos.

171
Amazon CloudFront Guía para desarrolladores
Especificación de signatarios

Supongamos que una solicitud coincide con el patrón de ruta de dos comportamientos de la
caché. El primer comportamiento de la caché no requiere URL firmadas ni cookies firmadas y
el segundo comportamiento de la caché sí. Los usuarios podrán acceder a los archivos sin usar
URL ni cookies firmadas porque CloudFront procesa el comportamiento de la caché que está
asociado con la primera coincidencia.

Para obtener más información acerca de patones de rutas, consulte Patrón de ruta (p. 53).
• Para una distribución que ya utiliza para distribuir contenido, asegúrese de que está listo para
comenzar a generar URL firmadas y cookies firmadas antes de agregar un signatario. Cuando
se agrega un signatario, CloudFront rechaza las solicitudes que no incluyen una URL firmada o
una cookie firmada válidas.

Puede agregar signatarios a la distribución utilizando la consola de CloudFront o la API de CloudFront.

Temas
• Agregar un signatario a una distribución mediante la consola de CloudFront (p. 172)
• Agregar un signatario a una distribución mediante la API de CloudFront (p. 173)

Agregar un signatario a una distribución mediante la consola de CloudFront


En los siguientes pasos se muestra cómo agregar un grupo de claves de confianza como signatario.
También puede agregar una cuenta de AWS como signatario de confianza, pero no es recomendable.

Para agregar un signatario a una distribución mediante la consola

1. Registre el ID del grupo de claves del grupo de claves que desea utilizar como signatario de confianza.
Para obtener más información, consulte Crear un par de claves para un grupo de claves de confianza
(recomendado) (p. 168).
2. Abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.
3. Elija la distribución cuyos archivos desea proteger con URL firmadas o cookies firmadas.
Note

Para agregar un signatario a una distribución nueva, se especifica la misma configuración


que se describe en el paso 6 al crear la distribución.
4. Elija la pestaña Behaviors (Comportamientos).
5. Seleccione el comportamiento de caché cuyo patrón de ruta coincida con los archivos que desea
proteger con URL firmadas o cookies firmadas y, a continuación, elija Edit (Editar).
6. En la página Edit Behavior (Editar comportamiento), haga lo siguiente:

a. En Restrict Viewer Access (Use Signed URLs or Signed Cookies) (Restringir el acceso a lectores
[mediante URL o cookies firmadas]), elija Yes (Sí).
b. En Trusted Key Groups or Trusted Signer (Grupos de claves de confianza o signatario de
confianza), elija Trusted Key Groups (Grupos de claves de confianza).
c. En Trusted Key Groups (Grupos de claves de confianza), elija el grupo de claves que desea
agregar y, a continuación, elija Add (Agregar). Repita el procedimiento si desea agregar más de
un grupo de claves.
7. Elija Yes, Edit (Sí, Editar) para actualizar el comportamiento de la caché.

172
Amazon CloudFront Guía para desarrolladores
Elegir entre URL firmadas y cookies firmadas

Agregar un signatario a una distribución mediante la API de CloudFront


Puede usar la API de CloudFront para agregar un grupo de claves de confianza como signatario. Puede
agregar un signatario a una distribución existente o a una distribución nueva. En cualquier caso, deberá
especificar los valores en el elemento TrustedKeyGroups.

También puede agregar una cuenta de AWS como signatario de confianza, pero no es recomendable.

Consulte los siguientes temas en la Referencia de la API de Amazon CloudFront:

• Actualizar una distribución existente: UpdateDistribution


• Crear una nueva distribución: CreateDistribution

Rotación de pares de claves


Se recomienda rotar periódicamente (cambiar) los pares de claves para las URL firmadas y las cookies
firmadas. Para rotar pares de claves que utiliza para crear URL firmadas o cookies firmadas sin invalidar
las URL o cookies que no hayan vencido todavía, realice las siguientes tareas:

1. Cree un nuevo par de claves y agregue la clave pública a un grupo de claves. Para obtener
más información, consulte Crear un par de claves para un grupo de claves de confianza
(recomendado) (p. 168).
2. Si ha creado un nuevo grupo de claves en el paso anterior, agregue el grupo de claves a la distribución
como signatario (p. 172).
Important

No elimine ninguna clave pública existente del grupo de claves ni ningún grupo de claves de la
distribución todavía. Solo agregue los nuevos.
3. Actualice la aplicación para crear firmas con la clave privada del nuevo par de claves. Confirme que las
URL firmadas o las cookies firmadas con las nuevas claves privadas funcionan.
4. Espere hasta que pase la fecha de vencimiento de las URL o las cookies firmadas con la clave privada
anterior. A continuación, elimine la clave pública anterior del grupo de claves. Si ha creado un nuevo
grupo de claves en el paso 2, elimine el grupo de claves anterior de la distribución.

Elegir entre URL firmadas y cookies firmadas


Las URL firmadas y las cookies firmadas de CloudFront proporcionan la misma funcionalidad básica: le
permiten controlar quién puede obtener acceso al contenido. Si desea distribuir contenido privado a través
de CloudFront e intenta decidir si utilizar URL firmadas o cookies firmadas, tenga en cuenta lo siguiente.

Utilice URL firmadas en los casos siguientes:

• Si desea restringir el acceso a archivos individuales, por ejemplo, una descarga de instalación para su
aplicación.
• Si sus usuarios utilizan un cliente (por ejemplo, un cliente HTTP personalizado) que no admite cookies.

Utilice cookies firmadas en los casos siguientes:

• Si desea proporcionar acceso a varios archivos restringidos (por ejemplo, a todos los archivos de un
vídeo en formato HLS o a todos los archivos del área de suscriptores de un sitio web).
• Si no quiere cambiar las URL actuales.

173
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

Si en la actualidad no utiliza URL firmadas y si sus URL (sin firmar) contienen cualquiera de los siguientes
parámetros de cadenas de consulta, no puede utilizar cookies firmadas ni URL firmadas:

• Expires
• Policy
• Signature
• Key-Pair-Id

CloudFront asume que las URL que contienen cualquiera de los parámetros de cadenas de consulta son
URL firmadas y, por lo tanto, no examina las cookies firmadas.

Uso de URL firmadas y cookies firmadas


Las URL firmadas tienen prioridad sobre las cookies firmadas. Si utiliza URL firmadas y cookies firmadas
para controlar el acceso a los mismos archivos y un lector utiliza una URL firmada para solicitar un archivo,
CloudFront determina si debe devolver el objeto al lector basándose únicamente en la URL firmada.

Uso de URL firmadas


Temas
• Elegir entre políticas predefinidas y personalizadas para URL firmadas (p. 174)
• Cómo funcionan las URL firmadas (p. 175)
• Elegir el tiempo de validez de las URL firmadas (p. 176)
• ¿Cuándo comprueba CloudFront la fecha y hora de vencimiento de una URL firmada? (p. 176)
• Código de ejemplo y herramientas de terceros (p. 176)
• Creación de una URL firmada mediante una política predefinida (p. 177)
• Creación de una URL firmada mediante una política personalizada (p. 181)

Una URL firmada incluye información adicional, por ejemplo, una fecha y hora de vencimiento, lo que
permite un mayor control sobre el acceso a su contenido. Esta información adicional aparece en una
instrucción de política basada en una política predefinida o personalizada. Las diferencias entre las
políticas personalizadas y las predefinidas se explican en las próximas dos secciones.
Note
Puede crear algunas URL firmadas con políticas predefinidas y crear otras con políticas
personalizadas para la misma distribución.

Elegir entre políticas predefinidas y personalizadas para URL


firmadas
Al crear una URL firmada, se escribe una instrucción de política en formato JSON que especifica las
restricciones en la URL firmada, por ejemplo, el tiempo de validez de la URL. Puede utilizar una política
predefinida o personalizada. A continuación, se presenta una comparación entre las políticas predefinidas
y las personalizadas:

Descripción Política predefinida Política


personalizada

Puede reutilizar la instrucción de la política con varios No Sí


archivos. Para reutilizar la instrucción de política, debe
utilizar caracteres comodín en el objeto Resource.
Para obtener más información, consulte Valores que

174
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

Descripción Política predefinida Política


personalizada
se especifican en la instrucción de política de una URL
firmada que utiliza una política personalizada (p. 184).)

Puede especificar la fecha y la hora a la que los usuarios No Sí (opcional)


pueden empezar a obtener acceso a su contenido.

Puede especificar la fecha y la hora a la que los usuarios Sí Sí


dejan de obtener acceso a su contenido.

Puede especificar la dirección IP o a un rango de No Sí (opcional)


direcciones IP de los usuarios que pueden obtener
acceso a su contenido.

La URL firmada incluye una versión de la política con No Sí


codificación de tipo base64, lo que resulta en una URL
más larga.

Para obtener información acerca de cómo crear URL firmadas mediante una política predefinida, consulte
Creación de una URL firmada mediante una política predefinida (p. 177).

Para obtener información acerca de cómo crear URL firmadas mediante una política personalizada,
consulte Creación de una URL firmada mediante una política personalizada (p. 181).

Cómo funcionan las URL firmadas


A continuación, se muestra información general de cómo se configura CloudFront y Amazon S3 para URL
firmadas y cómo responde CloudFront cuando un usuario utiliza una URL firmada para solicitar un archivo.

1. En la distribución de CloudFront, especifique uno o más grupos de claves de confianza, que contienen
las claves públicas que CloudFront puede utilizar para comprobar la firma de URL. Se utilizan las
claves privadas correspondientes para firmar las URL.

Para obtener más información, consulte Especificación de los signatarios que pueden crear URL
firmadas y cookies firmadas (p. 166).
2. Desarrolle la aplicación para determinar si un usuario debe tener acceso al contenido y crear URL
firmadas para los archivos o partes de la aplicación a las que desea restringir el acceso. Para obtener
más información, consulte los siguientes temas:

• Creación de una URL firmada mediante una política predefinida (p. 177)
• Creación de una URL firmada mediante una política personalizada (p. 181)
3. Un usuario solicita un archivo que va a requerir URL firmadas.
4. La aplicación verifica si el usuario tiene derecho para obtener acceso al archivo: si ha iniciado sesión,
si ha pagado por obtener acceso al contenido o si ha cumplido algún otro requisito para obtener
acceso.
5. Su aplicación crea una URL firmada y la devuelve el usuario.
6. Las URL firmadas permiten al usuario descargar o transmitir el contenido.

Este paso es automático; el usuario normalmente no tiene que hacer nada más para obtener acceso
al contenido. Por ejemplo, si un usuario accede a su contenido desde un navegador web, la aplicación
devuelve la URL firmada al navegador. El navegador utiliza inmediatamente la URL firmada para
acceder al archivo de la caché de borde de CloudFront sin necesidad de que el usuario intervenga.
7. CloudFront utiliza la clave pública para validar la firma y confirmar que la URL no se ha manipulado. Si
la firma no es válida, se rechaza la solicitud.

175
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

Si la firma es válida, CloudFront examina la instrucción de la política en la URL (o crea una si utiliza
una política predefinida) para confirmar que la solicitud sigue siendo válida. Por ejemplo, si especifica
una fecha y hora de inicio y fin de la URL, CloudFront confirma que el usuario intenta acceder al
contenido durante el periodo que usted ha decidido permitir dicho acceso.

Si la solicitud cumple los requisitos de la instrucción de política, CloudFront realiza las operaciones
estándar: determina si el archivo ya está en la caché de borde, reenvía la solicitud al origen en caso
necesario y devuelve el archivo al usuario.

Note

Si una URL sin firmar contiene parámetros de cadena de consulta, asegúrese de incluirlos en
la parte de la dirección URL que firma. Si agrega una cadena de consulta a una URL firmada
después de firmarla, la URL devuelve un estado HTTP 403.

Elegir el tiempo de validez de las URL firmadas


Puede distribuir contenido privado mediante una URL firmada cuyo periodo de validez sea corto, incluso de
unos pocos minutos. Las URL firmadas con un tiempo de validez tan corto son adecuadas para distribuir
contenido sobre la marcha a un usuario con una finalidad específica, como la distribución de películas de
alquiler o descargas de música bajo demanda para clientes. Si el periodo de validez de las URL firmadas
es corto, es recomendable generarlas automáticamente con una aplicación que puede desarrollar. Cuando
el usuario comienza a descargar un archivo o a reproducir un archivo multimedia, CloudFront compara la
fecha y hora de vencimiento de la URL con el momento actual para determinar si la URL todavía es válida.

También puede distribuir contenido privado mediante una URL firmada con un periodo de validez más
largo, de incluso años. Las URL válidas durante periodos largos resultan útiles para distribuir contenido
privado a usuarios conocidos, como, por ejemplo, la distribución de un plan de negocio a inversores o la
distribución de materiales de formación a los empleados. Puede desarrollar una aplicación para generar
estas URL firmadas a largo plazo para usted.

¿Cuándo comprueba CloudFront la fecha y hora de vencimiento


de una URL firmada?
CloudFront comprueba la fecha y hora de vencimiento de una URL firmada al realizarse la solicitud
HTTP. Si un cliente comienza a descargar un archivo grande inmediatamente antes de la fecha de
vencimiento, la descarga se realizará por completo incluso si se sobrepasa la hora de vencimiento durante
la descarga. Si la conexión TCP se interrumpe y el cliente intenta reiniciar la descarga después de la fecha
de vencimiento, la descarga fallará.

Si un cliente utiliza rangos GET para obtener un archivo en partes más pequeñas, cualquier solicitud GET
que se produzca después de la fecha de vencimiento no se procesará. Para obtener más información
acerca de Range GET, consulte Cómo CloudFront procesa las solicitudes parciales de un objeto (rango
GET). (p. 322).

Código de ejemplo y herramientas de terceros


Para ver un código de ejemplo que crea la parte de las URL firmadas y a la que se le haya aplicado una
función hash, consulte los siguientes temas:

• Crear una firma de URL con Perl (p. 205)


• Crear una firma de URL con PHP (p. 212)
• Crear una firma de URL mediante C # y .NET Framework (p. 216)
• Crear una firma de URL con Java (p. 222)

176
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

Creación de una URL firmada mediante una política predefinida


Para crear una URL firmada mediante una política predefinida, complete los pasos siguientes.

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 claves
del formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo ahora. Para
obtener más información, consulte Volver a formatear la clave privada (solo .NET y Java) (p. 171).
2. Concatene los siguientes valores en el orden especificado y elimine el espacio en blanco (incluidos
tabuladores y caracteres de línea nueva) entre las partes. Es posible que tenga que incluir caracteres
de escape en la cadena del código de la aplicación. Todos los valores tienen un tipo de cadena. Cada
parte está marcada con un número ( ) en los dos ejemplos que se muestran a continuación.

URL base del archivo

La URL base es la URL de CloudFront que utilizaría para acceder al archivo si no utilizara las
URL firmadas, incluidos los parámetros de la cadena de consulta propios, si los hay. Para obtener
más información acerca del formato de las URL para distribuciones, consulte Personalización del
formato de URL para archivos en CloudFront (p. 117).
• La siguiente URL de CloudFront es para un archivo de imagen en una distribución (utilizando el
nombre de dominio de CloudFront). image.jpg está en un directorio images. La ruta hacia el
archivo de la URL debe coincidir con la ruta hacia el archivo del servidor HTTP o del bucket de
Amazon S3.

http://d111111abcdef8.cloudfront.net/images/image.jpg
• La siguiente URL de CloudFront incluye una cadena de consulta:

http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large
• Las siguientes URL de CloudFront corresponden a archivos de imagen de una distribución.
Ambas utilizan un nombre de dominio alternativo; la segunda incluye una cadena de consulta:

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

http://www.example.com/images/image.jpg?color=red
• La siguiente URL de CloudFront corresponde a un archivo de imagen de una distribución que
utiliza un nombre de dominio alternativo y el protocolo HTTPS:

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

? indica que los parámetros de la cadena de consulta siguen a la URL base. Incluya ? aunque no
tenga sus propios parámetros de cadena de consulta.

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, por
ejemplo:

color=red&size=medium

añada los parámetros después de ? (consulte ) y antes del parámetro Expires. En algún
caso poso frecuente, posiblemente tenga que añadir los parámetros de cadena de consulta
después de Key-Pair-Id.

177
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

Important

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 Unix (en segundos) y en hora


universal coordinada (UTC)

La fecha y la hora en las que desea que la URL deje de permitir el acceso al archivo.

Especifique la fecha y la hora de vencimiento en formato de tiempo Unix (en segundos) y hora
universal coordinada (UTC). Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser
1357034400 en formato de tiempo Unix. Para utilizar el formato de tiempo Unix, use un entero
de 32 bits para una fecha que no puede ser posterior a 2147483647 (19 de enero de 2038 a las
03:14:07 UTC). Para obtener información acerca de UTC, consulte RFC 3339, fecha y hora en
Internet: marcas temporales, https://tools.ietf.org/html/rfc3339.

&Signature=versión firmada y con hash de 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 la
instrucción de política JSON. Para obtener más información, consulte Creación de una firma para
una URL firmada que utiliza una política predefinida (p. 178).

&Key-Pair-Id=ID de clave pública para la clave pública de CloudFront


cuya clave privada correspondiente va a utilizar para generar la firma

El ID de una clave pública de CloudFront, por ejemplo, K2JCJMDEHXQW5F. El ID de clave pública


indica a CloudFront qué clave pública usar para validar la URL firmada. CloudFront compara la
información de la firma con la información de la instrucción de política para comprobar que la URL
no se ha manipulado.

Esta clave pública debe pertenecer a un grupo de claves que tiene un signatario de confianza
en la distribución. Para obtener más información, consulte Especificación de los signatarios que
pueden crear URL firmadas y cookies firmadas (p. 166).

Ejemplo de URL firmada:

http://d111111abcdef8.cloudfront.net/image.jpg
? color=red&size=medium& Expires=1357034400
&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-
j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-
TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6
&Key-Pair-Id=K2JCJMDEHXQW5F

Creación de una firma para una URL firmada que utiliza una política predefinida
Para crear la firma para una URL firmada que utilice una política predefinida, siga los siguientes
procedimientos:

1. Cree una instrucción de política. Consulte Creación de una instrucción de política para una URL
firmada que utiliza una política predefinida (p. 179).
2. Firme la instrucción de política para crear una firma. Consulte Creación de una firma para una URL
firmada que utiliza una política predefinida (p. 180).

178
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

Creación de una instrucción de política para una URL firmada que utiliza una política predefinida

Al crear una URL firmada mediante una política predefinida, el parámetro Signature es una versión
firmada y a la que se le ha aplicado una función hash de una instrucción de política. En el caso de URL
firmadas que utilizan una política predefinida, la instrucción de política no se incluye en la URL, a diferencia
de las URL firmadas que utilizan una política personalizada. Para crear la instrucción de política, siga el
procedimiento que se indica a continuación.

Para crear una instrucción de política para una URL firmada que use una política predefinida

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ás información acerca de los parámetros Resource y DateLessThan, consulte
Valores que se especifican en la instrucción de política de una URL firmada que utiliza una política
predefinida (p. 179).

{
"Statement": [
{
"Resource": "base URL or stream name",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": ending date and time in Unix time format and UTC
}
}
}
]
}

2. Elimine todos los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la
instrucción de la política. Es posible que tenga que incluir caracteres de escape en la cadena del
código de la aplicación.

Valores que se especifican en la instrucción de política de una URL firmada que utiliza una política
predefinida

Al crear una instrucción de política para una política predefinida, debe especificar los siguientes valores.

Recurso
Note

Puede especificar solo un valor en Resource.

La URL base incluye las cadenas de consulta, de haberlas, pero excluye los parámetros de
CloudFront Expires, Signature y Key-Pair-Id, por ejemplo:

http://d111111abcdef8.cloudfront.net/images/horizon.jpg?
size=large&license=yes

Tenga en cuenta lo siguiente:


• Protocol (Protocolo): el valor debe comenzar con http:// o https://.
• Query string parameters (Parámetros de cadena de consulta): si no tiene parámetros de cadena de
consulta, omita el signo de interrogación.
• Alternate domain names (Nombres de dominio alternativos): si especifica un nombre de dominio
alternativo (CNAME) en la URL, debe especificarlo al hacer referencia al archivo en la página web o
aplicación. No especifique la URL de Amazon S3 del objeto.

179
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

DateLessThan

La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universal
coordinada (UTC). Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser 1357034400 en
formato de tiempo Unix.

Este valor debe coincidir con el valor del parámetro de cadena de consulta Expires de la URL
firmada. No incluya el valor entre comillas.

Para obtener más información, consulte ¿Cuándo comprueba CloudFront la fecha y hora de
vencimiento de una URL firmada? (p. 176).

Ejemplo de instrucción de política para una URL firmada que utiliza una política predefinida
Cuando se utiliza la siguiente instrucción de política de ejemplo en una URL firmada, un usuario puede
acceder al archivo http://d111111abcdef8.cloudfront.net/horizon.jpg hasta el 1 de enero de
2013 a las 10:00 h UTC:

{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/horizon.jpg?
size=large&license=yes",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": 1357034400
}
}
}
]
}

Creación de una firma para una URL firmada que utiliza una política predefinida
Para crear el valor del parámetro Signature en una URL firmada, aplique una función hash y firme la
instrucción de política que ha creado en Creación de una instrucción de política para una URL firmada que
utiliza una política predefinida (p. 179).

Para obtener más información y ejemplos de cómo resumir, aplicar una función hash y codificar la
instrucción de política, consulte:

• Uso de comandos de Linux y OpenSSL para codificación y cifrado base64 (p. 204)
• Ejemplos de código para la creación de una firma para una URL firmada (p. 204)

Opción 1: para crear una firma mediante una política predefinida

1. Use la función hash SHA-1 y RSA para resumir y firmar la instrucción de política creada en el
procedimiento Para crear una instrucción de política para una URL firmada que use una política
predefinida (p. 179). Utilice la versión de la instrucción de política que ya no incluye espacios en
blanco.

Para la clave privada requerida por la función hash, utilice una clave privada cuya clave pública esté
en un grupo de claves de confianza activo para la distribución.
Note

El método que utilice para resumir y aplicar una función hash la instrucción de política
depende de su lenguaje de programación y plataforma. Para ver código de muestra, consulte
Ejemplos de código para la creación de una firma para una URL firmada (p. 204).

180
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

2. Elimine los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la cadena a la
que se le ha aplicado una función hash y firmada.
3. Codifique la cadena con codificación base64 de MIME. Para obtener más información, consulte la
Section 6.8, Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose Internet Mail
Extensions) Part One: Format of Internet Message Bodies.
4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En la
siguiente tabla se muestran los caracteres válidos y no válidos.

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 URL
firmada mediante una política predefinida (p. 177) para terminar de encadenar las partes de la URL
firmada.

Creación de una URL firmada mediante una política


personalizada
Temas
• Creación de una instrucción de política para una URL firmada que utiliza una política
personalizada (p. 183)
• Instrucciones de políticas de ejemplo para una URL firmada que utiliza una política
personalizada (p. 186)
• Creación de una firma para una URL firmada que utiliza una política personalizada (p. 188)

Para crear una URL firmada mediante una política personalizada, siga el procedimiento que se indica a
continuación.

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 claves
del formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo ahora. Para
obtener más información, consulte Volver a formatear la clave privada (solo .NET y Java) (p. 171).
2. Concatene los siguientes valores en el orden especificado y elimine el espacio en blanco (incluidos
tabuladores y caracteres de línea nueva) entre las partes. Es posible que tenga que incluir caracteres
de escape en la cadena del código de la aplicación. Todos los valores tienen un tipo de cadena. Cada
parte está marcada con un número ( ) en los dos ejemplos que se muestran a continuación.

URL base del archivo

La URL base es la URL de CloudFront que utilizaría para acceder al archivo si no utilizara las
URL firmadas, incluidos los parámetros de la cadena de consulta propios, si los hay. Para obtener
más información acerca del formato de las URL para distribuciones, consulte Personalización del
formato de URL para archivos en CloudFront (p. 117).

Los siguientes ejemplos muestran valores que especifica para distribuciones.


• La siguiente URL de CloudFront es para un archivo de imagen en una distribución (utilizando el
nombre de dominio de CloudFront). image.jpg está en un directorio images. La ruta hacia el

181
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

archivo de la URL debe coincidir con la ruta hacia el archivo del servidor HTTP o del bucket de
Amazon S3.

http://d111111abcdef8.cloudfront.net/images/image.jpg
• La siguiente URL de CloudFront incluye una cadena de consulta:

http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large
• Las siguientes URL de CloudFront corresponden a archivos de imagen de una distribución.
Ambas utilizan un nombre de dominio alternativo; la segunda incluye una cadena de consulta:

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

http://www.example.com/images/image.jpg?color=red
• La siguiente URL de CloudFront corresponde a un archivo de imagen de una distribución que
utiliza un nombre de dominio alternativo y el protocolo HTTPS:

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

? indica que los parámetros de la cadena de consulta siguen a la URL base. Incluya ? aunque no
tenga sus propios parámetros de cadena de consulta.

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, por
ejemplo:

color=red&size=medium

añádalos después de ? (consulte ) y antes del parámetro Policy. En algún caso poso
frecuente, posiblemente tenga que añadir los parámetros de cadena de consulta después de
Key-Pair-Id.
Important

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 en 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 blanco y,
a continuación, codificada con base64. Para obtener más información, consulte Creación de una
instrucción de política para una URL firmada que utiliza una política personalizada (p. 183).

La instrucción de política controla el acceso que una URL firmada concede a un usuario. Incluye
la URL del archivo, una fecha y hora de vencimiento, una fecha y hora opcionales en que la URL
se convierte en válida y una dirección IP opcional o un intervalo de direcciones IP a las que se
permite acceder al archivo.

&Signature=versión firmada y con hash de 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 la
instrucción de política JSON. Para obtener más información, consulte Creación de una firma para
una URL firmada que utiliza una política personalizada (p. 188).

182
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

&Key-Pair-Id=ID de clave pública para la clave pública de CloudFront


cuya clave privada correspondiente va a utilizar para generar la firma

El ID de una clave pública de CloudFront, por ejemplo, K2JCJMDEHXQW5F. El ID de clave pública


indica a CloudFront qué clave pública usar para validar la URL firmada. CloudFront compara la
información de la firma con la información de la instrucción de política para comprobar que la URL
no se ha manipulado.

Esta clave pública debe pertenecer a un grupo de claves que tiene un signatario de confianza
en la distribución. Para obtener más información, consulte Especificación de los signatarios que
pueden crear URL firmadas y cookies firmadas (p. 166).

Ejemplo de URL firmada:

http://d111111abcdef8.cloudfront.net/image.jpg ?
color=red&size=medium&
Policy=eyANCiAgICEXAMPLEW1lbnQiOiBbeyANCiAgICAgICJSZXNvdXJjZSI6Imh0dHA
6Ly9kemJlc3FtN3VuMW0wLmNsb3VkZnJvbnQubmV0L2RlbW8ucGhwIiwgDQogICAgICAiQ
29uZGl0aW9uIjp7IA0KICAgICAgICAgIklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiI
yMDcuMTcxLjE4MC4xMDEvMzIifSwNCiAgICAgICAgICJEYXRlR3JlYXRlclRoYW4iOnsiQ
VdTOkVwb2NoVGltZSI6MTI5Njg2MDE3Nn0sDQogICAgICAgICAiRGF0ZUxlc3NUaGFuIjp
7IkFXUzpFcG9jaFRpbWUiOjEyOTY4NjAyMjZ9DQogICAgICB9IA0KICAgfV0gDQp9DQo
&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~
-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmat
EXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 &Key-Pair-
Id=K2JCJMDEHXQW5F

Creación de una instrucción de política para una URL firmada que utiliza una
política personalizada
Para crear una instrucción de política para una política personalizada, siga el procedimiento que se indica
a continuación. Para consultar varias instrucciones de políticas de ejemplo que controlan el acceso a
archivos de distintas maneras, consulte Instrucciones de políticas de ejemplo para una URL firmada que
utiliza una política personalizada (p. 186).

Para crear una instrucción de política para una URL firmada que use una política personalizada

1. Cree la instrucción de política en el siguiente formato JSON. Para obtener más información, consulte
Valores que se especifican en la instrucción de política de una URL firmada que utiliza una política
personalizada (p. 184).

{
"Statement": [
{
"Resource": "URL or stream name of the file",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": required ending date and time in Unix time format
and UTC
},
"DateGreaterThan": {
"AWS:EpochTime": optional beginning date and time in Unix time
format and UTC
},
"IpAddress": {

183
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

"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 que se especifican en la instrucción de política de una URL firmada
que utiliza una política personalizada (p. 184).
2. Elimine todos los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la
instrucción de la política. Es posible que tenga que incluir caracteres de escape en la cadena del
código de la aplicación.
3. Codifique la instrucción de política con codificación base64 de MIME. Para obtener más información,
consulte la Section 6.8, Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose
Internet Mail Extensions) Part One: Format of Internet Message Bodies.
4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En la
siguiente tabla se muestran los caracteres válidos y no válidos.

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 Creación de una firma para una URL
firmada que utiliza una política personalizada (p. 188).

Valores que se especifican en la instrucción de política de una URL firmada que utiliza una política
personalizada

Al crear una instrucción de política para una política personalizada, debe especificar los siguientes valores.

Recurso
Note

Puede especificar solo un valor en Resource.

La URL base incluye las cadenas de consulta, de haberlas, pero excluye los parámetros de
CloudFront Policy, Signature y Key-Pair-Id, por ejemplo:

http://d111111abcdef8.cloudfront.net/images/horizon.jpg?
size=large&license=yes

184
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

Important

Si omite el parámetro Resource en una distribución, los usuarios podrán obtener acceso a
todos los archivos asociados a cualquier distribución que esté vinculada al par de claves
utilizado para crear la URL firmada.

Tenga en cuenta lo siguiente:


• Protocol (Protocolo): el valor debe comenzar con http://, https:// o *.
• Query string parameters (Parámetros de cadena de consulta): si no tiene parámetros de cadena de
consulta, omita el signo de interrogación.
• Wildcard characters (Caracteres comodín): puede utilizar el carácter comodín que coincide con
cero o 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 archivos:


• 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 (Nombres de dominio alternativos): si especifica un nombre de dominio
alternativo (CNAME) en la URL, debe especificarlo al hacer referencia al archivo en la página web o
aplicación. No especifique la URL de Amazon S3 para el archivo.
DateLessThan

La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universal
coordinada (UTC). No incluya el valor entre comillas. Para obtener información acerca de UTC,
consulte RFC 3339, fecha y hora en Internet: marcas temporales, https://tools.ietf.org/html/rfc3339.

Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser 1357034400 en formato de tiempo
Unix.

Este es el único parámetro requerido en la sección Condition. CloudFront requiere este valor para
impedir que los usuarios tengan acceso permanente al contenido privado.

Para obtener más información, consulte ¿Cuándo comprueba CloudFront la fecha y hora de
vencimiento de una URL firmada? (p. 176)
DateGreaterThan (opcional)

Una fecha y hora de inicio opcionales de la URL en formato de tiempo Unix (en segundos) y hora
universal coordinada (UTC). Los usuarios no tienen permiso para obtener acceso al archivo antes de
la fecha y la hora especificadas. No incluya el valor entre comillas.
IpAddress (opcional)

La dirección IP del cliente que hace la solicitud GET. Tenga en cuenta lo siguiente:
• Para permitir que cualquier dirección IP obtenga acceso al archivo, omita el parámetro IpAddress.
• Puede especificar una dirección IP o a un rango de direcciones IP. Por ejemplo, no puede configurar
la política para permitir el acceso si la dirección IP del cliente está en uno de dos rangos separados.
• Para permitir el acceso desde una única dirección IP, especifique:

"Dirección IP IPv4/32"
• Debe especificar rangos de direcciones IP en formato estándar IPv4 CIDR (por ejemplo,
192.0.2.0/24). Para obtener más información, consulte RFC 4632, Classless Inter-domain

185
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

Routing (CIDR): The Internet Address Assignment and Aggregation Plan, https://tools.ietf.org/html/
rfc4632.
Important
Direcciones IP en formato IPv6, como 2001:0db8:85a3:0000:0000:8a2e:0370:7334, no son
compatibles.

Si está utilizando una política personalizada que incluya IpAddress, no habilite IPv6 para la
distribución. Si desea restringir el acceso a algún contenido por dirección IP y admite solicitudes
IPv6 de otro contenido, puede crear dos distribuciones. Para obtener más información, consulte
Habilitar IPv6 (p. 66) en el tema Valores que deben especificarse al crear o actualizar una
distribución (p. 43).

Instrucciones de políticas de ejemplo para una URL firmada que utiliza una
política personalizada
En los siguientes ejemplos de instrucciones de políticas, se muestra cómo controlar el acceso a un archivo
específico, a todos los archivos de un directorio o a todos los archivos asociados a un ID de par de claves.
Los ejemplos también muestran cómo controlar el acceso desde una dirección IP individual o a un rango
de direcciones IP, y cómo impedir que los usuarios utilicen la URL firmada después de una fecha y hora
específicas.

Si copia y pega cualquiera de estos ejemplos, elimine los espacios en blanco (incluidos los tabuladores y
los caracteres de línea nueva), sustituya los valores por sus propios valores e incluya un carácter de línea
nueva después de la llave de cierre ( } ).

Para obtener más información, consulte Valores que se especifican en la instrucción de política de una
URL firmada que utiliza una política personalizada (p. 184).

Temas
• Ejemplo de instrucción de política: acceso a un archivo desde un intervalo de direcciones IP (p. 186)
• Ejemplo de instrucción de política: acceso a todos los archivos de un directorio desde un intervalo de
direcciones IP (p. 187)
• Ejemplo de instrucción de política: acceso a todos los archivos asociados con un ID de par de claves
desde una dirección IP (p. 187)

Ejemplo de instrucción de política: acceso a un archivo desde un intervalo de direcciones IP


En el siguiente ejemplo de política personalizada de una URL firmada se especifica que un usuario puede
acceder al archivo http://d111111abcdef8.cloudfront.net/game_download.zip desde las
direcciones IP del intervalo 192.0.2.0/24 hasta el 1 de enero de 2013 a las 10:00 h UTC:

{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/game_download.zip",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.0/24"
},
"DateLessThan": {
"AWS:EpochTime": 1357034400
}
}
}
]
}

186
Amazon CloudFront Guía para desarrolladores
Uso de URL firmadas

Ejemplo de instrucción de política: acceso a todos los archivos de un directorio desde un intervalo
de direcciones IP

La siguiente política personalizada de ejemplo le permite crear URL firmadas para cualquier archivo del
directorio training, tal y como indica el carácter comodín * del parámetro Resource. Los usuarios
podrán obtener acceso al archivo desde una dirección IP incluida en el rango 192.0.2.0/24 hasta el 1
de enero de 2013 a las 10:00 h UTC:

{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/training/*",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.0/24"
},
"DateLessThan": {
"AWS:EpochTime": 1357034400
}
}
}
]
}

Cada URL firmada en la que utilice esta política contendrá una URL base que identificará a un archivo
específico: por ejemplo:

http://d111111abcdef8.cloudfront.net/training/orientation.pdf

Ejemplo de instrucción de política: acceso a todos los archivos asociados con un ID de par de
claves desde una dirección IP

La siguiente política personalizada de ejemplo le permite crear URL firmadas para cualquier archivo
asociado a cualquier distribución, tal y como indica el carácter comodín * del parámetro Resource. El
usuario debe utilizar la dirección IP 192.0.2.10/32. (El valor 192.0.2.10/32 en notación CIDR se
refiere a la dirección IP individual 192.0.2.10). Los archivos solo van a estar disponibles desde el 1 de
enero de 2013 a las 10:00 h UTC hasta el 2 de enero de 2013 a las 10:00 h UTC:

{
"Statement": [
{
"Resource": "http://*",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.10/32"
},
"DateGreaterThan": {
"AWS:EpochTime": 1357034400
},
"DateLessThan": {
"AWS:EpochTime": 1357120800
}
}
}
]
}

Cada URL firmada en la que utilice esta política incluye una URL base que identifica un archivo específico
de una distribución de CloudFront específica; por ejemplo:

http://d111111abcdef8.cloudfront.net/training/orientation.pdf

187
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

La URL firmada también incluye un ID de par de claves que debe asociarse con un grupo de claves de
confianza en la distribución (d111111abcdef8.cloudfront.net) que se especifica en la URL base.

Creación de una firma para una URL firmada que utiliza una política
personalizada
La firma de una URL firmada que utiliza una política personalizada es una versión de la instrucción de
política a la que se le ha aplicado una función hash, firmada y codificada con base64. Para crear una firma
para una política personalizada, complete los pasos siguientes.

Para obtener más información y ejemplos de cómo resumir, aplicar una función hash y codificar la
instrucción de política, consulte:

• Uso de comandos de Linux y OpenSSL para codificación y cifrado base64 (p. 204)
• Ejemplos de código para la creación de una firma para una URL firmada (p. 204)

Opción 1: para crear una firma mediante una política personalizada

1. Use la función hash SHA-1 y RSA para resumir y firmar la instrucción de política JSON creada en
el procedimiento Para crear una instrucción de política para una URL firmada que use una política
personalizada (p. 183). Utilice la versión de la instrucción de política que ya no incluye espacios en
blanco pero que aún no se ha codificado con base64.

Para la clave privada requerida por la función hash, utilice una clave privada cuya clave pública esté
en un grupo de claves de confianza activo para la distribución.
Note

El método que utilice para resumir y aplicar una función hash la instrucción de política
depende de su lenguaje de programación y plataforma. Para ver código de muestra, consulte
Ejemplos de código para la creación de una firma para una URL firmada (p. 204).
2. Elimine los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la cadena a la
que se le ha aplicado una función hash y firmada.
3. Codifique la cadena con codificación base64 de MIME. Para obtener más información, consulte la
Section 6.8, Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose Internet Mail
Extensions) Part One: Format of Internet Message Bodies.
4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En la
siguiente tabla se muestran los caracteres válidos y no válidos.

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 URL
firmada mediante una política personalizada (p. 181) para terminar de encadenar las partes de la
URL firmada.

Uso de cookies firmadas


Las cookies firmadas de CloudFront le permiten controlar quién puede acceder al contenido cuando no
desea cambiar las URL actuales o cuando desea proporcionar acceso a varios archivos restringidos, por

188
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

ejemplo, todos los archivos del área de suscriptores de un sitio web. En este tema se explica qué tomar
en cuenta al utilizar cookies firmadas y describe cómo configurarlas mediante políticas predefinidas o
personalizadas.

Temas
• Elegir entre políticas predefinidas y personalizadas para cookies firmadas (p. 189)
• Cómo funcionan las cookies firmadas (p. 189)
• Prevención del uso indebido de cookies firmadas (p. 190)
• ¿Cuándo comprueba CloudFront la fecha y hora de vencimiento de una cookie firmada? (p. 191)
• Código de muestra y herramientas de terceros (p. 191)
• Establecer cookies firmadas mediante una política predefinida (p. 191)
• Establecer cookies firmadas mediante una política personalizada (p. 196)

Elegir entre políticas predefinidas y personalizadas para cookies


firmadas
Al crear una cookie firmada, se escribe una instrucción de política en formato JSON que especifica
las restricciones en la cookie firmada, por ejemplo, el tiempo de validez de la cookie. Puede utilizar
políticas predefinidas o personalizadas. En la siguiente tabla se comparan las políticas predefinidas y las
personalizadas:

Descripción Política predefinida Política


personalizada

Puede reutilizar la instrucción de la política con varios No Sí


archivos. Para reutilizar la instrucción de política, debe
utilizar caracteres comodín en el objeto Resource.
Para obtener más información, consulte Valores que se
especifican en la instrucción de política de una política
personalizada para cookies firmadas (p. 199).)

Puede especificar la fecha y la hora a la que los usuarios No Sí (opcional)


pueden empezar a obtener acceso a su contenido.

Puede especificar la fecha y la hora a la que los usuarios Sí Sí


dejan de obtener acceso a su contenido.

Puede especificar la dirección IP o a un rango de No Sí (opcional)


direcciones IP de los usuarios que pueden obtener
acceso a su contenido.

Para obtener información acerca de cómo crear cookies firmadas mediante una política predefinida,
consulte Establecer cookies firmadas mediante una política predefinida (p. 191).

Para obtener información acerca de cómo crear cookies firmadas mediante una política personalizada,
consulte Establecer cookies firmadas mediante una política personalizada (p. 196).

Cómo funcionan las cookies firmadas


A continuación, se muestra información general acerca de cómo configurar CloudFront para cookies
firmadas y cómo responde CloudFront cuando un usuario envía una solicitud que contiene una cookie
firmada.

189
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

1. En la distribución de CloudFront, especifique uno o más grupos de claves de confianza, que contienen
las claves públicas que CloudFront puede utilizar para comprobar la firma de URL. Se utilizan las
claves privadas correspondientes para firmar las URL.

Para obtener más información, consulte Especificación de los signatarios que pueden crear URL
firmadas y cookies firmadas (p. 166).
2. Desarrolle una aplicación para determinar si un usuario debe obtener acceso a su contenido y, en
caso de que sí, que envíe 3 encabezados Set-Cookie al espectador. (Cada encabezado Set-
Cookie puede contener solo un par de nombre-valor y una cookie de CloudFront firmada requiere
tres pares de nombre-valor). Debe enviar los encabezados Set-Cookie al espectador antes de que
el usuario solicite su contenido privado. Si configura un periodo de vencimiento corto en la cookie, le
recomendamos enviar tres encabezados Set-Cookie más en respuesta a solicitudes posteriores, de
modo que el usuario continúe teniendo acceso.

Normalmente, la distribución de CloudFront tendrá al menos dos comportamientos de la caché: uno


que no requiere autenticación y otro que sí. La página de error de la parte segura del sitio incluye un
redirector o un enlace a una página de inicio de sesión.

Si configura la distribución para que el almacenamiento de archivos en la caché dependa de las


cookies, CloudFront no almacenará archivos 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 el
acceso.
4. Su aplicación devuelve los encabezados Set-Cookie en la respuesta, y el espectador almacena los
pares nombre-valor.
5. El usuario solicita un archivo.

El navegador del usuario o cualquier otro espectador obtiene los pares nombre-valor del paso 4 y los
añade a la solicitud en un encabezado Cookie. Esta es la cookie firmada.
6. CloudFront utiliza la clave pública para validar la firma en la cookie firmada y confirmar que dicha
cookie no se ha manipulado. Si la firma no es válida, se rechaza la solicitud.

Si la firma de la cookie es válida, CloudFront examina la instrucción de la política en la cookie (o crea


una si utiliza una política predefinida) para confirmar que la solicitud sigue siendo válida. Por ejemplo,
si ha especificado una fecha y hora de inicio y fin de la cookie, CloudFront confirma que el usuario
intenta acceder al contenido durante el periodo en el que ha decidido permitir dicho acceso.

Si la solicitud cumple los requisitos de la instrucción de la política, CloudFront enviará el contenido


del mismo modo que envía el contenido no restringido: determina si el archivo ya está en la caché de
borde, reenvía la solicitud al origen en caso necesario y devuelve el archivo al usuario.

Prevención del uso indebido de cookies firmadas


Si especifica el parámetro Domain en un encabezado Set-Cookie, especifique el valor de la forma más
precisa posible para reducir el acceso potencial por parte de alguien con el mismo nombre de dominio raíz.
Por ejemplo, app.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 www.example.com.

Para evitar este tipo de ataques, haga lo siguiente:

• Excluya los atributos de cookies Expires y Max-Age para que el encabezado Set-Cookie cree
una cookie de sesión. Las cookies de sesión se eliminan automáticamente cuando el usuario cierra el
navegador, lo que reduce la posibilidad de alguien obtenga acceso no autorizado a su contenido.
• Incluya el atributo Secure para que la cookie se cifre cuando un espectador la incluya en una solicitud.
• De ser posible, utilice una política personalizada e incluya la dirección IP del espectador.

190
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

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

¿Cuándo comprueba CloudFront la fecha y hora de vencimiento


de una cookie firmada?
Para determinar si una cookie firmada sigue siendo válida, CloudFront comprueba la fecha y hora de
vencimiento de la cookie en el momento de la solicitud HTTP. Si un cliente comienza a descargar un
archivo grande inmediatamente antes de la fecha de vencimiento, la descarga se realizará por completo
incluso si se sobrepasa la hora de vencimiento durante la descarga. Si la conexión TCP se interrumpe y el
cliente intenta reiniciar la descarga después de la fecha de vencimiento, la descarga fallará.

Si un cliente utiliza rangos GET para obtener un archivo en partes más pequeñas, cualquier solicitud GET
que se produzca después de la fecha de vencimiento no se procesará. Para obtener más información
acerca de Range GET, consulte Cómo CloudFront procesa las solicitudes parciales de un objeto (rango
GET). (p. 322).

Código de muestra y herramientas de terceros


El código de muestra para contenido privado solo muestra cómo crear firmas para URL firmadas. Sin
embargo, el proceso de creación de una firma para una cookie firmada es muy similar, así que gran parte
del código de muestra es aplicable. Para obtener más información, consulte los siguientes temas:

• Crear una firma de URL con Perl (p. 205)


• Crear una firma de URL con PHP (p. 212)
• Crear una firma de URL mediante C # y .NET Framework (p. 216)
• Crear una firma de URL con Java (p. 222)

Establecer cookies firmadas mediante una política predefinida


Para establecer una cookie firmada utilizando una política predefinida, complete los pasos siguientes.
Para crear la firma, consulte Creación de una firma para una cookie firmada que utiliza una política
predefinida (p. 193).

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
de claves del formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo
ahora. Para obtener más información, consulte Volver a formatear la clave privada (solo .NET y
Java) (p. 171).
2. Programe su aplicación para enviar tres encabezados Set-Cookie a los espectadores aprobados.
Necesita tres encabezados Set-Cookie porque cada encabezado Set-Cookie puede contener solo
un par de nombre-valor y una cookie firmada de CloudFront requiere tres pares de nombre-valor. Los
pares de nombre-valor son: CloudFront-Expires, CloudFront-Signature y CloudFront-
Key-Pair-Id. Los valores deben estar presentes en el lector antes de que un usuario realice la
primera solicitud de un archivo cuyo acceso desea controlar.
Note

En general, recomendamos que excluya los atributos Expires y Max-Age. Al excluir


los atributos, el navegador elimina la cookie cuando el usuario lo cierra, lo que reduce la
posibilidad de alguien obtenga acceso no autorizado a su contenido. Para obtener más
información, consulte Prevención del uso indebido de cookies firmadas (p. 190).

191
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

Los nombres de los atributos de las cookies distinguen entre mayúsculas y minúsculas.

Los saltos de línea se incluyen únicamente para que los atributos sean más legibles.

Set-Cookie:
CloudFront-Expires=date and time in Unix time format (in seconds) and Coordinated
Universal Time (UTC);
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly

Set-Cookie:
CloudFront-Signature=hashed and signed version of the policy statement;
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly

Set-Cookie:
CloudFront-Key-Pair-Id=public key ID for the CloudFront public key whose corresponding
private key you're using to generate the signature;
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly

(Opcional) Domain

Nombre de dominio del archivo solicitado. Si no especifica un atributo Domain, el valor


predeterminado será el nombre de dominio de la URL; esto es aplicable solo al nombre de
dominio especificado, no a subdominios. Si especifica un atributo Domain, también será aplicable
a 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 el
valor del atributo Domain deberán coincidir.

Puede especificar el nombre de dominio que CloudFront ha asignado a la distribución, por


ejemplo, d111111abcdef8.cloudfront.net, pero no puede especificar *.cloudfront.net para el
nombre de dominio.

Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe
añadir dicho nombre de dominio a su distribución independientemente de que especifique el
atributo Domain. Para obtener más información, consulte Nombres de dominio alternativos
(CNAME) (p. 61) en el tema Valores que deben especificarse al crear o actualizar una
distribución (p. 43).
(Opcional) Path

Ruta del archivo solicitado. Si no especifica un atributo Path, el valor predeterminado será la ruta
de la URL.
Secure

Requiere que el espectador cifre cookies antes de enviar una solicitud. Recomendamos que
envíe el encabezado Set-Cookie a través de una conexión HTTPS para asegurarse de que los
atributos de la cookie estén protegidos contra ataques man-in-the-middle.
HttpOnly

Requiere que el espectador envíe la cookie únicamente en solicitudes de HTTP o HTTPS.

192
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

CloudFront-Expires

Especifique la fecha y la hora de vencimiento en formato de tiempo Unix (en segundos) y hora
universal coordinada (UTC). Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser
1357034400 en formato de tiempo Unix. Para utilizar el formato de tiempo Unix, use un entero
de 32 bits para una fecha que no puede ser posterior a 2147483647 (19 de enero de 2038 a las
03:14:07 UTC). Para obtener información acerca de UTC, consulte RFC 3339, fecha y hora en
Internet: marcas temporales, https://tools.ietf.org/html/rfc3339.
CloudFront-Signature

Una versión de una instrucción de política JSON firmada, a la que se le ha aplicado una función
hash y codificada en base64. Para obtener más información, consulte Creación de una firma para
una cookie firmada que utiliza una política predefinida (p. 193).
CloudFront-Key-Pair-Id

El ID de una clave pública de CloudFront, por ejemplo, K2JCJMDEHXQW5F. El ID de clave pública


indica a CloudFront qué clave pública usar para validar la URL firmada. CloudFront compara la
información de la firma con la información de la instrucción de política para comprobar que la URL
no se ha manipulado.

Esta clave pública debe pertenecer a un grupo de claves que tiene un signatario de confianza
en la distribución. Para obtener más información, consulte Especificación de los signatarios que
pueden crear URL firmadas y cookies firmadas (p. 166).

En el ejemplo siguiente, se muestran los encabezados Set-Cookie de una cookie firmada cuando se usa
el nombre de dominio asociado a la distribución en las URL de los archivos:

Set-Cookie: CloudFront-Expires=1426500000; Domain=d111111abcdef8.cloudfront.net; Path=/


images/*; Secure; HttpOnly
Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_;
Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net;
Path=/images/*; Secure; HttpOnly

En el ejemplo siguiente, se muestran los encabezados Set-Cookie de una cookie firmada cuando se usa
el nombre de dominio alternativo example.org en las URL de los archivos:

Set-Cookie: CloudFront-Expires=1426500000; Domain=example.org; Path=/images/*; Secure;


HttpOnly
Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_; Domain=example.org; Path=/
images/*; Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/images/*;
Secure; HttpOnly

Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe añadir dicho
nombre de dominio a su distribución independientemente de que especifique el atributo Domain. Para
obtener más información, consulte Nombres de dominio alternativos (CNAME) (p. 61) en el tema Valores
que deben especificarse al crear o actualizar una distribución (p. 43).

Creación de una firma para una cookie firmada que utiliza una política predefinida
Para crear la firma para una cookie firmada que utilice una política predefinida, haga lo siguiente:

1. Cree una instrucción de política. Consulte Creación de una instrucción de política para una cookie
firmada que utiliza una política predefinida (p. 194).
2. Firme la instrucción de política para crear una firma. Consulte Firma de la instrucción de política para
crear una firma para una cookie firmada que utiliza una política predefinida (p. 195).

193
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

Creación de una instrucción de política para una cookie firmada que utiliza una política predefinida

Al establecer una cookie firmada que use una política predefinida, el atributo CloudFront-Signature
es una versión de una instrucción de política firmada y a la que se le ha aplicado una función hash. En el
caso de cookies firmadas que utilizan una política predefinida, la instrucción de política no se incluye en
el encabezado Set-Cookie, a diferencia de las cookies firmadas que utilizan una política personalizada.
Para crear la instrucción de política, complete los pasos siguientes.

Para crear una instrucción de política para una cookie firmada que use una política predefinida

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ás información acerca de los parámetros Resource y DateLessThan, consulte Valores que se
especifican en la instrucción de política de una política predefinida para cookies firmadas (p. 194).

{
"Statement": [
{
"Resource": "base URL or stream name",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": ending date and time in Unix time format and UTC
}
}
}
]
}

2. Elimine todos los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la
instrucción de la política. Es posible que tenga que incluir caracteres de escape en la cadena del
código de la aplicación.

Valores que se especifican en la instrucción de política de una política predefinida para cookies
firmadas

Al crear una instrucción de una política predefinida, debe especificar los siguientes valores:

Recurso

La URL base, incluidas las cadenas de consulta, de haberlas; por ejemplo:

http://d111111abcdef8.cloudfront.net/images/horizon.jpg?
size=large&license=yes

Puede especificar solo un valor en Resource.

Tenga en cuenta lo siguiente:


• Protocol (Protocolo): el valor debe comenzar con http:// o https://.
• Query string parameters (Parámetros de cadena de consulta): si no tiene parámetros de cadena de
consulta, omita el signo de interrogación.
• Alternate domain names (Nombres de dominio alternativos): si especifica un nombre de dominio
alternativo (CNAME) en la URL, debe especificarlo al hacer referencia al archivo en la página web o
aplicación. No especifique la URL de Amazon S3 para el archivo.
DateLessThan

La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universal
coordinada (UTC). No incluya el valor entre comillas.

194
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

Por ejemplo, 16 de marzo de 2015 a las 10:00 h UTC pasa a ser 1426500000 en formato de tiempo
Unix.

Este valor debe coincidir con el valor del atributo CloudFront-Expires en el encabezado Set-
Cookie. No incluya el valor entre comillas.

Para obtener más información, consulte ¿Cuándo comprueba CloudFront la fecha y hora de
vencimiento de una cookie firmada? (p. 191).

Ejemplo de instrucción de política para una política predefinida


Si se utiliza el siguiente ejemplo de instrucción de política en una cookie firmada, los usuarios podrán
obtener acceso al archivo http://d111111abcdef8.cloudfront.net/horizon.jpg hasta el 16 de
marzo de 2015 a las 10:00 h UTC:

{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/horizon.jpg?
size=large&license=yes",
"Condition": {
"DateLessThan": {
"AWS:EpochTime": 1426500000
}
}
}
]
}

Firma de la instrucción de política para crear una firma para una cookie firmada que utiliza una
política predefinida
Para crear el valor del atributo CloudFront-Signature en un encabezado Set-Cookie, aplique una
función hash y firme la instrucción de política creada en Para crear una instrucción de política para una
cookie firmada que use una política predefinida (p. 194).

Para obtener más información y ejemplos de cómo aplicar una función hash, firmar y codificar la
instrucción de política, consulte los siguientes temas:

• Uso de comandos de Linux y OpenSSL para codificación y cifrado base64 (p. 204)
• Ejemplos de código para la creación de una firma para una URL firmada (p. 204)

Para crear una firma para una cookie firmada que use una política predefinida

1. Use la función hash SHA-1 y RSA para resumir y firmar la instrucción de política creada en el
procedimiento Para crear una instrucción de política para una cookie firmada que use una política
predefinida (p. 194). Utilice la versión de la instrucción de política que ya no incluye espacios en
blanco.

Para la clave privada requerida por la función hash, utilice una clave privada cuya clave pública esté
en un grupo de claves de confianza activo para la distribución.
Note
El método que utilice para resumir y aplicar una función hash la instrucción de política
depende de su lenguaje de programación y plataforma. Para ver código de muestra, consulte
Ejemplos de código para la creación de una firma para una URL firmada (p. 204).
2. Elimine los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la cadena a la
que se le ha aplicado una función hash y firmada.

195
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

3. Codifique la cadena con codificación base64 de MIME. Para obtener más información, consulte la
Section 6.8, Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose Internet Mail
Extensions) Part One: Format of Internet Message Bodies.
4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En la
siguiente tabla se muestran los caracteres válidos y no válidos.

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ítica
predefinida (p. 191) y añada el encabezado Set-Cookie en CloudFront-Key-Pair-Id.

Establecer cookies firmadas mediante una política personalizada


Temas
• Creación de una instrucción de política para una cookie firmada que utiliza una política
personalizada (p. 198)
• Ejemplos de instrucciones de políticas para una cookie firmada que utiliza una política
personalizada (p. 201)
• Creación de una firma para una cookie firmada que utiliza una política personalizada (p. 203)

Para establecer una cookie firmada que utiliza una política personalizada, complete los siguientes pasos.

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 claves
del formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo ahora. Para
obtener más información, consulte Volver a formatear la clave privada (solo .NET y Java) (p. 171).
2. Programe su aplicación para enviar tres encabezados Set-Cookie a los espectadores aprobados.
Necesita tres encabezados Set-Cookie porque cada encabezado Set-Cookie puede contener solo
un par de nombre-valor y una cookie firmada de CloudFront requiere tres pares de nombre-valor. Los
pares de nombre-valor son: CloudFront-Policy, CloudFront-Signature y CloudFront-Key-
Pair-Id. Los valores deben estar presentes en el lector antes de que un usuario realice la primera
solicitud de un archivo cuyo acceso desea controlar.
Note
En general, recomendamos que excluya los atributos Expires y Max-Age. Al excluirlos,
el navegador elimina la cookie cuando el usuario lo cierra, lo que reduce la posibilidad
de alguien obtenga acceso no autorizado a su contenido. Para obtener más información,
consulte Prevención del uso indebido de cookies firmadas (p. 190).

Los nombres de los atributos de las cookies distinguen entre mayúsculas y minúsculas.

Los saltos de línea se incluyen únicamente para que los atributos sean más legibles.

Set-Cookie:
CloudFront-Policy=base64 encoded version of the policy statement;
Domain=optional domain name;
Path=/optional directory path;

196
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

Secure;
HttpOnly

Set-Cookie:
CloudFront-Signature=hashed and signed version of the policy statement;
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly

Set-Cookie:
CloudFront-Key-Pair-Id=public key ID for the CloudFront public key whose corresponding
private key you're using to generate the signature;
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly

(Opcional) Domain

Nombre de dominio del archivo solicitado. Si no especifica un atributo Domain, el valor


predeterminado será el nombre de dominio de la URL; esto es aplicable solo al nombre de
dominio especificado, no a subdominios. Si especifica un atributo Domain, también será aplicable
a 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 el
valor del atributo Domain deberán coincidir.

Puede especificar el nombre de dominio que CloudFront ha asignado a la distribución, por


ejemplo, d111111abcdef8.cloudfront.net, pero no puede especificar *.cloudfront.net para el
nombre de dominio.

Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe
añadir dicho nombre de dominio a su distribución independientemente de que especifique el
atributo Domain. Para obtener más información, consulte Nombres de dominio alternativos
(CNAME) (p. 61) en el tema Valores que deben especificarse al crear o actualizar una
distribución (p. 43).
(Opcional) Path

Ruta del archivo solicitado. Si no especifica un atributo Path, el valor predeterminado será la ruta
de la URL.
Secure

Requiere que el espectador cifre cookies antes de enviar una solicitud. Recomendamos que
envíe el encabezado Set-Cookie a través de una conexión HTTPS para asegurarse de que los
atributos de la cookie estén protegidos contra ataques man-in-the-middle.
HttpOnly

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 Creación de una
firma para una cookie firmada que utiliza una política personalizada (p. 203).

La instrucción de política controla el acceso que una cookie firmada concede a un usuario. Incluye
los archivos a los que el usuario puede acceder, una fecha y hora de vencimiento, una fecha y
hora opcionales a las que la URL se convierte en válida y una dirección IP opcional o un intervalo
de direcciones IP a las que se permite acceder al archivo.

197
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

CloudFront-Signature

Una versión firmada, a la que se le ha aplicado una función hash y codificada en base64 de la
instrucción de política JSON. Para obtener más información, consulte Creación de una firma para
una cookie firmada que utiliza una política personalizada (p. 203).
CloudFront-Key-Pair-Id

El ID de una clave pública de CloudFront, por ejemplo, K2JCJMDEHXQW5F. El ID de clave pública


indica a CloudFront qué clave pública usar para validar la URL firmada. CloudFront compara la
información de la firma con la información de la instrucción de política para comprobar que la URL
no se ha manipulado.

Esta clave pública debe pertenecer a un grupo de claves que tiene un signatario de confianza
en la distribución. Para obtener más información, consulte Especificación de los signatarios que
pueden crear URL firmadas y cookies firmadas (p. 166).

Encabezados Set-Cookie de ejemplo de una cookie firmada cuando se usa el nombre de dominio
asociado a la distribución en las URL de los archivos:

Set-Cookie: CloudFront-
Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93
Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_;
Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net;
Path=/; Secure; HttpOnly

Encabezados Set-Cookie de ejemplo de una cookie firmada cuando se usa el nombre de dominio
alternativo example.org en las URL de los archivos:

Set-Cookie: CloudFront-
Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93
Domain=example.org; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/;
Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure;
HttpOnly

Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe añadir dicho
nombre de dominio a su distribución independientemente de que especifique el atributo Domain. Para
obtener más información, consulte Nombres de dominio alternativos (CNAME) (p. 61) en el tema Valores
que deben especificarse al crear o actualizar una distribución (p. 43).

Creación de una instrucción de política para una cookie firmada que utiliza una
política personalizada
Para crear una instrucción de política para una política personalizada, complete los siguientes pasos.
Para consultar varias instrucciones de políticas de ejemplo que controlan el acceso a archivos de distintas
maneras, consulte Ejemplos de instrucciones de políticas para una cookie firmada que utiliza una política
personalizada (p. 201).

Para crear una instrucción de política para una cookie firmada que use una política personalizada

1. Cree la instrucción de política en el siguiente formato JSON.

198
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

"Statement": [
{
"Resource": "URL of the file",
"Condition": {
"DateLessThan": {
"AWS:EpochTime":required ending date and time in Unix time format
and UTC
},
"DateGreaterThan": {
"AWS:EpochTime":optional beginning date and time in Unix time
format and UTC
},
"IpAddress": {
"AWS:SourceIp": "optional IP address"
}
}
}
]
}

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 que se especifican en la instrucción de política de una política
personalizada para cookies firmadas (p. 199).
2. Elimine todos los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la
instrucción de la política. Es posible que tenga que incluir caracteres de escape en la cadena del
código de la aplicación.
3. Codifique la instrucción de política con codificación base64 de MIME. Para obtener más información,
consulte la Section 6.8, Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose
Internet Mail Extensions) Part One: Format of Internet Message Bodies.
4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En la
siguiente tabla se muestran los caracteres válidos y no válidos.

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 Creación de una firma para una cookie firmada que utiliza una política
personalizada (p. 203).

Valores que se especifican en la instrucción de política de una política personalizada para cookies
firmadas

Al crear una instrucción de política para una política personalizada, debe especificar los siguientes valores.

199
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

Recurso

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 obtener acceso a todos los archivos
asociados a cualquier distribución que esté asociada al par de claves utilizado para crear la
URL firmada.

Puede especificar solo un valor en Resource.

Tenga en cuenta lo siguiente:


• Protocol (Protocolo): el valor debe comenzar con http:// o https://.
• Query string parameters (Parámetros de cadena de consulta): si no tiene parámetros de cadena de
consulta, omita el signo de interrogación.
• Wildcards (Caracteres comodín): puede utilizar el carácter comodín que coincide con cero o 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 archivos:


• 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 (Nombres de dominio alternativos): si especifica un nombre de dominio
alternativo (CNAME) en la URL, debe especificarlo al hacer referencia al archivo en la página web o
aplicación. No especifique la URL de Amazon S3 para el archivo.
DateLessThan

La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universal
coordinada (UTC). No incluya el valor entre comillas.

Por ejemplo, 16 de marzo de 2015 a las 10:00 h UTC pasa a ser 1426500000 en formato de tiempo
Unix.

Para obtener más información, consulte ¿Cuándo comprueba CloudFront la fecha y hora de
vencimiento de una cookie firmada? (p. 191).
DateGreaterThan (opcional)

Una fecha y hora de inicio opcionales de la URL en formato de tiempo Unix (en segundos) y hora
universal coordinada (UTC). Los usuarios no tienen permiso para obtener acceso al archivo antes de
la fecha y la hora especificadas. No incluya el valor entre comillas.
IpAddress (opcional)

La dirección IP del cliente que hace la solicitud GET. Tenga en cuenta lo siguiente:
• Para permitir que cualquier dirección IP obtenga acceso al archivo, omita el parámetro IpAddress.
• Puede especificar una dirección IP o a un rango de direcciones IP. Por ejemplo, no puede configurar
la política para permitir el acceso si la dirección IP del cliente está en uno de dos rangos separados.

200
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

• Para permitir el acceso desde una única dirección IP, especifique:

"Dirección IP IPv4/32"
• Debe especificar rangos de direcciones IP en formato estándar IPv4 CIDR (por ejemplo,
192.0.2.0/24). Para obtener más información, consulte RFC 4632, Classless Inter-domain
Routing (CIDR): The Internet Address Assignment and Aggregation Plan, https://tools.ietf.org/html/
rfc4632.
Important

Direcciones IP en formato IPv6, como 2001:0db8:85a3:0000:0000:8a2e:0370:7334, no son


compatibles.

Si está utilizando una política personalizada que incluya IpAddress, no habilite IPv6 para la
distribución. Si desea restringir el acceso a algún contenido por dirección IP y admite solicitudes
IPv6 de otro contenido, puede crear dos distribuciones. Para obtener más información, consulte
Habilitar IPv6 (p. 66) en el tema Valores que deben especificarse al crear o actualizar una
distribución (p. 43).

Ejemplos de instrucciones de políticas para una cookie firmada que utiliza una
política personalizada
En los siguientes ejemplos de instrucciones de políticas, se muestra cómo controlar el acceso a un archivo
específico, a todos los archivos de un directorio o a todos los archivos asociados a un ID de par de claves.
Los ejemplos también muestran cómo controlar el acceso de una dirección IP individual o a un rango de
direcciones IP, y cómo impedir que los usuarios utilicen la cookie firmada después de una fecha y hora
específicas.

Si copia y pega cualquiera de estos ejemplos, elimine los espacios en blanco (incluidos los tabuladores y
los caracteres de línea nueva), sustituya los valores por sus propios valores e incluya un carácter de línea
nueva después de la llave de cierre ( } ).

Para obtener más información, consulte Valores que se especifican en la instrucción de política de una
política personalizada para cookies firmadas (p. 199).

Temas
• Ejemplo de instrucción de política: acceso a un archivo desde un intervalo de direcciones IP (p. 201)
• Ejemplo de instrucción de política: acceso a todos los archivos de un directorio desde un intervalo de
direcciones IP (p. 202)
• Ejemplo de instrucción de política: acceso a todos los archivos asociados con un ID de par de claves
desde una dirección IP (p. 202)

Ejemplo de instrucción de política: acceso a un archivo desde un intervalo de direcciones IP

En la siguiente política personalizada de ejemplo de una cookie firmada se especifica que un usuario
puede acceder al archivo http://d111111abcdef8.cloudfront.net/game_download.zip desde
las direcciones IP incluidas en el intervalo 192.0.2.0/24 hasta el 1 de enero de 2013 a las 10:00 h UTC:

{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/game_download.zip",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.0/24"
},

201
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

"DateLessThan": {
"AWS:EpochTime": 1357034400
}
}
}
]
}

Ejemplo de instrucción de política: acceso a todos los archivos de un directorio desde un intervalo
de direcciones IP

La siguiente política personalizada de ejemplo le permite crear cookies firmadas para cualquier archivo
del directorio training, tal y como indica el carácter comodín * del parámetro Resource. Los usuarios
podrán obtener acceso al archivo desde una dirección IP incluida en el rango 192.0.2.0/24 hasta el 1
de enero de 2013 a las 10:00 h UTC:

{
"Statement": [
{
"Resource": "http://d111111abcdef8.cloudfront.net/training/*",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.0/24"
},
"DateLessThan": {
"AWS:EpochTime": 1357034400
}
}
}
]
}

Cada cookie firmada en la que utilice esta política tendrá una URL base que identificará un archivo
específico; por ejemplo:

http://d111111abcdef8.cloudfront.net/training/orientation.pdf

Ejemplo de instrucción de política: acceso a todos los archivos asociados con un ID de par de
claves desde una dirección IP

La siguiente política personalizada de ejemplo le permite establecer cookies firmadas para cualquier
archivo asociado a cualquier distribución, tal y como indica el carácter comodín * del parámetro Resource.
El usuario debe utilizar la dirección IP 192.0.2.10/32. (El valor 192.0.2.10/32 en notación CIDR se
refiere a la dirección IP individual 192.0.2.10). Los archivos solo van a estar disponibles desde el 1 de
enero de 2013 a las 10:00 h UTC hasta el 2 de enero de 2013 a las 10:00 h UTC:

{
"Statement": [
{
"Resource": "http://*",
"Condition": {
"IpAddress": {
"AWS:SourceIp": "192.0.2.10/32"
},
"DateGreaterThan": {
"AWS:EpochTime": 1357034400
},
"DateLessThan": {
"AWS:EpochTime": 1357120800
}

202
Amazon CloudFront Guía para desarrolladores
Uso de cookies firmadas

}
}
]
}

Cada cookie firmada en la que utiliza esta política incluye una URL base que identifica un archivo
específico de una distribución de CloudFront específica; por ejemplo:

http://d111111abcdef8.cloudfront.net/training/orientation.pdf

La cookie firmada también incluye un ID de par de claves que se debe asociar con un grupo de claves de
confianza en la distribución (d111111abcdef8.cloudfront.net) que se especifica en la URL base.

Creación de una firma para una cookie firmada que utiliza una política
personalizada
La firma de una cookie firmada que utiliza una política personalizada es una versión de la instrucción de
política a la que se le ha aplicado una función hash, firmada y codificada con base64.

Para obtener más información y ejemplos de cómo resumir, aplicar una función hash y codificar la
instrucción de política, consulte:

• Uso de comandos de Linux y OpenSSL para codificación y cifrado base64 (p. 204)
• Ejemplos de código para la creación de una firma para una URL firmada (p. 204)

Para crear una firma para una cookie firmada con una política personalizada

1. Use la función hash SHA-1 y RSA para resumir y firmar la instrucción de política JSON creada en
el procedimiento Para crear una instrucción de política para una URL firmada que use una política
personalizada (p. 183). Utilice la versión de la instrucción de política que ya no incluye espacios en
blanco pero que aún no se ha codificado con base64.

Para la clave privada requerida por la función hash, utilice una clave privada cuya clave pública esté
en un grupo de claves de confianza activo para la distribución.
Note

El método que utilice para resumir y aplicar una función hash la instrucción de política
depende de su lenguaje de programación y plataforma. Para ver código de muestra, consulte
Ejemplos de código para la creación de una firma para una URL firmada (p. 204).
2. Elimine los espacios en blanco (incluidos tabuladores y caracteres de línea nueva) de la cadena a la
que se le ha aplicado una función hash y firmada.
3. Codifique la cadena con codificación base64 de MIME. Para obtener más información, consulte la
Section 6.8, Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose Internet Mail
Extensions) Part One: Format of Internet Message Bodies.
4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En la
siguiente tabla se muestran los caracteres válidos y no válidos.

Sustituya los caracteres no válidos Por estos caracteres válidos

+ - (guion)

= _ (guion bajo)

/ ~ (tilde)

203
Amazon CloudFront Guía para desarrolladores
Uso de comandos de Linux y OpenSSL
para codificación y cifrado base64

5. Incluya el valor resultante en el encabezado Set-Cookie, en el par nombre-valor


CloudFront-Signature=, y vuelva a Para establecer cookies firmadas mediante una política
personalizada (p. 196) para añadir el encabezado Set-Cookie en CloudFront-Key-Pair-Id.

Uso de comandos de Linux y OpenSSL para


codificación y cifrado base64
Utilice los siguientes comandos de línea de comandos de Linux y OpenSSL para aplicar una función hash
y firmar la instrucción de política, codificar la firma con base64 y sustituir caracteres que no sean válidos en
los parámetros de cadenas de consulta de URL por caracteres válidos.

Para obtener información acerca de OpenSSL, consulte https://www.openssl.org.

cat policy | tr -d "\n" | tr -d " \t\n\r" | openssl sha1 -sign


private_key.pem | openssl base64 | tr -- '+=/' '-_~'

donde:

cat lee el archivo policy.

tr -d "\n" | tr -d " \t\n\r" elimina el carácter de nueva línea y los espacios en blanco
añadidos por cat.

OpenSSL codifica el archivo con el hash SHA-1 y lo firma con RSA y con el archivo de clave privada
private_key.pem.

OpenSSL codifica en base64 la instrucción de política a la que se le ha aplicado una función hash y
que se ha firmado.

tr sustituye los caracteres no válidos de los parámetros de cadenas de consulta de URL por
caracteres válidos.

Para consultar ejemplos de código que demuestren la creación de una firma en varios lenguajes de
programación, consulte Ejemplos de código para la creación de una firma para una URL firmada (p. 204).

Ejemplos de código para la creación de una firma para


una URL firmada
En esta sección se incluyen ejemplos de aplicación descargables en los que se muestra cómo crear firmas
para URL firmadas. Los ejemplos están disponibles en Perl, PHP, C # y Java. Puede utilizar cualquiera de
los ejemplos para crear URL firmadas. El script Perl se ejecuta en plataformas Linux y macOS. El ejemplo
de PHP funcionará en cualquier servidor que ejecute PHP. El ejemplo de C # utiliza .NET Framework.

Para obtener un código de ejemplo en JavaScript (Node.js), consulte Creación de URL firmadas de
Amazon CloudFront en Node.js en el blog para desarrolladores de AWS.

Para obtener un código de ejemplo en Python, consulte el método generate_presigned_url() en la


Referencia de la API de AWS SDK for Python (Boto3) y este código de ejemplo en el repositorio de Boto3
GitHub.

Temas

204
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

• Crear una firma de URL con Perl (p. 205)


• Crear una firma de URL con PHP (p. 212)
• Crear una firma de URL mediante C # y .NET Framework (p. 216)
• Crear una firma de URL con Java (p. 222)

Crear una firma de URL con Perl


Esta sección incluye un script Perl para plataformas Linux/Mac que puede utilizar para crear la firma
para contenido privado. Para crear la firma, ejecute el script con argumentos de línea de comandos que
especifiquen la URL de CloudFront, la ruta a la clave privada del signatario, el ID de la clave y una fecha
de 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 mediante
una URL firmada. Para obtener más información acerca del proceso completo, consulte Uso de
URL firmadas (p. 174).

Temas
• Código fuente del script Perl para crear una URL firmada (p. 205)

Código fuente del script Perl para crear una URL firmada
El siguiente código fuente Perl puede utilizarse para crear una URL firmada para CloudFront. Los
comentarios del código incluyen información acerca de los conmutadores de las líneas de comandos y las
características de la herramienta.

#!/usr/bin/perl -w

# Copyright 2008 Amazon Technologies, Inc. Licensed under the Apache License, Version 2.0
(the "License");
# you may not use this file except in compliance with the License. You may obtain a copy of
the License at:
#
# http://aws.amazon.com/apache2.0
#
# This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.
# See the License for the specific language governing permissions and limitations under the
License.

=head1 cfsign.pl

cfsign.pl - A tool to generate and verify Amazon CloudFront signed URLs

=head1 SYNOPSIS

This script uses an existing RSA key pair to sign and verify Amazon CloudFront signed URLs

View the script source for details as to which CPAN packages are required beforehand.

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

205
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

cfsign.pl --action encode --url http://images.my-website.com/gallery1.zip --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=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjo
Pair-Id=mykey"

To generate an RSA key pair, you can use openssl and the following commands:

# Generate a 2048 bit key pair


openssl genrsa -out private-key.pem 2048
openssl rsa -in private-key.pem -pubout -out public-key.pem

=head1 OPTIONS

=over 8

=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 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 and
the --policy option are specified, --policy will be used. Otherwise, this
option alone will use a canned policy.

=back

=cut

use strict;
use warnings;

206
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

# 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 File::Slurp;
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 = "";
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

207
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

$url = $stream;
}

if ($action eq "encode") {
# The encode action will generate a private content URL given a base URL,
# a policy file (or an expires timestamp) and a key pair id parameter
my $private_key;
my $public_key;
my $public_key_file;

my $policy;
if ($policy_filename eq "") {
if ($expires_epoch == 0) {
print STDERR "Must include policy filename with --policy argument or an
expires" .
"time using --expires\n";
}

$policy = $CANNED_POLICY;
$policy =~ s/<EXPIRES>/$expires_epoch/g;
$policy =~ s/<RESOURCE>/$url/g;
} else {
if (! -e $policy_filename) {
print STDERR "Policy file $policy_filename does not exist\n";
exit;
}
$expires_epoch = 0; # ignore if set
$policy = read_file($policy_filename);
}

if ($private_key_filename eq "") {
print STDERR "You must specific the path to your private key file with --private-
key\n";
exit;
}

if (! -e $private_key_filename) {
print STDERR "Private key file $private_key_filename does not exist\n";
exit;
}

if ($key_pair_id eq "") {
print STDERR "You must specify a key pair id with --key-pair-id\n";
exit;
}

my $encoded_policy = url_safe_base64_encode($policy);
my $signature = rsa_sha1_sign($policy, $private_key_filename);
my $encoded_signature = url_safe_base64_encode($signature);

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;

208
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

print_decoded_url($decoded);
} else {
# No action specified, print help. But only if this is run as a program (caller will
be empty)
pod2usage(1) unless caller();
}

# Decode a private content URL into its component parts


sub 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;
}

my $encoded_signature = "";
if (exists $params{$SIGNATURE_PARAM}) {
$encoded_signature = $params{"Signature"};
} else {
print STDERR "Missing Signature URL parameter\n";
return 0;
}

my $encoded_policy = "";
if (exists $params{$POLICY_PARAM}) {
$encoded_policy = $params{$POLICY_PARAM};
} else {
if (!exists $params{$EXPIRES_PARAM}) {
print STDERR "Either the Policy or Expires URL parameter needs to be
specified\n";
return 0;
}

my $expires = $params{$EXPIRES_PARAM};

my $policy = $CANNED_POLICY;
$policy =~ s/<EXPIRES>/$expires/g;

my $url_without_cf_params = $url;
$url_without_cf_params =~ s/$SIGNATURE_PARAM=[^&]*&?//g;
$url_without_cf_params =~ s/$POLICY_PARAM=[^&]*&?//g;
$url_without_cf_params =~ s/$EXPIRES_PARAM=[^&]*&?//g;
$url_without_cf_params =~ s/$KEY_PAIR_ID_PARAM=[^&]*&?//g;

if ($url_without_cf_params =~ /(.*)\?$/) {
$url_without_cf_params = $1;
}

$policy =~ s/<RESOURCE>/$url_without_cf_params/g;

$encoded_policy = url_safe_base64_encode($policy);
}

my $key = "";
if (exists $params{$KEY_PAIR_ID_PARAM}) {
$key = $params{$KEY_PAIR_ID_PARAM};
} else {

209
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

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 out


sub print_decoded_url {
my $decoded = shift;

print "Base URL: \n" . $decoded->{"base_url"} . "\n";


print "Policy: \n" . $decoded->{"policy"} . "\n";
print "Key: \n" . $decoded->{"key"} . "\n";
}

# Encode a string with base 64 encoding and replace some invalid URL characters
sub url_safe_base64_encode {
my ($value) = @_;

my $result = encode_base64($value);
$result =~ tr|+=/|-_~|;

return $result;
}

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


sub 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;
}

210
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

# 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 file
sub rsa_sha1_sign {
my ($to_sign, $pvkFile) = @_;
print "openssl sha1 -sign $pvkFile $to_sign\n";

return write_to_program($pvkFile, $to_sign);


}

# Helper function to write data to a program


sub write_to_program {
my ($keyfile, $data) = @_;
unlink "temp_policy.dat" if (-e "temp_policy.dat");
unlink "temp_sign.dat" if (-e "temp_sign.dat");

write_file("temp_policy.dat", $data);

system("openssl dgst -sha1 -sign \"$keyfile\" -out temp_sign.dat temp_policy.dat");

my $output = read_file("temp_sign.dat");

return $output;
}

# Read a file into a string and return the string


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

211
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

my ($url) = @_;

$url =~ s/\?/%3F/g;
$url =~ s/=/%3D/g;
$url =~ s/&/%26/g;

return $url;
}

1;

Crear una firma de URL con PHP


Cualquier servidor web que ejecute PHP puede utilizar este código de ejemplo de PHP para crear
instrucciones de política y firmas para distribuciones de CloudFront privadas. El ejemplo completo crea una
página web que funciona con enlaces de URL firmadas que reproducen una secuencia de vídeo mediante
streaming de CloudFront. Puede descargar el ejemplo completo en https://docs.aws.amazon.com/
AmazonCloudFront/latest/DeveloperGuide/samples/demo-php.zip.

También puede crear URL firmadas mediante la clase UrlSigner en el AWS SDK para PHP. Para
obtener más información, consulte Class UrlSigner en la Referencia de la API de AWS SDK para PHP.
Note

Crear una firma de URL es solo una parte del proceso de entrega de contenido privado mediante
una URL firmada. Para obtener más información acerca de todo el proceso, consulte Uso de URL
firmadas (p. 174).

Temas
• Ejemplo: firma RSA SHA-1 (p. 212)
• Ejemplo: crear política predefinida (p. 213)
• Ejemplo: crear una política personalizada (p. 213)
• Ejemplo de código completo (p. 214)

Ejemplo: firma RSA SHA-1


En el siguiente código de ejemplo, la función rsa_sha1_sign aplica el algoritmo hash y firma la
instrucción de política. Los argumentos requeridos son una instrucción de política y la clave privada que
corresponde a una clave pública que está en un grupo de claves de confianza para la distribución. A
continuación, la función url_safe_base64_encode crea una versión de la firma de URL segura.

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

212
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

function url_safe_base64_encode($value) {
$encoded = base64_encode($value);
// replace unsafe characters +, = and / with
// the safe characters -, _ and ~
return str_replace(
array('+', '=', '/'),
array('-', '_', '~'),
$encoded);
}

Ejemplo: crear política predefinida


El siguiente código de ejemplo crea una instrucción de política predefinida para la firma. Para obtener más
información acerca de políticas predefinidas, consulte Creación de una URL firmada mediante una política
predefinida (p. 177).
Note

La variable $expires es una marca temporal fecha/hora que debe ser un número entero, no una
cadena.

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

// 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);
}

Ejemplo: crear una política personalizada


El siguiente código de ejemplo crea una instrucción de política personalizada para la firma. Para obtener
más información acerca de políticas personalizadas, consulte Creación de una URL firmada mediante una
política personalizada (p. 181).

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);
}

213
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

Ejemplo de código completo


El siguiente código de muestra proporciona una demostración completa de la creación de URL firmadas
de CloudFront con PHP. Puede descargar este ejemplo completo en https://docs.aws.amazon.com/
AmazonCloudFront/latest/DeveloperGuide/samples/demo-php.zip.

<?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);
}

function create_stream_name($stream, $policy, $signature, $key_pair_id, $expires) {


$result = $stream;
// if the stream already contains query parameters, attach the new query parameters to
the end
// otherwise, add the query parameters
$separator = strpos($stream, '?') == FALSE ? '?' : '&';
// the presence of an expires time means we're using a canned policy
if($expires) {
$result .= $path . $separator . "Expires=" . $expires . "&Signature=" .
$signature . "&Key-Pair-Id=" . $key_pair_id;
}
// not using a canned policy, include the policy itself in the stream name
else {
$result .= $path . $separator . "Policy=" . $policy . "&Signature=" . $signature .
"&Key-Pair-Id=" . $key_pair_id;
}

// new lines would break us, so remove them


return str_replace('\n', '', $result);
}

function encode_query_params($stream_name) {
// Adobe Flash Player has trouble with query parameters being passed into it,
// so replace the bad characters with their URL-encoded forms
return str_replace(
array('?', '=', '&'),
array('%3F', '%3D', '%26'),
$stream_name);
}

214
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

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 . '}}}]}';
// the policy contains characters that cannot be part of a URL, so we base64 encode it
$encoded_policy = url_safe_base64_encode($canned_policy);
// sign the original policy, not the encoded version
$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);

// 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 support Flash Player
return encode_query_params($stream_name);
}

function get_custom_policy_stream_name($video_path, $private_key_filename, $key_pair_id,


$policy) {
// the policy contains characters that cannot be part of a URL, so we base64 encode it
$encoded_policy = url_safe_base64_encode($policy);
// sign the original policy, not the encoded version
$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 support Flash Player
return encode_query_params($stream_name);
}

// Path to your private key. Be very careful that this file is not accessible
// from the web!

$private_key_filename = '/home/test/secure/example-priv-key.pem';
$key_pair_id = 'K2JCJMDEHXQW5F';

$video_path = 'example.mp4';

$expires = time() + 300; // 5 min from now


$canned_policy_stream_name = get_canned_policy_stream_name($video_path,
$private_key_filename, $key_pair_id, $expires);

$client_ip = $_SERVER['REMOTE_ADDR'];
$policy =
'{'.
'"Statement":['.
'{'.
'"Resource":"'. $video_path . '",'.
'"Condition":{'.
'"IpAddress":{"AWS:SourceIp":"' . $client_ip . '/32"},'.
'"DateLessThan":{"AWS:EpochTime":' . $expires . '}'.
'}'.
'}'.
']' .
'}';
$custom_policy_stream_name = get_custom_policy_stream_name($video_path,
$private_key_filename, $key_pair_id, $policy);

215
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

?>

<html>

<head>
<title>CloudFront</title>
<script type='text/javascript' src='https://example.cloudfront.net/player/swfobject.js'></
script>
</head>

<body>
<h1>Amazon CloudFront</h1>
<h2>Canned Policy</h2>
<h3>Expires at <?= gmdate('Y-m-d H:i:s T', $expires) ?></h3>
<br />

<div id='canned'>The canned policy video will be here</div>

<h2>Custom Policy</h2>
<h3>Expires at <?= gmdate('Y-m-d H:i:s T', $expires) ?> only viewable by IP <?=
$client_ip ?></h3>
<div id='custom'>The custom policy video will be here</div>

<!-- ************** Have to update the player.swf path to a real JWPlayer instance.
The fake one means that external people cannot watch the video right now -->
<script type='text/javascript'>
var so_canned = new SWFObject('https://files.example.com/
player.swf','mpl','640','360','9');
so_canned.addParam('allowfullscreen','true');
so_canned.addParam('allowscriptaccess','always');
so_canned.addParam('wmode','opaque');
so_canned.addVariable('file','<?= $canned_policy_stream_name ?>');
so_canned.addVariable('streamer','rtmp://example.cloudfront.net/cfx/st');
so_canned.write('canned');

var so_custom = new SWFObject('https://files.example.com/


player.swf','mpl','640','360','9');
so_custom.addParam('allowfullscreen','true');
so_custom.addParam('allowscriptaccess','always');
so_custom.addParam('wmode','opaque');
so_custom.addVariable('file','<?= $custom_policy_stream_name ?>');
so_custom.addVariable('streamer','rtmp://example.cloudfront.net/cfx/st');
so_custom.write('custom');
</script>
</body>

</html>

Véase también:

• Crear una firma de URL con Perl (p. 205)


• Crear una firma de URL mediante C # y .NET Framework (p. 216)
• Crear una firma de URL con Java (p. 222)

Crear una firma de URL mediante C # y .NET Framework


Los ejemplos de C# de esta sección implementan una aplicación de ejemplo que muestra cómo crear
las firmas para distribuciones privadas de CloudFront mediante instrucciones de políticas predefinidas y
personalizadas. Los ejemplos incluyen funciones de utilidad basadas en AWS SDK para .NET que pueden
resultar útiles en aplicaciones .NET.

216
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

También puede crear URL firmadas y cookies firmadas a través de AWS SDK para .NET. En la Referencia
de la API de AWS SDK para .NET, consulte los siguientes temas:

• URL firmadas: Amazon.CloudFront > AmazonCloudFrontUrlSigner


• Cookies firmadas: Amazon.CloudFront > AmazonCloudFrontCookieSigner

Note

Crear una firma de URL es solo una parte del proceso de entrega de contenido privado mediante
una URL firmada. Para obtener más información acerca de todo el proceso, consulte Uso de URL
firmadas (p. 174).

Para descargar el código, diríjase a Código de firma en C#.

Para utilizar una clave RSA en .NET Framework, debe convertir el archivo .pem suministrado 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 que
se indican a continuación:

• Crea una instrucción de política.


• La instrucción de política aplica la función hash mediante SHA1 y firma el resultado con RSA y la clave
privada cuya clave pública correspondiente se encuentra en un grupo de claves de confianza.

217
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

• Codifica con base64 la instrucción de política a la que se le ha aplicado una función hash y firmada y
sustituye caracteres especiales para que la cadena se pueda usar tranquilamente como parámetro de
solicitud de URL.
• Encadena los valores.

Para ver la implementación completa, consulte el ejemplo disponible en Código de firma en C#.

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");

218
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

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.
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
que se indican a continuació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. La instrucción de política aplica la función hash mediante SHA1 y cifra el resultado mediante RSA y la
clave privada cuya clave pública correspondiente se encuentra en un grupo de claves de confianza.
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 de
URL.
5. Encadena los valores.

Para ver la implementación completa, consulte el ejemplo disponible en Código de firma en 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(

219
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

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

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 tiempo
para 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))

220
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

{
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);
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);

221
Amazon CloudFront Guía para desarrolladores
Ejemplos de código para URL firmadas

default:
return new TimeSpan(0, 0, 0, 0);
}
}

public static string CopyExpirationTimeFromPolicy(string policyStatement)


{
int startExpiration = policyStatement.IndexOf("EpochTime");
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. 205)


• Crear una firma de URL con PHP (p. 212)
• Crear una firma de URL con Java (p. 222)

Crear una firma de URL con Java


Además del ejemplo de código siguiente, puede utilizar la clase de utilidad CloudFrontUrlSigner de
AWS SDK for Java (versión 1) para crear direcciones URL firmadas de CloudFront (p. 174).
Note

La creación de una URL firmada es solo una parte del proceso de entrega de contenido privado
con CloudFront (p. 164). Para obtener más información acerca de todo el proceso, consulte Uso
de URL firmadas (p. 174).

En el ejemplo siguiente se muestra cómo crear una URL firmada de CloudFront. Debe convertir la clave
privada de formato PEM a formato DER para que las implementaciones de Java puedan usarla.

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

222
Amazon CloudFront Guía para desarrolladores
Restricción del acceso al contenido de Amazon S3

String policyResourcePath = "https://" + distributionDomain + "/" + s3ObjectKey;

// Convert your DER file into a byte array.

byte[] derPrivateKey = ServiceUtils.readInputStreamToBytes(new


FileInputStream(privateKeyFilePath));

// Generate a "canned" signed URL to allow access to a


// specific distribution and file

String signedUrlCanned = CloudFrontService.signUrlCanned(


"https://" + 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
"https://" + 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. 205)


• Crear una firma de URL con PHP (p. 212)
• Crear una firma de URL mediante C # y .NET Framework (p. 216)

Restricción del acceso a contenido de Amazon S3


utilizando una identidad de acceso de origen
Para restringir el acceso al contenido que distribuye desde los buckets de Amazon S3, siga estos pasos:

1. Cree un usuario de CloudFront especial denominado identidad de acceso de origen (OAI) y asócielo a la
distribución.

223
Amazon CloudFront Guía para desarrolladores
Información general de la configuración de OAI

2. Configure los permisos del bucket de S3 para que CloudFront pueda usar la OAI para acceder a los
archivos del bucket y distribuirlos a los usuarios. Asegúrese de que los usuarios no pueden usar una
URL directa al bucket de S3 para acceder a un archivo allí.

Después de realizar estos pasos, los usuarios solo pueden acceder a los archivos a través de CloudFront,
no directamente desde el bucket de S3.

En general, si utiliza un bucket de Amazon S3 como origen de una distribución de CloudFront, puede
permitir que todo el mundo tenga acceso a los archivos allí o puede restringir el acceso. Si restringe el
acceso utilizando, por ejemplo, URL o cookies firmadas de CloudFront, tampoco querrá que nadie pueda
consultar los archivos utilizando únicamente la URL de Amazon S3 directa para el archivo. En su lugar,
querrá que solo puedan acceder a los archivos utilizando la URL de CloudFront para que las protecciones
funcionen. Para obtener más información sobre el uso de URL firmadas y cookies firmadas, consulte
Distribución de contenido privado con URL firmadas y cookies firmadas (p. 164).

En este tema se explica en detalle cómo configurar la OAI y le conceden permisos para mantener un
acceso seguro a los archivos de S3.
Important

Si utiliza un bucket de Amazon S3 configurado como punto de enlace de un sitio web, debe
configurarlo con CloudFront como origen personalizado. No puede utilizar la característica
de identidad de acceso de origen descrita en este tema. Sin embargo, puede restringir el
acceso a contenido en un origen personalizado a través de la configuración de encabezados
personalizados y configurando su origen para que los requiera. Para obtener más información,
consulte Restricción del acceso a archivos en orígenes personalizados (p. 165).

Temas
• Información general de la configuración de OAI (p. 224)
• Crear una OAI de CloudFront y agregarla a la distribución (p. 225)
• Concesión de permiso a la OAI para leer los archivos del bucket de Amazon S3 (p. 227)
• Uso de una OAI en regiones de Amazon S3 que solo admiten autenticación Signature Version
4 (p. 230)

Información general de la configuración de OAI


La primera vez que se configura un bucket de Amazon S3 como origen de una distribución de CloudFront,
se concede a todo el mundo permiso de lectura para los archivos del bucket. Esto permite a cualquier
persona acceder a los archivos a través de CloudFront o mediante la URL de Amazon S3. CloudFront no
expone las URL de Amazon S3, pero es posible que los usuarios tengan esas URL si la aplicación ofrece
archivos directamente de Amazon S3 o si alguien proporciona enlaces directos a determinados archivos de
Amazon S3.

Si utiliza URL firmadas de CloudFront o cookies firmadas para restringir el acceso a los archivos del bucket
de Amazon S3, probablemente también desee impedir que los usuarios accedan a los archivos de Amazon
S3 mediante las URL de Amazon S3. Si los usuarios acceden a los archivos directamente en Amazon S3,
eludirán los controles proporcionados por las URL o las cookies firmadas por CloudFront. Esto incluye el
control sobre la fecha y la hora en que un usuario ya no puede acceder a su contenido y el control sobre
qué direcciones IP se pueden usar para acceder al contenido. Además, si los usuarios acceden a los
archivos a través de CloudFront y directamente mediante las URL de Amazon S3, los registros de acceso
de CloudFront son menos útiles porque están incompletos.

Para asegurarse de que los usuarios acceden a los archivos solo con las URL de CloudFront,
independientemente de que dichas URL estén firmadas o no, haga lo siguiente:

224
Amazon CloudFront Guía para desarrolladores
Crear una OAI de CloudFront y agregarla a la distribución

1. Cree una identidad de acceso de origen, que es un usuario de CloudFront especial y asocie dicha
identidad con la distribución. Se asocia la identidad de acceso de origen con los orígenes para que
pueda proteger todo o parte del contenido de Amazon S3. También puede crear una identidad de
acceso de origen y añadirla a la distribución que cree posteriormente. Para obtener más información,
consulte Crear una OAI de CloudFront y agregarla a la distribución (p. 225).
2. Cambie los permisos del bucket de Amazon S3 o de los archivos del bucket para que solo la identidad
de acceso de origen tenga permisos de lectura (o de lectura y descarga). Cuando los usuarios
acceden a los archivos de Amazon S3 a través de CloudFront, la identidad de acceso de origen
de CloudFront obtiene los archivos en nombre de los usuarios. Si los usuarios solicitan archivos
directamente mediante las URL de Amazon S3, se les deniega el acceso. La identidad de acceso de
origen tiene permiso para acceder a los archivos del bucket de Amazon S3, pero los usuarios no. Para
obtener más información, consulte Concesión de permiso a la OAI para leer los archivos del bucket de
Amazon S3 (p. 227).

Crear una OAI de CloudFront y agregarla a la


distribución
Una cuenta de AWS puede tener hasta 100 identidades de acceso de origen (OAI) de
CloudFront (p. 519). Sin embargo, puede añadir un OAI a tantas distribuciones como desee, por lo que
suele bastar con una OAI.

Si no creó ninguna OAI ni la agregó a la distribución cuando creó la distribución, puede crear y agregar una
ahora mediante la consola de CloudFront o la API de CloudFront:

• Para utilizar la consola de CloudFront: puede crear una OAI y agregarla a la distribución en el mismo
momento. Para obtener instrucciones paso a paso, consulte Cómo crear una OAI y añadirla a la
distribución (p. 225).
• Para usar la API de CloudFront: se crea una OAI y, a continuación, se agrega a la distribución. Para
obtener instrucciones paso a paso, consulte lo siguiente:
• Creación de una OAI mediante la API de CloudFront (p. 226)
• Agregar una OAI a la distribución mediante la API de CloudFront (p. 226)

Note

Para crear OAI, debe utilizar la consola de CloudFront o la versión 2009-09-09 de la API de
CloudFront o posterior.

Cómo crear una OAI y añadirla a la distribución


Si no ha creado una OAI al crear la distribución, haga lo siguiente.

Para crear una OAI de CloudFront con 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. Elija el ID de una distribución que tenga un origen de S3.
3. Seleccione la pestaña Origins and Origin Groups (Orígenes y Grupos de orígenes).
4. Active la casilla de verificación situada junto a 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 OAI que desea utilizar, elija Use an Existing Identity (Usar una identidad existente). A
continuación, elija la OAI en la lista Your Identities (Sus identidades) .

225
Amazon CloudFront Guía para desarrolladores
Crear una OAI de CloudFront y agregarla a la distribución

Note

Si ya tiene un OAI, recomendamos reutilizarla para simplificar el mantenimiento.

Si desea crear una OAI, elija Create a New Identity (Crear una identidad). Puede sustituir el nombre
del bucket en el campo Comment (Comentario), por una descripción personalizada.
7. Si desea que CloudFront conceda automáticamente a la OAI permiso de lectura para los archivos del
bucket de Amazon S3 especificado en Origin Domain Name (Nombre de dominio de origen), elija Yes,
Update Bucket Policy (Sí, actualizar la política de bucket).
Important

Si elige Yes, Update Bucket Policy (Sí, actualizar la política de bucket), CloudFront actualiza
los permisos del bucket para conceder a la OAI especificada permiso de lectura a los
archivos del bucket. Sin embargo, CloudFront no elimina los permisos existentes. Si los
usuarios tienen actualmente permisos de acceso a los archivos del bucket mediante las
URL de Amazon S3, los conservarán después de que CloudFront actualice los permisos
del bucket. Para consultar o eliminar los permisos del bucket existentes, utilice un método
proporcionado por Amazon S3.

Si desea actualizar manualmente los permisos del bucket de Amazon S3, elija No, I Will Update
Permissions (No, yo actualizaré los permisos). Para obtener más información, consulte Concesión de
permiso a la OAI para leer los archivos del bucket de Amazon S3 (p. 227).
8. Elija Yes, Edit (Sí, editar).
9. Si tiene más de un origen, repita los pasos con el fin de agregar una OAI para cada uno.

Creación de una OAI mediante la API de CloudFront


Si ya tiene una identidad de acceso de origen y desea reutilizarla en lugar de crear una nueva, pase a
Agregar una OAI a la distribución mediante la API de CloudFront (p. 226).

Para crear una OAI de CloudFront mediante la API de CloudFront, utilice la acción de la API POST
Origin Access Identity. La respuesta incluye los valores de Id y S3CanonicalUserId para la
nueva OAI. Tome nota de estos valores, porque los necesitará más adelante en este proceso:

• Id element (Elemento Id): el valor del elemento Id se usa para asociar la OAI a la distribución.
• S3CanonicalUserId element (Elemento S3CanonicalUserId): el valor del elemento
S3CanonicalUserId se usa al utilizar las ACL del objeto de Amazon S3 para proporcionar acceso a
las OAI a los objetos de Amazon S3.

Para obtener más información, consulte CreateCloudFrontOriginAccessIdentity en la Referencia de la API


de Amazon CloudFront.

Agregar una OAI a la distribución mediante la API de CloudFront


Puede utilizar la API de CloudFront para agregar una OAI de CloudFront a una distribución existente
o crear una distribución nueva que incluya una OAI. En cualquier caso, incluya un elemento
OriginAccessIdentity. Este elemento contiene el valor del elemento Id que la acción POST
Origin Access Identity de la API devolvió al crearse la OAI. Puede añadir el elemento
OriginAccessIdentity a uno o varios orígenes.

Consulte los siguientes temas en la Referencia de la API de Amazon CloudFront:

• Crear una nueva distribución: CreateDistribution


• Actualizar una distribución existente: UpdateDistribution

226
Amazon CloudFront Guía para desarrolladores
Concesión de permiso a la OAI para leer
los archivos del bucket de Amazon S3

Concesión de permiso a la OAI para leer los archivos


del bucket de Amazon S3
Al crear o actualizar una distribución, puede agregar una identidad de acceso de origen (OAI) y actualizar
automáticamente la política de bucket de Amazon S3 para conceder a la OAI permiso de acceso al bucket.
También puede elegir crear o actualizar manualmente la política del bucket o utilizar ACL de objetos que
controlen el acceso a archivos individuales del bucket.

Sea cual sea el método que utilice, debe revisar los permisos para asegurarse de que:

• La OAI de CloudFront puede acceder a los archivos del bucket en nombre de los lectores que los
soliciten a través de CloudFront.
• Los lectores no pueden utilizar las URL de Amazon S3 para acceder a los archivos fuera de CloudFront.

Important

Si configura CloudFront para que acepte y reenvíe todos los métodos HTTP compatibles con
CloudFront, asegúrese de conceder a la OAI de CloudFront los permisos deseados. Por ejemplo,
si configura CloudFront para aceptar y reenviar solicitudes que utilizan el método DELETE,
configure la política de bucket o ACL de objetos para que gestionen las solicitudes DELETE de
forma adecuada para que los lectores solo puedan eliminar archivos que quiera que se eliminen.

Tenga en cuenta lo siguiente:

• Es posible que le resulte más sencillo usar las políticas del bucket de Amazon S3 que las ACL de
objetos porque puede agregar archivos al bucket sin necesidad de actualizar los permisos. Sin embargo,
las ACL ofrecen un control más minucioso, ya que los permisos se conceden para cada archivo.
• De forma predeterminada, el bucket de Amazon S3 y todos los archivos que este contiene son privados.
Solo la cuenta de AWS que creó el bucket tiene permiso para leer o escribir los archivos incluidos en él.
• Si otra cuenta de AWS carga archivos en el bucket, esa cuenta es la propietaria de esos archivos. Las
políticas de los buckets solo se aplican a los archivos del propietario del bucket. Esto significa que si otra
cuenta carga archivos en su bucket, la política del bucket que creó para su OAI no se tendrá en cuenta
con dichos archivos. En ese caso, use ACL de objeto para conceder permisos a su OAI.
• Si va a agregar una OAI a una distribución existente, modifique la política de bucket o cualquier ACL de
objeto según proceda para asegurarse de que los archivos no estén disponibles públicamente fuera de
CloudFront.
• Conceda permisos adicionales a una o más cuentas de administrador seguras para poder continuar
actualizando el contenido del bucket de Amazon S3.

Important

Es posible que se produzca un breve retraso entre el momento de guardado de los cambios de
permisos de Amazon S3 y el momento en el que surten efecto. Hasta que los cambios surtan
efecto, puede que se produzcan errores de denegación de permiso al intentar obtener acceso a
los archivos del bucket.

Uso de las políticas de bucket de Amazon S3


Puede conceder a la OAI de CloudFront acceso a los archivos de un bucket de Amazon S3 mediante la
creación o actualización de la política de bucket de las siguientes maneras:

• Mediante la pestaña Permissions (Permisos) del bucket de Amazon S3 en la consola de Amazon S3.
• Mediante PutBucketPolicy en la API de Amazon S3.

227
Amazon CloudFront Guía para desarrolladores
Concesión de permiso a la OAI para leer
los archivos del bucket de Amazon S3

• Mediante la consola de CloudFront. Cuando agrega una OAI a la configuración de origen en la consola
de CloudFront, puede elegir Yes, Update Bucket Policy (Sí, actualizar política de bucket) para indicar a
CloudFront que actualice la política del bucket en su nombre.

Si actualiza la política del bucket manualmente, asegúrese de:

• Especificar la OAI correcta como Principal en la política.


• Conceder a la OAI los permisos que necesita para obtener acceso a los objetos en nombre de los
lectores.

Para obtener más información, consulte las siguientes secciones.

Especifique una OAI como Principal


Para especificar una OAI como Principal en una política de bucket de Amazon S3, utilice el nombre de
recurso de Amazon (ARN) de la OAI, que incluye el ID de la OAI. Por ejemplo:

"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC"
}

Para utilizar el ejemplo anterior, reemplace EH1HDMB1FH2TC por el ID de la OAI. Para encontrar el
ID de la OAI, consulte la página Identidad de acceso de origen en la consola de CloudFront o utilice
ListCloudFrontOriginAccessIdentities en la API de CloudFront.

También puede especificar una OAI como Principal mediante el ID canónico de Amazon S3. Por
ejemplo:

"Principal": {
"CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"
}

Para utilizar el ejemplo anterior, reemplace


79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be por el ID canónico
de la OAI. Puede buscar el ID canónico de la OAI de la misma manera que busca su ID.
Note

Una ventaja de usar el ARN de la OAI para especificarla como Principal es que es más fácil
entender a quién concede acceso la política de bucket. Los ID canónicos de Amazon S3 pueden
referirse a diferentes tipos de identidades de AWS, no solo a las OAI de CloudFront y puede
resultar difícil determinar a qué identidad se refiere un ID canónico. Cuando se usa del ARN de la
OAI puede ser más fácil entender la política del bucket.
Además, cuando utiliza el ID canónico de la OAI en una política de bucket, AWS reemplaza el ID
canónico por el ARN de la OAI. Cuando escribe una política que especifica un ID canónico de la
OAI y luego ve la misma política, verá que el ID canónico ha sido reemplazado por el ARN de la
OAI correspondiente. Por esta razón, podría tener sentido escribir la política usando el ARN de la
OAI.

Conceda permisos a una OAI


Para conceder a la OAI permisos para acceder a los objetos del bucket de Amazon S3, utilice palabras
clave de la política relacionadas con operaciones específicas de la API de Amazon S3. Por ejemplo, el
permiso s3:GetObject permite a la OAI leer objetos del bucket. Para obtener más información, consulte
los ejemplos de la siguiente sección o consulte Especificación de permisos en una política en la Guía para
desarrolladores de Amazon Simple Storage Service.

228
Amazon CloudFront Guía para desarrolladores
Concesión de permiso a la OAI para leer
los archivos del bucket de Amazon S3

Ejemplos de políticas de bucket de Amazon S3


En los siguientes ejemplos se muestran las políticas de bucket de Amazon S3 que conceden acceso a una
OAI de CloudFront. Para utilizar estos ejemplos:

• Sustituya EH1HDMB1FH2TC por el ID de la OAI. Para encontrar el ID de la OAI, consulte la página


Identidad de acceso de origen en la consola de CloudFront o utilice ListCloudFrontOriginAccessIdentities
en la API de CloudFront.
• Sustituya DOC-EXAMPLE-BUCKET por el nombre del bucket de Amazon S3.

Example Política de bucket de Amazon S3 que concede acceso de lectura a la OAI

El siguiente ejemplo permite a la OAI leer objetos del bucket especificado (s3:GetObject).

{
"Version": "2012-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access
Identity EH1HDMB1FH2TC"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
}
]
}

Example Política de bucket de Amazon S3 que concede acceso de lectura y escritura a la OAI

El siguiente ejemplo permite a la OAI leer y escribir objetos en el bucket (s3:GetObject y


s3:PutObject) especificado. Esto permite a los lectores cargar archivos en el bucket de Amazon S3 a
través de CloudFront.

{
"Version": "2012-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access
Identity EH1HDMB1FH2TC"
},
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
}
]
}

Actualización de las ACL de objetos de Amazon S3


Puede conceder a una OAI de CloudFront acceso a los archivos de un bucket de Amazon S3 creando o
actualizando la ACL de archivos de las siguientes maneras:

229
Amazon CloudFront Guía para desarrolladores
Uso de una OAI en regiones de Amazon S3 que
solo admiten autenticación Signature Version 4

• Mediante la pestaña Permissions (Permisos) del objeto de Amazon S3 en la consola de Amazon S3.
• Mediante PutObjectAcl en la API de Amazon S3.

Cuando concede acceso a una OAI mediante una ACL, debe especificar la OAI mediante el ID de usuario
canónico de Amazon S3. Este es el valor de Amazon S3 Canonical User ID (ID de usuario canónico de
Amazon S3) en la página de identidad de acceso de origen de la consola de CloudFront. Si utiliza la
API de CloudFront, use el valor del elemento S3CanonicalUserId devuelto al crear la OAI o llame a
ListCloudFrontOriginAccessIdentities en la API de CloudFront.

Para obtener más información acerca de las ACL de objetos de Amazon S3, consulte Administración de
acceso con ACL en la Guía para desarrolladores de Amazon Simple Storage Service.

Uso de una OAI en regiones de Amazon S3 que solo


admiten autenticación Signature Version 4
Las regiones de Amazon S3 más recientes requieren que utilice Signature Version 4 para solicitudes
autenticadas. (Para conocer las versiones de Signature admitidas en cada región de Amazon S3, consulte
Amazon Simple Storage Service (S3) en el tema Regiones y puntos de enlace de la Referencia general
de Amazon Web Services). Sin embargo, al crear una identidad de acceso de origen y agregarla a una
distribución de CloudFront, CloudFront normalmente utiliza Signature Version 4 para la autenticación
cuando solicita archivos del bucket de Amazon S3. Si utiliza una identidad de acceso de origen y si su
bucket se encuentra en una de las regiones que requiere autenticación con Signature Version 4, tenga en
cuenta lo siguiente:

• Las solicitudes DELETE, GET, HEAD, OPTIONS y PATCH se admiten sin cualificación.
• Si desea enviar solicitudes PUT a CloudFront para cargar archivos en el bucket de Amazon S3, debe
agregar un encabezado x-amz-content-sha256 a la solicitud. El valor del encabezado debe contener
un hash SHA256 del cuerpo de la solicitud. Para obtener más información, consulte la documentación
sobre el encabezado x-amz-content-sha256 en la página Encabezados de solicitud comunes de la
Referencia de la API de Amazon Simple Storage Service.
• Las solicitudes POST no están admitidas.

Restringir el acceso a los balanceadores de carga


de aplicaciones
Para una aplicación web u otro contenido que proporciona un balanceador de carga de aplicaciones en
Elastic Load Balancing, CloudFront puede almacenar en caché objetos y proporcionarlos directamente
a los usuarios (lectores), lo que reduce la carga en el balanceador de carga de aplicaciones. CloudFront
también puede ayudar a reducir la latencia e incluso absorber algunos ataques de denegación de servicio
distribuido (DDoS). Sin embargo, si los usuarios pueden omitir CloudFront y acceder directamente a su
balanceador de carga de aplicaciones, no obtendrá estos beneficios. Pero puede configurar Amazon
CloudFront y el balanceador de carga de aplicaciones para evitar que los usuarios accedan directamente
al balanceador de carga de aplicaciones. Esto permite a los usuarios acceder al balanceador de carga
de aplicaciones solo a través de CloudFront, lo que garantiza que obtenga los beneficios de utilizar
CloudFront.

Para evitar que los usuarios accedan directamente a un balanceador de carga de aplicaciones y permitir el
acceso solo a través de CloudFront, siga estos pasos de alto nivel:

1. Configure CloudFront para agregar un encabezado HTTP personalizado a las solicitudes que envía al
balanceador de carga de aplicaciones.

230
Amazon CloudFront Guía para desarrolladores
Configuración de CloudFront para agregar un
encabezado HTTP personalizado a las solicitudes

2. Configure el balanceador de carga de aplicaciones para que solo reenvíe solicitudes que contengan el
encabezado HTTP personalizado.
3. (Opcional) Requiera HTTPS para mejorar la seguridad de esta solución.

Para obtener más información, consulte los siguientes temas. Después de completar estos pasos, los
usuarios solo pueden acceder a su balanceador de carga de aplicaciones a través de CloudFront.

Temas
• Configuración de CloudFront para agregar un encabezado HTTP personalizado a las
solicitudes (p. 231)
• Configuración de un balanceador de carga de aplicaciones para que solo reenvíe solicitudes que
contengan un encabezado específico (p. 232)
• (Opcional) Mejore la seguridad de esta solución (p. 236)

Configuración de CloudFront para agregar un


encabezado HTTP personalizado a las solicitudes
Puede configurar CloudFront para agregar un encabezado HTTP personalizado a las solicitudes que envía
a su origen (en este caso, un balanceador de carga de aplicaciones).
Important

Este caso de uso se basa en mantener el nombre del encabezado personalizado y el valor en
secreto. Si el nombre y el valor del encabezado no son secretos, otros clientes HTTP podrían
incluirlos en las solicitudes que envían directamente al balanceador de carga de aplicaciones.
Esto puede hacer que el balanceador de carga de aplicaciones se comporte como si las
solicitudes vinieran de CloudFront cuando no lo hacen. Para evitar esto, mantenga el nombre del
encabezado personalizado y el valor en secreto.

Puede configurar CloudFront para agregar un encabezado HTTP personalizado a las solicitudes de origen
con la consola de CloudFront, AWS CloudFormation o la API de CloudFront.

Para agregar un encabezado HTTP personalizado (consola de CloudFront)

En la consola de CloudFront, utilice la configuración Origin Custom Headers (Encabezados


personalizados de origen) Origin Settings (Configuración de origen). escriba el nombre del
encabezado y su valor, como se muestra en el siguiente ejemplo.
Note

El nombre del encabezado y el valor de este ejemplo son solo para demostración. En
producción, use valores generados aleatoriamente. Trate el nombre y el valor del encabezado
como una credencial segura, como un nombre de usuario y una contraseña.

Puede editar la configuración Origin Custom Headers (Encabezados personalizados de origen)


cuando crea o edita un origen para una distribución existente de CloudFront y crea una distribución
nueva. Para obtener más información, consulte Actualización de una distribución (p. 71) y Creación de
una distribución (p. 42).

231
Amazon CloudFront Guía para desarrolladores
Configuración de un balanceador de carga de
aplicaciones para que solo reenvíe solicitudes
que contengan un encabezado específico
Para agregar un encabezado HTTP personalizado (AWS CloudFormation)

En una plantilla de AWS CloudFormation, utilice la propiedad OriginCustomHeaders, como se


muestra en el siguiente ejemplo.
Note

El nombre del encabezado y el valor de este ejemplo son solo para demostración. En
producción, use valores generados aleatoriamente. Trate el nombre y el valor del encabezado
como una credencial segura, como un nombre de usuario y una contraseña.

AWSTemplateFormatVersion: '2010-09-09'
Resources:
TestDistribution:
Type: 'AWS::CloudFront::Distribution'
Properties:
DistributionConfig:
Origins:
- DomainName: app-load-balancer.example.com
Id: Example-ALB
CustomOriginConfig:
OriginProtocolPolicy: https-only
OriginSSLProtocols:
- TLSv1.2
OriginCustomHeaders:
- HeaderName: X-Custom-Header
HeaderValue: random-value-1234567890
Enabled: 'true'
DefaultCacheBehavior:
TargetOriginId: Example-ALB
ViewerProtocolPolicy: allow-all
CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6
PriceClass: PriceClass_All
ViewerCertificate:
CloudFrontDefaultCertificate: 'true'

Para obtener más información, consulte las propiedades Origin y OriginCustomHeader en la Guía del
usuario de AWS CloudFormation.
Para agregar un encabezado HTTP personalizado (API de CloudFront)

En la API de CloudFront, utilice el CustomHeaders objeto interior Origin. Para obtener más
información, consulte CreateDistribution and UpdateDistribution en la Referencia de la API de Amazon
CloudFront y la documentación del SDK u otro cliente de API.

Hay algunos nombres de encabezados que no se pueden especificar como encabezados personalizados
de origen. Para obtener más información, consulte Encabezados personalizados que CloudFront no puede
agregar a solicitudes de origen (p. 321).

Configuración de un balanceador de carga de


aplicaciones para que solo reenvíe solicitudes que
contengan un encabezado específico
Después de configurar CloudFront para agregar un encabezado HTTP personalizado a las solicitudes que
envía al balanceador de carga de aplicaciones (consulte la sección anterior (p. 231)), puede configurar
el balanceador de carga para que solo reenvíe solicitudes que contengan este encabezado personalizado.
Para ello, agregue una nueva regla y modifique la regla predeterminada en el agente de escucha del
balanceador de carga.

232
Amazon CloudFront Guía para desarrolladores
Configuración de un balanceador de carga de
aplicaciones para que solo reenvíe solicitudes
que contengan un encabezado específico
Requisitos previos

Para utilizar los siguientes procedimientos, necesita un balanceador de carga de aplicaciones con al
menos un agente de escucha. Si aún no ha creado uno, consulte Crear un balanceador de carga de
aplicaciones en la Guía del usuario de balanceadores de carga de aplicaciones.

Los siguientes procedimientos modifican un agente de escucha HTTPS. Puede utilizar el mismo proceso
para modificar un agente de escucha HTTP.

Para actualizar las reglas en un agente de escucha del balanceador de carga de aplicaciones

1. Abra la página de Load Balancers (Balanceadores de carga) en la consola de Amazon EC2.


2. Elija el balanceador de carga que es el origen de su distribución de CloudFront y, a continuación, elija
la pestaña Listeners (Agentes de escucha).
3. Elija View/edit rules (Ver/Editar reglas) para el agente de escucha que está modificando.

4. Elija el icono para agregar reglas.

5. Elija Insert Rule.

6. Para la nueva regla, haga lo siguiente:

a. Elija Add condition (Agregar condición) y, a continuación, elija Http header (Encabezado
Http). Especifique el nombre del encabezado HTTP y el valor que agregó como encabezado
personalizado de origen en CloudFront.
b. Elija Add action (Agregar acción) y, a continuación, seleccione Forward to (Reenviar a). Elija el
grupo de destino al que desea reenviar las solicitudes.
c. Seleccione Save (Guardar) para crear la regla nueva.

233
Amazon CloudFront Guía para desarrolladores
Configuración de un balanceador de carga de
aplicaciones para que solo reenvíe solicitudes
que contengan un encabezado específico

7. Elija el icono para editar las reglas.

8. Elija el icono de edición de la regla predeterminada.

234
Amazon CloudFront Guía para desarrolladores
Configuración de un balanceador de carga de
aplicaciones para que solo reenvíe solicitudes
que contengan un encabezado específico

9. Para la regla predeterminada, haga lo siguiente:

a. Elimine la acción predeterminada.

b. Elija Add action (Agregar acción) y, a continuación, elija Return fixed response (Devolver
respuesta fija).
c. En Response code (Código de respuesta), escriba 403.

235
Amazon CloudFront Guía para desarrolladores
(Opcional) Mejore la seguridad de esta solución

d. En Response body (Cuerpo de respuesta), escriba Access denied.


e. Elija Update (Actualizar) para actualizar la regla predeterminada.

Después de completar estos pasos, el agente de escucha del balanceador de carga tiene dos reglas, como
se muestra en la imagen siguiente. La primera regla reenvía las solicitudes que contienen el encabezado
HTTP (solicitudes que provienen de CloudFront). La segunda regla envía una respuesta fija a todas las
demás solicitudes (solicitudes que no provienen de CloudFront).

Puede verificar que la solución funcione si envía una solicitud a su distribución de CloudFront y una a su
balanceador de carga de aplicaciones. La solicitud a CloudFront devuelve su aplicación web o contenido y
la que se envía directamente al balanceador de carga de aplicaciones devuelve una respuesta 403 con el
mensaje de texto sin formato Access denied.

(Opcional) Mejore la seguridad de esta solución


Para mejorar la seguridad de esta solución, puede configurar su distribución de CloudFront para que utilice
siempre HTTPS cuando envíe solicitudes a su balanceador de carga de aplicaciones. Recuerde, esta
solución solo funciona si mantiene el nombre del encabezado personalizado y el valor en secreto. El uso
de HTTPS puede ayudar a evitar que un espía descubra el nombre y el valor del encabezado. También
recomendamos cambiar periódicamente el nombre y el valor del encabezado.

Usar HTTPS para solicitudes de origen

Para configurar CloudFront a fin de que utilice HTTPS para solicitudes de origen, establezca la
configuración Origin Protocol Policy (Política de protocolo de origen) en HTTPS Only (Solo HTTPS). Esta

236
Amazon CloudFront Guía para desarrolladores
Utilizar AWS WAF para controlar el acceso al contenido

configuración está disponible en la consola de CloudFront, AWS CloudFormation y la API de CloudFront.


Para obtener más información, consulte Origin Protocol Policy (p. 50).

Cuando configura CloudFront a fin de utilizar HTTPS para solicitudes de origen, debe asegurarse de que
el balanceador de carga de aplicaciones tenga un agente de escucha HTTPS (como se muestra en la
sección anterior (p. 232)). Esto requiere que tenga un certificado SSL/TLS que coincida con el nombre de
dominio que se enruta al balanceador de carga de aplicaciones. Para obtener más información, consulte
Crear un agente de escucha HTTPS en la Guía del usuario de balanceadores de carga de aplicaciones.

Si los usuarios finales (también conocidos como lectoreso clientes) de su aplicación web pueden usar
HTTPS, también puede configurar CloudFront para que prefiera (o incluso requiera) conexiones HTTPS
de los usuarios finales. Para ello, utilice la configuración Viewer Protocol Policy (Política de protocolo del
lector). Puede configurarla para redirigir a los usuarios finales de HTTP a HTTPS o rechazar las solicitudes
que utilizan HTTP. Esta configuración está disponible en la consola de CloudFront, AWS CloudFormation y
la API de CloudFront. Para obtener más información, consulte Viewer Protocol Policy (p. 55).

Cambiar el nombre y el valor del encabezado

Además de usar HTTPS, también recomendamos cambiar el nombre y el valor del encabezado
periódicamente. Los pasos de alto nivel para hacerlo son los siguientes:

1. Configure CloudFront para agregar un encabezado HTTP personalizado adicional a las solicitudes que
envía al balanceador de carga de aplicaciones.
2. Actualice la regla del agente de escucha del balanceador de carga de aplicaciones para reenviar
solicitudes que contengan este encabezado HTTP personalizado adicional.
3. Configure CloudFront para dejar de agregar el encabezado HTTP personalizado original a las
solicitudes que envía al balanceador de carga de aplicaciones.
4. Actualice la regla del agente de escucha del balanceador de carga de aplicaciones para detener el
reenvío de solicitudes que contengan el encabezado HTTP personalizado original.

Para obtener más información sobre cómo realizar estos pasos, consulte las secciones anteriores.

Utilizar AWS WAF para controlar el acceso al


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

Después de crear una lista de control de acceso web (ACL web) de AWS WAF, cree o actualice una
distribución web para asociar la distribución a la ACL web. Puede asociar tantas distribuciones de
CloudFront como desee con la misma ACL web o con diferentes ACL web. Para obtener información
acerca la creación de una distribución y su asociación a una ACL web, consulte Creación de una
distribución (p. 42).

Para asociar una ACL web a una distribución existente o desvincularlas, o cambiar la ACL web asociada a
una distribución, realice el siguiente procedimiento.

237
Amazon CloudFront Guía para desarrolladores
Restricción geográfica de contenido

Para asociar o desasociar una ACL web de AWS WAF y una distribución de CloudFront existente
mediante la consola de CloudFront

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 AWS WAF), elija la ACL web que desea asociar a esta distribución.

Si desea desvincular la distribución de todas las ACL web, elija None (Ninguna). Si desea asociar la
distribución a otra ACL web, elija la nueva ACL web.
5. Elija Yes, Edit (Sí, editar).
6. Repita los pasos 2 al 5 para otras distribuciones, de haberlas, a las que desee añadir, eliminar o
cambiar asociaciones con las ACL web de AWS WAF.
7. Después de cambiar la configuración, el valor de la columna Status (Estado) de las distribuciones
que ha actualizado cambia a InProgress (En curso) mientras CloudFront propaga los cambios a
ubicaciones de borde. Cuando el Status (Estado) cambia a Deployed (Implementado) para una
distribución, la distribución está lista para utilizar AWS WAF al procesar solicitudes. (El valor de la
columna State (Estado) de la distribución también deberá ser Enabled (Habilitado)). El cambio debería
tomar menos de 15 minutos en aplicarse después de guardar el último cambio en una distribución.

Note

AWS Firewall Manager es un servicio de administración de seguridad que facilita la configuración


y administración centralizadas de reglas de AWS WAF en todas las cuentas y aplicaciones. Con
Firewall Manager, puede implementar reglas de AWS WAF en las distribuciones de CloudFront
en cuentas de AWS Organizations. Para obtener más información, consulte la Guía para
desarrolladores de AWS Firewall Manager.

Restringir la distribución geográfica de su contenido


Puede usar geo restriction (restricción geográfica), también conocida como geo blocking (bloqueo
geográfico), para evitar que los usuarios de ubicaciones geográficas específicas accedan al contenido que
distribuye a través de una distribución de 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 el
acceso a todos los archivos asociados a una distribución y según el país.
• Utilice un servicio de geolocalización de terceros. Utilice esta opción para restringir el acceso a un
subconjunto de los archivos asociados a una distribución o para restringirlo a un nivel más detallado que
por país.

Temas
• Uso de la restricción geográfica de CloudFront (p. 238)
• Utilizar un servicio de geolocalización de terceros (p. 240)

Uso de la restricción geográfica de CloudFront


Cuando un usuario solicita el contenido, CloudFront normalmente lo ofrece independientemente de dónde
se encuentra el usuario. Si necesita impedir que usuarios de países específicos accedan al contenido,

238
Amazon CloudFront Guía para desarrolladores
Uso de la restricción geográfica de CloudFront

puede usar la característica de restricción geográfica de CloudFront para realizar una de las siguientes
acciones:

• Permita a los usuarios obtener acceso a su contenido solo si están en uno de los países aprobados e
incluidos en una lista blanca.
• Evite que los usuarios obtengan acceso a su contenido si están en uno de los países prohibidos e
incluidos en una lista negra.

Por ejemplo, si una solicitud proviene de un país en el que, por motivos de derechos de autor, no está
autorizado a distribuir el contenido, puede utilizar la restricción geográfica de CloudFront para bloquear la
solicitud.
Note
CloudFront determina la ubicación de los usuarios mediante una base de datos GeoIP de
terceros. La precisión del mapeo entre direcciones IP y países varía en función de la región.
Según pruebas recientes, la precisión global es del 99,8 %. Si CloudFront no puede determinar la
ubicación de un usuario, CloudFront ofrece el contenido que el usuario ha solicitado.

Así es como funciona la restricción geográfica:

1. Supongamos que tiene derechos para distribuir su contenido únicamente en Liechtenstein. Se actualiza
la distribución de CloudFront y se agrega una lista blanca que contiene solo Liechtenstein. (También
puede añadir una lista negra que contenga todos los países excepto Liechtenstein).
2. Un usuario en Mónaco solicita el contenido y DNS dirige la solicitud a la ubicación de borde de
CloudFront en Milán, Italia.
3. La ubicación de borde en Milán revisa su distribución y determina que el usuario en Mónaco no está
autorizado a descargar el contenido.
4. CloudFront devuelve un código de estado HTTP 403 (Forbidden) al usuario.

Si lo desea, puede configurar CloudFront para devolver un mensaje de error personalizado al usuario
y puede especificar el tiempo durante el cual desea que CloudFront almacene en caché la respuesta
de error del archivo solicitado. El valor de predeterminado es de 10 segundos. Para obtener más
información, consulte Creación de una página de error personalizada para códigos de estado HTTP
específicos (p. 134).

La restricción geográfica se aplica a la totalidad de la distribución. Si necesita aplicar una restricción a


parte del contenido y una restricción diferente (o ningún tipo de restricción) a otra parte del contenido, debe
crear distribuciones de CloudFront independientes o utilizar un servicio de geolocalización de terceros.

Si habilita el registro de acceso de CloudFront, puede identificar las solicitudes que CloudFront rechaza
buscando las entradas de registro cuyo valor de sc-status (el código de estado HTTP) sea 403. Sin
embargo, si solo utiliza los registros de acceso, no puede distinguir entre las solicitudes que CloudFront
rechace a causa de la ubicación del usuario y las que CloudFront rechace porque el usuario no tenga
permiso de acceso al archivo debido a otro motivo. Si tiene un servicio de geolocalización de terceros
como Digital Element o MaxMind, puede identificar la ubicación de las solicitudes en función de la dirección
IP en la columna c-ip (IP del cliente) de los registros de acceso. Para obtener más información sobre
los registros de acceso de CloudFront, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).

En el siguiente procedimiento se explica cómo utilizar la consola de CloudFront para agregar la restricción
geográfica a una distribución existente. Para obtener más información acerca de cómo crear una
distribución, consulte Creación de una distribución (p. 42).

Para agregar restricciones geográficas a la distribución web (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/.

239
Amazon CloudFront Guía para desarrolladores
Utilizar un servicio de geolocalización de terceros

2. Seleccione la distribución que desea actualizar.


3. En el panel Distribution Settings (Configuración de la distribución), elija la pestaña Restrictions
(Restricciones).
4. Elija Edit.
5. Escriba los valores aplicables. Para obtener más información, consulte Restricciones (p. 68).
6. Elija Yes, Edit (Sí, editar).

Utilizar un servicio de geolocalización de terceros


La característica de restricción geográfica de CloudFront le permite controlar por país la distribución del
contenido que está ofreciendo con una distribución web determinada. Si tiene restricciones geográficas
para distribuir su contenido y dichas restricciones no coinciden con los límites de los países o si desea
restringir el acceso a solo algunos de los archivos que distribuye con CloudFront, puede combinar
CloudFront con un servicio de geolocalización de terceros. Esto puede ayudarle a controlar el acceso a
su contenido en función no solo en el país sino también de la ciudad, código postal o incluso la latitud y la
longitud.

Cuando 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 porque eso le permite
utilizar una identidad de acceso de origen de CloudFront para evitar que los usuarios obtengan acceso
al contenido directamente desde el origen. Para obtener más información acerca de las URL firmadas e
identidades de acceso de origen, consulte Distribución de contenido privado con URL firmadas y cookies
firmadas (p. 164).

Los siguientes pasos explican cómo controlar el acceso a sus archivos mediante un servicio de
geolocalización de terceros.

Para utilizar la ubicación geográfica para restringir el acceso a los archivos de una distribución de
CloudFront

1. Obtenga una cuenta con un servicio de geolocalización.


2. Cargue el contenido en 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 que sirvan contenido privado. Para obtener
más información, consulte Distribución de contenido privado con URL firmadas y cookies
firmadas (p. 164).
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. Evalúe 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. Si desea distribuir el contenido a la ubicación del usuario, genere una URL firmada para el
contenido de CloudFront. Si no desea distribuir contenido a esa ubicación, devuelva el código
de estado HTTP 403 (Forbidden) al usuario. Otra opción es configurar CloudFront para que
devuelva un mensaje de error personalizado. Para obtener más información, consulte Creación
de una página de error personalizada para códigos de estado HTTP específicos (p. 134).

Para obtener más información, consulte la documentación del servicio de geolocalización que está
utilizando.

Puede utilizar una variable de servidor web para obtener las direcciones IP de los usuarios que visitan su
sitio web. Sin embargo, tenga en cuenta lo siguiente:

240
Amazon CloudFront Guía para desarrolladores
Uso del cifrado en el nivel de campo para
ayudar a proteger la información confidencial

• Si su servidor web no está conectado a Internet a través de un balanceador de carga, puede utilizar una
variable de servidor web para obtener la dirección IP remota. Sin embargo, esta dirección IP no siempre
es la dirección IP del usuario. También puede ser la dirección IP de un servidor proxy, dependiendo de
cómo esté el usuario conectado a Internet.
• Si su servidor web está conectado a Internet a través de un balanceador de carga, una variable de
servidor web podría contener la dirección IP del balanceador de carga en lugar de la dirección IP del
usuario. En esta configuración, le recomendamos utilizar la última dirección IP del encabezado HTTP X-
Forwarded-For. Este encabezado normalmente contiene más de una dirección IP, la mayoría de los
cuales son de proxis o balanceadores de carga. La última dirección IP de la lista tiene más posibilidades
de ser asociada a la ubicación geográfica del usuario.

Si su servidor web no está conectado a un balanceador de carga, le recomendamos que utilice variables
de servidor web en lugar del encabezado X-Forwarded-For para evitar la suplantación de direcciones
IP.

Uso del cifrado en el nivel de campo para ayudar a


proteger la información confidencial
Con Amazon CloudFront, puede aplicar conexiones integrales seguras a los servidores de origen mediante
HTTPS. El cifrado en el nivel de campo añade una capa de seguridad adicional que le permite proteger
datos específicos durante su procesamiento en el sistema de forma que solo determinadas aplicaciones
puedan verlos.

El cifrado en el nivel de campo le permite facilitar a sus usuarios que carguen de manera segura
información sensible a los servidores web. La información confidencial proporcionada por los usuarios
se cifra en el borde, cerca del usuario y permanece cifrada en toda la pila de la aplicación. Este cifrado
garantiza que solo las aplicaciones que necesitan los datos y que tienen las credenciales para descifrarlos
puedan hacerlo.

Para utilizar cifrado en el nivel de campo, cuando configure la distribución de CloudFront, especifique el
conjunto de campos de las solicitudes POST que desea cifrar y la clave pública que se va a usar para
cifrarlos. Puede cifrar hasta 10 campos de datos en cada solicitud. (No puede cifrar todos los datos de una
solicitud mediante el cifrado en el nivel de campo, debe especificar campos individuales).

Cuando la solicitud HTTPS con el cifrado en el nivel de campo se reenvía al origen y se transfiere por
toda la aplicación o subsistema de origen, la información confidencial sigue estando cifrada, lo que reduce
el riesgo de una infracción de los datos o una pérdida accidental de la información confidencial. Los
componentes que necesitan obtener acceso a la información confidencial por motivos empresariales,
como un sistema de procesamiento de pagos que necesita tener acceso a un número de tarjeta de crédito,
pueden utilizar la clave privada apropiada para descifrar los datos y obtener acceso a ellos.
Note

Para utilizar el cifrado en el nivel de campo, el origen debe admitir la codificación fragmentada.

241
Amazon CloudFront Guía para desarrolladores
Uso del cifrado en el nivel de campo para
ayudar a proteger la información confidencial

El cifrado en el nivel de campo de CloudFront utiliza cifrado asimétrico, también denominado cifrado
de clave pública. Se proporciona una clave pública a CloudFront y toda la información confidencial
especificada se cifra automáticamente. La clave proporcionada a CloudFront no se puede utilizar para
descifrar los valores cifrados; esto solo puede hacerlo la clave privada.

242
Amazon CloudFront Guía para desarrolladores
Información general del cifrado en el nivel de campo

Temas
• Información general del cifrado en el nivel de campo (p. 243)
• Configuración del cifrado en el nivel de campo (p. 244)
• Descifrado de campos de datos en el origen (p. 248)

Información general del cifrado en el nivel de campo


Los siguientes pasos proporcionan información general sobre la configuración del cifrado en el nivel
de campo. Para conocer los pasos específicos, consulte Configuración del cifrado en el nivel de
campo (p. 244).

1. Obtener un par clave pública-clave privada. Debe obtener y agregar la clave pública antes de empezar
a configurar el cifrado en el nivel de campo en CloudFront.
2. Crear un perfil de cifrado en el nivel de campo. Los perfiles de cifrado en el nivel de campo que se
crean en CloudFront, definen los campos que se deben cifrar.
3. Crear una configuración de cifrado en el nivel de campo. Una configuración especifica los perfiles
que se van a utilizar en función del tipo de contenido de la solicitud o de un argumento de consulta
para cifrar campos de datos específicos. También puede elegir las opciones de comportamiento
de reenvío de solicitudes que desee para diferentes escenarios. Por ejemplo: puede establecer el

243
Amazon CloudFront Guía para desarrolladores
Configuración del cifrado en el nivel de campo

comportamiento para cuando el nombre del perfil especificado por el argumento de consulta en una
URL de solicitud no exista en CloudFront.
4. Enlazar a un comportamiento de la caché. Enlace la configuración a un comportamiento de la caché
de una distribución para especificar cuándo CloudFront debería cifrar los datos.

Configuración del cifrado en el nivel de campo


Siga estos pasos para empezar a utilizar el cifrado en el nivel de campo. Para obtener información sobre
las cuotas (antes denominadas límites) en el cifrado en el nivel de campo, consulte Cuotas (p. 519).

• Paso 1: crear un par de claves RSA (p. 244)


• Paso 2: Añadir la clave pública a CloudFront (p. 244)
• Paso 3: Crear un perfil para el cifrado en el nivel de campo (p. 245)
• Paso 4: Crear una configuración (p. 246)
• Paso 5: Añadir una configuración a un comportamiento de la caché (p. 247)

Paso 1: crear un par de claves RSA


Para comenzar, debe crear un par de claves RSA que incluya una clave pública y una clave privada. La
clave pública permite a CloudFront cifrar datos y la clave privada permite que los componentes del origen
descifren los campos que se han cifrado. Puede utilizar OpenSSL u otra herramienta para crear un par de
claves. El tamaño de la clave debe ser de 2 048 bits.

Por ejemplo, si utiliza OpenSSL, puede ejecutar el siguiente comando para generar un par de claves con
una longitud de 2048 bits y guardarlo en el archivo private_key.pem:

openssl genrsa -out private_key.pem 2048

El archivo resultante contiene tanto la clave pública como la privada. Para extraer la clave pública de dicho
archivo, ejecute el siguiente comando:

openssl rsa -pubout -in private_key.pem -out public_key.pem

El archivo de clave pública (public_key.pem) contiene el valor de clave cifrada que se pega en el paso
siguiente.

Paso 2: Añadir la clave pública a CloudFront


Después de obtener el par de claves RSA, agregue la clave pública a CloudFront.

Para agregar 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 (Clave pública).
3. Elija Add public key (Agregar clave pública).
4. En Key name (Nombre de la clave), 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 de caracteres es 128.
5. En Key value (valor de clave), pegue el valor de clave codificado de la clave pública, incluidas las
líneas -----BEGIN PUBLIC KEY----- y -----END PUBLIC KEY-----.

244
Amazon CloudFront Guía para desarrolladores
Configuración del cifrado en el nivel de campo

6. En Comment (Comentario), añada un comentario opcional. Por ejemplo, podría incluir la fecha de
vencimiento de la clave pública.
7. Elija Add.

Puede agregar más claves para utilizar con CloudFront repitiendo los pasos del procedimiento.

Paso 3: Crear un perfil para el cifrado en el nivel de campo


Después de añadir al menos una clave pública a CloudFront, cree un perfil que indique a este los campos
que 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 (Cifrado en el nivel de campo).


2. Elija Create profile (Crear perfil).
3. Rellene los siguientes campos:

Profile name (Nombre de perfil)

Escriba un nombre único para el perfil. El nombre no puede tener espacios y solo puede incluir
caracteres alfanuméricos, guiones bajos (_) y guiones (-). El número máximo de caracteres es
128.
Public key name (Nombre de clave pública)

En la lista desplegable, elija el nombre de la clave pública que ha agregado a CloudFront en el


paso 2. CloudFront utiliza la clave para cifrar los campos especificados en este perfil.
Provider name (Nombre de proveedor)

Escriba una frase para ayudar a identificar la clave, como el proveedor del que ha obtenido el
par de claves. Necesita esta información, junto con la clave privada, cuando las aplicaciones
descifran los campos de datos. El nombre del proveedor no puede tener espacios y solo puede
incluir caracteres alfanuméricos, dos puntos (:), guiones bajos (_) y guiones (-). El número máximo
de caracteres es 128.
Field name pattern to match (Patrón de coincidencia de nombres de campo)

Escriba los nombres de los campos de datos o los patrones que identifican los nombres de los
campos de datos de la solicitud que desea que CloudFront cifre. Elija la opción + para añadir
todos los campos que desea cifrar con esta clave.

Para el patrón de nombre de campo, puede escribir el nombre completo del campo de datos,
como DateOfBirth, o solo la primera parte del nombre con un carácter comodín (*), como
CreditCard*. El patrón de nombre de campo solo puede incluir caracteres alfanuméricos,
corchetes ([ y ]), puntos (.), guiones bajos (_) y guiones (-), además del carácter comodín opcional
(*).

Asegúrese de que no utiliza caracteres solapados para diferentes patrones de nombre de campo.
Por ejemplo, si tiene el patrón de nombre de campo ABC*, no puede añadir otro patrón de nombre
de campo que sea AB*. Además, los nombres de los campos distinguen entre mayúsculas y
minúsculas, y que el número máximo de caracteres que puede utilizar es de 128.
Comentario

(Opcional) Escriba un comentario sobre este perfil. El número máximo de caracteres que puede
utilizar es 128.
4. Tras rellenar los campos, elija Create profile (Crear perfil).
5. Si desea añadir más perfiles, elija Add profile (Añadir perfil).

245
Amazon CloudFront Guía para desarrolladores
Configuración del cifrado en el nivel de campo

Paso 4: Crear una configuración


Después de crear uno o varios perfiles de cifrado en el nivel de campo, cree una configuración que
especifique el tipo de contenido de la solicitud que incluya los datos que se van a cifrar, el perfil que se va
a utilizar para el cifrado y otras opciones que especifiquen cómo desea que CloudFront gestione el cifrado.

Por ejemplo, si CloudFront no puede cifrar los datos, puede especificar si CloudFront debería bloquear o
reenviar una solicitud al origen en los siguientes casos:

• Cuando el tipo de contenido de una solicitud no está en una configuración: si no ha agregado un tipo de
contenido a una configuración, puede especificar si CloudFront debería reenviar la solicitud con ese tipo
de contenido al origen sin cifrar los campos de datos o bloquear la solicitud y devolver un error.
Note

Si agrega un tipo de contenido a una configuración pero no ha especificado el perfil con el que
utilizarlo, CloudFront siempre reenvía las solicitudes con ese tipo de contenido al origen.
• Cuando se desconoce el nombre de perfil proporcionado en un argumento de consulta: si especifica
el argumento de consulta de fle-profile con un nombre de perfil que no existe para la distribución,
puede especificar si CloudFront debería enviar la solicitud al origen sin cifrar los campos de datos o
bloquear la solicitud y devolver un error.

En una configuración, también puede especificar si al proporcionar un perfil como un argumento de


consulta en una URL se anula el perfil que ha mapeado al tipo de contenido de esa consulta. De forma
predeterminada, CloudFront utiliza el perfil que ha mapeado a un tipo de contenido, si especifica uno. Esto
le permite tener un perfil que se utiliza de forma predeterminada, pero también optar por aplicar un perfil
diferente en determinadas solicitudes.

Así, por ejemplo, puede especificar (en la configuración) SampleProfile como el perfil de argumento de
consulta que se va a utilizar. A continuación, puede utilizar la URL https://d1234.cloudfront.net?
fle-profile=SampleProfile en lugar de https://d1234.cloudfront.net, para que CloudFront
utilice SampleProfile para esta solicitud y no el perfil que ha configurado para el tipo de contenido de la
solicitud.

Puede crear hasta 10 configuraciones para una única cuenta y, a continuación, asociar una de ellas al
comportamiento de la caché de cualquier distribución para la cuenta.

Para crear una configuración para el cifrado en el nivel de campo (consola)

1. En la página Field-level encryption (Cifrado en el nivel de campo), elija Create configuration (Crear
configuración).

Nota: para poder ver la opción para crear una configuración, debe haber creado al menos un perfil.
2. Rellene los siguientes campos para especificar el perfil que se va a usar. (Algunos campos no se
pueden cambiar).

Content type (no se puede cambiar)

El tipo del contenido está establecido en application/x-www-form-urlencoded y no se


puede cambiar.
Default profile ID (opcional)

En la lista desplegable, elija el perfil al que desea mapear al tipo de contenido en el campo
Content type (Tipo de contenido).
Content format (no se puede cambiar)

El formato del contenido está establecido en URLencoded y no se puede cambiar.

246
Amazon CloudFront Guía para desarrolladores
Configuración del cifrado en el nivel de campo

3. Si desea cambiar el comportamiento predeterminado de CloudFront para las siguientes opciones,


seleccione la casilla de verificación correspondiente.

Forward request to origin when request’s content type is not configured (Reenviar solicitud al origen
cuando el tipo de contenido de la solicitud no está configurado)

Seleccione la casilla si desea permitir que la solicitud vaya al origen si no ha especificado el perfil
que se va a utilizar para el tipo de contenido de la solicitud.
Override the profile for a content type with a provided query argument (Invalidar el perfil de un tipo de
contenido con un argumento de consulta proporcionado)

Seleccione la casilla si desea permitir que un perfil proporcionado en un argumento de consulta


anule 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 de
estos mapeos de argumentos de consulta para su uso con las consultas.

Query argument (Argumento de consulta)

Escriba el valor que desea incluir en las URL para el argumento de consulta fle-profile. Este
valor indica a CloudFront que debe utilizar el ID de perfil (que especificará en el campo siguiente)
asociado con este argumento de consulta para el cifrado en el nivel de campo de esta consulta.

El número máximo de caracteres que puede utilizar es 128. El valor no puede incluir espacios, y
solo se pueden utilizar caracteres alfanuméricos además de los siguientes caracteres: guion (-),
punto (.), guion bajo (_), asterisco (*), signo más (+), porcentaje (%).
Profile ID (ID de perfil)

En la lista desplegable, elija el perfil que desea asociar al valor que ha especificado para Query
argument (Argumento de consulta).
Forward request to origin when the profile specified in a query argument does not exist (Reenviar
solicitud al origen cuando el perfil especificado en una consulta no exista)

Seleccione la casilla de verificación si desea permitir que la solicitud vaya al origen si el perfil
especificado en un argumento de consulta no está definido en CloudFront.

Paso 5: Añadir una configuración a un comportamiento de la


caché
Para utilizar el cifrado en el nivel de campo, enlace una configuración a un comportamiento de la caché de
una distribución añadiendo el ID de configuración como un valor de dicha distribución.
Important

Para vincular una configuración de cifrado en el nivel de campo a un comportamiento de la caché,


la distribución debe configurarse para que siempre use HTTPS y acepte las solicitudes HTTP
POST y PUT de los espectadores. Es decir, se debe cumplir lo siguiente:

• La Viewer Protocol Policy (política del protocolo del espectador) del comportamiento de
la caché debe establecerse en Redirect HTTP to HTTPS (Redireccionamiento de HTTP a
HTTPS) o HTTPS Only (solo HTTPS). (En AWS CloudFormation o la API de CloudFront,
ViewerProtocolPolicy debe establecerse en redirect-to-https o https-only).
• Los métodos HTTP permitidos del comportamiento de la caché deben establecerse en GET,
HEAD, OPTIONS, PUT, POST, PATCH, DELETE. (En AWS CloudFormation o la API de
CloudFront, AllowedMethods debe establecerse en GET, HEAD, OPTIONS, PUT, POST, PATCH,
DELETE. Estos se pueden especificar en cualquier orden).

247
Amazon CloudFront Guía para desarrolladores
Descifrado de campos de datos en el origen

• La Origin Protocol Policy (política del protocolo de origen) de la configuración de origen debe
establecerse en Match Viewer (coincidir con espectador) o HTTPS Only (solo HTTPS). (En
AWS CloudFormation o la API de CloudFront, OriginProtocolPolicy debe establecerse en
match-viewer o https-only).

Para obtener más información, consulte Valores que deben especificarse al crear o actualizar una
distribución (p. 43).

Descifrado de campos de datos en el origen


CloudFront cifra los campos de datos mediante el SDK de cifrado de AWS. Los datos permanecen cifrados
en toda la pila de aplicaciones y únicamente pueden tener acceso a ellos las aplicaciones que dispongan
de las credenciales para descifrarlos.

Tras el cifrado, el texto cifrado se codifica en base64. Cuando las aplicaciones descifran el texto en el
origen, primero deben descodificar el texto cifrado y, a continuación, utilizar el SDK de cifrado de AWS
para descifrar los datos.

El siguiente código de ejemplo ilustra cómo las aplicaciones pueden descifrar datos en el origen. Tenga en
cuenta lo siguiente:

• Para simplificar el ejemplo, esta muestra carga claves públicas y privadas (en formato DER) desde
archivos que se encuentran en el directorio de trabajo. En la práctica, debería almacenar la clave privada
en una ubicación segura sin conexión, como un módulo de seguridad de hardware sin conexión, y
distribuir la clave pública a su equipo de desarrollo.
• CloudFront utiliza información específica al cifrar los datos y se debería utilizar el mismo conjunto de
parámetros en el origen para descifrarlos. Entre los parámetros que CloudFront utiliza al inicializar la
clave maestra se incluyen los siguientes:
• PROVIDER_NAME: este valor se especificó al crear un perfil de cifrado en el nivel de campo. Utilice
aquí el mismo valor.
• KEY_NAME: el nombre para la clave pública se creó al cargarla en CloudFront y, a continuación, se
especificó el nombre de la clave en el perfil. Utilice aquí el mismo valor.
• ALGORITHM: CloudFront utiliza RSA/ECB/OAEPWithSHA-256AndMGF1Padding como algoritmo
para cifrar, por lo que debe usar el mismo algoritmo para descifrar los datos.
• Si ejecuta el siguiente programa de muestra con texto cifrado como entrada, los datos descifrados se
muestran en la consola. Para obtener más información, consulte el código de ejemplo de Java del SDK
de cifrado de AWS.

Código de muestra

import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;

import org.apache.commons.codec.binary.Base64;

import com.amazonaws.encryptionsdk.AwsCrypto;
import com.amazonaws.encryptionsdk.CryptoResult;
import com.amazonaws.encryptionsdk.jce.JceMasterKey;

248
Amazon CloudFront Guía para desarrolladores
Descifrado de campos de datos en el origen

/**
* Sample example of decrypting data that has been encrypted by CloudFront Field-Level
Encryption.
*/
public class DecryptExample {

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();

// 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));

249
Amazon CloudFront Guía para desarrolladores
Descifrado de campos de datos en el origen

privateKey = KeyFactory.getInstance("RSA").generatePrivate(new
PKCS8EncodedKeySpec(privateKeyBytes));
}
}

250
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché con ubicaciones de borde

Optimización del almacenamiento en


caché y la disponibilidad
En esta sección se describe cómo configurar y administrar el almacenamiento en caché de objetos para
mejorar el rendimiento y satisfacer sus requisitos empresariales.

Para obtener información sobre cómo agregar y eliminar el contenido que desea que CloudFront distribuya,
consulte Agregar, eliminar o sustituir contenido que distribuye CloudFront (p. 115).

Temas
• Cómo funciona el almacenamiento en caché con ubicaciones de borde de CloudFront (p. 251)
• Incrementar la proporción de solicitudes que se atienden directamente desde las cachés de CloudFront
(tasa de aciertos de caché) (p. 252)
• Uso de Amazon CloudFront Origin Shield (p. 255)
• Optimización de alta disponibilidad con conmutación por error de origen de CloudFront (p. 263)
• Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268)
• Almacenamiento en caché de contenido en función de parámetros de cadenas de consulta (p. 274)
• Almacenamiento en caché de contenido en función de cookies (p. 277)
• Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 280)

Cómo funciona el almacenamiento en caché con


ubicaciones de borde de CloudFront
Una de las finalidades de usar CloudFront es reducir la cantidad de solicitudes a las que debe responder
directamente el servidor de origen. Con el almacenamiento en caché de CloudFront, se atienden más
objetos desde ubicaciones de borde de CloudFront, que están más cerca de los usuarios. Esto reduce la
carga en su servidor de origen y reduce la latencia.

Cuantas más solicitudes pueda atender CloudFront desde cachés de borde, menos solicitudes de lector
debe reenviar CloudFront al origen para obtener la versión más reciente o una versión única de un
objeto. Para optimizar CloudFront y realizar el menor número posible de solicitudes al origen, considere la
posibilidad de utilizar CloudFront Origin Shield. Para obtener más información, consulte Uso de Amazon
CloudFront Origin Shield (p. 255).

La proporción de solicitudes que se atienden directamente desde la caché de CloudFront en comparación


con todas las solicitudes se denomina tasa de aciertos de caché. Puede consultar el porcentaje de
aciertos, fallos y errores de solicitudes de lectores en la consola de CloudFront. Para obtener más
información, consulte Informes estadísticos de caché de CloudFront (p. 428).

Hay una serie de factores que afectan a la tasa de aciertos de caché. Puede ajustar la configuración
de distribución de CloudFront para mejorar la tasa de aciertos de caché siguiendo las instrucciones de
Incrementar la proporción de solicitudes que se atienden directamente desde las cachés de CloudFront
(tasa de aciertos de caché) (p. 252).

251
Amazon CloudFront Guía para desarrolladores
Mejora de la tasa de aciertos de caché

Incrementar la proporción de solicitudes que


se atienden directamente desde las cachés de
CloudFront (tasa de aciertos de caché)
Puede mejorar el rendimiento aumentando la proporción de las solicitudes de lector que se atienden
directamente desde la caché de CloudFront en lugar de acceder a los servidores de origen para obtener
contenido. Esto se conoce como mejora de la tasa de aciertos de caché.

En las secciones siguientes se explica cómo mejorar la tasa de aciertos de la caché.

Temas
• Especificar cuánto tiempo CloudFront almacena en caché los objetos (p. 252)
• Uso del escudo de origen (p. 252)
• Almacenamiento en caché en función de parámetros de cadenas de consulta (p. 252)
• Almacenamiento en caché en función de valores de cookies (p. 253)
• Almacenamiento en caché en función de encabezados de solicitud (p. 254)
• No es necesario eliminar el encabezado Accept-Encoding al comprimir (p. 254)
• Ofrecer contenido multimedia a través de HTTP (p. 255)

Especificar cuánto tiempo CloudFront almacena en


caché los objetos
Para incrementar la tasa de aciertos de caché, puede configurar su origen para agregar una directiva
Cache-Control max-age a sus objetos y especificar el mayor valor práctico de max-age. Cuanto
más corta sea la duración de la caché, más frecuentemente reenvía CloudFront las solicitudes al
origen para determinar si un objeto ha cambiado y para obtener la versión más reciente. Para obtener
más información, consulte Administración de cuánto tiempo se mantiene el contenido en una caché
(vencimiento) (p. 268).

Uso del escudo de origen


CloudFront Origin Shield puede contribuir a mejorar la tasa de aciertos de caché de la distribución de
CloudFront, porque proporciona una capa adicional de almacenamiento en caché frente al origen. Cuando
utiliza Origin Shield, todas las solicitudes de todas las capas de almacenamiento en caché de CloudFront
en el origen provienen de una sola ubicación. CloudFront puede recuperar cada objeto mediante una sola
solicitud de origen de Origin Shield y todas las demás capas de la caché de CloudFront (ubicaciones de
borde y cachés regionales de borde (p. 6)) pueden recuperar el objeto desde Origin Shield.

Para obtener más información, consulte Uso de Amazon CloudFront Origin Shield (p. 255).

Almacenamiento en caché en función de parámetros


de cadenas de consulta
Si 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 origen
devolverá objetos únicos.

252
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché en función de valores de cookies

• Utilice el mismo tipo de letra (mayúscula o minúscula) para todas las instancias del mismo parámetro.
Por ejemplo, si una solicitud contiene parameter1=A y otra contiene parameter1=a, CloudFront
reenvía solicitudes independientes al origen cuando una solicitud contiene parameter1=A y otra
contiene parameter1=a. A continuación, CloudFront almacena en caché de forma independiente los
objetos correspondientes devueltos por el origen por separado incluso si los objetos son idénticos. Si
utiliza solo A o a, CloudFront reenvía menos solicitudes al origen.
• Enumere los parámetros en el mismo orden. Al igual que con las diferencias de
mayúsculas y minúsculas, si una solicitud de un objeto contiene la cadena de
consulta parameter1=a&parameter2=b y otra solicitud del mismo objeto contiene
parameter2=b&parameter1=a, CloudFront reenvía ambas solicitudes al origen y almacena en caché
los objetos correspondientes de forma independiente aunque sean idénticos. Si ordena los parámetros
siempre de la misma manera, CloudFront reenvía menos solicitudes al origen.

Para obtener más información, consulte Almacenamiento en caché de contenido en función de parámetros
de cadenas de consulta (p. 274). Si desea revisar las cadenas de consulta que CloudFront reenvía al
origen, consulte los valores en la columna cs-uri-query de los archivos de registro de CloudFront.
Para obtener más información, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463).

Almacenamiento en caché en función de valores de


cookies
Si configura CloudFront para almacenar en caché en función de los valores de las cookies, puede mejorar
el almacenamiento en la caché si hace lo siguiente:

• Configure CloudFront para reenviar solo las cookies especificadas en lugar de todas. Para las cookies
que configura que CloudFront reenvíe al origen, CloudFront reenvía cada combinación de nombre y
valor de las cookies. A continuación, almacena en caché por separado los objetos que devuelve su
origen, incluso si todos son idénticos.

Supongamos que los espectadores incluyen dos cookies en cada solicitud, que cada cookie tiene tres
valores posibles y que todas las combinaciones de valores de cookie son posibles. CloudFront reenvía
hasta seis solicitudes diferentes al origen para cada uno de los objetos. Si el origen devuelve distintas
versiones de un objeto en función de solo una de las cookies, CloudFront reenvía más solicitudes al
origen de lo necesario y almacena en caché varias versiones idénticas del objeto innecesariamente.
• Cree diferentes comportamientos de la caché para contenido estático y dinámico y configure CloudFront
para reenviar las cookies al origen solo para contenido dinámico.

Por ejemplo, supongamos que tiene un comportamiento de la caché para la distribución y que utiliza la
distribución para contenido dinámico, como archivos .js y para archivos .css que raramente cambian.
CloudFront almacena en caché versiones independientes de los archivos .css en función de los valores
de cookies, de modo que cada ubicación de borde de CloudFront reenvía una solicitud al origen por
cada nuevo valor de cookie o por cada combinación de valores de cookies.

Si crea un comportamiento de la caché cuyo patrón de ruta es *.css y para el que CloudFront no
almacena en caché en función de los valores de las cookies, CloudFront reenviará las solicitudes de
archivos .css al origen solo para la primera solicitud que reciba desde una ubicación de borde de un
archivo .css determinado y para la primera solicitud después de que un archivo .css venza.
• Si es posible, cree diferentes comportamientos de la caché para contenido dinámico cuyos valores de
cookie sean exclusivos para cada usuario (como un ID de usuario) y para contenido dinámico que varíe
en función de una cantidad más reducida de valores únicos.

Para obtener más información, consulte Almacenamiento en caché de contenido en función de


cookies (p. 277). Si desea revisar las cookies que CloudFront reenvía al origen, consulte los valores en la

253
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché en
función de encabezados de solicitud

columna cs(Cookie) de los archivos de registro de CloudFront. Para obtener más información, consulte
Configuración y uso de registros estándar (registros de acceso) (p. 463).

Almacenamiento en caché en función de encabezados


de solicitud
Si configura CloudFront para almacenar en caché en función de encabezados de solicitud, puede mejorar
el almacenamiento en la caché si hace lo siguiente:

• Configure CloudFront para reenviar y almacenar en caché solo en función de encabezados


especificados en lugar de reenviar y almacenar en caché en función de todos los encabezados. Para
los encabezados que especifique, CloudFront reenvía todas las combinaciones de nombre y valor de
encabezado. A continuación, almacena en caché por separado los objetos que devuelve su origen,
incluso si todos son idénticos.
Note

CloudFront siempre reenvía al origen los encabezados especificados en los siguientes temas:
• Cómo CloudFront procesa y reenvía solicitudes al servidor de origen de Amazon S3 >
Encabezados de solicitud HTTP que CloudFront elimina o actualiza (p. 301)
• Cómo CloudFront procesa y reenvía solicitudes al servidor de origen personalizado >
Encabezados de solicitudes HTTP y comportamiento de CloudFront (personalizado y
orígenes de S3) (p. 309)

Cuando configura CloudFront para almacenar en caché en función de encabezados de solicitud, no


cambia los encabezados que reenvía CloudFront, solo si CloudFront almacena en caché objetos en
función de los valores de encabezado.
• Intente evitar el almacenamiento en caché en función de encabezados de solicitud con un gran número
de valores únicos.

Por ejemplo, si desea enviar diferentes tamaños de una imagen en función del dispositivo del usuario,
no configura CloudFront para almacenar en caché en función del encabezado User-Agent, que
tiene gran cantidad de valores posibles. En su lugar, configure CloudFront para almacenar en caché
en función de los encabezados de tipo de dispositivo de CloudFront CloudFront-Is-Desktop-
Viewer, CloudFront-Is-Mobile-Viewer, CloudFront-Is-SmartTV-Viewer y CloudFront-
Is-Tablet-Viewer. Además, si va a devolver la misma versión de la imagen para tablets y equipos
de escritorio, reenvíe solo el encabezado CloudFront-Is-Tablet-Viewer, no el CloudFront-Is-
Desktop-Viewer.

Para obtener más información, consulte Almacenamiento en caché de contenido en función de


encabezados de solicitud (p. 280).

No es necesario eliminar el encabezado Accept-


Encoding al comprimir
Si la compresión no está habilitada, porque el origen no la admite, CloudFront no la admite o el contenido
no es compresible, puede aumentar la tasa de aciertos de caché asociando un comportamiento de caché
en la distribución con un origen que establezca Custom Origin Header como se muestra a continuación:

• Nombre del encabezado: Accept-Encoding


• Valor de encabezado: (mantener en blanco)

254
Amazon CloudFront Guía para desarrolladores
Ofrecer contenido multimedia a través de HTTP

Cuando utiliza esta configuración, CloudFront elimina el encabezado Accept-Encoding de la clave


de caché y no incluye el encabezado en las solicitudes de origen. Esta configuración se aplica a todo el
contenido que CloudFront sirve con la distribución desde ese origen.

Ofrecer contenido multimedia a través de HTTP


Para obtener más información acerca de cómo optimizar el contenido de vídeo bajo demanda (VOD) y en
streaming, consulte Vídeo bajo demanda y streaming de vídeo en directo con CloudFront (p. 328).

Uso de Amazon CloudFront Origin Shield


CloudFront Origin Shield es una capa adicional en la infraestructura de almacenamiento en caché de
CloudFront que contribuye a minimizar la carga en el origen, mejorar su disponibilidad y reducir los costos
de explotación. Con CloudFront Origin Shield, obtendrá los siguientes beneficios:

Mejor tasa de aciertos de caché

Origin Shield puede contribuir a mejorar la tasa de aciertos de caché de su distribución de CloudFront,
ya que proporciona una capa adicional de almacenamiento en caché delante del origen. Cuando utiliza
Origin Shield, todas las solicitudes de todas las capas de almacenamiento en caché de CloudFront a
su origen pasan por Origin Shield, lo que aumenta la probabilidad de que se produzca un acierto de
caché. CloudFront puede recuperar cada objeto con una sola solicitud de origen desde Origin Shield al
origen, y todas las demás capas de la caché de CloudFront (ubicaciones de borde y cachés de borde
regionales (p. 6)) pueden recuperar el objeto desde Origin Shield.
Carga de origen reducida

El escudo de origen puede reducir aún más el número de solicitudes simultáneas (p. 314) que
se envían a su origen para el mismo objeto. Las solicitudes de contenido que no están en la caché
del escudo de origen se consolidan con otras solicitudes para el mismo objeto, por lo que solo
una solicitud va a su origen. La gestión de menos solicitudes en su origen puede preservar la
disponibilidad del origen durante las cargas máximas o picos de tráfico inesperados y puede reducir
los costos de cosas como el empaquetado justo a tiempo, las transformaciones de imágenes y la
transferencia de datos (DTO).
Mejor rendimiento de red

Cuando se habilita Origin Shield en la región de AWS que tiene la latencia más baja en el
origen (p. 259), puede obtener un mejor rendimiento de red. Para los orígenes de una región de
AWS, el tráfico de red de CloudFront permanece en la red de alto rendimiento de CloudFront hasta
el origen. Para los orígenes fuera de AWS, el tráfico de red de CloudFront permanece en la red de
CloudFront hasta Origin Shield, que tiene una conexión de baja latencia con su origen.

Se incurre en cargos adicionales por usar el escudo de origen. Para obtener más información, consulte los
Precios de CloudFront.

Temas
• Casos de uso para el escudo de origen (p. 256)
• Elegir la región de AWS para Origin Shield (p. 259)
• Activación del escudo de origen (p. 260)
• Estimación de los costos del escudo de origen (p. 262)
• Alta disponibilidad del escudo de origen (p. 262)
• Cómo interactúa Origin Shield con otras características de CloudFront (p. 263)

255
Amazon CloudFront Guía para desarrolladores
Casos de uso para el escudo de origen

Casos de uso para el escudo de origen


CloudFront Origin Shield puede ser beneficioso en muchos casos de uso, incluidos los siguientes:

• Los lectores que se distribuyen en diferentes regiones geográficas


• Orígenes que proporcionan empaquetado justo a tiempo para streaming o procesamiento de imágenes
sobre la marcha
• Orígenes en las instalaciones con limitaciones de capacidad o de ancho de banda
• Cargas de trabajo que utilizan varias redes de entrega de contenido (CDN)

El escudo de origen puede no ser adecuado en otros casos, como el contenido dinámico que se remite al
origen, el contenido con poca capacidad de caché o el contenido que se solicita con poca frecuencia.

En las siguientes secciones se explican los beneficios del escudo de origen para los siguientes casos de
uso.

Casos de uso
• Lectores en distintas regiones geográficas (p. 256)
• Varias CDN (p. 257)

Lectores en distintas regiones geográficas


Con Amazon CloudFront, obtiene de forma inherente una carga reducida en su origen porque las
solicitudes que CloudFront puede atender desde la caché no van a su origen. Además de la red global
de ubicaciones de borde de CloudFront, las cachés regionales de borde (p. 6) sirven como capa de
almacenamiento en caché de nivel intermedio para proporcionar aciertos de caché y consolidar solicitudes
de origen para los lectores de regiones geográficas cercanas. Las solicitudes de lector se dirigen primero
a una ubicación de borde de CloudFront cercana y, si el objeto no está almacenado en caché en esa
ubicación, la solicitud se envía a una caché de borde regional.

Cuando los lectores se encuentran en distintas regiones geográficas, las solicitudes se pueden dirigir
a través de distintas cachés de borde regionales, cada una de las cuales puede enviar una solicitud
a su origen para el mismo contenido. Pero con el escudo de origen, obtiene una capa adicional de
almacenamiento en caché entre las cachés de borde regionales y su origen. Todas las solicitudes de todas
las cachés de borde regionales pasan a través de Origin Shield, lo que reduce aún más la carga en el
origen. Los siguientes diagramas lo ilustran. En los siguientes diagramas, el origen es AWS Elemental
MediaPackage.

Sin escudo de origen

Sin escudo de origen, es posible que su origen reciba solicitudes duplicadas para el mismo contenido,
como se muestra en el siguiente diagrama.

256
Amazon CloudFront Guía para desarrolladores
Casos de uso para el escudo de origen

Con escudo de origen

El uso del escudo de origen puede contribuir a reducir la carga sobre el origen, como se muestra en el
siguiente diagrama.

Varias CDN
Para ofrecer eventos de vídeo en directo o contenido popular bajo demanda, puede utilizar varias redes de
entrega de contenido (CDN). El uso de varias CDN puede ofrecer ciertos beneficios, pero también significa
que su origen puede recibir muchas solicitudes duplicadas para el mismo contenido, cada una proveniente
de CDN diferentes o diferentes ubicaciones dentro de la misma CDN. Estas solicitudes redundantes

257
Amazon CloudFront Guía para desarrolladores
Casos de uso para el escudo de origen

podrían afectar negativamente a la disponibilidad de su origen o conllevar costos operativos adicionales


para procesos como el empaquetado justo a tiempo o la transferencia de datos (DTO) a Internet.

Al combinar Origin Shield con el uso de su distribución de CloudFront como origen para otras CDN, puede
obtener los siguientes beneficios:

• Menos solicitudes redundantes recibidas en su origen, lo que ayuda a reducir los efectos negativos del
uso de varias CDN.
• Una clave de caché (p. 93) común en las CDN y administración centralizada para características
orientadas al origen.
• Mejora del rendimiento de la red. El tráfico de red de otras CDN finaliza en una ubicación de borde
de CloudFront cercana, lo que podría proporcionar un acierto de la caché local. Si el objeto solicitado
no está en la caché de ubicación de borde, la solicitud al origen permanece en la red de CloudFront
hasta Origin Shield, lo que proporciona un alto rendimiento y una baja latencia en el origen. Si el objeto
solicitado está en la caché del escudo de origen, la solicitud a su origen se evita por completo.

Important
Si está interesado en utilizar Origin Shield en una arquitectura de CDN múltiple y tiene precios
reducidos, contacte con nosotros o con su representante de ventas de AWS para obtener más
información. Podrían aplicarse cargos adicionales.

Los siguientes diagramas muestran cómo puede ayudar esta configuración a minimizar la carga en
su origen cuando se ofrecen eventos de vídeo en vivo populares con varias CDN. En los siguientes
diagramas, el origen es AWS Elemental MediaPackage.

Sin escudo de origen (varias CDN)

Sin el escudo de origen, es posible que su origen reciba muchas solicitudes duplicadas para el mismo
contenido, cada una proveniente de una CDN diferente, como se muestra en el siguiente diagrama.

Con escudo de origen (varias CDN)

258
Amazon CloudFront Guía para desarrolladores
Elegir la región de AWS para Origin Shield

Usar Origin Shield con CloudFront como origen para las demás CDN puede ayudar a reducir la carga en
su origen, como se muestra en el siguiente diagrama.

Elegir la región de AWS para Origin Shield


Amazon CloudFront ofrece Origin Shield en las regiones de AWS en las que CloudFront tiene una caché
de borde regional (p. 6). Al activar Origin Shield, debe elegir la región de AWS para Origin Shield. Debe
elegir la región de AWS que tenga la latencia más baja en el origen. Puede usar Origin Shield con orígenes
que se encuentren en una región de AWS y con orígenes que no estén en AWS.

Para los orígenes de una región de AWS


Si su origen se encuentra en una región de AWS, determine primero si su origen se encuentra en una
región en la que CloudFront ofrece Origin Shield. CloudFront ofrece Origin Shield en las siguientes
regiones de AWS.

• EE. UU. Este (Ohio) (us-east-2)


• EE. UU. Este (Norte de Virginia) (us-east-1)
• EE. UU. Oeste (Oregón) (us-west-2)
• Asia-Pacífico (Mumbai) (ap-south-1)
• Asia-Pacífico (Seúl) (ap-northeast-2)
• Asia-Pacífico (Singapur) (ap-southeast-1)
• Asia-Pacífico (Sídney) (ap-southeast-2)
• Asia-Pacífico (Tokio) (ap-northeast-1)
• UE (Fráncfort) (eu-central-1)
• UE (Irlanda) (eu-west-1)
• UE (Londres) (eu-west-2)
• América del Sur (São Paulo) (sa-east-1)

Si su origen se encuentra en una región de AWS en la que CloudFront ofrece Origin Shield

Si el origen se encuentra en una región de AWS en la que CloudFront ofrece Origin Shield (véase la lista
anterior), habilite Origin Shield en la misma región que su origen.

Si su origen no se encuentra en una región de AWS en la que CloudFront ofrece Origin Shield

259
Amazon CloudFront Guía para desarrolladores
Activación del escudo de origen

Si el origen no se encuentra en una región de AWS en la que CloudFront ofrece Origin Shield, consulte la
siguiente tabla para determinar en qué región debe habilitar Origin Shield.

Si su origen está en... Habilite el escudo de origen en...

EE. UU. Oeste (Norte de California): us-west-1 EE. UU. Oeste (Oregón) (us-west-2)

África (Ciudad del Cabo): af-south-1 UE (Irlanda) (eu-west-1)

Asia-Pacífico (Hong Kong): ap-east-1 Asia-Pacífico (Singapur) (ap-southeast-1)

Canadá (Central): ca-central-1 EE. UU. Este (Norte de Virginia) (us-east-1)

Europa (Milán): eu-south-1 UE (Fráncfort) (eu-central-1)

Europa (París): eu-west-3 UE (Londres) (eu-west-2)

Europa (Estocolmo): eu-north-1 UE (Londres) (eu-west-2)

Medio Oriente (Baréin): me-south-1 Asia-Pacífico (Mumbai) (ap-south-1)

Para orígenes fuera de AWS


Puede utilizar Origin Shield con un origen que esté en las instalaciones o que no esté en una región de
AWS. En este caso, habilite Origin Shield en la región de AWS que tenga la latencia más baja en su
origen. Si no está seguro de qué región de AWS tiene la latencia más baja en su origen, puede utilizar las
siguientes sugerencias para ayudarle a tomar una decisión.

• Puede consultar la tabla anterior para obtener una aproximación de la región de AWS que podría tener la
menor latencia en su origen, en función de la ubicación geográfica de su origen.
• Puede lanzar instancias Amazon EC2 en algunas regiones de AWS distintas que estén geográficamente
próximas a su origen y ejecutar algunas pruebas utilizando ping para medir las latencias de red típicas
entre esas regiones y su origen.

Activación del escudo de origen


Puede habilitar el escudo de origen para mejorar su tasa de aciertos de caché, reducir la carga en el origen
y ayudar a mejorar el rendimiento. Para habilitar Origin Shield, cambie la configuración de origen de una
distribución de CloudFront. El escudo de origen es una propiedad del origen. Para cada origen de sus
distribuciones de CloudFront, puede habilitar Origin Shield por separado en cualquier región de AWS que
ofrezca el mejor rendimiento para dicho origen.

Puede habilitar Origin Shield en la consola de CloudFront, con AWS CloudFormation o con la API de
CloudFront.

Activación del escudo de origen (consola)


Para habilitar el escudo de origen para un origen existente (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/home.
2. Elija la distribución que tiene el origen que desea actualizar.
3. Seleccione la pestaña Origins and Origin Groups (Orígenes y Grupos de orígenes).
4. Elija el origen que desea actualizar y, a continuación, seleccione Edit (Editar).
5. En Enable Origin Shield (Activar escudo de origen), elija Yes (Sí).

260
Amazon CloudFront Guía para desarrolladores
Activación del escudo de origen

6. En Origin Shield Region (Región de Origin Shield), elija la región de AWS donde desea habilitar Origin
Shield. Para obtener ayuda para elegir una región, consulte Elegir la región de AWS para Origin
Shield (p. 259).
7. En la parte inferior de la página, elija Yes, Edit (Sí, editar).

Cuando el estado de distribución esté Deployed (Implementado), el escudo de origen estará listo. Esto
lleva unos minutos.

Para habilitar el escudo de origen para un nuevo origen (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/home.
2. Para crear el nuevo origen en una distribución existente, haga lo siguiente:

1. Elija la distribución en la que desea crear el origen.


2. Elija Create Origin (Crear origen), y, a continuación, continúe con el paso 3.

Para crear el nuevo origen en una nueva distribución, haga lo siguiente:

1. Seleccione Create Distribution (Crear distribución).


2. En la sección Web elija Get Started (Comenzar). En la sección Origin Settings (Configuración de
origen) complete los siguientes pasos, comenzando por el paso 3.
3. En Enable Origin Shield (Activar escudo de origen), elija Yes (Sí).
4. En Origin Shield Region (Región de Origin Shield), elija la región de AWS donde desea habilitar Origin
Shield. Para obtener ayuda para elegir una región, consulte Elegir la región de AWS para Origin
Shield (p. 259).

Si va a crear una nueva distribución, siga configurando la distribución utilizando los demás parámetros
de la página. Para obtener más información, consulte Valores que deben especificarse al crear o
actualizar una distribución (p. 43).
5. Asegúrese de guardar los cambios seleccionando Create (Crear) (para un nuevo origen en una
distribución existente) o Create Distribution (Crear distribución) (para un nuevo origen en una nueva
distribución).

Cuando el estado de distribución esté Deployed (Implementado), el escudo de origen estará listo. Esto
lleva unos minutos.

Activación de Origin Shield (AWS CloudFormation)


Para habilitar Origin Shield con AWS CloudFormation, utilice la propiedad OriginShield en el tipo de
propiedad Origin en un recurso AWS::CloudFront::Distribution. Puede agregar la propiedad
OriginShield a un Origin existente o incluirla al crear un nuevo Origin.

En el siguiente ejemplo se muestra la sintaxis, en formato YAML, para habilitar OriginShield en la


región EE. UU. Oeste (Oregón) (us-west-2). Para obtener ayuda para elegir una región, consulte Elegir
la región de AWS para Origin Shield (p. 259). En este ejemplo se muestra solo el tipo de propiedad
Origin, no todo el recurso AWS::CloudFront::Distribution.

Origins:
- DomainName: 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com
Id: Example-EMP-3ae97e9482b0d011
OriginShield:
Enabled: true
OriginShieldRegion: us-west-2
CustomOriginConfig:

261
Amazon CloudFront Guía para desarrolladores
Estimación de los costos del escudo de origen

OriginProtocolPolicy: match-viewer
OriginSSLProtocols: TLSv1

Para obtener más información, consulte AWS#CloudFront#Distribution Origin en la sección de referencia


de recursos y propiedades de la Guía del usuario de AWS CloudFormation.

Activación de Origin Shield (API de CloudFront, SDK de AWS, CLI de AWS)


Para habilitar Origin Shield con la API de CloudFront mediante los SDK de AWS o la interfaz de línea de
comandos de AWS (CLI de AWS), utilice el tipo OriginShield. Se especifica OriginShield en un
Origin, en una DistributionConfig. Para obtener información sobre el tipo OriginShield, consulte
la siguiente información en la Referencia de la API de Amazon CloudFront.

• OriginShield (tipo)
• Origin (tipo)
• DistributionConfig (tipo)
• UpdateDistribution (operación)
• CreateDistribution (operación)

La sintaxis específica para usar estos tipos y operaciones varía en función del SDK, de la CLI o cliente de
API. Para obtener más información, consulte la documentación de referencia de su SDK, CLI o cliente.

Estimación de los costos del escudo de origen


Se acumulan cargos por escudo de origen en función del número de solicitudes que van al escudo de
origen como capa incremental.

Para las solicitudes dinámicas (no almacenables en caché) que se envían como proxy al origen, el escudo
de origen es siempre una capa incremental. Las solicitudes dinámicas utilizan los siguientes métodos
HTTP: PUT, POST, PATCH y DELETE.

Para calcular los cargos del escudo de origen para solicitudes dinámicas, utilice la siguiente fórmula:

Número total de solicitudes dinámicas x cargo de escudo de origen por 10 000 solicitudes / 10 000

Para las solicitudes que se pueden almacenar en caché (métodos HTTP GET, HEAD y OPTIONS), el escudo
de origen es a veces una capa incremental. Al activar Origin Shield, debe elegir la región de AWS para
Origin Shield. Para las solicitudes que van naturalmente a la caché de borde regional (p. 6) en la misma
región que el escudo de origen, el escudo de origen no es una capa incremental. No acumula cargos del
escudo de origen por estas solicitudes. Para las solicitudes que van a una caché de borde regional en una
región diferente del escudo de origen y, a continuación, a escudo de origen, escudo de origen es una capa
incremental. Se acumulan cargos del escudo de origen por estas solicitudes.

Para calcular los cargos del escudo de origen para solicitudes que se pueden almacenar en caché, utilice
la siguiente fórmula:

Número total de solicitudes que se pueden almacenar en caché x (1: tasa de aciertos de caché) x
porcentaje de solicitudes que van a Origin Shield desde una caché de borde regional en una región
diferente x cargo de Origin Shield por 10 000 solicitudes / 10 000

Para obtener más información sobre el cargo por cada 10 000 solicitudes de Origin Shield, consulte
Precios de CloudFront.

Alta disponibilidad del escudo de origen


Origin Shield utiliza las cachés regionales de borde (p. 6) de Amazon CloudFront. Cada una de estas
cachés de borde se crea en una región de AWS usando al menos tres zonas de disponibilidad con flotas

262
Amazon CloudFront Guía para desarrolladores
Cómo interactúa Origin Shield con
otras características de CloudFront

de instancias Amazon EC2 de escalado automático. Las conexiones originadas en las ubicaciones de
CloudFront hacia Origin Shield también usan el seguimiento activo de errores en cada solicitud para
direccionar automáticamente la solicitud a una ubicación de Origin Shield secundaria si la principal no está
disponible.

Cómo interactúa Origin Shield con otras


características de CloudFront
En las secciones siguientes se explica cómo interactúa Origin Shield con otras características de
CloudFront.

Registro de Origin Shield y CloudFront


Para ver cuándo ha gestionado una solicitud el escudo de origen, debe habilitar una de las siguientes
opciones:

• Registros estándar de CloudFront (registros de acceso) (p. 463). Los registros estándar se
proporcionan de forma gratuita.
• Registros en tiempo real de CloudFront (p. 476). Incurre en cargos adicionales por el uso de registros
en tiempo real. Consulte Precios de Amazon CloudFront.

Los aciertos de caché de Origin Shield se muestran como OriginShieldHit en el campo x-edge-
detailed-result-type de los registros de CloudFront. Origin Shield utiliza las cachés regionales de
borde (p. 6) de Amazon CloudFront. Si una solicitud se dirige desde una ubicación de borde de CloudFront
a la caché de borde regional que actúa como Origin Shield, se notifica como un Hit en los registros, no
como un OriginShieldHit.

Escudo de origen y grupos de origen


Origin Shield es compatible con los grupos de orígenes de CloudFront (p. 263). Dado que el escudo
de origen es una propiedad del origen, las solicitudes siempre viajan a través del escudo de origen para
cada origen, incluso cuando el origen forma parte de un grupo de origen. Para una solicitud determinada,
CloudFront dirige la solicitud al origen principal en el grupo de origen a través de la instancia de Origin
Shield del origen principal. Si esa solicitud devuelve un error (según los criterios de conmutación por error
del grupo de orígenes), CloudFront dirige la solicitud al origen secundario a través de la instancia de Origin
Shield del origen secundario.

Escudo de origen y Lambda@Edge


Origin Shield no afecta a la funcionalidad de las funciones de Lambda @Edge (p. 337), pero puede
afectar a la región de AWS donde se ejecutan esas funciones. Cuando utiliza Origin Shield con
Lambda@Edge, los desencadenadores orientados al origen (p. 360) (solicitud de origen y respuesta
de origen) se ejecutan en la región de AWS donde está habilitado Origin Shield. Los desencadenadores
orientados al lector no se ven afectados.

Optimización de alta disponibilidad con


conmutación por error de origen de CloudFront
Puede configurar CloudFront con conmutación por error de origen en los casos en los que se requiera alta
disponibilidad. Para empezar, cree un grupo de origen con dos orígenes: uno primario y otro secundario.

263
Amazon CloudFront Guía para desarrolladores
Aumento de alta disponibilidad con conmutación por error

Si el origen principal no está disponible o devuelve códigos de estado de respuesta HTTP específicos que
indican un error, CloudFront cambia automáticamente al origen secundario.

Para configurar la conmutación por error de origen, debe tener una distribución con al menos dos orígenes.
A continuación, cree un grupo de origen para su distribución que incluya dos orígenes, configurando uno
como principal. Por último, cree o actualice un comportamiento de caché para utilizar el grupo de origen.

Para consultar los pasos para configurar grupos de origen y configurar opciones de conmutación por error
de origen específicas, consulte Creación de un grupo de origen (p. 265).

Después de configurar la conmutación por error de origen para un comportamiento de la caché, CloudFront
hace lo siguiente para las solicitudes del lector:

• Cuando hay un acierto de caché, CloudFront devuelve el archivo solicitado.


• Cuando hay un error de caché, CloudFront dirige la solicitud al origen principal en el grupo de origen.
• Cuando el origen principal devuelve un código de estado que no está configurado para conmutación por
error, como un código de estado HTTP 2xx o 3xx, CloudFront envía el contenido solicitado al lector.
• Cuando se produce cualquiera de las siguientes situaciones:
• El origen principal devuelve un código de estado HTTP que ha configurado para la conmutación por
error
• CloudFront no se conecta al origen principal
• La respuesta del origen primario tarda demasiado (se agota el tiempo de espera)

A continuación, CloudFront dirige la solicitud al origen secundario del grupo de origen.


Note

En algunos casos de uso, como el streaming de contenido de vídeo, es posible que CloudFront
conmute por error rápidamente al origen secundario. Para ajustar la rapidez con la que
CloudFront conmuta por error al origen secundario, consulte Control de los tiempos de espera
de origen y los intentos (p. 266).

CloudFront dirige todas las solicitudes entrantes al origen principal, incluso cuando una solicitud anterior ha
conmutado por error al origen secundario. CloudFront solo envía solicitudes al origen secundario después
de que se produzca un error en una solicitud al origen principal.

CloudFront conmuta por error al origen secundario solo cuando el método HTTP de la solicitud del lector
es GET, HEAD o OPTIONS. CloudFront no realiza una conmutación por error cuando el lector envía un
método HTTP diferente (por ejemplo POST, PUT, etc.).

El siguiente diagrama ilustra el funcionamiento de la conmutación por error de origen.

264
Amazon CloudFront Guía para desarrolladores
Creación de un grupo de origen

Para obtener más información, consulte los siguientes temas:

• Aciertos y errores de caché: Cómo funciona el almacenamiento en caché con ubicaciones de borde de
CloudFront (p. 251)
• Comportamiento de solicitud y de respuesta con conmutación por error de origen: Comportamiento de
solicitudes y respuestas para grupos de origen (p. 319)

Temas
• Creación de un grupo de origen (p. 265)
• Control de los tiempos de espera de origen y los intentos (p. 266)
• Utilizar la conmutación por error de origen con funciones de Lambda@Edge (p. 267)
• Utilizar páginas de error personalizadas con conmutación por error de origen (p. 268)

Creación de un grupo de origen


Para crear un grupo de origen

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 para la que desea crear el grupo de origen.
3. Seleccione la pestaña Origins and Origin Groups (Orígenes y Grupos de orígenes).
4. En la pestaña Origin and Origin Groups (Grupos de origen y origen) elija Create origin group (Crear
grupo de origen).
5. Elija los orígenes del grupo de origen. Después de agregar orígenes, utilice las flechas para establecer
la prioridad, es decir, qué origen es primario y cuál secundario.
6. Elija los códigos de estado HTTP que desea utilizar como criterios de conmutación por error. Puede
elegir cualquier combinación de los siguientes códigos de estado: 500, 502, 503, 504, 404 o 403.
Cuando CloudFront recibe una respuesta con uno de los códigos de estado especificados, conmuta
por error al origen secundario.

265
Amazon CloudFront Guía para desarrolladores
Control de los tiempos de espera de origen y los intentos

Note

CloudFront conmuta por error al origen secundario solo cuando el método HTTP de la
solicitud del lector es GET, HEAD o OPTIONS. CloudFront no realiza una conmutación por
error cuando el lector envía un método HTTP diferente (por ejemplo POST, PUT, etc.).
7. Introduzca un identificador único para el grupo de origen. No puede utilizar un identificador que ya esté
en uso para un origen u grupo de origen diferente en su cuenta de AWS.

Para obtener información sobre cómo especificar un grupo de origen para una distribución, consulte ID de
origen (p. 47).

Control de los tiempos de espera de origen y los


intentos
De forma predeterminada, CloudFront intenta conectarse al origen primario de un grupo de orígenes
durante 30 segundos (3 intentos de conexión de 10 segundos cada uno) antes de conmutar por error
al origen secundario. En algunos casos de uso, como el streaming de contenido de vídeo, es posible
que desee que CloudFront conmute por error más rápidamente al origen secundario. Puede ajustar la
siguiente configuración para que afecte a la rapidez con la que CloudFront conmuta por error al origen
secundario. Si el origen es un origen secundario o un origen que no forma parte de un grupo de orígenes,
esta configuración afecta a la rapidez con la que CloudFront devuelve una respuesta HTTP 504 al lector.

Para conmutar por error más rápidamente, especifique un tiempo de espera de conexión más breve,
menos intentos de conexión o ambas opciones. Para orígenes personalizados (incluidos los orígenes de
bucket de Amazon S3 configurados con alojamiento de sitio web estático), también puede ajustar el tiempo
de espera de respuesta de origen.

Tiempo de espera de conexión de origen

La configuración de tiempo de espera de conexión de origen afecta al tiempo que CloudFront espera
al intentar establecer una conexión con el origen. De forma predeterminada, CloudFront espera 10
segundos para establecer una conexión, pero puede especificar de 1 a 10 segundos (inclusive). Para
obtener más información, consulte Tiempo de espera de conexión de origen (p. 48).
Intentos de conexión de origen

La configuración de intentos de conexión de origen afecta al número de veces que CloudFront intenta
conectarse al origen. De forma predeterminada, CloudFront intenta conectarse 3 veces, pero puede
especificar de 1 a 3 (inclusive). Para obtener más información, consulte Intentos de conexión de
origen (p. 48).

Para un origen personalizado (incluido un bucket de Amazon S3 configurado con alojamiento de sitios
web estático), esta configuración también afecta al número de veces que CloudFront intenta obtener
una respuesta del origen en el caso de un tiempo de espera de respuesta del origen.
Tiempo de espera de respuesta de origen
Note

Esto solo se aplica a los orígenes personalizados.

La configuración de tiempo de espera de respuesta de origen afecta al tiempo que CloudFront espera
para recibir una respuesta (o para recibir la respuesta completa) del origen. De forma predeterminada,
CloudFront espera 30 segundos, pero puede especificar de 1 a 60 segundos (inclusive). Para obtener
más información, consulte Tiempo de espera de respuesta del origen (p. 51).

266
Amazon CloudFront Guía para desarrolladores
Utilizar la conmutación por error de
origen con funciones de Lambda@Edge

Cómo cambiar esta configuración


Para cambiar esta configuración en la consola de CloudFront

• Para un nuevo origen o una nueva distribución, especifique estos valores al crear el recurso.
• En el caso de un origen existente en una distribución existente, debe especificar estos valores al editar el
origen.

Para obtener más información, consulte Valores que deben especificarse al crear o actualizar una
distribución (p. 43).

Utilizar la conmutación por error de origen con


funciones de Lambda@Edge
Puede utilizar las funciones Lambda@Edge con distribuciones de CloudFront que haya configurado
con grupos de origen. Para utilizar una función Lambda, especifíquela en una solicitud de origen o un
desencadenador de respuesta de origen (p. 360) para un grupo de origen al crear el comportamiento
de la caché. Cuando se utiliza una función Lambda@Edge con un grupo de origen, la función se puede
activar dos veces para una sola solicitud de visor. Por ejemplo, considere esta situación:

1. Se crea una función Lambda@Edge con un desencadenador de solicitud de origen.


2. La función Lambda se desencadena una vez cuando CloudFront envía una solicitud al origen principal
(en un error de caché).
3. El origen principal responde con un código de estado HTTP configurado para la conmutación por error.
4. La función Lambda se desencadena de nuevo cuando CloudFront envía la misma solicitud al origen
secundario.

El siguiente diagrama ilustra cómo funciona la conmutación por error de origen cuando se incluye una
función de Lambda@Edge en una solicitud de origen o desencadenador de respuesta.

Para obtener más información sobre el uso de desencadenadores de Lambda@Edge, consulte Adición de
disparadores para una función de Lambda@Edge (p. 359).

267
Amazon CloudFront Guía para desarrolladores
Utilizar páginas de error personalizadas
con conmutación por error de origen

Utilizar páginas de error personalizadas con


conmutación por error de origen
Puede utilizar páginas de error personalizadas con grupos de origen de forma similar a cómo utilizarlos con
orígenes que no están configuradas para la conmutación por error de origen.

Cuando se utiliza la conmutación por error de origen, puede configurar CloudFront para que devuelva una
página de error personalizada para el origen principal o secundario (o ambos):

• Devolver una página de error personalizada para el origen principal: si el origen principal devuelve un
código de estado HTTP que no está configurado para la conmutación por error, CloudFront devuelve la
página de error personalizada a los lectores.
• Devolver una página de error personalizada para el origen secundario: si CloudFront recibe un código de
estado de error del origen secundario, CloudFront devuelve la página de error personalizada.

Para obtener más información acerca del uso de páginas de error personalizadas con CloudFront, consulte
Generación de respuestas de error personalizadas (p. 132).

Administración de cuánto tiempo se mantiene el


contenido en una caché (vencimiento)
Puede controlar cuánto tiempo se mantienen los archivos en una caché de CloudFront antes de que
CloudFront 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 rendimiento ya que es más
probable que sus archivos se ofrezcan directamente desde la caché perimetral. Una mayor duración
también reduce la carga en el origen.

Normalmente, CloudFront ofrece un archivo desde una ubicación de borde durante el tiempo de
almacenamiento en caché especificado por usted, es decir, hasta que el archivo venza. Después de que
venza, la próxima vez que la ubicación de borde reciba una solicitud de un archivo por parte de un usuario,
CloudFront reenviará la solicitud al servidor de origen para comprobar que la caché contiene la versión
más reciente del archivo. La respuesta del origen depende de si el archivo ha cambiado:

• Si la caché de CloudFront ya tiene la versión más reciente, el origen devuelve un código de estado 304
Not Modified.
• Si la caché de CloudFront no tiene la versión más reciente, el origen devuelve un código de estado 200
OK y la versión más reciente del archivo.

Si un archivo de una ubicación de borde no se solicita con frecuencia, es posible que CloudFront lo
desaloje (lo elimine antes de su fecha de vencimiento) con el fin de dejar espacio para otros archivos que
se hayan solicitado más recientemente.

De forma predeterminada, cada archivo caduca automáticamente después de 24 horas, pero puede
cambiar el comportamiento predeterminado de dos maneras:

• Para cambiar la duración del almacenamiento en caché de todos los archivos que coinciden con el
mismo patrón de ruta, puede cambiar la configuración de CloudFront para Minimum TTL (TTL mínimo),
Maximum TTL (TTL máximo) y Default TTL (TTL predeterminado) de un comportamiento de la caché.
Para obtener información sobre los ajustes individuales, consulte Minimum TTL (TTL mínimo), Maximum
TTL (TTL máximo) y Default TTL (TTL predeterminado) en Valores que deben especificarse al crear
o actualizar una distribución (p. 43). Para utilizar estos ajustes, debe elegir la opción Customize

268
Amazon CloudFront Guía para desarrolladores
Utilizar encabezados para controlar la duración del
almacenamiento en caché de objetos individuales

(Personalizar) para la configuración Object Caching (Almacenamiento de objetos en caché) al crear o


actualizar la distribución de CloudFront. Para obtener más información, consulte Almacenamiento de
objetos en caché en Valores que deben especificarse al crear o actualizar una distribución (p. 43).
• Para cambiar la duración del almacenamiento en caché de un archivo individual, puede configurar
el origen para agregar una política Cache-Control max-age o Cache-Control s-maxage o
un campo de encabezado Expires en el archivo. Para obtener más información, consulte Utilizar
encabezados para controlar la duración del almacenamiento en caché de objetos individuales (p. 269).

Para obtener más información acerca de cómo Minimum TTL (TTL mínimo), Default TTL (TTL
predeterminado) y Maximum TTL (TTL máximo) interactúan con las políticas Cache-Control max-age
y Cache-Control s-maxage y con el campo de encabezado Expires, consulte Especificar durante
cuánto tiempo CloudFront almacena objetos en caché (p. 270).

También puede controlar durante cuánto tiempo los errores (como 404, Not Found) permanecen en una
caché de CloudFront antes de que CloudFront intente obtener de nuevo el objeto solicitado reenviando
otra solicitud al origen. Para obtener más información, consulte Cómo CloudFront procesa y almacena en
caché los códigos de estado HTTP 4xx y 5xx desde el origen (p. 323).

Temas
• Utilizar encabezados para controlar la duración del almacenamiento en caché de objetos
individuales (p. 269)
• Especificar durante cuánto tiempo CloudFront almacena objetos en caché (p. 270)
• Agregar encabezados a los objetos con la consola de Amazon S3 (p. 274)

Utilizar encabezados para controlar la duración del


almacenamiento en caché de objetos individuales
Puede utilizar los encabezados Cache-Control y Expires para controlar durante cuánto tiempo
permanecen los objetos en la caché. La configuración de Minimum TTL (Tiempo de vida mínimo), Default
TTL (Tiempo de vida predeterminado) y Maximum TTL (Tiempo de vida máximo) también afecta la
duración del almacenamiento en caché, pero a continuación encontrará información general acerca de
cómo los encabezados pueden influir en la duración de la caché:

• La política Cache-Control max-age le permite especificar durante cuánto tiempo (en segundos)
desea que un objeto permanezca en la caché antes de que CloudFront obtenga el objeto de nuevo del
servidor de origen. El tiempo mínimo de caducidad compatible con CloudFront es de 0 segundos. El
valor máximo es 100 años. Especifique el valor en el siguiente formato:

Cache-Control: max-age=segundos

Por ejemplo, la siguiente política indica a CloudFront que debe mantener el objeto asociado en la caché
durante 3600 segundos (una hora):

Cache-Control: max-age=3600

Si desea que los objetos permanezcan en las cachés de borde de CloudFront por un tiempo distinto del
que permanecen en las cachés de navegadores, puede utilizar las políticas Cache-Control max-age
y Cache-Control s-maxage de forma conjunta. Para obtener más información, consulte Especificar
durante cuánto tiempo CloudFront almacena objetos en caché (p. 270).
• El campo del encabezado Expires le permite especificar una fecha y hora de vencimiento con el
formato indicado en RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 Section 3.3.1, Full Date, por
ejemplo:

Sat, 27 Jun 2015 23:59:59 GMT

269
Amazon CloudFront Guía para desarrolladores
Especificar durante cuánto tiempo
CloudFront almacena objetos en caché

Le recomendamos que utilice la directiva Cache-Control max-age en lugar del campo de encabezado
Expires para controlar el almacenamiento de objetos en caché. Si especifica valores para Cache-
Control max-age y para Expires, CloudFront utiliza solo el valor de Cache-Control max-age.

Para obtener más información, consulte Especificar durante cuánto tiempo CloudFront almacena objetos
en caché (p. 270).

No puede utilizar los campos de encabezado HTTP Cache-Control ni Pragma en una solicitud GET de
un lector para obligar a CloudFront a volver al servidor de origen para obtener el objeto. CloudFront ignora
los campos de encabezado de las solicitudes de los lectores.

Para obtener más información acerca de los campos de encabezado Cache-Control y Expires, visite
las siguientes secciones de RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1:

• Section 14.9 Cache Control


• Section 14.21 Expires

Para obtener un ejemplo de cómo agregar campos de encabezado Cache-Control y Expires


utilizando AWS SDK para PHP, consulte Cargar un objeto mediante AWS SDK para PHP en la Guía para
desarrolladores de Amazon Simple Storage Service. También hay herramientas de terceros que pueden
añadir estos campos.

Especificar durante cuánto tiempo CloudFront


almacena objetos en caché
Para controlar la cantidad de tiempo que CloudFront mantiene un objeto en la caché antes de enviar otra
solicitud al origen, puede:

• Establecer los valores TTL mínimo, máximo y predeterminado en el comportamiento de la caché de una
distribución de CloudFront. Puede establecer estos valores en una política de caché (p. 93) adjunta al
comportamiento de caché (recomendado) o en la configuración de caché heredada.
• Incluya los encabezados Cache-Control o Expires en las respuestas del origen. Estos encabezados
también ayudan a determinar cuánto tiempo un explorador mantiene un objeto en la caché del
explorador antes de enviar otra solicitud a CloudFront.

En la tabla siguiente se explica cómo los encabezados Cache-Control y Expires enviados desde
el origen funcionan junto con la configuración TTL en un comportamiento de caché para afectar al
almacenamiento en caché.

Encabezados de origen TTL mínimo = 0 segundos TTL mínimo > 0 segundos

El origen agrega una directiva de Almacenamiento en caché de Almacenamiento en caché de


Cache-Control: max-age al CloudFront CloudFront
objeto
CloudFront almacena en caché El almacenamiento en caché
el objeto para el menor valor de de CloudFront depende de los
la directiva Cache-Control: valores del TTL mínimo y TTL
max-age o el valor de TTL máximo de CloudFront y de la
máximo de CloudFront. directiva Cache-Control max-
age:
Almacenamiento en caché de
navegadores • Si TTL mínimo < max-age
< TTL máximo, CloudFront
Los navegadores almacenan en almacena en caché el objeto
caché el objeto para el valor de

270
Amazon CloudFront Guía para desarrolladores
Especificar durante cuánto tiempo
CloudFront almacena objetos en caché

Encabezados de origen TTL mínimo = 0 segundos TTL mínimo > 0 segundos


la directiva Cache-Control: para el valor de la directiva
max-age. Cache-Control: max-age.
• Si max-age < TTL mínimo,
CloudFront almacena en caché
el objeto para el valor del TTL
mínimo de CloudFront.
• Si max-age > TTL máximo,
CloudFront almacena en caché
el objeto para el valor del TTL
máximo de CloudFront.

Almacenamiento en caché de
navegadores

Los navegadores almacenan en


caché el objeto para el valor de
la directiva Cache-Control:
max-age.

El origen no agrega una directiva Almacenamiento en caché de Almacenamiento en caché de


Cache-Control: max-age al CloudFront CloudFront
objeto
CloudFront almacena en caché CloudFront almacena en caché
el objeto para el valor del TTL el objeto para el mayor valor del
predeterminado de CloudFront. TTL mínimo de CloudFront o TTL
predeterminado.
Almacenamiento en caché de
navegadores Almacenamiento en caché de
navegadores
Depende del navegador.
Depende del navegador.

271
Amazon CloudFront Guía para desarrolladores
Especificar durante cuánto tiempo
CloudFront almacena objetos en caché

Encabezados de origen TTL mínimo = 0 segundos TTL mínimo > 0 segundos

El origen agrega directivas Almacenamiento en caché de Almacenamiento en caché de


Cache-Control: max-age y CloudFront CloudFront
Cache-Control: s-maxage al
objeto CloudFront almacena en caché El almacenamiento en caché
el objeto para el menor valor de de CloudFront depende de los
la directiva Cache-Control: valores del TTL mínimo y TTL
s-maxage o el valor de TTL máximo de CloudFront y de la
máximo de CloudFront. directiva Cache-Control: s-
maxage:
Almacenamiento en caché de
navegadores • Si TTL mínimo < s-maxage
< TTL máximo, CloudFront
Los navegadores almacenan en almacena en caché el objeto
caché el objeto para el valor de la para el valor de la directiva
directiva Cache-Control max- Cache-Control: s-
age. maxage.
• Si s-maxage < TTL mínimo,
CloudFront almacena en caché
el objeto para el valor del TTL
mínimo de CloudFront.
• Si s-maxage > TTL máximo,
CloudFront almacena en caché
el objeto para el valor del TTL
máximo de CloudFront.

Almacenamiento en caché de
navegadores

Los navegadores almacenan en


caché el objeto para el valor de
la directiva Cache-Control:
max-age.

272
Amazon CloudFront Guía para desarrolladores
Especificar durante cuánto tiempo
CloudFront almacena objetos en caché

Encabezados de origen TTL mínimo = 0 segundos TTL mínimo > 0 segundos

El origen añade un encabezado Almacenamiento en caché de Almacenamiento en caché de


Expires al objeto CloudFront CloudFront

CloudFront almacena en caché El almacenamiento en caché


el objeto hasta la fecha del de CloudFront depende de los
encabezado Expires o el valor valores de los TTL mínimo y
del TTL máximo de CloudFront, máximo de CloudFront y del
lo que suceda antes. encabezado Expires:

Almacenamiento en caché de • Si TTL mínimo < Expires


navegadores < TTL máximo, CloudFront
almacena en caché el objeto
Los navegadores almacenan el hasta la fecha y hora del
objeto en la caché hasta la fecha encabezado Expires.
del encabezado Expires. • Si Expires < TTL mínimo,
CloudFront almacena en caché
el objeto para el valor del TTL
mínimo de CloudFront.
• Si Expires > TTL máximo,
CloudFront almacena en caché
el objeto para el valor del TTL
máximo de CloudFront.

Almacenamiento en caché de
navegadores

Los navegadores almacenan el


objeto en la caché hasta la fecha
y hora del encabezado Expires.

El origen agrega directivas CloudFront y los navegadores Almacenamiento en caché de


Cache-Control: no-cache, respetan los encabezados. CloudFront
no-store o private al objeto
Para obtener una excepción de CloudFront almacena en caché
cómo CloudFront gestiona el el objeto para el valor del TTL
encabezado Cache-Control: mínimo de CloudFront. Consulte
no-cache, consulte Solicitudes la advertencia debajo de esta
simultáneas del mismo objeto tabla. (p. 273)
(picos de tráfico) (p. 314).
Almacenamiento en caché de
navegadores

Los navegadores respetan los


encabezados.

Warning

Si CloudFront obtiene un objeto del origen que incluye las directivas Cache-Control: no-
cache, no-store y/o private, y luego CloudFront obtiene otra solicitud de lector para el mismo
objeto, CloudFront intenta ponerse en contacto con el origen para cumplir la solicitud del lector.
Si se puede acceder al origen, CloudFront obtiene el objeto del origen y lo devuelve al lector.
Si el origen es inalcanzable y el TTL mínimo es mayor que 0, CloudFront sirve el objeto que
obtuvo del origen anteriormente. Para evitar este comportamiento, incluya la directiva Cache-
Control: stale-if-error=0 con el objeto devuelto desde el origen. Esto hace que

273
Amazon CloudFront Guía para desarrolladores
Agregar encabezados a los objetos
con la consola de Amazon S3

CloudFront devuelva un error en respuesta a solicitudes futuras si el origen es inalcanzable, en


lugar de devolver el objeto que obtuvo del origen anteriormente.

Para obtener información acerca de cómo cambiar la configuración de distribuciones mediante la consola
de CloudFront, consulte Actualización de una distribución (p. 71). Para obtener información sobre cómo
cambiar la configuración de las distribuciones con la API de Cloudfront; consulte UpdateDistribution.

Agregar encabezados a los objetos con la consola de


Amazon S3
Para agregar un campo de encabezado Cache-Control o Expires a objetos de Amazon S3
mediante 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 lista de buckets, elija el nombre del bucket que contenga los archivos a los que agregará
encabezados.
3. Active la casilla de verificación situada junto al nombre del archivo o la carpeta a la que agregará
encabezados. Cuando agrega encabezados a una carpeta, afecta a todos los archivos dentro de esa
carpeta.
4. Elija Actions (Acciones) y luego Edit metadata (Editar metadatos).
5. En el panel Add metadata (Agregar metadatos), haga lo siguiente:

a. Elija Add metadata (Agregar metadatos).


b. En Type (Tipo), elija System defined (Definido por el sistema).
c. Para Key (Clave), elija el nombre del encabezado que agregará (Cache-Control o Expires).
d. En Value (Valor), introduzca un valor de encabezado. Por ejemplo, para un encabezado
Cache-Control, introduzca max-age=86400. Para Expires, introduzca una fecha y hora de
caducidad tal como Wed, 30 Jun 2021 09:28:00 GMT.
6. En la parte inferior de la página, elija Edit metadata (Editar metadatos).

Almacenamiento en caché de contenido en función


de parámetros de cadenas de consulta
Algunas aplicaciones web utilizan cadenas de consulta para enviar información al origen. Una cadena de
consulta es la parte de una solicitud web que aparece después de un carácter ? y puede contener uno o
varios parámetros, separados por caracteres &. En el siguiente ejemplo, la cadena de consulta incluye dos
parámetros, color=red y size=large:

http://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large

Para distribuciones, puede elegir si desea que CloudFront reenvíe cadenas de consultas al origen y
si desea almacenar en caché el contenido en función de todos los parámetros o de los parámetros
seleccionados. ¿Por qué podría resultar útil? Considere el siguiente ejemplo.

Supongamos que su sitio web está disponible en cinco idiomas. La estructura de directorios y los nombres
de archivo de las cinco versiones del sitio web son idénticos. Cuando un usuario consulta el sitio web,
las solicitudes que se reenvían a CloudFront incluyen un parámetro de cadena de consulta de idioma
en función del idioma elegido por el usuario. Puede configurar CloudFront para reenviar cadenas de
consulta al origen y almacenar en caché en función del parámetro de idioma. Si configura el servidor web
para devolver la versión de una página determinada que se corresponda con el idioma seleccionado,

274
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché y
parámetros de cadenas de consulta

CloudFront almacena en la caché cada versión del idioma por separado, en función del valor del parámetro
de cadena de consulta del idioma.

En este ejemplo, si la página principal para el sitio web es main.html, las siguientes cinco solicitudes
hacen que CloudFront almacene cinco veces en la caché main.html, una vez por cada valor de
parámetro de cadena de consulta de idioma:

• http://d111111abcdef8.cloudfront.net/main.html?language=de
• http://d111111abcdef8.cloudfront.net/main.html?language=en
• http://d111111abcdef8.cloudfront.net/main.html?language=es
• http://d111111abcdef8.cloudfront.net/main.html?language=fr
• http://d111111abcdef8.cloudfront.net/main.html?language=jp

Tenga en cuenta lo siguiente:

• Algunos servidores HTTP no procesan parámetros de cadenas de consulta y, por lo tanto, no devuelven
distintas versiones de un objeto en función de los valores de los parámetros. Para estos orígenes, si
configura CloudFront para reenviar los parámetros de cadenas de consulta al origen, CloudFront sigue
almacenando en caché en función de los valores de los parámetros a pesar de que el origen devuelva
versiones idénticas del objeto a CloudFront para cada valor del parámetro.
• Para que los parámetros de cadenas de consulta funcionen tal y como se describe en el ejemplo anterior
con los idiomas, debe utilizar el carácter & como delimitador entre parámetros de cadenas de consulta.
Si utiliza un delimitador diferente, es posible que obtenga resultados imprevistos, en función de los
parámetros que especifique para que CloudFront utilice como base para el almacenamiento en caché y
del orden en el que aparecen los parámetros en la cadena de consulta.

Los siguientes ejemplos muestran lo que ocurre si utiliza un delimitador diferente y configura CloudFront
para almacenar en caché solo en función del parámetro color:
• En la siguiente solicitud, CloudFront almacena en caché el contenido en función del valor del
parámetro color, pero CloudFront interpreta el valor como red;size=large:

http://d111111abcdef8.cloudfront.net/images/image.jpg?color=red;size=large
• En la siguiente solicitud, CloudFront almacena en caché el contenido pero no en función de los
parámetros de cadenas de consulta. Esto se debe a que ha configurado CloudFront para almacenar
en caché en función del parámetro color, pero CloudFront interpreta la siguiente cadena como que
contiene solo un parámetro size con el valor large;color=red:

http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large;color=red

Puede configurar CloudFront para que realice una de las siguientes acciones:

• No enviar cadenas de consultas al origen. Si no reenvía cadenas de consultas, CloudFront no almacena


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 la
cadena de consulta.
• Reenviar cadenas de consulta al origen y almacenar en caché en función de parámetros especificados
en la cadena de consulta.

Para obtener más información, consulte Optimización del almacenamiento en caché (p. 276).

Temas
• Configuración de la consola y de la API para el reenvío de cadenas de consulta y almacenamiento en
caché (p. 276)
• Optimización del almacenamiento en caché (p. 276)

275
Amazon CloudFront Guía para desarrolladores
Configuración de la consola y de la API para el reenvío
de cadenas de consulta y almacenamiento en caché

• Parámetros de cadena de consulta y registros estándar de CloudFront (registros de acceso) (p. 277)

Configuración de la consola y de la API para el


reenvío de cadenas de consulta y almacenamiento en
caché
Para configurar el reenvío y almacenamiento en caché de cadenas de consulta en la consola de
CloudFront, consulte los siguientes ajustes en Valores que deben especificarse al crear o actualizar una
distribución (p. 43):

• Reenvío de cadenas de consulta y almacenamiento en caché (p. 59)


• Lista blanca de cadenas de consulta (p. 59)

Para configurar el reenvío y almacenamiento en caché de cadenas de consulta con la API de


CloudFront, consulte los siguientes ajustes en Tipo complejo DistributionConfig y en Tipo complejo
DistributionConfigWithTags en la Referencia de la API de Amazon CloudFront:

• QueryString
• QueryStringCacheKeys

Optimización del almacenamiento en caché


Cuando se configura CloudFront para almacenar en caché en función de parámetros de cadenas de
consulta, puede realizar los siguientes pasos para reducir el número de solicitudes que CloudFront reenvía
al origen. Cuando las ubicaciones de borde de CloudFront sirven objetos, se reduce la carga en el servidor
de origen y se reduce la latencia porque los objetos se sirven desde ubicaciones más cercanas a los
usuarios.

Almacenar en caché solo en función de parámetros por los que su origen devuelve diferentes versiones de
un objeto

Por cada parámetro de cadena de consulta que la aplicación web reenvía a CloudFront, CloudFront
reenvía solicitudes al origen por cada valor del parámetro y almacena en caché una versión
independiente del objeto por cada valor del parámetro. Esto ocurre incluso si el origen siempre
devuelve el mismo objeto independientemente del valor del parámetro. Para varios parámetros, el
número de solicitudes y el número de objetos se multiplican. Por ejemplo, si las solicitudes de un
objeto incluyen dos parámetros que tienen tres valores diferentes, CloudFront almacena en caché seis
versiones de ese objeto, suponiendo que siga las demás recomendaciones de esta sección.

Le recomendamos configurar CloudFront para almacenar en caché solo los parámetros de cadenas
de consulta para los que el origen devuelve distintas versiones y que piense detenidamente en las
ventajas de almacenar en caché en función de cada parámetro. Supongamos que tiene un sitio web
de venta al por menor. Dispone de imágenes de una chaqueta en seis colores diferentes y la chaqueta
está disponible en diez tallas distintas. Sus imágenes de la chaqueta muestran los distintos colores,
pero no las distintas tallas. Para optimizar el almacenamiento en caché, debe configurar CloudFront
para almacenar en caché solo en función del parámetro de color, no el de tamaño. Esto aumenta la
probabilidad de que CloudFront pueda atender una solicitud de la caché, lo que mejora el rendimiento
y reduce la carga en el origen.
Organice los parámetros siempre en el mismo orden

El orden de los parámetros de cadenas de consulta es importante. En el siguiente ejemplo, las


cadenas de consulta son idénticas, salvo que los parámetros están en órdenes diferentes. Esto hace

276
Amazon CloudFront Guía para desarrolladores
Parámetros de cadena de consulta y registros
estándar de CloudFront (registros de acceso)

que CloudFront reenvíe dos solicitudes de image.jpg independientes al origen y que almacene en
caché dos versiones independientes del objeto:
• http://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large
• http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large&color=red

Le recomendamos enumerar los nombres de los parámetros siempre en el mismo orden, por ejemplo,
por orden alfabético.
Utilice siempre el mismo tipo de letra (mayúsculas o minúsculas) en los nombres y valores de parámetros

CloudFront diferencia mayúsculas de minúsculas en los valores y nombres de los parámetros


al almacenar en caché en función de los parámetros de cadenas de consulta. En el siguiente
ejemplo, las cadenas de consulta son idénticas, salvo por las mayúsculas y minúsculas de los
nombres y valores del parámetro. Esto hace que CloudFront reenvíe cuatro solicitudes de image.jpg
independientes al origen y que almacene en caché cuatro versiones independientes del objeto:
• 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 de


pará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 al contenido (si ha agregado signatarios de confianza
a la distribución), CloudFront elimina los siguientes parámetros de cadenas de consulta antes de
reenviar el resto de la URL al origen:
• Expires
• Key-Pair-Id
• Policy
• Signature

Si utiliza URL firmadas y desea configurar CloudFront para reenviar cadenas de consulta al origen,
sus propios parámetros de cadenas de consulta no pueden denominarse Expires, Key-Pair-Id,
Policy ni Signature.

Parámetros de cadena de consulta y registros


estándar de CloudFront (registros de acceso)
Si habilita el registro, CloudFront registra la URL completa, incluidos los parámetros de cadenas de
consulta. Esto ocurre independientemente de si ha configurado CloudFront para reenviar cadenas de
consulta al origen. Para obtener más información acerca del registro de CloudFront, consulte Configuración
y uso de registros estándar (registros de acceso) (p. 463).

Almacenamiento en caché de contenido en función


de cookies
De forma predeterminada, CloudFront no tiene en cuenta las cookies al procesar solicitudes y respuestas,
ni al almacenar en caché los objetos en ubicaciones de borde. Si CloudFront recibe dos solicitudes

277
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché de
contenido en función de cookies

que sean idénticas excepto por lo que está en el encabezado de Cookie, de forma predeterminada,
CloudFront trata las solicitudes como idénticas y devuelve el mismo objeto para ambas solicitudes.

Puede configurar CloudFront para reenviar al origen algunas o todas las cookies de las solicitudes de los
lectores y para almacenar en caché diferentes versiones de los objetos en función de los valores de las
cookies de las solicitudes que reenvía. Al hacerlo, CloudFront utiliza algunas o todas las cookies de las
solicitudes de lectores (las que esté configurado para reenviar) para identificar de forma única un objeto en
la caché.

Supongamos que las solicitudes de locations.html contienen una cookie country con un valor de
uk o fr. Al configurar CloudFront para almacenar los objetos en la caché en función del valor de la cookie
country, CloudFront reenvía al origen las solicitudes de locations.html e incluye la cookie country
y su valor. El origen devuelve locations.html y CloudFront almacena el objeto una vez en la caché
para las solicitudes cuyo valor de la cookie country sea uk y otra vez para las solicitudes cuyo valor de la
cookie sea fr.
Important

Amazon S3 y algunos servidores HTTP no procesan cookies. No configure CloudFront para


reenviar cookies a un origen que no procese cookies o que no varíe su respuesta en función de
las cookies. Esto puede hacer que CloudFront reenvíe más solicitudes al origen para el mismo
objeto, lo que ralentiza el rendimiento y aumenta la carga en el origen. Si, teniendo en cuenta el
ejemplo anterior, su origen no procesa la cookie country o siempre devuelve la misma versión
de locations.html a CloudFront independientemente del valor de la cookie country, no
configure CloudFront para que reenvíe esa cookie.
Por el contrario, si el origen personalizado depende de una cookie en particular o envía diferentes
respuestas en función de una cookie, asegúrese de configurar CloudFront para que reenvíe esa
cookie al origen. De lo contrario, CloudFront elimina la cookie antes de reenviar la solicitud al
origen.

Para configurar el reenvío de cookies, actualice el comportamiento de la caché de su distribución.


Para obtener más información acerca de los comportamientos de caché, consulte Configuración del
comportamiento de la caché (p. 52) y, en particular, las secciones Forward Cookies (Reenvío de
cookies) (p. 58) y Whitelist Cookies (Lista blanca de cookies) (p. 58).

Puede configurar cada comportamiento de la caché para realizar una de las siguientes acciones:

• Reenviar todas las cookies al origen: CloudFront incluye todas las cookies enviadas por el lector cuando
reenvía las solicitudes al origen. Cuando el origen devuelve una respuesta, CloudFront almacena
en caché la respuesta utilizando los nombres y valores de las cookies en la solicitud del lector. Si la
respuesta de origen incluye encabezados Set-Cookie, CloudFront los devuelve al lector con el objeto
solicitado. CloudFront también almacena en caché los encabezados Set-Cookie con el objeto devuelto
desde el origen y envía esos encabezados Set-Cookie a los lectores en todos los aciertos de caché.
• Reenviar una lista blanca de cookies que especifique: CloudFront elimina las cookies que el lector envía
y que no están en la lista blanca antes de que reenvíe una solicitud al origen. CloudFront almacena en
caché la respuesta utilizando los nombres y valores de las cookies permitidos de la solicitud del lector.
Si la respuesta de origen incluye encabezados Set-Cookie, CloudFront los devuelve al lector con el
objeto solicitado. CloudFront también almacena en caché los encabezados Set-Cookie con el objeto
devuelto desde el origen y envía esos encabezados Set-Cookie a los lectores en todos los aciertos de
caché.

Para obtener información sobre cómo especificar caracteres comodín en nombres de cookies en una
lista blanca, consulte Whitelist Cookies (Lista blanca de cookies) (p. 58).

Para consultar la cuota actual de la cantidad de nombres de cookies que puede agregar a una lista
blanca para cada comportamiento de la caché o para solicitar una ampliación de la cuota, consulte
Cuotas de cadenas de consulta incluidas en la lista blanca (solo para distribuciones web) (p. 522).
• No reenviar las cookies al origen: CloudFront no almacena los objetos en la caché en función de cookies
enviadas por el lector. Además, CloudFront elimina las cookies antes de reenviar las solicitudes al

278
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché de
contenido en función de cookies

origen y elimina los encabezados Set-Cookie de las respuestas antes de devolver las respuestas a los
lectores.

Tenga en cuenta lo siguiente acerca de especificar las cookies que desea reenviar:

Logs de acceso

Si configura CloudFront para registrar solicitudes y cookies, CloudFront registra todas las cookies y
todos los atributos de cookies, incluso si configura CloudFront para no reenviar cookies al origen o si
configura CloudFront para reenviar solo una lista blanca de cookies específicas. Para obtener más
información acerca del registro de CloudFront, consulte Configuración y uso de registros estándar
(registros de acceso) (p. 463).
Sensibilidad de mayúsculas y minúsculas

Los nombres y valores de las cookies distinguen entre mayúsculas y minúsculas. Por ejemplo, si se
configura CloudFront para reenviar todas las cookies y dos solicitudes de lector para el mismo objeto
tienen cookies que son idénticas excepto por el caso, CloudFront almacena el objeto dos veces en la
caché.
CloudFront ordena las cookies

Si se configura CloudFront para reenviar las cookies (todas o una lista blanca), CloudFront ordena las
cookies en orden natural por nombre de cookie antes de reenviar la solicitud al origen.
If-Modified-Since y If-None-Match

Las solicitudes condicionales If-Modified-Since y If-None-Match no son compatibles cuando


CloudFront se configura para reenviar cookies (todas o una lista blanca).
Formato necesario de pares de nombre-valor estándar

CloudFront reenvía un encabezado de cookie solo si el valor se ajusta al formato estándar de pares de
nombre-valor, por ejemplo: "Cookie: cookie1=value1; cookie2=value2"
Deshabilitar el almacenamiento en caché de los encabezados Set-Cookie

Si se configura CloudFront para reenviar cookies al origen (todas o una lista blanca), también
almacena en caché los encabezados Set-Cookie recibidos en la respuesta de origen. CloudFront
incluye estos encabezados Set-Cookie en la respuesta al lector original y también los incluye en las
respuestas posteriores que se sirven desde la caché de CloudFront.

Si desea recibir cookies en el origen pero no desea que CloudFront almacene en caché los
encabezados Set-Cookie en las respuestas del origen, configure el origen para agregar un
encabezado Cache-Control con una política de no-cache que especifique Set-Cookie como
nombre de campo. Por ejemplo: Cache-Control: no-cache="Set-Cookie". Para obtener más
información, consulte Directivas de respuesta de control de caché en el protocolo de transferencia de
hipertexto (HTTP/1.1): almacenamiento en caché estándar.
Longitud máxima de los nombres de las cookies

Si configura CloudFront para reenviar una lista blanca de cookies específicas al origen, el número total
de bytes en todos los nombres de cookies que configure CloudFront para reenviar no puede superar
los 512 menos el número de cookies que reenvía. Por ejemplo, si configura CloudFront para reenviar
10 cookies al origen, la longitud combinada de los nombres de las 10 cookies no puede superar los
502 bytes (512-10).

Si configura CloudFront para reenviar todas las cookies al origen, la longitud de los nombres de las
cookies no importa.

Para obtener más información acerca del uso de la consola de CloudFront para actualizar una distribución
de modo que CloudFront reenvíe las cookies al origen, consulte Actualización de una distribución (p. 71).

279
Amazon CloudFront Guía para desarrolladores
Almacenamiento en caché de contenido
en función de encabezados de solicitud

Para obtener información sobre el uso de la API de CloudFront para actualizar una distribución, consulte
UpdateDistribution en la Referencia de la API de Amazon CloudFront.

Almacenamiento en caché de contenido en función


de encabezados de solicitud
CloudFront le permite elegir si desea que CloudFront reenvíe los encabezados al origen y almacene
en caché diferentes versiones de un objeto especificado en función de los valores de encabezado de
las solicitudes de los lectores. Esto le permite ofrecer distintas versiones del contenido en función del
dispositivo del usuario, la ubicación del espectador, su idioma y otros criterios.

Temas
• Encabezados y distribuciones: información general (p. 280)
• Selección de los encabezados para basar el almacenamiento en caché (p. 281)
• Configuración de CloudFront para respetar la configuración CORS (p. 282)
• Configuración del almacenamiento en caché en función del tipo de dispositivo (p. 282)
• Configuración del almacenamiento en caché en función del idioma del lector (p. 283)
• Configurar el almacenamiento en caché en función de la ubicación del lector (p. 283)
• Configurar el almacenamiento en caché en función del protocolo de la solicitud (p. 283)
• Configuración del almacenamiento en caché para archivos comprimidos (p. 283)
• Cómo afecta al rendimiento el almacenamiento en caché en función de los encabezados (p. 283)
• Cómo afectan al almacenamiento en caché las mayúsculas o minúsculas de los encabezados y sus
valores (p. 284)
• Encabezados que CloudFront devuelve al lector (p. 284)

Encabezados y distribuciones: información general


De forma predeterminada, CloudFront no tiene en cuenta los encabezados al almacenar los objetos en la
caché en ubicaciones de borde. Si el origen devuelve dos objetos que se diferencian solo por los valores
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 CloudFront
almacene en caché varias versiones de un objeto en función de los valores en uno o varios encabezados
de solicitud. Para configurar CloudFront para almacenar en caché los objetos en función de los valores
de encabezados específicos, se especifica la configuración del comportamiento de la caché para la
distribución. Para obtener más información, consulte Caché en función de encabezados de solicitud
seleccionados.

Supongamos que las solicitudes de espectadores de logo.jpg contienen un encabezado personalizado


Product con un valor de Acme o Apex. Al configurar CloudFront para que almacene en caché los objetos
en función del valor del encabezado Product, CloudFront reenvía solicitudes de logo.jpg al origen e
incluye el encabezado Product y los valores del encabezado. CloudFront almacena en caché logo.jpg
una vez por cada solicitud cuyo valor del encabezado Product es Acme y otra vez por cada solicitud cuyo
valor es Apex.

Puede configurar cada comportamiento de la caché en una distribución para realizar una de las siguientes
acciones:

• Reenviar todos los encabezados al origen

280
Amazon CloudFront Guía para desarrolladores
Selección de los encabezados para
basar el almacenamiento en caché

Important

Si configura CloudFront para reenviar todos los encabezados al origen, CloudFront no


almacena en caché los objetos asociados con 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 objetos
en función de los valores de todos los encabezados especificados. CloudFront también reenvía los
encabezados que reenvía de forma predeterminada, pero almacena en caché los objetos solo según los
encabezados que especifique.
• Reenviar solo los encabezados predeterminados. En esta configuración, CloudFront no almacena los
objetos en caché en función de los valores de los encabezados de solicitudes.

Para consultar la cuota actual de la cantidad de encabezados que puede agregar a una lista blanca
para cada comportamiento de la caché o para solicitar una ampliación de la cuota, consulte Cuotas en
encabezados personalizados (p. 522).

Para obtener información acerca del uso de la consola de CloudFront para actualizar una distribución de
modo que CloudFront reenvíe encabezados al origen, consulte Actualización de una distribución (p. 71).
Para obtener información sobre el uso de la API de CloudFront para actualizar una distribución existente,
consulte Actualizar distribución en la Referencia de la API de Amazon CloudFront.

Selección de los encabezados para basar el


almacenamiento en caché
Los encabezados que puede reenviar al origen y en los que CloudFront basa el almacenamiento en caché
dependen de si el origen es un bucket de Amazon S3 o un origen personalizado.

• Amazon S3: puede configurar CloudFront para reenviar y almacenar en caché los objetos en función
de un número de encabezados específicos (consulte la lista de excepciones que se muestra a
continuación). Sin embargo, le recomendamos que evite los encabezados de lista blanca con un origen
de Amazon S3 a no ser que necesite implementar el uso compartido de recursos entre orígenes (CORS)
o desee personalizar contenido mediante Lambda@Edge en eventos producidos en el origen.
• Para configurar CORS, debe reenviar encabezados que permitan a CloudFront distribuir contenido
para sitios web que están habilitados para el uso compartido de recursos entre orígenes (CORS).
Para obtener más información, consulte Configuración de CloudFront para respetar la configuración
CORS (p. 282).
• Para personalizar el contenido mediante el uso de encabezados que reenvía al origen de Amazon
S3, debe escribir y agregar funciones Lambda@Edge y asociarlas a la distribución de CloudFront
para desencadenarlas mediante un evento producido en el origen. Para obtener más información
acerca del uso de encabezados para personalizar contenido, consulte Personalizar contenido por
encabezados de tipo de dispositivo o país: ejemplos (p. 397).

Le recomendamos que evite los encabezados de lista blanca que no esté utilizando para personalizar
contenido ya que el reenvío de encabezados adicionales puede reducir la tasa de aciertos de
caché. Es decir, CloudFront; no puede atender tantas solicitudes de cachés perimetrales, como una
proporción de todas las solicitudes.
• Origen personalizado: puede configurar CloudFront para almacenar en caché en función del valor de
cualquier encabezado de solicitud, excepto los siguientes:
• Connection
• Cookie: si desea reenviar y almacenar en caché en función de las cookies, utilice otra configuración
diferente en la distribución. Para obtener más información, consulte Almacenamiento en caché de
contenido en función de cookies (p. 277).
• Host (for Amazon S3 origins)

281
Amazon CloudFront Guía para desarrolladores
Configuración de CloudFront para
respetar la configuración CORS

• Proxy-Authorization
• TE
• Upgrade

Puede configurar CloudFront para almacenar en caché los objetos en función de los valores de los
encabezados Date y User-Agent, pero no lo recomendamos. Estos encabezados tienen muchos
valores posibles y el almacenamiento en caché en función de los valores podría hacer que CloudFront
reenvíe una cantidad de solicitudes significativamente mayor al origen.

Para obtener una lista completa de encabezados de solicitudes HTTP y cómo los procesa CloudFront,
consulte Encabezados de solicitudes HTTP y comportamiento de CloudFront (personalizado y orígenes de
S3) (p. 309).

Configuración de CloudFront para respetar la


configuración CORS
Si ha habilitado el uso compartido de recursos entre orígenes (CORS) en un bucket de Amazon S3 o en un
origen personalizado, debe elegir encabezados específicos para reenviar, para respetar la configuración
CORS. Los encabezados que debe reenviar difieren en función del origen (Amazon S3 o personalizado) y
si desea almacenar las respuestas de 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 para
reenviar el encabezado Origin, junto con los demás encabezados requeridos por el origen (por ejemplo
Access-Control-Request-Headers, Access-Control-Request-Method u otros).

Orígenes personalizados: reenvíe el encabezado Origin junto con los demás encabezados exigidos por
el origen.

Debe configurar CloudFront para reenviar los encabezados creando una lista blanca de los encabezados
en un comportamiento de la caché para la distribución de CloudFront. Para obtener más información
acerca de cómo trabajar con el reenvío de encabezados, consulte Encabezados y distribuciones:
información general (p. 280).

Para obtener más información acerca de CORS y Amazon S3, consulte Habilitación del uso compartido de
recursos entre orígenes en la Guía para desarrolladores de Amazon Simple Storage Service.

Configuración del almacenamiento en caché en


función del tipo de dispositivo
Si desea que CloudFront almacene en caché diferentes versiones de los objetos en función del dispositivo
que el usuario utilice para consultar el contenido, configure CloudFront para reenviar los encabezados
aplicables al origen personalizado:

• CloudFront-Is-Desktop-Viewer
• CloudFront-Is-Mobile-Viewer

282
Amazon CloudFront Guía para desarrolladores
Configuración del almacenamiento en
caché en función del idioma del lector

• CloudFront-Is-SmartTV-Viewer
• CloudFront-Is-Tablet-Viewer

En función del valor del encabezado User-Agent, CloudFront establece el valor de estos encabezados
en true o false antes de reenviar la solicitud al origen. Si un dispositivo entra en más de una categoría,
más de un valor podría ser true. Por ejemplo, para algunas tabletas, es posible que CloudFront
establezca CloudFront-Is-Mobile-Viewer y CloudFront-Is-Tablet-Viewer en true.

Configuración del almacenamiento en caché en


función del idioma del lector
Si desea que CloudFront almacene en caché distintas versiones de los objetos en función del idioma
especificado en la solicitud, configure CloudFront para reenviar el encabezado Accept-Language al
origen.

Configurar el almacenamiento en caché en función de


la ubicación del lector
Si desea que CloudFront almacene en caché distintas versiones de los objetos en función del país del que
provino la solicitud, configure CloudFront para reenviar el encabezado CloudFront-Viewer-Country al
origen. CloudFront convierte automáticamente la dirección IP de la que provino la solicitud en un código de
país de dos letras. Para obtener una lista sencilla de códigos de país, organizable por código y por nombre
de país, consulte la entrada de Wikipedia ISO 3166-1 alpha-2.

Configurar el almacenamiento en caché en función del


protocolo de la solicitud
Si desea que CloudFront almacene en caché distintas versiones de los objetos en función del protocolo
de la solicitud (HTTP o HTTPS), configure CloudFront para reenviar el encabezado CloudFront-
Forwarded-Proto al origen.

Configuración del almacenamiento en caché para


archivos comprimidos
Si el origen admite compresión brotli, puede incluir en una lista blanca el encabezado Accept-Encoding
y almacenar en la caché en función del encabezado. Configure el almacenamiento en caché en función de
Accept-Encoding solo si el origen ofrece contenido en función del encabezado.

Cómo afecta al rendimiento el almacenamiento en


caché en función de los encabezados
Si configura CloudFront para almacenar en caché en función de uno o varios encabezados y los
encabezados tienen más de un valor posible, CloudFront reenvía más solicitudes al servidor de origen
para el mismo objeto. Esto afecta negativamente el desempeño y aumenta la carga en su servidor de
origen. Si el servidor de origen devuelve el mismo objeto independientemente del valor de un encabezado
determinado, le recomendamos que no configure CloudFront para almacenar en caché en función de ese
encabezado.

Si configura CloudFront para reenviar más de un encabezado, el orden de los encabezados de las
solicitudes de los lectores no afecta al almacenamiento en caché siempre y cuando los valores sean los

283
Amazon CloudFront Guía para desarrolladores
Cómo afectan al almacenamiento en caché las mayúsculas
o minúsculas de los encabezados y sus valores

mismos. Por ejemplo, si una solicitud contiene los encabezados A:1,B:2 y otra solicitud contiene B:2,A:1,
CloudFront almacena en caché solo una copia del objeto.

Cómo afectan al almacenamiento en caché las


mayúsculas o minúsculas de los encabezados y sus
valores
Cuando CloudFront almacena en caché en función de los valores del encabezado, pasa por alto el uso de
mayúsculas y minúsculas en los nombres de encabezado, pero lo tiene en cuenta en el caso del valor de
encabezado:

• Si las solicitudes de lector incluyen Product:Acme y product:Acme, CloudFront almacena en caché


un objeto solo una vez. La única diferencia entre ellos es el uso de mayúsculas y minúsculas en el
nombre del encabezado, lo que no afecta el almacenamiento en caché.
• Si las solicitudes de lector incluyen Product:Acme y Product:acme, CloudFront almacena en caché
un objeto dos veces, porque el valor es Acme en algunas solicitudes y acme en otras.

Encabezados que CloudFront devuelve al lector


La configuración de CloudFront para reenviar y almacenar en caché los encabezados no afecta a los
encabezados que CloudFront devuelve al lector. CloudFront devuelve todos los encabezados que obtiene
del origen con 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 o
actualiza (p. 304).
• Orígenes personalizados: consulte Encabezados de respuesta HTTP que CloudFront elimina o
reemplaza (p. 317).

284
Amazon CloudFront Guía para desarrolladores
Solucionar problemas de distribuciones

Solución de problemas
Solucione problemas comunes que podría encontrar al configurar Amazon CloudFront para distribuir su
contenido o al utilizar Lambda@Edge, y encuentre posibles soluciones.

Temas
• Solucionar problemas de distribuciones (p. 285)
• Solucionar respuestas de error del origen (p. 288)
• Pruebas de carga de CloudFront (p. 297)

Solucionar problemas de distribuciones


Utilice la información de este tema para diagnosticar y solucionar los errores de certificados, los problemas
de acceso denegado u otros problemas comunes que puedan surgir al configurar un sitio web o una
aplicación con distribuciones de Amazon CloudFront.

Temas
• CloudFront devuelve un error InvalidViewerCertificate al intentar agregar un nombre de dominio
alternativo (p. 285)
• No puedo ver los archivos de mi distribución (p. 286)
• Mensaje de error: Certificate: <id-certificado> is being used by CloudFront (p. 288)

CloudFront devuelve un error InvalidViewerCertificate


al intentar agregar un nombre de dominio alternativo
Si CloudFront devuelve un error InvalidViewerCertificate al intentar agregar un nombre de
dominio alternativo (CNAME) a la distribución, revise la siguiente información para ayudarle a solucionar el
problema. Este error puede indicar que es necesario resolver uno de los problemas siguientes para poder
añadir el nombre de dominio alternativo.

Los siguientes errores se enumeran en el orden en que CloudFront comprueba la autorización para
agregar un nombre de dominio alternativo. Esto puede ayudarle a solucionar problemas porque puede
saber qué comprobaciones de verificación se han realizado correctamente en función del error que
devuelva CloudFront.

There's no certificate attached to your distribution. (No hay ningún certificado asociado a la distribución).

Para añadir un nombre de dominio alternativo (CNAME), debe asociar un certificado de confianza
válido a la distribución. Revise los requisitos, obtenga un certificado válido que los cumpla, asócielo a
la distribución e inténtelo de nuevo. Para obtener más información, consulte Requisitos para el uso de
nombres de dominio alternativos (p. 87).
There are too many certificates in the certificate chain for the certificate that you've attached. (Hay
demasiados certificados en la cadena de certificados del certificado que ha asociado).

Solo puede tener cinco certificados como máximo en una cadena de certificados. Reduzca el número
de certificados de la cadena y, a continuación, vuelva a intentarlo.
The certificate chain includes one or more certificates that aren't valid for the current date. (La cadena de
certificados incluye uno o varios certificados que no son válidos para la fecha actual).

La cadena de certificados de un certificado que ha añadido tiene uno o varios certificados que no
son válidos, ya sea porque un certificado todavía no es válida o porque un certificado ha caducado.

285
Amazon CloudFront Guía para desarrolladores
No puedo ver los archivos de mi distribución

Compruebe los campos Not Valid Before (No válido antes del) y Not Valid After (No válido después
del) en los certificados de la cadena de certificados para asegurarse de que todos los certificados son
válidos para las fechas que ha indicado.
The certificate that you've attached isn't signed by a trusted Certificate Authority (CA). (El certificado que ha
asociado no está firmado por una entidad de certificación (CA) de confianza).

El certificado que se asocia a CloudFront para verificar un nombre de dominio alternativo no puede
ser un certificado autofirmado. Debe estar firmado por una CA de confianza. Para obtener más
información, consulte Requisitos para el uso de nombres de dominio alternativos (p. 87).
The certificate that you've attached isn't formatted correctly (El certificado que ha asociado no tiene el
formato correcto)

El formato del nombre de dominio y de la dirección IP que se incluyen en el certificado y el formato del
certificado deben seguir el estándar para los certificados.
Se produjo un error interno de CloudFront.

CloudFront se ha bloqueado por un problema interno y no puede hacer las comprobaciones de


validación de los certificados. En este caso, CloudFront devuelve un código de estado HTTP 500 e
indica que hay un problema interno de CloudFront al asociar el certificado. Espere unos minutos y
vuelva a intentar añadir el nombre de dominio alternativo con el certificado.
The certificate that you've attached doesn't cover the alternate domain name that you’re trying to add. (El
certificado que ha asociado no cubre el nombre de dominio alternativo que intenta añadir).

Para cada nombre de dominio alternativo que agregue, CloudFront requiere que asocie un certificado
SSL/TLS válido de una entidad de certificación (CA) de confianza que cubra el nombre de dominio,
para validar su autorización para utilizarlo. Actualice el certificado para que incluya un nombre de
dominio que cubra el CNAME que intenta añadir. Para obtener más información y ejemplos de uso de
nombres de dominio con caracteres comodín, consulte Requisitos para el uso de nombres de dominio
alternativos (p. 87).

No puedo ver los archivos de mi distribución


Si no puede ver los archivos en la distribución de CloudFront, consulte los temas siguientes para encontrar
soluciones comunes.

¿Se ha registrado en CloudFront y Amazon S3?


Para utilizar Amazon CloudFront con un origen de Amazon S3, debe registrarse en CloudFront y Amazon
S3 por separado. Para obtener más información sobre cómo registrarse en CloudFront y Amazon S3,
consulte Configuración de Amazon CloudFront (p. 15).

¿Están el bucket de Amazon S3 y los permisos de objetos


establecidos correctamente?
Si utiliza CloudFront con un origen de Amazon S3, las versiones originales de su contenido se almacenan
en un bucket de S3. La forma más sencilla de utilizar CloudFront con Amazon S3 es hacer que todos sus
objetos sean legibles públicamente en Amazon S3. Para ello, debe habilitar de forma explícita privilegios
públicos de lectura en cada objeto que cargue en 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 acerca
de las identidades de acceso de origen de CloudFront, consulte Restricción del acceso a contenido de
Amazon S3 utilizando una identidad de acceso de origen (p. 223).

286
Amazon CloudFront Guía para desarrolladores
No puedo ver los archivos de mi distribución

Las propiedades del objeto y las del bucket son independientes. Debe otorgar privilegios de forma explícita
a cada uno de los objetos de Amazon S3. Los objetos no heredan las propiedades de los buckets y las
propiedades de los objetos deben establecerse de forma independiente del bucket.

¿Está su nombre de dominio alternativo (CNAME) configurado


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

Asimismo, asegúrese de que su registro de CNAME apunte al nombre de dominio de su distribución y no


a su bucket de Amazon S3. Puede comprobar si el registro CNAME de su sistema DNS apunta al nombre
de dominio de su distribución. Para ello, utilice una herramienta de DNS como dig. Para obtener más
informació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 llamado


images.example.com y la parte pertinente de la respuesta. En ANSWER SECTION, consulte la línea que
contiene CNAME. El registro de CNAME de su nombre de dominio estará configurado correctamente si el
valor a la derecha de CNAME es el nombre de dominio de su distribución de CloudFront. Si aparece el
bucket del servidor de origen de Amazon S3 o cualquier otro nombre de dominio, el registro de CNAME
está 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.
...
...

Para obtener más información acerca de CNAME, consulte Uso de URL personalizadas para archivos
añadiendo nombres de dominio alternativos (CNAME) (p. 80).

¿Está haciendo referencia a la URL correcta de la distribución de


CloudFront?
Asegúrese de que la URL a la que está haciendo referencia utilice el nombre de dominio (o CNAME) de la
distribución de CloudFront y no del bucket de Amazon S3 o de un origen personalizado.

¿Necesita ayuda para solucionar un problema con un origen


personalizado?
Si necesita que AWS le ayude a solucionar un problema con un origen personalizado, quizá necesitemos
inspeccionar las entradas del encabezado X-Amz-Cf-Id de sus solicitudes. Si todavía no está registrando
estas entradas, le recomendamos que considere hacerlo. Para obtener más información, consulte Uso de
Amazon EC2 u otros orígenes personalizados (p. 76). Para obtener ayuda adicional, consulte el Centro de
soporte de AWS.

287
Amazon CloudFront Guía para desarrolladores
Mensaje de error: Certificate: <id-
certificado> is being used by CloudFront

Mensaje de error: Certificate: <id-certificado> is being


used by CloudFront
Problema: está intentando eliminar un certificado SSL/TLS del almacén de certificados de IAM y recibe el
mensaje "Certificate: <id-certificado> is being used by CloudFront".

Solución: cada distribución de CloudFront debe asociarse al certificado predeterminado de CloudFront


o a un certificado SSL/TLS personalizado. Antes de eliminar un certificado SSL/TLS, deberá rotar el
certificado (sustituir el certificado SSL/TLS personalizado por otro certificado SSL/TLS personalizado) o
volver a usar el certificado de CloudFront predeterminado. Para solucionarlo, realice los pasos de uno de
los procedimientos siguientes:

• Rotar certificados SSL/TLS (p. 162)


• Volver de un certificado SSL/TLS personalizado al certificado de CloudFront predeterminado (p. 162)

Solucionar respuestas de error del origen


Si 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 los temas siguientes se describen
las causas comunes de algunos de estos códigos de estado HTTP y algunas posibles soluciones.

Temas
• Código de estado HTTP 400 (solicitud errónea) (p. 288)
• Código de estado HTTP 500 (Error de ejecución de Lambda) (p. 289)
• Código de estado HTTP 502 (Puerta de enlace incorrecta) (p. 289)
• Código de estado HTTP 502 (Error de validación de Lambda) (p. 292)
• Código de estado HTTP 503 (Se ha superado el límite de Lambda) (p. 292)
• Código de estado HTTP 503 (Servicio no disponible) (p. 293)
• Código de estado HTTP 504 (tiempo de espera de gateway agotado) (p. 293)

Código de estado HTTP 400 (solicitud errónea)


Su distribución de CloudFront puede enviar respuestas de error con el código de estado HTTP 400 Bad
Request y un mensaje similar al siguiente:

El encabezado de autorización tiene una estructura incorrecta; la región «<región de AWS>» es


incorrecta; se esperaba «<región de AWS>»

Por ejemplo:

El encabezado de autorización tiene una estructura incorrecta; la región «us-east-1» es incorrecta; se


esperaba «us-west-2»

Este problema puede producirse en la siguiente situación:

1. El origen de su distribución de CloudFront es un bucket de Amazon S3.


2. Ha movido el bucket de S3 de una región de AWS a otra. Es decir, eliminó el bucket de S3 y, a
continuación, creó un nuevo bucket con el mismo nombre de bucket, pero en una región de AWS
diferente a la ubicación del bucket de S3 original.

Para solucionar este error, actualice la distribución de CloudFront para que encuentre el bucket de S3 en la
región de AWS actual del bucket.

288
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 500 (Error de ejecución de Lambda)

Para actualizar la 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. Elija la distribución que produce este error.
3. Elija Origins and Origin Groups (Orígenes y grupos de origen).
4. Busque el origen del bucket de S3 que movió. Seleccione la casilla de verificación situada junto a este
origen y, a continuación, elija Edit (Editar).
5. Elija Yes, Edit (Sí, editar). No es necesario cambiar ninguna configuración antes de elegir Yes, Edit
(Sí, Editar).

Cuando complete estos pasos, CloudFront volverá a implementar la distribución. El estado de la


distribución en la consola de CloudFront cambia a In Progress (En curso) mientras se implementa la
distribución. Una vez finalizada la implementación, el estado de la distribución cambia a Deployed
(Implementado) y debe dejar de recibir las respuestas de error AuthorizationHeaderMalformed. Incluso
después de que el estado cambie a Deployed (Implementado), puede que tarde algún tiempo antes de que
deje de recibir este error.

Código de estado HTTP 500 (Error de ejecución de


Lambda)
Si utiliza Lambda@Edge, un código de estado HTTP 500 puede indicar que la función Lambda ha devuelto
un error de ejecución. Para obtener más información sobre la resolución de errores de Lambda@Edge,
consulte Prueba y depuración de funciones de Lambda@Edge (p. 364).

Código de estado HTTP 502 (Puerta de enlace


incorrecta)
Un código de estado HTTP 502 (gateway incorrecta) indica que CloudFront no ha podido servir el objeto
solicitado porque no se pudo conectar con el servidor de origen.

Temas
• Error de negociación SSL/TLS entre CloudFront y un servidor de origen personalizado (p. 289)
• El origen no responde con protocolos ni cifrados admitidos (p. 290)
• El certificado SSL/TLS del origen ha caducado, no es válido, es autofirmado o el orden de la cadena de
certificados es incorrecto (p. 291)
• El origen no responde en puertos especificados en la configuración de origen (p. 291)
• CloudFront no puede resolver el dominio de origen debido a problemas de DNS (p. 292)
• Errores de validación de funciones Lambda@Edge (p. 292)

Error de negociación SSL/TLS entre CloudFront y un servidor de


origen personalizado
Si utiliza un origen personalizado y ha configurado CloudFront para que requiera HTTPS entre CloudFront
y el origen, el problema puede ser que los nombres de dominio no coinciden. El certificado SSL/TLS
instalado en el origen incluye un nombre de dominio en el campo Common Name (Nombre común) y
posiblemente varios más en el campo Subject Alternative Names (Nombres alternativos de firmantes).
(CloudFront admite caracteres comodín en los nombres de dominio de certificados). Uno de los nombres
de dominio del certificado debe coincidir con uno o ambos de los siguientes valores:

289
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 502 (Puerta de enlace incorrecta)

• El valor que especificó en Origin Domain Name (Nombre de dominio de origen) para el origen aplicable a
la distribución.
• El valor del encabezado Host si ha configurado CloudFront para reenviar el encabezado Host al
origen. Para obtener más información acerca del reenvío del encabezado Host al origen, consulte
Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 280).

Si los nombres de dominio no coinciden, el protocolo SSL/TLS devuelve un error, y CloudFront devuelve
un código de estado HTTP 502 (gateway incorrecta) y establece el encabezado X-Cache en Error from
cloudfront.

Para determinar si los nombres de dominio del certificado coinciden con el Origin Domain Name (Nombre
de dominio de origen) en la distribución o con el encabezado Host, utilice un comprobador SSL online u
OpenSSL. Si los nombres de dominio no coinciden, tiene dos opciones:

• Obtener un nuevo certificado SSL/TLS que incluya los nombres de dominio aplicables.

Si utiliza AWS Certificate Manager (ACM), consulte Solicitar un certificado en la Guía del usuario de
AWS Certificate Manager para solicitar un nuevo certificado.
• Cambie la configuración de la distribución para que CloudFront deje de intentar utilizar SSL para
conectarse al origen.

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 de su
certificado SSL/TLS. Compruebe que el certificado contenga su nombre de dominio en los campos Nombre
común o Nombres alternativos de sujeto.

OpenSSL
Como ayuda para solucionar los errores HTTP 502 desde CloudFront, puede utilizar OpenSSL para
intentar realizar una conexión SSL/TLS con el servidor de origen. Si OpenSSL no puede establecer una
conexión, puede indicar un problema con la configuración de SSL/TLS del servidor de origen. Si OpenSSL
puede establecer una conexión, devuelve información sobre el certificado del servidor de origen, incluido el
nombre común (campo Subject CN) y el nombre alternativo del sujeto (campo Subject Alternative
Name) del certificado.

Utilice el siguiente comando OpenSSL para probar la conexión con el servidor de origen (reemplace
nombre de dominio de origen por el nombre de dominio del servidor de origen, como example.com):

openssl s_client -connect origin domain name:443

Si se cumplen las siguientes condiciones:

• El servidor de origen admite varios nombres de dominio con varios certificados SSL/TLS
• Su distribución está configurada para reenviar el encabezado Host al origen

Agregue la opción -servername al comando OpenSSL, como en el siguiente ejemplo (reemplace CNAME
por el CNAME configurado en su distribución):

openssl s_client -connect origin domain name:443 -servername CNAME

El origen no responde con protocolos ni cifrados admitidos


CloudFront se conecta con servidores de origen a través de códigos cifrados y protocolos. Para obtener
una lista de los algoritmos criptográficos y protocolos que CloudFront admite, consulte Protocolos y
algoritmos criptográficos admitidos (p. 145). Si el origen no responde con uno de estos algoritmos

290
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 502 (Puerta de enlace incorrecta)

criptográficos o protocolos en el intercambio SSL/TLS, CloudFront no puede conectarse. Use SSL Labs
para comprobar si el origen es compatible con los cifrados y protocolos:

• SSL Labs

Escriba el nombre de dominio del origen en el campo Hostname (Nombre de host) y, a continuación, elija
Submit (Enviar). Revise los campos Common names (Nombres comunes) y Alternative names (Nombres
alternativos) de la prueba para ver si coinciden con el nombre de dominio del origen.

Una vez finalizada la prueba, busque las secciones Protocols (Protocolos) y Cipher Suites (Conjuntos de
cifrado) del resultado de las pruebas para saber qué protocolos o cifrados admite el origen. Compárelos
con la lista que aparece en Protocolos y cifrados admitidos (p. 145).

Note

Si utiliza Elastic Load Balancing, consulte Políticas de seguridad SSL para Elastic Load
Balancing en la Guía del usuario de Elastic Load Balancing para obtener información sobre cómo
establecer los algoritmos criptográficos y protocolos. Mediante la Política de seguridad predefinida
ELBSecurityPolicy-2016-08 puede permitir que CloudFront acceda a su balanceador de carga.
Si desea restringirlo aún más mediante una política personalizada, debe permitir los algoritmos
criptográficos admitidos por CloudFront.

El certificado SSL/TLS del origen ha caducado, no es válido, es


autofirmado o el orden de la cadena de certificados es incorrecto
Si el servidor de origen devuelve lo siguiente, CloudFront interrumpe la conexión TCP, devuelve el
código de estado HTTP 502 (gateway incorrecta) y establece el encabezado X-Cache en Error from
cloudfront:

• Un certificado caducado
• Un certificado no válido
• Un certificado autofirmado
• Orden incorrecto en una cadena de certificados

Note

Si no está presente la cadena completa de certificados, incluidos los certificados intermedios,


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
origen personalizado, consulte Exigir HTTPS para la comunicación entre CloudFront y su origen
personalizado (p. 141).

El origen no responde en puertos especificados en la


configuración de origen
Al crear un origen en la distribución de CloudFront, puede definir los puertos que CloudFront conecta con
el origen para el tráfico HTTP y HTTPS. De forma predeterminada, estos son 80/443 TCP. Puede modificar
estos puertos. Si el origen rechaza el tráfico en estos puertos por cualquier motivo, o si el servidor backend
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én
bloqueando los rangos de IP admitidos. Para obtener más información, consulte Intervalos de direcciones
IP de AWS en la Referencia general de Amazon Web Services. Compruebe también si su servidor web se
ejecuta en el origen.

291
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 502
(Error de validación de Lambda)

CloudFront no puede resolver el dominio de origen debido a


problemas de DNS
Cuando CloudFront recibe una solicitud de un objeto que ha caducado o que no está almacenado en su
caché, realiza una solicitud al origen para obtener el objeto actualizado. Para que la solicitud al origen se
complete correctamente, CloudFront realiza una resolución de DNS en el nombre de dominio del origen.
Sin embargo, cuando el servicio DNS que aloja su dominio tiene problemas, CloudFront no puede resolver
el nombre de dominio para obtener la dirección IP, lo que se traduce en un error 502. Para solucionar este
problema, póngase en contacto con su proveedor de DNS o, si está utilizando Amazon Route 53, consulte
Amazon Route 53 DNS.

Para solucionar este problema, asegúrese de que los servidores de nombres autoritativos del dominio raíz
o ápex de zona (como example.com) del origen funcionan correctamente. Los servidores de nombres
autoritativos reciben a continuación la solicitud y devuelven la dirección IP asociada al dominio, y son los
mismos que los servidores de DNS que utilizó para configurar la distribución de CloudFront. Utilice los
siguientes comandos para encontrar los servidores de nombres de su origen de ápex:

dig OriginAPEXDomainName NS +short


nslookup -query=NS OriginAPEXDomainName

Una vez tenga los nombres de los servidores de nombres, utilice los siguientes comandos para consultar el
nombre de dominio del origen ante ellos para asegurarse de que cada uno de ellos genera una respuesta:

dig OriginDomainName @NameServerFromAbove


nslookup OriginDomainName NameServerFromAbove

Errores de validación de funciones Lambda@Edge


Si utiliza Lambda@Edge, un código de estado HTTP 502 puede indicar que la respuesta de la función
Lambda tenía un formato incorrecto o incluía contenido no válido. Para obtener más información
sobre la resolución de errores de Lambda@Edge, consulte Prueba y depuración de funciones de
Lambda@Edge (p. 364).

Código de estado HTTP 502 (Error de validación de


Lambda)
Si utiliza Lambda@Edge, un código de estado HTTP 502 puede indicar que la respuesta de la función
Lambda tenía un formato incorrecto o incluía contenido no válido. Para obtener más información
sobre la resolución de errores de Lambda@Edge, consulte Prueba y depuración de funciones de
Lambda@Edge (p. 364).

Código de estado HTTP 503 (Se ha superado el límite


de Lambda)
Si utiliza Lambda@Edge, un código de estado HTTP 503 puede indicar que el servicio Lambda devolvió un
error. Esto podría deberse a una de las siguientes causas:

• El número de ejecuciones de la función superó una de las cuotas (denominadas anteriormente "límites")
de Lambda establecidas para restringir las ejecuciones en una región de AWS (ejecuciones simultáneas
o frecuencia de invocación).
• La función superó la cuota de tiempo de espera de la función Lambda.

292
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 503 (Servicio no disponible)

Para obtener más información acerca de las cuotas de AWS Lambda, consulte Límites de AWS Lambda
en la Guía para desarrolladores de AWS Lambda. Para obtener más información sobre la resolución de
errores de Lambda@Edge, consulte Prueba y depuración de funciones de Lambda@Edge (p. 364).

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 el
servidor de origen. En casos excepcionales, indica que CloudFront no puede satisfacer temporalmente una
solicitud debido a restricciones de recursos en una ubicación de borde.

Temas
• El servidor de origen no tiene capacidad suficiente para soportar la tasa de solicitudes (p. 293)
• CloudFront ha causado el error debido a las restricciones de recursos en la ubicación de
borde (p. 293)

El servidor de origen no tiene capacidad suficiente para soportar


la tasa de solicitudes
CloudFront genera este error cuando el servidor de origen está sobrecargado de solicitudes entrantes. En
ese caso, CloudFront devuelve el error al usuario. Para resolver este problema, pruebe lo siguiente:

• Si utiliza Amazon S3 como servidor de origen, optimice el rendimiento de Amazon S3 siguiendo


las prácticas recomendadas de nomenclatura de claves. Para obtener más información, consulte
Consideraciones sobre la tasa de solicitudes y el rendimiento 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 como
backend, asegúrese de que el tipo de instancia cuente con los recursos apropiados para responder
adecuadamente a las solicitudes entrantes. Para obtener más información, consulte Tipos de instancias
en la Guía del usuario de Amazon EC2 para instancias de Linux.

CloudFront ha causado el error debido a las restricciones de


recursos en la ubicación de borde
Recibirá este error en la improbable situación de que CloudFront no pueda dirigir las solicitudes hacia la
siguiente mejor ubicación de borde disponible y, por tanto, no pueda satisfacer una solicitud. Este es un
error común al realizar pruebas de carga en la distribución de CloudFront. Para ayudar a evitarlo, siga las
instrucciones de Pruebas de carga de CloudFront (p. 297) para evitar errores 503 (Capacidad superada).

Si esto ocurre en su entorno de producción, póngase en contacto con AWS Support.

Código de estado HTTP 504 (tiempo de espera de


gateway agotado)
Un código de estado HTTP 504 (tiempo de espera de gateway superado) indica que cuando CloudFront
reenvió una solicitud al origen (porque el objeto solicitado no estaba en la caché perimetral), se produjo
alguna de las siguientes circunstancias:

• El origen devolvió un código de estado HTTP 504 a CloudFront.


• El origen no respondió antes de que la solicitud caducara.

293
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 504 (tiempo
de espera de gateway agotado)

CloudFront devolverá un código de estado HTTP 504 si un firewall o grupo de seguridad bloquea el tráfico
al origen o si el origen no es accesible en Internet. Compruebe en primer lugar si ocurren estos problemas.
A continuación, si el acceso no es el problema, explore los retrasos de la aplicación y los tiempos de
espera del servidor para ayudarle a identificar y corregir los problemas.

Temas
• Configurar el firewall en su servidor de origen para permitir el tráfico de CloudFront (p. 294)
• Configurar los grupos de seguridad en su servidor de origen para permitir el tráfico de
CloudFront (p. 294)
• Hacer que su servidor de origen personalizado sea accessible en Internet (p. 294)
• Buscar y corregir respuestas con retado desde aplicaciones en su servidor de origen (p. 295)

Configurar el firewall en su servidor de origen para permitir el


tráfico de CloudFront
Si el firewall en su servidor de origen bloquea el tráfico de CloudFront, CloudFront devuelve un código
de estado HTTP 504, por lo que es recomendable asegurarse de que este no es el problema antes de
comprobar otros problemas.

El método que se utiliza para determinar si se trata de un problema con su firewall depende del sistema
que utiliza su servidor de origen:

• Si utiliza un firewall IPTable en un servidor Linux, puede buscar herramientas e información para
ayudarle a trabajar con IPTables.
• Si utiliza Windows Firewall en un servidor de Windows, consulte Agregar o editar regla de firewall en
Microsoft Technet.

Al evaluar la configuración del firewall en su servidor de origen, busque las reglas de firewalls o de
seguridad que bloquean el tráfico desde ubicaciones de borde de CloudFront, en función del intervalo de
direcciones IP publicado.

Si el intervalo de direcciones IP de CloudFront está permitido en su servidor de origen, asegúrese de


actualizar las reglas de seguridad de su servidor para incorporar los cambios. Puede suscribirse a un tema
de Amazon Simple Notification Service (SNS) y recibir notificaciones cuando se actualiza el archivo del
rango de direcciones IP. Después de recibir la notificación, puede utilizar código para recuperar el archivo,
analizarlo y realizar ajustes para el 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 para


permitir el tráfico de CloudFront
Si su origen usa Elastic Load Balancing, revise los grupos de seguridad de ELB y asegúrese de que los
grupos de seguridad permiten el tráfico de entrada desde CloudFront.

También puede utilizar AWS Lambda para actualizar de manera automática sus grupos de seguridad para
permitir el tráfico entrante desde CloudFront.

Hacer que su servidor de origen personalizado sea accessible en


Internet
Si CloudFront no puede obtener acceso a su servidor de origen personalizado porque no está disponible
públicamente en Internet, devuelve un error HTTP 504.

294
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 504 (tiempo
de espera de gateway agotado)

Las ubicaciones de borde de CloudFront se conectan con los servidores de origen a través de Internet. Si
su origen personalizado se encuentra en una red privada, CloudFront no puede tener acceso a él. Por este
motivo, no puede utilizar servidores privados, incluidos balanceadores de carga clásicos internos, como
servidores de origen con CloudFront.

Para comprobar que el tráfico de Internet puede conectarse a su servidor de origen, ejecute los siguientes
comandos (donde NombreDominioOrigen es el nombre de dominio de su servidor):

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 en


su servidor de origen
Los tiempos de espera superados del servidor suelen deberse a que la aplicación tarda mucho en
responder 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 de
tiempo de espera de CloudFront mayor para su distribución. Sin embargo, le recomendamos que primero
se asegure de corregir los problemas de desempeño y de latencia con la aplicación y el servidor de origen.
A continuación, puede establecer un valor de tiempo de espera razonable que ayude a evitar errores HTTP
504 y proporcione buena capacidad de respuesta a los usuarios.

A continuación, se muestra información general de los pasos que puede seguir para buscar problemas de
desempeño y corregirlos:

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 de
carga elevada.
3. Si es necesario, ajuste el valor de tiempo de espera de su distribución de CloudFront.

A continuación se muestran los detalles de cada paso.

Medir la latencia típica y de carga elevada


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

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 ejecutar
un comando similar.

295
Amazon CloudFront Guía para desarrolladores
Código de estado HTTP 504 (tiempo
de espera de gateway agotado)

A medida que mide y evalúa la latencia de una aplicación que se ejecuta en su servidor, tenga en cuenta lo
siguiente:

• Los valores de latencia son relativos a cada aplicación. Sin embargo, un valor de Tiempo hasta el primer
byte en milisegundos en lugar de segundos o más, es razonable.
• Si mide la latencia de la aplicación con carga normal y está bien, tenga en cuenta que los espectadores
podrían seguir sufriendo tiempos de espera con cargas elevadas. Cuando hay una demanda alta, es
posible que los servidores tengan respuestas con retraso o que no respondan. Para ayudarle a evitar
problemas de latencia de carga elevada, compruebe los recursos de su servidor tales como CPU,
memoria y lecturas y escrituras en disco para asegurarse de que sus servidores tengan la capacidad de
escalar una carga elevada.

Puede ejecutar los siguientes comandos de Linux para comprobar la memoria que utilizan los procesos
de Apache:

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 backend, revise las métricas de CloudWatch del
servidor para comprobar la utilización de la CPU. Para obtener más información, consulte la Guía del
usuario de Amazon CloudWatch. O bien, si está utilizando su propio servidor, consulte la documentación
de 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 base
de 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 dispone
de 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 para
gestionar las solicitudes de los espectadores, en función de su evaluación.
• Si utiliza una instancia Amazon EC2 como servidor backend, asegúrese de que el tipo de instancia
cuente con los recursos apropiados para responder adecuadamente a las solicitudes entrantes. Para
obtener más información, consulte Tipos de instancia en la Guía del usuario de Amazon EC2.

Además, tenga en cuenta los siguientes pasos de ajuste para ayudar a evitar tiempos de espera:

• Si el valor Tiempo hasta el primer byte que devuelve el comando curl parece alto, tome medidas para
mejorar el desempeño de su aplicación. Mejorar la capacidad de respuesta de la aplicación a su vez
reduce los errores de tiempo de espera.
• Ajuste las consultas de la base de datos para asegurarse de que puedan administrar volúmenes de
solicitudes elevados sin un desempeño lento.
• Configure conexiones keep-alive (persistente) en su servidor de backend. Esta opción ayuda a evitar
las latencias que se producen cuando las conexiones deben volver a establecerse para las solicitudes o
usuarios posteriores.
• Si utiliza ELB como origen, aprenda a reducir la latencia revisando las sugerencias que se incluyen en el
siguiente artículo del Knowledge Center: Cómo solucionar una alta latencia de ELB.

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 origen
y otros problemas, pero los espectadores siguen experimentando errores HTTP 504, entonces debería

296
Amazon CloudFront Guía para desarrolladores
Pruebas de carga de CloudFront

plantearse cambiar el tiempo especificado en su distribución para tiempo de espera de respuesta de


origen. Para obtener más información, consulte Tiempo de espera de respuesta del origen (p. 51).

Pruebas de carga de CloudFront


Los métodos de pruebas de carga tradicionales no funcionan bien con CloudFront porque CloudFront
utiliza DNS para balancear las cargas entre ubicaciones de borde geográficamente dispersas y dentro
de cada ubicación de borde. Cuando un cliente solicita contenido desde CloudFront, el cliente recibe una
respuesta de DNS que incluye un conjunto de direcciones IP. Si realiza las pruebas enviando solicitudes
a tan solo una de las direcciones IP que DNS devuelve, estará probando solo un pequeño subconjunto de
los recursos de una ubicación de borde de CloudFront, lo que no representa de forma precisa los patrones
de tráfico reales. En función del volumen de datos solicitados, este método de prueba puede sobrecargar y
degradar el rendimiento de ese pequeño subconjunto de servidores de CloudFront.

CloudFront se ha diseñado para escalarse en función de los lectores que tienen diferentes direcciones IP
de cliente y diferentes resoluciones de DNS en varias regiones geográficas. Para realizar pruebas de carga
que evalúen el rendimiento de CloudFront con precisión, le recomendamos que haga todo lo siguiente:

• 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 realice solicitudes, distribuya las solicitudes del cliente en todo el conjunto de
direcciones IP devueltas por DNS, lo que garantiza que la carga se distribuye en varios servidores en
una ubicación de borde de CloudFront.

297
Amazon CloudFront Guía para desarrolladores
Comportamiento de solicitudes y
respuestas para orígenes de Amazon S3

Comportamiento de solicitudes y
respuestas
En las secciones siguientes se explica cómo CloudFront procesa solicitudes de lectores y reenvía
solicitudes al origen de Amazon S3 o personalizado, y cómo procesa respuestas desde su origen, incluido
el procesamiento y almacenamiento en caché códigos de estado HTTP 4xx y 5xx.

Temas
• Comportamiento de solicitudes y respuestas para orígenes de Amazon S3 (p. 298)
• Comportamiento de solicitudes y respuestas para orígenes personalizados (p. 305)
• Comportamiento de solicitudes y respuestas para grupos de origen (p. 319)
• Agregar encabezados personalizados a solicitudes de origen (p. 319)
• Cómo CloudFront procesa las solicitudes parciales de un objeto (rango GET). (p. 322)
• Cómo CloudFront procesa los códigos de estado HTTP 3xx desde el origen (p. 323)
• Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xx desde el
origen (p. 323)

Comportamiento de solicitudes y respuestas para


orígenes de Amazon S3
Temas
• Cómo procesa CloudFront las solicitudes HTTP y HTTPS (p. 298)
• Cómo CloudFront procesa y reenvía solicitudes a su servidor de origen de Amazon S3 (p. 299)
• Cómo procesa CloudFront las respuestas de su servidor de origen de Amazon S3 (p. 303)

Cómo procesa CloudFront las solicitudes HTTP y


HTTPS
Para los orígenes de Amazon S3, CloudFront acepta de forma predeterminada solicitudes en protocolos
HTTP y HTTPS para objetos de una distribución de CloudFront. A continuación, CloudFront reenvía las
solicitudes al bucket 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 CloudFront


obtiene acceso a su origen: solo HTTP o con el mismo protocolo utilizado por el lector. Para obtener
más información acerca de cómo CloudFront gestiona las solicitudes HTTP y HTTPS para orígenes
personalizados, consulte Protocolos (p. 313).

Para obtener información acerca de cómo restringir la distribución para que los usuarios finales solo
puedan obtener acceso a los objetos a través de HTTPS, consulte Uso de HTTPS con CloudFront (p. 138).
Note

El cargo por solicitudes HTTPS es superior al de solicitudes HTTP. Para obtener más información
acerca de tarifas de facturación, consulte el plan de precios de CloudFront.

298
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen de Amazon S3

Cómo CloudFront procesa y reenvía solicitudes a su


servidor de origen de Amazon S3
Este tema contiene información acerca de cómo CloudFront procesa solicitudes de lectores y las reenvía a
su origen de Amazon S3.

Temas
• Duración de almacenamiento en caché y TTL mínimo (p. 299)
• Direcciones IP de clientes (p. 299)
• GET condicionales (p. 300)
• Cookies (p. 300)
• Cross-Origin Resource Sharing (CORS, Uso compartido de recursos entre orígenes) (p. 300)
• Solicitudes GET que incluyen un cuerpo (p. 300)
• Métodos HTTP (p. 300)
• Encabezados de solicitud HTTP que CloudFront elimina o actualiza (p. 301)
• Longitud máxima de una solicitud y de una URL (p. 301)
• Asociación de OCSP (p. 301)
• Protocolos (p. 302)
• Cadenas de consulta (p. 302)
• Tiempo de espera e intentos de conexión de origen (p. 302)
• Tiempo de espera de respuesta del origen (p. 302)
• Solicitudes simultáneas del mismo objeto (picos de tráfico) (p. 303)

Duración de almacenamiento en caché y TTL mínimo


Para controlar durante cuánto tiempo se mantienen 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.
• Especificar un valor de TTL mínimo en comportamientos de la caché de CloudFront.
• Utilice el valor de predeterminado de 24 horas.

Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).

Direcciones IP de clientes
Si un lector envía una solicitud a CloudFront y no incluye un encabezado de solicitud X-Forwarded-For,
CloudFront obtiene la dirección IP del lector de la conexión TCP, agrega un encabezado X-Forwarded-
For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, si CloudFront obtiene la
dirección IP 192.0.2.2 de la conexión TCP, reenvía el siguiente encabezado al origen:

X-Forwarded-For: 192.0.2.2

Si un lector envía una solicitud a CloudFront e incluye un encabezado de solicitud X-Forwarded-For,


CloudFront obtiene la dirección IP del lector de la conexión TCP, la agrega al final del encabezado X-
Forwarded-For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, si la solicitud
del lector incluye X-Forwarded-For: 192.0.2.4,192.0.2.3 y CloudFront obtiene la dirección IP
192.0.2.2 de la conexión TCP, reenvía el siguiente encabezado al origen:

299
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen de Amazon S3

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2
Note

El encabezado X-Forwarded-For contiene direcciones IPv4 (como 192.0.2.44) e IPv6 (como


2001:0db8:85a3:0000:0000:8a2e:0370:7334).

GET condicionales
Cuando CloudFront recibe una solicitud de un objeto que ha caducado en una caché perimetral, reenvía la
solicitud al origen de Amazon S3 para obtener la última versión del objeto o para obtener la confirmación
de Amazon S3 de que la caché perimetral de CloudFront ya dispone de la última versión. Cuando Amazon
S3 envió el objeto originalmente a CloudFront, incluyó un valor ETag y un valor LastModified en la
respuesta. En la nueva solicitud que CloudFront reenvía a Amazon S3, CloudFront agrega uno o ambos de
los siguientes elementos:

• Un encabezado If-Match o If-None-Match que contenga el valor ETag para la versión caducada del
objeto.
• Un encabezado If-Modified-Since que contenga el valor LastModified para la versión caducada
del objeto.

Amazon S3 utiliza esta información para determinar si el objeto se ha actualizado y, en consecuencia, si


debe devolver todo el objeto a CloudFront o devolver solo un código de estado HTTP 304 (no modificado).

Cookies
Amazon S3 no procesa cookies. Si configura un comportamiento de caché para reenviar las cookies a un
origen de Amazon S3, CloudFront reenvía las cookies, pero Amazon S3 las ignora. Todas las solicitudes
futuras del mismo objeto, independientemente si varía la cookie, se atienden desde el objeto existente en
la caché.

Cross-Origin Resource Sharing (CORS, Uso compartido de


recursos entre orígenes)
Si desea que CloudFront respete la configuración de intercambio de recursos entre orígenes de Amazon
S3, configure CloudFront para que reenvíe los encabezados seleccionados a Amazon S3. Para obtener
más información, consulte Almacenamiento en caché de contenido en función de encabezados de
solicitud (p. 280).

Solicitudes GET que incluyen un cuerpo


Si una solicitud GET del lector incluye un cuerpo, CloudFront devuelve un código de estado HTTP 403
(prohibido) al lector.

Métodos HTTP
Si configura CloudFront para procesar todos los métodos de HTTP que admite, CloudFront acepta las
siguientes solicitudes de los lectores y los reenvía al origen de Amazon S3:

• DELETE
• GET
• HEAD
• OPTIONS
• PATCH

300
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen de Amazon S3

• POST
• PUT

CloudFront siempre almacena en caché las respuestas a las solicitudes GET y HEAD. También puede
configurar CloudFront para almacenar en caché las respuestas a solicitudes OPTIONS. CloudFront no
almacena en caché las respuestas a las solicitudes que utilizan los otros métodos.

Si utiliza un bucket de Amazon S3 como origen de la distribución y, además, usa identidades de acceso
de origen de CloudFront, las solicitudes POST no se admiten en algunas regiones de Amazon S3 y las
solicitudes PUT en esas regiones necesitarán un encabezado adicional. Para obtener más información,
consulte Uso de una OAI en regiones de Amazon S3 que solo admiten autenticación Signature Version
4 (p. 230).

Si desea utilizar cargas multiparte para agregar objetos a un bucket de Amazon S3, debe agregar una
identidad de acceso de origen de CloudFront a su distribución y conceder los permisos necesarios a la
identidad de acceso de origen. Para obtener más información, consulte Restricción del acceso a contenido
de Amazon S3 utilizando una identidad de acceso de origen (p. 223).
Important

Si configura CloudFront para que acepte y reenvíe a Amazon S3 todos los métodos HTTP que
CloudFront admite, debe crear una identidad de acceso de origen de CloudFront para restringir
el acceso a su contenido de Amazon S3 y conceder los permisos necesarios a la identidad de
acceso de origen. Por ejemplo, si configura CloudFront para aceptar y reenviar estos métodos
porque desea utilizar PUT, debe configurar también políticas de bucket de Amazon S3 o ACL para
administrar solicitudes DELETE adecuadamente, de forma que los lectores no puedan eliminar
los recursos que no desee que eliminen. Para obtener más información, consulte Restricción del
acceso a contenido de Amazon S3 utilizando una identidad de acceso de origen (p. 223).

Para obtener más información acerca de las operaciones admitidas por Amazon S3, consulte la
documentación de Amazon S3.

Encabezados de solicitud HTTP que CloudFront elimina o


actualiza
CloudFront elimina o actualiza algunos encabezado antes de reenviar solicitudes a su origen de Amazon
S3. 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 de CloudFront (personalizado y orígenes de
S3) (p. 309).

Longitud máxima de una solicitud y de una URL


La 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 máximos, CloudFront devuelve el código de estado HTTP 413
(entidad de solicitud demasiado grande), al lector y, a continuación, interrumpe la conexión TCP con el
lector.

Asociación de OCSP
Cuando un lector envía una solicitud de un objeto HTTPS, CloudFront o el lector deben confirmar con la
autoridad de certificación (CA) que el certificado SSL del dominio no se ha revocado. La asociación de

301
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen de Amazon S3

OCSP agiliza la validación de certificados al permitir a CloudFront validar el certificado y almacenar en


caché la respuesta de la CA, por lo que el cliente no tiene por qué validar el certificado directamente con la
CA.

La mejora en el rendimiento de la asociación de OCSP es más notoria cuando CloudFront recibe una gran
cantidad de solicitudes de HTTPS de objetos en el mismo dominio. Cada servidor en una ubicación de
borde de CloudFront debe enviar una solicitud de validación independiente. Cuando CloudFront recibe
una gran cantidad de solicitudes HTTPS para el mismo dominio, cada servidor de la ubicación de borde
obtiene pronto una respuesta de la CA que puede asociar a un paquete en el protocolo de enlace de SSL;
cuando el lector considera que el certificado es válido, CloudFront puede ofrecer el objeto solicitado. Si la
distribución no recibe mucho tráfico en una ubicación de borde de CloudFront, es más probable que las
nuevas solicitudes se dirijan a un servidor que todavía no haya validado el certificado con la CA. En ese
caso, el lector realiza el paso de validación por separado y el servidor de CloudFront ofrece el objeto. Este
servidor de CloudFront también envía una solicitud de validación a la CA, por lo que la próxima vez que
recibe una solicitud que incluye el mismo nombre de dominio, cuenta con una respuesta de validación de
la CA.

Protocolos
CloudFront reenvía las solicitudes de HTTP o HTTPS al servidor de origen en función del protocolo de la
solicitud del lector, ya sea HTTP o HTTPS.
Important

Si su bucket de Amazon S3 se configura como un punto de enlace de sitio web, no puede


configurar CloudFront para usar HTTPS para comunicarse con su origen porque Amazon S3 no
admite conexiones HTTPS en dicha configuración.

Cadenas de consulta
Puede configurar si CloudFront reenvía parámetros de cadenas de consulta a su origen Amazon S3. Para
obtener más información, consulte Almacenamiento en caché de contenido en función de parámetros de
cadenas de consulta (p. 274).

Tiempo de espera e intentos de conexión de origen


Origin connection timeout (Tiempo de espera de conexión de origen) es el número de segundos que
CloudFront espera al intentar establecer una conexión con el origen.

Origin connection attempts (Intentos de conexión de origen) es el número de veces que CloudFront intenta
conectarse al origen.

Juntos, estos parámetros determinan cuánto tiempo intenta CloudFront conectarse al origen antes de
realizar una conmutación al origen secundario (en el caso de un grupo de orígenes) o devolver una
respuesta de error al lector. De forma predeterminada, CloudFront espera hasta 30 segundos (3 intentos
de 10 segundos cada uno) antes de intentar conectarse al origen secundario o devolver una respuesta de
error. Puede reducir este tiempo si especifica menos intentos, un tiempo de espera de conexión más corto
o ambas opciones.

Para obtener más información, consulte Control de los tiempos de espera de origen y los intentos (p. 266).

Tiempo de espera de respuesta del origen


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

• El periodo de tiempo, en segundos, que CloudFront espera una respuesta después de enviar una
solicitud al origen.

302
Amazon CloudFront Guía para desarrolladores
Cómo procesa CloudFront las respuestas
de su servidor de origen de Amazon S3

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

El comportamiento de CloudFront depende del método HTTP en la solicitud del lector:

• Solicitudes GET y HEAD: si el origen no responde en un plazo de 30 segundos o deja de responder


durante 30 segundos, CloudFront interrumpe la conexión. Si el número especificado de intentos de
conexión de origen (p. 48) es superior a 1, CloudFront intenta obtener de nuevo una respuesta completa.
CloudFront lo intenta hasta tres veces, según lo determinado por el valor de la opciónOrigin connection
attempts (Intentos de conexión de origen). Si el origen no responde en el último intento, CloudFront no
vuelve a intentarlo hasta que recibe una nueva solicitud de contenido en el mismo origen.
• Solicitudes DELETE, OPTIONS, PATCH, PUT y POST: si el origen no responde en 30 segundos,
CloudFront interrumpe la conexión y no vuelve a intentar ponerse en contacto con el origen. El cliente
puede volver a enviar la solicitud en caso de que sea necesario.

No puede cambiar el tiempo de espera de respuesta para un origen de Amazon S3 (un bucket de S3 que
no está configurado con alojamiento de sitio web estático).

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
en ese momento en la caché o el objeto ha caducado, CloudFront envía inmediatamente la solicitud al
origen de Amazon S3. Si hay un pico de tráfico, es decir, si llegan solicitudes adicionales del mismo objeto
a la ubicación de borde antes de que Amazon S3 responda a la primera solicitud, CloudFront se pone
en pausa brevemente antes de reenviar solicitudes adicionales del objeto a su origen. La respuesta a la
primera solicitud suele llegar a la ubicación de borde de CloudFront antes que la respuesta a las solicitudes
posteriores. Esta breve pausa ayuda a reducir la carga innecesaria en Amazon S3. Si las solicitudes
adicionales no son idénticas, porque, por ejemplo, ha configurado CloudFront para almacenar en caché
en función de los encabezados de solicitudes o las 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, CloudFront suele
reenviar la siguiente solicitud del mismo objeto al origen para determinar si dicho objeto se ha actualizado.
Sin embargo, cuando hay un pico de tráfico y CloudFront se pone en pausa después de reenviar la primera
solicitud al origen, pueden llegar varias solicitudes antes de que CloudFront reciba una respuesta del
origen. Cuando CloudFront recibe una respuesta que contiene un encabezado Cache-Control: no-
cache, envía el objeto en la respuesta al lector que realizó la solicitud original y a todos los lectores que
solicitaron el objeto durante la pausa. Una vez que la respuesta llega desde el origen, CloudFront reenvía
la siguiente solicitud del lector del mismo objeto al origen. En los registros de acceso de CloudFront, la
primera solicitud se identifica como Miss en la columna x-edge-result-type y todas las solicitudes
posteriores recibidas por CloudFront durante la pausa se identifican como Hit. Para obtener más
información acerca del formato de archivo de registros de acceso, consulte Campos de archivo de registro
estándar (p. 469).

Cómo procesa CloudFront las respuestas de su


servidor de origen de Amazon S3
Este tema contiene información sobre cómo CloudFront procesa las respuestas desde su origen de
Amazon S3.

Temas
• Solicitudes canceladas (p. 304)
• Encabezados de respuesta HTTP que CloudFront elimina o actualiza (p. 304)
• Tamaño máximo de archivo (p. 304)

303
Amazon CloudFront Guía para desarrolladores
Cómo procesa CloudFront las respuestas
de su servidor de origen de Amazon S3

• Redireccionamientos (p. 304)

Solicitudes canceladas
Si un objeto no está en la caché perimetral y un lector termina una sesión (por ejemplo, cierra un
navegador) después de que CloudFront obtiene el objeto solicitado del origen, pero antes de que pueda
entregarlo, CloudFront no almacena el objeto en la caché de la ubicación de borde.

Encabezados de respuesta HTTP que CloudFront elimina o


actualiza
CloudFront elimina o actualiza los siguientes campos de encabezado antes de reenviar la respuesta desde
su origen de Amazon S3 al lector:

• Set-Cookie: si configura CloudFront para reenviar cookies, reenviará el campo del encabezado Set-
Cookie a los clientes. Para obtener más información, consulte Almacenamiento en caché de contenido
en función de cookies (p. 277).
• Trailer
• Transfer-Encoding: si el origen de Amazon S3 devuelve este campo de encabezado CloudFront
establece el valor en chunked antes de devolver la respuesta al lector.
• Upgrade
• Via: CloudFront establece el valor en lo siguiente en la respuesta al lector:

Via: versión-http cadena-alfanumérica.cloudfront.net (CloudFront)

Por ejemplo, si el cliente realiza una solicitud a través de HTTP/1.1, el valor es algo parecido a lo
siguiente:

Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

Tamaño máximo de archivo


El tamaño máximo de un cuerpo de respuesta que CloudFront devolverá al lector es de 20 GB. Eso incluye
respuestas transferidas en fragmentos que no especifican el valor de encabezado Content-Length.

Redireccionamientos
Puede configurar un bucket de Amazon S3 para redirigir todas las solicitudes a otro nombre de host;
este puede ser otro bucket de Amazon S3 o un servidor HTTP. Si configura un bucket para redirigir todas
las solicitudes y es el origen de una distribución de CloudFront, le recomendamos configurarlo para
redirigirlas a una distribución de CloudFront utilizando el nombre de dominio para la distribución (por
ejemplo, d111111abcdef8.cloudfront.net) o un nombre alternativo de dominio (un CNAME) asociado a una
distribución (por ejemplo, ejemplo.com). De lo contrario, las solicitudes de los lectores eluden CloudFront y
los objetos se sirven directamente desde el nuevo origen.
Note

Si redirige solicitudes a un nombre de dominio alternativo, también debe actualizar el servicio


de 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. 80).

Esto es lo que ocurre cuando configura un bucket para redirigir todas las solicitudes:

1. Un lector (por ejemplo, un navegador) solicita un objeto de CloudFront.

304
Amazon CloudFront Guía para desarrolladores
Comportamiento de solicitudes y
respuestas para orígenes personalizados

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 lector. CloudFront no sigue la redirección para obtener el objeto de la nueva ubicación.
5. El lector envía otra solicitud del objeto, pero esta vez el lector especifica la nueva ubicación que
obtuvo de CloudFront:

• Si el bucket de Amazon S3 está redirigiendo todas las solicitudes a una distribución de CloudFront
usando el nombre de dominio para la distribución o un nombre de dominio alternativo, CloudFront
solicita el objeto del bucket de Amazon S3 o del servidor HTTP en la nueva ubicación. Cuando la
nueva ubicación devuelve el objeto, CloudFront lo devuelve al lector y lo almacena en caché en una
ubicación de borde.
• Si el bucket de Amazon S3 está redirigiendo las solicitudes a otra ubicación, la segunda solicitud
elude CloudFront. El bucket de Amazon S3 o el servidor HTTP de la nueva ubicación devuelven el
objeto directamente al lector, por lo que el objeto nunca se almacena en una caché perimetral de
CloudFront.

Comportamiento de solicitudes y respuestas para


orígenes personalizados
Temas
• Cómo CloudFront procesa y reenvía solicitudes a su servidor de origen personalizado (p. 305)
• Cómo CloudFront procesa las respuestas desde el servidor de origen personalizado (p. 315)

Cómo CloudFront procesa y reenvía solicitudes a su


servidor de origen personalizado
Este tema contiene información acerca de cómo CloudFront procesa las solicitudes de los lectores y las
reenvía a su origen personalizado.

Temas
• Autenticación (p. 306)
• Duración de almacenamiento en caché y TTL mínimo (p. 306)
• Direcciones IP de clientes (p. 306)
• Autenticación SSL en el cliente (p. 307)
• Compresión (p. 307)
• Solicitudes condicionales (p. 307)
• Cookies (p. 307)
• Cross-Origin Resource Sharing (CORS, Uso compartido de recursos entre orígenes) (p. 307)
• Cifrado (p. 307)
• Solicitudes GET que incluyen un cuerpo (p. 308)
• Métodos HTTP (p. 308)
• Encabezados de solicitudes HTTP y comportamiento de CloudFront (personalizado y orígenes de
S3) (p. 309)
• Versión de HTTP (p. 312)
• Longitud máxima de una solicitud y de una URL (p. 312)

305
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado

• Asociación de OCSP (p. 313)


• Conexiones persistentes (p. 313)
• Protocolos (p. 313)
• Cadenas de consulta (p. 314)
• Tiempo de espera e intentos de conexión de origen (p. 314)
• Tiempo de espera de respuesta del origen (p. 314)
• Solicitudes simultáneas del mismo objeto (picos de tráfico) (p. 314)
• Encabezado usuario-agente (p. 315)

Autenticación
Para las solicitudes DELETE, GET, HEAD, PATCH, POST y PUT, si configura CloudFront para reenviar el
encabezado Authorization a su origen (p. 321), puede configurar su servidor de origen para solicitar
autenticación del cliente.

Para las solicitudes OPTIONS, puede configurar su servidor de origen para solicitar autenticación del
cliente solo si utiliza los siguientes ajustes de CloudFront:

• Configure CloudFront para que reenvíe el encabezado Authorization a su origen (p. 321).
• Configure CloudFront para que no almacene en caché la respuesta a solicitudes OPTIONS.

Puede configurar CloudFront para que reenvíe las solicitudes a su origen mediante HTTP o HTTPS; para
obtener más información, consulte Uso de HTTPS con CloudFront (p. 138).

Duración de almacenamiento en caché y TTL mínimo


Para controlar durante cuánto tiempo se mantienen 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.
• Especificar un valor de TTL mínimo en comportamientos de la caché de CloudFront.
• Utilice el valor de predeterminado de 24 horas.

Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una
caché (vencimiento) (p. 268).

Direcciones IP de clientes
Si un lector envía una solicitud a CloudFront y no incluye un encabezado de solicitud X-Forwarded-For,
CloudFront obtiene la dirección IP del lector de la conexión TCP, agrega un encabezado X-Forwarded-
For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, si CloudFront obtiene la
dirección IP 192.0.2.2 de la conexión TCP, reenvía el siguiente encabezado al origen:

X-Forwarded-For: 192.0.2.2

Si un lector envía una solicitud a CloudFront e incluye un encabezado de solicitud X-Forwarded-For,


CloudFront obtiene la dirección IP del lector de la conexión TCP, la agrega al final del encabezado X-
Forwarded-For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, si la solicitud
del lector incluye X-Forwarded-For: 192.0.2.4,192.0.2.3 y CloudFront obtiene la dirección IP
192.0.2.2 de la conexión TCP, reenvía el siguiente encabezado al origen:

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

306
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado

Algunas aplicaciones, como, por ejemplo, balanceadores de carga (incluido Elastic Load Balancing),
firewalls de aplicaciones web, proxis inversos, sistemas de prevención de intrusos y gateways de la
API, agregan la dirección IP del servidor de borde de CloudFront que reenvía la solicitud al extremo del
encabezado X-Forwarded-For. Por ejemplo, si CloudFront incluye X-Forwarded-For: 192.0.2.2
en una solicitud que reenvía a ELB y si la dirección IP del servidor de borde de CloudFront es 192.0.2.199,
la solicitud que recibe su instancia EC2 contiene el siguiente encabezado:

X-Forwarded-For: 192.0.2.2,192.0.2.199
Note
El encabezado X-Forwarded-For contiene direcciones IPv4 (como 192.0.2.44) e IPv6 (como
2001:0db8:85a3:0000:0000:8a2e:0370:7334).

Autenticación SSL en el cliente


CloudFront no admite la autenticación del cliente con certificados SSL del lado del cliente. Si un origen
solicita un certificado de cliente, CloudFront interrumpe la solicitud.

Compresión
Para obtener más información, consulte Ofrecer archivos comprimidos (p. 128).

Solicitudes condicionales
Cuando CloudFront recibe una solicitud de un objeto que ha caducado en una caché perimetral, reenvía
la solicitud al origen para obtener la última versión del objeto o para obtener la confirmación del origen
de que la caché perimetral de CloudFront ya dispone de la última versión. Por lo general, la última vez
que el origen envía el objeto a CloudFront, incluye un valor ETag, un valor LastModified o ambos en la
respuesta. En la nueva solicitud que CloudFront reenvía al origen, CloudFront agrega uno o ambos de los
siguientes elementos:

• Un encabezado If-Match o If-None-Match que contenga el valor ETag para la versión caducada del
objeto.
• Un encabezado If-Modified-Since que contenga el valor LastModified para la versión caducada
del objeto.

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

Cookies
Puede configurar CloudFront para que reenvíe cookies al origen. Para obtener más información, consulte
Almacenamiento en caché de contenido en función de cookies (p. 277).

Cross-Origin Resource Sharing (CORS, Uso compartido de


recursos entre orígenes)
Si desea que CloudFront respete la configuración de intercambio de recursos entre orígenes,
configure Origin para que reenvíe el encabezado al origen. Para obtener más información, consulte
Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 280).

Cifrado
Puede requerir que los lectores utilicen HTTPS para enviar solicitudes a CloudFront y exigir a CloudFront
que reenvíe las solicitudes a su origen personalizado mediante el protocolo que utiliza el lector. Para
obtener más información, consulte la siguiente configuración de distribución:

307
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado

• Viewer Protocol Policy (p. 55)


• Origin Protocol Policy (p. 50)

CloudFront reenvía las solicitudes HTTPS al servidor de origen mediante los protocolos SSLv3, TLSv1.0,
TLSv1.1 y TLSv1.2. En el caso de orígenes personalizados, puede elegir los protocolos SSL que desea
que CloudFront utilice al comunicarse con su origen:

• Si utiliza la consola de CloudFront, elija los protocolos en las casillas Origin SSL Protocols (Protocolos
SSL de origen). Para obtener más información, consulte Creación de una distribución (p. 42).
• Si utiliza la API de CloudFront, especifique los protocolos mediante el elemento OriginSslProtocols.
Para obtener más información, consulte OriginSslProtocols y DistributionConfig en la Referencia de la
API de Amazon CloudFront.

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


Important

Otras versiones de SSL y TLS no son compatibles.

Para obtener más información acerca del uso de HTTPS con CloudFront, consulte Uso de HTTPS con
CloudFront (p. 138). Para obtener listas de los algoritmos criptográficos que CloudFront admite para la
comunicación HTTPS entre lectores y CloudFront, y entre CloudFront y su origen, consulte Protocolos y
cifrados admitidos entre lectores y CloudFront (p. 145).

Solicitudes GET que incluyen un cuerpo


Si una solicitud GET del lector incluye un cuerpo, CloudFront devuelve un código de estado HTTP 403
(prohibido) al lector.

Métodos HTTP
Si configura CloudFront para procesar todos los métodos de HTTP que admite, CloudFront acepta las
siguientes solicitudes de los lectores y las reenvía al origen personalizado:

• DELETE
• GET
• HEAD
• OPTIONS
• PATCH
• POST
• PUT

CloudFront siempre almacena en caché las respuestas a las solicitudes GET y HEAD. También puede
configurar CloudFront para almacenar en caché las respuestas a solicitudes OPTIONS. CloudFront no
almacena en caché las respuestas a las solicitudes que utilizan los otros métodos.

Para obtener más información acerca de la configuración para que su origen personalizado procese estos
métodos, consulte la documentación de su origen.
Important

Si configura CloudFront para aceptar y reenviar al origen todos los métodos HTTP que admite
CloudFront, configure su servidor de origen para administrar todos los métodos. Por ejemplo, si
configura CloudFront para aceptar y reenviar estos métodos porque desea utilizar POST, debe
configurar también su servidor de origen para administrar las solicitudes DELETE adecuadamente,

308
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado

de forma que los lectores no puedan eliminar los recursos que no desee que eliminen. Para
obtener más información, consulte la documentación de su servidor HTTP.

Encabezados de solicitudes HTTP y comportamiento de


CloudFront (personalizado y orígenes de S3)
En la siguiente tabla se indican los encabezados de solicitudes HTTP que puede reenviar a orígenes
personalizados y de Amazon S3 (con las excepciones que se indican). Para cada encabezado, la tabla
incluye información acerca de lo siguiente:

• El comportamiento de CloudFront si no configura CloudFront para reenviar el encabezado a su origen, lo


que 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 ese
encabezado.

Puede configurar CloudFront para almacenar en caché los objetos en función de los valores de los
encabezados Date y User-Agent, pero no lo recomendamos. Estos encabezados tienen muchos
valores posibles y el almacenamiento en caché en función de sus valores podría hacer que CloudFront
reenvíe una cantidad de solicitudes significativamente mayor a su origen.

Para obtener más información acerca del almacenamiento en caché en función de valores de encabezado,
consulte Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 280).

Encabezado Comportamiento si no configura CloudFront para Se admite el


almacenar en caché en función de los valores de almacenamiento
encabezados en caché
admite en
función de
valores de
encabezados

Encabezados definidos por CloudFront reenvía los encabezados al origen. Sí


otros

Accept CloudFront elimina el encabezado. Sí

Accept-Charset CloudFront elimina el encabezado. Sí

Accept-Encoding Si el valor contiene gzip o br, CloudFront reenvía un Sí


encabezado Accept-Encoding normalizado a su
origen.

Para obtener más información, consulte Compatibilidad


con la compresión (p. 96) y Ofrecer archivos
comprimidos (p. 128).

Accept-Language CloudFront elimina el encabezado. Sí

Authorization • Solicitudes GET y HEAD: CloudFront elimina el campo Sí


del encabezado Authorization antes de reenviar
la solicitud al origen.
• Solicitudes OPTIONS: CloudFront elimina el campo
de encabezado Authorization antes de enviar
la solicitud al origen si configura CloudFront para
almacenar en caché las respuestas a las solicitudes
OPTIONS.

309
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado

Encabezado Comportamiento si no configura CloudFront para Se admite el


almacenar en caché en función de los valores de almacenamiento
encabezados en caché
admite en
función de
valores de
encabezados
CloudFront reenvía el campo de encabezado
Authorization al origen si no configura
CloudFront para almacenar en caché las respuestas
a solicitudes OPTIONS.
• Solicitudes DELETE, PATCH, POST y PUT: CloudFront
no elimina el campo del encabezado antes de
reenviar la solicitud al origen.

Cache-Control CloudFront reenvía los encabezados al origen. No

CloudFront-Forwarded- CloudFront no agrega el encabezado antes de reenviar Sí


Proto la solicitud al origen.

Para obtener más información, consulte Configurar el


almacenamiento en caché en función del protocolo de
la solicitud (p. 283).

CloudFront-Is-Desktop- CloudFront no agrega el encabezado antes de reenviar Sí


Viewer la solicitud al origen.

Para obtener más información, consulte Configuración


del almacenamiento en caché en función del tipo de
dispositivo (p. 282).

CloudFront-Is-Mobile- CloudFront no agrega el encabezado antes de reenviar Sí


Viewer la solicitud al origen.

Para obtener más información, consulte Configuración


del almacenamiento en caché en función del tipo de
dispositivo (p. 282).

CloudFront-Is-Tablet- CloudFront no agrega el encabezado antes de reenviar Sí


Viewer la solicitud al origen.

Para obtener más información, consulte Configuración


del almacenamiento en caché en función del tipo de
dispositivo (p. 282).

CloudFront-Viewer- CloudFront no agrega el encabezado antes de reenviar Sí


Country la solicitud al origen.

Connection CloudFront sustituye este encabezado por No


Connection: Keep-Alive antes de enviar la
solicitud a su origen.

Content-Length CloudFront reenvía los encabezados al origen. No

Content-MD5 CloudFront reenvía los encabezados al origen. Sí

Content-Type CloudFront reenvía los encabezados al origen. Sí

310
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado

Encabezado Comportamiento si no configura CloudFront para Se admite el


almacenar en caché en función de los valores de almacenamiento
encabezados en caché
admite en
función de
valores de
encabezados

Cookie Si configura CloudFront para reenviar cookies, No


reenviará el campo del encabezado Cookie a su
origen. En caso contrario, CloudFront elimina el
campo de encabezado Cookie. Para obtener más
información, consulte Almacenamiento en caché de
contenido en función de cookies (p. 277).

Date CloudFront reenvía los encabezados al origen. Sí, pero no se


recomienda

Expect CloudFront elimina el encabezado. Sí

From CloudFront reenvía los encabezados al origen. Sí

Host CloudFront establece el valor en el nombre de dominio Sí


del origen que se asocia al objeto solicitado. (personalizado)

No puede almacenar en caché en función del No (S3 y


encabezado Host para los orígenes de Amazon S3 o MediaStore)
MediaStore.

If-Match CloudFront reenvía los encabezados al origen. Sí

If-Modified-Since CloudFront reenvía los encabezados al origen. Sí

If-None-Match CloudFront reenvía los encabezados al origen. Sí

If-Range CloudFront reenvía los encabezados al origen. Sí

If-Unmodified-Since CloudFront reenvía los encabezados al origen. Sí

Max-Forwards CloudFront reenvía los encabezados al origen. No

Origin CloudFront reenvía los encabezados al origen. Sí

Pragma CloudFront reenvía los encabezados 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 los encabezados al origen. Para Sí de forma


obtener más información, consulte Cómo CloudFront predeterminada
procesa las solicitudes parciales de un objeto (rango
GET). (p. 322).

Referer CloudFront elimina el encabezado. Sí

Request-Range CloudFront reenvía los encabezados al origen. No

TE CloudFront elimina el encabezado. No

311
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado

Encabezado Comportamiento si no configura CloudFront para Se admite el


almacenar en caché en función de los valores de almacenamiento
encabezados en caché
admite en
función de
valores de
encabezados

Trailer CloudFront elimina el encabezado. No

Transfer-Encoding CloudFront reenvía los encabezados al origen. No

Upgrade CloudFront elimina el encabezado, a menos que haya No (excepto


establecido una conexión WebSocket. para las
conexiones
WebSocket)

User-Agent CloudFront sustituye el valor de este campo de Sí, pero no se


encabezado por Amazon CloudFront. Si desea que recomienda
CloudFront almacene en caché el contenido en función
del dispositivo del usuario, consulte Configuración
del almacenamiento en caché en función del tipo de
dispositivo (p. 282).

Via CloudFront reenvía los encabezados al origen. Sí

Warning CloudFront reenvía los encabezados al origen. Sí

X-Amz-Cf-Id CloudFront agrega el encabezado a la solicitud del No


lector antes de reenviar la solicitud al origen. El valor
de encabezado contiene una cadena cifrada que
identifica la solicitud de forma única.

X-Edge-* CloudFront elimina todos los encabezados X-Edge-*. No

X-Forwarded-For CloudFront reenvía los encabezados al origen. Para Sí


obtener más información, consulte Direcciones IP de
clientes (p. 306).

X-Forwarded-Proto CloudFront elimina el encabezado. No

X-Real-IP CloudFront elimina el encabezado. No

Versión de HTTP
CloudFront reenvía las solicitudes a su origen personalizado mediante HTTP/1.1.

Longitud máxima de una solicitud y de una URL


La 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 máximos, CloudFront devuelve el código de estado HTTP 413
(entidad de solicitud demasiado grande), al lector y, a continuación, interrumpe la conexión TCP con el
lector.

312
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado

Asociación de OCSP
Cuando un lector envía una solicitud de un objeto HTTPS, CloudFront o el lector deben confirmar con la
autoridad de certificación (CA) que el certificado SSL del dominio no se ha revocado. La asociación de
OCSP agiliza la validación de certificados al permitir a CloudFront validar el certificado y almacenar en
caché la respuesta de la CA, por lo que el cliente no tiene por qué validar el certificado directamente con la
CA.

La mejora en el rendimiento de la asociación de OCSP es más notoria cuando CloudFront recibe


numerosas solicitudes HTTPS de objetos en el mismo dominio. Cada servidor en una ubicación de borde
de CloudFront debe enviar una solicitud de validación independiente. Cuando CloudFront recibe una
gran cantidad de solicitudes HTTPS para el mismo dominio, cada servidor de la ubicación de borde
obtiene pronto una respuesta de la CA que puede asociar a un paquete en el protocolo de enlace de SSL;
cuando el lector considera que el certificado es válido, CloudFront puede ofrecer el objeto solicitado. Si la
distribución no recibe mucho tráfico en una ubicación de borde de CloudFront, es más probable que las
nuevas solicitudes se dirijan a un servidor que todavía no haya validado el certificado con la CA. En ese
caso, el lector realiza el paso de validación por separado y el servidor de CloudFront ofrece el objeto. Este
servidor de CloudFront también envía una solicitud de validación a la CA, por lo que la próxima vez que
recibe una solicitud que incluye el mismo nombre de dominio, cuenta con una respuesta de validación de
la CA.

Conexiones persistentes
Cuando CloudFront obtiene una respuesta de su origen, intenta mantener la conexión durante varios
segundos en caso de que otra solicitud llegue durante ese periodo. Garantizar una conexión persistente
ahorra el tiempo necesario para restablecer la conexión TCP y realizar otro protocolo de enlace TLS para
solicitudes posteriores.

Para obtener más información, incluido el modo de configurar la duración de las conexiones persistentes,
consulte Tiempo de conexión persistente del origen (p. 52) en la sección Valores que deben especificarse
al crear o actualizar una distribución (p. 43).

Protocolos
CloudFront reenvía solicitudes HTTP o HTTPS al servidor de origen en función de lo siguiente:

• El protocolo de la solicitud que el lector envía a CloudFront, ya sea HTTP o HTTPS.


• El valor del campo Origin Protocol Policy (Política de protocolo de origen) en la consola de CloudFront
o, si está utilizando la API de CloudFront, el elemento OriginProtocolPolicy del tipo complejo
DistributionConfig. En la consola de CloudFront, las opciones son HTTP Only (Solo HTTP),
HTTPS Only (Solo HTTPS) y Match Viewer (Coincidir con lector).

Si especifica HTTP Only (Solo HTTP) o HTTPS Only (Solo HTTPS), CloudFront reenvía las solicitudes al
servidor de origen mediante el protocolo especificado, independientemente del protocolo de la solicitud del
lector.

Si especifica Match Viewer (Coincidir con lector), CloudFront reenvía las solicitudes al servidor de origen
mediante el protocolo especificado en la solicitud del lector. Tenga en cuenta que CloudFront almacena en
caché el objeto solo una vez, incluso si los lectores realizan solicitudes a través de los protocolos HTTP y
HTTPS.
Important
Si CloudFront reenvía una solicitud al origen mediante el protocolo HTTPS, y si el servidor de
origen devuelve un certificado no válido o autofirmado, CloudFront interrumpe la conexión TCP.

Para obtener más información acerca de cómo actualizar una distribución desde la consola de CloudFront,
consulte Actualización de una distribución (p. 71). Para obtener información acerca de cómo actualizar

313
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa y reenvía solicitudes
a su servidor de origen personalizado

una distribución mediante la API de CloudFront, consulte UpdateDistribution en la Referencia de la API de


Amazon CloudFront.

Cadenas de consulta
Puede configurar si CloudFront reenvía parámetros de cadenas de consulta a su origen. Para obtener más
información, consulte Almacenamiento en caché de contenido en función de parámetros de cadenas de
consulta (p. 274).

Tiempo de espera e intentos de conexión de origen


Origin connection timeout (Tiempo de espera de conexión de origen) es el número de segundos que
CloudFront espera al intentar establecer una conexión con el origen.

Origin connection attempts (Intentos de conexión de origen) es el número de veces que CloudFront intenta
conectarse al origen.

Juntos, estos parámetros determinan cuánto tiempo intenta CloudFront conectarse al origen antes de
realizar una conmutación al origen secundario (en el caso de un grupo de orígenes) o devolver una
respuesta de error al lector. De forma predeterminada, CloudFront espera hasta 30 segundos (3 intentos
de 10 segundos cada uno) antes de intentar conectarse al origen secundario o devolver una respuesta de
error. Puede reducir este tiempo si especifica menos intentos, un tiempo de espera de conexión más corto
o ambas opciones.

Para obtener más información, consulte Control de los tiempos de espera de origen y los intentos (p. 266).

Tiempo de espera de respuesta del origen


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

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

El comportamiento de CloudFront depende del método HTTP en la solicitud del lector:

• Solicitudes GET y HEAD: si el origen no responde o deja de responder durante el tiempo de espera de
la respuesta, CloudFront interrumpe la conexión. Si el número especificado de intentos de conexión de
origen (p. 48) es superior a 1, CloudFront intenta obtener de nuevo una respuesta completa. CloudFront
lo intenta hasta tres veces, según lo determinado por el valor de la opciónOrigin connection attempts
(Intentos de conexión de origen). Si el origen no responde en el último intento, CloudFront no vuelve a
intentarlo hasta que recibe una nueva solicitud de contenido en el mismo origen.
• Solicitudes DELETE, OPTIONS, PATCH, PUT y POST: si el origen no responde en 30 segundos,
CloudFront interrumpe la conexión y no vuelve a intentar ponerse en contacto con el origen. El cliente
puede volver a enviar la solicitud en caso de que sea necesario.

Para obtener más información, incluido el modo de configurar el tiempo de espera de la respuesta del
origen, consulte Tiempo de espera de respuesta del origen (p. 51).

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 en
ese momento en la caché o el objeto ha caducado, CloudFront envía inmediatamente la solicitud al origen.

314
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa las respuestas
desde el servidor de origen personalizado

Si hay un pico de tráfico (es decir, si llegan solicitudes adicionales del mismo objeto a la ubicación de
borde antes de que el origen responda a la primera solicitud), CloudFront se pone en pausa brevemente
antes de reenviar las solicitudes adicionales del objeto a su origen. La respuesta a la primera solicitud
suele llegar a la ubicación de borde de CloudFront antes que la respuesta a las solicitudes posteriores.
Esta breve pausa ayuda a reducir la carga innecesaria en su servidor de origen. Si las solicitudes
adicionales no son idénticas, porque, por ejemplo, ha configurado CloudFront para almacenar en caché en
función de los encabezados de solicitudes o cookies, CloudFront reenvía todas las solicitudes únicas a su
origen.

Encabezado usuario-agente
Si desea que CloudFront almacene en caché diversas versiones de sus objetos según el dispositivo que el
usuario utilice para ver su contenido, le recomendamos que configure CloudFront para que reenvíe uno o
varios de los siguientes encabezados a su origen personalizado:

• CloudFront-Is-Desktop-Viewer
• CloudFront-Is-Mobile-Viewer
• CloudFront-Is-SmartTV-Viewer
• CloudFront-Is-Tablet-Viewer

En función del valor del encabezado User-Agent, CloudFront establece el valor de estos encabezados
en true o false antes de reenviar la solicitud al origen. Si un dispositivo entra en más de una categoría,
más de un valor podría ser true. Por ejemplo, en el caso de algunas tabletas, CloudFront podría
establecer tanto CloudFront-Is-Mobile-Viewer como CloudFront-Is-Tablet-Viewer en true.
Para obtener más información acerca de la configuración de CloudFront para almacenar en caché en
función de los encabezados de solicitud, consulte Almacenamiento en caché de contenido en función de
encabezados de solicitud (p. 280).

Puede configurar CloudFront para almacenar en caché los objetos en función de los valores del
encabezado User-Agent, pero no lo recomendamos. El encabezado User-Agent tiene muchos valores
posibles y el almacenamiento en caché en función de esos valores podría hacer que CloudFront reenvíe
una cantidad de solicitudes significativamente mayor a su origen.

Si no configura CloudFront para almacenar en caché los objetos en función de los valores del encabezado
User-Agent, CloudFront agrega un encabezado User-Agent con el siguiente valor antes de reenviar
una solicitud al origen:

User-Agent = Amazon CloudFront

CloudFront agrega este encabezado independientemente de si la solicitud del lector incluye un


encabezado User-Agent. Si la solicitud del lector incluye un encabezado User-Agent, CloudFront lo
elimina.

Cómo CloudFront procesa las respuestas desde el


servidor de origen personalizado
Este tema contiene información sobre cómo procesa CloudFront las respuestas desde su origen
personalizado.

Temas
• Respuestas de 100-continue (p. 316)
• Almacenamiento en caché (p. 316)
• Solicitudes canceladas (p. 316)

315
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa las respuestas
desde el servidor de origen personalizado

• Negociación de contenido (p. 316)


• Cookies (p. 316)
• Conexiones TCP interrumpidas (p. 317)
• Encabezados de respuesta HTTP que CloudFront elimina o reemplaza (p. 317)
• Tamaño máximo de archivo (p. 318)
• Origen no disponible (p. 318)
• Redireccionamientos (p. 318)
• Codificación de transferencia (p. 318)

Respuestas de 100-continue
Su origen no puede enviar más de una respuesta 100-Continue a CloudFront. Después de la primera
respuesta 100-Continue, CloudFront espera una respuesta HTTP 200 OK. Si el origen envía otra respuesta
100-Continue después de la primera, CloudFront devolverá un error.

Almacenamiento en caché
• Asegúrese de que el servidor de origen establece valores válidos y precisos para los campos de
encabezado Date y Last-Modified.
• Si las solicitudes de los espectadores incluyen los campos de encabezado de solicitud If-Match o
If-None-Match, defina el campo de encabezado de respuesta ETag. Si no especifica un valor ETag,
CloudFront pasa por alto los encabezados If-Match o If-None-Match posteriores.
• CloudFront normalmente respeta un encabezado Cache-Control: no-cache en la respuesta
del origen. Para ver una excepción, consulte Solicitudes simultáneas del mismo objeto (picos de
tráfico) (p. 314).

Solicitudes canceladas
Si un objeto no está en la caché perimetral y un lector termina una sesión (por ejemplo, cierra un
navegador) después de que CloudFront obtiene el objeto solicitado del origen, pero antes de que pueda
entregarlo, CloudFront no almacena el objeto en la caché de la ubicación de borde.

Negociación de contenido
Si el origen devuelve Vary:* en la respuesta y si el valor de Minimum TTL (TTL mínimo) para el
comportamiento de la caché correspondiente es 0, CloudFront almacena en caché el objeto, pero
igualmente reenvía cada solicitud posterior del objeto al origen para confirmar que la caché contiene la
última versión de dicho objeto. CloudFront no incluye encabezados condicionales, como If-None-Match
o If-Modified-Since. Por tanto, el origen devuelve el objeto a CloudFront como respuesta a cada
solicitud.

Si el origen devuelve Vary:* en la respuesta y si el valor de Minimum TTL (TTL mínimo) para
el comportamiento de la caché correspondiente es cualquier otro valor, CloudFront procesa el
encabezado Vary tal y como se describe en Encabezados de respuesta HTTP que CloudFront elimina o
reemplaza (p. 317).

Cookies
Si habilita cookies para un comportamiento de la caché y si el origen devuelve las cookies con un objeto,
CloudFront almacena en la caché tanto el objeto como las cookies. Tenga en cuenta que este reduce

316
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa las respuestas
desde el servidor de origen personalizado

la capacidad de almacenamiento en caché para un objeto. Para obtener más información, consulte
Almacenamiento en caché de contenido en función de cookies (p. 277).

Conexiones TCP interrumpidas


Si la conexión TCP entre CloudFront y el origen se interrumpe al mismo tiempo que el origen devuelve
un objeto a CloudFront, el comportamiento de CloudFront depende de si el origen incluye un encabezado
Content-Length en la respuesta:

• Encabezado Content-Length: CloudFront devuelve el objeto al lector mientras lo obtiene del origen.
Sin embargo, si el valor del encabezado Content-Length no coincide con el tamaño del objeto,
CloudFront no lo almacena en caché.
• Transfer-Encoding: Chunked: CloudFront devuelve el objeto al lector mientras lo obtiene del origen. Sin
embargo, si la respuesta fragmentada no está completa, CloudFront no almacena el objeto en la caché.
• Encabezado No Content-Length: CloudFront devuelve el objeto al lector y lo almacena en la caché,
pero el objeto puede no estar completo. Sin un encabezado Content-Length, CloudFront no puede
determinar si la conexión TCP se interrumpió de forma accidental o intencionadamente.

Le recomendamos que configure su servidor HTTP para agregar un encabezado Content-Length y así
evitar que CloudFront almacene en caché objetos parciales.

Encabezados de respuesta HTTP que CloudFront elimina o


reemplaza
CloudFront elimina o actualiza los siguientes campos de encabezado antes de reenviar la respuesta desde
su origen al lector:

• Set-Cookie: si configura CloudFront para reenviar cookies, reenviará el campo del encabezado Set-
Cookie a los clientes. Para obtener más información, consulte Almacenamiento en caché de contenido
en función de cookies (p. 277).
• Trailer
• Transfer-Encoding: si el origen devuelve este campo de encabezado, CloudFront establece el valor
en chunked antes de devolver la respuesta al lector.
• Upgrade
• Vary: tenga en cuenta lo siguiente:
• Si configura CloudFront para reenviar cualquiera de los encabezados específicos del dispositivo al
origen (CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer, CloudFront-
Is-SmartTV-Viewer, CloudFront-Is-Tablet-Viewer) y configura su origen para devolver
Vary:User-Agent a CloudFront, CloudFront devuelve Vary:User-Agent al lector. Para obtener
más información, consulte Configuración del almacenamiento en caché en función del tipo de
dispositivo (p. 282).
• Si configura su origen para incluir bien Accept-Encoding o Cookie en el encabezado Vary,
CloudFront incluye los valores en la respuesta al lector.
• Si configura CloudFront para que reenvíe una lista blanca de encabezados al origen y, además,
configura el origen para devolver los nombres de encabezado a CloudFront en el encabezado Vary
(por ejemplo, Vary:Accept-Charset,Accept-Language), CloudFront devuelve el encabezado
Vary con ese valor al lector.
• Para obtener más información acerca de cómo CloudFront procesa un valor de * en el encabezado
Vary, consulte Negociación de contenido (p. 316).
• Si configura su origen para incluir cualquier otro valor en el encabezado Vary, CloudFront eliminará
dichos valores antes de devolver la respuesta al lector.
• Via: CloudFront establece el valor en lo siguiente en la respuesta al lector:

317
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa las respuestas
desde el servidor de origen personalizado

Via: versión-http cadena-alfanumérica.cloudfront.net (CloudFront)

Por ejemplo, si el cliente realiza una solicitud a través de HTTP/1.1, el valor es algo parecido a lo
siguiente:

Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

Tamaño máximo de archivo


El tamaño máximo de un cuerpo de respuesta que CloudFront devolverá al lector es de 20 GB. Eso incluye
respuestas transferidas en fragmentos que no especifican el valor de encabezado Content-Length.

Origen no disponible
Si el servidor de origen no está disponible y CloudFront obtiene una solicitud de un objeto que se
encuentra en la caché perimetral, pero que ha caducado (por ejemplo, porque el periodo especificado
en la política Cache-Control max-age ya ha transcurrido), CloudFront ofrece esa versión caducada
del objeto o una página de error personalizada. Para obtener más información sobre el comportamiento
de CloudFront cuando se han configurado páginas de error personalizadas, consulte Cómo CloudFront
procesa los errores cuando las páginas de error personalizadas están configuradas (p. 324).

En algunos casos, un objeto poco solicitado es desalojado y deja de estar disponible en la caché
perimetral. CloudFront no puede servir un objeto que haya sido desalojado.

Redireccionamientos
Si cambia la ubicación de un objeto en el servidor de origen, puede configurar su servidor web para
redirigir las solicitudes a la nueva ubicación. Después de configurar el redireccionamiento, la primera vez
que un lector envía una solicitud del objeto, CloudFront envía la solicitud al origen y el origen responde
con un redireccionamiento (por ejemplo, 302 Moved Temporarily). CloudFront almacena en caché el
redireccionamiento y lo devuelve al lector. CloudFront no sigue el redireccionamiento.

Puede configurar su servidor web para redirigir las solicitudes a una de las siguientes ubicaciones:

• La nueva URL del objeto en el servidor de origen. Cuando el lector sigue el redireccionamiento a la
nueva URL, el lector elude CloudFront y va directamente al origen. Por tal motivo, le recomendamos que
no redirija las solicitudes a la nueva URL del objeto en el origen.
• La nueva URL de CloudFront para el objeto. Cuando el lector envía la solicitud que contiene la nueva
URL de CloudFront, CloudFront obtiene el objeto de la nueva ubicación de su origen, lo almacena en
la caché de la ubicación de borde y lo devuelve al lector. Las solicitudes posteriores del objeto serán
atendidas por la ubicación de borde. Esto evita la latencia y carga asociadas a la solicitud del objeto al
origen por parte de los espectadores. Sin embargo, cada nueva solicitud del objeto implicará cargos por
concepto de dos solicitudes a CloudFront.

Codificación de transferencia
CloudFront admite únicamente el valor chunked del encabezado Transfer-Encoding. Si el origen
devuelve Transfer-Encoding: chunked, CloudFront devuelve el objeto al cliente tan pronto como lo
recibe la ubicación de borde y lo almacena en caché en formato fragmentado para solicitudes posteriores.

Si un lector envía una solicitud Range GET y el origen devuelve Transfer-Encoding: chunked,
CloudFront devuelve el objeto entero al lector en lugar del intervalo solicitado.

Le recomendamos utilizar codificación fragmentada si la longitud de su respuesta no puede ser


predeterminada. Para obtener más información, consulte Conexiones TCP interrumpidas (p. 317).

318
Amazon CloudFront Guía para desarrolladores
Comportamiento de solicitudes y
respuestas para grupos de origen

Comportamiento de solicitudes y respuestas para


grupos de origen
Las solicitudes a un grupo de orígenes funcionan igual que las solicitudes a un origen que no está
configurado como un grupo de orígenes, excepto cuando hay una conmutación por error de origen. Al igual
que con cualquier otro origen, cuando CloudFront recibe una solicitud y el contenido ya está almacenado
en caché en una ubicación de borde, el contenido se sirve a los lectores desde la caché. Cuando hay un
error de caché, las solicitudes de lector se reenvían al origen principal en el grupo de orígenes.

El comportamiento de solicitud y respuesta para el origen principal es igual que un origen que no es un
grupo de orígenes. Para obtener más información, consulte Comportamiento de solicitudes y respuestas
para orígenes de Amazon S3 (p. 298) y Comportamiento de solicitudes y respuestas para orígenes
personalizados (p. 305).

A continuación se describe el comportamiento de conmutación por error de origen cuando el origen


principal devuelve códigos de estado HTTP específicos:

• Código de estado HTTP 2xx (éxito): CloudFront almacena en caché el archivo y lo devuelve al lector.
• Código de estado HTTP 3xx (redirección): CloudFront devuelve el código de estado al lector.
• Código de estado HTTP 4xx o 5xx (error de cliente/servidor): si el código de estado devuelto se ha
configurado para la conmutación por error, CloudFront envía la misma solicitud al origen secundario del
grupo de orígenes.
• Código de estado HTTP 4xx o 5xx (error de cliente/servidor): si el código de estado devuelto no se ha
configurado para conmutación por error, CloudFront devuelve el error al lector.

CloudFront conmuta por error al origen secundario solo cuando el método HTTP de la solicitud del lector
es GET, HEAD u OPTIONS. CloudFront no realiza una conmutación por error cuando el lector envía un
método HTTP diferente (por ejemplo POST, PUT, etc.).

Cuando CloudFront envía una solicitud a un origen secundario, el comportamiento de respuesta es el


mismo que para un origen de CloudFront que no está en un grupo de orígenes.

Para obtener más información acerca de los grupos de orígenes, consulte Optimización de alta
disponibilidad con conmutación por error de origen de CloudFront (p. 263).

Agregar encabezados personalizados a solicitudes


de origen
Puede configurar CloudFront para agregar encabezados personalizados a las solicitudes que envía a su
origen. Estos encabezados personalizados le permiten enviar y recopilar información de su origen que no
obtiene con las solicitudes típicas del lector. Estos encabezados pueden incluso personalizarse para cada
origen. CloudFront admite encabezados personalizados tanto para orígenes personalizados como para
Amazon S3.

Temas
• Casos de uso de encabezados personalizados de origen (p. 320)
• Configurar CloudFront para agregar encabezados personalizados a solicitudes de origen (p. 320)
• Encabezados personalizados que CloudFront no puede agregar a solicitudes de origen (p. 321)
• Configuración de CloudFront para reenviar el encabezado Authorization (p. 321)

319
Amazon CloudFront Guía para desarrolladores
Casos de uso de encabezados personalizados de origen

Casos de uso de encabezados personalizados de


origen
Puede utilizar encabezados personalizados para distintas cosas, como las siguientes:

Identificación de solicitudes de CloudFront

Puede identificar las solicitudes que su origen recibe de CloudFront. Esto resulta útil si desea saber
si los usuarios están eludiendo CloudFront o si está utilizando más de una CDN y desea obtener
información acerca de qué solicitudes provienen de cada CDN.
Note

Si utiliza un origen de Amazon S3 y habilita el registro de acceso del servidor de Amazon S3,
los registros no incluyen información del encabezado.
Determinar qué solicitudes provienen de una distribución en concreto

Si configura más de una distribución de CloudFront para que utilice el mismo origen, puede agregar
distintos encabezados personalizados a cada distribución. A continuación, puede utilizar los registros
de su origen para determinar qué solicitudes provenían de cada distribución de CloudFront.
Habilitar el uso compartido de recursos entre orígenes (CORS)

Si algunos de sus lectores no admite el uso compartido de recursos entre orígenes (CORS), puede
configurar CloudFront para que agregue siempre el encabezado Origin a las solicitudes que envía
al origen. A continuación, puede configurar su origen para que devuelva el encabezado Access-
Control-Allow-Origin de cada solicitud. También debe configurar CloudFront para que respete la
configuración de CORS (p. 282).
Controlar el acceso al contenido

Puede utilizar encabezados personalizados para controlar el acceso al contenido. Al configurar el


origen para que responda a las solicitudes solo cuando incluyan un encabezado personalizado que
haya agregado CloudFront, evita que los usuarios eludan CloudFront y obtengan acceso al contenido
directamente en el origen. Para obtener más información, consulte Restricción del acceso a archivos
en orígenes personalizados (p. 165).

Configurar CloudFront para agregar encabezados


personalizados a solicitudes de origen
Para configurar una distribución para agregar encabezados personalizados a las solicitudes que envía al
origen, actualice la configuración de origen mediante uno de los métodos siguientes:

• Consola de CloudFront: al crear o actualizar una distribución, especifique los nombres y los valores
de encabezado en la opción Origin Custom Headers (Encabezados personalizados de origen).
Para obtener más información, consulte Creación de una distribución (p. 42) o Actualización de una
distribución (p. 71).
• API de CloudFront: para cada origen al que desee agregar encabezados personalizados, especifique los
nombres y valores del encabezado en el campo CustomHeaders dentro de Origin. Para obtener más
información, consulte CreateDistribution o UpdateDistribution.

Si los nombres y valores del encabezado que especifica ya no están presentes en la solicitud del lector,
CloudFront los agrega a la solicitud de origen. Si hay un encabezado, CloudFront sobrescribe el valor de
encabezado antes de reenviar la solicitud al origen.

320
Amazon CloudFront Guía para desarrolladores
Encabezados personalizados que CloudFront
no puede agregar a solicitudes de origen

Para ver las cuotas (antes denominadas límites) que se aplican a los encabezados personalizados de
origen, consulte Cuotas en encabezados personalizados (p. 522).

Encabezados personalizados que CloudFront no


puede agregar a solicitudes de origen
No puede configurar CloudFront para que agregue ninguno de los encabezados siguientes a las solicitudes
que envía a su origen:

• Cache-Control
• Connection
• Content-Length
• Cookie
• Host
• If-Match
• If-Modified-Since
• If-None-Match
• If-Range
• If-Unmodified-Since
• Max-Forwards
• Pragma
• Proxy-Authorization
• Proxy-Connection
• Range
• Request-Range
• TE
• Trailer
• Transfer-Encoding
• Upgrade
• Via
• Encabezados que comiencen por X-Amz-
• Encabezados que comiencen por X-Edge-
• X-Real-Ip

Configuración de CloudFront para reenviar el


encabezado Authorization
Cuando CloudFront reenvía una solicitud del lector a su origen, CloudFront elimina algunos encabezados
de lector de forma predeterminada, incluido el encabezado Authorization. Para asegurarse de que su
origen siempre recibe el encabezado Authorization en las solicitudes de origen, tiene las siguientes
opciones:

• Agregue el encabezado Authorization a la clave de caché mediante una política de caché. Todos
los encabezados de la clave de caché se incluyen automáticamente en las solicitudes de origen. Para
obtener más información, consulte Control de la clave de caché (p. 93).
• Utilice una política de solicitud de origen que reenvíe todos los encabezados del lector al origen.
No puede reenviar el encabezado Authorization individualmente en una política de solicitud de

321
Amazon CloudFront Guía para desarrolladores
Cómo se procesan los Range GET

origen, pero cuando reenvíe todos los encabezados del lector CloudFront incluye el encabezado
Authorization en las solicitudes de lector. CloudFront proporciona una política de solicitud de origen
administrada para este caso de uso, denominada Managed-AllViewer. Para obtener más información,
consulte Uso de las políticas de solicitud de origen administrada (p. 111).

Cómo CloudFront procesa las solicitudes parciales


de un objeto (rango GET).
En el caso de solicitudes de objetos grandes, es posible que los clientes o navegadores de usuarios finales
realicen varias solicitudes GET y utilicen el encabezado de solicitud Range para descargar el objeto en
unidades más pequeñas. Estas solicitudes de rangos de bytes, a veces conocidas como solicitudes Range
GET, mejoran la eficacia de las descargas parciales y la recuperación de transferencias que hayan fallado
parcialmente.

Cuando CloudFront recibe una solicitud Range GET, revisa la caché de la ubicación de borde que recibe
la solicitud. Si la caché de dicha ubicación de borde ya contiene todo el objeto o la parte solicitada,
CloudFront envía inmediatamente el intervalo solicitado desde la caché.

Si la caché no contiene el intervalo solicitado, CloudFront reenvía la solicitud al origen. (Para optimizar el
rendimiento, CloudFront puede solicitar un intervalo superior al solicitado en Range GET). Lo que ocurre a
continuación depende de si el origen admite solicitudes Range GET:

• Si el origen admite solicitudes Range GET: devuelve el intervalo solicitado. CloudFront sirve el intervalo
solicitado y lo almacena en la caché para futuras solicitudes. (Amazon S3 admite solicitudes Range GET
al igual que algunos servidores HTTP, por ejemplo, Apache y IIS. Para saber si su servidor HTTP admite
dichas solicitudes, consulte su documentación).
• Si el origen no admite solicitudes Range GET: devuelve todo el objeto. CloudFront sirve la solicitud
actual enviando todo el objeto almacenándolo también en caché para futuras solicitudes. Después de
que CloudFront almacene en caché todo el objeto en una caché perimetral, responde a las nuevas
solicitudes Range GET enviando el intervalo solicitado.

En cualquier caso, CloudFront comienza a enviar el intervalo o el objeto solicitado al usuario final en
cuanto llega el primer byte del origen.
Note

Si un lector envía una solicitud Range GET y el origen devuelve Transfer-Encoding:


chunked, CloudFront devuelve el objeto entero al lector en lugar del intervalo solicitado.

Por lo general, CloudFront sigue la especificación RFC en el encabezado Range. Sin embargo, si sus
encabezados Range no cumplen con los siguientes requisitos, CloudFront devuelve el código de estado
HTTP 200 con el objeto entero en lugar del código de estado 206 con los intervalos especificados:

• Los rangos deben publicarse en orden ascendente. Por ejemplo, 100-200,300-400 es válido;
300-400,100-200 no es válido.
• Los rangos no deben superponerse. Por ejemplo, 100-200,150-250 no es válido.
• Todas las especificaciones de los rangos deben ser válidas. Por ejemplo, no puede especificar valores
negativos como parte de un rango.

Para obtener más información acerca del encabezado de solicitud Range, consulte "Section 14.35
Range" en Hypertext Transfer Protocol -- HTTP/1.1, en http://www.w3.org/Protocols/rfc2616/rfc2616-
sec14.html#sec14.35.

322
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa los códigos
de estado HTTP 3xx desde el origen

Cómo CloudFront procesa los códigos de estado


HTTP 3xx desde el origen
Cuando CloudFront solicita un objeto desde su bucket de Amazon S3 o el servidor de origen
personalizado, su origen a veces devuelve un código de estado HTTP 3xx. Esto suele indicar una de las
siguientes posibilidades:

• La dirección URL del objeto ha cambiado (por ejemplo, códigos de estado 301, 302, 307 o 308)
• El objeto no ha cambiado desde la última vez que CloudFront lo solicitó (código de estado 304)

CloudFront almacena en caché las respuestas 3xx de acuerdo con la configuración de su distribución de
CloudFront y los encabezados de la respuesta. Para obtener más información, consulte Administración de
cuánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).

Si su origen devuelve un código de estado de redireccionamiento (por ejemplo, 301 o 307), CloudFront
no sigue el redireccionamiento. CloudFront pasa la respuesta 301 o 307 al lector, que puede seguir el
redireccionamiento enviando una nueva solicitud.

Cómo CloudFront procesa y almacena en caché los


códigos de estado HTTP 4xx y 5xx desde el origen
Temas
• Cómo CloudFront procesa los errores cuando las páginas de error personalizadas están
configuradas (p. 324)
• Cómo CloudFront procesa los errores cuando las páginas de error personalizadas no están
configuradas (p. 325)
• Códigos de estado HTTP 4xx y 5xx que CloudFront almacena en caché (p. 327)

Cuando CloudFront solicita un objeto desde su bucket de Amazon S3 o un servidor de origen


personalizado, el origen a veces devuelve un código de estado HTTP 4xx o 5xx, que indica que se ha
producido 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.
• Para algunos códigos de estado 4xx, si el origen devuelve un encabezado Cache-Control s-maxage
o Cache-Control max-age.

CloudFront siempre almacena en caché las respuestas a las solicitudes GET y HEAD. También puede
configurar CloudFront para almacenar en caché las respuestas a solicitudes OPTIONS. CloudFront no
almacena en caché las respuestas a las solicitudes que utilizan los otros métodos.

Si el origen no responde, la solicitud de CloudFront al origen agota el tiempo de espera, lo que se


considera un error HTTP 5xx del origen, aunque el origen no haya respondido con ese error. En ese caso,

323
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa los errores cuando las
páginas de error personalizadas están configuradas

CloudFront sigue ofreciendo contenido almacenado en caché. Para obtener más información, consulte
Origen no disponible (p. 318).

Si ha activado el registro, CloudFront escribe los resultados en registros independientemente del código de
estado HTTP.

Para obtener más información acerca de las características y las opciones relacionadas con el mensaje de
error devuelto por CloudFront, consulte lo siguiente:

• Para obtener más información acerca de la configuración de páginas de error personalizadas desde
la consola de CloudFront, consulte Páginas de error personalizadas y almacenamiento de errores en
caché (p. 67).
• Para obtener información acerca del TTL mínimo de almacenamiento de errores en la caché
desde la consola de CloudFront, consulte TTL mínimo de almacenamiento de errores en caché
(segundos) (p. 68).
• Para obtener una lista de los códigos de estado HTTP que CloudFront almacena en caché, consulte
Códigos de estado HTTP 4xx y 5xx que CloudFront almacena en caché (p. 327).

Cómo CloudFront procesa los errores cuando las


páginas de error personalizadas están configuradas
Si ha configurado páginas de error personalizadas, el comportamiento de CloudFront dependerá de si el
objeto solicitado está o no en la caché perimetral.

El objeto solicitado no está en la caché perimetral


CloudFront continúa intentando obtener el objeto solicitado de su origen si se cumplen todas las
condiciones que se indican 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 y se cumple alguna de las condiciones
siguientes:
• Su origen devuelve un código de estado HTTP 5xx en lugar de devolver un código 304 (No
modificado) o una versión actualizada del objeto.
• Su origen devuelve un código de estado HTTP 4xx que no está restringido por un encabezado de
control de la caché y está incluido en la siguiente lista de códigos de estado: Códigos de estado HTTP
4xx y 5xx que CloudFront siempre almacena en caché (p. 327).
• Su origen devuelve un código de estado HTTP 4xx sin un encabezado Cache-Control max-age o
un encabezado Cache-Control s-maxage y el código de estado está incluido en la siguiente lista
de códigos de estado: Control Códigos de estado HTTP 4xx que CloudFront almacena en caché en
función de los encabezados de control de caché (p. 327).

CloudFront hace lo siguiente:

1. En la caché perimetral de CloudFront que recibió la solicitud del lector, CloudFront comprueba la
configuración de la distribución y obtiene la ruta de la página de error personalizada que corresponde al
código de estado devuelto por su origen.
2. CloudFront comprueba el primer comportamiento de la caché de la distribución que tenga un patrón de
ruta que coincida con la ruta de la página de error personalizada.
3. La ubicación de borde de CloudFront envía una solicitud de la página de error personalizada al origen
especificado en el comportamiento de la caché.

324
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa los errores cuando las
páginas de error personalizadas no están configuradas

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 lector que ha realizado la solicitud y almacena
en caché dicha página durante el tiempo máximo siguiente:
• La cantidad de tiempo especificado por el TTL mínimo de almacenamiento en caché de errores (10
segundos de forma predeterminada)
• El periodo de tiempo especificado por un encabezado Cache-Control max-age o un encabezado
Cache-Control s-maxage que devuelve el origen cuando la primera solicitud generó el error
6. Una vez transcurrido el tiempo de almacenamiento en caché (determinado en el paso 5), CloudFront
intenta de nuevo obtener el objeto solicitado reenviando otra solicitud a su origen. CloudFront continúa
intentándolo a intervalos especificados por el TTL mínimo de almacenamiento de errores en caché.

El objeto solicitado está en la caché perimetral


CloudFront continúa sirviendo el objeto que se encuentra en ese momento en la caché perimetral si se
cumplen todas las condiciones que se indican a continuación:

• Un espectador solicita un objeto.


• El objeto se encuentra en la memoria caché de borde, 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 sirve el objeto a pesar de que haya
caducado. Durante el TTL mínimo de almacenamiento de errores en caché, CloudFront continúa
respondiendo a las solicitudes de los lectores ofreciendo el objeto de la caché perimetral.

Si el origen devuelve un código de estado 4xx, CloudFront devuelve el código de estado al lector en
lugar del objeto solicitado.
2. Una vez finalizado el TTL mínimo de almacenamiento de errores en caché, CloudFront intenta obtener
el objeto solicitado una vez más reenviando otra solicitud al origen. Tenga en cuenta que si el objeto no
se solicita con frecuencia, CloudFront podría desalojarlo de la caché perimetral mientras el servidor de
origen sigue devolviendo respuestas 5xx. Para obtener más información acerca de por cuánto tiempo
pueden permanecer los objetos en las cachés perimetrales de CloudFront, consulte Administración de
cuánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).

Cómo CloudFront procesa los errores cuando


las páginas de error personalizadas no están
configuradas
Si no ha configurado páginas de error personalizadas, el comportamiento de CloudFront dependerá de si
el objeto solicitado está o no en la caché perimetral.

El objeto solicitado no está en la caché perimetral


CloudFront continúa intentando obtener el objeto solicitado de su origen si se cumplen todas las
condiciones que se indican a continuación:

• Un espectador solicita un objeto.


• El objeto no está en la caché perimetral.

325
Amazon CloudFront Guía para desarrolladores
Cómo CloudFront procesa los errores cuando las
páginas de error personalizadas no están configuradas

• Su origen devuelve un código de estado HTTP 4xx o 5xx y se cumple alguna de las condiciones
siguientes:
• Su origen devuelve un código de estado HTTP 5xx en lugar de devolver un código 304 (No
modificado) o una versión actualizada del objeto.
• Su origen devuelve un código de estado HTTP 4xx que no está restringido por un encabezado de
control de la caché y está incluido en la siguiente lista de códigos de estado: Códigos de estado HTTP
4xx y 5xx que CloudFront siempre almacena en caché (p. 327)
• Su origen devuelve un código de estado HTTP 4xx sin un encabezado Cache-Control max-age o
un encabezado Cache-Control s-maxage y el código de estado está incluido en la siguiente lista
de códigos de estado: Control Códigos de estado HTTP 4xx que CloudFront almacena en caché en
función de los encabezados de control de caché (p. 327).

CloudFront hace lo siguiente:

1. CloudFront devuelve un código de estado 4xx o 5xx al lector y también almacena el código de estado en
la caché perimetral que recibió la solicitud durante el tiempo máximo siguiente:
• La cantidad de tiempo especificado por el TTL mínimo de almacenamiento en caché de errores (10
segundos de forma predeterminada)
• El periodo de tiempo especificado por un encabezado Cache-Control max-age o un encabezado
Cache-Control s-maxage que devuelve el origen cuando la primera solicitud generó el error
2. Para la duración del tiempo de almacenamiento en caché (determinado en el paso 1), CloudFront
responde a las solicitudes de los lectores posteriores del mismo objeto con el código de estado
almacenado en caché 4xx o 5xx.
3. Una vez transcurrido el tiempo de almacenamiento en caché (determinado en el paso 1), CloudFront
intenta de nuevo obtener el objeto solicitado reenviando otra solicitud a su origen. CloudFront continúa
intentándolo a intervalos especificados por el TTL mínimo de almacenamiento de errores en caché.

El objeto solicitado está en la caché perimetral


CloudFront continúa sirviendo el objeto que se encuentra en ese momento en la caché perimetral si se
cumplen todas las condiciones que se indican a continuación:

• Un espectador solicita un objeto.


• El objeto se encuentra en la memoria caché de borde, 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 sirve el objeto a pesar de que haya caducado.
Durante la vigencia del TTL mínimo de almacenamiento en caché de errores (10 segundos de forma
predeterminada), CloudFront continúa respondiendo a las solicitudes de los lectores sirviendo el objeto
de la caché perimetral.

Si el origen devuelve un código de estado 4xx, CloudFront devuelve el código de estado al lector en
lugar del objeto solicitado.
2. Una vez finalizado el TTL mínimo de almacenamiento de errores en caché, CloudFront intenta obtener
el objeto solicitado una vez más reenviando otra solicitud al origen. Tenga en cuenta que si el objeto no
se solicita con frecuencia, CloudFront podría desalojarlo de la caché perimetral mientras el servidor de
origen sigue devolviendo respuestas 5xx. Para obtener más información acerca de por cuánto tiempo
pueden permanecer los objetos en las cachés perimetrales de CloudFront, consulte Administración de
cuánto tiempo se mantiene el contenido en una caché (vencimiento) (p. 268).

326
Amazon CloudFront Guía para desarrolladores
Códigos de estado HTTP 4xx y 5xx
que CloudFront almacena en caché

Códigos de estado HTTP 4xx y 5xx que CloudFront


almacena en caché
CloudFront almacena en caché códigos de estado HTTP 4xx y 5xx devueltos por su origen, en función del
código de estado específico que se devuelve y de si el origen devuelve encabezados específicos en la
respuesta.

Códigos de estado HTTP 4xx y 5xx que CloudFront siempre


almacena en caché
CloudFront siempre almacena en caché los siguientes códigos de estado HTTP 4xx y 5xx devueltos por el
origen. Si ha configurado una página de error personalizada para un código de estado HTTP, CloudFront la
almacena en caché.

404 no encontrado

405 método no permitido

414 URI de solicitud demasiado grande

500 Internal Server Error

501 No implementado

502 Puerta de enlace incorrecta

503 Servicio no disponible

504 Tiempo de espera de puerta de enlace agotado

Códigos de estado HTTP 4xx que CloudFront almacena en caché


en función de los encabezados de control de caché
CloudFront solo almacena en caché los siguientes códigos de estado HTTP 4xx devueltos por el origen
si el origen devuelve un encabezado Cache-Control max-age o Cache-Control s-maxage. Si ha
configurado una página de error personalizada para uno de estos códigos de estado HTTP, y el origen
devuelve uno de los encabezados de control de la caché, CloudFront la almacena en caché.

400 solicitud errónea

403 Prohibido

412 Condición previa con error

415 Tipo de medio incompatible

327
Amazon CloudFront Guía para desarrolladores
Acerca del vídeo en streaming: vídeo
bajo demanda y streaming en directo

Vídeo bajo demanda y streaming de


vídeo en directo con CloudFront
Puede utilizar CloudFront para distribuir vídeo bajo demanda (VOD) o streaming de vídeo en directo con
cualquier origen HTTP. Una manera de configurar flujos de trabajo de vídeo en la nube consiste en utilizar
CloudFront junto con AWS Media Services.

Temas
• Acerca del vídeo en streaming: vídeo bajo demanda y streaming en directo (p. 328)
• Distribución de vídeo bajo demanda (VOD) con CloudFront (p. 329)
• Distribución de streaming de vídeo en directo con CloudFront y AWS Media Services (p. 331)

Acerca del vídeo en streaming: vídeo bajo demanda


y streaming en directo
Debe utilizar un codificador para empaquetar el contenido de vídeo para que CloudFront pueda distribuirlo.
El proceso de empaquetado crea segmentos que contienen el contenido de audio, vídeo y subtítulos.
También genera archivos de manifiesto, que describen en un orden específico qué segmentos hay que
reproducir y cuándo. Los formatos comunes de los paquetes son MPEG DASH, HLS de Apple, Microsoft
Smooth Streaming y CMAF.

Transmisión en streaming de vídeo bajo demanda (VOD)

En el streaming de vídeo bajo demanda (VOD), el contenido de vídeo se almacena en un servidor y


los espectadores pueden verlo en cualquier momento. Para crear un activo que los lectores puedan
transmitir en streaming, utilice un codificador, como AWS Elemental MediaConvert, con el fin de
formatear y empaquetar los archivos multimedia.

Un vez que el vídeo esté empaquetado en los formatos adecuados, puede almacenarlo en un servidor
o en un bucket de Amazon S3 y, a continuación, distribuirlo con CloudFront a medida que lo soliciten
los lectores.
Streaming de vídeo en directo

Para la transmisión en streaming de vídeo en directo, el contenido de vídeo se transmite en


tiempo real a medida que ocurren los eventos en directo, o bien se configura como un canal en
vivo ininterrumpido (24 horas al día, 7 días a la semana). Para crear salidas en directo para su
retransmisión y para su transmisión en streaming, utilice un codificador como AWS Elemental
MediaLive para comprimir el vídeo y formatearlo para los dispositivos de visualización.

Una vez codificado el vídeo, puede almacenarlo en AWS Elemental MediaStore o convertirlo en
diferentes formatos de entrega mediante AWS Elemental MediaPackage. Con estos orígenes, puede
configurar una distribución de CloudFront para distribuir el contenido. Si desea conocer los pasos
específicos y obtener orientación para crear distribuciones que funcionen con estos servicios, consulte
Distribución de vídeo con AWS Elemental MediaStore como origen (p. 331) y Servir vídeo en directo
formateado con AWS Elemental MediaPackage (p. 333).

328
Amazon CloudFront Guía para desarrolladores
Distribución de vídeo bajo demanda

Wowza y Unified Streaming también proporcionan herramientas que puede utilizar para transmitir vídeo en
streaming con CloudFront. Para obtener más información acerca de cómo utilizar Wowza con CloudFront,
consulte el artículo sobre cómo llevar su licencia de Wowza Streaming Engine a streaming HTTP en
directo con CloudFront en el sitio web de documentación de Wowza. Para obtener información sobre el
uso de Unified Streaming con CloudFront para la transmisión en streaming de VOD, consulte Amazon
CloudFront en el sitio web de documentación de Unified Streaming.

Distribución de vídeo bajo demanda (VOD) con


CloudFront
Para distribuir en streaming vídeo bajo demanda (VOD) con CloudFront, utilice los siguientes servicios:

• Amazon S3 para almacenar el contenido en su formato original y para almacenar el vídeo


transcodificado.
• Un codificador (como AWS Elemental MediaConvert) para transcodificar el vídeo en formatos de
streaming.
• CloudFront para distribuir el vídeo transcodificado a los lectores. Para Microsoft Smooth Streaming,
consulte Configuración de vídeo bajo demanda para Microsoft Smooth Streaming (p. 329).

Para crear una solución VOD con CloudFront

1. Cargue su contenido a un bucket de Amazon S3. Para obtener más información sobre cómo trabajar
con Amazon S3, consulte la Guía para desarrolladores de Amazon Simple Storage Service.
2. Transcodifique su contenido mediante un trabajo de MediaConvert. El trabajo convierte el vídeo a
los formatos requeridos por los reproductores que utilizan los espectadores. También puede utilizar
el trabajo para crear recursos con diferentes resoluciones y velocidades de bits. Estos activos se
utilizan para la transmisión en streaming a velocidad de bits adaptable (ABR), que ajusta la calidad de
visualización en función del ancho de banda disponible del lector. MediaConvert almacena el vídeo
transcodificado en un bucket de S3.
3. Distribuya su contenido convertido mediante una distribución de CloudFront. Los espectadores
pueden ver el contenido en cualquier dispositivo y en cualquier momento.

Tip

Puede explorar cómo utilizar una plantilla de AWS CloudFormation para implementar una
solución de AWS de VOD junto con todos los componentes asociados. Para ver los pasos que se
requieren para utilizar la plantilla, consulte Implementación automatizada en la guía sobre vídeo
bajo demanda en AWS.

Configuración de vídeo bajo demanda para Microsoft


Smooth Streaming
Dispone de las siguientes opciones para usar CloudFront con el fin de distribuir contenido de vídeo bajo
demanda (VOD) que ha transcodificado al formato Microsoft Smooth Streaming:

• Especifique un servidor web que ejecute Microsoft IIS y sea compatible con Smooth Streaming como
origen de la distribución.
• Habilite Smooth Streaming en los comportamientos de la caché de una distribución de CloudFront.
Debido a que puede utilizar varios comportamientos de la caché en una distribución, puede utilizar una
distribución para archivos multimedia de Smooth Streaming y también para otros contenidos.

329
Amazon CloudFront Guía para desarrolladores
Configuración de vídeo bajo demanda
para Microsoft Smooth Streaming

Important

Si especifica un servidor web que ejecuta Microsoft IIS como origen, no habilite Smooth Streaming
en los comportamientos de caché de la distribución de CloudFront. CloudFront no puede usar
un servidor Microsoft IIS como origen si habilita Smooth Streaming como comportamiento de la
caché.

Si habilita Smooth Streaming en un comportamiento de la caché (es decir, no tiene un servidor que ejecute
Microsoft IIS), tenga en cuenta lo siguiente:

• Podrá seguir distribuyendo otro contenido mediante el mismo comportamiento de la caché si el


contenido coincide con el valor de Path Pattern (Patrón de ruta) del comportamiento.
• CloudFront puede utilizar un bucket de Amazon S3 o un origen personalizado para los archivos
multimedia de Smooth Streaming. CloudFront no puede utilizar un servidor Microsoft IIS como origen si
habilita Smooth Streaming para el comportamiento de la caché.
• No puede invalidar archivos multimedia en formato Smooth Streaming. Si desea actualizar los archivos
antes de que caduquen, debe cambiarles el nombre. Para obtener más información, consulte Agregar,
eliminar o sustituir contenido que distribuye CloudFront (p. 115).

Para obtener más información acerca de los clientes de Smooth Streaming, consulte Smooth Streaming en
el sitio web de documentación de Microsoft.

Para utilizar CloudFront con el fin de distribuir archivos de Smooth Streaming cuando el origen no
es un servidor web de Microsoft IIS

1. Transcodifique los archivos multimedia en formato MP4 fragmentado de Smooth Streaming.


2. Aplique alguna de las siguientes acciones:

• Si está utilizando la consola de CloudFront: al crear o actualizar una distribución, habilite Smooth
Streaming en uno o varios de los comportamientos de la caché de la distribución.
• Si está utilizando la API de CloudFront: agregue el elemento SmoothStreaming al tipo complejo
DistributionConfig para uno o más de los comportamientos de la caché de la distribución.
3. Cargue los archivos de Smooth Streaming en su origen.
4. Cree un archivo clientaccesspolicy.xml o crossdomainpolicy.xml y añádalo
a una ubicación accesible en la raíz de su distribución, por ejemplo, https://
d111111abcdef8.cloudfront.net/clientaccesspolicy.xml. A continuación se muestra un
ejemplo de política:

<?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"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>

Para obtener más información, consulte la sección sobre cómo hacer que un servicio esté disponible
en los límites del dominio en el sitio web de Microsoft Developer Network.
5. Para los enlaces de la aplicación (por ejemplo, un reproductor multimedia), especifique la dirección
URL del archivo multimedia en el formato siguiente:

330
Amazon CloudFront Guía para desarrolladores
Distribución de streaming de video en directo

https://d111111abcdef8.cloudfront.net/video/presentation.ism/Manifest

Distribución de streaming de vídeo en directo con


CloudFront y AWS Media Services
Si desea utilizar AWS Media Services con CloudFront para distribuir contenido en directo a un público
global, siga las indicaciones de esta sección.

Utilice AWS Elemental MediaLive para codificar transmisiones de vídeo en directo en tiempo real. Para
codificar una transmisión en streaming de vídeo de gran tamaño, MediaLive la comprime en versiones más
pequeñas (la codifica) que se pueden distribuir a los lectores.

Después de comprimir una transmisión en streaming de vídeo en directo, puede utilizar cualquiera de las
dos opciones principales siguientes para preparar y distribuir el contenido:

• Convierta el contenido a los formatos requeridos y, a continuación, distribúyalo: si necesita contenido


en varios formatos, use AWS Elemental MediaPackage para empaquetar el contenido para diferentes
tipos de dispositivos. Al empaquetar el contenido, también puede implementar funciones adicionales
y añadir la administración de derechos digitales (DRM) para evitar el uso no autorizado del contenido.
Para obtener instrucciones paso a paso sobre el uso de CloudFront para servir contenido formateado
por MediaPackage formateó, consulte Servir vídeo en directo formateado con AWS Elemental
MediaPackage (p. 333).
• Almacene y distribuya su contenido mediante un origen escalable: si MediaLive ha codificado el
contenido en los formatos requeridos por todos los dispositivos que utilizan los lectores, utilice un
origen altamente escalable, como AWS Elemental MediaStore, para distribuir el contenido. Para
obtener instrucciones paso a paso sobre el uso de CloudFront para servir contenido almacenado en
un contenedor de MediaStore, consulte Distribución de vídeo con AWS Elemental MediaStore como
origen (p. 331).

Una vez que haya configurado el origen mediante una de estas opciones, ya puede distribuir streaming de
vídeo en directo a los lectores con CloudFront.
Tip

Puede obtener información sobre una solución de AWS que implementa automáticamente
servicios para crear una experiencia de visualización en tiempo real de alta disponibilidad. Si
desea ver los pasos para implementar automáticamente esta solución, consulte Implementación
automatizada de streaming en directo.

Temas
• Distribución de vídeo con AWS Elemental MediaStore como origen (p. 331)
• Servir vídeo en directo formateado con AWS Elemental MediaPackage (p. 333)

Distribución de vídeo con AWS Elemental MediaStore


como origen
Si tiene vídeo almacenado en un contenedor de AWS Elemental MediaStore, puede crear una distribución
de CloudFront para servir el contenido.

Para empezar, conceda a CloudFront acceso a su contenedor de MediaStore. A continuación, cree una
distribución de CloudFront y configúrela para que funcione con MediaStore.

331
Amazon CloudFront Guía para desarrolladores
Distribución de vídeo con AWS
Elemental MediaStore como origen

Para servir contenido desde un contenedor de AWS Elemental MediaStore

1. Siga el procedimiento que se describe en Cómo permitir que Amazon CloudFront obtenga acceso a
un contenedor de AWS Elemental MediaStore, y, a continuación, vuelva a estos pasos para crear su
distribución.
2. Cree una distribución con la siguiente configuración:

Nombre de dominio de origen

El punto de enlace de datos que se ha asignado al contenedor de MediaStore. En la lista


desplegable, elija el contenedor de MediaStore del vídeo en directo. El formato de un origen de
MediaStore es Container-OriginEndpointURL. Por ejemplo, mymediastore.data.mediastore.us-
east-1.amazonaws.com. Para obtener más información, consulte Nombre de dominio de
origen (p. 46).
Ruta de origen

La estructura de carpetas en el contenedor de MediaStore donde se almacenan sus objetos. Para


obtener más información, consulte Ruta de origen (p. 47).
Encabezados personalizados de origen

Agregue nombres de encabezado y valores si desea que CloudFront incluya encabezados


personalizados cuando reenvía solicitudes a su origen.
Viewer Protocol Policy

Elija Redirect HTTP to HTTPS (Redireccionamiento de HTTP a HTTPS). Para obtener más
información, consulte Viewer Protocol Policy (p. 55).
Almacenamiento de objetos en caché

Si el codificador que utiliza no puede establecer controles de caché en todos los objetos, elija
Customize (Personalizar). Si el codificador puede establecer controles de caché en todos los
objetos, elija Origin Cache Headers (Encabezados de caché de origen).
Tiempo de vida mínimo, tiempo de vida máximo y tiempo de vida predeterminado

Establézcalo según corresponda a sus necesidades de almacenamiento en caché y duraciones


de 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 requisitos
técnicos o de las necesidades de su empresa. Para ver una lista de todas las opciones de las
distribuciones e información sobre su configuración, consulte Valores que deben especificarse al crear
o actualizar una distribución (p. 43).
3. Una vez que CloudFront haya aprovisionado la distribución, edite el comportamiento de la caché para
configurar el intercambio de recursos entre orígenes (CORS) para su origen:

1. Seleccione la distribución y, a continuación, elija Distribution Settings (Configuración de


distribución).
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 (Encabezados
de lista blanca), seleccione Origin (Origen).

332
Amazon CloudFront Guía para desarrolladores
Servir vídeo en directo formateado
con AWS Elemental MediaPackage

Para obtener más información acerca de CORS, consulte Configurar CloudFront para respetar la
configuración de intercambio de recursos entre orígenes (CORS) en Almacenamiento en caché de
contenido en función de encabezados de solicitud (p. 280).
4. Para los enlaces de su aplicación (por ejemplo, un reproductor multimedia), especifique el nombre del
archivo multimedia en el mismo formato que utiliza para otros objetos que distribuye con CloudFront.

Servir vídeo en directo formateado con AWS


Elemental MediaPackage
Si formateó una transmisión en directo mediante AWS Elemental MediaPackage, puede crear una
distribución de CloudFront y configurar comportamientos de la caché para que sirvan la transmisión en
directo. En el siguiente proceso, se presupone que ya ha creado un canal y que ha agregado puntos de
enlace para el vídeo en directo mediante MediaPackage.
Note
En lugar de utilizar el siguiente proceso, si lo desea puede crear automáticamente una distribución
de CloudFront al guardar un canal en MediaPackage. Para obtener más información, consulte
Creación de una distribución desde AWS Elemental MediaPackage en la Guía del usuario de
AWS Elemental MediaPackage.

Para crear una distribución de CloudFront para MediaPackage manualmente, siga estos pasos:

Pasos
• Paso 1: Cree y configure una distribución de CloudFront (p. 333)
• Paso 2: Añadir los demás puntos de enlace como orígenes (p. 334)
• Paso 3: Configurar los comportamientos de la caché para todos los puntos de enlace (p. 334)
• Paso 4: Utilice CloudFront para servir el canal de transmisión en directo (p. 336)

Paso 1: Cree y configure una distribución de CloudFront


Realice el procedimiento siguiente para configurar una distribución de CloudFront para el canal de vídeo en
directo que ha creado con MediaPackage.

Para crear una distribución 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 for your content, 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

El origen donde están el canal de vídeo en directo y los puntos de enlace de MediaPackage. Elija
el campo de texto y, a continuación, en la lista desplegable, elija el canal de MediaPackage para
su vídeo en directo. Puede mapear un canal a varios puntos de enlace de origen.

Si ha creado el canal con otra cuenta de AWS, escriba el valor de la URL de origen en el campo.
El origen debe ser una URL HTTPS.

Para obtener más información, consulte Nombre de dominio de origen (p. 46) en la Valores que
deben especificarse al crear o actualizar una distribución (p. 43).

333
Amazon CloudFront Guía para desarrolladores
Servir vídeo en directo formateado
con AWS Elemental MediaPackage

Ruta de origen

Ruta de acceso al punto de enlace de MediaPackage desde el que se distribuye el contenido.


Cuando se elige un nombre de dominio de origen, CloudFront rellena la ruta de origen.

Si ha usado un canal de otra cuenta de AWS en Origin Domain Name (Nombre de dominio de
origen), el campo Origin Path (Ruta de origen) no se rellenará automáticamente. Debe obtener la
ruta de origen correcta de la otra cuenta para poder introducirla manualmente.

Para obtener más información sobre el funcionamiento de una ruta de origen, consulte Ruta de
origen (p. 47) en Valores que deben especificarse al crear o actualizar una distribución (p. 43).

Para el resto de la configuración de la distribución, establezca valores específicos en función de otros


requisitos técnicos o de las necesidades de su empresa. Para ver una lista de todas las opciones de
las distribuciones e información sobre su configuración, consulte Valores que deben especificarse al
crear o actualizar una distribución (p. 43).

Cuando termine de elegir la otra configuración de distribución, elija Create Distribution (Crear
distribución).
5. Elija la distribución que acaba de crear y, a continuación, elija la pestaña Behaviors
(Comportamientos).
6. Elija el comportamiento de la caché predeterminado y especifique la configuración correcta del
comportamiento de la caché para el canal que eligió para el origen. Más adelante, añadirá uno o
varios orígenes adicionales y editará la configuración de comportamiento de la caché para ellos.
7. Vaya a la página Distribuciones de CloudFront.
8. Espere hasta que el valor de la columna Status (Estado) de la distribución cambie de In Progress (En
curso) a Deployed (Implementado), lo que indicará que CloudFront ha creado la distribución.

Paso 2: Añadir los demás puntos de enlace como orígenes


Repita los pasos indicados para agregar cada uno de los puntos de enlace de sus canales de
MediaPackage a la distribución.

Para añadir otros puntos de enlace como orígenes

1. En la consola de CloudFront, elija la distribución que creó para su canal.


2. Seleccione la pestaña Origins and Origin Groups (Orígenes y grupos de orígenes) y, a continuación,
seleccione 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 MediaPackage para el canal. CloudFront rellena automáticamente el campo Origin Path
(Ruta de origen).
4. Para el resto de la configuración, establezca los valores en función de otros requisitos técnicos
o de las necesidades de su empresa. Para obtener más información, consulte Configuración del
origen (p. 45) en Valores que deben especificarse al crear o actualizar una distribución (p. 43).
5. Seleccione Create.

Paso 3: Configurar los comportamientos de la caché para todos


los puntos de enlace
Es necesario configurar los comportamientos de la caché de cada punto de enlace para añadir patrones
de ruta que dirijan correctamente las solicitudes. Los patrones de ruta que especifique dependerán del

334
Amazon CloudFront Guía para desarrolladores
Servir vídeo en directo formateado
con AWS Elemental MediaPackage

formato de video que distribuya. El siguiente procedimiento incluye la información del patrón de ruta que se
utilizará para los formatos Apple HLS, CMAF, DASH y Microsoft Smooth Streaming.

Normalmente, se configuran dos comportamientos de la caché para cada punto de enlace:

• El manifiesto principal, que es el índice de los archivos.


• Los segmentos, que son los archivos del 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 creó para su canal.


2. Seleccione la pestaña Behaviors (Comportamientos) y, a continuación, elija Create Behavior (Crear
comportamiento).
3. En la sección Cache Behavior Settings (Configuración de comportamientos de la caché) rellene Path
Pattern (Patrón de ruta) con el primer patrón indicado en las siguientes instrucciones para cada tipo
de punto de enlace. Por ejemplo, en el caso de un punto de enlace DASH, debería escribir *.mpd en
Path Pattern (Patrón de ruta).

Patrones de ruta

Para un punto de enlace HLS, cree los dos siguientes comportamientos de la caché:
• Para manifiestos principales y secundarios, use *.m3u8.
• Para los segmentos de contenido, use *.ts.

Para un punto de enlace CMAF, cree los dos siguientes comportamientos de la caché:
• Para manifiestos principales y secundarios, use *.m3u8.
• Para los segmentos de contenido, use *.mp4.

Para un punto de enlace DASH, cree los dos siguientes comportamientos de la caché:
• Para el manifiesto principal, use *.mpd.
• Para los segmentos de contenido, use *.mp4.

En el caso de un punto de enlace de Microsoft Smooth Streaming, solo se distribuye un


manifiesto, por lo que solo debe crear un comportamiento de la caché: index.ism/*.
4. Para cada comportamiento de la caché, especifique las siguientes opciones:

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

Para obtener más información sobre cómo mejorar el almacenamiento en caché, consulte
Incrementar la proporción de solicitudes que se atienden directamente desde las cachés de
CloudFront (tasa de aciertos de caché) (p. 252).
Almacenamiento de objetos en caché

MediaPackage establece encabezados Cache-Control predeterminados que 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, puede aumentar los tiempos
de caché para los segmentos de video. Para obtener más información sobre cómo personalizar
el tiempo que los objetos permanecen en la caché de CloudFront, consulte Almacenamiento
de objetos en caché (p. 57) en la Valores que deben especificarse al crear o actualizar una
distribución (p. 43).
335
Amazon CloudFront Guía para desarrolladores
Servir vídeo en directo formateado
con AWS Elemental MediaPackage

Tiempo de vida mínimo

Establézcalo en 5 segundos o menos, para ayudar a evitar la distribución de contenido obsoleto.


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 la
lista blanca).
Lista blanca de cadenas de consulta

Especifique m como parámetro de cadena de consulta que desea que CloudFront utilice como
base para el almacenamiento en caché. La respuesta de MediaPackage siempre incluye la
etiqueta ?m=### para capturar la hora de modificación del punto de enlace. Si el contenido ya se
encuentra en la memoria caché con un valor diferente para esta etiqueta, CloudFront solicita un
nuevo manifiesto en lugar de distribuir la versión en caché.

Si utiliza la funcionalidad de visualización en diferido de MediaPackage, especifique start y end


como parámetros adicionales de la cadena de consulta en el comportamiento 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 solicitado en la solicitud de manifiesto. Para
obtener más información sobre la visualización en diferido y có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.

Si está utilizando la característica de filtrado de manifiestos de MediaPackage, especifique


aws.manifestfilter como parámetro adicional de cadena de consulta en el comportamiento
de la caché para las solicitudes de manifiesto (*.m3u8, *.mpd e index.ism/*). Esto configura
la distribución para reenviar la cadena de consulta aws.manifestfilter a su origen de
MediaPackage, lo que es necesario para que funcione la característica de filtrado de manifiestos.
Para obtener más información, consulte Filtrado de manifiestos en la Guía del usuario de AWS
Elemental MediaPackage.
5. Seleccione Create (Crear).
6. Si el punto de enlace no es un punto de enlace de Microsoft Smooth Streaming, elija Create Behavior
(Crear comportamiento) y, a continuación, repita estos pasos para crear un segundo comportamiento
de la caché.

Paso 4: Utilice CloudFront para servir el canal de transmisión en


directo
Después de crear la distribución, agregar los orígenes y crear los comportamientos de la caché, puede
distribuir el canal de transmisión en directo mediante CloudFront. CloudFront enruta las solicitudes de los
lectores a los puntos de enlace correctos de MediaPackage en función de los ajustes configurados para los
comportamientos de la caché.

Para los enlaces de la aplicación (por ejemplo, un reproductor multimedia), especifique la dirección URL
del archivo multimedia en el formato estándar de las URL de CloudFront. Para obtener más información,
consulte Personalización del formato de URL para archivos en CloudFront (p. 117).

336
Amazon CloudFront Guía para desarrolladores

Personalización en el borde con


Lambda@Edge
Lambda@Edge es una extensión de AWS Lambda, un servicio informático que le permite ejecutar
funciones que personalizan el contenido que entrega CloudFront. Puede crear funciones de Node.js o
Python en una región, EE. UU. Este (Norte de Virginia) y luego ejecutarlas en ubicaciones de AWS a nivel
mundial que estén más cerca del espectador, sin necesidad de aprovisionar ni administrar servidores.
Lambda@Edge se escala automáticamente, desde unas pocas solicitudes al día a miles de solicitudes por
segundo. Procesar solicitudes en ubicaciones de AWS más cercanas al lector en lugar de en servidores de
origen reduce significativamente la latencia y mejora la experiencia del usuario.

Cuando asocia una distribución de CloudFront con una función de Lambda@Edge, CloudFront intercepta
solicitudes y respuestas en ubicaciones de borde de CloudFront. Puede ejecutar funciones de Lambda
cuando se producen los siguientes eventos de CloudFront:

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

Existe una gran variedad de usos para el procesamiento con Lambda@Edge. Por ejemplo:

• Una función de Lambda puede inspeccionar las cookies y reescribir URL, a fin de que los usuarios vean
distintas versiones de un sitio para pruebas A/B.
• CloudFront puede devolver diferentes objetos a lectores en función del dispositivo que estén utilizando
comprobando el encabezado User-Agent, que incluye información acerca de los dispositivos. Por
ejemplo, CloudFront puede devolver imágenes diferentes en función del tamaño de las pantallas de
su dispositivo. Del mismo modo, la función podría tener en cuenta el valor del encabezado Referer y
hacer que CloudFront devuelva a bots las imágenes con la menor resolución disponible.
• O bien, podría comprobar las cookies para otros criterios. Por ejemplo, en un sitio web minorista que
vende ropa, si utiliza cookies para indicar el color de chaqueta que eligió un usuario, la función de
Lambda puede cambiar la solicitud para que CloudFront devuelva la imagen de una chaqueta del color
seleccionado.
• Una función de Lambda puede generar respuestas HTTP cuando ocurran eventos de solicitudes al
origen o del lector de CloudFront.
• Una función puede inspeccionar encabezados o tokens de autorización e insertar un encabezado para
controlar el acceso a su contenido antes de que CloudFront reenvíe una solicitud a su origen.
• Una función de Lambda también puede realizar llamadas de red a recursos externos para confirmar
credenciales de usuarios o buscar contenido adicional para personalizar una respuesta.

Para el código de muestra y otros ejemplos, consulte Funciones de ejemplo de Lambda@Edge (p. 387).

Temas
• Primeros pasos para la creación y uso de funciones de Lambda@Edge (p. 338)
• Configuración de permisos y roles de IAM para Lambda@Edge (p. 349)

337
Amazon CloudFront Guía para desarrolladores
Primeros pasos para la creación y
uso de funciones de Lambda@Edge

• Escritura y creación de una función de Lambda@Edge (p. 355)


• Adición de disparadores para una función de Lambda@Edge (p. 359)
• Prueba y depuración de funciones de Lambda@Edge (p. 364)
• Métricas de CloudWatch y CloudWatch Logs para funciones de Lambda (p. 370)
• Eliminación de funciones de Lambda@Edge y réplicas (p. 371)
• Estructura de eventos (p. 372)
• Trabajo con solicitudes y respuestas (p. 383)
• Funciones de ejemplo de Lambda@Edge (p. 387)
• Requisitos y restricciones en funciones de Lambda (p. 414)

Primeros pasos para la creación y uso de funciones


de Lambda@Edge
Puede utilizar las funciones de Lambda@Edge para realizar una gran cantidad de cosas útiles, pero puede
parecer un poco complicado al principio. En esta sección, se explica a grandes rasgos cómo funciona
Lambda@Edge con CloudFront y se proporciona un tutorial en el que se detallan los pasos por medio de
un ejemplo sencillo.
Tip

Cuando esté familiarizado con el funcionamiento de Lambda@Edge y haya creado una función
de Lambda@Edge, puede obtener más información sobre cómo puede utilizar Lambda@Edge
para sus propias soluciones personalizadas. Obtenga más información sobre la creación y
actualización de funciones (p. 355), la estructura de los eventos (p. 372) y la adición de
desencadenadores de CloudFront (p. 359). También puede encontrar más ideas y obtener
ejemplos de código en Funciones de ejemplo de Lambda@Edge (p. 387).

A continuación se muestra información general de cómo crear y usar funciones de Lambda con
CloudFront:

1. En la consola de AWS Lambda, cree una función de Lambda en la región EE. UU. Este (Norte de
Virginia). (Además, puede crear la función mediante programación, por ejemplo, utilizando uno de los
SDK de AWS).
2. Guarde y publique una versión numerada de la función.

Si desea cambiar la función, debe editar la versión $LATEST de la función en la región EE. UU. Este
(Norte de Virginia). A continuación, antes de configurarla para usarla con CloudFront, publique una
nueva versión numerada.
3. Elija la distribución de CloudFront y el comportamiento de caché al que se aplica la función. A
continuación, especifique uno o varios eventos de CloudFront (desencadenadores) que provoquen la
ejecución de la función. Por ejemplo, puede crear un desencadenador para que la función se ejecute
cuando CloudFront reciba una solicitud de un lector.
4. Cuando se crea un desencadenador, Lambda replica la función en las ubicaciones de AWS de todo el
mundo.

338
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla

Temas
• Tutorial: Creación de una función de Lambda@Edge sencilla (p. 339)

Tutorial: Creación de una función de Lambda@Edge


sencilla
En este tutorial, se muestra cómo comenzar a utilizar Lambda@Edge; para ello, se le ayuda a crear y
agregar una función de Node.js de ejemplo que se ejecuta en CloudFront. En el ejemplo que se muestra,
se añaden encabezados HTTP de seguridad a una respuesta, lo que puede mejorar la seguridad y
privacidad de un sitio web. No necesita un sitio web para este tutorial. En él, simplemente agregamos
encabezados de seguridad a una respuesta cuando CloudFront recupera un archivo.

En este ejemplo se describen los pasos para crear y configurar una función Lambda@Edge. Seguirá pasos
similares y elegirá entre las mismas opciones cuando cree su propia solución de Lambda@Edge.

Temas
• Paso 1: Inscribirse en una cuenta de AWS (p. 340)

339
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla

• Paso 2: Crear una distribución de CloudFront. (p. 340)


• Paso 3: Crear una función (p. 340)
• Paso 4: Agregue un desencadenador de CloudFront para ejecutar la función (p. 344)
• Paso 5: Verificar que la función se ejecuta (p. 346)
• Paso 6: Solucionar problemas (p. 347)
• Paso 7: Eliminar los recursos del ejemplo (p. 348)
• Más recursos de aprendizaje (p. 348)

Paso 1: Inscribirse en una cuenta de AWS


Si aún no lo ha hecho, regístrese en Amazon Web Services en http://aws.amazon.com. Elija Sign Up Now
(Inscríbase ahora) e introduzca la información que se le pida.

Paso 2: Crear una distribución de CloudFront.


Antes de crear la función de Lambda@Edge de ejemplo, debe tener un entorno de CloudFront con el que
trabajar que incluya un origen para distribuir contenido.

¿Es la primera vez que utiliza CloudFront? CloudFront entrega el contenido a través de una red mundial
de ubicaciones de borde. Cuando se configura una función de Lambda con CloudFront, la función puede
personalizar el contenido más cercano a los lectores, lo que mejora el rendimiento. Si no está familiarizado
con CloudFront, antes de realizar el tutorial, dedique unos minutos a leer una breve información general y a
aprender algo acerca de cómo CloudFront almacena el contenido en caché y lo distribuye.

En este ejemplo, creará una distribución de CloudFront que utilice un bucket de Amazon S3 como origen
de la distribución. Si ya dispone de un entorno, puede omitir este paso.

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 para
usarlos como contenido de muestra. Puede seguir los pasos que se detallan en Cargar su contenido
en Amazon S3. Asegúrese de que establece permisos para conceder acceso de lectura público a los
objetos del bucket.
2. Cree una distribución de CloudFront y agregue el bucket de S3 como un origen, siguiendo los pasos
que se describen Crear una distribución web de CloudFront. Si ya tiene una distribución, solo es
necesario que añada el bucket como origen para esa distribución.
Tip

Tome nota del ID de distribución. Más adelante en este tutorial, al agregar un


desencadenador de CloudFront para la función, debe elegir el ID de la distribución en una
lista desplegable, por ejemplo, E653W22221KDDL.

Paso 3: Crear una función


En este paso, se crea una función de Lambda, a partir de una plantilla de proyecto que se proporciona
en la consola de Lambda. La función agrega código para actualizar los encabezados de seguridad de su
distribución de CloudFront.

¿Es la primera vez que utiliza Lambda o Lambda@Edge? Lambda @Edge le permite utilizar los
desencadenadores de CloudFront para invocar una función de Lambda. Cuando asocia una distribución
de CloudFront con una función de Lambda, CloudFront intercepta solicitudes y respuestas en ubicaciones

340
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla

de borde de CloudFront y ejecuta la función. Las funciones de Lambda pueden mejorar la seguridad o
personalizar la información según la ubicación de los lectores, para mejorar el rendimiento. La función que
se crea en este tutorial actualiza los encabezados de seguridad de una respuesta de CloudFront.

Existen varios pasos que se deben dar al crear una función de Lambda. En este tutorial, se parte de
una plantilla de proyecto para crear la función y, a continuación, se actualiza la función con código
que establece los encabezados de seguridad. Por último, tendrá que agregar e implementar un
desencadenador de CloudFront para que ejecute la función.

Para crear una función Lambda, realice el siguiente procedimiento:

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

Asegúrese de que está en la región US-East-1 (Norte de Virginia) (us-east-1). Debe estar en
esta región para crear funciones de Lambda@Edge.
2. Elija Create function (Crear función).
3. En la página Create function (Crear función), elija Use a blueprint (Usar un proyecto) y, a continuación,
filtre los proyectos de CloudFront especificando cloudfront en el campo de búsqueda. Se muestra
Keyword : cloudfront (Palabra clave: cloudfront) y aparecen todos los proyectos etiquetados para
CloudFront.
Note

Los proyectos de CloudFront solo están disponibles en la región US-East-1 (N. Virginia)
(EE. UU. Este (Norte de Virginia) (us-east-1).
4. Elija el proyecto cloudfront-modify-response-header como la plantilla para su función.
5. Escriba la siguiente información sobre su función:

Nombre

Escriba un nombre para la función.


Rol de ejecución

Elija cómo se deben establecer los permisos para la función. Para utilizar la plantilla de política
de permisos de Lambda @Edge básica recomendada, elija Create a new role from AWS policy
templates (Crear un nuevo rol a partir de plantillas de política de AWS).
Role name (Nombre de rol)

Escriba un nombre para el rol que crea la plantilla de política.


Policy templates (Plantillas de política)

Lambda agrega automáticamente la plantilla de política Basic Edge Lambda permissions


(Permisos básicos de Edge Lambda), ya que eligió un proyecto de CloudFront como base
de la función. Esta plantilla de política agrega permisos de rol de ejecución que permiten a
CloudFront ejecutar su función de Lambda en ubicaciones de CloudFront en todo el mundo.
Para obtener más información, consulte Configuración de permisos y roles de IAM para
Lambda@Edge (p. 349).
6. Elija Create function (Crear función). Lambda crea la función, y en la página siguiente verá la
configuración de su función.
7. En la sección Designer (Diseñador) de la página, elija el nombre de la función, como se muestra en la
siguiente imagen. En este ejemplo, el nombre de la función es ExampleFunction.

341
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla

8. Desplácese hacia abajo hasta la sección Function code (Código de función) de la página, como se
muestra en la siguiente imagen.

342
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla

343
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla

Reemplace el código de la plantilla por una función que modifique los encabezados de seguridad que
devuelve el origen. Por ejemplo, puede utilizar código similar al siguiente:

'use strict';
exports.handler = (event, context, callback) => {

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

Continúe con la siguiente sección para agregar un desencadenador de CloudFront para ejecutar la función.

Paso 4: Agregue un desencadenador de CloudFront para


ejecutar la función
Ahora que tiene una función de Lambda para actualizar los encabezados de seguridad, configure el
desencadenador de CloudFront para ejecutar la función que va a agregar los encabezados a cualquier
respuesta que CloudFront reciba desde el origen de la distribución.

Para configurar el desencadenador CloudFront para su función

1. En la sección Designer (Diseñador) de la página, elija CloudFront, como se muestra en la siguiente


imagen.

344
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla

345
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla

2. Desplácese hacia abajo hasta la sección Configure triggers (Configurar desencadenadores) de la


página y, a continuación, elija Deploy to Lambda@Edge (Implementar en Lambda@Edge).
3. En la página Deploy to Lambda@Edge (Implementar en Lambda@Edge), en Configure CloudFront
trigger (Configurar desencadenador de CloudFront), escriba lo siguiente:

Distribución

El ID de distribución de CloudFront que se debe asociar a la función. En la lista desplegable, elija


el 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, deje el
valor establecido en * es decir, el comportamiento de caché predeterminado de la distribución.
Para obtener más información, consulte Configuración del comportamiento de la caché (p. 52) en
el tema Valores que deben especificarse al crear o actualizar una distribución (p. 43).
Evento CloudFront

El desencadenador que especifica cuándo se ejecutará la función. Queremos que la función


de encabezados de seguridad se ejecute siempre que CloudFront devuelva una respuesta
desde el origen. Por lo tanto, en la lista desplegable, elija Origin response (Respuesta de
origen). Para obtener más información, consulte Adición de disparadores para una función de
Lambda@Edge (p. 359).
4. En Confirm deploy to Lambda@Edge (Confirmar implementación en Lambda@Edge), seleccione la
casilla para confirmar que el desencadenador se implementará y ejecutará la función en todas las
ubicaciones de AWS.
5. Elija Deploy (Implementar) para agregar el desencadenador y replicar la función a ubicaciones de
AWS en todo el mundo. A continuación, si es necesario, cierre la página Deploy to Lambda@Edge
(Implementar en Lambda@Edge).
6. Espere a que la función se replique. Esta operación suele tardar varios minutos.

Para comprobar si la replicación ha terminado, vaya a la consola de CloudFront y consulte la


distribución. Espere a que el estado de la distribución cambie de In Progress (En curso) a Deployed
(Implementada), lo que significa que la función se ha replicado. Para comprobar que la función es
correcta, realice los pasos de la siguiente sección.

Paso 5: Verificar que la función se ejecuta


Ahora que ha creado la función de Lambda y que ha configurado un desencadenador para que la ejecute
en una distribución de CloudFront, asegúrese de que la función se comporta según lo previsto. En este
ejemplo, comprobamos los encabezados HTTP que devuelve CloudFront, para asegurarnos de que se
agregan los encabezados de seguridad.

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 de su bucket de S3. Por ejemplo, puede
utilizar una URL similar a http://d111111abcdef8.cloudfront.net/image.jpg.

Para obtener más información sobre el nombre de dominio de CloudFront que se debe utilizar en la
URL del archivo, consulte Personalización del formato de URL para archivos en CloudFront (p. 117).
2. Abra la barra de herramientas para desarrolladores web del navegador. Por ejemplo, en la ventana del
navegador Chrome, abra el menú contextual (haga clic con el botón derecho) y, a continuación, elija
Inspect (Inspeccionar).
3. Elija la pestaña Network (Red).
4. Vuelva a cargar la página para ver la imagen y, a continuación, elija una solicitud HTTP en el panel
izquierdo. Verá que los encabezados HTTP se muestran en un panel independiente.

346
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla

5. Examine la lista de encabezados HTTP para verificar que incluye los encabezados de seguridad
esperados. Por ejemplo, es posible que vea encabezados similares a los que se muestran en la
siguiente captura de pantalla.

Si los encabezados de seguridad se incluyen en la lista de encabezados, ¡estupendo! Significa que ha


creado correctamente su primera función de Lambda@Edge. Si CloudFront devuelve algún error o hay
otros problemas, continúe con el paso siguiente para solucionar los problemas.

Paso 6: Solucionar problemas


Si CloudFront devuelve errores o no agrega los encabezados de seguridad según lo previsto, puede
investigar la ejecución de la función consultando los CloudWatch Logs. Asegúrese de utilizar los registros
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).

Para examinar los registros de CloudWatch para su 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 Región (Región) a la ubicación que se muestra al ver el archivo en el navegador. Aquí es
donde se está ejecutando la función.
3. En el panel izquierdo, elija Logs para ver los logs de la distribución.

Para obtener más información, consulte Monitoreo de CloudFront con Amazon CloudWatch (p. 452).

347
Amazon CloudFront Guía para desarrolladores
Tutorial: Creación de una función sencilla

Paso 7: Eliminar los recursos del ejemplo


Si ha creado un bucket de Amazon S3 y una distribución de CloudFront solo para este tutorial, elimine los
recursos de AWS asignados para que no se le apliquen cargos. Después de eliminar los recursos de AWS,
el contenido que haya agregado dejará de estar disponible.

Tareas

• Eliminación del bucket de S3 (p. 348)


• Eliminar la distribución de CloudFront (p. 348)

Eliminación del bucket de S3


Antes de eliminar su bucket de Amazon S3, asegúrese de que la función de registro esté desactivada para
el bucket. De lo contrario, AWS seguirá escribiendo registros en su 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 (Propiedades).
3. En Properties (Propiedades), elija Logging (Registro).
4. Elimine la selección del recuadro Enabled (Habilitado).
5. Seleccione Save.

Ahora ya puede eliminar el bucket. Para obtener más información, consulte ¿Cómo elimino un bucket de
S3? en la Guía del usuario de la consola de Amazon Simple Storage Service.

Eliminar la distribución de CloudFront


Antes de eliminar una distribución de CloudFront, debe desactivarla. Una distribución deshabilitada ya no
es 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/cloudfront/.


2. Seleccione la distribución que desea deshabilitar y elija Disable (Deshabilitar).
3. Cuando se le indique que confirme, seleccione Yes, Disable (Sí, deshabilitar).
4. Seleccione la distribución desactivada y después Delete (Eliminar).
5. Cuando se le indique que confirme, seleccione Yes, Delete.

Más recursos de aprendizaje


Ahora que tiene una idea básica de cómo funcionan las funciones de Lambda@Edge, puede obtener más
información leyendo los temas siguientes:

• Funciones de ejemplo de Lambda@Edge (p. 387)


• 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

348
Amazon CloudFront Guía para desarrolladores
Configuración de permisos y roles de IAM

Configuración de permisos y roles de IAM para


Lambda@Edge
Para configurar Lambda@Edge, debe configurar permisos de IAM específicos y un rol de ejecución de
IAM. Lambda@Edge también crea roles vinculados a servicios para replicar funciones de Lambda en
regiones CloudFront y permitir que CloudWatch utilice archivos de registro de CloudFront.

Temas
• Permisos de IAM necesarios para asociar funciones de Lambda con distribuciones de
CloudFront (p. 349)
• Rol de ejecución de funciones para las entidades principales del servicio (p. 350)
• Roles vinculados a servicios para Lambda@Edge (p. 350)

Permisos de IAM necesarios para asociar funciones


de Lambda con distribuciones de CloudFront
Además de los permisos de IAM necesarios para utilizar AWS Lambda, el usuario de IAM necesita los
siguientes permisos de IAM para asociar funciones de Lambda a las distribuciones de CloudFront:

• lambda:GetFunction

Permite al usuario obtener información de configuración para la función Lambda y una URL prefirmada
para descargar un archivo .zip que contiene la función.

Para el recurso, especifique el ARN de la versión de la función que desea ejecutar cuando se produzca
un evento de CloudFront, tal como se muestra en el ejemplo siguiente:

arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2
• lambda:EnableReplication*

Agrega un permiso a la política de recursos que proporciona al servicio de replicación de Lambda


permiso para obtener una configuración y un código de función.
Important
Se requiere el asterisco (*) al final del permiso: lambda:EnableReplication*

Para el recurso, especifique el ARN de la función (sin el número de versión) que desea ejecutar cuando
se produzca un evento de CloudFront, tal como se muestra en el ejemplo siguiente:

arn:aws:lambda:us-east-1:123456789012:function:TestFunction
• iam:CreateServiceLinkedRole

Permite que el usuario cree un rol vinculado a un que utiliza Lambda@Edge para replicar funciones
Lambda en CloudFront. Después de que la primera distribución que utilice con Lambda@Edge
haya creado este rol, no es necesario que añada permisos a otras distribuciones que utilice con
Lambda@Edge.
• cloudfront:UpdateDistribution o bien cloudfront:CreateDistribution

Use cloudfront:UpdateDistribution para actualizar una distribución o


cloudfront:CreateDistribution para crear una distribución.

Para obtener más información, consulte la documentación siguiente:

349
Amazon CloudFront Guía para desarrolladores
Rol de ejecución de funciones para
las entidades principales del servicio

• Administración de identidades y accesos en CloudFront (p. 499) en esta guía.


• Autenticación y control de acceso para AWS Lambda en la Guía para desarrolladores de AWS Lambda

Rol de ejecución de funciones para las entidades


principales del servicio
Debe crear un rol de IAM que puedan asumir las entidades principales del servicio
lambda.amazonaws.com y edgelambda.amazonaws.com. Este rol lo asumen las entidades principales
del servicio cuando ejecutan la función. Para obtener más información, consulte Crear roles y adjuntar
políticas (consola) en la Guía del usuario de IAM.

Agregue esta función en la pestaña Trust Relationship (Relación de confianza) en IAM (no la añada en la
pestaña Permissions (Permisos)).

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, consulte
Administración de permisos mediante un rol de IAM (rol de ejecución) en la Guía para desarrolladores de
AWS Lambda. Tenga en cuenta lo siguiente:

• De forma predeterminada, siempre que un evento de CloudFront desencadene una función de Lambda,
los datos se escriben en CloudWatch Logs. Si desea utilizar estos registros, el rol de ejecución
necesita permiso para escribir datos en CloudWatch Logs. Puede utilizar la política predefinida
AWSLambdaBasicExecutionRole para conceder permisos al rol de ejecución.

Para obtener más información acerca de CloudWatch Logs, consulte Métricas de CloudWatch y
CloudWatch Logs para funciones de Lambda (p. 370).
• Si el código de la función de Lambda tiene acceso a otros recursos de AWS, como, por ejemplo,
la lectura de un objeto de un bucket de S3, el rol de ejecución necesita permiso para realizar esa
operación.

Roles vinculados a servicios para Lambda@Edge


Lambda @Edge utiliza roles vinculados a servicios de AWS Identity and Access Management (IAM). Un
rol vinculado a un servicio es un tipo único de rol de IAM que está vinculado directamente a un servicio.
Las funciones vinculadas a servicios son predefinidos por el servicio e incluyen todos los permisos que el
servicio requiere para llamar a otros servicios de AWS en su nombre.

Lambda@Edge usa el siguiente rol vinculado al servicio de IAM:

350
Amazon CloudFront Guía para desarrolladores
Roles vinculados a servicios para Lambda@Edge

• AWSServiceRoleForLambdaReplicator: Lambda@Edge usa este rol para permitir que Lambda@Edge


replique funciones a regiones de AWS.
• AWSServiceRoleForCloudFrontLogger: CloudFront utiliza este rol para insertar archivos de registro en
su cuenta de CloudWatch, para ayudarle a depurar los errores de validación de Lambda @Edge.

Cuando se agrega un desencadenador de Lambda@Edge por primera vez en CloudFront, se crea


automáticamente un rol denominado AWSServiceRoleForLambdaReplicator que permite a Lambda@Edge
replicar funciones en las distintas regiones de AWS. Este rol es necesario para utilizar las funciones de
Lambda@Edge. El ARN del rol AWSServiceRoleForLambdaReplicator tiene este aspecto:

arn:aws:iam::123456789012:role/aws-service-role/
replicator.lambda.amazonaws.com/AWSServiceRoleForLambdaReplicator

El segundo rol, denominado AWSServiceRoleForCloudFrontLogger, se crea automáticamente cuando


agrega la asociación de función de Lambda@Edge para permitir que CloudFront envíe archivos de registro
de errores de Lambda@Edge a CloudWatch. El ARN para el rol AWSServiceRoleForCloudFrontLogger
tiene el siguiente aspecto:

arn:aws:iam::account_number:role/aws-service-role/
logger.cloudfront.amazonaws.com/AWSServiceRoleForCloudFrontLogger

Los roles vinculados a servicios simplifican la configuración y el uso de Lambda@Edge porque no será
necesario añadir manualmente los permisos necesarios. Lambda@Edge define los permisos de sus roles
vinculados a servicios y solo Lambda@Edge puede asumir estos roles. Los permisos definidos incluyen la
política de confianza y la política de permisos. La política de permisos no se puede asociar a ninguna otra
entidad de IAM.

Debe eliminar los recursos de CloudFront o de Lambda@Edge asociados para poder eliminar un rol
vinculado a servicio. Esto ayuda a proteger sus recursos de Lambda@Edge al asegurarse de que no
elimina un rol vinculado a un servicio que sigue siendo necesario para obtener acceso a los recursos
activos.

Para obtener información sobre otros servicios que admiten roles vinculados a servicios, consulte Servicios
de AWS que funcionan con IAM y busque los servicios que tienen Sí en la columna Rol vinculado a
servicio.

Permisos de roles vinculados a servicios para Lambda@Edge


Lambda @Edge utiliza dos roles vinculados a servicios, denominados
AWSServiceRoleForLambdaReplicator y AWSServiceRoleForCloudFrontLogger. En las siguientes
secciones se describen los permisos de cada uno de estos roles.

Permisos de roles vinculados a servicios para Lambda Replicator


Este rol vinculado a servicios permite a Lambda replicar las funciones de Lambda@Edge en las regiones
de AWS.

El rol vinculado al servicio AWSServiceRoleForLambdaReplicator confía en el siguiente servicio para que


asuma el rol:

• replicator.lambda.amazonaws.com

La política de permisos del rol permite que Lambda@Edge realice las siguientes acciones en los recursos
especificados:

• Acción: lambda:CreateFunction en arn:aws:lambda:*:*:function:*


• Acción: lambda:DeleteFunction en arn:aws:lambda:*:*:function:*

351
Amazon CloudFront Guía para desarrolladores
Roles vinculados a servicios para Lambda@Edge

• 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

Permisos de rol vinculados a servicios para CloudFront Logger


Este rol vinculado al servicio permite a CloudFront enviar los archivos de registro a su cuenta de
CloudWatch, para ayudarle a depurar errores de validación de Lambda@Edge.

El rol vinculado al servicio AWSServiceRoleForCloudFrontLogger confía en el siguiente servicio para


asumir el rol:

• logger.cloudfront.amazonaws.com

La política de permisos del rol permite que Lambda@Edge realice las siguientes acciones en los recursos
especificados:

• Acción: logs:CreateLogGroup en arn:aws:logs:*:*:log-group:/aws/cloudfront/*


• Acción: logs:CreateLogStream en arn:aws:logs:*:*:log-group:/aws/cloudfront/*
• Acción: logs:PutLogEvents en arn:aws:logs:*:*:log-group:/aws/cloudfront/*

Debe configurar permisos para permitir que una entidad de IAM (como un usuario, grupo o rol) elimine los
roles vinculados a servicios de Lambda@Edge. Para obtener más información, consulte Permisos de roles
vinculados a servicios en la Guía del usuario de IAM.

Creación de roles vinculados a servicios para Lambda@Edge


Normalmente no es necesario crear manualmente los roles vinculados a servicios para Lambda@Edge. El
servicio crea los roles automáticamente en los siguientes casos:

• Cuando se crea un desencadenador por primera vez, el servicio crea un rol


AWSServiceRoleForLambdaReplicator, si aún no existe, que permite a Lambda replicar funciones
Lambda@Edge en regiones de AWS.

Si elimina el rol vinculado a servicio, el rol se creará de nuevo al añadir un nuevo disparador para
Lambda@Edge en una distribución.
• Cuando actualiza o crea una distribución de CloudFront que tiene una asociación Lambda@Edge,
el servicio crea un rol, AWSServiceRoleForCloudFrontLogger, si el rol no existe ya, que permite a
CloudFront enviar los archivos de registro a CloudWatch.

Si elimina el rol vinculado al servicio, el rol se creará de nuevo al actualizar o crear una distribución de
CloudFront que tiene una asociación de Lambda@Edge.

Si debe crear manualmente estos roles vinculados a servicios, ejecute los siguientes comandos con la CLI
de AWS:

Para crear el rol AWSServiceRoleForLambdaReplicator

aws iam create-service-linked-role --aws-service-name


replicator.lambda.amazonaws.com
Para crear el rol AWSServiceRoleForCloudFrontLogger

aws iam create-service-linked-role --aws-service-name


logger.cloudfront.amazonaws.com

352
Amazon CloudFront Guía para desarrolladores
Roles vinculados a servicios para Lambda@Edge

Edición de roles vinculados a servicios para Lambda@Edge


Lambda@Edge no permite editar los roles vinculados al servicio AWSServiceRoleForLambdaReplicator o
AWSServiceRoleForCloudFrontLogger. Una vez que el servicio ha creado un rol vinculado a un servicio,
no puede cambiarle el nombre, ya que varias entidades pueden hacer referencia a él. Sin embargo,
puede editar la descripción de un rol mediante 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 de roles vinculados a servicios para Lambda@Edge


Si ya no tiene que utilizar Lambda@Edge, le recomendamos que elimine los roles vinculados a servicios.
De esta forma no tendrá entidades no utilizadas que no se monitoricen ni mantengan de forma activa. Sin
embargo, debe limpiar los recursos de Lambda@Edge de la cuenta antes de poder eliminar manualmente
los roles.

Para eliminar todas las asociaciones de Lambda@Edge de sus distribuciones, actualice las distribuciones
con el fin de eliminar todos los disparadores de funciones de Lambda@Edge o elimine las distribuciones
que utilizan funciones de Lambda@Edge. Para obtener más información, consulte Eliminación de
funciones de Lambda@Edge y réplicas (p. 371).

Una vez que haya eliminado todas las asociaciones de funciones de Lambda@Edge de las distribuciones
y que CloudFront haya eliminado las réplicas de las funciones de las ubicaciones de AWS, puede eliminar
los roles vinculados a servicios.
Note

Si CloudFront no ha finalizado la actualización, la eliminación del rol vinculado a servicio puede


dar un error. En tal caso, espere unos minutos y realice de nuevo los pasos de eliminación.

Debe seguir procedimientos distintos para eliminar manualmente cada rol vinculado al servicio:

• Elimine el rol AWSServiceRoleForLambdaReplicator mediante la consola de CloudFront.


• Elimine el rol AWSServiceRoleForCloudFrontLogger mediante la consola de IAM.

Para eliminar manualmente el rol vinculado al servicio AWSServiceRoleForLambdaReplicator

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 parte
superior derecha.

3. Elija Eliminar.

353
Amazon CloudFront Guía para desarrolladores
Roles vinculados a servicios para Lambda@Edge

Para eliminar manualmente los roles vinculados al servicio AWSServiceRoleForCloudFrontLogger

1. Inicie sesión en la consola de administración de AWS y abra la consola de IAM en https://


console.aws.amazon.com/iam/.
2. En el panel de navegación de la consola de IAM, elija Roles. A continuación, seleccione la casilla junto
al nombre del rol que desea eliminar, no el nombre ni la fila.
3. En Role actions (Acciones de rol) en la parte superior de la página, elija Delete role (Eliminar rol).
4. En el cuadro de diálogo de confirmación, revise los datos del último acceso al servicio, que muestra
cuándo cada uno de los roles seleccionados tuvo acceso a un servicio de AWS por última vez. Esto
le ayuda a confirmar si el rol está actualmente activo. Si desea continuar, seleccione Yes, Delete para
enviar la solicitud de eliminación del rol vinculado al servicio.
5. Consulte las notificaciones de la consola de IAM para monitorear el progreso de la eliminación del
rol vinculado al servicio. Como el proceso de eliminación del rol vinculado al servicio de IAM es
asíncrono, dicha tarea puede realizarse correctamente o fallar después de que envía la solicitud de
eliminación. Para obtener más información, consulte Eliminar un rol vinculado a un servicio en la Guía
del usuario de IAM.

Regiones admitidas para roles vinculados a servicios de


CloudFront
CloudFront admite el uso de roles vinculados a servicios para Lambda@Edge en las siguientes regiones:

• EE. UU. Este (Ohio) (us-east-2)


• EE. UU. Este (Norte de Virginia) (us-east-1)
• EE. UU. Oeste (Oregón) (us-west-2)
• Asia-Pacífico (Mumbai) (ap-south-1)
• Asia-Pacífico (Seúl) (ap-northeast-2)
• Asia-Pacífico (Singapur) (ap-southeast-1)
• Asia-Pacífico (Sídney) (ap-southeast-2)
• Asia-Pacífico (Tokio) (ap-northeast-1)
• UE (Fráncfort) (eu-central-1)
• UE (Irlanda) (eu-west-1)
• UE (Londres) (eu-west-2)

354
Amazon CloudFront Guía para desarrolladores
Escritura y creación de funciones

• América del Sur (São Paulo) (sa-east-1)

Escritura y creación de una función de


Lambda@Edge
Para usar Lambda@Edge, escriba el código de su función de Lambda y, a continuación, configure AWS
Lambda para ejecutar la función a partir de eventos de CloudFront específicos (desencadenadores). Para
configurar 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 desencadenadores de
CloudFront, o puede trabajar con Lambda@Edge mediante programación utilizando las API.

• Si utiliza la consola, tenga en cuenta que solo puede usar la consola de AWS Lambda para crear
funciones de Lambda. No puede utilizar la consola de Amazon CloudFront para crear una función.
• Si desea trabajar con Lambda@Edge mediante programación, existen varios recursos para ayudarle.
Para obtener más información, consulte Creación de funciones de Lambda y desencadenadores de
CloudFront mediante programación (p. 359).

Note

Puede utilizar la consola de AWS Lambda o la consola de CloudFront para agregar


desencadenadores para las funciones de Lambda@Edge.

Temas
• Creación de funciones para Lambda@Edge (p. 355)
• Creación de una función de Lambda@Edge en la consola de Lambda (p. 356)
• Edición de una función de Lambda para Lambda@Edge (p. 357)
• Creación de funciones de Lambda y desencadenadores de CloudFront mediante
programación (p. 359)

Creación de funciones para Lambda@Edge


Existen 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 con
Lambda@Edge, consulte Requisitos y restricciones en funciones de Lambda (p. 414).
• Para obtener más información acerca de la estructura del evento que se va a utilizar con las funciones
de Lambda@Edge, consulte Estructura de eventos (p. 372).
• Para ver ejemplos de las funciones de Lambda@Edge, como, por ejemplo, funciones para pruebas A/B
y generar un redireccionamiento de HTTP, consulte Funciones de ejemplo de Lambda@Edge (p. 387).

El modelo de programación para utilizar Node.js o Python con Lambda@Edge es el mismo que para
utilizar Lambda en una región de AWS. Para obtener más información, consulte Creación de funciones de
Lambda con Node.js o Creación de funciones de Lambda con Python.

En su código Lambda@Edge, incluya el parámetro callback y devuelva el objeto correspondiente para


eventos de solicitud o de respuesta:

• Eventos de solicitud: incluya el objeto cf.request en la respuesta.

355
Amazon CloudFront Guía para desarrolladores
Creación de una función de
Lambda@Edge en la consola de Lambda

Si está generando una respuesta, incluya el objeto cf.response en ella. Para obtener más
información, consulte Generación de respuestas HTTP en los disparadores de solicitud (p. 383).
• Eventos de respuesta: incluya el objeto cf.response en la respuesta.

Creación de una función de Lambda@Edge en la


consola de Lambda
Para configurar AWS Lambda para que ejecute funciones de Lambda basadas en eventos de CloudFront,
siga este 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 (Crear función).

Si no tiene ninguna función, elija Get Started Now (Comenzar ahora).


3. En la lista Región de la parte superior de la página, elija US East (N. Virginia) (EE. UU. Este (Norte de
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 (Crear desde cero).
• Para mostrar una lista de proyectos de CloudFront;, escriba cloudfront en el campo de filtro y, a
continuación, pulse Enter (Intro).

Si encuentra un proyecto que desee utilizar, elija el nombre del proyecto.


5. En la sección Basic information (Información básica), especifique los siguientes valores:

Nombre

Escriba un nombre para la función.


Rol

Elija Create new role from template(s) (Crear una nueva función a partir de plantilla(s)).
Note

Elija este valor para empezar a trabajar rápidamente. También puede elegir Choose
an existing role (Elegir una función existente) o Create a custom role (Crear un rol
personalizado). Si elige alguna de estas opciones, siga las instrucciones para completar
la información de esta sección.
Nombre de rol

Escriba un nombre para el rol.


Plantillas de política

Elija Basic Edge Lambda permissions (Permisos básicos de Lambda Edge).


6. Si eligió Author from scratch (Crear desde cero) en el paso 4, vaya al paso 7.

Si eligió un proyecto en el paso 4, la sección cloudfront le permite crear un desencadenador, que


asocia esta función con una memoria caché en una distribución de CloudFront y un evento de
CloudFront. Le recomendamos que elija Remove (Eliminar) en este punto, por lo que no habrá un
disparador para la función cuando esta se cree. Podrá añadir disparadores más adelante.

356
Amazon CloudFront Guía para desarrolladores
Edición de una función de Lambda para Lambda@Edge

Important

¿Por qué añadir disparadores en otro momento? Generalmente es mejor que pruebe y
depure la función antes de añadir disparadores. Si elige añadir un disparador ahora, la
función comenzará su ejecución una vez creada la función, terminará de replicarse en las
ubicaciones de AWS en todo el mundo y se implementará la distribución correspondiente.
7. Elija Create function.

Lambda crea dos versiones de su función: $LATEST y Version 1. Solo puede editar la versión
$LATEST, pero la consola muestra inicialmente Version 1.
8. Para editar la función, elija Version 1 (Versión 1) cerca de la parte superior de la página, bajo el ARN
de la función. A continuación, en la pestaña Versions (Versiones), elija $LATEST. (Si abandona la
función y vuelve a ella más tarde, el botón de etiqueta será Qualifiers (Cualificadores)).
9. En la pestaña Configuration (Configuración), elija el valor correspondiente para Code entry type (Tipo
de entrada de código). A continuación, siga las instrucciones para editar o cargar el código.
10. En Runtime (Tiempo de ejecución), elija el valor según el código de la función.
11. En la sección Tags (Etiquetas), añada todas las etiquetas aplicables.
12. Elija Actions (Acciones) y, a continuación, Publish new version (Publicar nueva versión).
13. Escriba una descripción para la nueva versión de la función.
14. Elija Publish.
15. Pruebe y depure la función. Para obtener más información sobre las pruebas en la consola de
Lambda, consulte la sección Invocar la función Lambda y verificar los resultados, los registros y
las métricas en Crear una función Lambda con la consola en la Guía para desarrolladores de AWS
Lambda.
16. Cuando esté listo para que la función se ejecute para eventos de CloudFront, publique otra versión y
edite la función para agregar desencadenadores. Para obtener más información, consulte Adición de
disparadores para una función de Lambda@Edge (p. 359).

Edición de una función de Lambda para


Lambda@Edge
Cuando 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
desencadenadores de la versión anterior a la nueva. Debe reproducir los disparadores para la nueva
versión.
• Cuando se agrega un desencadenador para un evento de CloudFront a una función, si ya existe un
desencadenador para la misma distribución, comportamiento de la caché y evento para una versión
anterior de la misma función, Lambda lo elimina de esta versión anterior.
• Después de realizar actualizaciones a una distribución de CloudFront, como agregar desencadenadores,
debe esperar que los cambios se propaguen a ubicaciones de borde antes de que las funciones que ha
especificado en los desencadenadores funcionen.

357
Amazon CloudFront Guía para desarrolladores
Edición de una función de Lambda para Lambda@Edge

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 Región de la parte superior de la página, elija US East (N. Virginia) (EE. UU. Este (Norte de
Virginia)).
3. En la lista de funciones, elija el nombre de la función que desea editar.

De forma predeterminada, la consola muestra la versión $LATEST. Puede ver las versiones anteriores
(elija Qualifiers (Cualificadores)), pero solo puede editar $LATEST.
4. En la pestaña Code (Código), en Code entry type (Tipo de entrada de código), elija si desea editar el
código en el navegador, cargar un archivo .zip o cargar un archivo desde Amazon S3.
5. Elija Save (Guardar) o Save and test (Guardar y probar).
6. Elija Actions (Acciones) y, a continuación, Publish new version (Publicar nueva versión).
7. En el cuadro de diálogo Publish new version from $LATEST (Publicar una nueva versión desde
$LATEST), introduzca una descripción de la nueva versión. Esta descripción aparece en la lista de
versiones, junto con un número de versión generado de forma automática.
8. Elija Publish.

La nueva versión se convierte automáticamente la versión más reciente. El número de versión


aparece en el botón Version (Versión) de la esquina superior izquierda de la página.
9. Elija la pestaña Triggers (Disparadores).
10. Elija Add trigger (Añadir disparador).
11. En el cuadro de diálogo Add trigger (Agregar desencadenador), elija el cuadro con puntos y, a
continuación, CloudFront.
Note

Si ya ha creado uno o varios desencadenadores para una función, CloudFront es el servicio


predeterminado.
12. Especifique los siguientes valores para indicar cuándo desea que se ejecute la función de Lambda.

ID de distribución

Elija el ID de la distribución donde desea añadir el disparador.


Comportamiento de la caché

Elija el comportamiento de la caché que especifica los objetos en los que desea ejecutar la
función.
Evento CloudFront

Elija el evento de CloudFront que provoca la ejecución de la función.


Enable trigger and replicate (Habilitar el disparador y replicar)

Seleccione esta casilla para que Lambda replique la función a las regiones de todo el mundo.
13. Elija Submit.
14. Para añadir más disparadores para esta función, repita los pasos del 10 al 13.

358
Amazon CloudFront Guía para desarrolladores
Creación de funciones de Lambda y desencadenadores
de CloudFront mediante programación

Creación de funciones de Lambda y


desencadenadores de CloudFront mediante
programación
Puede configurar las funciones de Lambda@Edge y los desencadenadores de CloudFront mediante
programación utilizando las acciones de la API en lugar de la consola de AWS. Para obtener más
información, consulte los siguientes temas:

• Referencia de API en la Guía para desarrolladores de AWS Lambda


• Referencia del API de Amazon CloudFront
• AWS CLI
• Comando create-function de Lambda
• Comando create-distribution de CloudFront
• Comando create-distribution-with-tags de CloudFront
• Comando update-distribution de CloudFront
• SDK de AWS (Consulte la sección SDK y conjuntos de herramientas).
• Referencia de cmdlet de herramientas de AWS para PowerShell

Adición de disparadores para una función de


Lambda@Edge
Un desencadenador de Lambda@Edge es una combinación de una distribución de CloudFront, un
comportamiento de la caché y un evento que provoca la ejecución de una función. Puede especificar uno
o varios desencadenadores de CloudFront que provoquen la ejecución de la función. Por ejemplo, puede
crear un desencadenador que provoque la ejecución de la función cuando CloudFront reciba una solicitud
de un lector 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 breve
descripción general. Al crear una distribución de CloudFront, debe especificar la configuración
que indica a CloudFront cómo responder al recibir distintas solicitudes. La configuración
predeterminada se denomina comportamiento de la caché predeterminado para la distribución.
Puede configurar más comportamientos de la caché que definen cómo responde CloudFront
en circunstancias específicas, por ejemplo, cuando recibe una solicitud para un tipo de archivo
específico. Para obtener más información, consulte Configuración del comportamiento de caché.

En el momento de crear una función de Lambda, solo se puede especificar un desencadenador. Pero se
pueden agregar más desencadenadores a la misma función más adelante por medio de uno de estos dos
métodos: con la consola de Lambda o editando la distribución en la consola de CloudFront.

• El uso de la consola de Lambda funciona bien si desea agregar más desencadenadores a una función
para la misma distribución de CloudFront.
• El uso de la consola de CloudFront puede ser mejor si desea agregar desencadenadores para varias
distribuciones, ya que es más sencillo encontrar la distribución que desea actualizar. También puede
actualizar otros ajustes de CloudFront simultáneamente.

359
Amazon CloudFront Guía para desarrolladores
Eventos de CloudFront que pueden
desencadenar una función de Lambda

Note

Si desea trabajar con Lambda@Edge mediante programación, existen varios recursos para
ayudarle. Para obtener más información, consulte Creación de funciones de Lambda y
desencadenadores de CloudFront mediante programación (p. 359).

Temas
• Eventos de CloudFront que pueden desencadenar una función de Lambda (p. 360)
• A continuación, se explica cómo decidir qué evento de CloudFront utilizar para desencadenar una
función de Lambda. (p. 361)
• Agregar desencadenadores mediante la consola de Lambda (p. 362)
• Agregar desencadenadores mediante la consola de CloudFront (p. 363)

Eventos de CloudFront que pueden desencadenar


una función de Lambda
Para cada comportamiento de la caché de una distribución de CloudFront, puede agregar hasta cuatro
desencadenadores (asociaciones) que harán que se ejecute una función de Lambda cuando se produzcan
determinados eventos de CloudFront. Los desencadenadores de CloudFront pueden basarse en uno de
los cuatro eventos de CloudFront que se muestran en el siguiente diagrama.

El eventos de CloudFront que pueden utilizarse para activar funciones de Lambda@Edge son los
siguientes:

Solicitud del espectador

La función se ejecuta cuando CloudFront recibe una solicitud de un lector y antes de comprobar si el
objeto solicitado está en la caché de CloudFront.
Solicitud al origen

La función se ejecuta solo cuando CloudFront reenvía una solicitud a su origen. Cuando el objeto
solicitado está en la caché de CloudFront, la función no se ejecuta.
Respuesta del origen

La función se ejecuta después de que CloudFront recibe una respuesta del origen y antes de
almacenar el objeto en caché en la respuesta. Tenga en cuenta que la función se ejecuta aunque el
origen devuelva un error.

La función no se ejecuta en los siguientes casos:


• Cuando el archivo solicitado está en la caché de CloudFront y no ha caducado.
• Cuando la respuesta se genera a partir de una función activada por un evento de solicitud al origen.

360
Amazon CloudFront Guía para desarrolladores
A continuación, se explica cómo decidir
qué evento de CloudFront utilizar para
desencadenar una función de Lambda.
Respuesta al espectador

La función se ejecuta antes de devolver el archivo solicitado al espectador. Tenga en cuenta que la
función se ejecuta independientemente de si el archivo ya está en la caché de CloudFront.

La función no se ejecuta en los siguientes casos:


• 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 activada 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. 55) es Redirect HTTP to HTTPS (Redirigir HTTP a HTTPS)).

Si añade varios disparadores al mismo comportamiento de la caché, puede utilizarlos para ejecutar la
misma función o distintas funciones para cada disparador. También puede asociar la misma función a más
de una distribución.
Note

Cuando un evento de CloudFront desencadena la ejecución de una función Lambda, la función


debe finalizar antes de que CloudFront pueda continuar. Por ejemplo, si una función de Lambda
se activa por medio de un evento de solicitud del lector de CloudFront, CloudFront no devolverá
una respuesta al lector ni reenviará la solicitud al origen hasta que la función de Lambda termine
de ejecutarse. Esto significa que cada solicitud que desencadena una función de Lambda
aumenta la latencia de la solicitud, por lo que es conveniente que la función se ejecute con la
mayor rapidez posible.

A continuación, se explica cómo decidir qué evento de


CloudFront utilizar para desencadenar una función de
Lambda.
A la hora de decidir qué evento de CloudFront utilizar para desencadenar una función de Lambda, tenga
en cuenta 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 para
que CloudFront pueda enviarlo desde la ubicación de borde la próxima vez que se solicite, utilice los
eventos de solicitud al origen o respuesta del origen. Esto reduce la carga en el origen, la latencia de
las solicitudes posteriores y los costos de invocación de Lambda@Edge en las solicitudes posteriores.

Por ejemplo, si desea agregar, eliminar o cambiar los encabezados de los objetos devueltos por el
origen y que CloudFront almacene el resultado en caché, utilice el evento de respuesta del origen.
¿Desea que la función se ejecute por cada solicitud?

Si desea que la función se ejecute para cada solicitud que CloudFront reciba para la distribución,
utilice los eventos de solicitud del lector o de respuesta al lector. Los eventos de solicitud al origen
y respuesta del origen ocurren solo cuando un objeto solicitado no se almacena en caché en una
ubicación de borde y CloudFront reenvía una solicitud al origen.
¿La función cambia la clave de caché?

Si desea que la función cambie un valor que está utilizando como base para el almacenamiento en
caché, utilice el evento de solicitud del espectador. Por ejemplo, si una función cambia la URL para
incluir una abreviatura de idioma en la ruta (por ejemplo, porque el usuario había elegido su idioma en
una lista desplegable), utilice el evento de solicitud del espectador:

361
Amazon CloudFront Guía para desarrolladores
Agregar desencadenadores mediante la consola de Lambda

• URL en la solicitud del lector: 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ón
de cookies o encabezados de solicitudes.
Note

Si la función cambia cookies o encabezados, configure CloudFront para reenviar la parte


aplicable de la solicitud al origen. Para obtener más información, consulte los siguientes
temas:
• Almacenamiento en caché de contenido en función de cookies (p. 277)
• Almacenamiento en caché de contenido en función de encabezados de solicitud (p. 280)
¿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 evento de
solicitud al origen. Normalmente, la mayoría de los eventos de solicitud de lectores no se reenvían al
origen, sino que CloudFront responde a una solicitud con un objeto que ya está en la caché de borde.
Si la función modifica la solicitud basándose en un evento de solicitud al origen, CloudFront almacena
en caché la respuesta a la solicitud al origen modificada.

Agregar desencadenadores mediante la consola de


Lambda
Para agregar desencadenadores 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 Región de la parte superior de la página, elija US East (N. Virginia) (EE. UU. Este (Norte de
Virginia)).
3. En la página Functions (Funciones), elija el nombre de la función a la que desee añadir disparadores.
4. Elija Qualifiers (Cualificadores) y, a continuación, elija la pestaña Versions (Versiones).
5. Elija la versión a la que desea añadir disparadores.
Important

No puede crear disparadores para la versión $LATEST, debe crearlos para una versión
numerada.

Una vez elegida una versión, el nombre del botón cambia a Version: $LATEST (Versión: $LATEST) o
Version: número de versión.
6. Elija la pestaña Triggers (Disparadores).
7. Elija Add triggers (Añadir disparadores).
8. En el cuadro de diálogo Add trigger (Agregar desencadenador), elija el cuadro con puntos y, a
continuación, CloudFront.
Note

Si ya ha creado uno o varios desencadenadores, CloudFront es el servicio predeterminado.


9. Especifique los siguientes valores para indicar cuándo desea que se ejecute la función de Lambda.

ID de distribución

Elija el ID de la distribución donde desea añadir el disparador.

362
Amazon CloudFront Guía para desarrolladores
Agregar desencadenadores
mediante la consola de CloudFront

Comportamiento de la caché

Elija el comportamiento de la caché que especifica los objetos en los que desea ejecutar la
función.
Note

Si especifica * como comportamiento de la caché, la función de Lambda se implementa


con el comportamiento predeterminado de la caché.
Evento CloudFront

Elija el evento de CloudFront que provoca la ejecución de la función.


Include body (Incluir cuerpo)

Marque esta casilla si desea obtener acceso al cuerpo de la solicitud en la función.


Enable trigger and replicate (Habilitar el disparador y replicar)

Seleccione esta casilla de verificación para que AWS Lambda replique la función en las regiones
de todo el mundo.
10. Elija Submit.

La función comienza a procesar solicitudes de los eventos de CloudFront especificados cuando


se implementa la distribución de CloudFront actualizada. Para determinar si una distribución se ha
implementado, elija Distributions (Distribuciones) en el panel de navegación. Cuando una distribución
se implementa, el valor de la columna Status (Estado) de la distribución cambia de In Progress (En
curso) a Deployed (Implementada).

Agregar desencadenadores mediante la consola de


CloudFront
Para agregar desencadenadores para eventos de CloudFront a una función de Lambda (consola
de CloudFront)

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 en


https://console.aws.amazon.com/lambda/.
b. En la lista de regiones de la parte superior de la página, elija US East (N. Virginia) (EE. UU. Este
(Norte de Virginia)).
c. En la lista de funciones, seleccione el nombre de la función a la que desee añadir disparadores.
d. ElijaQualifiers (Cualificadores), la pestaña Versions (Versiones) 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/cloudfront/.
3. En la lista de distribuciones, seleccione el ID de la distribución a la que desee añadir disparadores.
4. Elija la pestaña Behaviors (Comportamientos).

363
Amazon CloudFront Guía para desarrolladores
Comprobación y depuración

5. Seleccione la casilla del comportamiento de caché al que desee añadir disparadores y, a continuación,
elija Edit (Editar).
6. En Lambda Function Associations (Asociaciones de función Lambda), en la lista Event Type (Tipo de
evento), elija cuándo desea que se ejecute la función: con solicitudes de espectador, respuestas de
espectador, solicitudes de origen o respuestas de origen.

Para obtener más información, consulte A continuación, se explica cómo decidir qué evento de
CloudFront utilizar para desencadenar una función de Lambda. (p. 361).
7. Pegue el ARN de la función de Lambda que desea ejecutar cuando ocurra el evento seleccionado.
Este es el valor que ha copiado en el paso 1.
8. Seleccione Include Body (Incluir cuerpo) si desea obtener acceso al cuerpo de la solicitud en la
función.

Si simplemente desea reemplazar el cuerpo de la solicitud, no necesita seleccionar esta opción.


9. Para ejecutar la misma función con distintos tipos de eventos, elija + y repita los pasos 6 y 7.
10. Elija Yes, Edit (Sí, editar).
11. Para añadir disparadores de varios comportamientos de la caché para esa distribución, repita los
pasos 5 al 9.

La función comienza a procesar solicitudes de los eventos de CloudFront especificados cuando


se implementa la distribución de CloudFront actualizada. Para determinar si una distribución se ha
implementado, elija Distributions (Distribuciones) en el panel de navegación. Cuando una distribución
se implementa, el valor de la columna Status (Estado) de la distribución cambia de In Progress (En
curso) a Deployed (Implementada).

Prueba y depuración de funciones de


Lambda@Edge
En este tema se incluye secciones que describen estrategias para probar y depurar las funciones de
Lambda@Edge. Es importante probar el código de la función de Lambda@Edge de forma independiente,
para asegurarse de que completa la tarea prevista, y realizar pruebas de integración, para asegurarse de
que la funciona correctamente con CloudFront.

Durante las pruebas de integración o una vez implementada su función, es posible que deba depurar
errores de CloudFront, como errores HTTP 5xx. Los errores pueden ser una respuesta no válida que
devuelve la función de Lambda, errores de ejecución cuando se desencadena la función o errores debido
a limitación controlada de ejecución por parte del servicio de Lambda. En las secciones de este tema
se explican estrategias para determinar qué tipo de error es la causa del problema y, a continuación, se
ofrecen pasos que puede seguir para corregir el problema.
Note

Al examinar las métricas o los archivos de registro de CloudWatch durante la solución de


problemas, tenga en cuenta que se muestran o almacenan en la región más cercana a la
ubicación donde se ejecutó la función. Por lo tanto, si tiene un sitio web o una aplicación web
con usuarios en el Reino Unido, y tiene una función de Lambda asociada a su distribución, por
ejemplo, debe cambiar la región para ver las métricas o los archivos de registro de CloudWatch
para la región de AWS de Londres. Para obtener más información, consulte Determinación de la
región de Lambda@Edge más adelante en este tema.

Temas
• Prueba de sus funciones de Lambda@Edge (p. 365)

364
Amazon CloudFront Guía para desarrolladores
Prueba de sus funciones de Lambda@Edge

• Identificación de errores de función de Lambda en CloudFront (p. 365)


• Solución de problemas de respuestas no válidas de funciones de Lambda (errores de
validación) (p. 368)
• Solución de errores de ejecución de funciones de Lambda (p. 369)
• Determinación de la región de Lambda@Edge (p. 369)
• Determinación de si su cuenta inserta registros en CloudWatch (p. 369)

Prueba de sus funciones de Lambda@Edge


Hay dos pasos para probar la función de Lambda: pruebas independientes y pruebas de integración.

Probar la funcionalidad independiente

Antes de agregar su función de Lambda a CloudFront, asegúrese de probar primero la funcionalidad


mediante las capacidades de prueba de la consola de Lambda o mediante otros métodos. Para
obtener más información sobre las pruebas en la consola de Lambda, consulte la sección Invocar la
función Lambda y verificar los resultados, los registros y las métricas en Crear una función Lambda
con la consola en la Guía para desarrolladores de AWS Lambda.
Probar la operación de la función en CloudFront

Es importante realizar pruebas de integración, donde la función está asociada a una distribución y se
ejecuta en función de un evento de CloudFront. Asegúrese de que la función se activa para el evento
adecuado y devuelve una respuesta que es válida y correcta para CloudFront. Por ejemplo, asegúrese
de que la estructura del evento es correcta, que solo se incluyen encabezados válidos, etc.

Mientras realiza la iteración en las pruebas de integración con la función en la consola de Lambda,
consulte los pasos que se indican en el tutorial de Lambda@Edge a medida que modifica el código o
cambia el desencadenador de CloudFront que llama a su función. Por ejemplo, asegúrese de que está
trabajando en una versión numerada de su función, tal y como se describe en este paso del tutorial:
Paso 4: Agregue un desencadenador de CloudFront para ejecutar la función (p. 344).

A medida que realiza cambios y los implementa, tenga en cuenta que pasarán varios minutos hasta
que su función actualizada y los desencadenadores de CloudFront se repliquen en todas las regiones.
Esto suele hacerse en unos minutos, pero puede tardar hasta 15 minutos.

Para comprobar si la replicación ha terminado, vaya a la consola de CloudFront y consulte la


distribució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 la
sección siguiente para verificar el funcionamiento de la función.

Tenga en cuenta que las pruebas en la consola solo validan la lógica de la función, pero no aplican
cuotas (antes denominadas límites) de servicio específicas de Lambda@Edge.

Identificación de errores de función de Lambda en


CloudFront
Una vez que haya verificado que la lógica de su función funciona correctamente, es posible que sigan
apareciendo errores HTTP 5xx cuando la función se ejecuta en CloudFront. Los errores HTTP 5xx se

365
Amazon CloudFront Guía para desarrolladores
Identificación de errores de
función de Lambda en CloudFront

pueden devolver por diversas razones, que puede incluir errores de las funciones de Lambda u otros
problemas en CloudFront.

• Si utiliza las funciones de Lambda@Edge, puede utilizar gráficos en la consola de CloudFront para
ayudar a localizar lo que está provocando el error y, a continuación, trabajar para solucionarlo. Por
ejemplo, puede ver si los errores HTTP 5xx están provocados por CloudFront o funciones de Lambda y,
a continuación, en el caso de funciones específicas, puede ver los archivos de registro relacionados para
investigar el problema.
• Para solucionar los errores HTTP en general en CloudFront, consulte los pasos de solución de
problemas en el siguiente tema: Solucionar respuestas de error del origen (p. 288).

Qué provoca los errores de función de Lambda en CloudFront


Existen varias razones por las que una función de Lambda puede provocar un error HTTP 5xx y los pasos
de solución de problemas que lleve a cabo dependerán del tipo de error. Los errores pueden clasificarse
como los siguientes:

Un error de ejecución de la función de Lambda

Un error de ejecución se produce cuando CloudFront no obtiene ninguna respuesta de Lambda


porque hay excepciones no controladas en la función o hay un error en el código. Por ejemplo, si el
código incluye callback(Error). Para obtener más información, consulte Errores de función de Lambda
en la Guía para desarrolladores de AWS Lambda.
Se devuelve a CloudFront una respuesta de función de Lambda no válida

Después de ejecutar la función, CloudFront recibe una respuesta de Lambda. Se devuelve un error
si la estructura de objetos de la respuesta no se ajusta a la Estructura de eventos (p. 372) o si la
respuesta contiene encabezados no válidos u otros campos no válidos.
La ejecución en CloudFront se limita debido a las cuotas de servicio de Lambda (anteriormente conocidas
como límites)

El servicio de Lambda limita las ejecuciones en cada región y devuelve un error si se supera la cuota.

Cómo determinar el tipo de error


Para ayudarle a decidir dónde centrarse a medida que depura y trabaja para resolver errores que devuelve
CloudFront, es útil identificar por qué CloudFront devuelve un error HTTP. Para empezar, puede utilizar
los gráficos proporcionados en la sección Monitoring (Monitoreo) de la consola de CloudFront en la
consola de administración de AWS. Para empezar, puede usar los gráficos proporcionada en la sección
Monitoring (Monitoreo) de la consola de CloudFront, consulte Monitoreo de CloudFront con Amazon
CloudWatch (p. 452).

Los siguientes gráficos pueden resultar especialmente útiles cuando desea realizar un seguimiento de los
errores devueltos por orígenes o por una función de Lambda y para acotar el tipo de problema cuando se
trata de un error de una función de Lambda.

Gráfico de índices de error

Uno de los gráficos que puede ver en la pestaña Overview (Descripción general) de cada una de las
distribuciones es un gráfico de Error rates (Índices de error). Este gráfico muestra la tasa de errores
como porcentaje de las solicitudes totales próximas a su distribución. El gráfico se muestra la tasa
de error total, errores 4xx totales, errores 5xx totales y errores 5xx totales de funciones Lambda. En
función del tipo de error y del volumen, puede seguir los pasos para investigar y solucionar la causa.

366
Amazon CloudFront Guía para desarrolladores
Identificación de errores de
función de Lambda en CloudFront

• Si ve errores de Lambda, puede seguir investigando mirando los tipos de error específicos que
devuelve la función. La pestaña Lambda@Edge errors (Errores de Lambda@Edge) incluye gráficos
que clasifican los errores de función por tipo para ayudar a identificar el problema para una función
específica.
• Si ve errores de CloudFront, puede solucionar el problema y trabajar para corregir los errores de
origen o cambiar la configuración de CloudFront. Para obtener más información, consulte Solucionar
respuestas de error del origen (p. 288).
Gráficos de respuestas de función no válida y errores de ejecución

La pestaña Lambda@Edge errors (Errores de Lambda@Edge) incluye gráficos que clasifican los
errores de Lambda@Edge de una distribución específica, por tipo. Por ejemplo, un gráfico muestra
todos los errores de ejecución por región de AWS. Para facilitar la resolución de problemas, en la
misma página, puede buscar problemas específicos abriendo y examinando los archivos de registro
de funciones específicas por región. En los registros View execution error logs (Ver registros de error
de ejecución) o View invalid function response (Ver respuesta de función no válida), elija una región (y,
para los errores de ejecución, una función) y, a continuación, elija View logs (Ver registros).

367
Amazon CloudFront Guía para desarrolladores
Solución de problemas de respuestas no válidas
de funciones de Lambda (errores de validación)

Además, lea las siguientes secciones de este capítulo para obtener más recomendaciones acerca de
la solución de problemas y la corrección de errores.
Gráfico de limitaciones

La pestaña Lambda@Edge errors (Errores de Lambda@Edge) incluye además un gráfico Throttles


(Limitaciones). A veces, el servicio de Lambda limita las invocaciones de la función por región, si
se alcanza la cuota (antes denominada límite) de simultaneidad regional. Si aparece un error limit
exceeded (límite superado), su función ha alcanzado una cuota que el servicio Lambda impone a las
ejecuciones en una región. Para obtener más información, incluido cómo solicitar un aumento de la
cuota, consulte Cuotas de Lambda@Edge (p. 524).

Para ver un ejemplo sobre cómo utilizar esta información en la solución de problemas de errores HTTP,
consulte Cuatro pasos para depurar la entrega de contenido en AWS.

Solución de problemas de respuestas no válidas de


funciones de Lambda (errores de validación)
Si identifica que el problema es un error de validación de Lambda, significa que su función de Lambda
devuelve una respuesta no válida a CloudFront. Siga las indicaciones de esta sección para realizar los
pasos que permiten revisar la función y asegurarse de que su respuesta se ajusta a los requisitos de
CloudFront.

CloudFront valida la respuesta de una función de Lambda de dos maneras:

• La respuesta de Lambda debe ajustarse a la estructura de objetos necesaria. Estos son algunos
ejemplos de estructura de objetos incorrecta: JSON que no se puede analizar, campos obligatorios
que faltan y un objeto no válido en la respuesta. Para obtener más información, consulte Estructura de
eventos (p. 372).
• La respuesta solo debe incluir valores de objetos válidos. Se producirá un error si la respuesta incluye un
objeto válido pero tiene valores que no se admiten. Por ejemplo: agregar o actualizar encabezados que
están en la lista negra o son de solo lectura (consulte Encabezados (p. 415) en el tema Requisitos y
restricciones en funciones de Lambda), superar el tamaño máximo del cuerpo (consulte Restricciones en
el tamaño de la respuesta generada en el tema Errores (p. 386) de respuesta de Lambda) y caracteres
o valores no válidos (consulte Estructura de eventos (p. 372)).

Cuando Lambda devuelve una respuesta no válida a CloudFront, los mensajes de error se escriben en
los archivos de registro que CloudFront envía a CloudWatch en la región donde se ejecutó la función de
Lambda. El comportamiento predeterminado es enviar los archivos de registro a CloudWatch cuando hay
una respuesta no válida. Sin embargo, si asoció una función de Lambda con CloudFront antes de que se
lanzara la funcionalidad, es posible que no esté habilitada para la función. Para obtener más información,
consulte Determinación de si su cuenta inserta registros en CloudWatch más adelante en este tema.

368
Amazon CloudFront Guía para desarrolladores
Solución de errores de ejecución de funciones de Lambda

CloudFront envía los archivos de registro a la región correspondiente donde se ejecutó la función, al
grupo de registros asociado a su distribución. Los grupos de registros tienen el siguiente formato: /aws/
cloudfront/LambdaEdge/DistributionId, donde DistributionId es el ID de su distribución.
Para determinar la región donde se encuentran los archivos de registro de CloudWatch, consulte
Determinación de la región de Lambda@Edge más adelante en este tema.

Si el error es reproducible, puede crear una nueva solicitud que produzca el error y, a continuación, buscar
el ID de solicitud en una respuesta fallida de CloudFront (encabezado X-Amz-Cf-Id) para encontrar un
error en los archivos de registro. La entrada del archivo de registro incluye información que puede ayudarle
a identificar por qué se devuelve el error, y también muestra el ID de solicitud de Lambda correspondiente
para que pueda analizar la causa raíz en el contexto de una única solicitud.

Si se trata de un error intermitente, puede utilizar los registros de acceso de CloudFront para encontrar
el ID de una solicitud que ha generado un error y, a continuación, buscar en los registros de CloudWatch
los mensajes de error correspondientes. Para obtener más información, consulte la sección anterior,
Determinación del tipo de error.

Solución de errores de ejecución de funciones de


Lambda
Si se trata de un error de ejecución de Lambda, puede ser útil crear declaraciones de registros para las
funciones de Lambda, escribir mensajes en los archivos de registro de CloudWatch que monitorean la
ejecución de la función en CloudFront y determinar si funciona según lo previsto. A continuación, puede
buscar esas instrucciones en los archivos de registro de CloudWatch para verificar que la función está
funcionando.
Note

Aunque no haya cambiado la función de Lambda@Edge, las actualizaciones del entorno de


ejecución de la función de Lambda podrían afectar a esa función y devolver un error de ejecución.
Para obtener más información acerca de cómo probar y migrar a una versión posterior, consulte
Próximas actualizaciones del entorno de ejecución de AWS Lambda y AWS Lambda@Edge.

Determinación de la región de Lambda@Edge


Para ver las regiones donde la función de Lambda@Edge está recibiendo tráfico, consulte las métricas
para la función en la consola de CloudFront en la consola de administración de AWS. Las métricas se
muestran para cada región de AWS. En la misma página, puede elegir una región y ver los archivos de
registro para dicha región a fin de poder investigar problemas. Debe revisar los archivos de registro de
CloudWatch en la región de AWS correcta para ver los archivos de registro creados cuando CloudFront
ejecutó su función de Lambda.

Para empezar, puede usar los gráficos proporcionada en la sección Monitoring (Monitoreo) de la consola
de CloudFront, consulte Monitoreo de CloudFront con Amazon CloudWatch (p. 452).

Determinación de si su cuenta inserta registros en


CloudWatch
De forma predeterminada, CloudFront habilita el registro de respuestas de la función de Lambda no
válidas y envía los archivos de registro a CloudWatch mediante uno de los Roles vinculados a servicios
para Lambda@Edge (p. 350). Si ha agregado funciones de Lambda@Edge a CloudFront antes de
que se lanzara la característica de registro de respuestas de funciones de Lambda, el registro estará
habilitado la próxima vez que actualice la configuración de Lambda@Edge, por ejemplo, agregando un
desencadenador de CloudFront.

369
Amazon CloudFront Guía para desarrolladores
Métricas de CloudWatch y CloudWatch Logs

Haga lo siguiente para verificar que el envío de los archivos de registro a CloudWatch está habilitado para
su cuenta:

• Compruebe si los registros aparecen en CloudWatch. Asegúrese de mirar en la región donde se ejecutó
la función de Lambda@Edge. Para obtener más información, consulte Determinación de la región de
Lambda@Edge (p. 369).
• Determine si el rol vinculado al servicio relacionado existe en su cuenta en IAM. Para ello,
abra la consola de IAM en https://console.aws.amazon.com/iam/, y, a continuación, elija
Roles para ver la lista de roles vinculados a servicios de su cuenta. Busque el siguiente rol:
AWSServiceRoleForCloudFrontLogger.

Métricas de CloudWatch y CloudWatch Logs para


funciones de Lambda
Puede usar métricas de CloudWatch para monitorear, en tiempo real, los problemas con sus funciones
de Lambda @Edge. También puede usar CloudWatch Logs para obtener los registros de funciones. Los
registros y las métricas no suponen ningún cargo adicional.

Temas
• Métricas de CloudWatch (p. 370)
• Registros de CloudWatch (p. 370)

Métricas de CloudWatch
Cuando crea un desencadenador para un evento CloudFront, Lambda comienza a enviar métricas a
CloudWatch automáticamente. Las métricas están disponibles para todas las regiones de Lambda,
pero para ver las métricas en la consola de CloudWatch u obtener los datos de métricas de la API de
CloudWatch, debe utilizar la región EE. UU. Este (Norte de Virginia) (us-east-1). El nombre del grupo de
métricas tiene el formato de: AWS/CloudFront/distribution-ID, donde ID-distribución es el ID
de la distribución de CloudFront a la que está asociada la función de Lambda @Edge.

Para obtener más información sobre las métricas de CloudWatch, consulte la Guía del usuario de Amazon
CloudWatch.

Registros de CloudWatch
Lambda envía automáticamente registros de funciones a CloudWatch Logs. Puede acceder a los archivos
de registro mediante la consola de CloudWatch o la API de CloudWatch Logs.

Lambda crea flujos de registro de CloudWatch Logs en las regiones de AWS más cercanas a las
ubicaciones donde se ejecuta la función. El nombre del grupo de registros tiene el formato /aws/lambda/
us-east-1.nombre-función, donde nombre-función es el nombre que asignó a la función cuando la
creó.
Note

Lambda@Edge limita los registros en función del volumen de solicitudes y el tamaño de los
registros.

Debe revisar los archivos de registro de CloudWatch en la región de AWS correcta para ver sus archivos
de registro de las funciones de Lambda@Edge. Para ver las regiones donde la función de Lambda@Edge

370
Amazon CloudFront Guía para desarrolladores
Eliminación de funciones y réplicas

está recibiendo tráfico, consulte los gráficos de métricas para la función en la consola de CloudFront.
Las métricas se muestran para cada región de AWS. En la misma página, puede elegir una región y, a
continuación, ver los archivos de registro para dicha región a fin de poder investigar problemas.

Para obtener más información acerca cómo utilizar CloudWatch Logs con las funciones de
Lambda@Edge, consulte lo siguiente:

• Para empezar, puede usar los gráficos proporcionada en la sección Monitoring (Monitoreo) de la consola
de CloudFront, consulte Monitoreo de CloudFront con Amazon CloudWatch (p. 452).
• Para obtener información acerca de los permisos necesarios para enviar datos a los registros de
CloudWatch, consulte Configuración de permisos y roles de IAM para Lambda@Edge (p. 349).
• Para obtener información acerca de cómo agregar el registro a una función de AWS Lambda, consulte
Registro de funciones en Node.js o Registro de funciones en Python de AWS Lambda en la Guía para
desarrolladores de AWS Lambda.
• Para obtener información acerca de las cuotas de CloudWatch Logs (anteriormente conocidas como
límites), consulte Cuotas de CloudWatch Logs en la Guía del usuario de Amazon CloudWatch Logs.

Eliminación de funciones de Lambda@Edge y


réplicas
Puede eliminar una función de Lambda@Edge solo cuando CloudFront haya eliminado las réplicas
de la función. Las réplicas de una función de Lambda se eliminan automáticamente en las siguientes
situaciones:

• Una vez que elimine la última asociación de la función desde todas sus distribuciones de CloudFront.
Si más de una distribución utiliza una función, las réplicas se eliminan solo después de que elimine la
asociación de la función desde la última distribución.
• Después de eliminar la última distribución a la que se asoció una función.

Las réplicas suelen eliminarse al cabo de unas horas. No puede eliminar manualmente las réplicas de
las funciones Lambda@Edge. Esto contribuye a evitar una situación en la que se elimina una réplica que
todavía está en uso, lo que daría lugar a un error.

No cree aplicaciones que utilicen réplicas de funciones de Lambda@Edge fuera de CloudFront. Estas
réplicas se eliminan cuando se eliminan sus asociaciones con distribuciones o cuando se eliminan las
propias distribuciones. La réplica de la que depende una aplicación externa puede eliminarse sin ningún
tipo de advertencia, lo que provocaría un error.

Para eliminar una asociación de las funciones de Lambda@Edge de 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. Elija el ID de la distribución que tiene la asociación de las funciones Lambda@Edge que desea
eliminar.
3. Elija la pestaña Behaviors (Comportamientos).
4. Active la casilla de verificación situada junto al comportamiento de la caché que tiene la asociación de
las funciones Lambda@Edge que desea eliminar y, a continuación, elija Editar.
5. Desplácese hacia abajo hasta Asociaciones de las funciones Lambda y elija el icono X junto a cada
asociación de las funciones Lambda@Edge que desee eliminar.
6. Elija Yes, edit para guardar los cambios.

371
Amazon CloudFront Guía para desarrolladores
Estructura de eventos

Después de eliminar una asociación de la función de Lambda@Edge de una distribución de CloudFront,


opcionalmente puede eliminar la función de Lambda o la versión de la función de AWS Lambda. También
puede eliminar una versión específica de una función de Lambda si la versión no tiene ninguna distribución
de CloudFront asociada. Si elimina todas las asociaciones para una versión de función de Lambda, puede
eliminar normalmente la versión de la función unas pocas horas más tarde.

Estructura de eventos
En los temas siguientes se describen los objetos de evento de solicitud y respuesta que CloudFront pasa a
una función de Lambda @Edge cuando se desencadena.

Temas
• Selección dinámica del origen (p. 372)
• Eventos de solicitud (p. 372)
• Eventos de respuesta (p. 377)

Selección dinámica del origen


Puede utilizar el patrón de ruta de un comportamiento de la caché (p. 53) para enviar las solicitudes a
un origen, en función de la ruta y el nombre del objeto solicitado, como images/*.jpg. Lambda@Edge
también le permite direccionar las solicitudes a un origen en función de otras características, como los
valores de los encabezados de solicitudes.

Esta selección dinámica del origen puede resultar útil en varios casos. Por ejemplo, puede distribuir
solicitudes entre orígenes de diferentes zonas geográficas para facilitar el balanceo de carga global.
También puede direccionar solicitudes selectivamente a varios orígenes, cada uno de ellos con un
propósito distinto: control de bots, optimización SEO, autenticación, etc. Para obtener ejemplos de
código que muestran cómo utilizar esta característica, consulte Selección de origen dinámico basada en
contenido: ejemplos (p. 401).

En el evento de solicitud de origen de CloudFront, el objeto origin de la estructura de eventos contiene


información sobre el origen al que se enviaría la solicitud, en función del patrón de ruta. Puede actualizar
los valores del objeto origin para enviar una solicitud a otro origen. Al actualizar el objeto origin, no es
necesario definir el origen en la distribución. También puede reemplazar un objeto de origen de Amazon
S3 por un objeto de origen personalizado y viceversa. Sin embargo, solo se puede especificar un único
origen por solicitud, ya sea un origen personalizado o un origen de Amazon S3, pero no ambos.

Eventos de solicitud
En los temas siguientes se muestra la estructura del objeto que CloudFront pasa a una función de Lambda
para los eventos de solicitud de lector y de origen (p. 360). Estos ejemplos muestran una solicitud GET
sin cuerpo. Después de los ejemplos, se muestra una lista de todos los campos posibles en eventos de
solicitud de lector y de origen.

Temas
• Ejemplo de solicitud de lector (p. 372)
• Ejemplo de solicitud de origen (p. 373)
• Campos de eventos de solicitud (p. 374)

Ejemplo de solicitud de lector


En el ejemplo siguiente se muestra un objeto de evento de solicitud de lector.

372
Amazon CloudFront Guía para desarrolladores
Eventos de solicitud

{
"Records": [
{
"cf": {
"config": {
"distributionDomainName": "d111111abcdef8.cloudfront.net",
"distributionId": "EDFDVBD6EXAMPLE",
"eventType": "viewer-request",
"requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
},
"request": {
"clientIp": "203.0.113.178",
"headers": {
"host": [
{
"key": "Host",
"value": "d111111abcdef8.cloudfront.net"
}
],
"user-agent": [
{
"key": "User-Agent",
"value": "curl/7.66.0"
}
],
"accept": [
{
"key": "accept",
"value": "*/*"
}
]
},
"method": "GET",
"querystring": "",
"uri": "/"
}
}
}
]
}

Ejemplo de solicitud de origen


En el ejemplo siguiente se muestra un objeto de evento de solicitud de origen.

{
"Records": [
{
"cf": {
"config": {
"distributionDomainName": "d111111abcdef8.cloudfront.net",
"distributionId": "EDFDVBD6EXAMPLE",
"eventType": "origin-request",
"requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
},
"request": {
"clientIp": "203.0.113.178",
"headers": {
"x-forwarded-for": [
{
"key": "X-Forwarded-For",
"value": "203.0.113.178"
}

373
Amazon CloudFront Guía para desarrolladores
Eventos de solicitud

],
"user-agent": [
{
"key": "User-Agent",
"value": "Amazon CloudFront"
}
],
"via": [
{
"key": "Via",
"value": "2.0 2afae0d44e2540f472c0635ab62c232b.cloudfront.net (CloudFront)"
}
],
"host": [
{
"key": "Host",
"value": "example.org"
}
],
"cache-control": [
{
"key": "Cache-Control",
"value": "no-cache, cf-no-cache"
}
]
},
"method": "GET",
"origin": {
"custom": {
"customHeaders": {},
"domainName": "example.org",
"keepaliveTimeout": 5,
"path": "",
"port": 443,
"protocol": "https",
"readTimeout": 30,
"sslProtocols": [
"TLSv1",
"TLSv1.1",
"TLSv1.2"
]
}
},
"querystring": "",
"uri": "/"
}
}
}
]
}

Campos de eventos de solicitud


Los datos del objeto de evento de solicitud se incluyen en dos subobjetos: config
(Records.cf.config) y request (Records.cf.request). En las listas siguientes se describen los
campos de cada subobjeto.

Campos del objeto Config


En la siguiente lista se describen los campos del objeto config (Records.cf.config).

distributionDomainName (solo lectura)

El nombre de dominio de la distribución asociada a la solicitud.

374
Amazon CloudFront Guía para desarrolladores
Eventos de solicitud

distributionID (solo lectura)

El ID de la distribución asociada a la solicitud.


eventType (solo lectura)

El tipo de desencadenador asociado a la solicitud: viewer-request u origin-request.


requestId (solo lectura)

Una cadena cifrada que identifica de forma inequívoca una solicitud de lector a CloudFront. El valor
requestId también aparece en los registros de acceso de CloudFront como x-edge-request-
id. Para obtener más información, consulte Configuración y uso de registros estándar (registros de
acceso) (p. 463) y Campos de archivo de registro estándar (p. 469).

Campos del objeto Request


En la siguiente lista se describen los campos del objeto request (Records.cf.request).

clientIp (solo lectura)

La dirección IP del espectador que ha realizado la solicitud. Si el espectador utiliza un proxy HTTP o
un balanceador de carga para enviar la solicitud, el valor es la dirección IP del proxy o del balanceador
de carga.
headers (lectura y escritura)

Los encabezados de la solicitud. Tenga en cuenta lo siguiente:


• Las claves del objeto headers son nombres de encabezado HTTP estándar en minúsculas. El
uso de claves en minúsculas le proporciona acceso a los valores del encabezado sin diferenciar
mayúsculas de minúsculas.
• Cada objeto header (por ejemplo, headers["accept"] o headers["host"]) es una matriz de
pares de clave-valor. Para un encabezado determinado, la matriz contiene un par de clave-valor
para cada valor de la solicitud.
• key contiene el nombre con distinción de mayúsculas y minúsculas del encabezado tal como
aparecía en la solicitud HTTP; por ejemplo Host, User-Agent, X-Forwarded-For, etc.
• value contiene el valor del encabezado tal como aparecía en la solicitud HTTP.
• Cuando su función Lambda agrega o modifica encabezados de solicitud y no incluye el campo key
del encabezado, Lambda @Edge inserta automáticamente un encabezado key usando el nombre
de encabezado que proporcione. Independientemente de cómo haya formateado el nombre del
encabezado, la clave de encabezado que se inserta automáticamente se formatea con mayúscula
inicial para cada parte, separada por guiones (-).

Por ejemplo, puede agregar un encabezado como el siguiente, sin la clave de encabezado key:

"user-agent": [
{
"value": "ExampleCustomUserAgent/1.X.0"
}
]

En este ejemplo, Lambda @Edge inserta automáticamente "key": "User-Agent".

Para obtener más información acerca de restricciones de uso de encabezados, consulte


Encabezados (p. 415).
method (solo lectura)

El método HTTP de la solicitud.

375
Amazon CloudFront Guía para desarrolladores
Eventos de solicitud

querystring (lectura y escritura)

La cadena de consulta, si hay alguna, de la solicitud. Si la solicitud no incluye una cadena de


consulta, el objeto del evento incluye igualmente querystring con un valor vacío. Para obtener
más información acerca de cadenas de consulta, consulte Almacenamiento en caché de contenido en
función de parámetros de cadenas de consulta (p. 274).
uri (lectura y escritura)

La ruta relativa del objeto solicitado. Si su función Lambda modifica el valor uri, tenga en cuenta lo
siguiente:
• El nuevo valor uri debe comenzar con una barra diagonal (/).
• Si una función cambia el valor de uri, se cambia el objeto que el lector solicita.
• Si una función cambia el valor de uri, no cambia el comportamiento de la caché de la solicitud ni
del origen al que se envía la solicitud.
body (lectura y escritura)

El cuerpo de la solicitud HTTP. La estructura body puede contener los siguientes campos:
inputTruncated (solo lectura)

Un indicador booleano que indica si Lambda@Edge truncó el cuerpo. Para obtener más
información, consulte Cuotas de tamaño para el cuerpo de la solicitud con la opción Include Body
(Incluir cuerpo) (p. 419).
action (lectura y escritura)

La acción que va a realizar con el cuerpo. Las opciones de action son las siguientes:
• read-only: Esta es la opción predeterminada. Cuando se devuelve la respuesta de la
función de Lambda, si action es solo lectura, Lambda@Edge omite los cambios realizados en
encoding o data.
• replace: Especifique este valor cuando desee reemplazar el cuerpo enviado al origen.
encoding (lectura y escritura)

La codificación del cuerpo. Cuando Lambda@Edge expone el cuerpo a la función de Lambda,


primero lo convierte a base64-encoding. Si elige replace en action para reemplazar el
cuerpo, puede elegir usar la codificación base64 o text (el valor predeterminado). Si especifica
encoding como base64 pero el cuerpo no tiene una codificación base64 válida, CloudFront
devuelve un error.
data (lectura y escritura)

El contenido del cuerpo de la solicitud.


origin (lectura y escritura) (solo eventos de origen)

El origen al que se envía la solicitud. La estructura origin debe contener exactamente un origen, que
puede ser un origen personalizado o un origen de Amazon S3. La estructura de origen puede contener
los siguientes campos:
customHeaders (lectura/escritura) (orígenes personalizados y de Amazon S3)

Si desea incluir encabezados personalizados con la solicitud, especifique un nombre de


encabezado y un par de valores para cada uno de ellos. No puede agregar encabezados que
estén en una lista negra, y un encabezado con el mismo nombre no puede estar presente
en Records.cf.request.headers. Las notas sobre encabezados de solicitud (p. 375)
también se aplican a los encabezados personalizados. Para obtener más información, consulte
Encabezados personalizados que CloudFront no puede agregar a solicitudes de origen (p. 321) y
Encabezados de listas negras (p. 415).
domainName (lectura/escritura) (orígenes personalizados y de Amazon S3)

El nombre de dominio del origen. El nombre de dominio no puede estar vacío.

376
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta

• Para orígenes personalizados: especifique un nombre de dominio DNS, como


www.example.com. El nombre de dominio no puede incluir dos puntos (:) y no puede ser una
dirección IP. El nombre de dominio puede tener una longitud de hasta 253 caracteres.
• Para orígenes de Amazon S3: especifique el nombre de dominio DNS del bucket de Amazon
S3, como awsexamplebucket.s3.eu-west-1.amazonaws.com. El nombre puede tener
una longitud de hasta 128 caracteres y debe escribirse en letras minúsculas.
path (lectura/escritura) (orígenes personalizados y de Amazon S3)

La ruta de directorio del servidor donde la solicitud debería encontrar el contenido. La ruta debe
comenzar con una barra diagonal (/), pero no debe terminar con una (por ejemplo, no debería
terminar con example-path/). Solo para los orígenes personalizados: la ruta debe estar
codificada como una URL y tener una longitud máxima de 255 caracteres.
keepaliveTimeout (lectura y escritura) (solo orígenes personalizados)

El periodo de tiempo, en segundos, que CloudFront debería intentar mantener la conexión con
el origen después de recibir el último paquete de la respuesta. El valor debe ser un número
comprendido entre 1 y 60, ambos inclusive.
port (lectura y escritura) (solo orígenes personalizados)

El puerto al que CloudFront debe conectarse en el origen personalizado. Este valor debe ser 80,
443 o un número comprendido entre 1024 y 65535, ambos inclusive.
protocol (lectura y escritura) (solo orígenes personalizados)

El protocolo de conexión que CloudFront debe usar al conectarse a su origen. El valor puede ser
http o https.
readTimeout (lectura y escritura) (solo orígenes personalizados)

El tiempo, en segundos, que CloudFront debe esperar una respuesta después de enviar una
solicitud a su origen. También especifica cuánto tiempo debe esperar CloudFront después de
recibir un paquete de una respuesta antes de recibir el siguiente paquete. El valor debe ser un
número comprendido entre 4 y 60, ambos inclusive.
sslProtocols (lectura y escritura) (solo orígenes personalizados)

El protocolo SSL/TLS mínimo que CloudFront puede utilizar al establecer una conexión HTTPS
con su origen. Los valores pueden ser alguno de los siguientes: TLSv1.2, TLSv1.1, TLSv1 o
SSLv3.
authMethod (lectura/escritura) (solo orígenes de Amazon S3)

Si utiliza una identidad de acceso de origen (OAI) (p. 223), establezca este campo en origin-
access-identity o en none si no utiliza una OAI. Si establece authMethod en origin-
access-identity, se aplican varios requisitos:
• Debe especificar el elemento region (consulte el siguiente campo).
• Debe utilizar la misma OAI cuando cambie la solicitud de un origen de Amazon S3 a otro.
• No se puede utilizar una OAI cuando se cambia la solicitud de un origen personalizado a un
origen de Amazon S3.
region (lectura/escritura) (solo orígenes de Amazon S3)

La región de AWS de su bucket de Amazon S3. Esto solo es necesario cuando se establece
authMethod en origin-access-identity.

Eventos de respuesta
En los temas siguientes se muestra la estructura del objeto que CloudFront pasa a una función Lambda
para los eventos de respuesta de lector y de origen (p. 360). Después de los ejemplos, se muestra una
lista de todos los campos posibles en eventos de respuesta de lector y de origen.

377
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta

Temas
• Respuesta de origen de ejemplo (p. 378)
• Respuesta de lector de ejemplo (p. 380)
• Campos del evento de respuesta (p. 382)

Respuesta de origen de ejemplo


En el ejemplo siguiente se muestra un objeto de evento de respuesta de origen.

{
"Records": [
{
"cf": {
"config": {
"distributionDomainName": "d111111abcdef8.cloudfront.net",
"distributionId": "EDFDVBD6EXAMPLE",
"eventType": "origin-response",
"requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
},
"request": {
"clientIp": "203.0.113.178",
"headers": {
"x-forwarded-for": [
{
"key": "X-Forwarded-For",
"value": "203.0.113.178"
}
],
"user-agent": [
{
"key": "User-Agent",
"value": "Amazon CloudFront"
}
],
"via": [
{
"key": "Via",
"value": "2.0 8f22423015641505b8c857a37450d6c0.cloudfront.net (CloudFront)"
}
],
"host": [
{
"key": "Host",
"value": "example.org"
}
],
"cache-control": [
{
"key": "Cache-Control",
"value": "no-cache, cf-no-cache"
}
]
},
"method": "GET",
"origin": {
"custom": {
"customHeaders": {},
"domainName": "example.org",
"keepaliveTimeout": 5,
"path": "",
"port": 443,
"protocol": "https",

378
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta

"readTimeout": 30,
"sslProtocols": [
"TLSv1",
"TLSv1.1",
"TLSv1.2"
]
}
},
"querystring": "",
"uri": "/"
},
"response": {
"headers": {
"access-control-allow-credentials": [
{
"key": "Access-Control-Allow-Credentials",
"value": "true"
}
],
"access-control-allow-origin": [
{
"key": "Access-Control-Allow-Origin",
"value": "*"
}
],
"date": [
{
"key": "Date",
"value": "Mon, 13 Jan 2020 20:12:38 GMT"
}
],
"referrer-policy": [
{
"key": "Referrer-Policy",
"value": "no-referrer-when-downgrade"
}
],
"server": [
{
"key": "Server",
"value": "ExampleCustomOriginServer"
}
],
"x-content-type-options": [
{
"key": "X-Content-Type-Options",
"value": "nosniff"
}
],
"x-frame-options": [
{
"key": "X-Frame-Options",
"value": "DENY"
}
],
"x-xss-protection": [
{
"key": "X-XSS-Protection",
"value": "1; mode=block"
}
],
"content-type": [
{
"key": "Content-Type",
"value": "text/html; charset=utf-8"
}

379
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta

],
"content-length": [
{
"key": "Content-Length",
"value": "9593"
}
]
},
"status": "200",
"statusDescription": "OK"
}
}
}
]
}

Respuesta de lector de ejemplo


En el ejemplo siguiente se muestra un objeto de evento de respuesta de lector.

{
"Records": [
{
"cf": {
"config": {
"distributionDomainName": "d111111abcdef8.cloudfront.net",
"distributionId": "EDFDVBD6EXAMPLE",
"eventType": "viewer-response",
"requestId": "4TyzHTaYWb1GX1qTfsHhEqV6HUDd_BzoBZnwfnvQc_1oF26ClkoUSEQ=="
},
"request": {
"clientIp": "203.0.113.178",
"headers": {
"host": [
{
"key": "Host",
"value": "d111111abcdef8.cloudfront.net"
}
],
"user-agent": [
{
"key": "User-Agent",
"value": "curl/7.66.0"
}
],
"accept": [
{
"key": "accept",
"value": "*/*"
}
]
},
"method": "GET",
"querystring": "",
"uri": "/"
},
"response": {
"headers": {
"access-control-allow-credentials": [
{
"key": "Access-Control-Allow-Credentials",
"value": "true"
}
],

380
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta

"access-control-allow-origin": [
{
"key": "Access-Control-Allow-Origin",
"value": "*"
}
],
"date": [
{
"key": "Date",
"value": "Mon, 13 Jan 2020 20:14:56 GMT"
}
],
"referrer-policy": [
{
"key": "Referrer-Policy",
"value": "no-referrer-when-downgrade"
}
],
"server": [
{
"key": "Server",
"value": "ExampleCustomOriginServer"
}
],
"x-content-type-options": [
{
"key": "X-Content-Type-Options",
"value": "nosniff"
}
],
"x-frame-options": [
{
"key": "X-Frame-Options",
"value": "DENY"
}
],
"x-xss-protection": [
{
"key": "X-XSS-Protection",
"value": "1; mode=block"
}
],
"age": [
{
"key": "Age",
"value": "2402"
}
],
"content-type": [
{
"key": "Content-Type",
"value": "text/html; charset=utf-8"
}
],
"content-length": [
{
"key": "Content-Length",
"value": "9593"
}
]
},
"status": "200",
"statusDescription": "OK"
}
}
}

381
Amazon CloudFront Guía para desarrolladores
Eventos de respuesta

]
}

Campos del evento de respuesta


Los datos del objeto de evento de respuesta se incluyen en tres subobjetos: config
(Records.cf.config), request (Records.cf.request) y response (Records.cf.response).
Para obtener más información acerca de los campos del objeto de solicitud, consulte Campos del objeto
Request (p. 375). En las listas siguientes se describen los campos de los subobjetos response y
config.

Campos del objeto Config


En la siguiente lista se describen los campos del objeto config (Records.cf.config).

distributionDomainName (solo lectura)

El nombre de dominio de la distribución asociada a la respuesta.


distributionID (solo lectura)

El ID de la distribución asociada a la respuesta.


eventType (solo lectura)

El tipo de desencadenador asociado a la respuesta: origin-response o viewer-response.


requestId (solo lectura)

Una cadena cifrada que identifica de forma inequívoca la solicitud del lector a CloudFront a la que
está asociada esta respuesta. El valor requestId también aparece en los registros de acceso de
CloudFront como x-edge-request-id. Para obtener más información, consulte Configuración
y uso de registros estándar (registros de acceso) (p. 463) y Campos de archivo de registro
estándar (p. 469).

Campos del objeto Response


En la siguiente lista se describen los campos del objeto response (Records.cf.response). Para
obtener información sobre el uso de una función de Lambda @Edge para generar una respuesta HTTP,
consulte Generación de respuestas HTTP en los disparadores de solicitud (p. 383).

headers (lectura y escritura)

Los encabezados de la respuesta. Tenga en cuenta lo siguiente:


• Las claves del objeto headers son nombres de encabezado HTTP estándar en minúsculas. El
uso de claves en minúsculas le proporciona acceso a los valores del encabezado sin diferenciar
mayúsculas de minúsculas.
• Cada objeto header (por ejemplo, headers["content-type"] o headers["content-
length"]) es una matriz de pares de clave-valor. Para un encabezado determinado, la matriz
contiene un par de clave-valor para cada valor de la respuesta.
• key contiene el nombre con distinción de mayúsculas y minúsculas del encabezado tal como
aparece en la respuesta HTTP; por ejemplo Content-Type, Content-Length, etc.
• value contiene el valor del encabezado tal como aparece en la respuesta HTTP.
• Cuando su función Lambda agrega o modifica encabezados de respuesta y no incluye el campo
key del encabezado, Lambda @Edge inserta automáticamente un encabezado key usando
el nombre de encabezado que proporcione. Independientemente de cómo haya formateado el
nombre del encabezado, la clave de encabezado que se inserta automáticamente se formatea con
mayúscula inicial para cada parte, separada por guiones (-).

382
Amazon CloudFront Guía para desarrolladores
Trabajo con solicitudes y respuestas

Por ejemplo, puede agregar un encabezado como el siguiente, sin la clave de encabezado key:

"content-type": [
{
"value": "text/html;charset=UTF-8"
}
]

En este ejemplo, Lambda @Edge inserta automáticamente "key": "Content-Type".

Para obtener más información acerca de restricciones de uso de encabezados, consulte


Encabezados (p. 415).
status

Código de estado HTTP de la respuesta.


statusDescription

La descripción del estado HTTP de la respuesta.

Trabajo con solicitudes y respuestas


Puede utilizar Lambda@Edge para trabajar con solicitudes y respuestas de varias maneras:

• Generación de respuestas HTTP en los disparadores de solicitud (p. 383)


• Actualización de respuestas HTTP en disparadores de respuesta del origen (p. 386)
• Acceso al cuerpo de una solicitud eligiendo la opción Include Body (Incluir cuerpo) (p. 387)
• Uso de funciones de Lambda@Edge con conmutación por error de origen (p. 383)

Uso de funciones de Lambda@Edge con conmutación


por error de origen
Puede utilizar las funciones de Lambda@Edge con distribuciones de CloudFront que ha configurado
con grupos de origen, por ejemplo, para conmutación por error de origen que configure para ayudar a
garantizar una alta disponibilidad. Para utilizar una función de Lambda con un grupo de origen, especifique
la función en una solicitud de origen o un desencadenador de respuesta de origen para un grupo de origen
al crear el comportamiento de la caché.

Para obtener más información, consulte los siguientes temas:

• Creación de grupos de origen: Creación de un grupo de origen (p. 265)


• Cómo utilizar la conmutación por error de origen con Lambda@Edge: Utilizar la conmutación por error
de origen con funciones de Lambda@Edge (p. 267)

Generación de respuestas HTTP en los disparadores


de solicitud
Cuando CloudFront recibe una solicitud, es posible utilizar una función de Lambda para generar una
respuesta HTTP que CloudFront devuelve directamente al lector sin enviarla al origen. La generación

383
Amazon CloudFront Guía para desarrolladores
Generación de respuestas HTTP
en los disparadores de solicitud

de respuestas HTTP reduce la carga en el origen, y normalmente también reduce la latencia para el
espectador.

Entre las situaciones más comunes para generar respuestas HTTP se incluyen las siguientes:

• Devolver una pequeña página web al lector


• Devolver 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 eventos
de CloudFront:

Eventos de solicitud del espectador

Cuando un evento de solicitud del lector activa una función, CloudFront devuelve la respuesta al lector
y no la almacena en caché.
Eventos de solicitud al origen

Cuando un evento de solicitud al origen activa una función, CloudFront busca en la caché de borde
una respuesta generada previamente por la función.
• Si la respuesta está en la caché, la función no se ejecuta y CloudFront devuelve al lector la
respuesta almacenada en la caché.
• Si la respuesta no está en la caché, la función se ejecuta, CloudFront devuelve la respuesta al lector
y también la almacena en la caché.

Para ver algunos ejemplos de código para generar respuestas HTTP, consulte Funciones de ejemplo de
Lambda@Edge (p. 387). También puede sustituir las respuestas HTTP en disparadores de respuesta.
Para obtener más información, consulte Actualización de respuestas HTTP en disparadores de respuesta
del origen (p. 386).

Modelo de programación
En esta sección se describe el modelo de programación a seguir para usar Lambda@Edge con el fin de
generar respuestas HTTP.

Temas
• Objeto de respuesta (p. 384)
• Errores (p. 386)
• Campos obligatorios (p. 386)

Objeto de respuesta
La respuesta que devuelva como parámetro result del método callback debe tener la siguiente
estructura (tenga en cuenta que solo es obligatorio el campo status).

const response = {
body: 'content',
bodyEncoding: 'text' | 'base64',
headers: {
'header name in lowercase': [{
key: 'header name in standard case',
value: 'header value'

384
Amazon CloudFront Guía para desarrolladores
Generación de respuestas HTTP
en los disparadores de solicitud

}],
...
},
status: 'HTTP status code',
statusDescription: 'status description'
};

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 como
texto.

Si especifica bodyEncoding como base64 pero el cuerpo no tiene una codificación base64 válida,
CloudFront devuelve un error.
headers

Los encabezados que desea que devuelva CloudFront en la respuesta generada. Tenga en cuenta lo
siguiente:
• Las claves del objeto headers son nombres de encabezado HTTP estándar en minúsculas. El
uso de claves en minúsculas le proporciona acceso a los valores del encabezado sin diferenciar
mayúsculas de minúsculas.
• Cada encabezado (por ejemplo, headers["accept"] or headers["host"]) es una matriz de
pares clave-valor. Para un encabezado determinado, la matriz contiene un par de clave-valor para
cada valor de la respuesta generada.
• key (opcional) es el nombre del encabezado que diferencia mayúsculas de minúsculas tal como
aparece en una solicitud HTTP; por ejemplo, accept u host.
• Especifique value como un valor de encabezado.
• Si no incluye la parte de clave de encabezado del par de clave-valor, Lambda@Edge insertará
automáticamente una clave de encabezado utilizando el nombre de encabezado que proporcione.
Independientemente de cómo haya formateado el nombre del encabezado, la clave de encabezado
que se inserta automáticamente se formatea con mayúscula inicial para cada parte, separada por
guiones (-).

Por ejemplo, puede añadir un encabezado como el siguiente, sin una clave de encabezado:
'content-type': [{ value: 'text/html;charset=UTF-8' }]

En este ejemplo, Lambda@Edge crea la siguiente clave de encabezado: Content-Type.

Para obtener más información acerca de restricciones de uso de encabezados, consulte


Encabezados (p. 415).
status

El código de estado HTTP que desea que CloudFront utilice para:


• Devolverlo en la respuesta
• Almacenarlo en la caché de borde de CloudFront cuando la respuesta la generó una función
activada por un evento de solicitud al origen
• Inicie sesión en CloudFront Configuración y uso de registros estándar (registros de
acceso) (p. 463)

385
Amazon CloudFront Guía para desarrolladores
Actualización de respuestas HTTP en
disparadores de respuesta del origen

Si el valor status no está comprendido entre 200 y 599, CloudFront devuelve un error al lector.
statusDescription

La descripción que desea que CloudFront devuelva en la respuesta, y que acompañará al código
de estado HTTP. No es obligatorio utilizar descripciones estándar, como OK en un código de estado
HTTP 200.

Errores
Los siguientes son posibles errores de respuestas HTTP generadas.

La respuesta contiene un cuerpo y especifica un código de estado 204 (Sin contenido)

Cuando una solicitud del lector activa una función, CloudFront devuelve un código de estado HTTP
502 (Gateway incorrecta) al lector cuando se cumplen las dos condiciones siguientes:
• El valor de status es 204 (Sin contenido)
• La respuesta incluye un valor para body

Esto se debe a que Lambda@Edge impone la restricción opcional de RFC 2616 que establece que
una respuesta HTTP 204 no necesita contener cuerpo de mensaje.
Restricciones en el tamaño de la respuesta generada

El tamaño máximo de una respuesta generada por una función de Lambda depende del evento que
desencadenó la función:
• Eventos de solicitud del lector: 40 KB
• Eventos de solicitud al origen: 1 MB

Si la respuesta supera el tamaño permitido, CloudFront devuelve un código de estado HTTP 502
(Gateway incorrecta) al lector.

Campos obligatorios
El campo status es obligatorio.

Todos los demás campos son opcionales.

Actualización de respuestas HTTP en disparadores de


respuesta del origen
Cuando CloudFront recibe una respuesta HTTP desde el servidor de origen, si existe un desencadenador
de respuesta del origen asociado al comportamiento de la caché, es posible modificar la respuesta HTTP
para anular 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 contenido
estático para devolverlo al espectador cuando un origen devuelva un código de estado de error (4xx o
5xx). Para ver código de muestra, consulte Ejemplo: Uso de un disparador de respuesta del origen para
actualizar el código de estado de error a 200-OK (p. 408).
• Cambiar el estado para establecer un código de estado HTTP 301 o 302, con objeto de redirigir al
usuario a otro sitio web cuando un origen devuelve un código de estado de error (4xx o 5xx). Para ver
código de muestra, consulte Ejemplo: Uso de un disparador de respuesta del origen para actualizar el
código de estado de error a 302-Found (p. 409).

386
Amazon CloudFront Guía para desarrolladores
Acceso al cuerpo de una solicitud eligiendo
la opción Include Body (Incluir cuerpo)

También puede sustituir las respuestas HTTP en eventos de solicitud al origen y del espectador.
Para obtener más información, consulte Generación de respuestas HTTP en los disparadores de
solicitud (p. 383).

Cuando trabaja con la respuesta HTTP, Lambda@Edge no expone el cuerpo que devuelve el servidor
de origen al desencadenador de respuesta del origen. Puede generar un cuerpo con contenido estático
estableciéndolo en el valor deseado, o eliminar el cuerpo dentro de la función estableciendo un valor vacío.
Si no actualiza el campo de cuerpo de la función, se devolverá al espectador el cuerpo original devuelto
por el servidor de origen.

Acceso al cuerpo de una solicitud eligiendo la opción


Include Body (Incluir cuerpo)
A partir de ahora, puede hacer que Lambda@Edge exponga el cuerpo de una solicitud en los métodos
HTTP que permiten la escritura (POST, PUT, DELETE, etc.) para que puede tener acceso a él en la
función de Lambda. Puede elegir acceso de solo lectura o puede especificar que sustituirá el cuerpo.

Para habilitar esta opción, elija Include Body (Incluir cuerpo) al crear un desencadenador de CloudFront
para la función que corresponde a un evento de solicitud al origen o del lector. Para obtener más
información, consulte Adición de disparadores para una función de Lambda@Edge (p. 359); para obtener
información acerca de cómo utilizar Include Body (Incluir cuerpo) con su función, consulte Estructura de
eventos (p. 372).

Entre los escenarios en los que es conveniente utilizar esta característica se incluyen los siguientes:

• Procesamiento de formularios web, como formularios de tipo "póngase en contacto con nosotros", sin
devolver los datos de entrada de los clientes a los servidores de origen.
• Recopilación de datos de balizas web enviados por los navegadores de los espectadores y que se
procesan en el borde.

Para ver código de muestra, consulte Funciones de ejemplo de Lambda@Edge (p. 387).
Note
Si el cuerpo de la solicitud es grande, Lambda@Edge lo trunca. Para obtener información
detallada sobre el tamaño máximo y el truncamiento, consulte Tamaño máximo del cuerpo con la
opción Include Body (Incluir cuerpo) (p. 420).

Funciones de ejemplo de Lambda@Edge


Consulte las secciones siguientes para ver ejemplos de cómo usar funciones de Lambda con CloudFront.
Note
En las funciones Node.js, cada función debe llamar al parámetro de callback para procesar
correctamente una solicitud o devolver una respuesta. Para obtener más información, consulte
Escritura y creación de una función de Lambda@Edge (p. 355).

Temas
• Ejemplos generales (p. 388)
• Generación de respuestas: ejemplos (p. 391)
• Trabajar con cadenas de consulta: ejemplos (p. 393)
• Personalizar contenido por encabezados de tipo de dispositivo o país: ejemplos (p. 397)
• Selección de origen dinámico basada en contenido: ejemplos (p. 401)
• Actualización de estados de error: ejemplos (p. 408)

387
Amazon CloudFront Guía para desarrolladores
Ejemplos generales

• Acceso al cuerpo de la solicitud: ejemplos (p. 410)

Ejemplos generales
En los ejemplos de esta sección se muestran algunas formas habituales de usar Lambda@Edge en
CloudFront.

Temas
• Ejemplo: prueba A/B (p. 388)
• Ejemplo: sobrescritura de un encabezado de respuesta (p. 390)

Ejemplo: prueba A/B


Puede utilizar el siguiente ejemplo para probar dos versiones diferentes de una imagen sin crear
redirecciones ni cambiar la dirección URL. En este ejemplo se leen las cookies de la solicitud del lector y
se modifica la URL de la solicitud en consecuencia. Si el lector no envía una cookie con uno de los valores
esperados, el ejemplo asigna aleatoriamente al lector una de las URL.

Node.js

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


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;

388
Amazon CloudFront Guía para desarrolladores
Ejemplos generales

break;
} else if (headers.cookie[i].value.indexOf(cookieExperimentB) >= 0) {
console.log('Experiment B cookie found');
experimentUri = pathExperimentB;
break;
}
}
}

if (!experimentUri) {
console.log('Experiment cookie has not been found. Throwing dice...');
if (Math.random() < 0.75) {
experimentUri = pathExperimentA;
} else {
experimentUri = pathExperimentB;
}
}

request.uri = experimentUri;
console.log(`Request uri set to "${request.uri}"`);
callback(null, request);
};

Python

import json
import random

def lambda_handler(event, context):


request = event['Records'][0]['cf']['request']
headers = request['headers']

if request['uri'] != '/experiment-pixel.jpg':
# Not an A/B Test
return request

cookieExperimentA, cookieExperimentB = 'X-Experiment-Name=A', 'X-Experiment-


Name=B'
pathExperimentA, pathExperimentB = '/experiment-group/control-pixel.jpg', '/
experiment-group/treatment-pixel.jpg'

'''
Lambda at the Edge headers are array objects.

Client may send multiple cookie headers. For example:


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

experimentUri = ""

for cookie in headers.get('cookie', []):


if cookieExperimentA in cookie['value']:
print("Experiment A cookie found")
experimentUri = pathExperimentA

389
Amazon CloudFront Guía para desarrolladores
Ejemplos generales

break
elif cookieExperimentB in cookie['value']:
print("Experiment B cookie found")
experimentUri = pathExperimentB
break

if not experimentUri:
print("Experiment cookie has not been found. Throwing dice...")
if random.random() < 0.75:
experimentUri = pathExperimentA
else:
experimentUri = pathExperimentB

request['uri'] = experimentUri
print(f"Request uri set to {experimentUri}")
return request

Ejemplo: sobrescritura de un encabezado de respuesta


En el ejemplo siguiente, se muestra cómo cambiar el valor de un encabezado de respuesta según el valor
de otro encabezado.

Node.js

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

if (headers[headerNameSrc.toLowerCase()]) {
headers[headerNameDst.toLowerCase()] = [
headers[headerNameSrc.toLowerCase()][0],
];
console.log(`Response header "${headerNameDst}" was set to ` +
`"${headers[headerNameDst.toLowerCase()][0].value}"`);
}

callback(null, response);
};

Python

import json

def lambda_handler(event, context):


response = event["Records"][0]["cf"]["response"]
headers = response["headers"]

headerNameSrc = "X-Amz-Meta-Last-Modified"
headerNameDst = "Last-Modified"

if headers.get(headerNameSrc.lower(), None):
headers[headerNameDst.lower()] = [headers[headerNameSrc.lower()][0]]
print(f"Response header {headerNameDst.lower()} was set to
{headers[headerNameSrc.lower()][0]}")

return response

390
Amazon CloudFront Guía para desarrolladores
Generación de respuestas: ejemplos

Generación de respuestas: ejemplos


En los ejemplos de esta sección se muestra cómo puede usar Lambda@Edge para generar respuestas.

Temas
• Ejemplo: envío de contenido estático (respuesta generada) (p. 391)
• Ejemplo: generación de una redirección HTTP (respuesta generada) (p. 392)

Ejemplo: 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 web
está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. Para
obtener más información, consulte Generación de respuestas HTTP en los disparadores de
solicitud (p. 383). También puede sustituir la respuesta HTTP en eventos de respuesta del
origen y al espectador. Para obtener más información, consulte Actualización de respuestas HTTP
en disparadores de respuesta del origen (p. 386).

Node.js

'use strict';

const content = `
<\!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Simple Lambda@Edge Static Content Response</title>
</head>
<body>
<p>Hello from Lambda@Edge!</p>
</body>
</html>
`;

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'
}]
},
body: content,
};
callback(null, response);
};

391
Amazon CloudFront Guía para desarrolladores
Generación de respuestas: ejemplos

Python

import json

CONTENT = """
<\!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Simple Lambda@Edge Static Content Response</title>
</head>
<body>
<p>Hello from Lambda@Edge!</p>
</body>
</html>
"""

def lambda_handler(event, context):


# Generate HTTP OK response using 200 status code with HTML body.
response = {
'status': '200',
'statusDescription': 'OK',
'headers': {
'cache-control': [
{
'key': 'Cache-Control',
'value': 'max-age=100'
}
],
"content-type": [
{
'key': 'Content-Type',
'value': 'text/html'
}
]
},
'body': CONTENT
}
return response

Ejemplo: generación de una redirección HTTP (respuesta


generada)
En el siguiente ejemplo se muestra cómo generar una redirección HTTP.
Note

Puede generar respuestas HTTP para los eventos de solicitud del espectador y al origen. Para
obtener más información, consulte Generación de respuestas HTTP en los disparadores de
solicitud (p. 383).

Node.js

'use strict';

exports.handler = (event, context, callback) => {


/*
* Generate HTTP redirect response with 302 status code and Location header.
*/
const response = {
status: '302',

392
Amazon CloudFront Guía para desarrolladores
Trabajar con cadenas de consulta: ejemplos

statusDescription: 'Found',
headers: {
location: [{
key: 'Location',
value: 'http://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html',
}],
},
};
callback(null, response);
};

Python

def lambda_handler(event, context):

# Generate HTTP redirect response with 302 status code and Location header.

response = {
'status': '302',
'statusDescription': 'Found',
'headers': {
'location': [{
'key': 'Location',
'value': 'http://docs.aws.amazon.com/lambda/latest/dg/lambda-
edge.html'
}]
}
}

return response

Trabajar con cadenas de consulta: ejemplos


En los ejemplos de esta sección se incluyen formas de usar Lambda@Edge con cadenas de consulta.

Temas
• Ejemplo: agregar un encabezado en función de un parámetro de la cadena de consulta (p. 393)
• Ejemplo: normalizar parámetros de cadenas de consulta para mejorar la tasa de acceso a la
caché (p. 394)
• Ejemplo: redireccionamiento de los usuarios sin autenticar a una página de inicio de sesión (p. 396)

Ejemplo: agregar un encabezado en función de un parámetro de


la cadena de consulta
El 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.

Node.js

'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

393
Amazon CloudFront Guía para desarrolladores
Trabajar con cadenas de consulta: ejemplos

* convert the key-value pair to a header. Here's what the function does:
* 1. Parses the query string and gets the key-value pair.
* 2. Adds a header to the request using the key-value pair that the function got
in step 1.
*/

/* 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);
}

Python

from urllib.parse import parse_qs, urlencode

def lambda_handler(event, context):


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 dictionary/json


params = {k : v[0] for k, v in parse_qs(request['querystring']).items()}

# Move auth param from querystring to headers


headerName = 'Auth-Header'
request['headers'][headerName.lower()] = [{'key': headerName, 'value':
params['auth']}]
del params['auth']

# Update request querystring


request['querystring'] = urlencode(params)

return request

Ejemplo: normalizar parámetros de cadenas de consulta para


mejorar la tasa de acceso a la caché
El siguiente ejemplo muestra cómo mejorar la tasa de acceso a la caché haciendo los siguientes cambios
en las cadenas de consulta antes de que CloudFront reenvíe las solicitudes a su origen:

• Alfabetizar los pares de clave-valor por el nombre del parámetro.


• Cambiar a minúsculas el modelo de mayúsculas y minúsculas de los pares de clave-valor.

394
Amazon CloudFront Guía para desarrolladores
Trabajar con cadenas de consulta: ejemplos

Para obtener más información, consulte Almacenamiento en caché de contenido en función de parámetros
de cadenas de consulta (p. 274).

Node.js

'use strict';

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);
};

Python

from urllib.parse import parse_qs, urlencode

def lambda_handler(event, context):


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
'''
print("Query string: ", request["querystring"])

395
Amazon CloudFront Guía para desarrolladores
Trabajar con cadenas de consulta: ejemplos

# Parse request query string to get js object


params = {k : v[0] for k, v in parse_qs(request['querystring'].lower()).items()}

# Sort param keys


sortedParams = sorted(params.items(), key=lambda x: x[0])

# Update request querystring with normalized


request['querystring'] = urlencode(sortedParams)

return request

Ejemplo: redireccionamiento de los usuarios sin autenticar a una


página de inicio de sesión
El siguiente ejemplo muestra cómo redirigir a los usuarios una página de inicio de sesión si no ha
introducido sus credenciales.

Node.js

'use strict';

function parseCookies(headers) {
const parsedCookie = {};
if (headers.cookie) {
headers.cookie[0].value.split(';').forEach((cookie) => {
if (cookie) {
const parts = cookie.split('=');
parsedCookie[parts[0].trim()] = parts[1].trim();
}
});
}
return parsedCookie;
}

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);
return;
}

/* 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: `https://www.example.com/signin?redirect_url=
${encodedRedirectUrl}`,
}],

396
Amazon CloudFront Guía para desarrolladores
Personalizar contenido por encabezados
de tipo de dispositivo o país: ejemplos

},
};
callback(null, response);
};

Python

import urllib

def parseCookies(headers):
parsedCookie = {}
if headers.get('cookie'):
for cookie in headers['cookie'][0]['value'].split(';'):
if cookie:
parts = cookie.split('=')
parsedCookie[parts[0].strip()] = parts[1].strip()
return parsedCookie

def lambda_handler(event, context):


request = event['Records'][0]['cf']['request']
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


parsedCookies = parseCookies(headers)

if parsedCookies and parsedCookies['session-id']:


return request

# URI encode the original request to be sent as redirect_url in query params


redirectUrl = "https://%s%s?%s" % (headers['host'][0]['value'], request['uri'],
request['querystring'])
encodedRedirectUrl = urllib.parse.quote_plus(redirectUrl.encode('utf-8'))

response = {
'status': '302',
'statusDescription': 'Found',
'headers': {
'location': [{
'key': 'Location',
'value': 'https://www.example.com/signin?redirect_url=%s' %
encodedRedirectUrl
}]
}
}
return response

Personalizar contenido por encabezados de tipo de


dispositivo o país: ejemplos
En los ejemplos de esta sección se muestra cómo puede usar Lambda@Edge para personalizar el
comportamiento en función de la ubicación o el tipo de dispositivo que usa el espectador.

Temas
• Ejemplo: redireccionamiento de solicitudes de espectadores a una URL específica del país (p. 398)

397
Amazon CloudFront Guía para desarrolladores
Personalizar contenido por encabezados
de tipo de dispositivo o país: ejemplos

• Ejemplo: ofrecer distintas versiones de un objeto en función del dispositivo (p. 399)

Ejemplo: redireccionamiento de solicitudes de espectadores a


una URL específica del país
El siguiente ejemplo muestra cómo generar una respuesta de redireccionamiento HTTP con una URL
específica del país y devolver la respuesta al espectador. Esto resulta útil cuando se quiere proporcionar
respuestas 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 generar


una respuesta de redireccionamiento cuando un espectador solicite ejemplo.com.
• Si está haciendo streaming de video, pero no tiene derechos para transmitir el contenido en un país
determinado, puede redirigir a los usuarios de dicho país a una página en la que se explica por qué no
pueden ver el video.

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 de
solicitud seleccionados (p. 56).
• CloudFront agrega el encabezado CloudFront-Viewer-Country después del evento de solicitud del
lector. Para utilizar este ejemplo, debe crear un activador para el evento de solicitud al origen.

Node.js

'use strict';

/* 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: {

398
Amazon CloudFront Guía para desarrolladores
Personalizar contenido por encabezados
de tipo de dispositivo o país: ejemplos

location: [{
key: 'Location',
value: url,
}],
},
};
callback(null, response);
};

Python

# This is an origin request function

def lambda_handler(event, context):


request = event['Records'][0]['cf']['request']
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.
'''

url = 'https://example.com/'
viewerCountry = headers.get('cloudfront-viewer-country')
if viewerCountry:
countryCode = viewerCountry[0]['value']
if countryCode == 'TW':
url = 'https://tw.example.com/'
elif countryCode == 'US':
url = 'https://us.example.com/'

response = {
'status': '302',
'statusDescription': 'Found',
'headers': {
'location': [{
'key': 'Location',
'value': url
}]
}
}

return response

Ejemplo: ofrecer distintas versiones de un objeto en función del


dispositivo
El siguiente ejemplo muestra cómo ofrecer distintas versiones de un objeto en función del tipo de
dispositivo que el usuario está utilizando; por ejemplo, un dispositivo móvil o una tablet. Tenga en cuenta lo
siguiente:

• Debe configurar la distribución para almacenar en la caché en función de los encabezados


CloudFront-Is-*-Viewer. Para obtener más información, consulte Caché en función de
encabezados de solicitud seleccionados (p. 56).

399
Amazon CloudFront Guía para desarrolladores
Personalizar contenido por encabezados
de tipo de dispositivo o país: ejemplos

• CloudFront agrega los encabezados CloudFront-Is-*-Viewer después del evento de solicitud del
lector. Para utilizar este ejemplo, debe crear un activador para el evento de solicitud al origen.

Node.js

'use strict';

/* 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);
};

Python

# This is an origin request function


def lambda_handler(event, context):
request = event['Records'][0]['cf']['request']
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

400
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos

origin request event.


'''

desktopPath = '/desktop';
mobilePath = '/mobile';
tabletPath = '/tablet';
smarttvPath = '/smarttv';

if 'cloudfront-is-desktop-viewer' in headers and headers['cloudfront-is-desktop-


viewer'][0]['value'] == 'true':
request['uri'] = desktopPath + request['uri']
elif 'cloudfront-is-mobile-viewer' in headers and headers['cloudfront-is-mobile-
viewer'][0]['value'] == 'true':
request['uri'] = mobilePath + request['uri']
elif 'cloudfront-is-tablet-viewer' in headers and headers['cloudfront-is-tablet-
viewer'][0]['value'] == 'true':
request['uri'] = tabletPath + request['uri']
elif 'cloudfront-is-smarttv-viewer' in headers and headers['cloudfront-is-smarttv-
viewer'][0]['value'] == 'true':
request['uri'] = smarttvPath + request['uri']

print("Request uri set to %s" % request['uri'])

return request

Selección de origen dinámico basada en contenido:


ejemplos
En los ejemplos de esta sección se muestra cómo puede usar Lambda@Edge para el direccionamiento a
diferentes orígenes en función de la información de la solicitud.

Temas
• Ejemplo: uso de un desencadenador de solicitud al origen para cambiar desde un origen personalizado
a un origen de Amazon S3 (p. 401)
• Ejemplo: uso de un desencadenador de solicitud al origen para cambiar la región del origen de
Amazon S3 (p. 403)
• Ejemplo: uso de un desencadenador de solicitud al origen para cambiar desde un origen de Amazon
S3 a un origen personalizado (p. 405)
• Ejemplo: uso de un desencadenador de solicitud al origen para transferir gradualmente el tráfico desde
un bucket de Amazon S3 a otro (p. 406)
• Ejemplo: Uso de un disparador de solicitud al origen para cambiar el nombre del dominio de origen en
función del encabezado de país (p. 407)

Ejemplo: uso de un desencadenador de solicitud al origen para


cambiar desde un origen personalizado a un origen de Amazon
S3
Esta función demuestra cómo utilizar un desencadenador de solicitud al origen para cambiar desde un
origen personalizado a un origen de Amazon S3 desde el que recuperar el contenido, en función de las
propiedades de la solicitud.

Node.js

'use strict';

401
Amazon CloudFront Guía para desarrolladores
Selecció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);
};

Python

from urllib.parse import parse_qs

def lambda_handler(event, context):


request = event['Records'][0]['cf']['request']
'''
Reads query string to check if S3 origin should be used, and
if true, sets S3 origin properties
'''
params = {k: v[0] for k, v in parse_qs(request['querystring']).items()}
if params.get('useS3Origin') == 'true':
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}]
return request

402
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos

Ejemplo: uso de un desencadenador de solicitud al origen para


cambiar la región del origen de Amazon S3
Esta función demuestra cómo utilizar un desencadenador de solicitud al origen para cambiar el origen de
Amazon 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 nombre
de dominio del bucket de S3 por un bucket de una región que está más cerca del lector. Esto puede
resultar útil de varias maneras:

• Reduce las latencias cuando la región especificada está más cerca del país del lector.
• Proporciona soberanía de los datos, al asegurarse de que los datos se distribuyen desde un origen que
está en el país del que provino la solicitud.

Para utilizar este ejemplo, debe hacer lo siguiente:

• Configurar su distribución para caché en función del encabezado CloudFront-Viewer-Country. Para


obtener más información, consulte Caché en función de encabezados de solicitud seleccionados (p. 56).
• Crear un disparador para esta función en el evento de solicitud al origen. CloudFront agrega el
encabezado CloudFront-Viewer-Country después del evento de solicitud del lector; por tanto, para
utilizar este ejemplo, debe asegurarse de que la función ejecuta una solicitud al origen.

Node.js

'use strict';

exports.handler = (event, context, callback) => {


const request = event.Records[0].cf.request;

/**
* This blueprint demonstrates how an origin-request trigger can be used to
* change the origin from which the content is fetched, based on request
properties.
* In this example, we use the value of the CloudFront-Viewer-Country header
* to update the S3 bucket domain name to a bucket in a Region that is closer to
* the viewer.
*
* This can be useful in several ways:
* 1) Reduces latencies when the Region specified is nearer to the viewer’s
* country.
* 2) Provides data sovereignty by making sure that data is served from an
* origin that’s in the same country that the request came from.
*
* NOTE: 1. You must configure your distribution to cache based on the
* CloudFront-Viewer-Country header. For more information, see
* http://docs.aws.amazon.com/console/cloudfront/cache-on-selected-headers
* 2. CloudFront adds the CloudFront-Viewer-Country header after the viewer
* request event. To use this example, you must create a trigger for the
* origin request event.
*/

const countryToRegion = {
'DE': 'eu-central-1',
'IE': 'eu-west-1',
'GB': 'eu-west-2',
'FR': 'eu-west-3',
'JP': 'ap-northeast-1',
'IN': 'ap-south-1'
};

403
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos

if (request.headers['cloudfront-viewer-country']) {
const countryCode = request.headers['cloudfront-viewer-country'][0].value;
const region = countryToRegion[countryCode];

/**
* If the viewer's country is not in the list you specify, the request
* goes to the default S3 bucket you've configured.
*/
if (region) {
/**
* If you’ve set up OAI, the bucket policy in the destination bucket
* should allow the OAI GetObject operation, as configured by default
* for an S3 origin with OAI. Another requirement with OAI is to provide
* the Region so it can be used for the SIGV4 signature. Otherwise, the
* Region is not required.
*/
request.origin.s3.region = region;
const domainName = `my-bucket-in-${region}.s3.amazonaws.com`;
request.origin.s3.domainName = domainName;
request.headers['host'] = [{ key: 'host', value: domainName }];
}
}

callback(null, request);
};

Python

def lambda_handler(event, context):


request = event['Records'][0]['cf']['request']

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

countryToRegion = {
'DE': 'eu-central-1',
'IE': 'eu-west-1',
'GB': 'eu-west-2',
'FR': 'eu-west-3',
'JP': 'ap-northeast-1',
'IN': 'ap-south-1'
}

viewerCountry = request['headers'].get('cloudfront-viewer-country')
if viewerCountry:
countryCode = viewerCountry[0]['value']

404
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos

region = countryToRegion.get(countryCode)

# If the viewer's country in not in the list you specify, the request
# goes to the default S3 bucket you've configured
if region:
'''
If you’ve set up OAI, the bucket policy in the destination bucket
should allow the OAI GetObject operation, as configured by default
for an S3 origin with OAI. Another requirement with OAI is to provide
the Region so it can be used for the SIGV4 signature. Otherwise, the
Region is not required.
'''
request['origin']['s3']['region'] = region
domainName = 'my-bucket-in-%s.s3.amazonaws.com' % region
request['origin']['s3']['domainName'] = domainName
request['headers']['host'] = [{'key': 'host', 'value': domainName}]

return request

Ejemplo: uso de un desencadenador de solicitud al origen


para cambiar desde un origen de Amazon S3 a un origen
personalizado
Esta función demuestra cómo utilizar un disparador de solicitud al origen para cambiar el origen
personalizado desde el que se recupera el contenido, en función de las propiedades de la solicitud.

Node.js

'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'}];
}
}

405
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos

callback(null, request);
};

Python

from urllib.parse import parse_qs

def lambda_handler(event, context):


request = event['Records'][0]['cf']['request']

# Reads query string to check if custom origin should be used, and


# if true, sets custom origin properties

params = {k: v[0] for k, v in parse_qs(request['querystring']).items()}

if params.get('useCustomOrigin') == 'true':
# Set custom origin fields
request['origin'] = {
'custom': {
'domainName': 'www.example.com',
'port': 443,
'protocol': 'https',
'path': '',
'sslProtocols': ['TLSv1', 'TLSv1.1'],
'readTimeout': 5,
'keepaliveTimeout': 5,
'customHeaders': {}
}
}
request['headers']['host'] = [{'key': 'host', 'value': 'www.example.com'}]

return request

Ejemplo: uso de un desencadenador de solicitud al origen para


transferir gradualmente el tráfico desde un bucket de Amazon S3
a otro
Esta función demuestra cómo transferir gradualmente el tráfico desde un bucket de Amazon S3 a otro, de
forma controlada.

Node.js

'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) => {


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

406
Amazon CloudFront Guía para desarrolladores
Selección de origen dinámico
basada en contenido: ejemplos

* 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);
};

Python

import math
import random

def getRandomInt(min, max):


# Random number is inclusive of min and max
return math.floor(random.random() * (max - min + 1)) + min

def lambda_handler(min, max):


request = event['Records'][0]['cf']['request']
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.
'''

randomNumber = getRandomInt(1, 100)

if randomNumber <= BLUE_TRAFFIC_PERCENTAGE:


domainName = 'blue-bucket.s3.amazonaws.com'
request['origin']['s3']['domainName'] = domainName
request['heaaders']['host'] = [{'key': 'host', 'value': domainName}]

return request

Ejemplo: Uso de un disparador de solicitud al origen para


cambiar el nombre del dominio de origen en función del
encabezado de país
Esta función demuestra cómo cambiar el nombre del dominio de origen en función del encabezado
CloudFront-Viewer-Country, de forma que el contenido se distribuya desde un origen más cercano al país
del espectador.

La implementación de esta funcionalidad para su distribución puede tener ventajas como las siguientes:

• Reducir las latencias cuando la región especificada está más cerca del país del lector
• Proporcionar soberanía de los datos, al asegurarse de que los datos se distribuyen desde un origen que
está en el país del que provino la solicitud

407
Amazon CloudFront Guía para desarrolladores
Actualización de estados de error: ejemplos

Tenga en cuenta que para habilitar esta funcionalidad, debe configurar su distribución para almacenar en
la caché en función del encabezado CloudFront-Viewer-Country. Para obtener más información, consulte
Caché en función de encabezados de solicitud seleccionados (p. 56).

Node.js

'use strict';

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 === 'GB' || countryCode === 'DE' || countryCode === 'IE' ) {
const domainName = 'eu.example.com';
request.origin.custom.domainName = domainName;
request.headers['host'] = [{key: 'host', value: domainName}];
}
}

callback(null, request);
};

Python

def lambda_handler(event, context):


request = event['Records'][0]['cf']['request']

viewerCountry = request['headers'].get('cloudfront-viewer-country')
if viewerCountry:
countryCode = viewerCountry[0]['value']
if countryCode == 'GB' or countryCode == 'DE' or countryCode == 'IE':
domainName = 'eu.example.com'
request['origin']['custom']['domainName'] = domainName
request['headers']['host'] = [{'key': 'host', 'value': domainName}]
return request

Actualización de estados de error: ejemplos


En los ejemplos de esta sección se proporciona orientación acerca de cómo puede usar Lambda@Edge
para cambiar el estado de error que se devuelve a los usuarios.

Temas
• Ejemplo: Uso de un disparador de respuesta del origen para actualizar el código de estado de error a
200-OK (p. 408)
• Ejemplo: Uso de un disparador de respuesta del origen para actualizar el código de estado de error a
302-Found (p. 409)

Ejemplo: Uso de un disparador de respuesta del origen para


actualizar el código de estado de error a 200-OK
Esta función demuestra cómo actualizar el estado de la respuesta a 200 y generar un cuerpo con
contenido estático para devolverlo al espectador en la siguiente situación:

• La función se desencadena 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).

408
Amazon CloudFront Guía para desarrolladores
Actualización de estados de error: ejemplos

Node.js

'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);
};

Python

def lambda_handler(event, context):


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 int(response['status']) >= 400 and int(response['status']) <= 599:


response['status'] = 200
response['statusDescription'] = 'OK'
response['body'] = 'Body generation example'
return response

Ejemplo: Uso de un disparador de respuesta del origen para


actualizar el código de estado de error a 302-Found
Esta función demuestra cómo actualizar el código de estado HTTP a 302 para la redirección a otra
ruta (comportamiento de la caché) en la que se ha configurado un origen diferente. Tenga en cuenta lo
siguiente:

• La función se desencadena 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).

Node.js

'use strict';

exports.handler = (event, context, callback) => {


const response = event.Records[0].cf.response;

409
Amazon CloudFront Guía para desarrolladores
Acceso al cuerpo de la solicitud: ejemplos

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)
*/

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);
};

Python

def lambda_handler(event, context):


response = event['Records'][0]['cf']['response']
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)
'''

if int(response['status']) >= 400 and int(response['status']) <= 599:


redirect_path = '/plan-b/path?%s' % 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}]

return response

Acceso al cuerpo de la solicitud: ejemplos


En los ejemplos de esta sección se muestra cómo puede usar Lambda@Edge para trabajar con las
solicitudes POST.
Note

Para utilizar estos ejemplos, debe habilitar la opción incluir cuerpo en la asociación de funciones
Lambda de la distribución. No está habilitada de forma predeterminada.

410
Amazon CloudFront Guía para desarrolladores
Acceso al cuerpo de la solicitud: ejemplos

• Para habilitar esta configuración en la consola de CloudFront, seleccione la casilla de


verificación Include Body (Incluir cuerpo) en la Lambda Function Association (Asociación de
funciones Lambda).
• Para habilitar esta configuración en la API de CloudFront o con AWS CloudFormation,
establezca el campo IncludeBody en true en LambdaFunctionAssociation.

Temas
• Ejemplo: Uso de un desencadenador de solicitud para leer un formulario HTML (p. 411)
• Ejemplo: Uso de un desencadenador de solicitud para modificar un formulario HTML (p. 412)

Ejemplo: Uso de un desencadenador de solicitud para leer un


formulario HTML
Esta función ilustra cómo puede procesar el cuerpo de una solicitud POST generada por un formulario
HTML (formulario web), como por ejemplo un formulario tipo "póngase en contacto con nosotros". Por
ejemplo, es posible que tenga un formulario HTML como el siguiente:

<html>
<form action="http://example.com" method="post">
Param 1: <input type="text" name="name1"><br>
Param 2: <input type="text" name="name2"><br>
input type="submit" value="Submit">
</form>
</html>

Para la función de ejemplo que se indica a continuación, la función se debe desencadenar en una solicitud
al origen o del lector de CloudFront.

Node.js

'use strict';

const querystring = require('querystring');

/**
* This function demonstrates how you can read the body of a POST request
* generated by an HTML form (web form). The function is triggered in a
* CloudFront viewer request or origin request event type.
*/

exports.handler = (event, context, callback) => {


const request = event.Records[0].cf.request;

if (request.method === 'POST') {


/* HTTP body is always passed as base64-encoded string. Decode it. */
const body = Buffer.from(request.body.data, 'base64').toString();

/* HTML forms send the data in query string format. Parse it. */
const params = querystring.parse(body);

/* For demonstration purposes, we only log the form fields here.


* You can put your custom logic here. For example, you can store the
* fields in a database, such as Amazon DynamoDB, and generate a response
* right from your Lambda@Edge function.
*/
for (let param in params) {
console.log(`For "${param}" user submitted "${params[param]}".\n`);
}

411
Amazon CloudFront Guía para desarrolladores
Acceso al cuerpo de la solicitud: ejemplos

}
return callback(null, request);
};

Python

import base64
from urllib.parse import parse_qs

'''
Say there is a POST request body generated by an HTML such as:

<html>
<form action="http://example.com" method="post">
Param 1: <input type="text" name="name1"><br>
Param 2: <input type="text" name="name2"><br>
input type="submit" value="Submit">
</form>
</html>

'''

'''
This function demonstrates how you can read the body of a POST request
generated by an HTML form (web form). The function is triggered in a
CloudFront viewer request or origin request event type.
'''

def lambda_handler(event, context):


request = event['Records'][0]['cf']['request']

if request['method'] == 'POST':
# HTTP body is always passed as base64-encoded string. Decode it
body = base64.b64decode(request['body']['data'])

# HTML forms send the data in query string format. Parse it


params = {k: v[0] for k, v in parse_qs(body).items()}

'''
For demonstration purposes, we only log the form fields here.
You can put your custom logic here. For example, you can store the
fields in a database, such as Amazon DynamoDB, and generate a response
right from your Lambda@Edge function.
'''
for key, value in params.items():
print("For %s use submitted %s" % (key, value))

return request

Ejemplo: Uso de un desencadenador de solicitud para modificar


un formulario HTML
Esta función ilustra cómo puede modificar el cuerpo de una solicitud POST generada por un formulario
HTML (formulario web). La función se activa en una solicitud al origen o del lector de CloudFront.

Node.js

'use strict';

const querystring = require('querystring');

412
Amazon CloudFront Guía para desarrolladores
Acceso al cuerpo de la solicitud: ejemplos

exports.handler = (event, context, callback) => {


var request = event.Records[0].cf.request;
if (request.method === 'POST') {
/* Request body is being replaced. To do this, update the following
/* three fields:
* 1) body.action to 'replace'
* 2) body.encoding to the encoding of the new data.
*
* Set to one of the following values:
*
* text - denotes that the generated body is in text format.
* Lambda@Edge will propagate this as is.
* base64 - denotes that the generated body is base64 encoded.
* Lambda@Edge will base64 decode the data before sending
* it to the origin.
* 3) body.data to the new body.
*/
request.body.action = 'replace';
request.body.encoding = 'text';
request.body.data = getUpdatedBody(request);
}
callback(null, request);
};

function getUpdatedBody(request) {
/* HTTP body is always passed as base64-encoded string. Decode it. */
const body = Buffer.from(request.body.data, 'base64').toString();

/* HTML forms send data in query string format. Parse it. */


const params = querystring.parse(body);

/* For demonstration purposes, we're adding one more param.


*
* You can put your custom logic here. For example, you can truncate long
* bodies from malicious requests.
*/
params['new-param-name'] = 'new-param-value';
return querystring.stringify(params);
}

Python

import base64
from urllib.parse import parse_qs, urlencode

def lambda_handler(event, context):


request = event['Records'][0]['cf']['request']
if request['method'] == 'POST':
'''
Request body is being replaced. To do this, update the following
three fields:
1) body.action to 'replace'
2) body.encoding to the encoding of the new data.

Set to one of the following values:

text - denotes that the generated body is in text format.


Lambda@Edge will propagate this as is.
base64 - denotes that the generated body is base64 encoded.
Lambda@Edge will base64 decode the data before sending
it to the origin.
3) body.data to the new body.
'''
request['body']['action'] = 'replace'
request['body']['encoding'] = 'text'

413
Amazon CloudFront Guía para desarrolladores
Requisitos y restricciones

request['body']['data'] = getUpdatedBody(request)
return request

def getUpdatedBody(request):
# HTTP body is always passed as base64-encoded string. Decode it
body = base64.b64decode(request['body']['data'])

# HTML forms send data in query string format. Parse it


params = {k: v[0] for k, v in parse_qs(body).items()}

# For demonstration purposes, we're adding one more param

# You can put your custom logic here. For example, you can truncate long
# bodies from malicious requests
params['new-param-name'] = 'new-param-value'
return urlencode(params)

Requisitos y restricciones en funciones de Lambda


Consulte las siguientes secciones para ver los requisitos y las restricciones sobre el uso de funciones de
Lambda con CloudFront.

Temas
• Distribuciones y asociaciones de CloudFront (p. 414)
• Desencadenadores de CloudFront para funciones de Lambda (p. 414)
• Registros de CloudWatch (p. 415)
• Encabezados (p. 415)
• Códigos de estado HTTP (p. 417)
• Configuración y tiempos de ejecución admitidos de la función Lambda (p. 417)
• Cuotas (p. 418)
• Microsoft Smooth Streaming (p. 420)
• Network Access (p. 420)
• Parámetros de cadenas de consulta (p. 420)
• Tamaño máximo del cuerpo con la opción Include Body (Incluir cuerpo) (p. 420)
• Etiquetado (p. 420)
• URI (p. 421)
• Codificación de los URI y las cadenas de consulta (p. 421)

Distribuciones y asociaciones de CloudFront


• No se puede asociar una función de Lambda con una distribución de CloudFront propiedad de otra
cuenta de AWS.

Desencadenadores de CloudFront para funciones de


Lambda
• Puede añadir disparadores solo de versiones numeradas, no de $LATEST o alias.
• Puede agregar desencadenadores solo para funciones en la región EE. UU. Este (Norte de Virginia).

414
Amazon CloudFront Guía para desarrolladores
Registros de CloudWatch

• 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
edgelambda.amazonaws.com. Para obtener más información, Configuración de permisos y roles de
IAM para Lambda@Edge (p. 349).

Registros de CloudWatch
Para obtener información acerca de las cuotas de Amazon CloudWatch Logs (anteriormente conocidas
como límites), consulte Cuotas de CloudWatch Logs en la Guía del usuario de Amazon CloudWatch.

Encabezados
Tenga en cuenta los siguientes requisitos y restricciones de uso de encabezados en Lambda@Edge.

Temas
• Encabezados de listas negras (p. 415)
• Encabezados de solo lectura (p. 415)
• Encabezados CloudFront-* (p. 416)

Encabezados de listas negras


Los encabezados de listas negras no se exponen y las funciones de Lambda@Edge no pueden añadirlos.
Si su función Lambda agrega un encabezado en la lista negra, la solicitud no supera la validación de
CloudFront. CloudFront devuelve código de estado HTTP 502 (Gateway incorrecta) al lector.

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


Los encabezados de solo lectura pueden leerse, pero no se pueden editar. Puede utilizarlos como entrada
para la lógica de almacenamiento en caché de CloudFront, y su función de Lambda puede leer los valores

415
Amazon CloudFront Guía para desarrolladores
Encabezados

de encabezado, pero no puede cambiarlos. Si la función de Lambda agrega o edita un encabezado de solo
lectura, ocurrirá un error al validar la solicitud en CloudFront. CloudFront devuelve código de estado HTTP
502 (Gateway incorrecta) al lector.

Encabezados de solo lectura para eventos de solicitud del lector de CloudFront


• 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
• Transfer-Encoding
• Via

Encabezados de solo lectura para eventos de respuesta al origen de CloudFront


• Transfer-Encoding
• Via

Encabezados de solo lectura para eventos de respuesta del lector de CloudFront


• Content-Encoding
• Content-Length
• Transfer-Encoding
• Warning
• Via

Encabezados CloudFront-*
Una función de Lambda puede leer, editar, quitar o agregar cualquiera de los siguientes encabezados.

• CloudFront-Forwarded-Proto
• CloudFront-Is-Desktop-Viewer
• CloudFront-Is-Mobile-Viewer
• CloudFront-Is-SmartTV-Viewer
• CloudFront-Is-Tablet-Viewer
• CloudFront-Viewer-Country

Tenga en cuenta lo siguiente:

416
Amazon CloudFront Guía para desarrolladores
Códigos de estado HTTP

• Si desea que CloudFront agregue estos encabezados, debe configurar CloudFront para que almacene
en caché en función de estos encabezados. Para obtener información acerca de cómo configurar
CloudFront para almacenar en caché en función de los encabezados especificados, consulte Caché en
función de encabezados de solicitud seleccionados (p. 56) en el tema Valores que deben especificarse
al crear o actualizar una distribución (p. 43).
• CloudFront agrega los encabezados después del evento de solicitud del lector.
• Si el lector agrega encabezados que tienen estos nombres, CloudFront sobrescribe los valores de los
encabezados.
• Para los eventos de lector, CloudFront-Viewer-Country está en la lista negra. Los encabezados
de listas negras no se exponen y las funciones de Lambda@Edge no pueden añadirlos. Si su función
de Lambda agrega un encabezado incluido en la lista negra, la solicitud no supera la validación de
CloudFront y CloudFront devuelve código de estado HTTP 502 (Gateway incorrecta) al lector.

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. 398)
• Ejemplo: ofrecer distintas versiones de un objeto en función del dispositivo (p. 399)

Códigos de estado HTTP


CloudFront no ejecuta funciones de Lambda para eventos de respuesta al lector si el origen devuelve el
código de estado HTTP 400 o un número superior. Tampoco puede modificar el código de estado HTTP a
partir de un evento de respuesta al espectador para una solicitud que se ha realizado correctamente.

Sin embargo, puede ejecutar funciones Lambda para los errores de respuesta de origen, incluidos los
códigos de estado HTTP 4xx y 5xx. Para obtener más información, consulte Actualización de respuestas
HTTP en disparadores de respuesta del origen (p. 386).

Configuración y tiempos de ejecución admitidos de la


función Lambda
• Lambda@Edge admite funciones Lambda con los siguientes tiempos de ejecución:
• Node.js 14
• Node.js 12
• Node.js 10
• Node.js 8 y Node.js 6
Note

Las versiones 8 y 6 de Node.js han llegado al final de su vida útil. No puede crear ni
actualizar funciones con estos runtimes. Si tiene una función existente con uno de estos
runtimes, puede asociarla a una distribución de CloudFront, y las funciones que ya están
asociadas a una distribución seguirán ejecutándose. Sin embargo, le recomendamos que
mueva su función a una versión más reciente de Node.js. Para obtener más información,
consulte Runtime Support Policy (Política de soporte del tiempo de ejecución en la Guía para
desarrolladores de AWS Lambda y la programación de versiones de Node.js en GitHub.
• Python 3.8
• Python 3.7
• No puede configurar su función de Lambda para obtener acceso a recursos dentro de la VPC.
• No puede asociar su función de Lambda a una distribución de CloudFront propiedad de otra cuenta de
AWS.

417
Amazon CloudFront Guía para desarrolladores
Cuotas

• No se admiten colas de mensajes fallidos para las funciones de AWS Lambda.


• No se admiten variables de entorno de AWS Lambda.
• Las funciones de Lambda con capas de AWS Lambda no son compatibles.
• No se admite el uso de AWS X-Ray.
• No se admiten la simultaneidad reservada ni la simultaneidad aprovisionada de AWS Lambda.
• Las funciones de Lambda definidas como imágenes de contenedor no son compatibles.

Cuotas
Las cuotas de esta sección se aplican a Lambda@Edge. Estas cuotas se suman a las cuotas
predeterminadas de CloudFront y Lambda, que también se aplican. Para conocer las cuotas
predeterminadas, consulte Cuotas (p. 519) en esta guía y Cuotas en la Guía para desarrolladores de
AWS Lambda.
Note

Lambda escala dinámicamente la capacidad en respuesta al aumento del tráfico, según las cuotas
de la cuenta. Para obtener más información, consulte Escalado de funciones en la Guía para
desarrolladores de AWS Lambda.

Además, tenga en cuenta que existen algunas otras restricciones al utilizar las funciones de
Lambda@Edge. Para obtener más información, consulte Requisitos y restricciones en funciones de
Lambda (p. 414).

Cuotas que difieren según el tipo de evento

Entidad Cuotas de los eventos Cuotas de los eventos


de solicitud al origen y de solicitud del
respuesta del origen espectador y respuesta
al espectador

Tamaño de memoria de función Igual que las cuotas de 128 MB


Lambda

Tiempo de espera de la función. La función puede 30 segundos 5 segundos


realizar llamadas de red a recursos como buckets
de Amazon S3, tablas de DynamoDB o instancias
Amazon EC2 en regiones de AWS.

Tamaño de una respuesta generada por una 1 MB 40 KB


función Lambda, incluidos los encabezados y el
cuerpo

Tamaño comprimido máximo de una función 50 MB 1 MB


Lambda y cualquier biblioteca incluida

Otras cuotas

Entidad Cuota predeterminada

Distribuciones por cuenta de AWS para los que puede crear disparadores 25

Solicitar una ampliación


de la cuota

418
Amazon CloudFront Guía para desarrolladores
Cuotas

Entidad Cuota predeterminada

Disparadores por distribución 100

Solicitar una ampliación


de la cuota

Solicitudes por segundo 10 000 (en cada región)

Solicitar una ampliación


de la cuota

Ejecuciones simultáneas 1000 (en cada región)

Para obtener más información, consulte Escalado de funciones en la Guía Solicitar una ampliación
para desarrolladores de AWS Lambda. de la cuota

Cuotas de tamaño en URI y cadena de consulta


Al acceder o actualizar un URI o una cadena de consulta en una función de Lambda@Edge, la longitud
total del URI que incluye la cadena de consulta debe ser inferior a 8192 caracteres.

Cuotas de tamaño para el cuerpo de la solicitud con la opción


Include Body (Incluir cuerpo)
Cuando elija la opción Include Body (Incluir cuerpo) para exponer el cuerpo de la solicitud a la función
de Lambda@Edge, tenga en cuenta las siguientes cuotas de tamaño para las partes del cuerpo que se
exponen o reemplazan.
Note

Lambda@Edge siempre codifica el cuerpo en base64 antes de exponerlo.

Las cuotas de tamaño al exponer el cuerpo a una función de Lambda


Si el cuerpo de la solicitud es grande, Lambda@Edge lo limita antes de exponerlo, del siguiente modo:

• Para las solicitudes de los espectadores, el cuerpo está limitado a 40 KB.


• Para las solicitudes de origen, el cuerpo está limitado a 1 MB.

Cuotas de tamaño cuando se devuelve el cuerpo de una solicitud de una función


de Lambda
Si tiene acceso al cuerpo de la solicitud como de solo lectura, el cuerpo completo de la solicitud original
se devuelve al origen. Sin embargo, si elige reemplazar el cuerpo de la solicitud, se aplican las siguientes
cuotas de tamaño del cuerpo cuando se devuelve desde una función de Lambda:

Tipo de codificación del cuerpo Tamaño del cuerpo Tamaño del cuerpo
permitido: solicitud permitido: solicitud
del espectador del origen

text 40 KB 1 MB

base64 53,2 KB 1,33 MB

419
Amazon CloudFront Guía para desarrolladores
Microsoft Smooth Streaming

Microsoft Smooth Streaming


No se pueden crear desencadenadores para una distribución de CloudFront que esté utilizando para
streaming de vídeo bajo demanda (VOD) de archivos multimedia que haya transcodificado en formato
Microsoft Smooth Streaming.

Network Access
Tanto las funciones desencadenadas por los eventos de solicitud al origen y respuesta del origen así como
las desencadenadas por los eventos de solicitud del lector y respuesta al lector pueden efectuar llamadas
de red a recursos de Internet y a servicios de AWS, como buckets de Amazon S3, tablas de DynamoDB o
instancias de Amazon EC2.

Parámetros de cadenas de consulta


• Para acceder a una cadena de consulta en una función de Lambda, utilice
event.Records[0].cf.request.querystring.
• Una función puede actualizar una cadena de consulta para los eventos de solicitud al origen y del
espectador. La cadena de consulta actualizada no puede incluir espacios, caracteres de control ni el
identificador de fragmento (#).
• Una función solo puede leer una cadena de consulta para los eventos de respuesta del origen y al
espectador.
• La configuración de CloudFront para almacenar en caché en función de los parámetros de una cadena
de consulta afecta a si una función puede obtener acceso o no a la cadena de consulta:
• Eventos de solicitud y respuesta al lector: una función puede obtener acceso a una cadena
de consulta independientemente de la configuración de Reenvío de cadenas de consulta y
almacenamiento en caché (p. 59).
• Eventos de solicitud al origen y respuesta del origen: una función solo puede obtener acceso a una
cadena de consulta si Reenvío de cadenas de consulta y almacenamiento en caché (p. 59) está
configurado en Forward All, Cache Based on Whitelist (Reenviar todo y almacenar en caché en
función de la lista blanca) o en Forward All, Cache Based on All (Reenviar todo y almacenar todo en
caché).
• Le recomendamos que utilice la codificación de porcentaje para el URI y la cadena de consulta. Para
obtener más información, consulte Codificación de los URI y las cadenas de consulta (p. 421).
• 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 Almacenamiento en caché de contenido en función de parámetros
de cadenas de consulta (p. 274).

Tamaño máximo del cuerpo con la opción Include


Body (Incluir cuerpo)
Para todas las cuotas (antes denominadas límites) de Lambda@Edge, incluidas las cuotas de tamaño,
consulte Cuotas (p. 418).

Etiquetado
Algunos servicios de AWS, como Amazon CloudFront y AWS Lambda, admiten agregar etiquetas a
los recursos del servicio. Sin embargo, en este momento, no puede aplicar etiquetas a los recursos de

420
Amazon CloudFront Guía para desarrolladores
URI

Lambda@Edge. Para obtener más información sobre el etiquetado en CloudFront, consulte Etiquetado de
distribuciones de Amazon CloudFront (p. 72).

URI
Si una función cambia la URI de una solicitud, eso no cambia el comportamiento de la caché frente a la
solicitud ni el origen al que se reenvía la solicitud.

Codificación de los URI y las cadenas de consulta


Las funciones de Lambda requieren que el URI y la cadena de consulta tengan la codificación UTF-8. (La
codificación de porcentaje es compatible con la codificación UTF-8). El comportamiento de CloudFront y
Lambda depende de lo siguiente:

• La codificación del URI y la cadena de consulta que CloudFront recibió en la solicitud del lector
• Si una función activada por un evento de solicitud al origen o del espectador cambió el URI o la cadena
de consulta

Los valores tienen codificación UTF-8

CloudFront reenvía los valores a su función de Lambda sin cambiarlos.


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 de


reenviar 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 supone
que tienen la codificación ISO 8859-1 e intenta convertir esa codificación de ISO 8859-1 a UTF-8.
Important

La versión convertida podría ser una interpretación inexacta de los valores de la solicitud
original. Esto puede hacer que una función de Lambda o su origen produzca un resultado no
deseado.

El valor que CloudFront reenvía a su servidor de origen depende de si las funciones desencadenadas por
los eventos de solicitud del lector o al origen cambian el URI o la cadena de consulta:

• Si las funciones no cambian el URI o la cadena de consulta: CloudFront reenvía a su servidor de origen
los valores que recibió CloudFront en la solicitud del lector.
• Si las funciones cambian el URI o la cadena de consulta: CloudFront reenvía el valor con codificación
UTF-8.

En ambos casos, el comportamiento no se ve afectado por la codificación de caracteres de la solicitud del


espectador.

421
Amazon CloudFront Guía para desarrolladores
Informes de uso y facturación de AWS para CloudFront

Informes, métricas y registros


En esta sección se incluyen temas que proporcionan información detallada sobre las opciones para los
informes y el monitoreo de CloudFront. 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. Además, puede monitorear y realizar un seguimiento de CloudFront,
incluida la actividad de Lambda@Edge, directamente en la consola de CloudFront y con herramientas
como CloudTrail y CloudWatch.

Temas
• Informes de uso y facturación de AWS para CloudFront (p. 422)
• Informes de CloudFront en la consola (p. 426)
• Monitoreo de CloudFront con Amazon CloudWatch (p. 452)
• Registro de CloudFront (p. 462)
• Seguimiento de los cambios en la configuración mediante AWS Config (p. 494)

Informes de uso y facturación de AWS para


CloudFront
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,
incluido CloudFront. Para obtener más información, consulte Informe de facturación de AWS para
CloudFront (p. 422).
• El informe de uso es un resumen de la actividad de un servicio específico, agrupado por hora, día o mes.
También incluye gráficos de uso que proporcionan una representación gráfica del uso de CloudFront.
Para obtener más información, consulte Informe de uso de AWS para CloudFront (p. 423).

Para ayudarle a comprender estos informes, consulte la información detallada en Interpretación de la


factura de AWS y el informe de uso de AWS para CloudFront (p. 424).
Note
Al igual que ocurre con otros servicios de AWS, CloudFront le cobra solo por lo que utiliza. Para
obtener más información, consulte Precios de CloudFront (p. 8).

Temas
• Informe de facturación de AWS para CloudFront (p. 422)
• Informe de uso de AWS para CloudFront (p. 423)
• Interpretación de la factura de AWS y el informe de uso de AWS para CloudFront (p. 424)

Informe de facturación de AWS para CloudFront


Puede consultar un resumen del uso de AWS y los cargos, mostrados por servicio, en la página de
facturación de la consola de administración de AWS.

También puede descargar una versión más detallada del informe en formato CSV. El informe de
facturación detallado incluye los siguientes valores que se aplican a CloudFront:

• ProductCode: AmazonCloudFront

422
Amazon CloudFront Guía para desarrolladores
Informe de uso de AWS para CloudFront

• UsageType: uno de los siguientes valores


• Un código que identifica el tipo de transferencia de datos.
• Invalidations
• SSL-Cert-Custom

Para obtener más información, consulte Interpretación de la factura de AWS y el informe de uso de AWS
para CloudFront (p. 424).
• ItemDescription: una descripción de la tarifa de facturación de UsageType.
• Usage Start Date/Usage End Date: el día correspondiente al uso en horario universal coordinado (UTC).
• Usage Quantity: uno de los siguientes valores:
• El número de solicitudes durante el periodo especificado.
• La cantidad de datos transferidos en gigabytes.
• La cantidad de objetos invalidados.
• La suma de los meses prorrateados en los que tuvo certificados SSL asociados con distribuciones
de CloudFront habilitadas. Por ejemplo, si tiene un certificado asociado a una distribución habilitada
por un mes entero y otro certificado asociado a una distribución habilitado para la mitad del mes, este
valor será 1,5.

Para visualizar la información de facturación resumida y descargar el informe de facturación


detallado

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 & Cost
Management (Gestión de facturación y costos).
3. En el panel de navegación, haga clic en Bills (Facturas).
4. Para consultar información resumida de CloudFront, en Details (Detalles), haga clic en CloudFront.
5. Para descargar un informe de facturación detallado en formato CSV, haga clic en Download CSV
(Descargar CSV) y siga las instrucciones que aparecen en pantalla para guardar el informe.

Informe de uso de AWS para CloudFront


AWS proporciona un informe de uso de CloudFront más detallado que el de facturación pero menos que
los 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 de
Australia.

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 y
PUT.
• UsageType: uno de los siguientes valores
• Un código que identifica el tipo de transferencia de datos.
• Invalidations
• SSL-Cert-Custom

Para obtener más información, consulte Interpretación de la factura de AWS y el informe de uso de AWS
para CloudFront (p. 424).
• Resource: el ID de la distribución de CloudFront asociada con el uso o el ID de un certificado SSL que
haya asociado a una distribución de CloudFront.

423
Amazon CloudFront Guía para desarrolladores
Interpretación de la factura de AWS y el
informe de uso de AWS para CloudFront

• StartTime/EndTime: el día correspondiente al uso en horario universal coordinado (UTC).


• UsageValue: (1) la cantidad de solicitudes durante el periodo especificado o (2) la cantidad de datos
transferidos en bytes.

Si utiliza Amazon S3 como origen de CloudFront, considere la posibilidad de ejecutar también el informe de
uso de Amazon S3. Sin embargo, si utiliza Amazon S3 para fines que no sean de origen de distribución de
CloudFront, es posible que no esté claro qué parte se aplica al uso de CloudFront.
Tip
Para obtener información detallada acerca de cada solicitud que CloudFront recibe de sus
objetos, active los registros de acceso de CloudFront de su distribución. Para obtener más
información, consulte Configuración y uso de registros estándar (registros de acceso) (p. 463).

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 & Cost
Management (Gestión de facturación y costos).
3. En el panel de navegación, haga clic en Reports (Informes).
4. En AWS Usage Report (Informe de uso de AWS), haga clic en AWS Usage Report (Informe de uso de
AWS).
5. En la lista Service (Servicio), haga clic en CloudFront o Amazon Simple Storage Service.
6. Seleccione la configuración que se va a utilizar:

• Usage Types (Tipos de uso): para obtener una explicación detallada de los tipos de uso de
CloudFront, consulte the section called “Interpretación de la factura de AWS y el informe de uso de
AWS para CloudFront” (p. 424).

Para Amazon S3, seleccione All Usage Types (Todos los tipos de uso).
• Operation (Operación): seleccione All Operations (Todas las operaciones).
• Time Period (Periodo): seleccione el periodo que desea que el informe abarque.
• Report Granularity (Detalle del informe): seleccione si desea que el informe incluya subtotales por
hora, por día o por mes.
7. Haga clic en el botón para descargar el informe en el formato deseado.
8. Siga las indicaciones que aparecen en pantalla para ver o guardar el informe.

Interpretación de la factura de AWS y el informe de


uso de AWS para CloudFront
La factura de AWS para el servicio de CloudFront incluye códigos y abreviaturas que es posible que
no sean comprensibles a primera vista. En la primera columna de la siguiente tabla se enumeran los
elementos que aparecen 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 de
AWS para CloudFront. En la segunda columna de la tabla se enumeran los elementos que aparecen en el
informe de uso y se muestra la correlación entre los elementos de la factura y los del informe de uso.

La mayoría de códigos de ambas columnas incluyen una abreviatura de dos letras que indica la ubicación
de la actividad. En la siguiente tabla, la región de un código se sustituirá en su factura de AWS y en el
informe de uso por una de las siguientes abreviaturas de dos letras:

• AP: Hong Kong, Filipinas, Corea del Sur, Taiwán, y Singapur (Asia Pacífico)

424
Amazon CloudFront Guía para desarrolladores
Interpretación de la factura de AWS y el
informe de uso de AWS para CloudFront

• AU: Australia
• CA: Canadá
• UE: Europa e Israel
• IN: India
• JP: Japón
• ME: Oriente Medio
• SA: América del Sur
• US: Estados Unidos
• ZA: Sudáfrica

Para obtener más información acerca de los precios por región, consulte Precios de Amazon CloudFront.
Note

En esta tabla no se incluyen cargos por transferencia de objetos desde un bucket de Amazon S3
a ubicaciones de borde de CloudFront. Estos cargos, de haberlos, aparecen en la sección AWS
Data Transfer (Transferencia de datos de AWS) de su factura de AWS.

Elementos de la factura de CloudFront Valores de la columna de tipo de uso del informe de uso de
CloudFront

región-DataTransfer-Out-Bytes • región-Out-Bytes-HTTP-Static: bytes enviados por HTTP


de objetos con un TTL ≥ 3600 segundos
Total de bytes enviados desde las
• región-Out-Bytes-HTTP-Static: bytes enviados por HTTPS
ubicaciones de borde de CloudFront en de objetos con un TTL ≥ 3600 segundos
región en respuesta a las solicitudes
GET y HEAD de usuarios • 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 lectores por HTTP en respuesta a
solicitudes DELETE, OPTIONS, PATCH, POST y PUT.
• región-Out-Bytes-HTTPS-Proxy: bytes devueltos de
CloudFront a los lectores por HTTPS en respuesta a
solicitudes DELETE, OPTIONS, PATCH, POST y PUT.

región-DataTransfer-Out-OBytes región-Out-OBytes-HTTP-Proxy

Total de bytes transferidos desde las Total de bytes transferidos por HTTP desde las ubicaciones
ubicaciones de borde de CloudFront de borde de CloudFront al origen en respuesta a solicitudes
al origen en respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.
DELETE, OPTIONS, PATCH, POST y PUT.
Los cargos incluyen la transferencia región-Out-OBytes-HTTPS-Proxy
de datos para datos de WebSocket de
cliente a servidor. Total de bytes transferidos por HTTPS desde las ubicaciones
de borde de CloudFront al origen en respuesta a solicitudes
DELETE, OPTIONS, PATCH, POST y PUT.

región-Requests-Tier1 región-Requests-HTTP-Static

Número de solicitudes HTTP GET y Cantidad de solicitudes HTTP GET y HEAD para la que se
HEAD distribuyeron objetos con TTL ≥ 3 600 segundos.

región-Requests-HTTP-Dynamic

425
Amazon CloudFront Guía para desarrolladores
Informes de la consola de CloudFront

Elementos de la factura de CloudFront Valores de la columna de tipo de uso del informe de uso de
CloudFront
Cantidad de solicitudes HTTP GET y HEAD para las que se
distribuyeron objetos con TTL < 3 600 segundos

región-Requests-Tier2-HTTPS región-Requests-HTTPS-Static

Cantidad de solicitudes HTTPS GET y Cantidad de solicitudes HTTPS GET y HEAD para la que se
HEAD distribuyeron objetos con TTL ≥ 3 600 segundos.

región-Requests-HTTPS-Dynamic

Cantidad de solicitudes HTTPS GET y HEAD para las que se


distribuyeron objetos con TTL < 3 600 segundos

región-Requests-HTTP-Proxy región-Requests-HTTP-Proxy

Cantidad de solicitudes HTTP DELETE, El mismo que el elemento correspondiente en la factura de


OPTIONS, PATCH, POST y PUT que CloudFront
CloudFront reenvía al origen

región-Requests-HTTPS-Proxy región-Requests-HTTPS-Proxy

Cantidad de solicitudes HTTPS DELETE, El mismo que el elemento correspondiente en la factura de


OPTIONS, PATCH, POST y PUT que CloudFront
CloudFront reenvía al origen

región-Requests-HTTPS-Proxy-FLE región-Requests-HTTPS-Proxy-FLE

Cantidad de solicitudes HTTPS El mismo que el elemento correspondiente en la factura de


DELETE, OPTIONS, PATCH y POST que CloudFront
CloudFront reenvía al origen que se
procesaron con cifrado en el nivel de
campo (p. 241).

Invalidaciones Invalidaciones

El cargo por invalidación de objetos El mismo que el elemento correspondiente en la factura de


(eliminar los objetos de las ubicaciones CloudFront
de borde de CloudFront); para obtener
más información, consulte Cargos por
invalidación de archivo (p. 127).

SSL-Cert-Custom SSL-Cert-Custom

El cargo por el uso de un certificado SSL El mismo que el elemento correspondiente en la factura de
con un nombre de dominio alternativo de CloudFront
CloudFront como example.com en lugar
del certificado SSL predeterminado de
CloudFront y el nombre de dominio que
CloudFront asignó a la distribución.

Informes de CloudFront en la consola


La consola de CloudFront incluye varios informes sobre la actividad de CloudFront, incluidos los siguientes:

• Informes de estadísticas de CloudFront Cache (p. 427)

426
Amazon CloudFront Guía para desarrolladores
Informes de la consola de CloudFront

• Informe de objetos populares de CloudFront (p. 427)


• Informe de remitentes principales de CloudFront (p. 427)
• Informes de uso de CloudFront (p. 427)
• Informes de lectores de CloudFront (p. 428)

La mayoría de estos informes se basa en los datos de los registros de acceso de CloudFront, que
contienen información detallada sobre cada solicitud de usuario que CloudFront recibe. No es necesario
habilitar los registros de acceso para ver los informes. Para obtener más información, consulte
Configuración y uso de registros estándar (registros de acceso) (p. 463). El informe de uso de CloudFront
se basa en el informe de uso de AWS para CloudFront, que tampoco requiere ninguna configuración
especial. Para obtener más información, consulte Informe de uso de AWS para CloudFront (p. 423).

Informes de estadísticas de caché de CloudFront

El informe de estadísticas de caché de CloudFront incluye la siguiente información:

• Total Requests (Solicitudes totales): indica la cantidad total de solicitudes de todos los códigos de estado
HTTP (por ejemplo, 200 o 404) y todos los métodos (por ejemplo, GET, HEAD o POST).
• Percentage of Viewer Requests by Result Type (Porcentaje de solicitudes de lector por tipo de
resultado): muestra los aciertos, los fallos y los errores como porcentaje del total de solicitudes de lector
para la distribución de CloudFront seleccionada.
• Bytes Transferred to Viewers (Bytes transferidos a los lectores): muestra la cantidad total de bytes y la
de bytes de fallos.
• HTTP Status Codes (Códigos de estado HTTP): muestra las solicitudes de lector por código de estado
HTTP.
• Percentage of GET Requests that Didn't Finish Downloading (Porcentaje de solicitudes GET que no
terminaron de descargar): muestra las solicitudes GET de lector que no terminaron de descargar el
objeto solicitado, como un porcentaje del total.

Para obtener más información, consulte Informes estadísticos de caché de CloudFront (p. 428).

Informe de objetos populares de CloudFront

El informe de objetos populares de CloudFront enumera los 50 objetos más populares y las estadísticas
de esos objetos, incluida la cantidad de solicitudes del objeto, el número de aciertos y fallos, la tasa de
aciertos, la cantidad de bytes enviados que resultaron en fallos, el total de bytes enviados, la cantidad de
descargas incompletas y la cantidad de solicitudes por código de estado HTTP (2xx, 3xx, 4xx y 5xx).

Para obtener más información, consulte Informe de objetos populares de CloudFront (p. 432).

Informe de remitentes principales de CloudFront

El informe de remitentes principales de CloudFront incluye los primeros 25 remitentes, la cantidad de


solicitudes de cada remitente y este mismo valor como porcentaje del total de solicitudes realizadas en un
periodo específico.

Para obtener más información, consulte Informe de remitentes principales de CloudFront (p. 436).

Informes de uso de CloudFront

Los informes de uso de CloudFront incluyen la siguiente información:

• Number of Requests (Cantidad de solicitudes): muestra la cantidad total de solicitudes a las que
responde CloudFront desde ubicaciones de borde en la región seleccionada durante cada intervalo de
tiempo para la distribución de CloudFront especificada.

427
Amazon CloudFront Guía para desarrolladores
Informes estadísticos de caché de CloudFront

• Data Transferred by Protocol (Datos transferidos por protocolo) y Data Transferred by Destination
(Datos transferidos por destino): muestra la cantidad total de datos transferidos desde ubicaciones de
borde de CloudFront en la región seleccionada durante cada intervalo de tiempo para la distribución de
CloudFront especificada. Separan los datos de manera diferente, como se indica a continuación:
• By Protocol (Por protocolo): separa los datos por protocolo: HTTP o HTTPS.
• By Destination (Por destino): separa los datos por destino: a sus usuarios o a su origen.

Para obtener más información, consulte Informes de uso de CloudFront (p. 439).

Informes de lectores de CloudFront

Los informes de lectores de CloudFront incluyen la siguiente información:

• Devices (Dispositivos): muestra los tipos de dispositivo (por ejemplo, de escritorio o móvil) que los
usuarios utilizan para obtener acceso a su contenido.
• Browsers (Navegadores): muestra el nombre (o el nombre y la versión) de los navegadores que los
usuarios utilizan con mayor frecuencia para obtener acceso a su contenido (por ejemplo, Chrome o
Firefox).
• Operating Systems (Sistemas operativos): muestra el nombre (o el nombre y la versión) del sistema
operativo desde el que los lectores obtienen acceso a su contenido con mayor frecuencia, por ejemplo,
Linux, Mac OS X o Windows.
• Locations (Ubicaciones): muestra la ubicación, por país o estado o territorio de EE. UU., desde la que los
lectores obtienen acceso a su contenido con mayor frecuencia.

Para obtener más información, consulte Informe de lectores de CloudFront (p. 444).

Informes estadísticos de caché de CloudFront


Puede utilizar la consola de Amazon CloudFront para mostrar una representación gráfica de las
estadísticas relacionadas con las ubicaciones de borde de CloudFront. Los datos de estas estadísticas
proceden de la misma fuente que los registros de acceso de CloudFront. Puede visualizar gráficos durante
un intervalo 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
como durante 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 mostrar 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 (Estadísticas de caché).
3. En el panel CloudFront Cache Statistics Reports (Informes de estadísticas de caché de CloudFront),
en Start Date (Fecha de inicio) y End Date (Fecha de finalización), seleccione el intervalo de fechas
cuyos gráficos de estadísticas desea ver. Los intervalos disponibles dependen del valor seleccionado
en Granularity (Grado de detalle):

• Daily (Por día): para ver gráficos con un punto de datos por día, seleccione un intervalo de fechas
dentro de los últimos 60 días.
• Hourly (Por hora): para ver gráficos con un punto de datos por cada hora, seleccione un intervalo de
fechas igual o inferior a 14 días en los últimos 60 días.

428
Amazon CloudFront Guía para desarrolladores
Informes estadísticos de caché de CloudFront

Las fechas y horas se muestran según la hora universal coordinada (UTC).


4. En Granularity (Grado de detalle), 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 por hora no estará disponible.
5. En Viewer Location (Ubicación del espectador), elija el continente desde el que se originaron
las solicitudes de los espectadores o elija All Locations (Todas las ubicaciones). Los gráficos de
estadísticas de caché incluyen los datos de las solicitudes que CloudFront haya recibido desde la
ubicación especificada.
6. En la lista Distribution (Distribución), seleccione las distribuciones cuyos datos desea visualizar en los
gráficos de uso:

• Una distribución individual: los gráficos muestran los datos de la distribución web de CloudFront
seleccionada. La lista Distribution (Distribución) muestra el ID de distribución y los nombres de
dominio alternativos (CNAME), de haberlos. Si una distribución no tiene otros nombres de dominio,
la lista incluye los nombres de dominio de origen para la distribución.
• Todas las distribuciones: los gráficos muestran el total de datos de todas las distribuciones web
asociadas a la cuenta de AWS actual, excluyendo las distribuciones que ha eliminado.
7. Haga clic en Update (Actualizar).
8. Para ver la información contenida en los puntos de datos por día o por hora de un gráfico, pase el
ratón por encima del punto de datos correspondiente.
9. Tome en cuenta que puede cambiar el escalado vertical a gigabytes, megabytes o kilobytes en los
gráficos que muestran los datos transferidos.

Temas
• Descargar datos en formato CSV (p. 429)
• Cómo los gráficos estadísticos de caché están relacionados con los datos contenidos en los registros
de acceso de CloudFront (p. 431)

Descargar datos en formato CSV


Puede descargar el informe Cache Statistics en formato CSV. En esta sección se explica cómo hacerlo y
describe los valores del informe.

Para descargar el informe Cache Statistics en formato CSV

1. Mientras consulta el informe Cache Statistics (Estadísticas de caché), haga clic en CSV.
2. En el cuadro de diálogo Opening file name (Abriendo nombre de archivo), decida si desea abrir o
guardar el archivo.

Información acerca del informe


Las primeras filas del informe incluyen la siguiente información:

Version

La versión del formato del archivo CSV


Informe

El nombre del informe.

429
Amazon CloudFront Guía para desarrolladores
Informes estadísticos de caché de CloudFront

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas las


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


Granularity

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 decidido
descargar 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 las


distribuciones.
FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución no


tiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.
ViewerLocation

El continente desde el que se originan las solicitudes de los espectadores, o ALL si ha decidido
descargar un informe de todas las ubicaciones.
TimeBucket

La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).
RequestCount

La cantidad total de solicitudes de todos los códigos de estado HTTP (por ejemplo, 200 o 404) y todos
los métodos (por ejemplo, GET, HEAD o POST).
HitCount

La cantidad de solicitudes de lectores para las que se ofrece el objeto desde una caché de borde de
CloudFront.
MissCount

La cantidad de solicitudes de lectores para las cuales el objeto no se encuentra actualmente en una
caché de borde, por lo que CloudFront debe obtener el objeto desde su origen.

430
Amazon CloudFront Guía para desarrolladores
Informes estadísticos de caché de CloudFront

ErrorCount

La cantidad de solicitudes de lectores que generaron un error, por lo que CloudFront no pudo servir el
objeto.
IncompleteDownloadCount

La cantidad de solicitudes de espectadores comenzadas por ellos mismos, pero en las que no terminó
de descargarse el objeto.
HTTP2xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 2xx (realizado
correctamente).
HTTP3xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 3xx (acción
adicional requerida).
HTTP4xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 4xx (error del
cliente).
HTTP5xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 5xx (error del
servidor).
TotalBytes

La cantidad total de bytes enviados por CloudFront a los lectores en respuesta a todas las solicitudes
para todos los métodos de HTTP.
BytesFromMisses

La cantidad de bytes enviados a espectadores para objetos que no estaban en la caché perimetral
en el momento de la solicitud. Este valor es una buena estimación de los bytes transferidos desde el
origen hasta las cachés de borde de CloudFront. Sin embargo, excluye las solicitudes de objetos que
ya están en la caché perimetral, pero que han caducado.

Cómo los gráficos estadísticos de caché están relacionados con


los datos contenidos en los registros de acceso de CloudFront
La siguiente tabla muestra cómo gráficos de estadísticas de caché en la consola de CloudFront se
corresponden con los valores contenidos en los registros de acceso de CloudFront. Para obtener más
información sobre los registros de acceso de CloudFront, consulte Configuración y uso de registros
estándar (registros de acceso) (p. 463).

Total Requests

Este gráfico muestra la cantidad total de solicitudes de todos los códigos de estado HTTP (por
ejemplo, 200 o 404) y todos los métodos (por ejemplo, GET, HEAD, or POST). El total de solicitudes
que se muestran en esta tabla es igual a la cantidad total de solicitudes en los archivos de registro del
mismo periodo.
Percentage of Viewer Requests by Result Type

Este gráfico muestra los aciertos, fallos y errores como porcentaje del total de solicitudes de los
lectores a la distribución de CloudFront seleccionada:
• Hit (Acierto): una solicitud del lector cuyo objeto se envió desde una caché de borde de CloudFront.
En los registros de acceso, estas son solicitudes cuyo valor de x-edge-response-result-type
es Hit.

431
Amazon CloudFront Guía para desarrolladores
Informe de objetos populares de CloudFront

• Miss (Fallo): una solicitud del lector para la cual el objeto no se encuentra en ese momento en una
caché de borde, por lo que CloudFront debe obtener el objeto desde su origen. En los registros de
acceso, estas son solicitudes cuyo valor de x-edge-response-result-type es Miss.
• Error: una solicitud del lector en la que ocurrió un error, por lo que CloudFront no pudo ofrecer
el objeto. En los registros de acceso, estas son solicitudes cuyo valor de x-edge-response-
result-type es Error, LimitExceeded o CapacityExceeded.

El gráfico no incluye visitas de actualización (solicitudes de objetos que están en la caché de borde,
pero que han caducado). En los registros de acceso, las visitas de actualización son solicitudes cuyo
valor de x-edge-response-result-type es RefreshHit.
Bytes Transferred to Viewers

Este gráfico muestra dos valores:


• Total Bytes (Bytes en total): la cantidad total de bytes enviados por CloudFront a los lectores en
respuesta a todas las solicitudes para todos los métodos HTTP. En los registros de acceso de
CloudFront, Total Bytes (Bytes en total) es la suma de los valores de la columna sc-bytes de
todas las solicitudes realizadas durante el mismo periodo.
• Bytes from Misses (Bytes de fallos): la cantidad de bytes enviados a los lectores para objetos
que no estaban en la caché de borde en el momento de la solicitud. En los registros de acceso
de CloudFront, Bytes from Misses (Bytes de fallos) es la suma de los valores de la columna sc-
bytes de las solicitudes cuyo valor de x-edge-result-type es Miss. Este valor es una buena
estimación de los bytes transferidos desde el origen hasta las cachés de borde de CloudFront. Sin
embargo, excluye las solicitudes de objetos que ya están en la caché perimetral, pero que han
caducado.
HTTP Status Codes

Este gráfico muestra las solicitudes de los espectadores por código de estado HTTP. En los registros
de acceso de CloudFront, los códigos de estado aparecen en la columna sc-status:
• 2xx: la solicitud se ha realizado correctamente.
• 3xx: se requiere una acción adicional. Por ejemplo, 301 (Movido permanentemente) significa que el
objeto solicitado se ha movido a otra ubicación.
• 4xx: aparentemente, el cliente ha cometido un error. Por ejemplo, 404 (No encontrado) significa que
el cliente solicitó un objeto que no se pudo encontrar.
• 5xx: el servidor de origen no pudo satisfacer la solicitud. Por ejemplo, 503 (Servicio no disponible)
significa que el servidor de origen no está disponible en ese momento.
Percentage of GET Requests that Didn't Finish Downloading

Este gráfico muestra el porcentaje del total de solicitudes que corresponde a las solicitudes de
espectadores GET que no terminaron de descargar el objeto solicitado. Normalmente, la descarga de
un objeto no finaliza correctamente porque el espectador cancela la descarga, por ejemplo, al hacer
clic en un enlace diferente o cerrar el navegador. En los registros de acceso de CloudFront, estas
solicitudes tienen un valor de 200 en la columna sc-status y un valor de Error en la columna x-
edge-result-type.

Informe de objetos populares de CloudFront


La consola de Amazon CloudFront puede mostrar una lista de los 50 objetos más populares de una
distribución durante un intervalo de tiempo especificado dentro de los últimos 60 días.

Los datos del informe de objetos populares procede del mismo origen que los registros de acceso de
CloudFront. Para obtener un recuento preciso de los 50 objetos más populares, CloudFront cuenta las
solicitudes de todos los objetos en intervalos de 10 minutos a partir de la medianoche y mantiene un
recuento actual de los 150 objetos más populares durante las próximas 24 horas. (CloudFront también

432
Amazon CloudFront Guía para desarrolladores
Informe de objetos populares de CloudFront

retiene los totales diarios de los 150 objetos más populares durante 60 días). Cerca de la parte inferior de
la lista, los objetos suben y bajan puestos constantemente o salen de la lista, así que los totales de dichos
objetos son aproximados. Los cincuenta objetos de la parte superior de la lista de 150 objetos pueden
subir o bajar, pero no suelen salir de la lista, así que el total de los objetos de esa parte suele ser más
fiable.

Cuando un objeto sale de la lista de los 150 objetos más populares y vuelve a entrar pasado un día,
CloudFront agrega un número estimado de solicitudes para el período durante el cual el objeto no estuvo
en la lista. La estimación se basa en el número de solicitudes recibidas por cualquier objeto de la parte
inferior de la lista durante dicho periodo. Si el objeto sube a la parte de los primeros 50 objetos más tarde
el mismo día, las estimaciones de la cantidad de solicitudes que CloudFront recibió mientras el objeto
estaba fuera de la parte de los primeros 150 objetos suele provocar que la cantidad de solicitudes de
ese objeto reflejada en el informe de objetos populares sea mayor que la que aparece en los registros de
acceso.
Note

No es necesario habilitar el registro de accesos para ver una lista de objetos populares.

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 (Objetos populares) en el panel de navegación.
3. En el panel CloudFront Popular Objects Report (Informe de objetos populares de CloudFront), en Start
Date (Fecha de inicio) y End Date (Fecha de finalización), seleccione el intervalo de fechas para el que
desea mostrar una lista de objetos populares. 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 (Distribución), seleccione la distribución cuya lista de objetos populares desea
ver.
5. Haga clic en Update (Actualizar).

Temas
• Descargar datos en formato CSV (p. 433)
• Cómo los datos del informe de objetos populares están relacionados con los datos de los registros de
acceso de CloudFront (p. 435)

Descargar datos en formato CSV


Puede descargar el informe Popular Objects en formato CSV. En esta sección se explica cómo hacerlo y
describe los valores del informe.

Para descargar el informe Popular Objects en formato CSV

1. Mientras consulta el informe Popular Objects (Objetos populares), haga clic en CSV.
2. En el cuadro de diálogo Opening file name (Abriendo nombre de archivo), decida si desea abrir o
guardar el archivo.

Información acerca del informe


Las primeras filas del informe incluyen la siguiente información:

433
Amazon CloudFront Guía para desarrolladores
Informe de objetos populares de CloudFront

Version

La versión del formato del archivo CSV


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

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 no


tiene 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 lectores para las que se ofrece el objeto desde una caché de borde de
CloudFront.
MissCount

La cantidad de solicitudes de lectores para las cuales el objeto no se encuentra actualmente en una
caché de borde, por lo que CloudFront debe obtener el objeto desde su origen.
HitCountPct

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 en el momento de la solicitud.

434
Amazon CloudFront Guía para desarrolladores
Informe de objetos populares de CloudFront

TotalBytes

La cantidad total de bytes enviados por CloudFront a los lectores para este objeto en respuesta a
todas las solicitudes para todos los métodos de HTTP.
IncompleteDownloadCount

La cantidad de solicitudes de ese objeto comenzadas por los espectadores, pero en las que no
terminó de descargarse dicho objeto.
HTTP2xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 2xx (realizado
correctamente).
HTTP3xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 3xx (acción
adicional requerida).
HTTP4xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 4xx (error del
cliente).
HTTP5xx

La cantidad de solicitudes de espectadores cuyo valor de código de estado HTTP fue 5xx (error del
servidor).

Cómo los datos del informe de objetos populares están


relacionados con los datos de los registros de acceso de
CloudFront
La siguiente lista muestra cómo los valores del informe de objetos populares de la consola de CloudFront
se corresponden con los valores contenidos en los registros de acceso de CloudFront. Para obtener
más información sobre los registros de acceso de CloudFront, consulte Configuración y uso de registros
estándar (registros de acceso) (p. 463).

URL

Los últimos 500 caracteres de la URL que los espectadores utilizan para obtener acceso al objeto.
Solicitudes

La cantidad total de solicitudes del objeto. Este valor suele corresponderse estrechamente con la
cantidad de solicitudes GET del objeto en los registros de acceso de CloudFront.
Hits

La cantidad de solicitudes de lectores para las que se envió el objeto desde una caché de borde de
CloudFront. En los registros de acceso, estas son solicitudes cuyo valor de x-edge-response-
result-type es Hit.
Misses

La cantidad de solicitudes de lectores para las cuales el objeto no se encontraba en una caché de
borde, por lo que CloudFront debe obtener el objeto desde su origen. En los registros de acceso, estas
son solicitudes cuyo valor de x-edge-response-result-type es Miss.
Hit Ratio

El valor de la columna Hits (Aciertos) como porcentaje del valor de la columna Requests (Solicitudes).

435
Amazon CloudFront Guía para desarrolladores
Informe de remitentes principales de CloudFront

Bytes from Misses

La cantidad de bytes enviados a espectadores para objetos que no estaban en la caché perimetral
en el momento de la solicitud. En los registros de acceso de CloudFront, Bytes from Misses (Bytes de
fallos) es la suma de los valores de la columna sc-bytes de las solicitudes cuyo valor de x-edge-
result-type es Miss.
Total Bytes

La cantidad total de bytes que CloudFront ha enviado a los lectores en respuesta a todas las
solicitudes del objeto por todos los métodos HTTP. En los registros de acceso de CloudFront, Total
Bytes (Bytes en total) es la suma de los valores de la columna sc-bytes de todas las solicitudes
realizadas durante el mismo periodo.
Incomplete Downloads

La cantidad de solicitudes 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
cancelado, por ejemplo, al hacer clic en un enlace diferente o cerrar el navegador. En los registros de
acceso de CloudFront, estas solicitudes tienen un valor de 200 en la columna sc-status y un valor
de Error en la columna x-edge-result-type.
2xx

La cantidad de solicitudes cuyo código de estado HTTP es 2xx, Successful. En los registros de
acceso de CloudFront, los códigos de estado aparecen en la columna sc-status.
3xx

La cantidad de solicitudes cuyo valor de código de estado HTTP es 3xx, Redirection. Los
códigos de estado 3xx indican que se requiere una acción adicional. Por ejemplo, 301 (Movido
permanentemente) significa que el objeto solicitado se ha movido a otra ubicación.
4xx

La cantidad de solicitudes cuyo valor de código de estado HTTP es 4xx, Client Error. Los códigos
de estado 4xx indican que el cliente pudo haber cometido un error. Por ejemplo, 404 (No encontrado)
significa que el cliente solicitó un objeto que no se pudo encontrar.
5xx

La cantidad de solicitudes cuyo valor de código de estado HTTP es 5xx, Server Error. Los códigos
de estado 5xx indican que el servidor de origen no pudo satisfacer la solicitud. Por ejemplo, 503
(Servicio no disponible) significa que el servidor de origen no está disponible en ese momento.

Informe de remitentes principales de CloudFront


La consola de CloudFront puede mostrar una lista de los 25 dominios de los sitios web que originaron la
mayoría de solicitudes HTTP y HTTPS de los objetos que CloudFront está enviando para una distribución
determinada. Estos remitentes principales pueden ser motores de búsqueda, otros sitios web que enlazan
directamente con sus objetos o su propio sitio web. Por ejemplo, si http://example.com/index.html enlaza
a 10 gráficos, example.com es el remitente de todos ellos. Puede visualizar el informe de los remitentes
principales 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 objeto
solicitado.

Los datos del informe de remitentes principales proceden de la misma fuente que los registros de acceso
de CloudFront. Para obtener un conteo preciso de los 25 remitentes principales, CloudFront cuenta
las solicitudes de todos los objetos en intervalos de 10 minutos y mantiene un recuento actual de los

436
Amazon CloudFront Guía para desarrolladores
Informe de remitentes principales de CloudFront

75 remitentes principales. Cerca de la parte inferior de la lista, los remitentes suben y bajan puestos
constantemente o salen de la lista, así que los totales de dichos remitentes son aproximados. Los 25
remitentes de la parte superior de la lista de 75 remitentes pueden subir o bajar, pero no suelen salir de la
lista, así que el total de los remitentes de esa parte suele ser más fiable.
Note

No es necesario habilitar el registro de accesos para ver una lista de remitentes populares.

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 (Remitentes principales).
3. En el panel CloudFront Top Referrers Report (Informe de remitentes principales de Cloudfront), en
Start Date (Fecha de inicio) y End Date (Fecha de finalización), seleccione el intervalo de fechas cuya
lista de remitentes principales desee mostrar.

Las fechas y horas se muestran según la hora universal coordinada (UTC).


4. En la lista Distribution (Distribución), seleccione la distribución cuya lista de remitentes principales
desea ver.
5. Haga clic en Update (Actualizar).

Temas
• Descargar datos en formato CSV (p. 437)
• Cómo los datos del informe de remitentes principales están relacionados con los datos de los registros
de acceso de CloudFront (p. 438)

Descargar datos en formato CSV


Puede descargar el informe Top Referrers en formato CSV. En esta sección se explica cómo hacerlo y
describe los valores del informe.

Para descargar el informe Top Referrers en formato CSV

1. Mientras consulta el informe Top Referrers (Remitentes principales), haga clic en CSV.
2. En el cuadro de diálogo Opening file name (Abriendo nombre de archivo), decida si desea abrir o
guardar el archivo.

Información acerca del informe


Las primeras filas del informe incluyen la siguiente información:

Version

La versión del formato del archivo CSV


Informe

El nombre del informe.


DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas las


distribuciones.

437
Amazon CloudFront Guía para desarrolladores
Informe de remitentes principales de CloudFront

StartDateUTC

El principio del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
EndDateUTC

El fin del intervalo de fechas para el que ha solicitado el informe, en tiempo universal coordinado
(UTC).
GeneratedTimeUTC

La fecha y hora en ha solicitado el informe, en tiempo universal coordinado (UTC).

Los datos del informe Top Referrers


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 las


distribuciones.
FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución no


tiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.
Referrer

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 en
un periodo específico.

Cómo los datos del informe de remitentes principales están


relacionados con los datos de los registros de acceso de
CloudFront
La siguiente lista muestra cómo los valores del informe de remitentes principales de la consola de
CloudFront se corresponden con los valores contenidos en los registros de acceso de CloudFront. Para
obtener más información sobre los registros de acceso de CloudFront, consulte Configuración y uso de
registros estándar (registros de acceso) (p. 463).

Remitente

El nombre del dominio del remitente. En los registros de acceso, los remitentes se enumeran en la
columna cs(Referer).
Request Count

La cantidad total de solicitudes desde el nombre de dominio de la columna Referrer (Remitente). Este
valor suele corresponderse estrechamente con la cantidad de solicitudes GET del remitente en los
registros de acceso de CloudFront.

438
Amazon CloudFront Guía para desarrolladores
Informes de uso de CloudFront

Solicitud %

La cantidad de solicitudes enviadas por el remitente como porcentaje de las solicitudes realizadas
en un periodo específico. Si tiene más de 25 remitentes, no podrá calcular el valor Request % (%
de solicitudes) en función de los datos de esta tabla, ya que la columna Request Count (Número de
solicitudes) no incluye todas las solicitudes del período especificado.

Informes de uso de CloudFront


La consola de Amazon CloudFront puede mostrar una representación gráfica del uso que ha hecho de
CloudFront que se basa en un subconjunto de los datos del informe de uso. Puede visualizar gráficos
durante un intervalo de tiempo especificado dentro de los últimos 60 días, con puntos de datos cada hora
o cada día. Generalmente puede ver datos de las solicitudes que CloudFront ha recibido tan recientemente
como durante las cuatro horas anteriores, pero en ocasiones es posible que los datos se retrasen hasta 24
horas.

Para obtener más información, consulte Cómo los gráficos de uso están relacionados con los datos
contenidos en el informe de uso de CloudFront (p. 442).

Para mostrar 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/
2. En el panel navigation (Navegación), haga clic en Usage Reports (Informes de uso).
3. En el panel CloudFront Usage Reports (Informes de uso de CloudFront), en Start Date (Fecha de
inicio) y End Date (Fecha de finalización), seleccione el intervalo de fechas cuyos gráficos de uso
desea mostrar. Los intervalos disponibles dependen del valor seleccionado en Granularity (Grado de
detalle):

• Daily (Por día): para ver gráficos con un punto de datos por día, seleccione un intervalo de fechas
dentro de los últimos 60 días.
• Hourly (Por hora): para ver gráficos con un punto de datos por cada hora, seleccione un intervalo de
fechas igual o inferior a 14 días en los últimos 60 días.

Las fechas y horas se muestran según la hora universal coordinada (UTC).


4. En Granularity (Grado de detalle), 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 por hora no estará disponible.
5. En Billing Region (Región de facturación), elija la región de facturación de CloudFront que contiene los
datos que desea ver o elegir All Regions (Todas las regiones). Los gráficos de uso incluyen los datos
de las solicitudes que CloudFront procesa en las ubicaciones de borde en la región especificada. La
región en la que CloudFront procesa 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 clase
de precio 200 para su distribución, las regiones de facturación de América del Sur y Australia no se
incluyen por lo que, por lo general, CloudFront no procesará las solicitudes de esas regiones. Para
obtener más información acerca de las clases de precios, consulte Elegir la clase de precio para una
distribución de CloudFront (p. 14).
6. En la lista Distribution (Distribución), seleccione las distribuciones cuyos datos desea visualizar en los
gráficos de uso:

• Una distribución individual: los gráficos muestran los datos de la distribución web de CloudFront
seleccionada. La lista Distribution (Distribución) muestra el ID de distribución y los nombres de

439
Amazon CloudFront Guía para desarrolladores
Informes de uso de CloudFront

dominio alternativos (CNAME), de haberlos. Si una distribución no tiene otros nombres de dominio,
la lista incluye los nombres de dominio de origen para la distribución.
• Todas las distribuciones (excluidas las eliminadas): los gráficos muestran el total de datos de todas
las distribuciones web asociadas a la cuenta actual de AWS, excluyendo las distribuciones web que
ha eliminado.
• Todas las distribuciones eliminadas: los gráficos muestran el total de datos de todas las
distribuciones asociadas a la cuenta actual de AWS y que se eliminaron durante los últimos 60 días.
7. Haga clic en Update Graphs (Actualizar gráficos).
8. Para ver la información contenida en los puntos de datos por día o por hora de un gráfico, pase el
ratón por encima del punto de datos correspondiente.
9. Tome en cuenta que puede cambiar el escalado vertical a gigabytes, megabytes o kilobytes en los
gráficos que muestran los datos transferidos.

Temas
• Descargar datos en formato CSV (p. 440)
• Cómo los gráficos de uso están relacionados con los datos contenidos en el informe de uso de
CloudFront (p. 442)

Descargar datos en formato CSV


Puede descargar el informe de uso en formato CSV. En esta sección se explica cómo hacerlo y describe
los valores del informe.

Para descargar el informe de uso en formato CSV

1. Mientras consulta el informe de uso, haga clic en CSV.


2. En el cuadro de diálogo Opening file name (Abriendo nombre de archivo), decida si desea abrir o
guardar el archivo.

Información acerca del informe


Las primeras filas del informe incluyen la siguiente información:

Version

La versión del formato del archivo CSV


Informe

El nombre del informe.


DistributionID

El ID de la distribución del informe solicitado, ALL si se ha solicitado el informe de todas las


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

440
Amazon CloudFront Guía para desarrolladores
Informes de uso de CloudFront

GeneratedTimeUTC

La fecha y hora en ha solicitado el informe, en tiempo universal coordinado (UTC).


Granularity

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 decidido
descargar 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 las


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


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


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 en
la región seleccionada durante cada intervalo de tiempo, en la distribución de CloudFront especificada.
Entre los valores se encuentran:
• La cantidad de solicitudes GET y HEAD que activan la transferencia de datos de CloudFront a sus
usuarios
• La cantidad de solicitudes DELETE, OPTIONS, PATCH, POST y PUT que activan la transferencia de
datos de CloudFront a su origen
HTTPS

La cantidad de solicitudes HTTPS a las que CloudFront ha respondido desde ubicaciones de borde en
la región seleccionada durante cada intervalo de tiempo, en la distribución de CloudFront especificada.
Entre los valores se encuentran:
• La cantidad de solicitudes GET y HEAD que activan la transferencia de datos de CloudFront a sus
usuarios
• La cantidad de solicitudes DELETE, OPTIONS, PATCH, POST y PUT que activan la transferencia de
datos de CloudFront a su origen
HTTPBytes

La cantidad total de datos transferidos a través de HTTP desde las ubicaciones de borde de
CloudFront en la región de facturación seleccionada durante el periodo de tiempo especificado para la
distribución de CloudFront. Entre los valores se encuentran:
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes GET y HEAD

441
Amazon CloudFront Guía para desarrolladores
Informes de uso de CloudFront

• Los datos que se han transferido desde CloudFront hasta el origen en respuesta a las solicitudes
DELETE, OPTIONS, PATCH, POST y PUT.
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes DELETE, OPTIONS, PATCH, POST y PUT
HTTPSBytes

La cantidad total de datos transferidos a través de HTTPS desde las ubicaciones de borde de
CloudFront en la región de facturación seleccionada durante el periodo de tiempo especificado para la
distribución de CloudFront. Entre los valores se encuentran:
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes GET y HEAD
• Los datos que se han transferido desde CloudFront hasta el origen en respuesta a las solicitudes
DELETE, OPTIONS, PATCH, POST y PUT.
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes DELETE, OPTIONS, PATCH, POST y PUT
BytesIn

La cantidad total de datos transferidos desde CloudFront hasta el origen en respuesta a las solicitudes
DELETE, OPTIONS, PATCH, POST y PUT en la región seleccionada durante cada intervalo de tiempo
especificado para la distribución de CloudFront.
BytesOut

La cantidad total de datos transferidos a través de HTTP y HTTPS desde CloudFront hasta sus
usuarios en la región seleccionada durante cada intervalo de tiempo especificado para la distribución
de CloudFront. Entre los valores se encuentran:
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes GET y HEAD
• Los datos que se han transferido desde CloudFront hasta sus usuarios en respuesta a las
solicitudes DELETE, OPTIONS, PATCH, POST y PUT

Cómo los gráficos de uso están relacionados con los datos


contenidos en el informe de uso de CloudFront
La siguiente lista muestra cómo el uso de gráficos en la consola de CloudFront se corresponde con los
valores de la columna Usage Type (Tipo de uso) del informe de uso de CloudFront.

Temas
• Cantidad de solicitudes (p. 442)
• Datos transferidos por protocolo (p. 443)
• Datos transferidos por destino (p. 443)

Cantidad de solicitudes
Este gráfico muestra la cantidad total de solicitudes a las que responde CloudFront desde ubicaciones
de borde en la región seleccionada durante cada intervalo de tiempo para la distribución de CloudFront
especificada, separadas por protocolo (HTTP o HTTPS) y tipo (estático, dinámico o proxy).

Cantidad de solicitudes HTTP


• región-Requests-HTTP-Static: número de solicitudes HTTP GET y HEAD enviadas para objetos con
TTL ≥ 3600 segundos
• región-Requests-HTTP-Dynamic: cantidad de solicitudes HTTP GET y HEAD enviadas de objetos
con TTL < 3 600 segundos

442
Amazon CloudFront Guía para desarrolladores
Informes de uso de CloudFront

• región-Requests-HTTP-Proxy: número de solicitudes HTTP DELETE, OPTIONS, PATCH, POST y


PUT que CloudFront reenvía a su origen
Cantidad de solicitudes HTTPS
• región-Requests-HTTPS-Static: número de solicitudes HTTPS GET y HEAD enviadas para objetos
con TTL ≥ 3600 segundos
• región-Requests-HTTPS-Dynamic: cantidad de solicitudes HTTPS GET y HEAD enviadas de
objetos con TTL < 3 600 segundos
• región-Requests-HTTPS-Proxy: número de solicitudes HTTPS DELETE, OPTIONS, PATCH, POST y
PUT que CloudFront reenvía a su origen

Datos transferidos por protocolo


Este gráfico muestra la cantidad total de datos transferidos desde ubicaciones de borde de CloudFront en
la región seleccionada durante cada intervalo de tiempo para la distribución de CloudFront especificada,
separados por protocolo (HTTP o HTTPS), tipo (estático, dinámico o proxy) y destino (usuarios u origen).

Datos transferidos a través de HTTP


• región-Out-Bytes-HTTP-Static: bytes enviados por HTTP de objetos con un TTL ≥ 3600 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 lectores por HTTP en
respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.
• región-Out-OBytes-HTTP-Proxy: total de bytes transferidos por HTTP desde las ubicaciones de
borde 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-HTTP-Static: bytes enviados por HTTPS de objetos con un TTL ≥ 3600
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 lectores 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 desde ubicaciones de borde de CloudFront en
la región seleccionada durante cada intervalo de tiempo para la distribución de CloudFront especificada,
separados por destino (usuarios u origen), protocolo (HTTP o HTTPS) y tipo (estático, dinámico o proxy).

Datos transferidos de CloudFront a sus usuarios


• región-Out-Bytes-HTTP-Static: bytes enviados por HTTP de objetos con un TTL ≥ 3600 segundos.
• región-Out-Bytes-HTTP-Static: bytes enviados por HTTPS de objetos con un TTL ≥ 3600
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 lectores por HTTP en
respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.

443
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront

• región-Out-Bytes-HTTPS-Proxy: bytes devueltos de CloudFront a los lectores por HTTPS en


respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.
Datos transferidos de CloudFront a su origen
• región-Out-OBytes-HTTP-Proxy: total de bytes transferidos por HTTP desde las ubicaciones de
borde 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 de
borde de CloudFront al origen en respuesta a solicitudes DELETE, OPTIONS, PATCH, POST y PUT.

Informe de lectores de CloudFront


La consola de CloudFront puede mostrar cuatro informes sobre los dispositivos físicos (equipos de
escritorio, dispositivos móviles) y sobre los lectores (por lo general, navegadores web) que acceden al
contenido:

• Devices (Dispositivos): los tipos de dispositivo que los usuarios utilizan con mayor frecuencia para
obtener acceso a su contenido, como por ejemplo, de escritorio o móvil.
• Browsers (Navegadores): el nombre (o el nombre y la versión) de los navegadores que los usuarios
utilizan con mayor frecuencia para obtener acceso a su contenido (por ejemplo, Chrome o Firefox). El
informe muestra los 10 navegadores principales.
• Operating Systems (Sistemas operativos): el nombre (o el nombre y la versión) del sistema operativo
desde el que los lectores obtienen acceso a su contenido con mayor frecuencia, por ejemplo, Linux, Mac
OS X o Windows. El informe muestra los 10 sistemas operativos principales.
• Locations (Ubicaciones): la ubicación, por país o estado o territorio de EE. UU., desde la que los lectores
obtienen acceso a su contenido con mayor frecuencia. El informe muestra los 50 países principales de
los Estados Unidos o de los estados y territorios.

Puede visualizar los cuatro informes de espectadores para cualquier intervalo de fechas de los últimos
60 días. En el informe Locations también puede visualizar los puntos de datos de cada hora dentro de
cualquier intervalo de fechas de hasta 14 días en los últimos 60 días.
Note

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. 444)
• Descargar datos en formato CSV (p. 445)
• Cómo los datos del informe Locations están relacionados con los datos de los registros de acceso de
CloudFront (p. 451)

Visualización de gráficos e informes de espectadores


Para visualizar gráficos e informes de lectores de CloudFront, siga el procedimiento a continuación.

Para mostrar gráficos e informes de lectores 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 (Espectadores).
3. En el panel CloudFront Viewers (Lectores de CloudFront), en Start Date (Fecha de inicio) y End Date
(Fecha de finalización), seleccione el intervalo de fechas cuyos gráficos e informes desea mostrar.

444
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront

En el gráfico Locations (Ubicaciones), los intervalos disponibles dependen del valor seleccionado en
Granularity (Grado de detalle):

• Daily (Por día): para ver gráficos con un punto de datos por día, seleccione un intervalo de fechas
dentro de los últimos 60 días.
• Hourly (Por hora): para ver gráficos con un punto de datos por cada hora, seleccione un intervalo de
fechas igual o inferior a 14 días en los últimos 60 días.

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 (Agrupación), 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 (Grado de detalle), especifique si desea mostrar en los
gráficos un punto de datos por día o por hora. Si especifica un intervalo de fechas de más de 14 días,
la opción de especificar un punto de datos por hora no estará disponible.
6. Solo gráfico de ubicaciones: en Details (Detalles), especifique si desea mostrar las ubicaciones más
populares por país o por estados de Estados Unidos.
7. En la lista Distribution (Distribución), seleccione la distribución cuyos datos desea ver en los gráficos
de uso:

• Una distribución individual: los gráficos muestran los datos de la distribución web de CloudFront
seleccionada. La lista Distribution (Distribución) muestra el ID de distribución y un nombre de
dominio alternativo (CNAME), de haberlo. Si una distribución no tiene otros nombres de dominio, la
lista incluye un nombre de dominio de origen para la distribución.
• Todas las distribuciones (excluidas las eliminadas): los gráficos muestran el total de datos de todas
las distribuciones web asociadas a la cuenta actual de AWS, excluyendo las distribuciones web que
ha eliminado.
8. Haga clic en Update (Actualizar).
9. Para ver la información contenida en los puntos de datos por día o por hora de un gráfico, pase el
ratón por encima del punto de datos correspondiente.

Descargar datos en formato CSV


Puede descargar todos los informes de espectadores en formato CSV. En esta sección se explica cómo
descargar dichos informes y describe sus valores.

Para descargar informes de espectadores en formato CSV

1. Al visualizar el informe de espectadores, haga clic en CSV.


2. Elija los datos que desea descargar, por ejemplo, Devices (Dispositivos) o Devices Trends
(Tendencias de dispositivos).
3. En el cuadro de diálogo Opening file name (Abriendo nombre de archivo), decida si desea abrir o
guardar el archivo.

Temas
• información acerca de los informes (p. 446)
• Informe Devices (p. 446)
• Informe Device Trends (p. 447)
• Informe Browsers (p. 447)
• Browser Trends Report (p. 448)

445
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront

• Informe Operating Systems (p. 449)


• Informe Operating System Trends (p. 449)
• Informe Locations (p. 450)
• Informe Location Trends (p. 450)

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 CSV


Informe

El nombre del informe.


DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas las


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


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 nombre
y versión.
Granularity

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


distribuciones.
FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución no


tiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.
Solicitudes

La cantidad de solicitudes que CloudFront ha recibido de cada tipo de dispositivo.

446
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront

RequestsPct

La cantidad de solicitudes que CloudFront ha recibido desde cada tipo de dispositivo como porcentaje
del total de solicitudes que CloudFront ha recibido de todos los dispositivos.

Informe Device 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 las


distribuciones.
FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución no


tiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.
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 periodo
establecido.
Móvil

La cantidad de solicitudes que CloudFront ha recibido desde dispositivos móviles durante el periodo
establecido. Entre los dispositivos móviles se pueden incluir tablets y teléfonos móviles. Si CloudFront
no puede determinar si una solicitud se ha originado desde un dispositivo móvil o una tableta, se
refleja en la columna Mobile.
Smart-TV

La cantidad de solicitudes que CloudFront ha recibido desde televisores inteligentes durante el periodo
establecido.
Tablet

La cantidad de solicitudes que CloudFront ha recibido desde tabletas durante el periodo establecido.
Si CloudFront no puede determinar si una solicitud se ha originado desde un dispositivo móvil o una
tableta, se refleja en la columna Mobile.
Desconocido

Solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció con uno de los tipos de
dispositivo estándar, por ejemplo, Desktop o Mobile.
Vacío

La cantidad de solicitudes que CloudFront ha recibido y que no incluyeron un valor en el encabezado


HTTP User-Agent durante el periodo establecido.

Informe Browsers
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 las


distribuciones.

447
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront

FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución no


tiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.
Group

El navegador o el navegador y la versión desde los que CloudFront ha recibido solicitudes en función
del valor de Grouping. Además de los nombres de los navegadores, otros valores son:
• Bot/Crawler (Bot/Rastreador): sobre todo solicitudes de motores de búsqueda que están indexando
su contenido.
• Empty (Vacío): solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.
• Other (Otros): navegadores que CloudFront ha identificado pero que no se encuentran entre los
más populares. Si Bot/Crawler, Empty o Unknown no aparecen entre los nueve primeros valores,
también se incluyen en Other.
• Unknown (Desconocidos): solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció
con uno de los navegadores estándar. La mayoría de las solicitudes de esta categoría proceden de
aplicaciones personalizadas o secuencias de comandos.
Solicitudes

La cantidad de solicitudes que CloudFront ha recibido de cada tipo de navegador.


RequestsPct

La cantidad de solicitudes que CloudFront ha recibido desde cada tipo de navegador como porcentaje
del total de solicitudes que CloudFront ha recibido durante el período determinado.

Browser Trends Report


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 las


distribuciones.
FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución no


tiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.
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ón
del valor de Grouping. Además de los nombres de los navegadores, otros valores son:
• Bot/Crawler (Bot/Rastreador): sobre todo solicitudes de motores de búsqueda que están indexando
su contenido.
• Empty (Vacío): solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.
• Other (Otros): navegadores que CloudFront ha identificado pero que no se encuentran entre los
más populares. Si Bot/Crawler, Empty o Unknown no aparecen entre los nueve primeros valores,
también se incluyen en Other.
• Unknown (Desconocidos): solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció
con uno de los navegadores estándar. La mayoría de las solicitudes de esta categoría proceden de
aplicaciones personalizadas o secuencias de comandos.

448
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront

Informe Operating Systems


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 las


distribuciones.
FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución no


tiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.
Group

El sistema operativo o el sistema operativo y la versión desde los que CloudFront ha recibido
solicitudes en función del valor de Grouping. Además de los nombres de los sistemas operativos,
otros valores son:
• Bot/Crawler (Bot/Rastreador): sobre todo solicitudes de motores de búsqueda que están indexando
su contenido.
• Empty (Vacío): solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.
• Other (Otros): sistemas operativos que CloudFront ha identificado pero que no se encuentran entre
los más populares. Si Bot/Crawler, Empty o Unknown no aparecen entre los nueve primeros
valores, también se incluyen en Other.
• Unknown (Desconocidos): solicitudes cuyo valor del encabezado HTTP User-Agent no se asoció
con uno de los navegadores estándar. La mayoría de las solicitudes de esta categoría proceden de
aplicaciones personalizadas o secuencias de comandos.
Solicitudes

La cantidad de solicitudes que CloudFront ha recibido de cada tipo de sistema operativo.


RequestsPct

La cantidad de solicitudes que CloudFront ha recibido desde cada tipo de sistema operativo como
porcentaje del total de solicitudes que CloudFront ha recibido durante el período determinado.

Informe Operating System 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 las


distribuciones.
FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución no


tiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.
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 sus
versiones en función del valor de Grouping. Además de los nombres de los sistemas operativos,
otros valores son:
• Bot/Crawler (Bot/Rastreador): sobre todo solicitudes de motores de búsqueda que están indexando
su contenido.

449
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront

• Empty (Vacío): solicitudes cuyo valor del encabezado HTTP User-Agent estaba vacío.
• Other (Otros): sistemas operativos que CloudFront ha identificado pero que no se encuentran entre
los más populares. Si Bot/Crawler, Empty o Unknown no aparecen entre los nueve primeros
valores, también se incluyen en Other.
• Unknown (Desconocido): solicitudes cuyo sistema operativo no se especifica en el encabezado
HTTP User-Agent.

Informe Locations
El informe incluye los siguientes valores:

DistributionID

El ID de la distribución del informe solicitado, o ALL, si se ha solicitado el informe de todas las


distribuciones.
FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución no


tiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.
LocationCode

La abreviatura de la ubicación desde la que CloudFront recibe solicitudes. Para obtener más
información acerca de los valores posibles, consulte la descripción de Location en Cómo los
datos del informe Locations están relacionados con los datos de los registros de acceso de
CloudFront (p. 451).
LocationName

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 total
de solicitudes que CloudFront ha recibido de todas las ubicaciones durante el período determinado.
TotalBytes

La cantidad total de bytes que CloudFront ha enviado a los lectores en el estado o país, en la
distribución y el periodo especificados.

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 las


distribuciones.
FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución no


tiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.
TimeBucket

La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).

450
Amazon CloudFront Guía para desarrolladores
Informe de lectores de CloudFront

(Locations)

Las demás columnas del informe reflejan las ubicaciones desde las que CloudFront ha recibido
solicitudes. Para obtener más información acerca de los valores posibles, consulte la descripción de
Location en Cómo los datos del informe Locations están relacionados con los datos de los registros de
acceso de CloudFront (p. 451).

Cómo los datos del informe Locations están relacionados con los
datos de los registros de acceso de CloudFront
La siguiente lista muestra cómo los datos del informe Locations de la consola de CloudFront se
corresponden con los valores contenidos en los registros de acceso de CloudFront. Para obtener más
información sobre los registros de acceso de CloudFront, consulte Configuración y uso de registros
estándar (registros de acceso) (p. 463).

Ubicación

El país o estado de EE. UU. en el que se encuentra el espectador. En los registros de acceso, la
columna c-ip contiene la dirección IP del dispositivo en el que se está ejecutando el espectador.
Utilizamos los datos de geolocalización para identificar la ubicación geográfica del dispositivo en
función de la dirección IP.

Si consulta el informe Locations (Ubicaciones) por país, tenga en cuenta que la lista se basa en los
códigos de la norma ISO 3166-2 de representación de nombres de países y sus subdivisiones (parte
2: código de subdivisión de país). La lista de países incluye los siguientes valores adicionales:
• Anonymous Proxy (Proxy anónimo): la solicitud se ha originado en un proxy anónimo.
• Satellite Provider (Proveedor satelital); la solicitud se ha originado desde un proveedor satelital que
ofrece servicios de Internet a varios países. Los usuarios pueden estar en países con un alto riesgo
de fraude.
• Europe (Unknown) (Europa) (Desconocido): la solicitud se ha originado desde una IP en un bloque
utilizado por varios países europeos. No se puede determinar el país en el que se ha originado la
solicitud. CloudFront utiliza Europe (Unknown) (Europa (desconocido)) como valor predeterminado.
• Asia/Pacific (Unknown) (Asia/Pacífico (Desconocido)): la solicitud se ha originado desde una IP
en un bloque utilizado por varios países de la región Asia/Pacífico. No se puede determinar el
país en el que se ha originado la solicitud. CloudFront utiliza Asia/Pacific (Unknown) (Asia/Pacífico
(desconocido)) como valor predeterminado.

Si consulta el informe Locations (Ubicaciones) por estado de Estados Unidos, tenga en cuenta que
puede incluir regiones de territorios y zonas militares estadounidenses.
Note

Si CloudFront no puede determinar la ubicación de un usuario, la ubicación aparecerá como


desconocida en los informes de lector.
Request Count

La cantidad total de solicitudes del país o estado de Estados Unidos en el que se encuentra
el espectador, en la distribución y el periodo especificados. Este valor suele corresponderse
estrechamente con la cantidad de solicitudes GET desde direcciones IP en ese país o estado en los
registros de acceso de CloudFront.
Solicitud %

Una de las siguientes, en función del valor que haya seleccionado para Details (Detalles):
• Countries (Países): las solicitudes de este país como porcentaje del total de solicitudes.

451
Amazon CloudFront Guía para desarrolladores
Monitoreo de CloudFront con Amazon CloudWatch

• U.S. States (Estados de Estados Unidos): las solicitudes de este estado como porcentaje del total
de solicitudes de Estados Unidos.

Si las solicitudes han venido de más de 50 países, no podrá calcular el valor Request % (% de
solicitudes) en función de los datos de esta tabla, ya que la columna Request Count (Número de
solicitudes) no incluye todas las solicitudes del período especificado.
Bytes

La cantidad total de bytes que CloudFront ha enviado a los lectores en el estado o país, en la
distribución y el periodo especificados. Para cambiar la visualización de datos en esta columna a KB,
MB o GB, haga clic en el enlace del encabezado.

Monitoreo de CloudFront con Amazon CloudWatch


Amazon CloudFront se integra con Amazon CloudWatch y publica automáticamente seis métricas
operativas por distribución, que se muestran en un conjunto de gráficos en la consola de CloudFront o
están accesibles mediante la API o la CLI de CloudFront. Cada función Lambda @Edge asociada a una
distribución también publica métricas operativas, algunas de las cuales se pueden ver en la consola de
CloudFront. Las métricas de CloudFront no se contabilizan en las cuotas (antes denominadas límites) de
CloudWatch ni generan ningún costo adicional.

Además de las métricas predeterminadas, puede habilitar métricas adicionales por un coste adicional. Las
métricas adicionales se aplican a distribuciones de CloudFront y deben habilitarse para cada distribución
por separado. Para obtener más información sobre el costo, consulte Estimación del costo de las métricas
adicionales de CloudFront (p. 455).

Ver estas métricas puede ayudarle a solucionar problemas, a realizar un seguimiento y a depurar. Para ver
estas métricas en la consola de CloudFront, consulte la página Monitoring (Monitoreo). Para ver gráficos
sobre la actividad de una distribución de CloudFront o una función Lambda@Edge específica, elija una y, a
continuación, seleccione ver las métricas.

También puede establecer alarmas basadas en estas métricas en la consola de CloudFront o en la consola
de CloudWatch, la API o la CLI (se aplican losprecios estándar de CloudWatch). Por ejemplo, puede
configurar una alarma basada en la métrica de 5xxErrorRate, que representa el porcentaje de todas
las solicitudes de espectador para las cuales el código de estado HTTP de la respuesta está en el rango
de 500 a 599, inclusive. Cuando la tasa de error alcanza un valor determinado durante una determinada
cantidad de tiempo (por ejemplo, el 5 % de las solicitudes durante 5 minutos seguidos), se activa la alarma.
Especifique el valor de la alarma y su unidad de tiempo al crear la alarma. Para obtener más información,
consulte Configurar las alarmas (p. 456).

Temas
• Visualización de métricas de CloudFront y Lambda @Edge (p. 452)
• Configuración de alarmas para recibir notificaciones (p. 456)
• Descargar datos en formato CSV (p. 457)
• Obtener métricas mediante la API de CloudWatch (p. 459)

Visualización de métricas de CloudFront y Lambda


@Edge
Puede ver métricas operativas sobre sus distribuciones de CloudFront y funciones Lambda@Edge en la
consola de CloudFront. Para ver estas métricas, consulte la página Monitoring (Monitoreo) de la consola
de CloudFront. Para ver gráficos sobre la actividad de una distribución de CloudFront o una función
Lambda@Edge específica, elija una y, a continuación, seleccione ver las métricas.

452
Amazon CloudFront Guía para desarrolladores
Visualización de métricas de CloudFront y Lambda @Edge

Temas
• Visualización de las métricas de distribución predeterminadas de CloudFront (p. 453)
• Visualización de métricas de distribución adicionales de CloudFront (p. 454)
• Visualización de las métricas de la función Lambda@Edge predeterminada (p. 456)

Visualización de las métricas de distribución predeterminadas de


CloudFront
Las siguientes métricas predeterminadas se incluyen en todas las distribuciones de CloudFront sin costo
adicional:

Solicitudes

La cantidad total de solicitudes de lector recibidas por CloudFront, para todos los métodos HTTP y
para las solicitudes HTTP y HTTPS.
Bytes descargados

La cantidad total de bytes descargados por los espectadores para las solicitudes GET, HEAD y
OPTIONS.
Bytes cargados

La cantidad total de bytes que los lectores cargaron en su origen con CloudFront mediante las
solicitudes POST y PUT.
Tasa de errores 4xx

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 4xx.
Tasa de errores 5xx

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 5xx.
Tasa de errores total

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 4xx o 5xx.

Estas métricas se muestran en gráficos para cada distribución de CloudFront en la página Monitoring
(Monitoreo) de la consola de CloudFront. En cada gráfico, los totales se muestran con una granularidad
de un minuto. Además de ver los gráficos, también puede descargar informes de métricas como archivos
CSV (p. 457).

Puede personalizar los gráficos por medio de uno de los siguientes procedimientos:

• Para cambiar el intervalo de tiempo de la información que se muestra en los gráficos, seleccione 1h (1
hora), 3h (3 horas), u otro rango o especifique un rango personalizado.
• Para cambiar la frecuencia con la que CloudFront actualiza la información en el gráfico, elija la flecha
hacia abajo junto al icono de actualización y, a continuación, seleccione una frecuencia de actualización.
El valor predeterminado de actualización es de 1 minuto, pero puede elegir 10 segundos, 2 minutos u
otras opciones.

Para ver los gráficos de CloudFront en la consola de CloudWatch, elija Add to dashboard (Agregar al
panel).

453
Amazon CloudFront Guía para desarrolladores
Visualización de métricas de CloudFront y Lambda @Edge

Visualización de métricas de distribución adicionales de


CloudFront
Además de las métricas predeterminadas, puede habilitar métricas adicionales por un coste adicional.
Para obtener más información sobre el costo, consulte Estimación del costo de las métricas adicionales de
CloudFront (p. 455).

Estas métricas adicionales deben habilitarse para cada distribución por separado:

Tasa de aciertos de caché

El porcentaje de todas las solicitudes almacenables en caché para las que CloudFront distribuyó el
contenido desde su caché. Las solicitudes HTTP POST y PUT, así como los errores, no se consideran
solicitudes almacenables en caché.
Latencia de origen

El tiempo total transcurrido desde que CloudFront recibe una solicitud hasta que comienza a
proporcionar una respuesta a la red (no al lector) en las solicitudes que se distribuyen desde el origen,
no desde la caché de CloudFront. Esto también se conoce como latencia de primer byte o time-to-first-
byte.
Tasa de error por código de estado

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es un código particular en el rango de 4xx o 5xx. Esta métrica está disponible para todos
estos códigos de error: 401, 403, 404, 502, 503 y 504.

Habilitación de métricas adicionales


Puede habilitar métricas adicionales en la consola de CloudFront, con la interfaz de línea de comandos de
AWS (CLI de AWS) o con la API de CloudFront.

Habilitación de métricas adicionales (consola)

Para habilitar métricas adicionales

1. Inicie sesión en la consola de administración de AWS y abra la página Monitoring (Monitoreo) en la


consola de CloudFront.
2. Elija la distribución para la que desea habilitar métricas adicionales y, a continuación, seleccione View
distribution metrics (Ver métricas de distribución).
3. Seleccione Enable additional metrics (Habilitar métricas adicionales).
4. En la ventana Enable additional metrics (Habilitar métricas adicionales), seleccione Enable (Habilitar)
y, a continuación, Save (Guardar).

Cuando haya habilitado las métricas adicionales, se mostrarán en gráficos. En cada gráfico, los totales
se muestran con una granularidad de un minuto. Además de ver los gráficos, también puede descargar
informes de métricas como archivos CSV (p. 457).

Puede personalizar los gráficos por medio de uno de los siguientes procedimientos:

• Para cambiar el intervalo de tiempo de la información que se muestra en los gráficos, seleccione 1h (1
hora), 3h (3 horas), u otro rango o especifique un rango personalizado.
• Para cambiar la frecuencia con la que CloudFront actualiza la información en el gráfico, elija la flecha
hacia abajo junto al icono de actualización y, a continuación, seleccione una frecuencia de actualización.
El valor predeterminado de actualización es de 1 minuto, pero puede elegir 10 segundos, 2 minutos u
otras opciones.

454
Amazon CloudFront Guía para desarrolladores
Visualización de métricas de CloudFront y Lambda @Edge

Para ver los gráficos de CloudFront en la consola de CloudWatch, elija Add to dashboard (Agregar al
panel).

Habilitación de métricas adicionales (AWS CLI)

Para administrar métricas adicionales con la interfaz de línea de comandos de AWS (CLI de AWS), utilice
uno de los siguientes comandos.

Para habilitar métricas adicionales para una distribución

• Utilice el comando create-monitoring-subscription como se muestra en el ejemplo siguiente.


Reemplace EDFDVBD6EXAMPLE con el ID de la distribución para la que está habilitando métricas
adicionales.

aws cloudfront create-monitoring-subscription --


distribution-id EDFDVBD6EXAMPLE --monitoring-subscription
RealtimeMetricsSubscriptionConfig={RealtimeMetricsSubscriptionStatus=Enabled}

Para ver si las métricas adicionales están habilitadas para una distribución

• Utilice el comando get-monitoring-subscription como se muestra en el ejemplo siguiente. Reemplace


EDFDVBD6EXAMPLE con el ID de la distribución que está comprobando.

aws cloudfront get-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE

Para desactivar métricas adicionales para una distribución

• Utilice el comando delete-monitoring-subscription como se muestra en el ejemplo siguiente.


Reemplace EDFDVBD6EXAMPLE con el ID de la distribución para la que está desactivando métricas
adicionales.

aws cloudfront delete-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE

Habilitación de métricas adicionales (API)

Para administrar métricas adicionales con la API de CloudFront, utilice una de las siguientes operaciones
de la API.

• Para habilitar métricas adicionales para una distribución, utilice CreateMonitoringSubscription.


• Para consultar si las métricas adicionales están habilitadas para una distribución, utilice
GetMonitoringSubscription.
• Para desactivar métricas adicionales para una distribución, utilice DeleteMonitoringSubscription.

Para obtener más información acerca de estas llamadas a la API, consulte la documentación de referencia
de la API para su AWS SDK u otro cliente de la API.

Estimación del costo de las métricas adicionales de CloudFront


Cuando habilita métricas adicionales para una distribución, CloudFront envía hasta ocho métricas a
CloudWatch en la región EE. UU. Este (Norte de Virginia). CloudWatch cobra una tarifa fija baja por cada

455
Amazon CloudFront Guía para desarrolladores
Configurar las alarmas

métrica. Esta tarifa se cobra solo una vez al mes por métrica (hasta 8 métricas por distribución). Se trata de
una tarifa fija, por lo que el costo sigue siendo el mismo independientemente del número de solicitudes o
respuestas que reciba o envíe la distribución de CloudFront. Para conocer la tarifa por métrica, consulte la
página de precios de Amazon CloudWatch y la calculadora de precios de CloudWatch. Se aplican cargos
adicionales de la API al recuperar las métricas con la API de CloudWatch.

Visualización de las métricas de la función Lambda@Edge


predeterminada
Las siguientes métricas predeterminadas se muestran en gráficos para cada función Lambda@Edge en la
página Monitoring (Monitoreo) de la consola de CloudFront:

• Intervalo de errores de 5xx para Lambda@Edge


• Errores de ejecución de Lambda
• Respuestas no válidas de Lambda
• Limitaciones de Lambda

Los gráficos incluyen la cantidad de invocaciones, errores, limitaciones, etc. En cada gráfico, los totales se
muestran con una granularidad de un minuto, agrupados por región de AWS.

Si ve un aumento de errores que desea investigar, puede elegir una función y, a continuación, consultar
los archivos de registro por región de AWS hasta que determine qué función está causando los problemas
y en qué región de AWS. Para obtener más información sobre la resolución de errores Lambda@Edge,
consulte:

• Cómo determinar el tipo de error (p. 366)


• Cuatro pasos para depurar su entrega de contenido en AWS

Puede personalizar los gráficos por medio de uno de los siguientes procedimientos:

• Para cambiar el intervalo de tiempo de la información que se muestra en los gráficos, seleccione 1h (1
hora), 3h (3 horas), u otro rango o especifique un rango personalizado.
• Para cambiar la frecuencia con la que CloudFront actualiza la información en el gráfico, elija la flecha
hacia abajo junto al icono de actualización y, a continuación, seleccione una frecuencia de actualización.
El valor predeterminado de actualización es de 1 minuto, pero puede elegir 10 segundos, 2 minutos u
otras opciones.

Para ver los gráficos en la consola de CloudWatch, elija Add to dashboard (Agregar al panel). Debe utilizar
la región EE. UU. Este (Norte de Virginia) (us-east-1) para ver los gráficos en la consola de CloudWatch.

Configuración de alarmas para recibir notificaciones


En la consola de CloudFront, puede configurar alarmas para que le envíen notificaciones a través de
Amazon Simple Notification Service (Amazon SNS) en función de métricas específicas de CloudFront.
Puede configurar una alarma en la página Alarms (Alarmas) de la consola de CloudFront.

Cuando se crea una alarma en la consola, se especifican los siguientes valores:

Métrica

La métrica para la que está creando la alarma.


Distribución

La distribución de CloudFront para la que crea la alarma.

456
Amazon CloudFront Guía para desarrolladores
Descargar datos

Name of alarm (Nombre de alarma)

Un nombre para la alarma.


Enviar una notificación a

El tema de Amazon SNS al que se envía la notificación si esta métrica desencadena una alarma.
Siempre que <metric> <operator> <value>

Especifique cuándo debe activar CloudWatch una alarma y enviar una notificación al tema de Amazon
SNS. Por ejemplo, para recibir una notificación cuando el intervalo de error de 5xx supera el 1 %,
especifique lo siguiente:

Whenever Average of 5xxErrorRate > 1

Tenga en cuenta lo siguiente con respecto a la especificación de valores:


• Escriba solo números enteros sin puntuación. Por ejemplo, para especificar mil, escriba 1000.
• Para 4xx, 5xx y el total de tasas de errores, el valor a especificar es un porcentaje.
• Para las solicitudes, los bytes descargados y los bytes cargados, el valor a especificar son
unidades. Por ejemplo, 1073742000 bytes.
Durante al menos <number> periodos consecutivos de <time period>

Especifique por cuántos periodos consecutivos de la duración especificada debe cumplir la métrica los
criterios antes de que CloudWatch envíe una notificación. Cuando elija un valor, apunte a un equilibrio
adecuado entre un valor que no active la alarma por problemas menores o temporales, pero sí por
problemas constantes o reales.

Descargar datos en formato CSV


Puede descargar los datos de métricas de CloudWatch para una distribución de CloudFront en formato
CSV. Puede descargar los datos cuando consulte las métricas de distribución para una distribución
concreta en la consola de CloudFront.

Información acerca del informe


Las primeras filas del informe incluyen la siguiente información:

Version

La versión de informes de CloudFront.


Informe

El nombre del informe.


DistributionID

ID de la distribución para la que ejecutó 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).

457
Amazon CloudFront Guía para desarrolladores
Descargar datos

Granularity

El periodo de tiempo para cada fila del informe, por ejemplo, ONE_MINUTE.

Datos del informe de las métricas


El informe incluye los siguientes valores:

DistributionID

ID de la distribución para la que ejecutó el informe.


FriendlyName

Un nombre de dominio alternativos (CNAME) para la distribución, de haberlo. Si una distribución no


tiene otros nombres de dominio, la lista incluye un nombre de dominio de origen para la distribución.
TimeBucket

La hora o la fecha a la que son aplicables los datos, en tiempo universal coordinado (UTC).
Solicitudes

La cantidad total de solicitudes de todos los códigos de estado HTTP (por ejemplo, 200, 404, etc.) y
todos los métodos (por ejemplo, GET, HEAD, POST, etc.) durante ese periodo de tiempo.
BytesDownloaded

La cantidad de bytes que los espectadores han descargado mediante la distribución especificada
durante el periodo de tiempo definido.
BytesUploaded

La cantidad de bytes que los espectadores han cargado mediante la distribución especificada durante
el periodo de tiempo definido.
TotalErrorRatePct

El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 4xx o 5xx para la
distribución especificada durante el periodo de tiempo definido.
4xxErrorRatePct

El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 4xx para la distribución
especificada durante el periodo de tiempo definido.
5xxErrorRatePct

El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 5xx para la distribución
especificada durante el periodo de tiempo definido.

Si ha habilitado métricas adicionales (p. 454) para su distribución, el informe también incluye los
siguientes valores adicionales:

401ErrorRatePct

El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 401 para la distribución
especificada durante el periodo de tiempo definido.
403ErrorRatePct

El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 403 para la distribución
especificada durante el periodo de tiempo definido.

458
Amazon CloudFront Guía para desarrolladores
Obtención de métricas mediante la API

404ErrorRatePct

El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 404 para la distribución
especificada durante el periodo de tiempo definido.
502ErrorRatePct

El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 502 para la distribución
especificada durante el periodo de tiempo definido.
503ErrorRatePct

El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 503 para la distribución
especificada durante el periodo de tiempo definido.
504ErrorRatePct

El porcentaje de solicitudes cuyo código de estado HTTP fue un error de 504 para la distribución
especificada durante el periodo de tiempo definido.
OriginLatency

El tiempo total empleado en milisegundos desde que CloudFront recibió una solicitud hasta que
comenzó a proporcionar una respuesta a la red (no al lector) en las solicitudes que se distribuyeron
desde el origen, no desde la caché de CloudFront. Esto también se conoce como latencia de primer
byte o time-to-first-byte.
CacheHitRate

El porcentaje de todas las solicitudes almacenables en caché para las que CloudFront distribuyó el
contenido desde su caché. Las solicitudes HTTP POST y PUT, así como los errores, no se consideran
solicitudes almacenables en caché.

Obtener métricas mediante la API de CloudWatch


Puede utilizar la API o la CLI de Amazon CloudWatch para obtener las métricas de CloudFront en los
programas o aplicaciones que cree. Puede usar los datos sin procesar para crear sus propios paneles
personalizados, sus propias herramientas de alarma, etc. Para obtener las métricas de CloudFront desde
la API de CloudWatch, debe utilizar la región EE. UU. Este (Norte de Virginia) (us-east-1). También
necesita conocer ciertos valores y tipos para cada métrica.

Temas
• Valores para todas las métricas de CloudFront (p. 459)
• Valores para métricas individuales de CloudFront (p. 460)

Valores para todas las métricas de CloudFront


Los siguientes valores se aplican a todas las métricas de CloudFront:

Namespace

El valor para Namespace siempre es AWS/CloudFront.


Dimensiones

Cada métrica de CloudFront tiene las dos dimensiones siguientes:


DistributionId

El valor de DistributionId es el ID de la distribución de CloudFront para la que desea obtener


métricas.

459
Amazon CloudFront Guía para desarrolladores
Obtención de métricas mediante la API

Region

El valor de Region siempre es Global, porque CloudFront es un servicio global.

Note
Para obtener las métricas de CloudFront desde la API de CloudWatch, debe utilizar la región
EE. UU. Este (Norte de Virginia) (us-east-1).

Valores para métricas individuales de CloudFront


Utilice la información de la lista siguiente para obtener información detallada sobre métricas específicas
de CloudFront desde la API de CloudWatch. Algunas de estas métricas solo están disponibles si se han
habilitado métricas adicionales para la distribución.
Note
Solo se aplica una estadística, Average o Sum, para cada métrica. La siguiente lista especifica
qué estadística se aplica a esa métrica.

Tasa de errores 4xx

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 4xx.
• Nombre de métrica: 4xxErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 401

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 401. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 401ErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 403

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 403. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 403ErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 404

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 404. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 404ErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 5xx

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 5xx.
• Nombre de métrica: 5xxErrorRate
• Estadística válida: Average
• Unidad: Percent

460
Amazon CloudFront Guía para desarrolladores
Obtención de métricas mediante la API

Tasa de errores 502

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 502. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 502ErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 503

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 503. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 503ErrorRate
• Estadística válida: Average
• Unidad: Percent
Tasa de errores 504

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 504. Para obtener esta métrica, primero debe habilitar métricas adicionales (p. 454).
• Nombre de métrica: 504ErrorRate
• Estadística válida: Average
• Unidad: Percent
Bytes descargados

La cantidad total de bytes descargados por los espectadores para las solicitudes GET, HEAD y
OPTIONS.
• Nombre de métrica: BytesDownloaded
• Estadística válida: Sum
• Unidad: None
Bytes cargados

La cantidad total de bytes que los lectores cargaron en su origen con CloudFront mediante las
solicitudes POST y PUT.
• Nombre de métrica: BytesUploaded
• Estadística válida: Sum
• Unidad: None
Tasa de aciertos de caché

El porcentaje de todas las solicitudes almacenables en caché para las que CloudFront distribuyó el
contenido desde su caché. Las solicitudes HTTP POST y PUT, así como los errores, no se consideran
solicitudes almacenables en caché. Para obtener esta métrica, primero debe habilitar métricas
adicionales (p. 454).
• Nombre de métrica: CacheHitRate
• Estadística válida: Average
• Unidad: Percent
Latencia de origen

El tiempo total empleado en milisegundos desde que CloudFront recibe una solicitud hasta que
comienza a proporcionar una respuesta a la red (no al lector) en las solicitudes que se distribuyeron
desde el origen, no desde la caché de CloudFront. Esto también se conoce como latencia
de primer byte o time-to-first-byte. Para obtener esta métrica, primero debe habilitar métricas
adicionales (p. 454).
• Nombre de métrica: OriginLatency
• Estadística válida: Percentile

461
Amazon CloudFront Guía para desarrolladores
Registro de CloudFront

• Unidad: Milliseconds
Note
Para obtener la estadística de Percentile desde la API de CloudWatch, use el parámetro
ExtendedStatistics, no Statistics. Para obtener más información, consulte
GetMetricStatistics en la Referencia de la API de Amazon CloudWatch o la documentación de
referencia de los SDK de AWS.
Solicitudes

La cantidad total de solicitudes de lector recibidas por CloudFront, para todos los métodos HTTP y
para las solicitudes HTTP y HTTPS.
• Nombre de métrica: Requests
• Estadística válida: Sum
• Unidad: None
Tasa de errores total

El porcentaje de todas las solicitudes de espectador para las cuales el código de estado HTTP de la
respuesta es 4xx o 5xx.
• Nombre de métrica: TotalErrorRate
• Estadística válida: Average
• Unidad: Percent

Registro de CloudFront
Amazon CloudFront proporciona diferentes tipos de registro. Puede registrar las solicitudes que llegan a
las distribuciones de CloudFront o puede registrar la actividad del servicio de CloudFront en la cuenta de
AWS.

Solicitudes de registro
CloudFront proporciona las siguientes formas de registrar las solicitudes que llegan a las distribuciones.

Registros estándar (registros de acceso)

Los registros estándar de CloudFront proporcionan registros detallados sobre cada solicitud que se
realiza en una distribución. Estos registros son útiles para muchos escenarios, incluidas las auditorías
de seguridad y acceso.

Los registros estándar de CloudFront se envían al bucket de Amazon S3 de su elección. CloudFront


no aplica cargos por registros estándar, aunque puede aplicar cargos de Amazon S3 por almacenar y
acceder a los archivos de registro.

Para obtener más información, consulte Uso de registros estándar (registros de acceso) (p. 463).
Registros en tiempo real

Los registros en tiempo real de CloudFront proporcionan información sobre las solicitudes realizadas a
una distribución, en tiempo real (las entradas de registros se envían en cuestión de segundos después
de recibir las solicitudes). Puede elegir la frecuencia de muestreo de los registros en tiempo real,
es decir, el porcentaje de solicitudes de las que desea recibir entradas de registros en tiempo real.
También puede elegir los campos específicos de los que desea recibir registros de log.

Los registros en tiempo real de CloudFront se envían a la secuencia de datos de su elección en


Amazon Kinesis Data Streams. CloudFront aplica cargos por los registros en tiempo real, que se
suman a los cargos que se le apliquen por el uso de Kinesis Data Streams.

Para obtener más información, consulte Registros en tiempo real (p. 476).

462
Amazon CloudFront Guía para desarrolladores
Registro de la actividad del servicio

Registro de la actividad del servicio


Puede utilizar AWS CloudTrail para registrar la actividad de servicio de CloudFront en la cuenta de AWS.
CloudTrail proporciona un registro de las medidas adoptadas por un usuario, un rol o un servicio de AWS
en CloudFront. Mediante la información recopilada por CloudTrail, puede determinar la solicitud que se
realizó a CloudFront, la dirección IP desde la que se realizó, quién la realizó y cuándo, etc.

Para obtener más información, consulte Captura de solicitudes a la API con CloudTrail (p. 488).

Temas
• Configuración y uso de registros estándar (registros de acceso) (p. 463)
• Registros en tiempo real (p. 476)
• Uso de AWS CloudTrail para capturar solicitudes enviadas a la API de CloudFront (p. 488)

Configuración y uso de registros estándar (registros de


acceso)
Puede configurar CloudFront para crear archivos de registro que contengan información detallada
sobre cada solicitud de usuario que CloudFront recibe. Estos se denominan registros estándar, también
conocidos como registros de acceso. Si habilita registros estándar, también puede especificar el bucket de
Amazon S3 en el que desea que CloudFront guarde los archivos.

Puede habilitar los registros estándar al crear o actualizar una distribución. Para obtener más información,
consulte Valores que deben especificarse al crear o actualizar una distribución (p. 43).

CloudFront también ofrece registros en tiempo real, que le proporcionan información sobre las solicitudes
realizadas a una distribución en tiempo real (los registros se envían en cuestión de segundos después de
recibir las solicitudes). Puede usar registros en tiempo real para monitorear, analizar y tomar medidas en
función del rendimiento de entrega de contenido. Para obtener más información, consulte Registros en
tiempo real (p. 476).

Temas
• Cómo funciona el registro estándar (p. 463)
• Elección de un bucket de Amazon S3 para los registros estándar (p. 464)
• Permisos necesarios para configurar el registro estándar y el acceso a los archivos de
registro (p. 465)
• Política de claves CMK necesarias para usar con buckets de SSE-KMS (p. 466)
• Formato del nombre de archivo (p. 466)
• Tiempo de entrega de archivos de registro estándar (p. 467)
• Cómo se registran las solicitudes cuando la URL o los encabezados de la solicitud sobrepasan el
tamaño máximo (p. 467)
• Análisis de registros estándar (p. 467)
• Edición de la configuración de registro estándar (p. 468)
• Eliminación de archivos de registro estándar de un bucket de Amazon S3 (p. 468)
• Formato de archivo de registro estándar (p. 468)
• Cargos por registros estándar (p. 475)

Cómo funciona el registro estándar


En el siguiente diagrama se muestra cómo CloudFront registra información sobre solicitudes para los
objetos.

463
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

A continuación, se explica cómo CloudFront registra información sobre solicitudes para los objetos, tal y
como se muestra en el diagrama anterior.

1. En este diagrama se muestran dos sitios web, A y B, y sus distribuciones de CloudFront


correspondientes. 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 en un archivo de registro específico en esa distribución.
En este ejemplo, la información acerca de las solicitudes relacionadas con la Distribución A se
escriben en un archivo de registro solo para la Distribución A, y la información acerca de las solicitudes
relacionadas 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 S3
especificado al habilitar el registro. A continuación, CloudFront comienza a guardar información acerca
de las solicitudes posteriores en un nuevo archivo de registro para la distribución.

Si ningún usuario obtiene acceso a su contenido durante una hora determinada, no se reciben archivos de
registro de esa hora.

Cada entrada del archivo de registro ofrece información acerca de una única solicitud. Para obtener
más información acerca del formato del archivo de registro, consulte Formato de archivo de registro
estándar (p. 468).
Important
Recomendamos utilizar los registros de acceso para comprender la naturaleza de las solicitudes
hechas a su contenido y no como una relación exhaustiva de todas las solicitudes. CloudFront
envía registros de acceso en la medida en que sea posible. La entrada de registro de una solicitud
determinada puede entregarse mucho después de la solicitud se haya procesado realmente y, en
casos contados, es probable que una entrada de registro no se entregue en absoluto. Cuando se
omite una entrada de registro de los registros de acceso, la cantidad de entradas de los registros
de acceso no coincide con el uso que aparece en el uso de AWS y en los informes de facturación.

Elección de un bucket de Amazon S3 para los registros estándar


Al habilitar el registro para una distribución, se especifica el bucket de Amazon S3 en el que desea que
CloudFront almacene los archivos de registro. Si utiliza Amazon S3 como origen, le recomendamos que

464
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

no utilice el mismo bucket para los archivos de registro. El uso de un bucket independiente simplifica el
mantenimiento.
Note

No elija un bucket de Amazon S3 en ninguna de las siguientes regiones, ya que CloudFront no


envía registros de acceso a los buckets de estas regiones:

• África (Ciudad del Cabo) af-south-1


• Asia-Pacífico (Hong Kong) ap-east-1
• Europa (Milán) eu-south-1
• Medio Oriente (Baréin) me-south-1

La consola de Amazon S3 muestra la región del bucket.

Puede almacenar los archivos de registro de varias distribuciones en el mismo bucket. Al habilitar el
registro, puede especificar un prefijo para los nombres de archivo, para así realizar un seguimiento de que
los archivos de registro que se asocian con las distribuciones.

Permisos necesarios para configurar el registro estándar y el


acceso a los archivos de registro
Su cuenta de AWS debe tener los siguientes permisos para el bucket que especifique para los archivos de
registro:

• La lista de control de acceso de S3 (ACL) del bucket debe concederle FULL_CONTROL. Si es el


propietario del bucket, su cuenta tiene este permiso de forma predeterminada. Si no está, el propietario
del 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 permisos
para actualizar ACL para que el bucket le conceda a la cuenta awslogsdelivery permiso
FULL_CONTROL. La cuenta awslogsdelivery escribe archivos de registro en el bucket. Si su cuenta
no tiene los permisos necesarios para actualizar la ACL, se producirá un error al crear o actualizar la
distribución.

En determinadas circunstancias, si envía una solicitud de forma programada para crear un bucket
con un nombre específico, pero ya existe uno con ese nombre, S3 restablece los permisos del bucket
a sus valores predeterminados. Si configura CloudFront para guardar los registros de acceso en un
bucket de S3 y los registros dejan de guardarse en ese bucket, compruebe los permisos del bucket
para asegurarse de que CloudFront dispone de los permisos necesarios.
Restauración de la ACL para el bucket

Si elimina permisos para la cuenta awslogsdelivery, CloudFront no podrá guardar registros en


el bucket de S3. Para permitir que CloudFront comience a guardar los registros de la distribución de
nuevo, restaure el permiso de ACL realizando una de las siguientes acciones:
• Desactive el registro de la distribución en CloudFront y, a continuación, habilítelo de nuevo. Para
obtener más información, consulte Valores que deben especificarse al crear o actualizar una
distribución (p. 43).

465
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

• Agregue el permiso de ACL para awslogsdelivery manualmente mediante el acceso al


bucket de S3 en la consola de Amazon S3 y agregando permiso. Para agregar la ACL para
awslogsdelivery, debe proporcionar el ID canónico de la cuenta, que es el siguiente :

c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0

Para obtener más información acerca de cómo agregar ACL a buckets de S3, consulte ¿Cómo
configuro permisos para buckets con ACL? en la Guía del usuario de la consola de Amazon Simple
Storage Service.
ACL para cada archivo de registro

Además de la ACL del bucket, hay una ACL en cada archivo de registro. El propietario del bucket
tiene permisos FULL_CONTROL en cada archivo de registro, el propietario de la distribución (si no es el
mismo que el del bucket) no tiene permiso, y la cuenta awslogsdelivery tiene permisos de lectura y
escritura.
Deshabilitar los registros

Si desactiva el registro, CloudFront no elimina las ACL del bucket ni de los archivos de registro. Si lo
desea, puede hacerlo usted mismo.

Política de claves CMK necesarias para usar con buckets de


SSE-KMS
Si ha habilitado el cifrado en el lado del servidor para el bucket de Amazon S3 mediante el uso de claves
administradas por AWS KMS (SSE-KMS) con una clave maestra de cliente (CMK) administrada por el
cliente, debe agregar lo siguiente a la política de claves de la CMK para poder escribir archivos de registro
en el bucket. No puede utilizar la CMK predeterminada porque CloudFront no podrá cargar los archivos de
registro en el bucket.

{
"Sid": "Allow CloudFront Flow Logs to use the key",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "kms:GenerateDataKey*",
"Resource": "*"
}

Formato del nombre de archivo


El nombre de cada archivo de registro que CloudFront guarda en el bucket de Amazon S3 utiliza el formato
de nombre de archivo siguiente:

<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 utiliza example-prefix como prefijo y el ID de distribución es EMLARXS9EXAMPLE, los


nombres de archivo tendrán el siguiente aspecto:

example-prefix/EMLARXS9EXAMPLE.2019-11-14-20.RT4KCN4SGK9.gz

Al habilitar el registro para una distribución, puede especificar un prefijo para los nombres de archivo, para
así realizar un seguimiento de que los archivos de registro que se asocian a las distribuciones. Si incluye
un valor para el prefijo del archivo de registro y el prefijo no termina con una barra inclinada (/), CloudFront
agrega una automáticamente. Si el prefijo termina con una barra inclinada, CloudFront no agrega otra.

466
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

.gz al final del nombre del archivo indica que CloudFront ha comprimido el archivo de registro con gzip.

Tiempo de entrega de archivos de registro estándar


CloudFront proporciona registros estándar para una distribución varias veces cada hora. En general, un
archivo de registro contiene información acerca de las solicitudes que CloudFront ha recibido durante
un periodo determinado. Normalmente, CloudFront envía el archivo de registro de ese periodo al bucket
de Amazon S3 una hora después de que se produzcan los eventos reflejados en el registro. Tenga en
cuenta, sin embargo, que algunas o todas las entradas de los archivos de registro de un periodo a veces
pueden retrasarse hasta 24 horas. Cuando se retrasan entradas de registro, CloudFront las guarda en un
archivo de registro cuyo nombre de archivo incluye la fecha y la hora del periodo en el que se realizaron las
solicitudes en lugar de incluir la fecha y la hora de envío del archivo.

Al crear un archivo de registro, CloudFront consolida información para la distribución desde todas las
ubicaciones de borde que recibieron solicitudes de los objetos durante el periodo que abarca dicho archivo
de registro.

CloudFront puede guardar más de un archivo por periodo en función de la cantidad de solicitudes de
objetos asociados con una distribución que recibe CloudFront.

CloudFront comienza a enviar de forma fiable los registros de acceso unas cuatro horas después de
habilitar los registros. Es posible obtener algunos registros de acceso antes del momento de envío.
Note
Si ningún usuario solicita sus objetos durante un periodo, no recibirá archivos de registro para ese
periodo.

CloudFront también ofrece registros en tiempo real, que le proporcionan información sobre las solicitudes
realizadas a una distribución en tiempo real (los registros se envían en cuestión de segundos después de
recibir las solicitudes). Puede usar registros en tiempo real para monitorear, analizar y tomar medidas en
función del rendimiento de entrega de contenido. Para obtener más información, consulte Registros en
tiempo real (p. 476).

Cómo se registran las solicitudes cuando la URL o los


encabezados de la solicitud sobrepasan el tamaño máximo
Si el tamaño total de todos los encabezados de solicitud, incluidas las cookies, supera los 20 KB o si la
URL supera los 8192 bytes, CloudFront no puede analizar la solicitud por completo y no puede registrar
la solicitud. Dado que la solicitud no se registra, el código de estado que se devuelve no se verá en los
archivos de registro de error de HTTP.

Si el cuerpo de la solicitud supera el tamaño máximo, se registra la solicitud, incluido el código de estado
de error de HTTP.

Análisis de registros estándar


Dado que puede recibir varios registros de acceso por hora, le recomendamos que combine en un mismo
archivo todos los archivos de registro que reciba para un periodo determinado. Así podrá analizar los datos
de ese periodo de forma más completa y precisa.

Una forma de analizar los registros de acceso consiste en utilizar Amazon Athena. Athena es un servicio
de consultas interactivo que puede ayudarle a analizar datos de los servicios de AWS, incluido CloudFront.
Para obtener más información, consulte Consulta de los registros de Amazon CloudFront en la Guía del
usuario de Amazon Athena.

Además, en las siguientes publicaciones del blog de AWS se explican algunas formas de analizar registros
de acceso.

• Amazon CloudFront Request Logging (para contenido enviado a través de HTTP)

467
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

• Enhanced CloudFront Logs, Now With Query Strings

Important
Recomendamos utilizar los registros de acceso para comprender la naturaleza de las solicitudes
hechas a su contenido y no como una relación exhaustiva de todas las solicitudes. CloudFront
envía registros de acceso en la medida en que sea posible. La entrada de registro de una solicitud
determinada puede entregarse mucho después de la solicitud se haya procesado realmente y, en
casos contados, es probable que una entrada de registro no se entregue en absoluto. Cuando se
omite una entrada de registro de los registros de acceso, la cantidad de entradas de los registros
de acceso no coincide con el uso que aparece en el uso de AWS y en los informes de facturación.

Edición de la configuración de registro estándar


Puede habilitar o desactivar el registro, cambiar el bucket de Amazon S3 en el que se almacenan los
registros y cambiar el prefijo de los archivos de registro a través de la consola de CloudFront o la API de
CloudFront. Los cambios de configuración de registro surten efecto en un plazo de 12 horas.

Para obtener más información, consulte los siguientes temas:

• Para actualizar una distribución mediante la consola de CloudFront, consulte Actualización de una
distribución (p. 71).
• Para actualizar una distribución mediante la API de CloudFront, consulte UpdateDistribution en la
Referencia de la API de Amazon CloudFront.

Eliminación de archivos de registro estándar de un bucket de


Amazon S3
CloudFront no elimina automáticamente los archivos de registro del bucket de Amazon S3. Para obtener
información acerca de cómo eliminar archivos de registro de un bucket de Amazon S3, consulte los
siguientes temas:

• Uso de la consola de Amazon S3: Eliminación de objetos en la Guía del usuario de la consola de
Amazon Simple Storage Service.
• Uso de la API de REST: DeleteObject en la Referencia de la API de Amazon Simple Storage Service.

Formato de archivo de registro estándar


Cada entrada del archivo de registro ofrece información acerca de una única solicitud de espectador. Los
archivos log tienen las siguientes características:

• Utilice el formato de archivo de registro ampliado W3C.


• Contienen valores separados por pestañas.
• Contienen registros que no están necesariamente en orden cronológico.
• Contiene 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.
• Contiene equivalentes codificados en URL para espacios y otros caracteres determinados en valores de
campo.

Los equivalentes codificados en URL se utilizan para los siguientes caracteres:


• Códigos de caracteres ASCII de 0 a 32, ambos incluidos
• Códigos de caracteres ASCII 127 y superiores
• Todos los caracteres de la tabla siguiente

468
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

El estándar de codificación de URL se define en RFC 1738.

Valor de URL codificada Carácter

%3C <

%3E >

%22 "

%23 #

%25 %

%7B {

%7D }

%7C |

%5C \

%5E ^

%7E ~

%5B [

%5D ]

%60 `

%27 '

%20 espacio

Campos de archivo de registro estándar


El archivo de registro de una distribución contiene 33 campos. La lista siguiente contiene el nombre de
cada campo, en orden, junto con una descripción de la información de ese campo.

1. date

La fecha en que se produjo el evento en el formato YYYY-MM-DD. Por ejemplo, 2019-06-30. La fecha
y la hora se muestran según la hora universal coordinada (UTC). Para conexiones de WebSockets,
indica la fecha de cierre de la conexión.
2. time

La hora a la que el servidor de CloudFront terminó de responder a la solicitud (en UTC), por ejemplo,
01:42:39. Para conexiones de WebSockets, indica la hora de cierre de la conexión.
3. x-edge-location

La ubicación de borde que atendió la solicitud. Cada ubicación de borde se identifica mediante un
código de tres letras y un número asignado arbitrariamente (por ejemplo, DFW3). El código de tres
letras normalmente se corresponde con el código del aeropuerto de la Asociación de Transporte Aéreo
Internacional (IATA) más cercano a la ubicación geográfica de la ubicación de borde. Estas abreviaturas
pueden cambiar en el futuro.

469
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

4. sc-bytes

El número total de bytes que el servidor ha enviado al lector en respuesta a la solicitud, incluidos los
encabezados. Para conexiones WebSockets, se trata del número total de bytes enviados desde el
servidor al cliente a través de la conexión.
5. c-ip

La dirección IP del espectador que ha realizado la solicitud, por ejemplo, 192.0.2.183 o


2001:0db8:85a3:0000:0000:8a2e:0370:7334. Si el lector ha utilizado un proxy HTTP o un
balanceador de carga para enviar la solicitud, el valor de este campo es la dirección IP del proxy o del
balanceador de carga. Consulte también el campo x-forwarded-for.
6. cs-method

El método de solicitud HTTP recibido del lector.


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 URL de solicitud que identifica la ruta y el objeto (por ejemplo, /images/cat.jpg). Los
signos de interrogación (?) de las URL y las cadenas de consulta no están incluidas en el registro.
9. sc-status

Contiene uno de los siguientes valores:


• El código de estado HTTP de la respuesta del servidor (por ejemplo, 200).
• 000, que indica que el lector ha cerrado la conexión antes de que el servidor pudiese responder a la
solicitud. Si el lector cierra la conexión después de que el servidor comience a enviar la respuesta,
este campo contiene el código de estado HTTP de la respuesta que el servidor había comenzado a
enviar.
10.cs(Referer)

El valor del encabezado Referer de la solicitud. Este es el nombre del dominio que ha originado
la solicitud. Entre los remitentes principales se incluyen motores de búsqueda, otros sitios web que
enlazan directamente con sus objetos y su propio sitio web.
11.cs(User-Agent)

El valor del encabezado User-Agent de la solicitud. El encabezado User-Agent identifica el origen


de la solicitud, como el tipo de dispositivo y el navegador que enviaron la solicitud o, si la solicitud
provino de un motor de búsqueda, de cuál.
12.cs-uri-query

La parte de la cadena de consulta de la URL, de haberla.

Cuando una URL no contiene una cadena de consulta, el valor de este campo es un guion (-). Para
obtener más información, consulte Almacenamiento en caché de contenido en función de parámetros de
cadenas de consulta (p. 274).
13.cs(Cookie)

El encabezado Cookie de la solicitud, incluidos los pares nombre-valor y los atributos asociados.

Si habilita el registro de cookies, CloudFront registra las cookies de todas las solicitudes
independientemente de qué cookies elija reenviar al origen. Cuando una solicitud no incluye un
encabezado de cookie, el valor de este campo es un guion (-). Para obtener más información acerca de
cookies, consulte Almacenamiento en caché de contenido en función de cookies (p. 277).
14.x-edge-result-type
470
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

Cómo el servidor ha clasificado la respuesta después de que el último byte abandonara el servidor. En
algunos casos, el tipo de resultado puede cambiar entre el momento en que el servidor está listo para
enviar la respuesta y el momento en que termina el envío de la respuesta. Consulte también el campo
x-edge-response-result-type.

Por ejemplo, en el streaming de HTTP, se supone que el servidor encuentra un segmento de la


secuencia en la caché. En esta situación, el valor de este campo sería normalmente Hit. Sin embargo,
si el lector cierra la conexión antes de que el servidor haya entregado todo el segmento, el tipo de
resultado final (y el valor de este campo) es Error.

Las conexiones WebSocket tendrán un valor de Miss para este campo porque el contenido no se
puede almacenar en caché y se asigna directamente al origen.

Entre los valores posibles se incluyen:


• Hit: el servidor ofreció el objeto al lector desde la caché.
• RefreshHit: el servidor encontró el objeto en la caché pero el objeto había vencido, por lo que el
servidor se puso en contacto con el origen para comprobar que la caché tenía la versión más reciente
del objeto.
• OriginShieldHit: el objeto se ha ofrecido al lector desde la caché de escudo de origen.
• Miss: un objeto en la caché no ha podido satisfacer la solicitud, así que el servidor la ha reenviado al
origen y ha devuelto el resultado al lector.
• LimitExceeded: se ha denegado la solicitud porque se superó una cuota (antes denominada límite)
de CloudFront.
• CapacityExceeded: el servidor ha devuelto un código de estado HTTP 503 porque no disponía de
capacidad suficiente en el momento de la solicitud para prestar servicio al objeto.
• Error: normalmente, esto significa que la solicitud ha dado lugar a un error de cliente (el valor del
campo sc-status está en el intervalo 4xx) o un error de servidor (el valor del campo sc-status
está en el intervalo 5xx). Si el valor del campo sc-status es 200 o si el valor de este campo
es Error y el valor del campo x-edge-response-result-type no es Error, significa que la
solicitud HTTP se ha realizado correctamente pero el cliente se ha desconectado antes de recibir
todos los bytes.
• Redirect: el servidor ha redirigido al lector de HTTP a HTTPS de acuerdo con la configuración de
distribución.
15.x-edge-request-id

Una cadena opaca que identifica una solicitud de forma única. CloudFront también envía esta cadena
en el encabezado de respuesta x-amz-cf-id.
16.x-host-header

El valor que el lector ha incluido en el encabezado Host de la solicitud. Si utiliza el nombre de dominio
CloudFront en las URL de los objetos (como d111111abcdef8.cloudfront.net), este campo contiene
ese nombre de dominio. Si utiliza nombres de dominio alternativos (CNAME) en las URL de los objetos
(como www.example.com), este campo contiene el nombre de dominio alternativo.

Si está utilizando nombres de dominio alternativo, consulte cs(Host) en el campo 7 para ver el nombre
de dominio asociado con su distribución.
17.cs-protocol

El protocolo de la solicitud del lector (http, https, ws o wss).


18.cs-bytes

El número total de bytes de datos que el lector ha incluido en la solicitud, incluidos los encabezados.
Para conexiones WebSockets, se trata del número total de bytes enviados desde el cliente al servidor
en la conexión.
471
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

19.time-taken

El número de segundos (hasta la milésima de segundo, por ejemplo, 0,082) desde que el servidor
recibe la solicitud del lector hasta que el servidor escribe el último byte de la respuesta en la cola de
salida, según se mide en el servidor. Desde el punto de vista del lector, el tiempo total para obtener la
respuesta completa será superior a este valor a causa de la latencia de la red y el almacenamiento en
búfer de TCP.
20.x-forwarded-for

Si el lector ha utilizado un proxy HTTP o un balanceador de carga para enviar la solicitud,


el valor del campo c-ip es la dirección IP del proxy o del balanceador de carga. En ese
caso, este campo es la dirección IP del espectador que originó la solicitud. Este campo
contiene una dirección IPv4 (por ejemplo, 192.0.2.183) o una dirección IPv6 (por ejemplo,
2001:0db8:85a3:0000:0000:8a2e:0370:7334).

Si el lector no utiliza un proxy HTTP o un balanceador de carga, el valor de este campo es un guion (-).
21.ssl-protocol

Cuando la solicitud ha utilizado HTTPS, este campo contiene el protocolo SSL/TLS que el lector y el
servidor han negociado para transmitir la solicitud y la respuesta. Para obtener una lista de valores
posibles, consulte los protocolos SSL/TLS compatibles en Protocolos y cifrados admitidos entre lectores
y CloudFront (p. 145).

Cuando cs-protocol en el campo 17 es http, el valor de este campo es un guion (-).


22.ssl-cipher

Cuando la solicitud ha utilizado HTTPS, este campo contiene el cifrado SSL/TLS que el lector y
el servidor han negociado para cifrar la solicitud y la respuesta. Para obtener una lista de valores
posibles, consulte los cifrados SSL/TLS compatibles en Protocolos y cifrados admitidos entre lectores y
CloudFront (p. 145).

Cuando cs-protocol en el campo 17 es http, el valor de este campo es un guion (-).


23.x-edge-response-result-type

Cómo el servidor ha clasificado la respuesta antes de devolver la respuesta al lector. Consulte también
el campo x-edge-result-type. Entre los valores posibles se incluyen:
• Hit: el servidor ofreció el objeto al lector desde la caché.
• RefreshHit: el servidor encontró el objeto en la caché pero el objeto había vencido, por lo que el
servidor se puso en contacto con el origen para comprobar que la caché tenía la versión más reciente
del objeto.
• Miss: un objeto en la caché no ha podido satisfacer la solicitud, así que el servidor ha reenviado la
solicitud al servidor de origen y ha devuelto el resultado al lector.
• LimitExceeded: se ha denegado la solicitud porque se superó una cuota (antes denominada límite)
de CloudFront.
• CapacityExceeded: el servidor ha devuelto un error 503 porque no disponía de capacidad
suficiente en el momento de la solicitud para prestar servicio al objeto.
• Error: normalmente, esto significa que la solicitud ha dado lugar a un error de cliente (el valor del
campo sc-status está en el intervalo 4xx) o un error de servidor (el valor del campo sc-status
está en el intervalo 5xx).

Si el valor del campo x-edge-result-type es Error y el valor de este campo no es Error, el


cliente se ha desconectado antes de finalizar la descarga.
• Redirect: el servidor ha redirigido al lector de HTTP a HTTPS de acuerdo con la configuración de
distribución.
24.cs-protocol-version
472
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

La versión de HTTP que el espectador especificó en la solicitud. Entre los valores posibles se incluyen:
HTTP/0.9, HTTP/1.0, HTTP/1.1 y HTTP/2.0.
25.fle-status

Cuando se configura el cifrado en el nivel de campo para una distribución, este campo contiene un
código que indica si el cuerpo de la solicitud se ha procesado correctamente. Cuando el servidor
procesa correctamente el cuerpo de la solicitud, cifra los valores de los campos especificados y reenvía
la solicitud al origen, el valor de este campo es Processed. El valor de x-edge-result-type todavía
puede indicar un error del lado del cliente o del lado del servidor en este caso.

Los valores posibles para este campo son:


• ForwardedByContentType: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar
porque no se ha configurado ningún tipo de contenido.
• ForwardedByQueryArgs: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar porque
la solicitud contiene un argumento de consulta que no estaba en la configuración de cifrado en el nivel
de campo.
• ForwardedDueToNoProfile: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar
porque no se ha especificado ningún perfil en la configuración de cifrado en el nivel de campo.
• MalformedContentTypeClientError: el servidor ha rechazado la solicitud y ha devuelto un
código de estado HTTP 400 al lector porque el valor del encabezado Content-Type estaba en un
formato no válido.
• MalformedInputClientError: el servidor ha rechazado la solicitud y ha devuelto un código de
estado HTTP 400 al lector porque el cuerpo de la solicitud estaba en un formato no válido.
• MalformedQueryArgsClientError: el servidor ha rechazado la solicitud y ha devuelto un código
de estado HTTP 400 al lector porque un argumento de consulta estaba vacío o tenía un formato no
válido.
• RejectedByContentType: el servidor ha rechazado la solicitud y ha devuelto un código de estado
HTTP 400 al lector porque no se ha especificado ningún tipo de contenido en la configuración de
cifrado en el nivel de campo.
• RejectedByQueryArgs: el servidor ha rechazado la solicitud y ha devuelto un código de estado
HTTP 400 al lector porque no se ha especificado ningún argumento de consulta en la configuración
de cifrado en el nivel de campo.
• ServerError: el servidor de origen ha devuelto un error.

Si la solicitud supera una cuota de cifrado en el nivel de campo (anteriormente denominada límite), este
campo contiene uno de los siguientes códigos de error y el servidor devuelve el código de estado HTTP
400 al lector. Para obtener una lista de las cuotas actuales del cifrado en el nivel de campo, consulte
Cuotas de cifrado en el nivel de campo (p. 524).
• FieldLengthLimitClientError: un campo que se ha configurado como cifrado ha superado la
longitud máxima permitida.
• FieldNumberLimitClientError: una solicitud que la distribución ha configurado para cifrar
contiene un número de campos mayor del permitido.
• RequestLengthLimitClientError: la longitud del cuerpo de la solicitud ha superado el máximo
permitido cuando se ha configurado el cifrado en el nivel de campo.

Si no se ha configurado el cifrado en el nivel de campo para la distribución, el valor de este campo es un


guion (-).
26.fle-encrypted-fields

El número de campos de cifrado en el nivel de campo (p. 241) que el servidor ha cifrado y reenviado al
origen. Los servidores de CloudFront transmiten la solicitud procesada al origen a medida que cifran los
datos, por lo que este campo puede tener un valor incluso si el valor de fle-status es un error.

473
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

Si no se ha configurado el cifrado en el nivel de campo para la distribución, el valor de este campo es un


guion (-).
27.c-port

El número de puerto de la solicitud desde el espectador.


28.time-to-first-byte

El número de segundos entre la recepción de la solicitud y la escritura del primer byte de la respuesta,
medido en el servidor.
29.x-edge-detailed-result-type

Cuando el campo x-edge-result-type no es Error, este campo contiene el mismo valor que x-
edge-result-type. Cuando el campo x-edge-result-type es Error, este campo contiene el tipo
específico de error. Entre los valores posibles se incluyen:
• AbortedOrigin: el servidor ha encontrado un problema con el origen.
• ClientCommError: la respuesta al lector se ha interrumpido debido a un problema de comunicación
entre el servidor y el lector.
• ClientGeoBlocked: la distribución está configurada para rechazar solicitudes desde la ubicación
geográfica del espectador.
• ClientHungUpRequest: el espectador se ha detenido prematuramente mientras enviaba la
solicitud.
• Error: se ha producido un error cuyo tipo de error no se ajusta a ninguna de las otras categorías.
Este tipo de error puede producirse cuando el servidor envía una respuesta de error desde la caché.
• InvalidRequest: el servidor ha recibido una solicitud no válida desde el lector.
• InvalidRequestBlocked: el acceso al recurso solicitado está bloqueado.
• InvalidRequestCertificate: la distribución no coincide con el certificado SSL/TLS para el que
se ha establecido la conexión HTTPS.
• InvalidRequestHeader: la solicitud contenía un encabezado no válido.
• InvalidRequestMethod: la distribución no está configurada para gestionar el método de solicitud
HTTP que se ha utilizado. Esto puede suceder cuando la distribución solo admite solicitudes que se
pueden almacenar en caché.
• OriginConnectError: el servidor no ha podido conectarse al origen.
• OriginContentRangeLengthError: el encabezado Content-Length de la respuesta del origen
no coincide con la longitud del encabezado Content-Range.
• OriginDnsError: el servidor no ha podido resolver el nombre de dominio del origen.
• OriginError: el origen ha devuelto una respuesta incorrecta.
• OriginHeaderTooBigError: un encabezado devuelto por el origen es demasiado grande para que
el servidor de borde lo procese.
• OriginInvalidResponseError: el origen ha devuelto una respuesta no válida.
• OriginReadError: el servidor no ha podido leer desde el origen.
• OriginWriteError: el servidor no ha podido escribir en el origen.
• OriginZeroSizeObjectError: un objeto de tamaño cero enviado desde el origen ha provocado
un error.
• SlowReaderOriginError: el espectador ha sido al leer el mensaje que ha provocado el error de
origen.
30.sc-content-type

El valor del encabezado HTTP Content-Type de la respuesta.


31.sc-content-len

El valor del encabezado HTTP Content-Length de la respuesta.

474
Amazon CloudFront Guía para desarrolladores
Uso de registros estándar (registros de acceso)

32.sc-range-start

Cuando la respuesta contiene el encabezado HTTP Content-Range, este campo contiene el valor
inicial del intervalo.
33.sc-range-end

Cuando la respuesta contiene el encabezado HTTP Content-Range, este campo contiene el valor final
del intervalo.

A continuación, se muestra un ejemplo de archivo de registro para una distribución:

#Version: 1.0
#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status
cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id
x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-
edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-
to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-
range-end
2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html
200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,
%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit
SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ== d111111abcdef8.cloudfront.net
https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit
text/html 78 - -
2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html
200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,
%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit
k6WGMNkEzR5BEM_SaF47gjtX9zBDO2m349OY2an0QPEaUum1ZOLrow== d111111abcdef8.cloudfront.net
https 23 0.000 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.000 Hit
text/html 78 - -
2019-12-04 21:02:31 LAX1 392 192.0.2.100 GET d111111abcdef8.cloudfront.net /index.html
200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,
%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit
f37nTMVvnKvV2ZSvEsivup_c2kZ7VXzYdjC-GUQZ5qNs-89BlWazbw== d111111abcdef8.cloudfront.net
https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit
text/html 78 - -
2019-12-13 22:36:27 SEA19-C1 900 192.0.2.200 GET d111111abcdef8.cloudfront.net /
favicon.ico 502 http://www.example.com/ Mozilla/5.0%20(Windows
%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,
%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Error
1pkpNfBQ39sYMnjjUQjmH2w1wdJnbHYTbag21o_3OfcQgPzdL2RSSQ== www.example.com http 675 0.102 -
- - Error HTTP/1.1 - - 25260 0.102 OriginDnsError text/html 507 - -
2019-12-13 22:36:26 SEA19-C1 900 192.0.2.200 GET d111111abcdef8.cloudfront.net / 502
- Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,
%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Error
3AqrZGCnF_g0-5KOvfA7c9XLcf4YGvMFSeFdIetR1N_2y8jSis8Zxg== www.example.com http 735 0.107 -
- - Error HTTP/1.1 - - 3802 0.107 OriginDnsError text/html 507 - -
2019-12-13 22:37:02 SEA19-C2 900 192.0.2.200 GET d111111abcdef8.cloudfront.net / 502
- curl/7.55.1 - - Error kBkDzGnceVtWHqSCqBUqtA_cEs2T3tFUBbnBNkB9El_uVRhHgcZfcw==
www.example.com http 387 0.103 - - - Error HTTP/1.1 - - 12644 0.103 OriginDnsError text/
html 507 - -

Cargos por registros estándar


El registro estándar es una característica opcional de CloudFront. No se aplica ningún cargo adicional por
habilitar el registro estándar. Sin embargo, se acumulan cargos de Amazon S3 usuales en concepto de
almacenamiento y acceso a los archivos en Amazon S3 (se pueden eliminar en cualquier momento).

Para obtener más información acerca de los precios de Amazon S3, consulte Precios de Amazon S3.

Para obtener más información acerca de los precios de CloudFront, consulte Precios de CloudFront.

475
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

Registros en tiempo real


Con los registros en tiempo real de CloudFront, puede obtener información sobre las solicitudes realizadas
a una distribución en tiempo real (los registros se envían en cuestión de segundos después de recibir las
solicitudes). Puede usar registros en tiempo real para monitorear, analizar y tomar medidas en función del
rendimiento de entrega de contenido.

Los registros en tiempo real de CloudFront son configurables. Puede elegir:

• La frecuencia de muestreo de los registros en tiempo real, es decir, el porcentaje de solicitudes de las
que desea recibir entradas de registro en tiempo real.
• Los campos específicos que desea recibir en los registros de log.
• Los comportamientos de caché específicos (patrones de ruta) para los que desea recibir registros en
tiempo real.

Los registros en tiempo real de CloudFront se envían a la secuencia de datos de su elección en


Amazon Kinesis Data Streams. Puede crear su propio consumidor de secuencia de datos de Kinesis
o utilizar Amazon Kinesis Data Firehose para enviar los datos de registro a Amazon Simple Storage
Service (Amazon S3), Amazon Redshift, Amazon Elasticsearch Service (Amazon ES) o a un servicio de
procesamiento de registros de terceros.

CloudFront aplica cargos por los registros en tiempo real, que se suman a los cargos que se le apliquen
por el uso de Kinesis Data Streams. Para obtener más información acerca de los precios, consulte Precios
de Amazon CloudFront y Precios de Amazon Kinesis Data Streams.

Descripción de las configuraciones de registros en tiempo real


Para utilizar registros en tiempo real de CloudFront, se debe comenzar por crear una configuración de
registro en tiempo real. La configuración de registro en tiempo real contiene información acerca de los
campos de registro que desea recibir, la frecuencia de muestreo de los registros de log y la secuencia de
datos de Kinesis en la que desea entregar los registros.

En concreto, una configuración de registro en tiempo real contiene los siguientes valores de configuración:

• Nombre (p. 476)


• Frecuencia de muestreo (p. 476)
• Campos (p. 477)
• Punto de enlace (secuencia de datos de Kinesis) (p. 482)
• Rol de IAM (p. 484)

Nombre

Un nombre para identificar la configuración de registro en tiempo real.


Frecuencia de muestreo

La frecuencia de muestreo es un número entero entre 1 y 100 (inclusive) que determina el porcentaje
de solicitudes de lector que se envían a Kinesis Data Streams como entradas de registro en tiempo
real. Para incluir todas las solicitudes de lector en los registros en tiempo real, especifique 100 para
la frecuencia de muestreo. Es posible que elija una frecuencia de muestreo más baja para reducir los
costos mientras recibe un ejemplo representativo de datos de solicitudes en los registros en tiempo
real.

476
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

Campos

Una lista de campos que se incluyen en cada registro de log en tiempo real. Cada registro de log
puede contener hasta 40 campos y puede optar por recibir todos los campos disponibles, o solo los
campos necesarios para monitorear y analizar el rendimiento.

La lista siguiente contiene el nombre de cada campo y una descripción de la información de ese
campo. Los campos se muestran en el orden en que aparecen en las entradas de registros que se
entregan a Kinesis Data Streams.

1. timestamp

La fecha y la hora a las que el servidor de borde ha terminado de responder a la solicitud.


2. c-ip

La dirección IP del espectador que ha realizado la solicitud, por ejemplo, 192.0.2.183 o


2001:0db8:85a3:0000:0000:8a2e:0370:7334. Si el lector ha utilizado un proxy HTTP o un
balanceador de carga para enviar la solicitud, el valor de este campo es la dirección IP del proxy o del
balanceador de carga. Consulte también el campo x-forwarded-for.
3. time-to-first-byte

El número de segundos entre la recepción de la solicitud y la escritura del primer byte de la respuesta,
medido en el servidor.
4. sc-status

Contiene uno de los siguientes valores:


• El código de estado HTTP de la respuesta del servidor (por ejemplo, 200).
• 000, que indica que el lector ha cerrado la conexión antes de que el servidor pudiese responder a la
solicitud. Si el lector cierra la conexión después de que el servidor comience a enviar la respuesta,
este campo contiene el código de estado HTTP de la respuesta que el servidor había comenzado a
enviar.
5. sc-bytes

El número total de bytes que el servidor ha enviado al lector en respuesta a la solicitud, incluidos los
encabezados. Para conexiones WebSockets, se trata del número total de bytes enviados desde el
servidor al cliente a través de la conexión.
6. cs-method

El método de solicitud HTTP recibido del lector.


7. cs-protocol

El protocolo de la solicitud del lector (http, https, ws o wss).


8. cs-host

El valor que el lector ha incluido en el encabezado Host de la solicitud. Si utiliza el nombre de dominio
CloudFront en las URL de los objetos (como d111111abcdef8.cloudfront.net), este campo contiene
ese nombre de dominio. Si utiliza nombres de dominio alternativos (CNAME) en las URL de los objetos
(como www.example.com), este campo contiene el nombre de dominio alternativo.
9. cs-uri-stem

La dirección URL completa de la solicitud, incluida la cadena de consulta (si existe), pero sin el nombre
de dominio. Por ejemplo, /images/cat.jpg?mobile=true.

477
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

Note

En standard logs (registros estándar) (p. 463), el valor cs-uri-stem no incluye la cadena de
consulta.
10.cs-bytes

El número total de bytes de datos que el lector ha incluido en la solicitud, incluidos los encabezados.
Para conexiones WebSockets, se trata del número total de bytes enviados desde el cliente al servidor
en la conexión.
11.x-edge-location

La ubicación de borde que atendió la solicitud. Cada ubicación de borde se identifica mediante un
código de tres letras y un número asignado arbitrariamente (por ejemplo, DFW3). El código de tres
letras normalmente se corresponde con el código del aeropuerto de la Asociación de Transporte Aéreo
Internacional (IATA) más cercano a la ubicación geográfica de la ubicación de borde. Estas abreviaturas
pueden cambiar en el futuro.
12.x-edge-request-id

Una cadena opaca que identifica una solicitud de forma única. CloudFront también envía esta cadena
en el encabezado de respuesta x-amz-cf-id.
13.x-host-header

El nombre de dominio de la distribución de CloudFront (por ejemplo, d111111abcdef8.cloudfront.net).


14.time-taken

El número de segundos (hasta la milésima de segundo, por ejemplo, 0,082) desde que el servidor
recibe la solicitud del lector hasta que el servidor escribe el último byte de la respuesta en la cola de
salida, según se mide en el servidor. Desde el punto de vista del lector, el tiempo total para obtener la
respuesta completa será superior a este valor a causa de la latencia de la red y el almacenamiento en
búfer de TCP.
15.cs-protocol-version

La versión de HTTP que el espectador especificó en la solicitud. Entre los valores posibles se incluyen:
HTTP/0.9, HTTP/1.0, HTTP/1.1 y HTTP/2.0.
16.c-ip-version

La versión IP de la solicitud (IPv4 o IPv6).


17.cs-user-agent

El valor del encabezado User-Agent de la solicitud. El encabezado User-Agent identifica el origen


de la solicitud, como el tipo de dispositivo y el navegador que enviaron la solicitud o, si la solicitud
provino de un motor de búsqueda, de cuál.
18.cs-referer

El valor del encabezado Referer de la solicitud. Este es el nombre del dominio que ha originado
la solicitud. Entre los remitentes principales se incluyen motores de búsqueda, otros sitios web que
enlazan directamente con sus objetos y su propio sitio web.
19.cs-cookie

El encabezado Cookie de la solicitud, incluidos los pares nombre-valor y los atributos asociados.
Note

Este campo se trunca en 800 bytes.


20.cs-uri-query
478
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

La parte de la cadena de consulta de la URL, de haberla.


21.x-edge-response-result-type

Cómo el servidor ha clasificado la respuesta antes de devolver la respuesta al lector. Consulte también
el campo x-edge-result-type. Entre los valores posibles se incluyen:
• Hit: el servidor ofreció el objeto al lector desde la caché.
• RefreshHit: el servidor encontró el objeto en la caché pero el objeto había vencido, por lo que el
servidor se puso en contacto con el origen para comprobar que la caché tenía la versión más reciente
del objeto.
• Miss: un objeto en la caché no ha podido satisfacer la solicitud, así que el servidor ha reenviado la
solicitud al servidor de origen y ha devuelto el resultado al lector.
• LimitExceeded: se ha denegado la solicitud porque se superó una cuota (antes denominada límite)
de CloudFront.
• CapacityExceeded: el servidor ha devuelto un error 503 porque no disponía de capacidad
suficiente en el momento de la solicitud para prestar servicio al objeto.
• Error: normalmente, esto significa que la solicitud ha dado lugar a un error de cliente (el valor del
campo sc-status está en el intervalo 4xx) o un error de servidor (el valor del campo sc-status
está en el intervalo 5xx).

Si el valor del campo x-edge-result-type es Error y el valor de este campo no es Error, el


cliente se ha desconectado antes de finalizar la descarga.
• Redirect: el servidor ha redirigido al lector de HTTP a HTTPS de acuerdo con la configuración de
distribución.
22.x-forwarded-for

Si el lector ha utilizado un proxy HTTP o un balanceador de carga para enviar la solicitud,


el valor del campo c-ip es la dirección IP del proxy o del balanceador de carga. En ese
caso, este campo es la dirección IP del espectador que originó la solicitud. Este campo
contiene una dirección IPv4 (por ejemplo, 192.0.2.183) o una dirección IPv6 (por ejemplo,
2001:0db8:85a3:0000:0000:8a2e:0370:7334).
23.ssl-protocol

Cuando la solicitud ha utilizado HTTPS, este campo contiene el protocolo SSL/TLS que el lector y el
servidor han negociado para transmitir la solicitud y la respuesta. Para obtener una lista de valores
posibles, consulte los protocolos SSL/TLS compatibles en Protocolos y cifrados admitidos entre lectores
y CloudFront (p. 145).
24.ssl-cipher

Cuando la solicitud ha utilizado HTTPS, este campo contiene el cifrado SSL/TLS que el lector y
el servidor han negociado para cifrar la solicitud y la respuesta. Para obtener una lista de valores
posibles, consulte los cifrados SSL/TLS compatibles en Protocolos y cifrados admitidos entre lectores y
CloudFront (p. 145).
25.x-edge-result-type

Cómo el servidor ha clasificado la respuesta después de que el último byte abandonara el servidor. En
algunos casos, el tipo de resultado puede cambiar entre el momento en que el servidor está listo para
enviar la respuesta y el momento en que termina el envío de la respuesta. Consulte también el campo
x-edge-response-result-type.

Por ejemplo, en el streaming de HTTP, se supone que el servidor encuentra un segmento de la


secuencia en la caché. En esta situación, el valor de este campo sería normalmente Hit. Sin embargo,
si el lector cierra la conexión antes de que el servidor haya entregado todo el segmento, el tipo de
resultado final (y el valor de este campo) es Error.

479
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

Las conexiones WebSocket tendrán un valor de Miss para este campo porque el contenido no se
puede almacenar en caché y se asigna directamente al origen.

Entre los valores posibles se incluyen:


• Hit: el servidor ofreció el objeto al lector desde la caché.
• RefreshHit: el servidor encontró el objeto en la caché pero el objeto había vencido, por lo que el
servidor se puso en contacto con el origen para comprobar que la caché tenía la versión más reciente
del objeto.
• OriginShieldHit: el objeto se ha ofrecido al lector desde la caché de escudo de origen.
• Miss: un objeto en la caché no ha podido satisfacer la solicitud, así que el servidor la ha reenviado al
origen y ha devuelto el resultado al lector.
• LimitExceeded: se ha denegado la solicitud porque se superó una cuota (antes denominada límite)
de CloudFront.
• CapacityExceeded: el servidor ha devuelto un código de estado HTTP 503 porque no disponía de
capacidad suficiente en el momento de la solicitud para prestar servicio al objeto.
• Error: normalmente, esto significa que la solicitud ha dado lugar a un error de cliente (el valor del
campo sc-status está en el intervalo 4xx) o un error de servidor (el valor del campo sc-status
está en el intervalo 5xx). Si el valor del campo sc-status es 200 o si el valor de este campo
es Error y el valor del campo x-edge-response-result-type no es Error, significa que la
solicitud HTTP se ha realizado correctamente pero el cliente se ha desconectado antes de recibir
todos los bytes.
• Redirect: el servidor ha redirigido al lector de HTTP a HTTPS de acuerdo con la configuración de
distribución.
26.fle-encrypted-fields

El número de campos de cifrado en el nivel de campo (p. 241) que el servidor ha cifrado y reenviado al
origen. Los servidores de CloudFront transmiten la solicitud procesada al origen a medida que cifran los
datos, por lo que este campo puede tener un valor incluso si el valor de fle-status es un error.
27.fle-status

Cuando se configura el cifrado en el nivel de campo para una distribución, este campo contiene un
código que indica si el cuerpo de la solicitud se ha procesado correctamente. Cuando el servidor
procesa correctamente el cuerpo de la solicitud, cifra los valores de los campos especificados y reenvía
la solicitud al origen, el valor de este campo es Processed. El valor de x-edge-result-type todavía
puede indicar un error del lado del cliente o del lado del servidor en este caso.

Los valores posibles para este campo son:


• ForwardedByContentType: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar
porque no se ha configurado ningún tipo de contenido.
• ForwardedByQueryArgs: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar porque
la solicitud contiene un argumento de consulta que no estaba en la configuración de cifrado en el nivel
de campo.
• ForwardedDueToNoProfile: el servidor ha reenviado la solicitud al origen sin analizar ni cifrar
porque no se ha especificado ningún perfil en la configuración de cifrado en el nivel de campo.
• MalformedContentTypeClientError: el servidor ha rechazado la solicitud y ha devuelto un
código de estado HTTP 400 al lector porque el valor del encabezado Content-Type estaba en un
formato no válido.
• MalformedInputClientError: el servidor ha rechazado la solicitud y ha devuelto un código de
estado HTTP 400 al lector porque el cuerpo de la solicitud estaba en un formato no válido.
• MalformedQueryArgsClientError: el servidor ha rechazado la solicitud y ha devuelto un código
de estado HTTP 400 al lector porque un argumento de consulta estaba vacío o tenía un formato no
válido.

480
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

• RejectedByContentType: el servidor ha rechazado la solicitud y ha devuelto un código de estado


HTTP 400 al lector porque no se ha especificado ningún tipo de contenido en la configuración de
cifrado en el nivel de campo.
• RejectedByQueryArgs: el servidor ha rechazado la solicitud y ha devuelto un código de estado
HTTP 400 al lector porque no se ha especificado ningún argumento de consulta en la configuración
de cifrado en el nivel de campo.
• ServerError: el servidor de origen ha devuelto un error.

Si la solicitud supera una cuota de cifrado en el nivel de campo (anteriormente denominada límite), este
campo contiene uno de los siguientes códigos de error y el servidor devuelve el código de estado HTTP
400 al lector. Para obtener una lista de las cuotas actuales del cifrado en el nivel de campo, consulte
Cuotas de cifrado en el nivel de campo (p. 524).
• FieldLengthLimitClientError: un campo que se ha configurado como cifrado ha superado la
longitud máxima permitida.
• FieldNumberLimitClientError: una solicitud que la distribución ha configurado para cifrar
contiene un número de campos mayor del permitido.
• RequestLengthLimitClientError: la longitud del cuerpo de la solicitud ha superado el máximo
permitido cuando se ha configurado el cifrado en el nivel de campo.
28.sc-content-type

El valor del encabezado HTTP Content-Type de la respuesta.


29.sc-content-len

El valor del encabezado HTTP Content-Length de la respuesta.


30.sc-range-start

Cuando la respuesta contiene el encabezado HTTP Content-Range, este campo contiene el valor
inicial del intervalo.
31.sc-range-end

Cuando la respuesta contiene el encabezado HTTP Content-Range, este campo contiene el valor final
del intervalo.
32.c-port

El número de puerto de la solicitud desde el espectador.


33.x-edge-detailed-result-type

Cuando el campo x-edge-result-type no es Error, este campo contiene el mismo valor que x-
edge-result-type. Cuando el campo x-edge-result-type es Error, este campo contiene el tipo
específico de error. Entre los valores posibles se incluyen:
• AbortedOrigin: el servidor ha encontrado un problema con el origen.
• ClientCommError: la respuesta al lector se ha interrumpido debido a un problema de comunicación
entre el servidor y el lector.
• ClientGeoBlocked: la distribución está configurada para rechazar solicitudes desde la ubicación
geográfica del espectador.
• ClientHungUpRequest: el espectador se ha detenido prematuramente mientras enviaba la
solicitud.
• Error: se ha producido un error cuyo tipo de error no se ajusta a ninguna de las otras categorías.
Este tipo de error puede producirse cuando el servidor envía una respuesta de error desde la caché.
• InvalidRequest: el servidor ha recibido una solicitud no válida desde el lector.
• InvalidRequestBlocked: el acceso al recurso solicitado está bloqueado.
• InvalidRequestCertificate: la distribución no coincide con el certificado SSL/TLS para el que
se ha establecido la conexión HTTPS.
481
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

• InvalidRequestHeader: la solicitud contenía un encabezado no válido.


• InvalidRequestMethod: la distribución no está configurada para gestionar el método de solicitud
HTTP que se ha utilizado. Esto puede suceder cuando la distribución solo admite solicitudes que se
pueden almacenar en caché.
• OriginConnectError: el servidor no ha podido conectarse al origen.
• OriginContentRangeLengthError: el encabezado Content-Length de la respuesta del origen
no coincide con la longitud del encabezado Content-Range.
• OriginDnsError: el servidor no ha podido resolver el nombre de dominio del origen.
• OriginError: el origen ha devuelto una respuesta incorrecta.
• OriginHeaderTooBigError: un encabezado devuelto por el origen es demasiado grande para que
el servidor de borde lo procese.
• OriginInvalidResponseError: el origen ha devuelto una respuesta no válida.
• OriginReadError: el servidor no ha podido leer desde el origen.
• OriginWriteError: el servidor no ha podido escribir en el origen.
• OriginZeroSizeObjectError: un objeto de tamaño cero enviado desde el origen ha provocado
un error.
• SlowReaderOriginError: el espectador ha sido al leer el mensaje que ha provocado el error de
origen.
34.c-country

Un código de país que representa la ubicación geográfica del lector, según lo determinado por la
dirección IP del lector.
35.cs-accept-encoding

El valor del encabezado Accept-Encoding de la solicitud del lector.


36.cs-accept

El valor del encabezado Accept de la solicitud del lector.


37.cache-behavior-path-pattern

El patrón de ruta que identifica el comportamiento de caché que coincidió con la solicitud del lector.
38.cs-headers

Los encabezados HTTP (nombres y valores) en la solicitud del lector.


Note

Este campo se trunca en 800 bytes.


39.cs-header-names

Los nombres de los encabezados HTTP (no los valores) en la solicitud del lector.
Note

Este campo se trunca en 800 bytes.


40.cs-headers-count

El número de encabezados HTTP en la solicitud del lector.

Punto de enlace (secuencia de datos de Kinesis)

El punto de enlace contiene información sobre la secuencia de datos de Kinesis en la que desea
enviar registros en tiempo real. Se proporciona el nombre de recurso de Amazon (ARN) de la
secuencia de datos.

482
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

Para obtener más información acerca de la creación de una secuencia de datos de Kinesis, consulte
los siguientes temas en la Guía para desarrolladores de Amazon Kinesis Data Streams.
• Administración de secuencias a través de la consola
• Realizar operaciones básicas en Kinesis Data Stream con la AWS CLI
• Creación de una secuencia (utiliza AWS SDK para Java)

Cuando crea una secuencia de datos, debe especificar el número de particiones. Utilice la siguiente
información que le ayudará a estimar el número de particiones que necesita.

Para calcular el número de particiones para la secuencia de datos de Kinesis

1. Calcule (o estime) la cantidad de solicitudes por segundo que la distribución de CloudFront recibe.

Puede utilizar los informes de uso de CloudFront (en la consola de CloudFront) y las métricas
de CloudFront (p. 453) (en las consolas CloudFront y Amazon CloudWatch) que le ayudarán a
calcular las solicitudes por segundo.
2. Determine el tamaño normal de un único registro de log en tiempo real.

En general, un único registro de log es de unos 500 bytes. Un registro grande que incluye todos
los campos suele pesar aproximadamente 1KB.

Si no está seguro de cuál es el tamaño de su registro, puede habilitar los registros en tiempo real
con una frecuencia de muestro baja (por ejemplo, 1 %) y luego calcular el promedio de tamaño de
registro a través de los datos de monitoreo en Kinesis Data Streams (cantidad total de registros
dividida por el total de bytes entrantes).
3. En la Calculadora de precios de la página de precios de Amazon Kinesis Data Streams,
introduzca el número de solicitudes (registros) por segundo y el tamaño promedio de registro de
un único registro. Luego, elija Show calculations (Mostrar cálculos).

La calculadora de precios muestra el número de particiones que necesita. (También muestra el


costo estimado).

En el siguiente ejemplo se muestra que para un tamaño promedio de registro de 0,5 KB y 50 000
solicitudes por segundo, necesita 50 particiones.

483
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

Rol de IAM

El rol de AWS Identity and Access Management (IAM) que concede permiso a CloudFront para enviar
registros en tiempo real a la secuencia de datos de Kinesis.

Cuando se crea una configuración de registro en tiempo real con la consola de CloudFront, se puede
elegir Create new service role (Crear un nuevo rol de servicio) para permitir a la consola crear el rol de
IAM automáticamente.

Cuando se crea una configuración de registro en tiempo real con AWS CloudFormation o la API de
CloudFront (CLI o SDK de AWS), se debe crear el rol de IAM uno mismo y proporcionar el ARN del rol.
Para crear IAM usted mismo, utilice las siguientes políticas.

Política de confianza del rol de IAM

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}

Política de permisos del rol de IAM para una secuencia de datos no cifrada

Para utilizar la siguiente política, reemplace el ARN de la secuencia de datos de Kinesis


por el ARN de su secuencia de datos de Kinesis.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kinesis:DescribeStreamSummary",
"kinesis:DescribeStream",
"kinesis:PutRecord",
"kinesis:PutRecords"
],
"Resource": [
"Kinesis data stream ARN"
]
}
]
}

Política de permisos del rol de IAM para una secuencia de datos cifrada

Para utilizar la siguiente política, reemplace el ARN de la secuencia de datos de Kinesis


por el ARN de su secuencia de datos de Kinesis y la clave de AWS KMS por el ARN de la clave
maestra del cliente en AWS Key Management Service (AWS KMS).

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",

484
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

"Action": [
"kinesis:DescribeStreamSummary",
"kinesis:DescribeStream",
"kinesis:PutRecord",
"kinesis:PutRecords"
],
"Resource": [
"Kinesis data stream ARN"
]
},
{
"Effect": "Allow",
"Action": [
"kms:GenerateDataKey"
],
"Resource": [
"AWS KMS key"
]
}
]
}

Creación y uso de configuraciones de registro en tiempo real


Puede utilizar configuraciones de registro en tiempo real para obtener información sobre las solicitudes
realizadas a una distribución en tiempo real (los registros se entregan en cuestión de segundos después
de recibir las solicitudes). Puede crear una configuración de registro en tiempo real en la consola de
CloudFront, con la interfaz de línea de comandos de AWS (AWS CLI) o con la API de CloudFront.

Para utilizar una configuración de registro en tiempo real, puede asociarla a uno o más comportamientos
de caché en una distribución de CloudFront.

Crear una configuración de registro en tiempo real (consola)

Para crear una configuración de registro en tiempo real (consola)

1. Inicie sesión en la consola de administración de AWS y abra la página Logs (Registros) en la consola
de CloudFront en https://console.aws.amazon.com/cloudfront/v2/home?#/logs.
2. Elija Real-time log configurations (Configuraciones de registro en tiempo real).
3. Seleccione Create configuration (Crear configuración).
4. Elija la configuración deseada para la configuración de registro en tiempo real. Tenga en cuenta lo
siguiente:

• De forma predeterminada, se eligen todos los Fields (Campos). Para eliminar un campo, realice una
de las acciones siguientes:
• Utilice el menú desplegable Choose fields (Elegir campos) para eliminar la selección de los
campos que no desea incluir en la configuración del registro en tiempo real.
• Utilice el botón expandir ( ) para consultar todos los campos y, a continuación, utilice el botón
quitar ( ) para eliminar los campos que no desea incluir en la configuración de registro en tiempo
real.
• Para IAM role (Rol de IAM), puede elegir Create new service role (Crear un nuevo rol de servicio)
para permitir que la consola cree el rol de IAM automáticamente. Debe tener permiso para crear
roles de IAM.
• Puede utilizar la configuración de la sección Distribution (Distribución) para elegir una distribución
y el comportamiento de caché de CloudFront que desee asociar a la configuración de registro en
tiempo real.

485
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

Para obtener más información, consulte Descripción de las configuraciones de registros en tiempo
real (p. 476).
5. Cuando haya terminado, elija Create configuration (Crear configuración).

Si se realiza correctamente, la consola muestra los detalles de la configuración de registro en tiempo real
que acaba de crear.

Crear una configuración de registro en tiempo real (AWS CLI)

Para crear una configuración de registro en tiempo real con la interfaz de línea de comandos de AWS
(AWS CLI), utilice el comando aws cloudfront create-realtime-log-config. Puede utilizar un archivo de
entrada para proporcionar los parámetros de entrada del comando, en lugar de especificar cada parámetro
individual como entrada de línea de comandos.

Para crear una configuración de registro en tiempo real (CLI con archivo de entrada)

1. Utilice el siguiente comando para crear un archivo denominado rtl-config.yaml que contenga
todos los parámetros de entrada del comando create-realtime-log-config.

aws cloudfront create-realtime-log-config --generate-cli-skeleton yaml-input > rtl-


config.yaml

Note

La opción yaml-input solo está disponible en la versión 2 de la CLI de AWS. Con la versión
1 de la CLI de AWS, puede generar un archivo de entrada en formato JSON. Para obtener
más información, consulte Generar el esqueleto y los parámetros de entrada de AWS CLI a
partir de un archivo de entrada JSON o YAML en la Guía del usuario de la interfaz de línea de
comandos de AWS.
2. Abra el archivo llamado rtl-config.yaml que acaba de crear. Edite el archivo para especificar los
ajustes de configuración del registro en tiempo real que desee y, a continuación, guarde el archivo.
Tenga en cuenta lo siguiente:

• Para StreamType, el único valor válido es Kinesis.

Para obtener más información acerca de los ajustes de configuración largos en tiempo real, consulte
Descripción de las configuraciones de registros en tiempo real (p. 476).
3. Utilice el siguiente comando para crear la configuración de registro en tiempo real utilizando los
parámetros de entrada del archivo de rtl-config.yaml.

aws cloudfront create-realtime-log-config --cli-input-yaml file://rtl-config.yaml

Si se realiza correctamente, la salida del comando muestra los detalles de la configuración de registro en
tiempo real que acaba de crear.

Para asociar una configuración de registro en tiempo real a una distribución existente (CLI con
archivo de entrada)

1. Utilice el comando siguiente para guardar la configuración de distribución de la distribución de


CloudFront que desea actualizar. Reemplace distribución_ID por el ID de la distribución.

486
Amazon CloudFront Guía para desarrolladores
Registros en tiempo real

aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-


config.yaml

Note

La opción --output yaml solo está disponible en la versión 2 de la CLI de AWS. Con la
versión 1 de la CLI de AWS, puede generar la salida en formato JSON. Para obtener más
información, consulte Control de la salida de comandos de la CLI de AWS en la Guía del
usuario de la interfaz de línea de comandos de AWS.
2. Abra el archivo llamado dist-config.yaml que acaba de crear. Edite el archivo, realizando los
siguientes cambios en cada comportamiento de caché que actualice para utilizar una configuración de
registro en tiempo real.

• En el comportamiento de caché, agregue un campo denominado RealtimeLogConfigArn. Para


el valor del campo, utilice el ARN de la configuración de registro en tiempo real que desea asociar a
este comportamiento de caché.
• Cambie el nombre del campo ETag a IfMatch, pero no cambie el valor del campo.

Guarde el archivo cuando haya terminado.


3. Utilice el siguiente comando para actualizar la distribución para utilizar la configuración de registro en
tiempo real. Reemplace distribución_ID por el ID de la distribución.

aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-


config.yaml

Si tiene éxito, la salida del comando muestra los detalles de la distribución que acaba de actualizar.

Crear una configuración de registro en tiempo real (API)

Para crear una configuración de registro en tiempo real con la API de CloudFront, utilice
CreateRealtimeLogConfig. Para obtener más información acerca de los parámetros que especifique en
esta llamada a la API, consulte Descripción de las configuraciones de registros en tiempo real (p. 476) y
la documentación de referencia de la API para su AWS SDK u otro cliente de la API.

Después de crear una configuración de registro en tiempo real, puede asociarla a un comportamiento de
caché mediante una de las siguientes llamadas a la API:

• Para asociarla a un comportamiento de caché en una distribución existente, utilice UpdateDistribution.


• Para asociarlo con un comportamiento de caché en una nueva distribución, utilice CreateDistribution.

Para ambas llamadas a la API, proporcione el ARN de la configuración de registro en tiempo real del
campo RealtimeLogConfigArn, dentro de un comportamiento de caché. Para obtener más información
acerca de los otros campos que especifique en estas llamadas a la API, consulte Valores que deben
especificarse al crear o actualizar una distribución (p. 43) y la documentación de referencia de la API para
el SDK de AWS u otro cliente de la API.

Creación de un consumidor de Kinesis Data Streams


Para leer y analizar los registros en tiempo real, se crea o utiliza un consumidorde Kinesis Data Streams.
Cuando se crea un consumidor para registros en tiempo real de CloudFront, es importante saber que
los campos de cada entrada de registro en tiempo real siempre se envían en el mismo orden, como se

487
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail

muestra en la sección Campos (p. 477). Asegúrese de crear su consumidor para acomodar este pedido
fijo.

Por ejemplo, considere una configuración de registro en tiempo real que incluya solo estos tres campos:
time-to-first-byte, sc-status y c-country. En este escenario, el último campo, c-country,
siempre es el campo número 3 en cada registro de log. Sin embargo, si posteriormente agrega campos a
la configuración de registro en tiempo real, la ubicación de cada campo en un registro puede cambiar.

Por ejemplo, si agrega los campos sc-bytes y time-taken a la configuración de registro en tiempo
real, estos campos se insertan en cada entrada de registro según el orden mostrado en la sección
Campos (p. 477). El orden resultante de los cinco campos es time-to-first-byte, sc-status, sc-
bytes, time-taken y c-country. El campo c-country era originalmente el campo número 3, pero
ahora es el campo número 5. Asegúrese de que su aplicación de consumidor puede gestionar campos que
cambian de posición en un registro de log, en caso de que agregue campos a su configuración de registro
en tiempo real.

Resolución de problemas de registros en tiempo real


Después de crear una configuración de registro en tiempo real, es posible que encuentre que no se
envían registros (o no todos los registros) a Kinesis Data Streams. En este caso, primero debe comprobar
que la distribución de CloudFront recibe solicitudes de lector. Si es así, puede comprobar la siguiente
configuración para continuar la solución de problemas.

Permisos de roles de IAM

Para enviar entradas de registros en tiempo real a la secuencia de datos de Kinesis, CloudFront
utiliza el rol de IAM de la configuración de registro en tiempo real. Asegúrese de que la política de
confianza de roles y la política de permisos de roles coinciden con las políticas mostradas en Rol de
IAM (p. 484).
Limitación controlada de Kinesis Data Streams

Si CloudFront escribe entradas de registros en tiempo real en la secuencia de datos de Kinesis


más rápido de lo que la secuencia puede manejar, es posible que Kinesis Data Streams limite las
solicitudes de CloudFront. En este caso, puede aumentar el número de particiones en la secuencia de
datos de Kinesis. Cada partición puede admitir escrituras de hasta 1000 registros por segundo, hasta
un máximo de escritura de datos de 1 MB por segundo.

Uso de AWS CloudTrail para capturar solicitudes


enviadas a la API de CloudFront
CloudFront se integra con CloudTrail, un servicio de AWS que captura información acerca de cada solicitud
que la cuenta de AWS envía a la API de CloudFront, incluidas las de los usuarios de IAM. CloudTrail
guarda periódicamente los archivos de registro de estas solicitudes en el bucket de Amazon S3 que
especifique. CloudTrail captura información sobre todas las solicitudes, ya se hayan realizado mediante la
consola de CloudFront, la API de CloudFront, los SDK de AWS, la CLI de CloudFront u otro servicio, por
ejemplo, AWS CloudFormation.

Puede utilizar la información de los archivos de registro de CloudTrail para determinar las solicitudes que
se realizaron a CloudFront, la dirección IP de origen desde la que se realizó cada solicitud, quién la realizó,
cuándo, etc. Para obtener más información sobre CloudTrail, incluido cómo configurarlo y habilitarlo,
consulte la Guía del usuario de AWS CloudTrail.
Note

CloudFront es un servicio global. Para consultar las solicitudes de CloudFront en los registros de
CloudTrail, debe actualizar un registro de seguimiento existente para incluir servicios globales.

488
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail

Para obtener más información, consulte Actualización de un registro de seguimiento y Acerca de


los eventos de servicios globales en la Guía del usuario de AWS CloudTrail.

Temas
• Información de CloudFront en CloudTrail (p. 489)
• Descripción de las entradas del archivo de registro de CloudFront (p. 489)

Información de CloudFront en CloudTrail


CloudTrail 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 demás eventos de servicios de AWS
en Event history (Historial de eventos). Puede ver, buscar y descargar los últimos eventos de la cuenta
de AWS. Debido a que CloudFront es un servicio global, los eventos del servicio se registran en EE. UU.
Este (Norte de Virginia). Para obtener más información, consulte Ver eventos con el historial de eventos de
CloudTrail.

Para mantener un registro continuo de eventos de la cuenta de AWS, incluidos los eventos de CloudFront,
cree un registro de seguimiento. Su registro de seguimiento incluye eventos de servicio globales. Un
registro de seguimiento permite a CloudTrail enviar archivos de registro a un bucket de Amazon S3. De
forma predeterminada, cuando se crea un registro de seguimiento en la consola, el registro de seguimiento
se aplica a todas las regiones e incluye eventos de servicio globales. El registro de seguimiento registra los
eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket de Amazon
S3 especificado. También es posible configurar otros servicios de AWS para analizar en profundidad y
actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Para obtener más
información, consulte:

• Introducción a la creación de registros de seguimiento


• Consulte Servicios e integraciones compatibles con CloudTrail.
• Configuración de notificaciones de Amazon SNS para CloudTrail
• Recepción de archivos de registro de CloudTrail de varias regiones y Recepción de archivos de registro
de CloudTrail de varias cuentas.

CloudTrail registra todas las acciones de la API de CloudFront y se documentan en la Referencia de la API
de Amazon CloudFront. Por ejemplo, las llamadas a las API CreateDistribution, GetDistribution
y ListInvalidations generan entradas en los archivos de registro de CloudTrail.

Cada entrada de registro o evento contiene información acerca de quién generó la solicitud. La información
de identidad del usuario le ayuda a determinar lo siguiente:

• Si la solicitud se realizó con las credenciales 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.

Descripción de las entradas del archivo de registro de CloudFront


Cada archivo de registro con formato JSON de CloudTrail puede contener una o más entradas de registro.
Una entrada de registro representa una única solicitud de cualquier origen e incluye información acerca
de la acción solicitada, incluidos todos los parámetros, la fecha y la hora de la acción, etcétera. No se
garantiza que las entradas de registro sigan un orden específico; es decir, no son un rastro del stack
ordenado de llamadas a la API.

489
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail

El elemento eventName identifica la acción que se ha producido y la versión de la API que se utilizó
para realizar dicha acción. Por ejemplo, el siguiente valor eventName indica que una distribución se ha
actualizado y que se utilizó la versión de API 2014-01-31 para realizar la acción:

UpdateDistribution2014_01_31

En el ejemplo siguiente se muestra una entrada de registro de CloudTrail que refleja cinco acciones:

• Actualizar una configuración de distribución. El valor de eventName es UpdateDistribution.


• Enumerar distribuciones asociadas a la cuenta actual. El valor de eventName es
ListDistributions.
• Obtener la configuración de una distribución específica. El valor de eventName es GetDistribution.
• 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 es
ListCloudFrontOriginAccessIdentities.

{
"Records": [{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:00:32Z",
"eventName": "UpdateDistribution2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": {
"id": "EDFDVBD6EXAMPLE",
"ifMatch": "E9LHASXEXAMPLE",
"distributionConfig": {
"restrictions": {
"geoRestriction": {
"quantity": 0,
"restrictionType": "none"
}
},
"customErrorResponses": {
"quantity": 0
},
"defaultRootObject": "index.html",
"aliases": {
"quantity": 1,
"items": ["example.com"]
},
"logging": {
"bucket": "",
"enabled": false,
"prefix": "",
"includeCookies": false
},
"viewerCertificate": {
"iAMCertificateId": "A1B2C3D4E5F6G7EXAMPLE",
"sSLSupportMethod": "sni-only"
},
"callerReference": "2014-05-06 64832",
"defaultCacheBehavior": {

490
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail

"targetOriginId": "Images",
"allowedMethods": {
"items": ["GET",
"HEAD"],
"quantity": 2
},
"forwardedValues": {
"cookies": {
"forward": "none"
},
"queryString": false
},
"minTTL": 300,
"trustedSigners": {
"enabled": false,
"quantity": 0
},
"viewerProtocolPolicy": "redirect-to-https",
"smoothStreaming": false
},
"origins": {
"items": [{
"customOriginConfig": {
"hTTPSPort": 443,
"originProtocolPolicy": "http-only",
"hTTPPort": 80
},
"domainName": "myawsbucket.s3-website-us-east-2.amazonaws.com",
"id": "Web page origin"
},
{
"customOriginConfig": {
"hTTPSPort": 443,
"originProtocolPolicy": "http-only",
"hTTPPort": 80
},
"domainName": "myotherawsbucket.s3-website-us-west-2.amazonaws.com",
"id": "Images"
}],
"quantity": 2
},
"enabled": true,
"cacheBehaviors": {
"allowedMethods": {
"items": ["GET",
"HEAD"],
"quantity": 2
},
"trustedSigners": {
"enabled": false,
"quantity": 0
},
"targetOriginId": "Web page origin",
"smoothStreaming": false,
"viewerProtocolPolicy": "redirect-to-https",
"minTTL": 300,
"forwardedValues": {
"cookies": {
"forward": "none"
},
"queryString": false
},
"pathPattern": "*.html"
}],
"quantity": 1
},

491
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail

"priceClass": "PriceClass_All",
"comment": "Added an origin and a cache behavior"
}
},
"responseElements": {
"eTag": "E2QWRUHEXAMPLE",
"distribution": {
"domainName": "d111111abcdef8.cloudfront.net",
"status": "InProgress",
"distributionConfig": {
distributionConfig response omitted
},
"id": "EDFDVBD6EXAMPLE",
"lastModifiedTime": "May 6, 2014 6:00:32 PM",
"activeTrustedSigners": {
"quantity": 0,
"enabled": false
},
"inProgressInvalidationBatches": 0
}
},
"requestID": "4e6b66f9-d548-11e3-a8a9-73e33example",
"eventID": "5ab02562-0fc5-43d0-b7b6-90293example"
},
{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:01:35Z",
"eventName": "ListDistributions2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": null,
"responseElements": null,
"requestID": "52de9f97-d548-11e3-8fb9-4dad0example",
"eventID": "eb91f423-6dd3-4bb0-a148-3cdfbexample"
},
{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:01:59Z",
"eventName": "GetDistribution2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": {
"id": "EDFDVBD6EXAMPLE"
},
"responseElements": null,
"requestID": "497b3622-d548-11e3-8fb9-4dad0example",
"eventID": "c32289c7-005a-46f7-9801-cba41example"
},
{
"eventVersion": "1.01",

492
Amazon CloudFront Guía para desarrolladores
Captura de solicitudes a la API con CloudTrail

"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:02:27Z",
"eventName": "CreateInvalidation2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": {
"invalidationBatch": {
"callerReference": "2014-05-06 64947",
"paths": {
"quantity": 3,
"items": ["/images/new.jpg",
"/images/logo.jpg",
"/images/banner.jpg"]
}
},
"distributionId": "EDFDVBD6EXAMPLE"
},
"responseElements": {
"invalidation": {
"createTime": "May 6, 2014 6:02:27 PM",
"invalidationBatch": {
"callerReference": "2014-05-06 64947",
"paths": {
"quantity": 3,
"items": ["/images/banner.jpg",
"/images/logo.jpg",
"/images/new.jpg"]
}
},
"status": "InProgress",
"id": "ISRZ85EXAMPLE"
},
"location": "https://cloudfront.amazonaws.com/2014-01-31/distribution/
EDFDVBD6EXAMPLE/invalidation/ISRZ85EXAMPLE"
},
"requestID": "4e200613-d548-11e3-a8a9-73e33example",
"eventID": "191ebb93-66b7-4517-a741-92b0eexample"
},
{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:03:08Z",
"eventName": "ListCloudFrontOriginAccessIdentities2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": null,
"responseElements": null,
"requestID": "42ca4299-d548-11e3-8fb9-4dad0example",
"eventID": "7aeb434f-eb55-4e2a-82d8-417d5example"
}]
}

493
Amazon CloudFront Guía para desarrolladores
Seguimiento de los cambios en la
configuración mediante AWS Config

Seguimiento de los cambios en la configuración


mediante AWS Config
Puede utilizar AWS Config para registrar los cambios de configuración para los cambios de configuración
de distribución de CloudFront. Por ejemplo, puede capturar cambios en los estados de distribución, clases
de precios, orígenes, configuración de restricciones geográficas y configuraciones de Lambda@Edge.
Note

AWS Config no registra etiquetas clave-valor para las distribuciones de CloudFront.

Configurar AWS Config con CloudFront


Cuando se configura AWS Config, puede elegir registrar todos los recursos de AWS compatibles o puede
especificar solo determinados recursos para registrar cambios en la configuración, por ejemplo, solo los
cambios de registro para CloudFront. Para consultar los recursos específicos compatibles con CloudFront,
consulte la lista de tipos de recursos de AWS admitidos en la Guía para desarrolladores de AWS Config.

Para realizar un seguimiento de cambios de configuración en la distribución de CloudFront, debe iniciar


sesión en la consola de 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 registra
los 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 AWS Config en https://
console.aws.amazon.com/config/.
2. Seleccione Get Started Now.
3. En la página Settings (Configuración), para Resource types to record (Tipos de recursos que se van
a registrar), especifique los tipos de recursos de AWS que desea que registre AWS Config. Si desea
registrar solo los cambios de CloudFront, elija Specific types (Tipos específicos) y, a continuación, en
CloudFront, elija la distribución o distribución de streaming para la que desea realizar un seguimiento
de los cambios.

Para añadir o cambiar las distribuciones en las que realizar un seguimiento, elija Settings
(Configuración) a la izquierda, después de completar su configuración inicial.
4. Especifique las opciones necesarias adicionales para AWS Config: configure una notificación,
especifique una ubicación para la información de configuración y agregue reglas para evaluar tipos de
recursos.

Para obtener más información, consulte Configuración de AWS Config con la consola en la Guía para
desarrolladores de AWS Config.

Para configurar AWS Config con CloudFront mediante la CLI de AWS o mediante una API, consulte una de
las siguientes opciones:

• Utilice la CLI de AWS: Configuración de AWS Config con la CLI de AWS en la Guía para desarrolladores
de AWS Config
• Utilizar una API: la acción StartConfigurationRecorder y otra información en la Referencia de la API de
AWS Config

494
Amazon CloudFront Guía para desarrolladores
Consultar historial de configuración de CloudFront

Consultar historial de configuración de CloudFront


Después de que AWS Config comience a registrar los cambios de configuración en las 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:

• Utilice la consola de AWS Config. Para cada recurso registrado, puede ver una página de escala de
tiempo que proporciona un historial con detalles de la configuración. Para ver esta página, elija el icono
gris en la columna Config Timeline (Escala de tiempo de configuración) de la página Dedicated Hosts
(Hosts dedicados). Para obtener más información, consulte Visualización de detalles de configuración en
la consola de AWS Config en la Guía para desarrolladores de AWS Config.
• Ejecute comandos de la CLI de AWS. Para obtener una lista de todas las distribuciones, utilice el
comando list-discovered-resources. Para obtener los detalles de configuración de una distribución
para un intervalo de tiempo específico, utilice el comando get-resource-config-history. Para obtener
más información, consulte Consultar detalles de configuración mediante la CLI en la Guía para
desarrolladores de AWS Config.
• Utilice la API de AWS Config en las aplicaciones. Para obtener una lista de todas las distribuciones,
utilice la acción ListDiscoveredResources. Para obtener los detalles de configuración de una distribución
para un intervalo de tiempo específico, utilice la acción GetResourceConfigHistory. Para obtener más
información, consulte la Referencia de la API de AWS Config.

Por ejemplo, para obtener una lista de todas las distribuciones de AWS Config, podría ejecutar un
comando de la CLI como el siguiente:

aws configservice list-discovered-resources --resource-type


AWS::CloudFront::Distribution

495
Amazon CloudFront Guía para desarrolladores
Protección de los datos

Seguridad en Amazon CloudFront


La seguridad en la nube es la mayor prioridad de AWS. Como cliente de AWS, se beneficiará de una
arquitectura de red y un centro de datos diseñados para satisfacer los requisitos de seguridad de las
organizaciones más exigentes.

La seguridad es una responsabilidad compartida entre AWS y usted. El modelo de responsabilidad


compartida la describe como seguridad de la nube y seguridad en la nube:

• Seguridad en la nube: AWS es responsable de proteger la infraestructura que ejecuta los servicios de
AWS en la nube de AWS. AWS también le proporciona servicios que puede utilizar de forma segura.
Auditores de terceros prueban y verifican periódicamente la eficacia de nuestra seguridad en el marco
de los programas de conformidad de AWS. Para obtener más información acerca de los programas
de conformidad que se aplican a Amazon CloudFront, consulte Servicios de AWS en el ámbito del
programa de conformidad.
• Seguridad en la nube: su responsabilidad viene determinada por el servicio de AWS que utilice. Usted
también es responsable de otros factores incluida la confidencialidad de los datos, los requisitos de la
empresa y la legislación y los reglamentos aplicables.

Esta documentación le ayuda a comprender cómo puede aplicar el modelo de responsabilidad compartida
cuando se utiliza CloudFront. En los siguientes temas se muestra cómo configurar CloudFront para
satisfacer los objetivos de seguridad y conformidad. También obtendrá información sobre cómo utilizar
otros servicios de AWS que le ayudarán a monitorear y proteger los recursos de CloudFront.

Temas
• Protección de datos en Amazon CloudFront (p. 496)
• Administración de identidades y accesos en CloudFront (p. 499)
• Registro y monitoreo en Amazon CloudFront (p. 515)
• Validación de conformidad para Amazon CloudFront (p. 515)
• Resiliencia de Amazon CloudFront (p. 517)
• Seguridad de la infraestructura en Amazon CloudFront (p. 517)

Protección de datos en Amazon CloudFront


El modelo de responsabilidad compartida de AWS se aplica a la protección de datos en Amazon
CloudFront. Como se describe en este modelo, AWS es responsable de proteger la infraestructura global
que ejecuta toda la nube de AWS. Usted es responsable de mantener el control sobre el contenido alojado
en esta infraestructura. Este contenido incluye la configuración de seguridad y las tareas de administración
de los servicios de AWS que usted utiliza. Para obtener más información acerca de la privacidad de datos,
consulte las Preguntas frecuentes sobre privacidad de datos. Para obtener más información sobre la
protección de datos en Europa, consulte la publicación de blog relativa al modelo de responsabilidad
compartida de AWS y RGPD en el Blog de seguridad de AWS.

A efectos de la protección de datos, se recomienda que proteja las credenciales de la cuenta de AWS
y configure cuentas de usuario individuales con AWS Identity and Access Management (IAM). De esta
manera,solo se otorgan a cada usuario los permisos necesarios para cumplir con sus obligaciones
laborales. También le recomendamos proteger sus datos de las siguientes formas:

496
Amazon CloudFront Guía para desarrolladores
Cifrado en tránsito

• Utilice Multi-Factor Authentication (MFA) con cada cuenta.


• Utilice SSL/TLS para comunicarse con los recursos de AWS. Le recomendamos TLS 1.2 o una versión
posterior.
• Configure el registro de la actividad del usuario y la API con AWS CloudTrail.
• Utilice las soluciones de cifrado de AWS junto con todos los controles de seguridad predeterminados
dentro de los servicios de AWS.
• Utilice avanzados servicios de seguridad administrados, como Amazon Macie, que le ayuden a detectar
y proteger los datos personales almacenados en Amazon S3.
• Si necesita módulos criptográficos validados FIPS 140-2 al acceder a AWS a través de una interfaz de
línea de comandos o una API, utilice un punto de enlace de FIPS. Para obtener más información acerca
de los puntos de enlace de FIPS disponibles, consulte Estándar de procesamiento de la información
federal (FIPS) 140-2.

Le recomendamos encarecidamente que nunca introduzca información de identificación confidencial,


como, por ejemplo, números de cuenta de sus clientes, en los campos de formato libre, como el campo
Name (Nombre). Esto incluye cuando trabaje con CloudFront u otros servicios de AWS a través de la
consola, la API, la CLI de AWS o los SDK de AWS. Cualquier dato que escriba en CloudFront o en otros
servicios es posible que se incluya en los registros de diagnóstico. Cuando proporcione una URL a un
servidor externo, no incluya información de credenciales en la URL para validar la solicitud para ese
servidor.

Amazon CloudFront ofrece varias opciones que puede utilizar para ayudar a proteger el contenido que
ofrece:

• Configure las conexiones HTTPS.


• Configure el cifrado en el nivel de campo para cifrar los datos en tránsito.
• Restrinja el acceso al contenido de manera que solo determinadas personas o personas de un área
específica, puedan verlo.

En los siguientes temas, se explican las opciones con más detalle.

Temas
• Cifrado en tránsito (p. 497)
• Cifrado en reposo (p. 498)
• Restricción del acceso a contenido (p. 498)

Cifrado en tránsito
Para cifrar los datos durante el transporte, configure Amazon CloudFront para solicitar que los lectores
utilicen HTTPS para solicitar los archivos, de modo que las conexiones se cifren cuando CloudFront se
comunique con los lectores. También puede configurar CloudFront para utilizar HTTPS para obtener
archivos del origen, de modo que las conexiones se cifran cuando CloudFront se comunica con el origen.

Para obtener más información, consulte Uso de HTTPS con CloudFront (p. 138).

El cifrado en el nivel de campo añade una capa de seguridad adicional que, junto con HTTPS, le permite
proteger datos específicos durante su procesamiento en el sistema de forma que solo determinadas
aplicaciones puedan verlos. Al configurar el cifrado en el nivel de campo en CloudFront, puede cargar
de manera segura información confidencial enviada por el usuario a los servidores web. La información
confidencial proporcionada por los clientes se cifra en el borde más cercano al usuario. Sigue cifrada en
toda la pila de aplicaciones, lo que garantiza que solo las aplicaciones que necesitan los datos y disponen
de las credenciales para descifrarlos, son capaces de hacerlo.

497
Amazon CloudFront Guía para desarrolladores
Cifrado en reposo

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

Cifrado en reposo
CloudFront utiliza SSD que se cifran para los puntos de presencia (POP) de ubicación de borde y los
volúmenes de EBS cifrados para las cachés de borde regionales (REC).

Restricción del acceso a contenido


Muchas empresas que distribuyen contenido a través de Internet desean restringir el acceso a
documentos, información corporativa, transmisiones multimedia o contenido destinado a una selección de
usuarios. Para ofrecer de forma segura este contenido mediante Amazon CloudFront, puede elegir una o
varias de las opciones siguientes:

Utilice URL o cookies firmadas

Puede restringir el acceso a contenido que está destinado a usuarios determinados, por ejemplo,
que hayan pagado una tarifa, ofreciendo este contenido privado a través de CloudFront mediante
URL firmadas o cookies firmadas. Para obtener más información, consulte Distribución de contenido
privado con URL firmadas y cookies firmadas (p. 164).
Restringir el acceso al contenido en los buckets de Amazon S3

Si restringe el acceso al contenido utilizando, por ejemplo, URL o cookies firmadas de CloudFront,
tampoco querrá que nadie consulte los archivos utilizando la URL directa para el archivo. En su lugar,
deseará que solo puedan obtener acceso a los archivos utilizando la URL de CloudFront, para que las
medidas de protección funcionen.

Si utiliza un bucket de Amazon S3 como origen de una distribución de CloudFront, puede configurar
una identidad de acceso de origen (OAI) para administrar el acceso directo al contenido. Una identidad
de acceso de origen es una identidad de usuario de CloudFront especial que se puede asociar con la
distribución de modo que puede proteger todo o parte del contenido de Amazon S3. Para obtener más
información acerca de cómo configurarlo, consulte Restricción del acceso a contenido de Amazon S3
utilizando una identidad de acceso de origen (p. 223).
Restringir el acceso al contenido proporcionado por un balanceador de carga de aplicaciones

Cuando utiliza CloudFront con un balanceador de carga de aplicaciones en Elastic Load Balancing
como origen, puede configurar CloudFront para evitar que los usuarios accedan directamente al
balanceador de carga de aplicaciones. Esto permite a los usuarios acceder al balanceador de carga
de aplicaciones solo a través de CloudFront, lo que garantiza que obtenga los beneficios de utilizar
CloudFront. Para obtener más información, consulte Restringir el acceso a los balanceadores de carga
de aplicaciones (p. 230).
Uso de ACL web de AWS WAF

Puede utilizar AWS WAF, un servicio de firewall de aplicación web, para crear una lista de control
de acceso web (ACL web) para restringir el acceso al contenido. En función de las condiciones que
especifique, como las direcciones IP de las que provienen las solicitudes o los valores de las cadenas
de consulta, CloudFront responde a las solicitudes con el contenido solicitado o con un código de
estado HTTP 403 (Prohibido). Para obtener más información, consulte Utilizar AWS WAF para
controlar el acceso al contenido (p. 237).
Restricción geográfica

Puede usar geo restriction (restricción geográfica), también conocida como geo blocking (bloqueo
geográfico), para evitar que usuarios de ubicaciones geográficas específicas obtengan acceso a
contenido que ofrece a través de una distribución de CloudFront. Existen varias opciones entre las

498
Amazon CloudFront Guía para desarrolladores
Identity and Access Management

que elegir al configurar restricciones geográficas. Para obtener más información, consulte Restringir la
distribución geográfica de su contenido (p. 238).

Administración de identidades y accesos en


CloudFront
Para realizar cualquier operación en recursos de CloudFront, como la creación de una distribución o
la invalidación de un objeto, AWS Identity and Access Management (IAM) requiere que se autentique
como un usuario aprobado de AWS. Si está utilizando la consola de CloudFront, debe autenticar su
identidad proporcionando su nombre de usuario y contraseña de AWS. Si accede a CloudFront mediante
programación, su aplicació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 para
realizar operaciones y obtener acceso a los recursos. Si es un administrador de la cuenta, puede utilizar
IAM para controlar el acceso de otros usuarios a los recursos que están asociados a dicha cuenta.

En este capítulo se explica cómo utilizar AWS Identity and Access Management (IAM) y CloudFront para
ayudar a proteger sus recursos.

Temas

• Autenticación (p. 499)


• Control de acceso (p. 500)

Autenticación
Puede obtener acceso a AWS con los siguientes tipos de identidades:

• Usuario de la cuenta raíz de AWS: cuando se crea por primera vez una cuenta de AWS, se comienza
con una identidad de inicio de sesión único que tiene acceso completo a todos los servicios y recursos
de AWS de la cuenta. Esta identidad recibe el nombre de usuario raíz de la cuenta de AWS y para
obtener acceso a ella se inicia sesión con la dirección de correo electrónico y la contraseña que
utilizó para crear la cuenta. Le recomendamos que no utilice el usuario raíz en sus tareas cotidianas,
incluso las tareas administrativas. En lugar de ello, es mejor ceñirse a la práctica recomendada de
utilizar el usuario final exclusivamente para crear al primer usuario de IAM. A continuación, guarde
las credenciales del usuario raíz en un lugar seguro y utilícelas tan solo para algunas tareas de
administración de cuentas y servicios.
• Usuario de IAM: un usuario de IAM es una identidad dentro de su cuenta de AWS que tiene permisos
personalizados específicos (por ejemplo, permisos para crear una distribución en CloudFront). Puede
utilizar un nombre de usuario de IAM y una contraseña para iniciar sesión en páginas web seguras de
AWS, como la consola de administración de AWS, los foros de debate de AWS o el Centro de soporte
de AWS.

Además de un nombre de usuario y una contraseña, también puede generar claves de acceso para
cada usuario. Puede utilizar estas claves cuando obtenga acceso a los servicios de AWS mediante
programación, ya sea a través de uno de los varios SDK o mediante la interfaz de línea de comandos
(CLI) de AWS. El SDK y las herramientas de CLI usan claves de acceso para firmar criptográficamente
su solicitud. Si no utiliza las herramientas de AWS, debe firmar usted mismo la solicitud. CloudFront es
compatible con Signature Version 4, un protocolo para autenticar solicitudes de API de entrada. Para
obtener más información sobre las solicitudes de autenticación, consulte Proceso de firma de Signature
Version 4 en la Referencia general de AWS.

499
Amazon CloudFront Guía para desarrolladores
Control de acceso

• Rol de IAM: un rol de IAM es una identidad de IAM que puede crear en la cuenta y que tiene permisos
específicos. Un rol de IAM es similar a un usuario de IAM, ya que se trata de una AWS Identity con
políticas de permisos que determinan lo que la identidad puede hacer y lo que no en AWS. Sin embargo,
en lugar de asociarse exclusivamente a una persona, la intención es que cualquier usuario pueda asumir
un rol que necesite. Además, un rol no tiene asociadas credenciales a largo plazo estándar, como una
contraseña o claves de acceso. En su lugar, cuando se asume un rol, este proporciona credenciales de
seguridad temporales para la sesión de rol. Los roles de IAM con credenciales temporales son útiles en
las siguientes situaciones:

• Acceso de usuarios federados: en lugar de crear un usuario de IAM, puede usar identidades
existentes de AWS Directory Service, el directorio de usuarios de la compañía o un proveedor de
identidad web. Esto se conoce como usuarios federados. AWS asigna un rol a un usuario federado
cuando se solicita acceso a través de un proveedor de identidad. Para obtener más información
acerca de los usuarios federados, consulte Usuarios y roles federados en la Guía del usuario de IAM.

• Acceso a los servicios de AWS: un rol de servicio es un rol de IAM que un servicio asume para realizar
acciones en su nombre. Los roles de servicio ofrecen acceso solo dentro de su cuenta y no se pueden
utilizar para otorgar acceso a servicios en otras cuentas. Un administrador de IAM puede crear,
modificar y eliminar un rol de servicio desde IAM. Para obtener más información, consulte Creación de
un rol para delegar permisos a un servicio de AWS en la Guía del usuario de IAM.

• Aplicaciones que se ejecutan en Amazon EC2: puede utilizar un rol de IAM para administrar
credenciales temporales para las aplicaciones que se ejecutan en una instancia EC2 y realizan
solicitudes de la API y la CLI de AWS. Es preferible hacerlo de este modo a almacenar claves de
acceso en la instancia EC2. Para asignar un rol de AWS a una instancia EC2 y ponerla a disposición
de todas las aplicaciones, cree un perfil de instancia asociado a la misma. Un perfil de instancia
contiene el rol y permite a los programas que se ejecutan en la instancia EC2 obtener credenciales
temporales. Para obtener más información, consulte Uso de un rol de IAM para conceder permisos a
aplicaciones que se ejecutan en instancias Amazon EC2 en la Guía del usuario de IAM.

Control de acceso
Para crear, actualizar, eliminar o enumerar recursos de CloudFront, necesita permisos para realizar la
operación y obtener acceso a los recursos correspondientes. Además, para realizar la operación mediante
programación, necesita claves de acceso válidas.

En las secciones siguientes se describe cómo administrar los permisos para CloudFront:

• Introducción a la administración de permisos de acceso para sus recursos de CloudFront (p. 500)
• Usar políticas basadas en identidad (políticas de IAM) para CloudFront (p. 505)
• Permisos de la API de CloudFront: referencia de acciones, recursos y condiciones (p. 510)

Introducción a la administración de permisos de


acceso 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 un
recurso se rigen por las políticas de permisos.

500
Amazon CloudFront Guía para desarrolladores
Información general sobre la administración de acceso

Note

Un administrador de la cuenta (o usuario administrador) es un usuario que cuenta con privilegios


de administrador. Para obtener más información acerca de los administradores, consulte Prácticas
recomendadas de IAM 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 las
acciones que se les permiten realizar.

Temas
• ARN de recursos de CloudFront (p. 501)
• Titularidad de los recursos (p. 501)
• Administración del acceso a los recursos (p. 501)
• Especificar elementos de políticas: recursos, acciones, efectos y entidades principales (p. 505)
• Especificación de las condiciones de una política (p. 505)

ARN de recursos de CloudFront


Todos los recursos de CloudFront (distribuciones, invalidaciones e identidades de acceso de origen)
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 obtener
más información, consulte la Referencia de la API de Amazon CloudFront. Para consultar una lista de
acciones y el ARN a especificar para conceder o denegar permisos para ejecutar cada acción, visite
Permisos de la API de CloudFront: referencia de acciones, recursos y condiciones (p. 510).

Titularidad de los recursos


Una cuenta de AWS es la propietaria de los recursos que se crean en ella, independientemente de quién
los 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, esta cuenta
será la propietaria de la distribución.
• Si crea un usuario de IAM en su cuenta de AWS y concede permisos para crear una distribución para
ese usuario, el usuario puede crear una distribución. La cuenta de AWS que creó el usuario es la
propietaria de la distribución.
• Si crea un rol de IAM en su cuenta de AWS con permisos para crear una distribución, cualquier persona
que pueda asumir el rol podrá crear una distribución. Sin embargo, la propietaria de la distribución será
su cuenta de AWS, a la que pertenece el rol.

Administración del acceso a los recursos


Una política de permisos especifica quién tiene acceso a qué. En esta sección se explican las opciones
para crear políticas de permisos para CloudFront. Para obtener más información sobre la sintaxis y
descripciones de las políticas de IAM, consulte la Referencia de políticas de AWS IAM en la Guía del
usuario de IAM.

Las políticas asociadas a una identidad de IAM se denominan "políticas basadas en identidad" (políticas
de IAM) y las políticas asociadas a un recurso se denominan "políticas basadas en recursos". CloudFront

501
Amazon CloudFront Guía para desarrolladores
Información general sobre la administración de acceso

no admite políticas basadas en recursos, pero sí admite políticas de nivel de recursos. Para obtener más
información acerca de los tipos de políticas de permisos que admite CloudFront, consulte Administración
del acceso a los recursos (p. 501).

Temas
• Políticas basadas en identidad (políticas de IAM) (p. 502)
• Políticas de nivel de recursos (p. 503)
• Políticas basadas en etiquetas (p. 503)

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 cuenta


puede utilizar una política de permisos asociada a un usuario determinado para concederle permisos
para crear una distribución.
• Asociar una política de permisos a un rol (conceder permisos entre cuentas): puede conceder permisos
para realizar acciones de CloudFront a un usuario que haya sido creado en otra cuenta de AWS. Para
ello, asocie una política de permisos a un rol de IAM y, a continuación, permita al usuario de la otra
cuenta asumir el rol. En el siguiente ejemplo se explica cómo funciona este proceso para dos cuentas de
AWS, 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 entidad 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 recursos
de la cuenta A.

Para obtener más información acerca de cómo delegar permisos a usuarios de otra cuenta de AWS,
consulte Administración de acceso en la Guía del usuario de IAM.

La siguiente política de ejemplo permite un usuario realizar la acción CreateDistribution para crear
una distribución de forma programada para su cuenta de AWS:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudfront:CreateDistribution"
],
"Resource":"*"
}
]
}

Para obtener información acerca de los permisos necesarios para llevar a cabo operaciones desde la
consola de CloudFront, consulte Permisos necesarios para utilizar la consola de CloudFront (p. 506).
Para obtener más información acerca de cómo asociar políticas a identidades de CloudFront, consulte
Usar políticas basadas en identidad (políticas de IAM) para CloudFront (p. 505). Para obtener más
información sobre usuarios, grupos, roles y permisos, consulte Identidades (usuarios, grupos y roles) en la
Guía del usuario de IAM.

502
Amazon CloudFront Guía para desarrolladores
Información general sobre la administración de acceso

Políticas de nivel de recursos


En algunos casos, es posible que desee conceder un nivel específico de acceso a un recurso determinado;
por ejemplo, acceso solo para realizar ciertas acciones con dicho recurso. Algunos servicios de AWS lo
implementan permitiéndole asociar directamente una política al recurso. Por ejemplo, así es como Amazon
S3 y Elasticsearch implementan el control de acceso a recursos. CloudFront ofrece la misma flexibilidad,
pero utiliza un método diferente. En lugar de asociar una política a un recurso, se especifica el recurso en
una política.

Por ejemplo, la siguiente política muestra cómo puede permitir el acceso de actualización, eliminación y
creación de invalidaciones a una distribución que especifique mediante su ARN. Esta política concede los
permisos necesarios para llevar a cabo estas acciones únicamente desde la API de AWS o la CLI de AWS.
(Para utilizar esta política, sustituya el texto en cursiva de la política de ejemplo por la información de su
recurso).

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"cloudfront:CreateDistribution",
"cloudfront:Get*",
"cloudfront:List*"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"cloudfront:UpdateDistribution",
"cloudfront:DeleteDistribution",
"cloudfront:CreateInvalidation",

],
"Resource": "arn:aws:cloudfront::123456789012:distribution/EDFDVBD6EXAMPLE"
}
]
}

Políticas basadas en etiquetas


Al diseñar políticas de IAM, es posible establecer permisos pormenorizados mediante la concesión de
acceso a recursos específicos. A medida que crezca la cantidad de recursos que administra, esta tarea
será más complicada. El etiquetado de recursos y uso de etiquetas en las condiciones de declaración
de política pueden facilitar esta tarea. Puede conceder acceso de forma masiva a cualquier recurso con
una determinada etiqueta. A continuación, aplique repetidamente esta etiqueta a los recursos pertinentes
durante la creación o después.
Note
El uso de etiquetas en las condiciones es una manera de controlar el acceso a los recursos y las
solicitudes. Para obtener información sobre el etiquetado en CloudFront, consulte Etiquetado de
distribuciones de Amazon CloudFront (p. 72).

Las etiquetas se pueden asociar al recurso o pasarse dentro de la solicitud a los servicios que admiten
etiquetado. En CloudFront, los recursos pueden tener etiquetas y algunas acciones pueden incluir
etiquetas. Al crear una política de IAM, puede utilizar las claves de condición de etiqueta para controlar:

503
Amazon CloudFront Guía para desarrolladores
Información general sobre la administración de acceso

• Qué usuarios pueden realizar acciones en una distribución, en función de las etiquetas que tiene.
• Las etiquetas que se pueden pasar en la solicitud de una acción.
• Si se pueden utilizar claves de etiqueta específicas en una solicitud.

Para conocer la sintaxis y la semántica completa de las claves de condición de las etiquetas, consulte
Control del acceso mediante etiquetas de IAM en la Guía del usuario de IAM.

Por ejemplo, la política de usuario administrada AWSCloudFrontFullAccess proporciona a los


usuarios permisos sin restricciones para realizar cualquier acción de CloudFront en cualquier recurso. La
política siguiente restringe esta posibilidad y deniega a los usuarios no autorizados el permiso para crear
distribuciones de producción de CloudFront.

Para implementar la restricción mediante etiquetas, deniega la acción CreateDistribution si la


solicitud especifica una etiqueta denominada stage con el valor gamma o prod. Además, la política
impide que estos usuarios no autorizados manipulen la fase de los entornos de producción no permitiendo
acciones de modificación de etiquetas para incluir estos mismos valores de etiqueta o para eliminar la
etiqueta stage completamente. El administrador de un cliente debe asociar esta política de IAM a los
usuarios de IAM no autorizados, además de la política de usuario administrada.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"cloudfront:CreateDistribution",
"cloudfront:TagResource"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestTag/stage": [
"gamma",
"prod"
]
}
}
},
{
"Effect": "Deny",
"Action": [
"cloudfront:TagResource",
"cloudfront:UntagResource"
],
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"aws:TagKeys": [
"stage"
]
},
"StringEquals": {
"aws:ResourceTag/stage": [
"gamma",
"prod"
]
}
}
}
]
}

504
Amazon CloudFront Guía para desarrolladores
Uso de políticas de IAM para CloudFront

Especificar elementos de políticas: recursos, acciones, efectos y


entidades principales
CloudFront incluye acciones de API (consulte Referencia de la API de Amazon CloudFront) que puede
utilizar en cada recurso de CloudFront (consulte ARN de recursos de CloudFront (p. 501)). Puede
conceder a un usuario 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 la
política. Para obtener más información, consulte ARN de recursos de CloudFront (p. 501).
• Acción: utilice palabras clave de acción para identificar las operaciones del recurso que desea
permitir o denegar. Por ejemplo, en función del elemento Effect especificado, el permiso
cloudfront:CreateDistribution permite o deniega los permisos de usuario para realizar la acción
CreateDistribution de CloudFront.
• Efecto: especifique el efecto (permitir o denegar) cuando un usuario intente realizar la acción en el
recurso especificado. Si no concede acceso de forma explícita a una acción, el acceso se deniega
implícitamente. También puede denegar explícitamente el acceso a un recurso para asegurarse de que
un usuario no pueda obtener acceso a él, aunque otra política le conceda acceso.
• Entidad principal: en las políticas basadas en identidades (políticas de IAM), el usuario al que se asocia
esta política es la entidad principal implícita. Para las políticas basadas en recursos, debe especificar el
usuario, la cuenta, el servicio u otra entidad que desee que reciba permisos (se aplica solo a las políticas
basadas en recursos).

CloudFront no admite políticas basadas en recursos, pero sí admite políticas de nivel de recursos. Para
obtener más información acerca de los tipos de políticas de permisos que admite CloudFront, consulte
Administración del acceso a los recursos (p. 501).

Para obtener más información sobre la sintaxis y descripciones de las políticas de IAM, consulte la
Referencia de políticas de AWS IAM en la Guía del usuario de IAM.

Para ver una lista con todas las operaciones de la API de CloudFront y los recursos a los que
son aplicables, consulte Permisos de la API de CloudFront: referencia de acciones, recursos y
condiciones (p. 510).

Especificación de las condiciones de una política


Al conceder permisos, puede utilizar el lenguaje de la política de IAM para especificar las condiciones en
las que se debe aplicar una política. Por ejemplo, es posible que desee que solo se aplique una política
después de una fecha específica. Para obtener más información sobre cómo especificar condiciones en un
lenguaje 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ón
específicas para CloudFront. No obstante, existen claves de condición que se aplican a todo AWS que
puede utilizar cuando corresponda. Para ver una lista completa de claves generales de AWS, consulte
Claves disponibles para las condiciones en la Guía del usuario de IAM.

Usar políticas basadas en identidad (políticas de IAM)


para CloudFront
En este tema se ofrecen ejemplos de políticas basadas en identidad que muestran cómo un administrador
de una cuenta puede asociar políticas de permisos a identidades de IAM (es decir, usuarios, grupos y
roles) y, de ese modo, conceder permisos para realizar operaciones en recursos de CloudFront.

505
Amazon CloudFront Guía para desarrolladores
Uso de políticas de IAM para CloudFront

Important

Le recomendamos que consulte primero los temas de introducción en los que se explican los
conceptos básicos y las opciones disponibles para administrar el acceso a sus recursos de
CloudFront. Para obtener más información, consulte Introducción a la administración de permisos
de acceso para sus recursos de CloudFront (p. 500).

Temas
• Permisos necesarios para utilizar la consola de CloudFront (p. 506)
• Políticas administradas por AWS (predefinidas) para CloudFront (p. 508)
• Ejemplos de políticas administradas por el cliente (p. 508)

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, que son suficientes para
acceder a CloudFront mediante programación. Si utiliza la consola para acceder a CloudFront, consulte
Permisos necesarios para utilizar la consola de CloudFront (p. 506).

Para consultar una lista de acciones y el ARN a especificar para conceder o denegar permisos para
ejecutar cada acción, visite Permisos de la API de CloudFront: referencia de acciones, recursos y
condiciones (p. 510).

Permisos necesarios para utilizar la consola de CloudFront


Para conceder acceso completo a la consola de CloudFront, debe conceder los permisos en la siguiente
política de 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"
],
"Resource":"*"
},

506
Amazon CloudFront Guía para desarrolladores
Uso de políticas de IAM para CloudFront

{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets",
"s3:PutBucketPolicy"
],
"Resource":"arn:aws:s3:::*"
}
]
}

Aquí se explica por qué son necesarios los permisos:

acm:ListCertificates

Al crear y actualizar distribuciones desde la consola de CloudFront, si desea configurar CloudFront


para que requiera HTTPS entre el lector 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 utiliza 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én


sns:ListSubscriptionsByTopic y sns:ListTopics.

Estos permisos no son necesarios si no utiliza la consola de CloudFront.


cloudwatch:GetMetricStatistics

Permite a CloudFront representar las métricas de CloudWatch en la consola de CloudFront.

Este permiso no es necesario si no utiliza la consola de CloudFront.


elasticloadbalancing:DescribeLoadBalancers

Al crear y actualizar las distribuciones, le permite ver una lista de balanceadores de carga Elastic Load
Balancing en la lista de orígenes disponibles.

Este permiso no es necesario si no utiliza la consola de CloudFront.


iam:ListServerCertificates

Al crear y actualizar distribuciones desde la consola de CloudFront, si desea configurar CloudFront


para que requiera HTTPS entre el lector 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 utiliza la consola de CloudFront.


s3:ListAllMyBuckets

Al crear y actualizar las distribuciones, 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 utiliza la consola de CloudFront.


S3:PutBucketPolicy

Al crear o actualizar distribuciones que restringen el acceso a buckets de S3, le permite a un


usuario actualizar la política del bucket para conceder acceso a la identidad de acceso de origen de

507
Amazon CloudFront Guía para desarrolladores
Uso de políticas de IAM para CloudFront

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

Este permiso no es necesario si no utiliza la consola de CloudFront.


sns:ListSubscriptionsByTopic y sns:ListTopics

Cuando crea alarmas de CloudWatch en la consola de CloudFront, le permite elegir un tema de SNS
para las notificaciones.

Estos permisos no son necesarios si no utiliza 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 utiliza la consola de CloudFront.

Políticas administradas por AWS (predefinidas) para CloudFront


AWS aborda muchos casos de uso comunes proporcionando políticas de IAM independientes creadas
y administradas por AWS. Estas políticas administradas por AWS conceden los permisos necesarios
para casos de uso comunes, lo que le evita tener que investigar los permisos que se necesitan. Para
obtener más información, consulte Políticas administradas de AWS en la Guía del usuario de IAM. Para
CloudFront, IAM proporciona 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 permisos
adicionales. Para obtener más información, consulte Permisos necesarios para configurar el
registro estándar y el acceso a los archivos de registro (p. 465).
• CloudFrontReadOnlyAccess: concede acceso de solo lectura a los recursos de CloudFront.

Note

Para consultar estas políticas de permisos, inicie sesión en la consola de IAM y busque las
políticas específicas. También puede crear sus propias políticas de IAM personalizadas con el fin
de conceder permisos para realizar operaciones de la API de CloudFront. Puede asociar estas
políticas personalizadas a los usuarios o grupos de IAM que requieran esos permisos.

Ejemplos de políticas administradas por el cliente


Puede crear sus propias políticas de IAM personalizadas con el fin de conceder permisos para realizar
acciones de la API de CloudFront. Puede asociar estas políticas personalizadas a los usuarios o grupos
de IAM que requieran los permisos especificados. Estas políticas funcionan cuando se utiliza la API
de CloudFront, los SDK de AWS o la CLI de AWS. A continuación se muestran algunos ejemplos de
permisos en algunos casos de uso comunes. Para obtener más información acerca de la política que
concede acceso total a los usuarios de CloudFront, consulte Permisos necesarios para utilizar la consola
de CloudFront (p. 506).

Ejemplos
• Ejemplo 1: permitir acceso de lectura a todas las distribuciones (p. 509)
• Ejemplo 2: Creación, actualización y eliminación de distribuciones (p. 509)
• Ejemplo 3: Permitir crear y publicar invalidaciones (p. 510)

508
Amazon CloudFront Guía para desarrolladores
Uso de políticas de IAM para CloudFront

Ejemplo 1: permitir acceso de lectura a todas las distribuciones


La siguiente política de permisos concede al usuario permisos para ver todas las distribuciones en la
consola 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: Creación, actualización y eliminación de distribuciones


La siguiente política de permisos permite a los usuarios crear, actualizar y eliminar distribuciones a travé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",
"iam:ListServerCertificates",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"waf:GetWebACL",
"waf:ListWebACLs"
],
"Resource":"*"
},

509
Amazon CloudFront Guía para desarrolladores
Referencia de permisos de la API de CloudFront

{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets",
"s3:PutBucketPolicy"
],
"Resource":"arn:aws:s3:::*"
}
]
}

cloudfront:ListCloudFrontOriginAccessIdentities permite a los usuarios conceder permiso


automáticamente a una identidad de acceso de origen existente para obtener acceso a objetos en un
bucket de Amazon S3. Si desea que los usuarios puedan crear identidades de acceso de origen, también
es necesario conceder el permiso cloudfront:CreateCloudFrontOriginAccessIdentity.

Ejemplo 3: Permitir crear y publicar invalidaciones


La 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:GetStreamingDistribution",
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions",
"cloudfront:ListCloudFrontOriginAccessIdentities",
"cloudfront:CreateInvalidation",
"cloudfront:GetInvalidation",
"cloudfront:ListInvalidations",
"elasticloadbalancing:DescribeLoadBalancers",
"iam:ListServerCertificates",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"waf:GetWebACL",
"waf:ListWebACLs"
],
"Resource":"*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets"
],
"Resource":"arn:aws:s3:::*"
}
]
}

Permisos de la API de CloudFront: referencia de


acciones, recursos y condiciones
Al configurar Control de acceso (p. 500) y escribir una política de permisos que se pueda asociar a una
identidad de IAM (políticas basadas en identidad), puede utilizar las siguientes listas como referencia.

510
Amazon CloudFront Guía para desarrolladores
Referencia de permisos de la API de CloudFront

La lista incluye cada operación de la API de CloudFront, las acciones correspondientes a las que puede
conceder permisos para realizar la acción y el recurso de AWS al que puede conceder los permisos. Las
acciones se especifican en el campo Action de la política y el valor del recurso se especifica en el campo
Resource de la política.

Puede utilizar claves de condición generales de AWS en sus políticas de CloudFront para expresar
condiciones. Para ver una lista completa de claves generales de AWS, consulte Claves disponibles en la
Guía del usuario de IAM.

Temas
• Permisos necesarios para realizar acciones en distribuciones (p. 511)
• Permisos necesarios para realizar acciones en las invalidaciones (p. 512)
• Permisos necesarios para acciones en identidades de acceso de origen (p. 513)
• Permisos necesarios para acciones de CloudFront relacionadas con Lambda@Edge (p. 513)
• Permisos necesarios para realizar acciones en etiquetas (p. 514)

Permisos necesarios para realizar acciones en distribuciones


CreateDistribution

Permisos necesarios (acción de la API):


• cloudfront:CreateDistribution
• acm:ListCertificates (solo en la 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 en la 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.

511
Amazon CloudFront Guía para desarrolladores
Referencia de permisos de la API de CloudFront

GetDistribution

Permisos requeridos (Acción de API): cloudfront:GetDistribution, acm:ListCertificates


(solo en la consola de CloudFront)

Recursos: *
GetDistributionConfig

Permisos requeridos (acción de API): cloudfront:GetDistributionConfig,


acm:ListCertificates (solo en la 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 en la 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 en las invalidaciones


CreateInvalidation

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

512
Amazon CloudFront Guía para desarrolladores
Referencia de permisos de la API de CloudFront

Permisos necesarios para acciones en identidades de acceso de


origen
CreateCloudFrontOriginAccessIdentity

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

Recursos: *
UpdateCloudFrontOriginAccessIdentity

Permisos necesarios (acción de la API):


cloudfront:UpdateCloudFrontOriginAccessIdentity

Recursos: *
DeleteCloudFrontOriginAccessIdentity

Permisos necesarios (acción de la API):


cloudfront:DeleteCloudFrontOriginAccessIdentity

Recursos: *

Permisos necesarios para acciones de CloudFront relacionadas


con Lambda@Edge
Para utilizar Lambda@Edge, necesita los siguientes permisos de CloudFront, que le permitirán crear o
actualizar una distribución que incluya desencadenadores de funciones Lambda.

CreateDistribution

Permisos necesarios (acción de la API):


• cloudfront:CreateDistribution
• acm:ListCertificates (solo en la 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.

513
Amazon CloudFront Guía para desarrolladores
Referencia de permisos de la API de CloudFront

Recursos:
• CloudFront: *
• ACM: *
• Amazon S3: si configura CloudFront para guardar los registros de acceso, tiene la opción de
restringir el acceso a un bucket especificado.
CreateDistributionWithTags

Permisos necesarios (acción de la API):


• cloudfront:CreateDistribution, cloudfront:TagResource
• acm:ListCertificates (solo en la 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 en la 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.

Permisos necesarios para realizar acciones en etiquetas


TagResource

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

514
Amazon CloudFront Guía para desarrolladores
Registro y monitorización

Recursos: *

Registro y monitoreo en Amazon CloudFront


El monitoreo es una parte importante del mantenimiento de la disponibilidad y el rendimiento de CloudFront
y sus soluciones de AWS. Debe recopilar datos de monitorización de todas las partes de su solución de
AWS para que le resulte más sencillo depurar un error que se produce en distintas partes del código, en
caso de que ocurra. AWS proporciona varias herramientas para monitorear sus recursos de CloudFront y
responder a posibles incidentes:

Alarmas de Amazon CloudWatch

Las alarmas de Amazon CloudWatch le permiten ver una sola métrica durante el período de tiempo
que especifique. Si la métrica supera un umbral determinado, se envía una notificación a un tema
de Amazon SNS o a una política de AWS Auto Scaling. Las alarmas de CloudWatch no invocan
acciones cuando una métrica se encuentra en un estado determinado. En su lugar, el estado debe
haber cambiado y debe mantenerse durante el número de periodos especificado. Para obtener más
información, consulte Monitoreo de CloudFront con Amazon CloudWatch (p. 452).
Registros de AWS CloudTrail

Cloudtrail proporciona un registro de las medidas adoptadas por un usuario, un rol o un servicio de
AWS en CloudFront. Mediante la información recopilada por CloudTrail, puede determinar la solicitud
que se realizó a CloudFront, la dirección IP desde la que se realizó, quién la realizó y cuándo, etc.
Para obtener más información, consulte Uso de AWS CloudTrail para capturar solicitudes enviadas a
la API de CloudFront (p. 488).
Registros de acceso CloudFront

Los registros de acceso del servidor proporcionan registros detallados sobre las solicitudes que
se realizan a una distribución. Los registros de acceso al servidor resultan útiles para muchas
aplicaciones. Por ejemplo, la información del registro de acceso puede ser útil en auditorías de acceso
y seguridad. Para obtener más información, consulte Configuración y uso de registros estándar
(registros de acceso) (p. 463).
Informes de la consola de CloudFront

La consola de CloudFront incluye una serie de informes, incluido el informe de estadísticas de caché,
el informe de objetos populares y el informe de remitentes principales. La mayoría de los informes
de la consola de CloudFront se basan en los datos de los registros de acceso de CloudFront, que
contienen información detallada sobre cada solicitud de usuario que CloudFront recibe. No obstante,
no es necesario habilitar los registros de acceso para ver los informes. Para obtener más información,
consulte Informes de CloudFront en la consola (p. 426).

Validación de conformidad para Amazon


CloudFront
Hay auditores de terceros que evalúan la seguridad y la conformidad de Amazon CloudFront en distintos
programas de conformidad de AWS. Esto incluye SOC, PCI, HIPAA y otros.

Para obtener una lista de los servicios de AWS en el ámbito de programas de conformidad específicos,
consulte Servicios de AWS en el ámbito del programa de conformidad. Para obtener información general,
consulte AWS Compliance Programs (Programas de conformidad de AWS).

Puede descargar los informes de auditoría de terceros utilizando AWS Artifact. Para obtener más
información, consulte Descarga de informes en AWS Artifact.

515
Amazon CloudFront Guía para desarrolladores
Prácticas recomendadas de conformidad de CloudFront

Su responsabilidad de conformidad al utilizar CloudFront se determina en función de la confidencialidad


de los datos, los objetivos de conformidad de su empresa, así como de la legislación y los reglamentos
aplicables. AWS proporciona los siguientes recursos para ayudar con la conformidad:

• Guías de inicio rápido de seguridad y conformidad: estas guías de implementación tratan


consideraciones sobre arquitectura y ofrecen pasos para implementar los entornos de referencia
centrados en la seguridad y la conformidad en AWS.
• Documento técnico sobre cómo diseñar arquitecturas que cumplan los requisitos de seguridad y
conformidad de HIPAA: en este documento técnico, se explica cómo las empresas pueden utilizar AWS
para crear aplicaciones conformes con HIPAA.

El programa de AWS de conformidad con HIPAA incluye CloudFront como un servicio válido de HIPAA.
Si ha firmado un anexo para socios empresariales (BAA) con AWS, puede utilizar CloudFront para
entregar contenido que incluya información sanitaria protegida (PHI). Para obtener más información,
consulte Conformidad con HIPAA.
• Recursos de conformidad de AWS: es posible que este conjunto de guías y libros de ejercicios se
apliquen a su sector y ubicación.
• AWS Config: este servicio de AWS evalúa cómo las configuraciones de los recursos cumplen con las
prácticas internas, las pautas del sector y las regulaciones.
• AWS Security Hub: este servicio de AWS ofrece una perspectiva integral acerca de su estado de
seguridad dentro de AWS que ayuda a verificar la conformidad con los estándares de seguridad del
sector y las prácticas recomendadas.

Prácticas recomendadas de conformidad de


CloudFront
En esta sección se ofrecen prácticas recomendadas y recomendaciones sobre conformidad cuando se
utiliza Amazon CloudFront para servir contenido.

Si ejecuta cargas de trabajo conformes con HIPAA o PCI que se basan en el Modelo de responsabilidad
compartida de AWS, le recomendamos que registre los datos de uso de CloudFront de los últimos 365 días
para posibles auditorías futuras. Para registrar datos de uso, puede hacer lo siguiente:

• Habilitar registros de acceso de CloudFront Para obtener más información, consulte Configuración y uso
de registros estándar (registros de acceso) (p. 463).
• Capture las solicitudes que se envían a la API de CloudFront. Para obtener más información, consulte
Uso de AWS CloudTrail para capturar solicitudes enviadas a la API de CloudFront (p. 488).

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

PCI DSS
CloudFront admite el procesamiento, el almacenamiento y la transmisión de datos de tarjetas de crédito
por parte de un comerciante o proveedor de servicios, y se ha validado como conforme con el Estándar de
Seguridad de los Datos de la Industria de las Tarjetas de Pago (DSS PCI). Para obtener más información
acerca de PCI DSS y sobre cómo solicitar una copia del Paquete de conformidad con PCI de AWS,
consulte PCI DSS Nivel 1.

Como práctica recomendada de seguridad, le recomendamos que no almacene información de la tarjeta


de crédito en las cachés perimetrales de CloudFront. Por ejemplo, puede configurar el origen para que
incluya un encabezado Cache-Control:no-cache="field-name" en las respuestas que contengan
información de la tarjeta de crédito, como por ejemplo, los últimos cuatro dígitos de un número de tarjeta
de crédito y la información de contacto del titular de la tarjeta.

516
Amazon CloudFront Guía para desarrolladores
Resiliencia

Sistema de AWS y controles de organización


CloudFront cumple con las medidas de Controles del Sistema y Organizaciones (System and Organization
Control, SOC), incluidos SOC 1, SOC 2, y SOC 3. Los informes SOC son informes de análisis
independientes de terceros que muestran cómo AWS logra los controles y objetivos clave de conformidad.
Estas auditorías garantizan que contamos con los mecanismos de seguridad y los procedimientos
adecuados para protegernos frente a los riesgos que puedan afectar a la seguridad, la confidencialidad y
la disponibilidad de los datos de clientes y negocios. Los resultados de estas auditorías de terceros están
disponibles en el sitio web de conformidad de SOC de AWS, donde los clientes pueden ver los informes
publicados para obtener más información acerca de los controles que respaldan las operaciones y la
conformidad de AWS.

Resiliencia de Amazon CloudFront


La infraestructura global de AWS está conformada por regiones y zonas de disponibilidad de AWS. Las
regiones de AWS proporcionan varias zonas de disponibilidad físicamente independientes y aisladas
que se encuentran conectadas mediante redes con un alto nivel de rendimiento y redundancia, además
de baja latencia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datos
que realizan una conmutación por error automática entre zonas de disponibilidad sin interrupciones. Las
zonas de disponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las
infraestructuras tradicionales de centros de datos únicos o múltiples.

Para obtener más información sobre las zonas de disponibilidad y las regiones de AWS, consulte
Infraestructura global de AWS.

Conmutación por error de CloudFront


Además de la compatibilidad con la infraestructura global de AWS, Amazon CloudFront ofrece una función
de conmutación por error en el origen para ayudar a satisfacer sus necesidades de resiliencia de datos.
CloudFront es un servicio global que proporciona su contenido a través de una red mundial de centros
de datos denominada ubicaciones de borde o puntos de presencia (POP). Si el contenido aún no se
ha almacenado en la caché en una ubicación de borde, CloudFront lo recupera de un origen que haya
identificado como origen para la versión definitiva del contenido.

Puede mejorar la resiliencia y aumentar la disponibilidad para situaciones específicas configurando


CloudFront con la conmutación por error en el origen. Para empezar, cree un grupo de orígenes en el
que designe un origen principal para CloudFront además de un segundo origen. CloudFront cambia
automáticamente al segundo origen cuando el origen principal devuelve respuestas de error de código de
estado HTTP específicas. Para obtener más información, consulte Optimización de alta disponibilidad con
conmutación por error de origen de CloudFront (p. 263).

Seguridad de la infraestructura en Amazon


CloudFront
Al tratarse de un servicio administrado, Amazon CloudFront está protegido por los procedimientos de
seguridad de red globales de AWS, que se describen en el documento técnico Amazon Web Services:
Información general sobre procesos de seguridad.

Puede utilizar llamadas a la API publicadas de AWS para obtener acceso a CloudFront a través de la
red. Los clientes deben ser compatibles con Transport Layer Security (TLS) 1.0 o una versión posterior.
Le recomendamos TLS 1.2 o una versión posterior. Los clientes también deben ser compatibles con

517
Amazon CloudFront Guía para desarrolladores
Seguridad de la infraestructura

conjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE)
o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La mayoría de los sistemas modernos como Java 7
y posteriores son compatibles con estos modos. Además, las solicitudes deben estar firmadas mediante
un ID de clave de acceso y una clave de acceso secreta que esté asociada a una entidad principal de
IAM. También puede utilizar AWS Security Token Service (AWS STS) si desea generar credenciales de
seguridad temporales para firmar solicitudes.

518
Amazon CloudFront Guía para desarrolladores
Cuotas generales

Cuotas
CloudFront está supeditado a las siguientes cuotas (anteriormente denominadas límites). Tenga en
cuenta que Lambda@Edge también tiene cuotas específicas, además de las cuotas predeterminadas de
CloudFront.

Temas
• Cuotas generales (p. 519)
• Cuotas generales de distribuciones (p. 519)
• Cuotas generales sobre políticas (p. 520)
• Cuotas de conexiones WebSocket (p. 521)
• Cuotas en las cookies de la lista blanca (p. 522)
• Cuotas de cadenas de consulta incluidas en la lista blanca (solo para distribuciones web) (p. 522)
• Cuotas en encabezados personalizados (p. 522)
• Cuotas en certificados SSL (p. 523)
• Cuotas de invalidaciones (p. 523)
• Cuotas en grupos de claves (p. 523)
• Cuotas de cifrado en el nivel de campo (p. 524)
• Cuotas de Lambda@Edge (p. 524)
• Tiempo de espera de la solicitud (p. 526)

Cuotas generales
Entidad Cuota predeterminada

Tasa de transferencia de datos por distribución 150 Gbps

Solicitar una ampliación


de la cuota

Solicitudes por segundo por distribución 250.000

Solicitar una ampliación


de la cuota

Etiquetas que se pueden agregar a una distribución 50

Archivos que puede ofrecer por distribución Sin cuota

La longitud máxima es de una solicitud, incluidos los encabezados y las 20 480 bytes
cadenas de consulta, pero sin incluir el contenido del cuerpo

Longitud máxima de una URL 8192 bytes

Cuotas generales de distribuciones


Entidad Cuota predeterminada

Distribuciones por cuenta de AWS 200

519
Amazon CloudFront Guía para desarrolladores
Cuotas generales sobre políticas

Entidad Cuota predeterminada


Para obtener más información, consulte Creación de una distribución (p. 42). Solicitar una ampliación
de la cuota

Tamaño máximo de archivo para solicitudes HTTP GET, POST y PUT 20 GB

Tiempo de espera de respuesta por origen 1-60 segundos

Para obtener más información, consulte Tiempo de espera de respuesta del Solicitar una ampliación
origen (p. 51). de la cuota

Tiempo de espera de conexión por origen 1-10 segundos

Para obtener más información, consulte Tiempo de espera de conexión de


origen (p. 48).

Intentos de conexión por origen 1-3

Para obtener más información, consulte Intentos de conexión de


origen (p. 48).

Compresión de archivos: intervalo de tamaños de archivos que CloudFront 1 000 a 10 000 000
comprime bytes

Para obtener más información, consulte Ofrecer archivos


comprimidos (p. 128).

Nombres de dominio alternativos (CNAME) por distribución 100

Para obtener más información, consulte Uso de URL personalizadas para Solicitar una ampliación
archivos añadiendo nombres de dominio alternativos (CNAME) (p. 80). de la cuota

Orígenes por distribución 25

Solicitar una ampliación


de la cuota

Grupos de origen por distribución 10

Solicitar una ampliación


de la cuota

Identidades de acceso de origen por cuenta 100

Solicitar una ampliación


de la cuota

Comportamientos de la caché por distribución 25

Solicitar una ampliación


de la cuota

Cuotas generales sobre políticas


Entidad Cuota predeterminada

Políticas de caché por cuenta de AWS 20

520
Amazon CloudFront Guía para desarrolladores
Cuotas de conexiones WebSocket

Entidad Cuota predeterminada

Distribuciones asociadas con la misma política de caché 100

Cadenas de consulta por política de caché 10

Solicitar una ampliación


de la cuota

Encabezados por política de caché 10

Solicitar una ampliación


de la cuota

Cookies por política de caché 10

Solicitar una ampliación


de la cuota

Políticas de solicitud de origen por cuenta de AWS 20

Distribuciones asociadas con la misma política de solicitud de origen 100

Cadenas de consulta por política de solicitud de origen 10

Solicitar una ampliación


de la cuota

Encabezados por política de solicitud de origen 10

Solicitar una ampliación


de la cuota

Cookies por política de solicitud de origen 10

Solicitar una ampliación


de la cuota

Cuotas de conexiones WebSocket


Entidad Cuota predeterminada

Tiempo de espera de respuesta de origen (tiempo de espera de inactividad) 10 minutos

Si CloudFront no ha
detectado ningún
byte enviado desde
el origen al cliente en
los últimos 10 minutos,
se presupone que la
conexión esta inactiva y
se cierra.

521
Amazon CloudFront Guía para desarrolladores
Cuotas en las cookies de la lista blanca

Cuotas en las cookies de la lista blanca


Entidad Cuota predeterminada

Cookies en lista blanca por comportamiento de la caché 10

Para obtener más información, consulte Almacenamiento en caché de Solicitar una ampliación
contenido en función de cookies (p. 277). de la cuota

Cantidad total de bytes en nombres de cookies incluidos en listas blancas (no 512 menos la cantidad
es aplicable si configura CloudFront para reenviar todas las cookies al origen) de cookies incluidas en
listas blancas

Cuotas de cadenas de consulta incluidas en la lista


blanca (solo para distribuciones web)
Entidad Cuota predeterminada

Número máximo de caracteres en una cadena de consulta de lista blanca 128 caracteres

Número máximo de caracteres en total para todas las cadenas de consulta de 512 caracteres
lista blanca en el mismo parámetro

Comportamiento de las cadenas de consulta de lista blanca por caché 10

Para obtener más información, consulte Almacenamiento en caché de Solicitar una ampliación
contenido en función de parámetros de cadenas de consulta (p. 274). de la cuota

Cuotas en encabezados personalizados


Entidad Cuota predeterminada

Encabezados en lista blanca por comportamiento de la caché 10

Para obtener más información, consulte Almacenamiento en caché de Solicitar una ampliación
contenido en función de encabezados de solicitud (p. 280). de la cuota

Encabezados personalizados: cantidad máxima de encabezados 10 pares nombre-valor


personalizados que puede configurar en CloudFront para que el servicio los
agregue a solicitudes de origen Solicitar una ampliación
de la cuota
Para obtener más información, consulte Agregar encabezados personalizados
a solicitudes de origen (p. 319).

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 y 10,240 caracteres


valores de encabezados combinados

522
Amazon CloudFront Guía para desarrolladores
Cuotas en certificados SSL

Cuotas en certificados SSL


Entidad Cuota predeterminada

Certificados SSL por cuenta de AWS cuando las solicitudes HTTPS se 2


distribuyen mediante direcciones IP dedicadas (sin cuota si las solicitudes
HTTPS se distribuyen mediante SNI) Solicitar una ampliación
de la cuota
Para obtener más información, consulte Uso de HTTPS con
CloudFront (p. 138).

Certificados SSL que pueden asociarse a una distribución de CloudFront 1

Cuotas de invalidaciones
Entidad Cuota predeterminada

Invalidación de archivos: cantidad máxima de archivos permitidos en 3000


solicitudes de invalidación activas, excepto invalidaciones comodín

Para obtener más información, consulte Invalidar archivos (p. 121).

Invalidación de archivos: cantidad máxima de anulaciones comodín activas 15


permitidas

Invalidación de archivos: cantidad máxima de archivos que puede procesar Sin cuota
una invalidación comodín

Cuotas en grupos de claves


Entidad Cuota predeterminada

Claves públicas en un solo grupo de claves 5

Solicitar una ampliación


de la cuota

Grupos de claves asociados con un solo comportamiento de la caché 4


Solicitar una ampliación
de la cuota

Grupos de claves por cuenta de AWS 10


Solicitar una ampliación
de la cuota

Distribuciones asociadas con un solo grupo de claves 100


Solicitar una ampliación
de la cuota

523
Amazon CloudFront Guía para desarrolladores
Cuotas de cifrado en el nivel de campo

Cuotas de cifrado en el nivel de campo


Entidad Cuota predeterminada

Longitud máxima del campo que se va a cifrar 16 KB

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

Número máximo de campos en un cuerpo de la solicitud cuando está 10


configurado el cifrado en el nivel de campo

Longitud máxima de un cuerpo de la solicitud cuando está configurado el 1 MB


cifrado en el nivel de campo

Número máximo de configuraciones de cifrado en el nivel de campo que 10


pueden asociarse a una cuenta de AWS

Número máximo de perfiles de cifrado en el nivel de campo que pueden 10


asociarse a una cuenta de AWS

Número máximo de claves públicas que se pueden agregar a una cuenta de 10


AWS

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


configuración de cifrado en el nivel de campo

Número máximo de asignaciones de perfil del argumento de consulta que se 5


pueden incluir en una configuración de cifrado en el nivel de campo

Cuotas de Lambda@Edge
Las cuotas de esta sección se aplican a Lambda@Edge. Estas cuotas se suman a las cuotas
predeterminadas de CloudFront y Lambda, que también se aplican. Para conocer las cuotas
predeterminadas, consulte Cuotas (p. 519) en esta guía y Cuotas en la Guía para desarrolladores de
AWS Lambda.
Note

Lambda escala dinámicamente la capacidad en respuesta al aumento del tráfico, según las cuotas
de la cuenta. Para obtener más información, consulte Escalado de funciones en la Guía para
desarrolladores de AWS Lambda.

Además, tenga en cuenta que existen algunas otras restricciones al utilizar las funciones de
Lambda@Edge. Para obtener más información, consulte Requisitos y restricciones en funciones de
Lambda (p. 414).

524
Amazon CloudFront Guía para desarrolladores
Cuotas de tamaño en URI y cadena de consulta

Cuotas que difieren según el tipo de evento

Entidad Cuotas de los eventos Cuotas de los eventos


de solicitud al origen y de solicitud del
respuesta del origen espectador y respuesta
al espectador

Tamaño de memoria de función Igual que las cuotas de 128 MB


Lambda

Tiempo de espera de la función. La función puede 30 segundos 5 segundos


realizar llamadas de red a recursos como buckets
de Amazon S3, tablas de DynamoDB o instancias
Amazon EC2 en regiones de AWS.

Tamaño de una respuesta generada por una 1 MB 40 KB


función Lambda, incluidos los encabezados y el
cuerpo

Tamaño comprimido máximo de una función 50 MB 1 MB


Lambda y cualquier biblioteca incluida

Otras cuotas

Entidad Cuota predeterminada

Distribuciones por cuenta de AWS para los que puede crear disparadores 25

Solicitar una ampliación


de la cuota

Disparadores por distribución 100

Solicitar una ampliación


de la cuota

Solicitudes por segundo 10 000 (en cada región)

Solicitar una ampliación


de la cuota

Ejecuciones simultáneas 1000 (en cada región)

Para obtener más información, consulte Escalado de funciones en la Guía Solicitar una ampliación
para desarrolladores de AWS Lambda. de la cuota

Cuotas de tamaño en URI y cadena de consulta


Al acceder o actualizar un URI o una cadena de consulta en una función de Lambda@Edge, la longitud
total del URI que incluye la cadena de consulta debe ser inferior a 8192 caracteres.

525
Amazon CloudFront Guía para desarrolladores
Cuotas de tamaño para el cuerpo de la solicitud
con la opción Include Body (Incluir cuerpo)

Cuotas de tamaño para el cuerpo de la solicitud con la


opción Include Body (Incluir cuerpo)
Cuando elija la opción Include Body (Incluir cuerpo) para exponer el cuerpo de la solicitud a la función
de Lambda@Edge, tenga en cuenta las siguientes cuotas de tamaño para las partes del cuerpo que se
exponen o reemplazan.
Note

Lambda@Edge siempre codifica el cuerpo en base64 antes de exponerlo.

Las cuotas de tamaño al exponer el cuerpo a una función de


Lambda
Si el cuerpo de la solicitud es grande, Lambda@Edge lo limita antes de exponerlo, del siguiente modo:

• Para las solicitudes de los espectadores, el cuerpo está limitado a 40 KB.


• Para las solicitudes de origen, el cuerpo está limitado a 1 MB.

Cuotas de tamaño cuando se devuelve el cuerpo de una solicitud


de una función de Lambda
Si tiene acceso al cuerpo de la solicitud como de solo lectura, el cuerpo completo de la solicitud original
se devuelve al origen. Sin embargo, si elige reemplazar el cuerpo de la solicitud, se aplican las siguientes
cuotas de tamaño del cuerpo cuando se devuelve desde una función de Lambda:

Tipo de codificación del cuerpo Tamaño del cuerpo Tamaño del cuerpo
permitido: solicitud permitido: solicitud
del espectador del origen

text 40 KB 1 MB

base64 53,2 KB 1,33 MB

Tiempo de espera de la solicitud


Entidad Cuota predeterminada

Tiempo de espera de la solicitud 30 segundos

Para obtener más información, consulte Tiempo de espera de respuesta del Solicitar una ampliación
origen (p. 314). de la cuota

526
Amazon CloudFront Guía para desarrolladores
Documentación adicional de Amazon CloudFront

Información relacionada con Amazon


CloudFront
La información y los recursos que se enumeran aquí pueden ayudarle a obtener más información acerca
de CloudFront.

Temas
• Documentación adicional de Amazon CloudFront (p. 527)
• Cómo obtener soporte (p. 527)
• SDK y herramientas para desarrolladores de CloudFront (p. 528)
• Consejos del blog de Amazon Web Services (p. 528)

Documentación adicional de Amazon CloudFront


Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con este servicio.

• Referencia de la API de Amazon CloudFront: ofrece descripciones completas de las acciones,


parámetros y tipos de 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 borde
agregadas recientemente.
• Información del producto de Amazon CloudFront: la página web principal para obtener información
acerca de CloudFront incluidas características e información sobre precios.

Cómo obtener soporte


La compatibilidad con CloudFront está disponible de varias formas.

• Foros de debate: un foro de la comunidad en el que los desarrolladores pueden debatir aspectos
técnicos relacionados con CloudFront.
• Centro de soporte de AWS: este sitio aúna información acerca de casos de soporte recientes y
resultados de AWS Trusted Advisor y comprobaciones de estado. Además, proporciona enlaces a foros
de debate, preguntas técnicas más frecuentes, panel de estado del servicio e información acerca de los
planes de soporte de AWS.
• información acerca de AWS Premium Support: página web principal con información acerca de AWS
Premium Support, un canal de soporte individualizado y de respuesta rápida que le ayudará a crear y
ejecutar aplicaciones en AWS Infrastructure Services.
• AWS IQ: obtenga ayuda de profesionales y expertos certificados por AWS.
• Contacte con nosotros: enlaces para hacernos llegar sus preguntas sobre facturación o su cuenta. Para
preguntas técnicas, utilice los foros de debate o los enlaces de soporte previamente proporcionados.

527
Amazon CloudFront Guía para desarrolladores
SDK y herramientas para desarrolladores de CloudFront

SDK y herramientas para desarrolladores de


CloudFront
Consulte la página de Herramientas para desarrolladores y encuentre enlaces a recursos para
desarrolladores que proporcionan documentación, código de muestra, notas de la versión y otra
información, para ayudarle a crear aplicaciones innovadoras con AWS.

Además, Amazon Web Services proporciona kits de desarrollo de software para acceder a CloudFront
mediante programación. Las bibliotecas de SDK automatizan una serie de tareas comunes, incluida la
firma criptográfica de las solicitudes de servicio, de nuevos intentos o la gestión de las respuestas de error.

Consejos del blog de Amazon Web Services


En el blog de AWS encontrará diversas publicaciones que le ayudarán a utilizar CloudFront. Por ejemplo,
consulte las siguientes publicaciones de blog sobre cómo utilizar CloudFront con WordPress: Aceleración
de WordPress con CloudFront mediante el complemento de AWS para WordPress.

528
Amazon CloudFront Guía para desarrolladores

Historial de revisión
Las siguientes entradas describen cambios importantes realizados en la documentación de CloudFront.

Cambiar Descripción Fecha de


modificación

Lambda@Edge Ahora, Lambda@Edge admite funciones de Lambda con los 29 de abril de


admite tiempos de ejecución de Node.js 14. Para obtener más información, 2021
versiones más consulte Configuración y tiempos de ejecución admitidos de la
recientes del función Lambda (p. 417).
tiempo de
ejecución

Quitar Amazon CloudFront dio de baja las distribuciones del protocolo de 10 de febrero de
documentación mensajería en tiempo real (RTMP) el 31 de diciembre de 2020. La 2021
para documentación para las distribuciones RTMP ahora se elimina de la
distribuciones Guía para desarrolladores de Amazon CloudFront.
RTMP

Nuevas Amazon CloudFront presenta el paquete de ahorro de seguridad 5 de febrero de


opciones de CloudFront, una forma sencilla de ahorrar hasta un 30% en 2021
precios los cargos de CloudFront en su factura de AWS. Para obtener
más información, consulte Paquete de ahorro de seguridad
CloudFront (p. 10).

Nuevo tutorial La Guía para desarrolladores de Amazon CloudFront incluye ahora 18 de diciembre
un tutorial sobre el uso de Amazon CloudFront para restringir el de 2020
acceso a un balanceador de carga de aplicaciones en Elastic Load
Balancing. Para obtener más información, consulte Restringir el
acceso a los balanceadores de carga de aplicaciones (p. 230).

Nueva opción CloudFront ahora admite la administración de claves públicas 22 de octubre de


para la para URL firmadas y cookies firmadas a través de la consola y 2020
administración la API de CloudFront, sin necesidad de acceder al usuario raíz
de claves de la cuenta de AWS. Para obtener más información, consulte
públicas Especificación de los signatarios que pueden crear URL firmadas y
cookies firmadas (p. 166).

Nueva CloudFront ahora admite CloudFront Origin Shield, una capa 20 de octubre de
característica: adicional en la infraestructura de almacenamiento en caché de 2020
Origin Shield CloudFront que ayuda a minimizar la carga del origen, mejorar la
disponibilidad y reducir los costos de explotación. Para obtener
más información, consulte Uso de Amazon CloudFront Origin
Shield (p. 255).

Nuevo formato CloudFront ahora admite la formación de compresión Brotli cuando 14 de


de compresión configura CloudFront para comprimir objetos en ubicaciones septiembre de
de borde de CloudFront. También puede configurar CloudFront 2020
para almacenar en caché objetos Brotli mediante un encabezado
Accept-Encoding normalizado. Para obtener más información,
consulte Ofrecer archivos comprimidos (p. 128) y Compatibilidad
con la compresión (p. 96).

Nuevo CloudFront ahora es compatible con el protocolo TLS 1.3 para 3 de septiembre
protocolo TLS conexiones HTTPS entre lectores y distribuciones de CloudFront. de 2020

529
Amazon CloudFront Guía para desarrolladores

Cambiar Descripción Fecha de


modificación
TLS 1.3 está habilitado de forma predeterminada en todas
las políticas de seguridad de CloudFront. Para obtener más
información, consulte Protocolos y cifrados admitidos entre lectores
y CloudFront (p. 145).

Nuevos CloudFront ahora admite registros en tiempo real configurables. 31 de agosto de


registros en Con los registros en tiempo real, puede obtener información sobre 2020
tiempo real las solicitudes realizadas a una distribución en tiempo real. Puede
usar registros en tiempo real para monitorear, analizar y tomar
medidas en función del rendimiento de entrega de contenido.
Para obtener más información, consulte Registros en tiempo
real (p. 476).

Compatibilidad CloudFront ahora admite la habilitación de ocho métricas 28 de agosto de


con API para adicionales en tiempo real con la API de CloudFront. Para 2020
métricas obtener más información, consulte Habilitación de métricas
adicionales adicionales (p. 454).

Nuevos CloudFront ha agregado encabezados HTTP adicionales para 23 de julio de


encabezados determinar información sobre el lector como el tipo de dispositivo, la 2020
HTTP de ubicación geográfica, etc. Para obtener más información, consulte
CloudFront Uso de los encabezados HTTP de CloudFront (p. 113).

Nueva CloudFront ahora admite políticas de caché y políticas de solicitud 22 de julio de


característica de origen, que le proporcionan un control más detallado sobre la 2020
clave de caché y las solicitudes de origen para sus distribuciones
de CloudFront. Para obtener más información, consulte Trabajo con
políticas (p. 92).

Nueva política CloudFront ahora admite una nueva política de seguridad, 8 de julio de
de seguridad TLSv1.2_2019, con un conjunto más pequeño de algoritmos 2020
criptográficos compatibles. Para obtener más información, consulte
Protocolos y cifrados admitidos entre lectores y CloudFront (p. 145).

Nueva CloudFront ha agregado nuevas configuraciones que controlan 5 de junio de


configuración los tiempos de espera e intentos de origen. Para obtener más 2020
para controlar información, consulte Control de los tiempos de espera de origen y
los tiempos los intentos (p. 266).
de espera e
intentos de
origen

Nueva Comience a trabajar con CloudFront creando un sitio web estático 2 de junio de
documentación seguro con Amazon S3, CloudFront, Lambda @Edge, etc., todo 2020
para comenzar ello implementado con AWS CloudFormation. Para obtener
a usar más información, consulte Introducción a un sitio web seguro
CloudFront estático (p. 33).
mediante la
creación de
un sitio web
estático seguro

530
Amazon CloudFront Guía para desarrolladores

Cambiar Descripción Fecha de


modificación

Lambda@Edge Lambda@Edge ahora admite funciones de Lambda con los 27 de febrero de


admite tiempos de ejecución de Node.js 12 y Python 3.8. Para obtener 2020
versiones más más información, consulte Configuración y tiempos de ejecución
recientes del admitidos de la función Lambda (p. 417).
tiempo de
ejecución

Nuevas Amazon CloudFront ofrece ahora ocho métricas en tiempo 19 de diciembre


métricas en real adicionales en Amazon CloudWatch. Para obtener más de 2019
tiempo real en información, consulte Visualización de métricas de distribución
CloudWatch adicionales de CloudFront (p. 454).

Nuevos CloudFront agrega siete nuevos campos para obtener acceso a 12 de diciembre
campos en los los registros. Para obtener más información, consulte Campos de de 2019
registros de archivo de registro estándar (p. 469).
acceso

Complemento Puede utilizar el complemento AWS for WordPress para 30 de octubre de


AWS for proporcionar a los visitantes a su sitio web de WordPress una 2019
WordPress. experiencia de visualización acelerada utilizando CloudFront. Para
obtener más información, consulte Introducción a una distribución
simple (p. 22).

Políticas de CloudFront ahora admite dos formas adicionales de especificar 8 de agosto de


permisos de políticas de permisos de IAM: permisos de políticas basadas en 2019
IAM de nivel etiquetas y de nivel de recursos. Para obtener más información,
de recursos consulte Administración del acceso a los recursos.
y basadas en
etiquetas

Compatibilidad Ahora puede utilizar el lenguaje de programación Python para 1 de agosto de


con el desarrollar funciones en Lambda@Edge, además de Node.js. 2019
lenguaje de Para ver funciones de ejemplo que abarcan diversos escenarios,
programación consulte Funciones de ejemplo de Lambda@Edge.
Python

Se han Actualizaciones de contenido para describir nuevas formas de 20 de junio de


actualizado monitorizar funciones Lambda asociadas con las distribuciones 2019
los gráficos de de CloudFront directamente desde la consola de CloudFront para
monitorización realizar un seguimiento y depurar errores más fácilmente. Para
obtener más información, consulte Monitoreo de CloudFront.

Contenido Un nuevo capítulo de seguridad consolida información acerca de 24 de mayo de


de seguridad las características de CloudFront en torno a la implementación de la 2019
consolidado protección de datos, IAM, registro, conformidad y etc. Para obtener
más información, consulte Seguridad.

Ahora es CloudFront ahora requiere el uso de un certificado SSL para 9 de abril de


necesaria la verificar que se tiene permiso para utilizar un nombre de dominio 2019
validación de alternativo con una distribución. Para obtener más información,
dominios consulte Usar nombres de dominio alternativos y HTTPS.

531
Amazon CloudFront Guía para desarrolladores

Cambiar Descripción Fecha de


modificación

Se ha El nuevo nombre de archivo de la Guía para desarrolladores de 7 de enero de


actualizado Amazon CloudFront es: AmazonCloudFront_DevGuide. El nombre 2019
el nombre de anterior era: cf-dg.
archivo PDF

Nuevas CloudFront ahora admite WebSocket, un protocolo basado en TCP 20 de noviembre


características que resulta útil cuando se necesitan conexiones de larga duración de 2018
entre clientes y servidores. Ahora también puede configurar
CloudFront con conmutación por error en el origen en los casos
en los que se requiera alta disponibilidad. Para obtener más
información, consulte Uso de WebSocket con distribuciones de
CloudFront y Optimización de alta disponibilidad con conmutación
por error en el origen de CloudFront.

Nueva CloudFront ahora permite utilizar registros de errores detallados 8 de octubre de


característica con las solicitudes HTTP que ejecutan funciones Lambda. Puede 2018
almacenar los registros de CloudWatch y utilizarlos como ayuda
para solucionar errores HTTP 5xx cuando la función devuelve
una respuesta no válida. Para obtener más información, consulte
Métricas de CloudWatch y CloudWatch Logs para funciones
Lambda.

Nueva A partir de ahora, puede hacer que Lambda@Edge exponga el 14 de agosto de


característica cuerpo de una solicitud en los métodos HTTP que permiten la 2018
escritura (POST, PUT, DELETE, etc.) para que puede tener acceso
a él en la función Lambda. Puede elegir acceso de solo lectura
o puede especificar que sustituirá el cuerpo. Para obtener más
información, consulte Acceso al cuerpo de una solicitud eligiendo la
opción Include Body (Incluir cuerpo).

Nueva CloudFront ahora permite ofrecer contenido comprimido mediante 25 de julio de


característica brotli u otros algoritmos de compresión, además o en lugar de 2018
gzip. Para obtener más información, consulte Ofrecer archivos
comprimidos.

Reorganización La Guía para desarrolladores de Amazon CloudFront se ha 28 de junio de


reorganizado para simplificar la búsqueda de contenido relacionado 2018
y mejorar la capacidad de búsqueda y la navegación.

Nueva Lambda@Edge le permite ahora personalizar aún más la entrega 20 de marzo de


característica de contenido almacenado en un bucket de Amazon S3, para que 2018
pueda acceder a encabezados adicionales permitidos, incluidos los
encabezados personalizados, dentro de eventos producidos en el
origen. Para obtener más información, consulte estos ejemplos que
muestran cómo personalizar el contenido en función de la ubicación
del lector y del tipo de dispositivo del lector.

Nueva Ahora puede usar Amazon CloudFront para negociar conexiones 15 de marzo de
característica HTTPS con orígenes mediante el algoritmo de firma digital de 2018
curva elíptica (ECDSA). ECDSA utiliza claves más pequeñas que
son más rápidas, aunque, tan seguras como el algoritmo de RSA
más antiguo. Para obtener más información, consulte Protocolos
y cifrados SSL/TLS admitidos para la comunicaciones entre
CloudFront y su origen y Acerca de los algoritmos critpográficos
RSA y ECDSA.

532
Amazon CloudFront Guía para desarrolladores

Cambiar Descripción Fecha de


modificación

Nueva Lambda@Edge le permite personalizar respuestas de error 21 de diciembre


característica recibidas desde el origen, ya que le permite ejecutar funciones de 2017
Lambda como respuesta a los errores HTTP que Amazon
CloudFront reciba desde el origen. Para obtener más información,
consulte los ejemplos que muestran redireccionamientos a otra
ubicación y la generación de respuestas con el código de estado
200 (OK).

Nueva Una nueva capacidad de CloudFront, el cifrado en el nivel de 14 de diciembre


característica campo, le permite mejorar aún más la seguridad de los datos de 2017
confidenciales, como números de tarjetas de crédito, o los datos
personales, como números de la seguridad social. Para obtener
más información, consulte Uso del cifrado en el nivel de campo
para ayudar a proteger la información confidencial (p. 241).

Historial Se archivó el historial de revisión más antiguo. Diciembre de


de revisión 2017
archivado

533
Amazon CloudFront Guía para desarrolladores

Glosario de AWS
Para ver la terminología más reciente de AWS, consulte el glosario de AWS en la referencia general de
AWS.

534

También podría gustarte