Lect 2
Lect 2
El primer bloque de construcción que necesita para alojar una aplicación es un servidor. A menudo, los servidores pueden
gestionar peticiones del Protocolo de Transferencia de Hipertexto (HTTP) y enviar respuestas a los clientes siguiendo
el modelo cliente-servidor, aunque cualquier comunicación basada en API también entra dentro de este modelo. Un
cliente es una persona u ordenador que envía una solicitud, y un servidor que gestiona las solicitudes es un ordenador,
o conjunto de ordenadores, conectado a Internet que sirve sitios web a los internautas. Estos servidores alimentan su
aplicación proporcionando CPU, memoria y capacidad de red para procesar las peticiones de los usuarios y
transformarlas en respuestas. A modo de contexto, entre los servidores HTTP más comunes se incluyen:
Opciones de Linux, como Apache HTTP Web Server, Nginx y Apache Tomcat.
Para ejecutar un servidor HTTP en AWS, debe encontrar un servicio que proporcione potencia de cómputo en la consola
de administración de AWS. Puede iniciar sesión en la consola y ver la lista completa de servicios informáticos de AWS.
Si es responsable de configurar servidores en AWS para ejecutar su infraestructura, dispone de muchas opciones de
cómputo. Necesita saber qué servicio utilizar para cada caso de uso. A nivel fundamental, existen tres tipos de opciones
de cómputo: máquinas virtuales, servicios de contenedor y sin servidor. Si llega a AWS con conocimientos previos de
infraestructura, una máquina virtual puede ser a menudo la opción informática de AWS más fácil de entender. Esto se
debe a que una máquina virtual emula un servidor físico y le permite instalar un servidor HTTP para ejecutar sus
aplicaciones. Para ejecutar estas máquinas virtuales, se instala un hipervisor en una máquina anfitriona. Este hipervisor
aprovisiona los recursos para crear y ejecutar sus máquinas [Link] AWS, estas máquinas virtuales se denominan
Amazon Elastic Compute Cloud o Amazon EC2. Entre bastidores, AWS opera y administra las máquinas anfitrionas y
la capa del hipervisor. AWS también instala el sistema operativo de la máquina virtual, llamado sistema operativo
[Link] servicios de computación de AWS utilizan Amazon EC2 o utilizan conceptos de virtualización bajo el
capó, por lo tanto, es mejor entender este servicio primero antes de pasar a los servicios de contenedores y la
computación sin servidor.
Lectura 2.2: Introducción a Amazon Elastic Compute Cloud
Amazon EC2 es un servicio web que proporciona capacidad informática segura y redimensionable en la nube. Le
permite aprovisionar servidores virtuales denominados instancias EC2. Aunque AWS utiliza la frase “servicio web” para
describirlo, no significa que esté limitado a ejecutar únicamente servidores web en sus instancias EC2. Puede crear y
administrar estas instancias a través de la consola de administración de AWS, la interfaz de línea de comandos (CLI) de
AWS, los kits de desarrollo de software (SDK) de AWS o a través de herramientas de automatización y servicios de
orquestación de [Link] crear una instancia EC2, debe definir:
Configuraciones lógicas, como la ubicación de la red, las reglas del cortafuegos, la autenticación y el sistema
operativo de su elección.
Al lanzar una instancia EC2, lo primero que debe configurar es el sistema operativo que desea seleccionando una Imagen
de máquina de Amazon (AMI).
Podría elegir una AMI basada en Linux y configurar el servidor HTTP, los paquetes de aplicaciones y cualquier software
adicional que pueda necesitar para ejecutar su aplicación.
Si quisiera crear una segunda instancia EC2 con las mismas configuraciones, ¿cómo puede hacerlo fácilmente? Una
opción es pasar por todo el proceso de creación y configuración de la instancia e intentar hacer coincidir sus ajustes con
los de la primera instancia. Sin embargo, esto lleva mucho tiempo y deja margen para el error humano.
La segunda opción, mejor, es crear una AMI a partir de su instancia en ejecución y utilizar esta AMI para iniciar una
nueva instancia. De esta forma, su nueva instancia tendrá las mismas configuraciones que su instancia actual, ya que las
configuraciones establecidas en las AMI son las mismas.
Ahora que ya sabe cómo seleccionar un sistema operativo para su instancia EC2, es el momento de elegir otras
configuraciones para crear su instancia EC2, como el tipo de instancia, la red y el almacenamiento. Para una aplicación
como la del directorio de empleados, necesita instancias con capacidad suficiente para ejecutar servidores web y procesar
las solicitudes entrantes de los clientes. El dimensionamiento de su instancia dependerá tanto de las demandas de su
aplicación como del tamaño previsto de su base de usuarios. Prever la capacidad del servidor para una aplicación local
requiere decisiones difíciles que implican un importante gasto de capital inicial, mientras que los cambios en la
asignación de sus servicios basados en la nube pueden realizarse con una simple llamada a la API. Gracias al modelo de
pago por uso de AWS, puede ajustar la capacidad de su infraestructura a la demanda de su aplicación, y no al revés.
Las instancias EC2 son una combinación de procesadores virtuales (vCPU), memoria, red y, en algunos casos,
almacenamiento de instancia y unidades de procesamiento gráfico (GPU). Cuando crea una instancia EC2, debe elegir
cuánto necesita de cada uno de estos componentes.
AWS ofrece una variedad de instancias que difieren en función del rendimiento. Algunas instancias le proporcionan más
capacidad y otras menos. Para obtener una visión general de los detalles de capacidad de una instancia concreta, debe
fijarse en el tipo de instancia. Los tipos de instancia constan de un prefijo que identifica el tipo de cargas de trabajo para
las que están optimizadas, seguido de un tamaño. Por ejemplo, el tipo de instancia [Link] puede desglosarse en los
siguientes elementos.
c5 determina la familia de la instancia y el número de generación. En este caso, la instancia pertenece a la quinta
generación de instancias de una familia de instancias optimizada para el cálculo genérico.
large, que determina la cantidad de capacidad de la instancia.
¿Qué son las familias de instancias?
Almacenamiento Diseñados para cargas de trabajo que Bases de datos NoSQL, como
optimizado requieren un acceso alto y secuencial de Cassandra, MongoDB y Redis, bases de
lectura y escritura a grandes conjuntos de datos en memoria, bases de datos
datos en el almacenamiento local. Están transaccionales escalables,
optimizadas para ofrecer decenas de miles almacenamiento de datos, Elasticsearch
de operaciones de E/S aleatorias de baja y análisis.
latencia por segundo (IOPS) a
aplicaciones que replican sus datos en
diferentes instancias.
Dentro de esta red, su instancia reside en una zona de disponibilidad de su elección. Los servicios de AWS que tienen
un alcance a nivel de zona de disponibilidad deben diseñarse teniendo en cuenta la alta disponibilidad. Aunque las
instancias EC2 suelen ser fiables, dos es mejor que una, y tres es mejor que dos. Especificar el tamaño de la instancia le
da una ventaja a la hora de diseñar su arquitectura porque puede utilizar más instancias pequeñas en lugar de unas pocas
más grandes. Si su frontend sólo tiene una instancia y esa instancia falla, su aplicación se cae. En cambio, si su carga de
trabajo está distribuida en 10 instancias y una falla, sólo perderá el 10% de su parque y la disponibilidad de su aplicación
apenas se verá afectada. Cuando diseñe la arquitectura de cualquier aplicación para una alta disponibilidad, considere
la posibilidad de utilizar al menos dos instancias EC2 en dos zonas de disponibilidad separadas.
Una instancia EC2 pasa por diferentes estados desde el momento en que la crea hasta su finalización.
Cuando lanza una instancia, ésta entra en el estado pendiente (1). Cuando la instancia está pendiente, la facturación no
se ha iniciado. En este estado, la instancia se está preparando para entrar en el estado en ejecución. Pendiente es donde
AWS realiza todas las acciones necesarias para configurar una instancia, como copiar el contenido de la AMI al
dispositivo raíz y asignar los componentes de red necesarios. Cuando su instancia está en ejecución (2), está lista para
ser utilizada. Esta es también la etapa en la que comienza la facturación. En cuanto una instancia esté en ejecución,
podrá realizar otras acciones sobre ella, como reiniciarla, terminarla, detenerla y dejar de hibernar. Cuando reinicia una
instancia (3), es diferente a realizar una acción de parada y luego una de arranque. Reiniciar una instancia es equivalente
a reiniciar un sistema operativo. La instancia permanece en el mismo ordenador anfitrión y mantiene su dirección IP
pública y privada, así como cualquier dato de su almacén de instancias. Normalmente el reinicio tarda unos minutos en
completarse. Cuando detiene e inicia una instancia (4), su instancia puede colocarse en un nuevo servidor físico
subyacente. Por lo tanto, perderá cualquier dato del almacén de instancias que estuviera en el ordenador anfitrión
anterior. Cuando detiene una instancia, ésta obtiene una nueva dirección IP pública pero mantiene la misma dirección
IP privada. Cuando termina una instancia (5), se borra el almacén de instancias y pierde tanto la dirección IP pública
como la dirección IP privada de la máquina. La terminación de una instancia significa que ya no puede acceder a la
máquina.
Para entender los precios de EC2, desvinculemos el precio de la instancia de otros servicios asociados a ella, como los
costes de almacenamiento y de red. En esta unidad nos referimos al coste de la instancia como el coste asociado a la
instancia en términos de especificaciones y no al coste total combinado de ejecutar una instancia. Una vez lanzada una
instancia en su cuenta de AWS, la facturación suele devengarse por segundos. Para simplificar el cálculo, los precios se
indican por hora. Por ejemplo, si tiene una instancia en funcionamiento durante 5 minutos y 38 segundos durante un
mes determinado, sólo pagará por 338 segundos de utilización al final del mes. Una excepción a esta convención de
precios pueden ser las AMI de terceros adquiridas en AWS Marketplace, que pueden tener una facturación mínima de 1
hora. Para más detalles, consulte la sección de recursos de esta unidad.
Las IR le proporcionan un descuento significativo en comparación con los precios de las instancias bajo demanda. Las
IR ofrecen una tarifa por hora con descuento y una reserva de capacidad opcional para las instancias EC2. Puede elegir
entre tres opciones de pago: Todo por adelantado, Parcialmente por adelantado o Sin adelantado. Puede seleccionar un
plazo de 1 o 3 años para cada una de estas opciones. Dependiendo de la opción que elija, se le aplicará un descuento
diferente.
All Upfront ofrece un descuento mayor que las instancias Partial Upfront.
Las instancias con Upfront parcial ofrecen un descuento mayor que Sin Upfront.
Sin Upfront ofrece un descuento mayor que Bajo Demanda.
On-Demand y No Upfront son similares ya que ambas no requieren ningún pago por adelantado. Sin embargo, hay una
diferencia importante. Cuando elige una instancia Bajo Demanda, deja de pagar por ella cuando detiene o finaliza la
instancia. Cuando detiene una RI, sigue pagando por ella porque se comprometió a un plazo de 1 o 3 años. Las Instancias
Reservadas se asocian a un tipo de instancia y a una Zona de Disponibilidad en función de cómo la reserve. El descuento
aplicado por la compra de una Instancia Reservada no está asociado directamente a un ID de instancia específico, sino
a un tipo de instancia.
Otra forma de pagar las instancias EC2 es utilizando las Instancias Spot. Las Instancias Spot de Amazon EC2 le permiten
aprovechar la capacidad EC2 no utilizada en la nube de AWS. Están disponibles con un descuento de hasta el 90% en
comparación con los precios On-Demand. Con las Instancias Spot, usted establece un límite sobre cuánto le gustaría
pagar por la hora de instancia. Esto se compara con el precio Spot actual que determina AWS. Si la cantidad que paga
es superior al precio Spot actual y hay capacidad, entonces recibirá una instancia. Aunque son muy prometedoras desde
el punto de vista de la facturación, hay algunas consideraciones arquitectónicas que deberá tener en cuenta para
utilizarlas con eficacia. Una consideración es que su instancia spot puede verse interrumpida. Por ejemplo, si AWS
determina que ya no hay capacidad disponible para una instancia spot en particular o si el precio Spot supera lo que
usted está dispuesto a pagar, AWS le avisará con 2 minutos de antelación antes de interrumpir su instancia. Esto significa
que cualquier aplicación o carga de trabajo que se ejecute en una instancia de subasta debe poder interrumpirse. Debido
a esta consideración única, las cargas de trabajo inherentemente tolerantes a fallos suelen ser buenas candidatas para
utilizar con instancias de subasta. Entre ellas se incluyen big data, cargas de trabajo en contenedores, integración
continua/entrega continua (CI/CD), servidores web, computación de alto rendimiento (HPC), renderizado de imágenes
y medios, u otras cargas de trabajo de prueba y desarrollo.
AWS ofrece un amplio espectro de ofertas informáticas que le proporcionan la flexibilidad necesaria para elegir la
herramienta adecuada para cada trabajo. Las tres categorías principales de computación sonmáquinas
virtuales,contenedores ysin servidor. No existe un servicio único para todos, ya que depende de sus [Link]
clave es entender lo que cada opción tiene que ofrecer con el fin de construir una arquitectura de nube más adecuada
para su caso de uso. En esta unidad, aprenderá acerca de los contenedores y cómo ejecutarlos en [Link] contenedores
pueden alojar una variedad de cargas de trabajo diferentes, incluyendo aplicaciones web, migraciones lift and shift,
aplicaciones distribuidas, y la racionalización de los entornos de desarrollo, prueba y producción.
¿QUÉ ES UN CONTENEDOR?
Aunque a menudo se hace referencia a los contenedores como una tecnología nueva, la idea comenzó en la década de
1970 con ciertos núcleos de Linux que tenían la capacidad de separar sus procesos mediante el aislamiento. En aquella
época, esto se configuraba manualmente, lo que hacía que las operaciones fueran [Link] la evolución de la
comunidad de software de código abierto, los contenedores evolucionaron. Hoy en día, los contenedores se utilizan
como solución a los problemas de la informática tradicional, incluido el problema de conseguir que el software se ejecute
de forma fiable cuando pasa de un entorno informático a [Link] contenedor es una unidad estandarizada que empaqueta
su código y todas sus dependencias. Este paquete está diseñado para ejecutarse de forma fiable en cualquier plataforma,
ya que el contenedor crea su propio entorno independiente. Esto facilita el transporte de cargas de trabajo de un lugar a
otro, como del desarrollo a la producción o de las instalaciones locales a la nube.
¿QUÉ ES DOCKER?
Cuando escuche la palabracontenedor, es posible que la asocie con Docker. Docker es un popular tiempo de ejecución
de contenedores que simplifica la gestión de toda la pila del sistema operativo necesaria para el aislamiento de los
contenedores, incluidas las redes y el almacenamiento. Docker facilita la creación, empaquetado, despliegue y ejecución
de contenedores.
¿CUÁL ES LA DIFERENCIA ENTRE LOS CONTENEDORES Y LOS VMS?
Los contenedores comparten el mismo sistema operativo y núcleo que el host en el que existen, mientras que las
máquinas virtuales contienen su sistema operativo. Dado que cada máquina virtual tiene que mantener una copia de un
sistema operativo, existe cierto desperdicio de [Link] contenedor es más ligero. Se ponen en marcha más
rápidamente, casi al instante. Esta diferencia en el tiempo de arranque resulta decisiva a la hora de diseñar aplicaciones
que necesitan escalar rápidamente durante las ráfagas de entrada/salida (E/S).Mientras que los contenedores pueden
proporcionar velocidad, las máquinas virtuales le ofrecen toda la fuerza de un sistema operativo y ofrecen más recursos,
como la instalación de paquetes, un núcleo dedicado y mucho más.
ORQUESTAR CONTENEDORES
En AWS, los contenedores se ejecutan en instancias EC2. Por ejemplo, puede tener una instancia grande y ejecutar unos
cuantos contenedores en esa [Link] ejecutar una instancia es fácil de gestionar, carece de alta disponibilidad
y escalabilidad. La mayoría de las empresas y organizaciones ejecutan muchos contenedores en muchas instancias EC2
a través de varias zonas de [Link] está intentando gestionar su computación a gran escala, necesita saber:
Cómo colocar sus contenedores en sus instancias.
Qué ocurre si falla su contenedor.
Qué ocurre si falla su instancia.
Cómo supervisar los despliegues de sus contenedores.
De esta coordinación se encarga un servicio de orquestación de contenedores. AWS ofrece dos servicios de orquestación
de contenedores: Amazon Elastic Container Service (ECS) y Amazon Elastic Kubernetes Service (EKS).
Para ejecutar y administrar sus contenedores, necesita instalar el agente de contenedores de Amazon ECS en sus
instancias EC2. Este agente es de código abierto y se encarga de comunicar al servicio Amazon ECS los detalles de la
administración del clúster. Puede ejecutar este agente tanto en AMI Linux como Windows. Una instancia con el agente
de contenedores instalado suele denominarse instanciade contenedor.
Una vez que las instancias de contenedor de Amazon ECS están en funcionamiento, puede realizar acciones que
incluyen, entre otras, el lanzamiento y la detención de contenedores, la obtención del estado del clúster, el escalado de
entrada y salida, la programación de la colocación de contenedores en su clúster, la asignación de permisos y el
cumplimiento de los requisitos de disponibilidad.
Para preparar su aplicación para que se ejecute en Amazon ECS, debe crear una definición de tarea. La definición de
tarea es un archivo de texto, en formato JSON, que describe uno o varios contenedores. Una definición de tarea es
similar a un plano que describe los recursos que necesita para ejecutar ese contenedor, como CPU, memoria, puertos,
imágenes, almacenamiento e información de red.
He aquí una sencilla definición de tarea que puede utilizar para su aplicación de director corporativo. En este ejemplo,
se ejecuta en el servidor web Nginx.
{
"family": "webserver",
"containerDefinitions": [ {
"name": "web",
"image": "nginx",
"memory": "100",
"cpu": "99"
} ],
"requiresCompatibilities": [ "FARGATE" ],
"networkMode": "awsvpc",
"memory": "512",
"cpu": "256"
}
Si ejecuta su código en Amazon EC2, AWS es responsable del hardware físico y usted es responsable de los controles
lógicos, como el sistema operativo invitado, la seguridad y la aplicación de parches, las redes, la seguridad y el escalado.
Si ejecuta su código en contenedores en Amazon ECS y Amazon EKS, AWS es responsable de una mayor parte de la
administración de contenedores, como la implementación de contenedores en instancias EC2 y la administración del
clúster de contenedores. Sin embargo, al ejecutar ECS y EKS en EC2, usted sigue siendo responsable del mantenimiento
de las instancias EC2 subyacentes.
Si desea implementar sus cargas de trabajo y aplicaciones sin tener que administrar ninguna instancia EC2, puede hacerlo
en AWS con la informática sin servidor.
IR SIN SERVIDOR
Amazon ECS y Amazon EKS le permiten ejecutar sus contenedores en dos modos.
AWS Fargate es un motor de computación sin servidor creado específicamente para contenedores. Fargate escala y
administra la infraestructura, permitiendo a los desarrolladores trabajar en lo que mejor saben hacer: el desarrollo de
aplicaciones.
Logra esto asignando la cantidad correcta de cómputo, eliminando la necesidad de elegir y manejar Instancias EC2 y
capacidad y escalado de clústeres. Fargate es compatible con la arquitectura de Amazon ECS y Amazon EKS y
proporciona aislamiento de la carga de trabajo y seguridad mejorada por diseño.
AWS Fargate abstrae la instancia EC2 para que no tenga que administrarla. Sin embargo, con AWS Fargate, puede
utilizar las mismas primitivas de ECS, API e integraciones de AWS. Se integra de forma nativa con AWS Identity and
Access Management (IAM) y Amazon Nube privada virtual (VPC). HAVING integración nativa con Amazon VPC le
permite lanzar contenedores Fargate dentro de su red y controlar la conectividad a sus aplicaciones.
EJECUTA TU CÓDIGO EN AWS LAMBDA
Si desea implementar sus cargas de trabajo y aplicaciones sin tener que administrar ninguna instancia EC2 o contenedor,
puede utilizar AWS [Link] Lambda le permite ejecutar código sin aprovisionar ni administrar servidores o
contenedores. Puede ejecutar código para prácticamente cualquier tipo de aplicación o servicio backend, incluido el
procesamiento de datos, el procesamiento de transmisiones en tiempo real, el aprendizaje automático, WebSockets,
backends de IoT, backends móviles y aplicaciones web, como su aplicación de directorio corporativo
AWS Lambda no requiere ninguna administración por parte del usuario. Usted carga su código fuente y Lambda se
encarga de todo lo necesario para ejecutar y escalar su código con alta disponibilidad. No hay servidores que administrar,
lo que le ofrece un escalado continuo con una medición de subsegundos y un rendimiento constante.
Hay tres componentes principales de una Función Lambda: el disparador, el código y la configuració[Link] código es
código fuente, que describe lo que la Función Lambda debe ejecutar. Este código se puede crear de tres maneras.
Cuando cree su Función Lambda, especifique el tiempo de ejecución en el que desea que se ejecute su código. Hay
tiempos de ejecución incorporados como Python, [Link], Ruby, Go, Java, .NET Core, o puede implementar sus
funciones Lambda para que se ejecuten en un tiempo de ejecución [Link] configuración de una función
Lambda consiste en información que describe cómo debe ejecutarse la función. En la configuración, se especifica la
ubicación en la red, las variables de entorno, la memoria, el tipo de invocación, los conjuntos de permisos y otras
configuraciones. Para profundizar en estas configuraciones, consulta la sección de recursos de esta [Link]
desencadenadores describen cuándo debe ejecutarse la Función Lambda.
Un activador integra su función Lambda con otros servicios de AWS, lo que le permite ejecutar su función Lambda en
respuesta a determinadas llamadas de API que se producen en su cuenta de AWS. Esto agiliza la respuesta a eventos en
tu consola sin tener que realizar acciones [Link] lo que necesitas es el qué, el cómo y el cuándo de una función
Lambda para tener capacidad de cómputo funcional que se ejecuta solo cuando lo [Link] CTO de Amazon, Werner
Vogels, dice: "Ningún servidor es más fácil de administrar que ningún servidor." Esta cita resume la comodidad que
puedes tener al ejecutar soluciones sin servidor, como AWS Fargate y AWS Lambda.
En la siguiente unidad, aplicas toda la información que has aprendido sobre Amazon EC2, Amazon ECS y Amazon
EKS, y AWS Fargate y aprendes los casos de uso para cada servicio.
Manejador de función Lambda de AWS
El controlador de funciones de AWS Lambda es el método de su código de función que procesa los eventos. Cuando se
invoca la función, Lambda ejecuta el método del controlador. Cuando el manejador sale o devuelve una respuesta, queda
disponible para manejar otro [Link] utilizar la siguiente sintaxis general al crear un manejador de función en
Python:
NOMBRES
El nombredel manejador de función Lambda especificado en el momento de crear una función Lambda se deriva de lo
siguiente:el nombre del fichero en el que se encuentra la función manejadora Lambda el nombre de la función
manejadora PythonUn manejador de función puede tener cualquier nombre; sin embargo, el nombre por defecto en la
consola de Lambda es lambda_function.lambda_handler. Este nombre refleja el nombre de la función como
lambda_handler, y el archivo donde se almacena el código del handler en lambda_function.py. Si eliges un nombre
diferente para tu manejador de función en la consola Lambda, debes actualizar el nombre en el panel deconfiguración
de tiempo de ejecución.
GRANULARIDAD DE FACTURACIÓN
AWS Lambda le permite ejecutar código sin aprovisionar ni administrar servidores, y solo paga por lo que utiliza. Se le
cobra por el número de veces que se activa su código (solicitudes) y por el tiempo que se ejecuta su código, redondeado
al 1ms más cercano (duración). AWS redondea la duración al milisegundo más cercano sin tiempo mínimo de ejecución.
Con esta tarificación, puede resultar muy rentable ejecutar funciones cuyo tiempo de ejecución sea muy bajo, como
funciones con duraciones inferiores a 100 ms o API de baja latencia. Para más información, consulte el blog de noticias
de AWS.
CÓDIGO FUENTE
En este vídeo se ha utilizado una pequeña cantidad de código de muestra que ilustra un patrón para generar activos de
forma perezosa utilizando AWS Lambda y Amazon S3. Si está buscando implementar un servicio para cambiar el
tamaño de las imágenes en producción, considere usar el nuevo lanzamiento Serverless Image Handler, que es una
solución robusta para manejar la manipulación de imágenes y se puede implementar a través de una plantilla de AWS
CloudFormation.
Puedes encontrar un tutorial sobre la creación de la Función Lambda de AWS, así como el código utilizado en la demo
de AWS Lambda aquí: ver AWS News Blog.
Al final, esto es lo que se denomina una dirección Ipv4. Esto es importante saberlo cuando intente comunicarse con un
solo ordenador. Pero recuerde que está trabajando con una red. Aquí es donde entra en juego la Notación CIDR.
Comienza con una dirección IP inicial y está separada por una barra oblicua (el carácter "/") seguida de un número. El
número del final especifica cuántos de los bits de la dirección IP son fijos. En este ejemplo, los primeros 24 bits de la
dirección IP son fijos. El resto son flexibles.
de los 32 bits totales restados a los 24 bits fijos quedan 8 bits flexibles. Cada uno de estos bits flexibles puede ser 0 ó 1,
porque son binarios. Eso significa que tiene dos opciones para cada uno de los 8 bits, lo que proporciona 256 direcciones
IP en ese rango IP.
Cuanto mayor sea el número después de la /, menor será el número de direcciones IP de su red. Por ejemplo, un rango
de [Link]/24 es más pequeño que [Link]/16.
Cuando trabaje con redes en la nube de AWS, elija el tamaño de su red utilizando la notación CIDR. En AWS, el rango
IP más pequeño que puede tener es /28, que le proporciona 16 direcciones IP. El rango IP más grande que puede tener
es un /16, que le proporciona 65.536 direcciones IP.
Una VPC es una red aislada que usted crea en la nube de AWS, similar a una red tradicional en un centro de datos.
Cuando crea una VPC, necesita elegir tres cosas principales.
1. El nombre de su VPC.
2. Una región para que viva su VPC. Cada VPC abarca varias zonas de disponibilidad dentro de la región que elija.
3. Un rango IP para su VPC en notación CIDR. Esto determina el tamaño de su red. Cada VPC puede tener hasta
cuatro rangos de IP /16.
Utilizando esta información, AWS aprovisionará una red y direcciones IP para esa red.
Crear una subred Después de crear su VPC, necesita crear subredes dentro de esta red. Piense en las subredes como
redes más pequeñas dentro de su red base-o redes de área virtual (VLAN) en una red tradicional, on-premises. En una
red on-premise, el caso de uso típico de las subredes es aislar u optimizar el tráfico de red. En AWS, las subredes se
utilizan para la alta disponibilidad y para proporcionar diferentes opciones de conectividad para sus recursos. Al crear
una subred, debe elegir tres opciones.
1. La VPC en la que desea que viva su subred, en este caso VPC ([Link]/16).
2. La Zona de Disponibilidad en la que quiere que viva su subred, en este caso AZ1.
3. Un bloque CIDR para su subred, que debe ser un subconjunto del bloque CIDR de la VPC, en este caso [Link]/24.
Cuando lanza una instancia EC2, la lanza dentro de una subred, que estará situada dentro de la Zona de Disponibilidad
que elija.
Alta disponibilidad con una VPC Cuando cree sus subredes, tenga en cuenta la alta disponibilidad. Para mantener la
redundancia y la tolerancia a fallos, cree al menos dos subredes configuradas en dos Zonas de Disponibilidad diferentes.
Como ya ha aprendido, es importante tener en cuenta que "todo falla todo el tiempo" En este caso, si una de estas AZ
falla, seguirá disponiendo de sus recursos en otra AZ como copia de seguridad.
IPs reservadas Para que AWS pueda configurar su VPC adecuadamente, AWS reserva cinco direcciones IP en cada
subred. Estas direcciones IP se utilizan para el enrutamiento, el sistema de nombres de dominio (DNS) y la gestión de
la red.
Por ejemplo, considere una VPC con el rango de IP [Link]/22. La VPC incluye 1.024 direcciones IP en total. Está
dividida en cuatro subredes de igual tamaño, cada una con un rango IP /24 con 256 direcciones IP. De cada uno de esos
rangos IP, sólo hay 251 direcciones IP que se pueden utilizar porque AWS reserva cinco.
Dado que AWS reserva estas cinco direcciones IP, puede influir en la forma de diseñar su red. Un punto de partida
común para aquellos que son nuevos en la nube es crear una VPC con un rango IP de /16 y crear subredes con un rango
IP de /24. Esto proporciona una gran cantidad de direcciones IP con las que trabajar tanto a nivel de VPC como de
subred.
Pasarelas
Para habilitar la conectividad a Internet para su VPC, necesita crear una puerta de enlace a Internet. Piense en esta puerta
de enlace como algo similar a un módem. Al igual que un módem conecta su ordenador a Internet, la pasarela de Internet
conecta su VPC a Internet. A diferencia de su módem en casa, que a veces se cae o se desconecta, una puerta de enlace
a Internet está altamente disponible y es escalable. Después de crear una puerta de enlace a Internet, deberá conectarla
a su VPC.
Una puerta de enlace virtual privada le permite conectar su VPC de AWS a otra red privada. Una vez que crea y adjunta
una VGW a una VPC, la puerta de enlace actúa como ancla en el lado AWS de la conexión. En el otro lado de la
conexión, necesitará conectar una puerta de enlace de cliente a la otra red privada. Un dispositivo de puerta de enlace
de cliente es un dispositivo físico o una aplicación de software en su lado de la conexión. Una vez que disponga de
ambas pasarelas, podrá establecer una conexión VPN encriptada entre ambos lados.
El destino, que es un rango de direcciones IP a donde quiere que vaya su tráfico. En el ejemplo del envío de una
carta, necesita un destino para encaminar la carta al lugar apropiado. Lo mismo ocurre con el enrutamiento del
tráfico. En este caso, el destino es el rango de IP de nuestra red VPC.
El destino, que es la conexión a través de la cual enviar el tráfico. En este caso, el tráfico se enruta a través de
la red VPC local.
Salida
La ACL de red por defecto, mostrada en la tabla anterior, permite todo el tráfico que entra y sale de su subred. Para
permitir que los datos fluyan libremente hacia su subred, éste es un buen punto de partida. Sin embargo, es posible que
desee restringir los datos a nivel de subred. Por ejemplo, si tiene una aplicación web, podría restringir su red para permitir
el tráfico HTTPS y el tráfico del protocolo de escritorio remoto (RDP) a sus servidores web.
Entrada
Salida
Observe que en el ejemplo de ACL de red anterior, permite la entrada 443 y la salida en el rango 1025-65535. Esto se
debe a que HTTP utiliza el puerto 443 para iniciar una conexión y responderá a un puerto efímero. Las ACL de red se
consideran sin estado, por lo que debe incluir tanto los puertos de entrada como los de salida utilizados para el protocolo.
Si no incluye el rango saliente, su servidor respondería pero el tráfico nunca saldría de la subred.
Dado que las ACL de red están configuradas por defecto para permitir el tráfico entrante y saliente, no necesita cambiar
su configuración inicial a menos que necesite capas de seguridad adicionales.
La siguiente capa de seguridad es para sus Instancias EC2. Aquí, puede crear un cortafuegos llamado grupo de seguridad.
La configuración por defecto de un grupo de seguridad bloquea todo el tráfico entrante y permite todo el tráfico saliente.
Puede que se pregunte: "¿Esto no bloquearía todas las instancias EC2 para que no reciban la respuesta de ninguna
solicitud de los clientes?" Pues bien, los grupos de seguridad son con estado, lo que significa que recordarán si una
conexión ha sido iniciada originalmente por la instancia EC2 o desde el exterior y permitirán temporalmente que el
tráfico responda sin tener que modificar las reglas de entrada.
Si desea que su instancia EC2 acepte tráfico de Internet, tendrá que abrir puertos de entrada. Si tiene un servidor web,
puede que necesite aceptar peticiones HTTP y HTTPS para permitir la entrada de ese tipo de tráfico a través de su grupo
de seguridad. Puede crear una regla de entrada que permita el puerto 80 (HTTP) y el puerto 443 (HTTPS) como se
muestra a continuación.
Reglas de entrada
En una unidad anterior aprendió que las subredes pueden utilizarse para segregar el tráfico entre los ordenadores de su
red. Los grupos de seguridad pueden utilizarse para hacer lo mismo. Un patrón de diseño común consiste en organizar
sus recursos en diferentes grupos y crear grupos de seguridad para cada uno de ellos con el fin de controlar la
comunicación de red entre ellos.
Este ejemplo le permite definir tres niveles y aislar cada nivel con las reglas de grupo de seguridad que defina. En este
caso, sólo permite el tráfico de Internet al nivel web a través de HTTPS, del nivel web al nivel de aplicaciones a través
de HTTP, y del nivel de aplicaciones al nivel de bases de datos a través de MySQL. Esto es diferente de los entornos
on-premise tradicionales, en los que usted aísla grupos de recursos mediante la configuración de VLAN. En AWS, los
grupos de seguridad le permiten lograr el mismo aislamiento sin atarlo a su red.