Bienvenido al día 5 de la serie llamada #100DaysofAWS, en la que hablarémos sobre un servicio que puede brindar una experiencia de usuario mucho mejor para sus sitios web y aplicaciones mediante la reducción masiva de la latencia, al mismo tiempo que utiliza la red troncal global de AWS para mejorar su seguridad.
La publicación de hoy está en CloudFront.
¿Qué es CloudFront?
Antes de entrar en el meollo en cuestión de CloudFront como servicio de AWS, primero debemos comprender qué se entiende por CDN.
Las CDN, o redes de entrega de contenido, han sido utilizadas por una gran cantidad de organizaciones durante mucho tiempo para acelerar el acceso al contenido para los usuarios finales. Esto se hace colocando copias del contenido solicitado en servidores geográficamente más cercanos al usuario final. Esto reduce la latencia, aumenta la disponibilidad y busca que la experiencia del usuario final sea mucho mejor.
¿Cómo funciona CloudFront?
CloudFront utiliza la tecnología de almacenamiento en caché para almacenar temporalmente copias de sus datos en servidores locales de su cliente. Estos servidores que existen en AWS Global Backbone se denominan ubicaciones de borde, y hay más de 225 de estos en todo el mundo, lo que brinda al usuario final la oportunidad de recuperar los datos solicitados de un servidor mucho más cercano a su ubicación.
CloudFront admite numerosos orígenes diferentes, como S3 Buckets, ELB, Route 53, instancias EC2, así como distribuciones HTTP personalizadas. Muchas aplicaciones y casos de uso diferentes pueden beneficiarse del poder de CloudFront.
Puede especificar cuánto tiempo permanece el contenido almacenado en caché en una ubicación de borde decidiendo el TTL (Tiempo de vida) para su contenido. Cuando el TTL caduca, el contenido se elimina y, si un cliente vuelve a solicitar el mismo contenido, el usuario final tendrá que recuperar el contenido desde el origen, actualizar la memoria caché, actualizar la ubicación de borde y, por lo tanto, iniciar un costo de transferencia saliente desde el origen a la ubicación del borde.
Es importante entender el concepto de distribuciones en CloudFront si queremos entender CloudFront como un todo. Las distribuciones son simplemente una colección de ubicaciones de borde, así como su forma asociada de manejar su contenido en caché. Lo que determinará el costo y qué tan ampliamente se almacenarán sus datos en caché a nivel mundial dependerá de la clase de precio que haya seleccionado para su distribución. Aquí hay tres opciones sobre cómo y dónde distribuir su contenido:
Use solo EE. UU., Canadá y Europa: Menor costo, menor rendimiento.
Usar EE. UU., Canadá y Europa Asia Medio Oriente y África: En el medio del camino.
Use todas las ubicaciones de borde: El costo más alto, el rendimiento más alto.
Lo que seleccione claramente depende de una combinación de su caso de uso y qué tan ampliamente utilizada se pretende que sea su aplicación.
También hay dos tipos de distribuciones que puede elegir:
Web (para sitios web).
RTMP (para transmisión de medios).
Además de poder invalidar manualmente ciertos archivos, mostrar páginas de error personalizadas y también restringir los métodos HTTP (por ejemplo, solo los métodos PUT), también puede aprovechar una herramienta conocida como restricción geográfica.
La restricción geográfica le permite seleccionar ciertos países para permitir o denegar el tráfico según sus necesidades. Esto puede resultar valioso no solo para ahorrar costos, sino también para garantizar que solo una determinada audiencia pueda acceder a su contenido.
Lambda@Edge
A los efectos de esta explicación, seguro ha oído hablar de Lambda (lo cubriremos en unos días en este blog de todos modos).
Lambda@Edge son funciones de Lambda que pueden anular el comportamiento de las solicitudes que se enrutan hacia y desde CloudFront. Puede escribir funciones en Node.js o Python para personalizar el contenido que se ofrece en ubicaciones de borde cercanas al usuario.
Estas funciones se pueden dividir en cuatro categorías:
Después de que CloudFront recibe una solicitud de un usuario (viewer request).
Antes de que CloudFront reenvíe la solicitud al origen (origin request).
Después de que CloudFront recibe la respuesta del origen (origin response).
Antes de que CloudFront reenvíe la respuesta al usuario(viewer response).
Un ejemplo de esto podría ser dar acceso a contenido protegido a través de Amazon Cognito, a los usuarios que se encuentran en su Cognito Pool. Otro caso de uso podría ser agregar o modificar encabezados de control de caché en las respuestas. Hay muchos casos diferentes en los que tener acceso a funciones de Lambda en ubicaciones de borde que puede ser extremadamente valioso.
Continuando, hablemos sobre el componente de seguridad de CloudFront y cómo al usarlo puede mejorar la seguridad de sus aplicaciones.
Si lo piensa, si un cliente intenta atacar a su empresa con un ataque DDoS, un ataque EDoS o de cualquier otra forma, lo más cerca que estará del servidor de origen mientras usa CloudFront es la ubicación de borde. El almacenamiento en caché de su contenido en una ubicación de borde, además de proporcionar una ruta mucho más rápida y más local para el cliente, agrega otro paso entre el servidor de origen y el atacante y agrega más dificultad para cualquier malhechor que intente causar estragos.
CloudFront también brinda protección para sus aplicaciones en el nivel de red y aplicación de forma predeterminada. Sus ubicaciones de Edge también están integradas tras bambalinas con un poderoso servicio llamado AWS Shield para protegerse contra los ataques web más populares como DDoS, Slow-Loris, etc.
También es extremadamente fácil integrar CloudFront con muchas otras tecnologías de seguridad útiles de AWS, como WAF y Shield Advanced. Todo esto lo convierte en un servicio extremadamente útil y poderoso.
Ahora, por último, pero no menos importante, hablemos sobre la protección en CloudFront.
Por defecto, una distribución permite el acceso a cualquier persona. Esto no es ideal si mantiene ciertos datos detrás de un muro de pago u oculta otro contenido que no desea que sea fácilmente accesible. CloudFront le ofrece algunas formas de lograrlo.
Las URL firmadas y las cookies firmadas son la forma en que se logra esto. Sin embargo, para utilizarlos, debe tener un OAI creado para usted por AWS.
Una OAI es una identidad de acceso de origen, y esta es una identidad de usuario virtual para dar acceso a su distribución para obtener objetos privados como un objeto de S3, etc.
Una URL firmada es una URL creada por AWS para brindarles a sus usuarios acceso temporal al contenido oculto para los usuarios normales, y las cookies firmadas se transmiten junto con la solicitud, lo que permite a los clientes acceder a tantos archivos como desee, suponiendo que la cookie todavía esté válido. Esto es extremadamente útil para la transmisión de video en particular, o si su contenido se entrega en partes.
Hemos llegado al final de esta introducción a CloudFront. Si desea jugar con CloudFront en su propia cuenta de AWS, tenga en cuenta que puede beneficiarse de los siguientes límites:
50 GB de transferencia de datos: 12 meses gratis
2 000 000 de solicitudes HTTP o HTTPS gratuitas/2 000 000 de invocaciones gratuitas de funciones de CloudFront: cada mes durante un año
¡Mañana, vuelva al blog para encontrar una nueva entrada sobre CloudWatch!
Coméntanos si tiene alguna pregunta y, como siempre, ¡sigue construyendo!