SlideShare una empresa de Scribd logo
 
Acelera tu éxito en la nube 
Amazon Web Services 
Trambo Training 
Por Brayan Lemus 
 
 
Introducción 
La siguiente guía es una adaptación de diferentes materiales de entrenamiento y
                       
documentación específica de Amazon Web Services (AWS). El objetivo servir como apoyo en
                         
la formación de conocimientos de uso práctico e integral de los diferentes servicios que
                           
AWS ofrece, utilizando arquitecturas confiables, elásticas, tolerante a fallos y de alta
                       
disponibilidad.  
 
 
 
 
 
Indice 
Objetivos y expectativas 
Amazon Web Services (AWS) 
Creación de cuenta 
Ingreso a la cuenta de AWS 
Consola de AWS 
Crear un usuario de IAM 
Optimizando flujos de trabajo 
¿Qué es un desarrollador de software? 
¿Qué es un administrador de sistemas? 
El esquema convencional 
¿Que es DevOps? 
La cultura DevOps y sus herramientas 
Herramientas DevOps 
Source Code Repository 
Servidor de construcción 
Gestión de la configuración 
Infraestructura virtual 
Automatización de pruebas 
AWS CloudFormation - Infraestructura as a Code 
Anatomía de plantilla 
JSON 
YAML 
Secciones de plantilla 
Format Version (optional) 
Description (optional) 
Metadata (optional) 
Parameters (optional) 
Mappings (optional) 
Conditions (optional) 
Transform (optional) 
Resources (required) 
Outputs (optional) 
Definiendo un Parámetro en una Plantilla 
 
2 
 
 
Referencia a un parámetro dentro de una plantilla 
Resources 
¿Qué es Amazon VPC? 
Conceptos de Amazon VPC 
VPC y subredes 
Acceso a Internet 
¿Qué es Amazon S3? 
Uso de buckets de Amazon S3 
Trabajo con objetos de Amazon S3 
¿Qué es Amazon EC2? 
Recurso de CloudFormation para EC2 
Características de Amazon EC2 
Instancias Amazon EC2 de Linux 
Conectarse a la instancia de Linux 
Roles de IAM 
CloudFormation Resource: 
Políticas y permisos 
Docker 
Contenedores e imágenes 
Contenedores y máquinas virtuales. 
Installación 
Ejecución y administración de imágenes 
Definir un contenedor con Dockerfile 
La applicación 
Requirements.txt 
app.py 
Construir la aplicación 
Ejecuta la aplicación 
Etiqueta la imagen 
AWS ECR 
Instale la CLI de AWS 
Pasos para subir una image Docker a ECR 
Amazon Elastic Container Service (ECS) 
Definiciones de tareas de Amazon ECS 
Servicios 
 
3 
 
 
Elastic Load Balancing 
Balanceador de carga clásico 
Balanceador de carga de red 
Balanceador de carga de aplicaciones 
Beneficios 
Características clave 
Equilibrio de carga en la capa 7 
Compatibilidad con HTTPS 
Indicación de nombre de servidor (SNI) 
Direcciones IP como destinos 
Funciones de AWS Lambda como destinos 
Grupos de destino para los Application Load Balancers 
Agentes de escucha para Application Load Balancer 
 
Objetivos y expectativas 
No se pretende que el estudiante aprenda a profundidad los diferentes conceptos 
practicados en este curso, más bien, se pretende implantar la semilla de curiosidad para 
que el estudiante tenga las herramientas necesarias para comenzar el camino de 
aprendizaje de esta emergente cultura estructural de una forma práctica. 
Por lo tanto, el objetivo general de este taller es crear una perspectiva general sobre las 
tendencias tecnológicas actuales sobre el desarrollo, integración e infraestructura de una 
manera concreta, práctica y útil. 
Los objetivos específicos de este taller consolidan la utilización de infraestructura como 
código para crear los distintos componentes que al unificarse constituyen la lógica base de 
los sistemas de automatización de infraestructura de funcionamiento integral, estos 
conceptos pueden expandirse mediante la exploración individual a necesidades 
específicas. Los componentes pueden identificarse de la siguiente manera: 
● Infraestructura como código. 
● Redes virtuales. 
● Sistemas de almacenamiento. 
● Sistemas de cómputo escalables. 
 
4 
 
 
● Seguridad y acceso. 
● Sistemas distribuidos y contenerización. 
● Distribución de carga. 
● Monitoreo. 
Al final del curso, el estudiante se llevará consigo infraestructura como código portable y 
funcional incluyendo los atributos descritos anteriormente.  
Nuevamente se especifica que el objetivo no es la comprensión total de estos temas, si no 
la introducción a los mismos. 
 
 
Amazon Web Services (AWS) 
Amazon Web Services ofrece (AWS) un amplio conjunto de productos globales basados en
                         
la nube, incluidas aplicaciones para cómputo, almacenamiento, bases de datos, análisis,
                     
redes, dispositivos móviles, herramientas para desarrolladores, herramientas de
               
administración, IoT, seguridad y aplicaciones empresariales. Estos servicios ayudan a las
                     
empresas a avanzar con mayor rapidez, reducir los costos de TI y escalar. AWS cuenta con
                               
la confianza de las mayores compañías y las empresas emergentes más innovadoras para
                         
respaldar una amplia variedad de cargas de trabajo, como las aplicaciones web y móviles,
                           
el desarrollo de juegos, el almacenamiento y procesamiento de datos, el almacenamiento
                       
en general o el archivado, entre muchas otras. 
Creación de cuenta  
La capa gratuita de AWS le permite obtener experiencia práctica gratuita con la plataforma,
                           
los productos y los servicios de AWS. El proceso de creación sencillo, para comenzar
                           
ingresar al siguiente link.  
https://portal.aws.amazon.com/gp/aws/developer/registration/index.html 
 
5 
 
 
 
 
 
 
 
 
 
 
 
En la parte superior derecha, es posible
             
seleccionar el idoma predefinido.  
Para iniciar, es necesario ingresar todos los
             
datos solicitados en la forma y luego presionar
               
Continuar​ . 
 
 
 
 
 
 
En la siguiente página, es necesario
           
ingresar la información de contacto. Las
           
 
6 
 
 
cuentas pueden ser profesionales o personales. No existe diferencia alguna entre estas
                       
opciones, en cuestión de recursos o la capa gratuita. Luego presionar ​Crear cuenta y
                           
continuar ​. 
 
 
 
 
 
 
En la siguiente página, es necesario ingresar la información de pago. La capa gratuita es
                             
auténticamente gratuita, pero, todos los servicios tienen un límite de consumo. Por lo
                         
tanto, es necesario ingresar información de pago para poder cubrir la utilización de los
                           
recursos que excedan el límite establecido.  
 
7 
 
 
 
IMPORTANTE: ​Trambo Cloud o el Campus Tecnológico, no se hacen responsables por la
                         
utilización o consumo de recursos en AWS, y por defecto, cualquier cargo asociado a los
                             
mismos. Durante el curso, se darán a conocer los distintos procesos para la eliminación de
                             
recursos luego su utilización y queda bajo total responsabilidad del estudiante ejecutar
                       
dichos procesos en su debido tiempo.  
Luego, es necesario validar la cuenta utilizando su número telefónico. Es necesario
                       
ingresar el número y presionar ​Ponerse en contacto conmigo. 
 
8 
 
 
 
Una número se desplegará en la pantalla, debe ingresarlo en su teléfono utilizando las
                           
teclas de numeración. Luego del ingreso, el sistema automatizado confirmara su ingreso y
                         
la pantalla de la página web cambiará.  
 
En la siguiente sección, debe presionar ​Basic Plan - Gratis -. Todos los planes incluyen la
                               
capa gratuita. La diferencia está en el tipo de soporte adquirido, el cual determina la
                             
velocidad de respuesta ante distintos incidentes o peticiones.  
 
9 
 
 
 
 
 
 
 
 
 
 
Éste es el último paso. AWS validará su cuenta y enviará un correo de confirmación 
 
10 
 
 
 
Ingreso a la cuenta de AWS 
AWS cuenta con la consola WEB, la cual provee el acceso a los distintos recursos de AWS.  
https://console.aws.amazon.com/ 
 
 
 
11 
 
 
AWS cuenta con dos modalidades de ingreso.  
● Cuenta maestra 
● Usuario de IAM 
AWS Identity and Access Management (IAM) le permite administrar el acceso a los servicios
                           
y recursos de AWS de manera segura. Con IAM, puede crear y administrar usuarios y
                             
grupos de AWS, así como utilizar permisos para conceder o denegar el acceso de estos a
                               
los recursos de AWS. Para iniciar por primera vez, es necesario hacerlo con la cuenta
                             
maestra. Por lo tanto, debe ingresar el correo electrónico utilizado para crear la cuenta y,
                             
luego de presionar continuar, la contraseña asociada. 
Consola de AWS 
La documentación y la consola web de AWS, tienen traducciones a variedad de idiomas,
                           
mas no por completo. Obviamente dada la diversidad de contenido, recursos y opciones, la
                           
mayoria de texto se encuentra en inglés.  
La navegación en la consola es relativamente intuitiva. 
 
Uno de los objetivos de este curso es dar a conocer la nomenclatura que tienen los
                               
distintos servicios de AWS, los cuales servirán para identificar los recursos a utilizar y
                           
navegar la consola web. 
 
12 
 
 
Cuando ya se tiene familiaridad con los recursos y sus iconos, es posible guardar accesos
                             
rápidos a la pagina de los recursos que más se utilizan dando click a ​pin ​en la parte
                                   
superior de la página.  
 
 
 
 
 
 
 
 
Crear un usuario de IAM 
 
13 
 
 
 
Cómo es posible observar en la figura, es posible cambiar el idioma al español en la parte
                                 
inferior izquierda. Ésta opción está disponible en muchos recursos, pero no en todos.  
La seguridad la cuenta maestra es de suma importancia. Por lo que es importante no
                             
utilizar esta cuenta para tareas que no requieren los privilegios especiales de la misma. Por
                             
lo que la primera actividad será crear un usuario administrador, el cual tendrá acceso a
                             
todos los recursos disponibles. 
 
 
 
 
AWS cuenta con distintos tipos de acceso.   
 
14 
 
 
● Acceso mediante programación​: 
○ Habilita una ID de clave de acceso y una clave de acceso secreta para el SDK,
                               
la CLI y la API de AWS, además de otras herramientas de desarrollo. 
● Acceso a la consola de administración de AWS​: 
○ Habilita una contraseña que permite a los usuarios iniciar sesión en la
                       
consola de administración WEB de AWS. 
AWS utiliza políticas de seguridad para permitir o denegar el acceso a distintos recursos.
                           
Estas políticas pueden ser asociadas a usuarios o roles. Los roles son conjuntos de políticas
                             
que pueden ser asociadas tanto a usuarios como a recursos de AWS, los cuales veremos
                             
más adelante. AWS cuenta con ciertas políticas predefinidas, las cuales en este momento
                         
utilizaremos para dar permisos de administrador al usuario de trabajo.  
 
 
 
 
 
Para crear un usuario es necesario seguir los siguientes pasos: 
 
15 
 
 
1. Seleccionar ​Usuarios​. 
2. En la parte superior izquierda, seleccionar ​Añadir Usuario(s)​. 
3. Ingresar el nombre de usuario.  
4. Seleccionar el tipo de acceso, en este caso los 2. 
5. Crear la contraseña o permitir que sea generada automáticamente.  
6. Si se ha colocado una contraseña personalizada, no seleccionar el restablecimiento
                     
de la misma en la próxima sesión.  
7. Presionar continuar en la parte inferior izquierda.  
8. En establecer permisos, seleccionar ​Asociar directamente las políticas existentes.
                 
Como se muestra en la imagen anterior. 
9. Buscar y seleccionar la política llamada ​AdministratorAccess. 
10. Seleccionar etiquetas de nombramiento si se desea. 
11. Verificar la información recolectada a efectuar.  
12. Presionar ​Crear Usuario. 
13. Descargar las claves de acceso. 
En esta etapa se mostrarán claves de acceso para application programming interface​(​API).
                       
Las cuales constan de 
● Identificador de clave de acceso (AWS_ACCESS_KEY_ID) 
● Clave de acceso secreta (AWS_SECRET_ACCESS_KEY) 
Es importante recalcar que estas claves pueden ser utilizadas para administrar los
                       
recursos de AWS al que el usuario asociado tenga permisos de acceder, lo cual puede
                             
repercutir en cargos inesperados si dichas claves son expuestas públicamente o
                     
vulnerables a ataques de personas inescrupulosas, por lo que es de suma importancia que
                           
las mismas se conserven en un lugar seguro y confiable. Por otro lado, es posible invalidar,
                               
borrar y generar nuevas claves. Por lo que tampoco es indispensable conservarlas. 
 
 
 
16 
 
 
Luego de este proceso, es necesario salir de la sesión actual para ingresar con el usuario
                               
recién creado. Para esto primero debemos regresar al panel principal de IAM y copiar el
                             
link de acceso para usuarios específicamente de la cuenta creada. 
 
El link tiene contiene el número de cuenta. Al dar click en las hojas al lado derecho, se
                                   
copiara el link en el portapapeles de su sistema operativo. El formato es el siguiente: 
https//NUMERO_DE_CUENTA.signin.aws.amazon.com/console 
Por lo que el número de cuenta puede adquirirlo de esta manera. Evidentemente no es la
                               
única. Pero este número es el necesario para el ingreso de usuarios regulares. 
Luego de obtener el link, es necesario salir de la sesión actual. Esto se logra en la parte
                                   
superior derecha en ​Sign Out. 
 
 
 
 
17 
 
 
Luego, ingresar al link obtenido. Esto debe enviar su conexión hacia el sitio adecuado de
                             
autenticación para usuarios.  
 
El número de cuenta debe estar pre populado. Si no fuera el caso, debe ingresar el número
                                 
de cuenta obtenido en el link. Si ya no cuenta con el link, puede ingresar con la cuenta
                                   
maestra utilizando el link ​Iniciar ​sesión utilizando credenciales de cuenta raíz ​y obtener el link
                             
nuevamente en el panel principal de IAM utilizando los pasos anteriormente descritos.  
Con estos pasos realizados, puede comenzar a explorar la consola de AWS. Los servicios
                           
incluidos en la capa gratuita están especificados en el siguiente link. 
https://aws.amazon.com/es/free/ 
Es importante estar familiarizado con este detalle para evitar sorpresas de facturación. 
El contenido del curso será utilizando únicamente recursos incluidos en la capa gratuita, se
                           
impartirá una guia de destrucción de recursos en cada uno de los módulos a seguir para
                               
que cada cursante tenga las herramientas necesarias para hacerlo responsable e
                     
individualmente. 
 
18 
 
 
Optimizando flujos de trabajo 
El flujo de trabajo es el estudio de los aspectos operacionales de una actividad de trabajo:
                               
cómo se estructuran las tareas, cómo se realizan, cuál es su orden correlativo, cómo se
                             
sincronizan, cómo fluye la información que soporta las tareas y cómo se le hace
                           
seguimiento al cumplimiento de las tareas 
¿Qué es un desarrollador de software? 
La función del desarrollador de software recae en un programador o una compañía
                         
comercial que se dedica a uno o más aspectos del proceso de desarrollo de software. Se
                               
trata de un ámbito más amplio de la programación algorítmica para el desarrollo de: 
● Nuevos productos. 
● Nuevas características. 
● Actualizaciones de seguridad. 
● Corrección de errores.  
¿Qué es un administrador de sistemas? 
El administrador de sistemas tiene por objeto garantizar el tiempo de actividad (uptime),
                         
rendimiento, uso de recursos y la seguridad de los servidores que administra de forma
                           
dinámica.  
En las organizaciones que cuentan con diversos sistemas informáticos, se torna más
                       
compleja la administración. De esta forma, las funciones del administrador de sistemas se
                         
dividen en roles: administrador de servidores, de bases de datos, de redes, de correo
                           
electrónico, de servidores web, de seguridad, de respaldo etc. Cada uno con sus
                         
correspondientes tareas específicas. 
 
 
 
 
19 
 
 
El esquema convencional 
Antes del desarrollo de la aplicación DevOps, los equipos de desarrollo se encargaban de
                           
reunir los requisitos comerciales para un programa de software y escribir un código. Luego,
                           
un equipo de control de calidad por separado, prueba el programa en un entorno de
                             
desarrollo aislado, y libera el código, si se cumplen los requisitos, a los operaciones para su
                               
implementación. Los equipos de implementación están más fragmentados en grupos
                   
aislados como redes y bases de datos. Cada vez que un programa de software se "lanza" a
                                 
un equipo independiente, agrega cuellos de botella. El problema con este paradigma es
                         
que cuando los equipos trabajan por separado: 
● Los desarrolladores no son conscientes de los obstáculos de control de calidad y
                         
operaciones que impiden que el programa funcione como se esperaba. 
● El control de calidad y las operaciones normalmente trabajan considerando
                   
múltiples escenarios funciones y tienen poco contexto del propósito comercial y/o
                     
el valor del software. 
● Cada grupo tiene objetivos opuestos que pueden conducir a la ineficiencia y se tiene
                           
la tendencia a culpar a otros equipos de trabajo del mal funcionamiento de
                         
características del producto.  
 
 
20 
 
 
¿Que es DevOps? 
DevOps se ha convertido en una palabra de moda sobrecargada que significa muchas
                         
cosas diferentes para mucha gente. Eso es un desafío cuando intenta comprender qué es
                           
DevOps o definir DevOps. En lugar de tratar de definir DevOps, es mejor describir los
                             
conceptos fundamentales que diferentes personas asocian con DevOps como una
                   
evolución pensamiento respecto a la visión integral de flujos de trabajo. 
DevOps integra a los desarrolladores y equipos de operaciones para mejorar la
                       
colaboración y la productividad mediante la automatización de la infraestructura, los flujos
                       
de trabajo y la medición continua del rendimiento de las aplicaciones. 
DevOps aborda los desafíos del desarrollo de una aplicación al establecer equipos de
                         
colaboración multifuncionales que comparten la responsabilidad de mantener el sistema
                   
que ejecuta el software y preparar el software para que se ejecute en ese sistema, con una
                                 
mayor retroalimentación respecto a calidad y automatización. 
Por lo tanto, DevOps va más allá de la unión de los equipos que integran los flujos de
                                   
trabajo y desarrollo. DevOps es la adopción de una cultura de automatización e integración
                           
de procesos de desarrollo con el objetivo de mejorar la colaboración entre todas las partes
                             
interesadas por medio de la automatización; desde la planificación hasta proceso de
                       
entrega. Ésto con el objetivo de: 
● Mejorar la frecuencia de despliegue. 
● Lograr un tiempo de comercialización más rápido. 
● Bajar la tasa de fallos de nuevos lanzamientos. 
● Acortar el tiempo de espera entre correcciones. 
● Mejorar el tiempo medio de recuperación. 
● Incrementar la seguridad de las estructuras. 
● Incrementar la disponibilidad los ambientes de desarrollo y producción. 
● Tener una alta tolerancia a fallos inesperados. 
 
 
 
21 
 
 
 
La cultura DevOps y sus herramientas 
Una forma útil de percibir la cultura, es ver los diferentes aspectos de DevOps. El eje 
horizontal inferior representa lo que las personas perciben como más fundamental. 
Algunas personas creen firmemente que los DevOps deberían centrarse en la cultura más 
que en herramientas, mientras que en otras personas tienden a valorar las herramientas 
sobre la cultura. 
 
 
22 
 
 
El eje vertical representa los tres niveles de la cadena de entrega de DevOps: integración
                             
continua, entrega continua y despliegue continuo. La comunidad de DevOps se refiere a las
                           
organizaciones, que han dominado la cultura DevOps, como unicornios rosados porque
                     
actualmente hay muy pocas de ellas y no se ven en la naturaleza muy a menudo. Ejemplos
                                 
populares de estos unicornios son compañías como Netflix, Etsy, Amazon, Pinterest, Flicker,
                       
IMVU y Google.  
Herramientas DevOps 
Las herramientas de DevOps consisten en administración de configuración, sistemas de
                     
prueba y compilación, implementación de aplicaciones, control de versiones y
                   
herramientas de monitoreo. La integración continua, la entrega continua y el despliegue
                       
continuo requieren herramientas diferentes. Si bien las tres prácticas pueden usar las
                       
mismas herramientas, necesitará más herramientas a medida que avance en la cadena de
                         
entrega. 
 
 
 
 
23 
 
 
Estas son algunas de las herramientas y prácticas clave que debe conocer. 
Source Code Repository 
Un repositorio de código fuente es un lugar donde los desarrolladores registran y cambian
                           
código. El repositorio de código fuente administra las distintas versiones de código que se
                           
registran, por lo que los desarrolladores no escriben sobre el trabajo de los demás. 
El control de la fuente probablemente haya existido durante cuarenta años, pero es un
                           
componente importante de la integración continua. Las herramientas populares de
                   
repositorio de código fuente son Git, Subversion, Cloudforce, Bitbucket y TFS. 
Servidor de construcción 
El servidor de compilación es una herramienta de automatización que compila el código en
                           
el repositorio de código fuente en una base de código ejecutable. Las herramientas
                         
populares son Jenkins, SonarQube y Artifactory. 
Gestión de la configuración 
La gestión de la configuración define la configuración de un servidor o un entorno. Las
                             
herramientas de gestión de configuración más populares son Puppet y Chef. 
Infraestructura virtual 
Amazon Web Services y Microsoft Azure son ejemplos de infraestructuras virtuales. Las
                       
infraestructuras virtuales son proporcionadas por proveedores en la nube que venden
                     
infraestructura o plataforma como un servicio (PaaS). Estas infraestructuras tienen API que
                       
le permiten crear nuevas máquinas mediante programación con herramientas de
                   
administración de configuración como Puppet y Chef. 
 
 
 
 
 
24 
 
 
Automatización de pruebas 
La automatización de pruebas ha existido durante mucho tiempo. Las pruebas de DevOps
                         
se centran en las pruebas automatizadas dentro de su canal de compilación para
                         
garantizar que, en el momento en que tenga una compilación desplegable, esté seguro de
                           
que esté listo para implementarse. No puede llegar al punto de entrega continua en el que
                               
está bastante seguro sin ninguna intervención humana de que su código se puede
                         
implementar sin una estrategia de prueba automatizada extensa. Las herramientas
                   
populares son el Selenium y el Water. 
 
AWS CloudFormation - Infraestructura as a Code 
AWS CloudFormation es un servicio de Amazon dedicado a solventar la necesidad de
                         
estandarizar y replicar las arquitecturas que tenemos dentro de nuestra cuenta en
                       
diferentes regiones.  
El objetivo de AWS CloudFormation es facilitar la ejecución y optimización de
                       
aprovisionamiento de recursos de AWS, mejorar costos de entrega de aplicaciones. 
De la forma en que AWS CloudFormation es implementado es a través de plantillas que
                             
puede ser formato ​json o ​yaml el cual no debe ser memorizado ya que la documentación
                               
de AWS es bastante amplia y sería impráctico e imposible aprenderse todos los recursos y
                             
sus propiedades. La creación de plantillas nos permite tener una biblioteca propietaria de
                         
recursos y arquitecturas capaces de entregar en cualquier momento y de manera
                       
organizada un set de recursos a través del código que las componen. 
Más información acerca de AWS CloudFormation (CFN) en la documentación oficial de AWS.
                         
https://aws.amazon.com/es/cloudformation/?nc1=h_ls 
 
 
 
 
25 
 
 
Anatomía de plantilla 
Una plantilla es un archivo de texto con formato JSON o YAML que describe su
                             
infraestructura de AWS. Los siguientes ejemplos muestran una estructura de plantillas de
                       
AWS CloudFormation y sus secciones. 
JSON 
{
​"AWSTemplateFormatVersion"​ : ​"version date"​,
​"Description"​ : ​"JSON string"​,
​"Metadata"​ : {
​template​ metadata
},
​"Parameters"​ : {
​set​ ​of​ parameters
},
​"Mappings"​ : {
​set​ ​of​ mappings
},
​"Conditions"​ : {
​set​ ​of​ conditions
},
​"Transform"​ : {
​set​ ​of​ transforms
},
​"Resources"​ : {
​set​ ​of​ resources
},
​"Outputs"​ : {
​set​ ​of​ outputs
}
} 
 
26 
 
 
 
YAML 
---
AWSTemplateFormatVersion: ​"version date"
Description:
​String
Metadata:
​template​ ​metadata
Parameters:
​set​ ​of​ ​parameters
Mappings:
​set​ ​of​ ​mappings
Conditions:
​set​ ​of​ ​conditions
Transform:
​set​ ​of​ ​transforms
Resources:
​set​ ​of​ ​resources
Outputs:
​set​ ​of​ ​outputs 
 
 
 
 
 
 
 
27 
 
 
Secciones de plantilla 
Las plantillas incluyen varias secciones principales. La sección de Recursos es la única 
sección requerida. Algunas secciones en una plantilla pueden estar en cualquier orden. Sin 
embargo, a medida que construye su plantilla, puede ser útil usar el orden lógico que se 
muestra en la siguiente lista porque los valores de una sección pueden referirse a los 
valores de una sección anterior. 
Format Version (optional) 
La versión de la plantilla de AWS CloudFormation que cumple la plantilla. La versión del 
formato de la plantilla no es la misma que la versión de la API o WSDL. La versión del 
formato de la plantilla puede cambiar independientemente de las versiones de API y WSDL. 
Description (optional) 
Una cadena de texto que describe la plantilla. Esta sección debe seguir siempre la sección 
de versión de formato de plantilla. 
Metadata (optional) 
Objetos que proporcionan información adicional sobre la plantilla. 
Parameters (optional) 
Valores que se pasan a su plantilla en tiempo de ejecución (cuando crea o actualiza una 
pila). Puede consultar los parámetros de las secciones Recursos y Salidas de la plantilla. 
Mappings (optional) 
Una asignación de claves y valores asociados que puede usar para especificar valores de 
parámetros condicionales, similar a una tabla de búsqueda. Puede hacer coincidir una 
clave con un valor correspondiente utilizando la función intrínseca Fn :: FindInMap en las 
secciones Recursos y Resultados. 
 
 
28 
 
 
 
Conditions (optional) 
Condiciones que controlan si se crean ciertos recursos o si se asigna un valor a ciertas 
propiedades de recursos durante la creación o actualización de la pila. Por ejemplo, podría 
crear condicionalmente un recurso que depende de si la pila es para un entorno de 
producción o prueba. 
Transform (optional) 
Para aplicaciones sin servidor (también conocidas como aplicaciones basadas en Lambda), 
especifica la versión del Modelo de aplicación sin servidor de AWS (AWS SAM) que se debe 
usar. Cuando especifica una transformación, puede usar la sintaxis de AWS SAM para 
declarar recursos en su plantilla. El modelo define la sintaxis que puede utilizar y cómo se 
procesa. 
También puede usar las transformaciones de AWS :: Include para trabajar con fragmentos 
de plantillas que se almacenan por separado de la plantilla principal de AWS 
CloudFormation. Puede almacenar sus archivos de fragmentos en un depósito de Amazon 
S3 y luego reutilizar las funciones en varias plantillas. 
Resources (required) 
Especifica los recursos de la pila y sus propiedades, como una instancia de Amazon Elastic 
Compute Cloud o un grupo de Amazon Simple Storage Service. Puede consultar los 
recursos en las secciones de Recursos y Resultados de la plantilla. 
Outputs (optional) 
Describe los valores que se devuelven cuando ves las propiedades de tu pila. Por ejemplo, 
puede declarar una salida para un nombre de depósito S3 y luego llamar al comando AWS 
CLI de aws cloudformation describe-stacks para ver el nombre. 
 
 
 
29 
 
 
Definiendo un Parámetro en una Plantilla 
El siguiente ejemplo declara un parámetro llamado InstanceTypeParameter. Este 
parámetro le permite especificar el tipo de instancia de Amazon EC2 para que la pila la use 
cuando cree o actualice la pila. 
"Parameters"​ : {
​"InstanceTypeParameter"​ : {
​"Type"​ : ​"String"​,
​"Default"​ : ​"t2.micro"​,
​"AllowedValues"​ : [​"t2.micro"​, ​"m1.small"​, ​"m1.large"​],
​"Description"​ : ​"Enter t2.micro, m1.small, or m1.large. Default is
t2.micro."
}
}
Parameters:
InstanceTypeParameter:
Type: String
Default: t2​.micro
AllowedValues:
- t2​.micro
- m1​.small
- m1​.large
Description: Enter t2​.micro​, m1​.small​, or m1​.large​. Default is t2​.micro​.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30 
 
 
 
Referencia a un parámetro dentro de una plantilla 
"Ec2Instance"​ : {
​"Type"​ : ​"AWS::EC2::Instance"​,
​"Properties"​ : {
​"InstanceType"​ : { ​"Ref"​ : ​"InstanceTypeParameter"​ },
​"ImageId"​ : ​"ami-0ff8a91507f77f867"
}
}
Ec2Instance:
Type:​ ​AWS::EC2::​Instance
Properties:
InstanceType:
Ref:​ InstanceTypeParameter
ImageId:​ ami​-0​ff8a91507f77f867
Mas información: 
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-s
tructure.html
Resources 
La sección de Recursos requeridos declara los recursos de AWS que desea incluir en la pila, 
como una instancia de Amazon EC2 o un depósito de Amazon S3. 
La sección de Recursos consiste en el nombre clave de Recursos. La siguiente pseudo 
plantilla describe la sección de Recursos: 
​"Resources"​ : {
​"MyInstance"​ : {
​"Type"​ : ​"AWS::EC2::Instance"​,
​"Properties"​ : {
​"UserData"​ : {
​"Fn::Base64"​ : {
​"Fn::Join"​ : [ ​""​, [ ​"Queue="​, { ​"Ref"​ : ​"MyQueue"​ } ] ]
} },
​"AvailabilityZone"​ : ​"us-east-1a"​,
​"ImageId"​ : ​"ami-0ff8a91507f77f867"
}
},
 
31 
 
 
​"MyQueue"​ : {
​"Type"​ : ​"AWS::SQS::Queue"​,
​"Properties"​ : {
}
}
}
Resources:
MyInstance:
Type:​ ​"AWS::EC2::Instance"
Properties:
UserData:
​"Fn::Base64"​:
!Sub |
Queue=${MyQueue}
AvailabilityZone:​ ​"us-east-1a"
ImageId:​ ​"ami-0ff8a91507f77f867"
MyQueue:
Type:​ ​"AWS::SQS::Queue"
Properties:​ {}
Ejemplos estructurados: ​https://github.com/TramboCloud/AWS-101
¿Qué es Amazon VPC? 
Amazon Virtual Private Cloud (Amazon VPC) le permite iniciar los recursos de AWS en una 
red virtual que ha definido. Esta red virtual se parece mucho a una red tradicional que 
operaría en su propio centro de datos, con los beneficios de usar la infraestructura 
escalable de AWS. 
Conceptos de Amazon VPC 
A medida que vaya utilizando Amazon VPC, comprenderá los conceptos clave de esta red 
virtual, así como las similitudes y diferencias con respecto a sus propias redes. Esta sección 
proporciona una descripción breve de los conceptos clave de Amazon VPC. 
Amazon VPC es la capa de red de Amazon EC2. Si no conoce Amazon EC2, consulte ​¿Qué es 
Amazon EC2?​ en la Guía del usuario de Amazon EC2 para instancias de Linux para obtener 
información general. 
 
32 
 
 
VPC y subredes 
Una nube virtual privada (VPC) es una red virtual dedicada para su cuenta de AWS. Esta 
infraestructura en la nube está aislada lógicamente de otras redes virtuales de la nube de 
AWS. Por lo tanto, puede lanzar a su VPC recursos de AWS como, por ejemplo, instancias de 
Amazon EC2. Puede especificar un intervalo de direcciones IP para la VPC, añadir subredes, 
asociar grupos de seguridad y configurar tablas de ruteo. 
Una subred es un rango de direcciones IP en su VPC. Puede lanzar recursos de AWS a 
cualquier subred que especifique. Utilice una subred pública para los recursos que deben 
conectarse a Internet y una subred privada para los recursos que no dispondrán de 
conexión a Internet. Para obtener más información acerca de las subredes públicas y 
privadas, consulte ​Conceptos básicos de VPC y subredes​. 
Para proteger los recursos de AWS de cada subred, puede utilizar varias capas de 
seguridad, incluidos grupos de seguridad y las listas de control de acceso (ACL) a la red. 
Para obtener más información, consulte ​Seguridad​. 
Acceso a Internet 
Es posible controlar el modo en que las instancias lanzadas en la VPC tienen acceso a los 
recursos externos a la VPC. 
La VPC predeterminada incluye un gateway de Internet, y las subredes predeterminadas 
son subredes públicas. Las instancias que se lanzan en subredes predeterminadas tienen 
dirección IPv4 privada y dirección IPv4 pública. Dichas instancias pueden comunicarse con 
Internet a través del gateway de Internet. Un gateway de Internet permite que las 
instancias se conecten a Internet a través del límite de la red de Amazon EC2. 
De forma predeterminada, las instancias que se lanzan en subredes no predeterminadas 
disponen de dirección IPv4 privada; sin embargo, no disponen de dirección IPv4 pública a 
no ser que asigne específicamente una en el lanzamiento o que modifique el atributo de 
dirección IP pública de la subred. Dichas instancias pueden comunicarse entre sí, pero no 
pueden tener acceso a Internet. 
 
 
33 
 
 
De manera alternativa, para permitir que una instancia de su VPC inicie conexiones 
salientes a Internet y bloquear las conexiones entrantes no deseadas, puede utilizar un 
dispositivo de conversión de direcciones de red (NAT) para el tráfico IPv4. El dispositivo NAT 
asigna varias direcciones IPv4 privadas a una única dirección IPv4 pública. Los dispositivos 
NAT tienen dirección IP elástica y están conectados a Internet a través de gateways de 
Internet. Puede conectar una instancia de una subred privada a Internet a través del 
dispositivo NAT, que direcciona el tráfico desde la instancia al gateway de Internet y 
direcciona las respuestas a la instancia. 
 
Plantilla técnica de CloudFormation: 
https://github.com/TramboCloud/AWS-101/blob/master/network/vpc.yaml 
 
 
34 
 
 
 
¿Qué es Amazon S3? 
Amazon Simple Storage Service es un servicio de almacenamiento para Internet. Está 
diseñado para facilitar a los desarrolladores recursos de computación escalables basados 
en Web. 
Amazon S3 tiene una interfaz de servicios web simple que puede utilizar para almacenar y 
recuperar cualquier cantidad de datos, en cualquier momento, desde cualquier parte de la 
web. Ofrece a cualquier desarrollador acceso a la misma infraestructura de 
almacenamiento de datos económica, altamente escalable, fiable, segura y rápida que 
utiliza Amazon para mantener su propia red global de sitios web. Este servicio tiene como 
fin maximizar los beneficios del escalado y trasladarlos a los desarrolladores. 
En esta guía se explican los conceptos principales de Amazon S3, como los de bucket y 
objeto, y cómo trabajar con estos recursos con la interfaz de programación de aplicaciones 
(API) de Amazon S3. 
Uso de buckets de Amazon S3 
Amazon S3 es un almacenamiento en la nube para Internet. Para poder cargar sus datos 
(fotos, vídeos, documentos, etc.) primero debe crear un bucket en una de las regiones de 
AWS. Luego puede cargar la cantidad de objetos que desee en el bucket​. 
En términos de implementación, los buckets y objetos son recursos y Amazon S3 
proporciona Application Program Interfaces (API, Interfaces de programación de 
aplicaciones) para que pueda administrarlos. Por ejemplo, puede crear un bucket y cargar 
objetos con la API de Amazon S3. También puede usar la consola de Amazon S3 para 
realizar estas operaciones. La consola utiliza las API de Amazon S3 para enviar solicitudes a 
Amazon S3. 
Un nombre de bucket de Amazon S3 es globalmente único y todas las cuentas de AWS 
comparten el espacio de nombres. Esto significa que, una vez que se crea un bucket, 
ninguna otra cuenta de AWS de ninguna otra región de AWS puede usar el nombre de ese 
 
35 
 
 
bucket hasta que el bucket se elimina. No debe confiar en convenciones específicas de 
nomenclatura de buckets para propósitos de verificación de la seguridad o disponibilidad. 
Para conocer las directrices de nomenclatura de buckets, consulte ​Restricciones y 
limitaciones de los buckets​. 
Trabajo con objetos de Amazon S3 
Amazon S3 es un almacén sencillo de valores claves diseñado para almacenar tantos 
objetos como quiera. Puede almacenar estos objetos en uno o varios buckets. Un objeto 
consiste en lo siguiente: 
● Clave: nombre que se le asigna a un objeto. La clave de objeto se usa para 
recuperar el objeto. 
● Para obtener más información, consulte ​Clave y metadatos de objetos​. 
● ID de versión: en un bucket, una clave y un ID de versión identifican exclusivamente 
un objeto. 
● El ID de versión es una cadena que genera Amazon S3 cuando se agrega un objeto a 
un bucket. Para obtener más información, consulte ​Control de versiones de objetos​. 
● Valor: contenido que se está almacenando. 
● El valor de un objeto puede ser cualquier secuencia de bytes. El tamaño de los 
objetos puede variar desde cero hasta 5 TB. Para obtener más información, 
consulte ​Carga de objetos​. 
● Metadatos: conjunto de pares nombre-valor con el que puede almacenar 
información relativa al objeto. 
● Puede asignar metadatos, que se denominan metadatos definidos por el usuario, a 
sus objetos en Amazon S3. Amazon S3 asigna también metadatos de sistema a 
estos objetos, que se usan para administrar objetos. Para obtener más información, 
consulte ​Clave y metadatos de objetos​. 
 
36 
 
 
● Subrecursos: Amazon S3 usa el mecanismo de subrecursos para almacenar la 
información adicional específica al objeto. 
● Dado que los subrecursos están subordinados a los objetos, siempre están 
asociados con otras entidades, como objetos o buckets. Para obtener más 
información, consulte ​Subrecursos de objeto​. 
● Información de control de acceso: puede controlar el acceso a los objetos que 
almacena en Amazon S3. 
● Amazon S3 admite tanto el control de acceso basado en recursos, como con una 
lista de control de acceso (ACL) o políticas de bucket, como el control de acceso 
basado en usuarios. Para obtener más información, consulte ​Administración de 
permisos de acceso para los recursos de Amazon S3​. 
Para obtener más información acerca del trabajo con objetos, consulte las siguientes 
secciones. Los recursos de Amazon S3 (por ejemplo, buckets y objetos) son privados de 
manera predeterminada. Se deben conceder permisos explícitos para que otras personas 
puedan obtener acceso a estos recursos. Por ejemplo, puede que quiera compartir un 
video o una fotografía almacenada en el bucket de Amazon S3 en su sitio web. Eso solo 
funciona si se hace que el objeto sea público o si se usa una URL prefirmada en el sitio web. 
Para obtener más información acerca de compartir objetos, consulte ​Compartir un objeto 
con otros​. 
¿Qué es Amazon EC2? 
Amazon Elastic Compute Cloud (Amazon EC2) proporciona capacidad de computación 
escalable en la nube de Amazon Web Services (AWS). El uso de Amazon EC2 elimina la 
necesidad de invertir inicialmente en hardware, de manera que puede desarrollar e 
implementar aplicaciones en menos tiempo. Puede usar Amazon EC2 para lanzar tantos 
servidores virtuales como necesite, configurar la seguridad y las redes y administrar el 
almacenamiento. Amazon EC2 le permite escalar hacia arriba o hacia abajo para controlar 
cambios en los requisitos o picos de popularidad, con lo que se reduce la necesidad de 
prever el tráfico. 
 
37 
 
 
Recurso de CloudFormation para EC2 
​Ec2Instance​:
​Type​: ​AWS​::​EC2​::Instance
​Properties​:
​ImageId​: ami-1651d5f8718dfsg6
​KeyName​:
​Ref​: ​"KeyName"
​NetworkInterfaces​:
- ​AssociatePublicIpAddress​: ​"true"
​DeviceIndex​: ​"0"
​GroupSet​:
- ​Ref​: ​"myVPCEC2SecurityGroup"
​SubnetId​:
​Ref​: ​"PublicSubnet" 
Para más información, puede buscar en google: ​AWS​::​EC2​::Instance
 
Características de Amazon EC2 
Amazon EC2 ofrece las siguientes características: 
● Entornos informáticos virtuales, conocidos como instancias 
● Plantillas preconfiguradas para las instancias, conocidas como imágenes de 
máquina de Amazon (AMI), que empaquetan las partes que necesita para el 
servidor (incluido el sistema operativo y el software adicional) 
● Varias configuraciones de CPU, memoria, almacenamiento y capacidad de red de las 
instancias, conocidos como tipos de instancias 
● Información de inicio de sesión segura para las instancias con pares de claves (AWS 
almacena la clave pública y usted guarda la clave privada en un lugar seguro) 
● Volúmenes de almacenamiento para datos temporales que se eliminan cuando 
detiene o termina la instancia, conocidos como volúmenes de almacén de instancias 
 
38 
 
 
● Volúmenes de almacenamiento persistente para los datos usando Amazon Elastic 
Block Store (Amazon EBS), conocidos como volúmenes de Amazon EBS 
● Varias ubicaciones físicas para los recursos, como las instancias y los volúmenes de 
Amazon EBS, conocidas como regiones y zonas de disponibilidad 
● Un firewall que permite especificar los protocolos, los puertos y los rangos de 
direcciones IP que pueden alcanzar las instancias mediante el uso de grupos de 
seguridad 
● Direcciones IPv4 estáticas para informática en la nube dinámica, conocidas como 
direcciones IP elásticas 
● Metadatos, conocidos como etiquetas, que se pueden crear y asignar a los recursos 
de Amazon EC2 
● Redes virtuales que puede crear que están aisladas lógicamente del resto de la 
nube de AWS y que, opcionalmente, puede conectar a su propia red, conocidas 
como nubes privadas virtuales (VPC) 
Instancias Amazon EC2 de Linux 
La instancia es una instancia con respaldo Amazon EBS (lo que significa que el volumen raíz 
es un volumen de EBS). Puede especificar la zona de disponibilidad en la que se ejecuta la 
instancia o dejar que Amazon EC2 seleccione una zona de disponibilidad por usted. Al 
lanzar la instancia, la protege especificando con un par de claves y un grupo de seguridad. 
Al conectarse a la instancia, debe especificar la clave privada del par de claves que 
especificó cuando lanzó la instancia. 
 
39 
 
 
 
Conectarse a la instancia de Linux 
Para conectarse a la instancia de Linux mediante un cliente SSH, use el siguiente 
procedimiento. Si aparece un error al intentar conectarse a la instancia, consulte ​Solución 
de problemas con la conexión a la instancia​. 
1. En un shell de línea de comandos, cambie los directorios a la ubicación del archivo 
de clave privada que creó cuando lanzó la instancia. 
2. Use el siguiente comando para configurar los permisos del archivo de clave privada 
para que solo usted pueda leerlo. 
chmod ​400​ /path/my-​key​-pair.pem 
3. Si no configura estos permisos, no podrá conectarse a la instancia con este par de 
claves. Para obtener más información, consulte ​Error: Unprotected Private Key File​. 
4. Utilice el comando ssh para conectarse a la instancia. Especifique el archivo (.pem) 
de clave privada y nombre_de_usuario@nombre_dns_público. Por ejemplo, si ha 
utilizado Amazon Linux 2 o la AMI de Amazon Linux, el nombre de usuario es 
ec2-user. 
 
40 
 
 
ssh -​i​ /path/my-key-pair​.pem
ec2-user@ec2-​198​-​51​-​100​-​1​.compute-1.amazonaws.com 
5. Debería ver una respuesta como lo siguiente: 
The authenticity ​of​ host ​'ec2-198-51-100-1.compute-1.amazonaws.com
(10.254.142.33)'
can​'t be established.
RSA ​key​ fingerprint ​is
1​f:​51​:ae:​28​:bf:​89​:e9:d8:​1​f:​25​:​5​d:​37​:​2​d:​7​d:b8:ca:​9​f:f5:f1:​6​f.
Are you sure you want ​to​ ​continue​ connecting (yes/no)? 
6. (Solo IPv6) También puede conectarse a la instancia mediante su dirección IPv6. 
Especifique el comando ssh con la ruta al archivo de clave privada (.pem), el nombre 
de usuario adecuado y la dirección IPv6. Por ejemplo, si ha utilizado Amazon Linux 2 
o la AMI de Amazon Linux, el nombre de usuario es ec2-user. 
ssh​ ​-i​ /​path​/​my-key-pair​.pem
ec2-user​@​2001​:db8:1234:1a00:9691:9503:25ad:1761 
7. (Opcional) Verifique que la huella digital en la alerta de seguridad coincide con la 
huella digital que obtuvo en el paso 1. Si estas huellas digitales no coinciden, alguien 
podría intentar un ataque man-in-the-middle (MITM). Si coinciden, continúe con el 
siguiente paso. 
8. Escriba yes. 
9. Debería ver una respuesta como lo siguiente: 
Warning: Permanently added 'ec2​-198-51-100-1​.compute​-1​.amazonaws.com' (RSA)
to the list of known hosts.
 
Para conectarse con windows utilizando Putty: 
https://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/putty.html 
 
 
 
41 
 
 
Roles de IAM 
Un rol de IAM es una identidad de IAM que se puede crear en una cuenta y que tiene 
permisos específicos. Un rol de IAM es similar a un usuario de IAM, ya que se trata de una 
identidad de AWS con políticas de permisos que determinan lo que la identidad puede 
hacer o 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. 
Puede utilizar roles para delegar el acceso a usuarios, aplicaciones o servicios que 
normalmente no tendrían acceso a los recursos de AWS. Por ejemplo, es posible que desee 
conceder a los usuarios de la cuenta de AWS el acceso a los recursos que no suelen tener, o 
conceder a los usuarios de una cuenta de AWS el acceso a los recursos de otra cuenta. O 
también puede que quiera permitir que una aplicación móvil utilice los recursos de AWS, 
pero no desea integrar las claves de AWS en la aplicación (donde serían difíciles de cambiar 
y donde los usuarios pueden potencialmente extraerlas). En ocasiones, es posible que 
quiera conceder acceso a AWS a los usuarios que ya tienen identidades definidas fuera de 
AWS, como en su directorio corporativo. O bien, es posible que quiera conceder acceso a 
su cuenta a terceros para que puedan realizar una auditoría en los recursos. 
En estas situaciones, puede delegar el acceso a los recursos de AWS con un rol de IAM. En 
esta sección se presentan los roles y las distintas formas de utilizarlos, cuándo y cómo 
elegir entre enfoques y cómo crear, administrar, cambiar (o asumir) y eliminar roles. 
 
 
 
 
 
 
42 
 
 
CloudFormation Resource: 
AWSTemplateFormatVersion:​ ​"2010-09-09"
Resources:
RootRole:
Type:​ ​"AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Version:​ ​"2012-10-17"
Statement:
-
Effect:​ ​"Allow"
Principal:
Service:
- ​"ec2.amazonaws.com"
Action:
- ​"sts:AssumeRole"
Path:​ ​"/"
Policies:
-
PolicyName:​ ​"root"
PolicyDocument:
Version:​ ​"2012-10-17"
Statement:
-
Effect:​ ​"Allow"
Action:​ ​"*"
Resource:​ ​"*"
RootInstanceProfile:
Type:​ ​"AWS::IAM::InstanceProfile"
Properties:
Path:​ ​"/"
Roles:
-
Ref:​ ​"RootRole" 
 
 
 
43 
 
 
Políticas y permisos 
Puede administrar el acceso en AWS creando políticas y asignándoselas a identidades de 
IAM (usuarios, grupos de usuarios o roles) o a recursos de AWS. Una política es un objeto 
de AWS que, cuando se asocia a una identidad o un recurso, define sus permisos. AWS 
evalúa estas políticas cuando una entidad principal (usuario o rol) realiza una solicitud. Los 
permisos en las políticas determinan si la solicitud se permite o se deniega. La mayoría de 
políticas se almacenan en AWS como documentos JSON. AWS admite seis tipos de políticas: 
basadas en identidad, basadas en recursos, límites de permisos, SCP de Organizaciones, 
ACL y políticas de sesión. 
Las políticas de IAM definen permisos para una acción independientemente del método 
que se utilice para realizar la operación. Por ejemplo, si una política permite la acción 
GetUser​, un usuario con dicha política puede obtener información de los usuarios desde la 
Consola de administración de AWS, la AWS CLI o la API de AWS. Cuando se crea un usuario 
de IAM, se le puede permitir el acceso a la consola o el acceso mediante programación. Si 
se permite el acceso a la consola, el usuario de IAM pueden iniciar sesión en la consola con 
un nombre de usuario y una contraseña. Si se permite acceso mediante programación, el 
usuario puede utilizar claves de acceso para trabajar con la CLI o la API. 
En este ejemplo se muestra cómo crear una política que puede asociarse a un rol de 
servicio. La política permite que la instancia EC2 especificada asocie o desasocie 
volúmenes. La instancia se especifica con un ARN en el elemento Condition.Esta política 
proporciona los permisos necesarios para llevar a cabo esta acción únicamente desde la 
API o la AWS CLI de AWS.Para utilizar esta política, sustituya el texto rojo en cursiva del 
ejemplo de política por su propia información. 
Las instancias Amazon EC2 pueden ejecutar comandos de AWS con permisos concedidos 
por un rol de servicio de AWS ​para una instancia EC2​ que esté asociada al perfil de 
instancia. Puede asociar esta política al rol o añadir esta instrucción a una política existente. 
Solo la instancia identificada por INSTANCE-ID puede asociar volúmenes, o desasociarlos, a 
las instancias de la cuenta, incluida la misma instancia 
 
 
44 
 
 
{
"Version": ​"2012-10-17"​,
"Statement": [
{
"Effect": ​"Allow"​,
"Action": [
​"ec2:AttachVolume"​,
​"ec2:DetachVolume"
],
"Resource": [
​"arn:aws:ec2:*:*:volume/*"​,
​"arn:aws:ec2:*:*:instance/*"
],
"Condition": {
"ArnEquals": {"ec2:SourceInstanceARN":
"arn:aws:ec2:*:*:instance/instance-id"​}
}
}
]
} 
 
 
 
 
 
 
 
 
 
45 
 
 
Docker 
Docker es una plataforma para desarrolladores y administradores de sistemas para
                     
desarrollar, implementar y ejecutar aplicaciones con contenedores. El uso de contenedores
                     
de Linux para implementar aplicaciones se denomina contenedorización. Los contenedores
                   
no son nuevos, pero su uso para implementar aplicaciones fácilmente sí lo es. 
La contenedorización es cada vez más popular porque los contenedores son: 
● Flexible: Incluso las aplicaciones más complejas se pueden transportar en
                   
contenedores. 
● Ligero: los contenedores aprovechan y comparten el núcleo del host. 
● Intercambiable: puede implementar actualizaciones y actualizaciones sobre la
               
marcha. 
● Portátil: puede compilar localmente, implementarlo en la nube y ejecutar en
                     
cualquier lugar. 
● Escalable: puede aumentar y distribuir automáticamente réplicas de contenedores. 
● Apilable: puede apilar servicios verticalmente y sobre la marcha. 
Contenedores e imágenes 
Se ejecuta un contenedor ejecutando una imagen. Una imagen es un paquete ejecutable
                         
que incluye todo lo necesario para ejecutar una aplicación: el código, el tiempo de
                           
ejecución, las bibliotecas, las variables de entorno y los archivos de configuración. 
Un contenedor es una instancia de tiempo de ejecución de una imagen: En lo que se
                               
convierte la imagen en la memoria cuando se ejecuta (es decir, una imagen con estado o
                               
un proceso de usuario). Puede ver una lista de sus contenedores en ejecución con el
                             
comando, ​docker ps​, tal como lo haría en Linux. 
 
 
 
46 
 
 
Contenedores y máquinas virtuales. 
Un contenedor se ejecuta de forma nativa en Linux y comparte el kernel de la máquina
                               
host con otros contenedores. Ejecuta un proceso discreto, no ocupa más memoria que
                         
cualquier otro ejecutable, lo que lo hace liviano. 
Por el contrario, una máquina virtual (VM) ejecuta un sistema operativo "invitado" completo
                         
con acceso virtual a los recursos del host a través de un hipervisor. En general, las
                               
máquinas virtuales proporcionan un entorno con más recursos de los que necesitan la
                         
mayoría de las aplicaciones. 
Installación 
Existen muchas maneras de instalar Docker dependiendo de su sistema operativo 
OSX: ​https://docs.docker.com/docker-for-mac/install/ 
Windows: ​https://docs.docker.com/docker-for-windows/install/ 
Linux: ​https://docs.docker.com/v17.12/install/#time-based-release-schedule 
 
 
 
 
 
 
 
 
47 
 
 
Ejecución y administración de imágenes 
Una vez instalado  
docker --​version
Docker ​version​ ​18.06​.​1​-​ce​, build e68fc7a215d7
Pruebe que su instalación funciona ejecutando la imagen simple de Docker, ​hello-world​: 
docker run hello-world
Unable ​to​ find image ​'hello-world:latest'​ locally
latest: Pulling ​from​ library/hello-world
1​b930d010525: Pull complete
Digest:
sha256:​2557e3​c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Status: Downloaded newer image ​for​ hello-world:latest
Hello ​from​ Docker!
This message shows that your installation appears ​to​ be working correctly.
To generate this message, Docker took ​the​ following steps:
1.​ The Docker client contacted ​the​ Docker daemon.
2.​ The Docker daemon pulled ​the​ ​"hello-world"​ image ​from​ ​the​ Docker Hub.
(amd64)
3.​ The Docker daemon created ​a​ ​new​ container ​from​ that image which runs ​the
executable that produces ​the​ output you are currently reading.
4.​ The Docker daemon streamed that output ​to​ ​the​ Docker client, which sent
it
​to​ your terminal.
To ​try​ something more ambitious, you can run ​an​ Ubuntu container ​with​:
$ docker run -​it​ ubuntu bash
Share images, automate workflows, ​and​ more ​with​ ​a​ free Docker ID:
https​://hub.docker.com/
For more examples ​and​ ideas, visit:
https​://docs.docker.com/​get​-started/
 
48 
 
 
Listar las imágenes descargadas o creadas
docker ​image​ ​ls
Listar la lista de contenedores.
docker container ​ls​ --all
Definir un contenedor con Dockerfile 
Dockerfile define lo que sucede en el entorno dentro de su contenedor. El acceso a
                             
recursos como las interfaces de red y las unidades de disco está virtualizado dentro de este
                               
entorno, que está aislado del resto de su sistema, por lo que necesita asignar puertos al
                               
mundo exterior y ser específico sobre los archivos que desea "copiar" en ese ambiente Sin
                             
embargo, después de hacer eso, puede esperar que la compilación de su aplicación
                         
definida en este Dockerfile se comporte exactamente igual donde se ejecute. El archivo
                         
debe llamarse ​Dockerfile. ​Cree este archivo en una carpeta de cualquier nombre.  
# Use an official Python runtime as a parent image
FROM​ python:2.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD​ . /app
# Install any needed packages specified in requirements.txt
RUN​ pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD [​"python"​, ​"app.py"​]
 
 
 
49 
 
 
La applicación 
Este Dockerfile se refiere a un par de archivos que aún no hemos creado. Cree dos archivos
                                 
más, r​equirements.txt y ​app.py​, y colóquelos en la misma carpeta con el Dockerfile. Esto
                           
completa nuestra aplicación, que como puedes ver es bastante simple. Cuando el
                       
Dockerfile anterior está integrado en una imagen, app.py y requirements.txt están
                     
presentes debido al comando ​ADD de Dockerfile, y se puede acceder a la salida desde
                             
app.py a través de HTTP (puerto 80) gracias al comando ​EXPOSE​. 
Requirements.txt 
Flask
Redis
app.py 
from flask ​import​ Flask
from redis ​import​ Redis, RedisError
import​ os
import​ socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route(​"/"​)
def hello():
try:
visits = redis.incr(​"counter"​)
except RedisError:
visits = ​"<i>cannot connect to Redis, counter disabled</i>"
html = ​"<h3>Hello {name}!</h3>"​ 
​"<b>Hostname:</b> {hostname}<br/>"​ 
​"<b>Visits:</b> {visits}"
return html.format(name=os.getenv("NAME", ​"world"​),
hostname=socket.gethostname(), visits=visits)
if​ __name__ == ​"__main__"​:
app.run(host='0.0.0.0', port=80)
 
50 
 
 
Ahora vemos que ​pip install -r requirements.txt instala las bibliotecas ​Flask y ​Redis para
                           
Python, y la aplicación imprime la variable de entorno ​NAME​, así como la salida de una
                               
llamada a socket.gethostname (). Finalmente, debido a que Redis no se está ejecutando (ya
                           
que solo hemos instalado la biblioteca de Python y no a Redis en sí), debemos esperar que
                                 
el intento de usarlo aquí falle y produzca el mensaje de error. 
¡Eso es! No necesita Python ni nada en requirements.txt en tu sistema, ni la construcción o
                               
ejecución de esta imagen los instala en tu sistema. No parece que realmente haya
                           
configurado un entorno con Python y Flask, pero lo ha hecho. 
Construir la aplicación 
Estamos listos para construir la aplicación. Asegúrese de estar en el nivel superior de su
                             
nuevo directorio. 
docker​ ​build ​-t friendlyhello .
¿Dónde está su imagen construida? Está en el registro local de imágenes Docker de su
                             
máquina: 
docker ​image​ ​ls
Ejecuta la aplicación 
Ejecute la aplicación, asignando el puerto 4000 de su máquina al puerto 80 publicado del
                             
contenedor usando -p: 
docker ​run​ -p 4000:80 friendlyhello
Debería ver un mensaje de que Python está sirviendo su aplicación en ​http://0.0.0.0:80. Pero
                           
ese mensaje proviene del interior del contenedor, que no sabe que usted asignó el puerto 80
                               
de ese contenedor a 4000, lo que hace que la URL correcta sea ​http://localhost:4000​. 
Puede terminar la ejecución presionando simultáneamente ​CTRL+​c​. 
Ahora ejecutemos la aplicación en segundo plano, en modo separado: 
docker ​run​ -d -p 4000:80 friendlyhello
 
51 
 
 
Obtiene el ID de contenedor largo para su aplicación y luego lo devuelven a su terminal. Su
                                 
contenedor se está ejecutando en segundo plano. También puede ver el ID del contenedor
                           
abreviado con el contenedor docker ls (y ambos funcionan de manera intercambiable cuando
                         
se ejecutan comandos): 
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
a7109e7dca76 friendlyhello ​"python app.py"​ ​10​ seconds ago ​Up​ ​9​ seconds
0.0​.0.0​:​4000​->​80​/tcp infallible_brown
Tenga en cuenta que la ID DEL CONTENEDOR coincide con lo que está en ​http://localhost:4000​. 
Ahora use el contenedor de la ventana acoplable para finalizar el proceso, usando la ID DEL
                               
CONTENEDOR, de esta manera: 
docker container ​stop​ a7109e7dca76
Etiqueta la imagen 
La notación para asociar una imagen local con un repositorio en un registro es nombre de
                               
usuario / repositorio: etiqueta. La etiqueta es opcional, pero se recomienda, ya que es el
                             
mecanismo que los registros utilizan para dar una versión a las imágenes de Docker.
                           
Proporcione al repositorio y etiquetas nombres significativos para el contexto, como
                     
get-started: part2. Esto coloca la imagen en el repositorio de inicio y la etiqueta como
                             
parte2. 
Ahora, ponlo todo junto para etiquetar la imagen. Ejecute la imagen de la etiqueta docker
                             
con su nombre de usuario, repositorio y nombres de etiquetas para que la imagen se
                             
cargue en el destino deseado. La sintaxis del comando es: 
docker ​tag​ ​friendlyhello​ john/get-​started​:part2
Sube tu imagen etiquetada al repositorio: 
docker​ ​push ​username/repository:tag
 
 
 
52 
 
 
 
AWS ECR 
Amazon Elastic Container Registry (ECR) es un registro de contenedores de ​Docker
                       
completamente administrado que facilita a los desarrolladores las tareas de
                   
almacenamiento, administración e implementación de imágenes de contenedores de
                 
Docker. Amazon ECR se integra con ​Amazon Elastic Container Service (ECS)​, lo que permite
                           
simplificar el desarrollo para el flujo de trabajo de producción. Con Amazon ECR, ya no es
                               
necesario que utilice sus propios repositorios de contenedores ni que se preocupe por
                         
escalar la infraestructura subyacente. Amazon ECR hospeda sus imágenes en una
                     
arquitectura escalable y de alta disponibilidad, lo que le permite implementar
                     
contenedores para sus aplicaciones con fiabilidad. La integración con AWS Identity and
                       
Access Management (IAM) ofrece un control de cada repositorio a nivel de recurso. Con
                           
Amazon ECR no hay cuotas predefinidas ni compromisos. Solo tiene que pagar por la
                           
cantidad de datos almacenados en los repositorios y por los datos transferidos a Internet. 
Instale la CLI de AWS 
Puede utilizar las herramientas de línea de comandos de AWS para emitir comandos en la
                             
línea de comandos de su sistema para realizar tareas de Amazon ECS y AWS. Esto puede
                               
ser más rápido y más conveniente que usar la consola. Las herramientas de la línea de
                               
comandos también son útiles para crear scripts que realizan tareas de AWS. 
Para utilizar AWS CLI con Amazon ECR, instale la última versión de AWS CLI (la
                             
funcionalidad de Amazon ECR está disponible en AWS CLI a partir de la versión 1.9.15).
                             
Puede verificar su versión de AWS CLI con el comando ​aws ​--version. Para obtener
                         
información sobre la instalación de la CLI de AWS o su actualización a la última versión,
                               
consulte Instalación 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​. 
 
 
 
53 
 
 
Pasos para subir una image Docker a ECR 
Recupere el comando de inicio de sesión que se usará para autenticar su cliente Docker en 
su registro. 
Utilice el CLI de AWS: 
$(​aws ecr ​get-login​ ​--no-include-email​ ​--region​ ​us-east-​1)
Construya su imagen Docker usando el siguiente comando.  
docker​ ​build ​-t ​friendlyhello​ . 
Una vez que se complete la compilación, etiquete su imagen para que pueda empujar la
                             
imagen a este repositorio: 
docker tag ​friendlyhello​:latest
470331809785​.dkr.ecr.us-east-1.amazonaws.com​/​friendlyhello​:latest 
 
Ejecute el siguiente comando para enviar esta imagen a su nuevo repositorio de AWS: 
docker push
470331809785​.dkr.ecr.us-east-1.amazonaws.com​/​friendlyhello​:latest 
 
Amazon Elastic Container Service (ECS) 
Amazon Elastic Container Service (Amazon ECS) es un servicio de administración de
                       
contenedores altamente escalable y rápido que facilita la tarea de ejecutar, detener y
                         
administrar contenedores de Docker en un clúster. Puede alojar el clúster en una
                         
infraestructura sin servidor administrada por Amazon ECS. Para ello, lance los servicios o
                         
las tareas con el tipo de lanzamiento Fargate. Si desea más control, puede alojar las tareas
                               
en un clúster de instancias de Amazon Elastic Compute Cloud (Amazon EC2) administrado
                         
mediante el tipo de lanzamiento EC2. Para obtener más información acerca de los tipos de
                             
lanzamiento, consulte ​Tipos de lanzamiento de Amazon ECS​. 
Amazon ECS es un servicio regional que simplifica la ejecución de contenedores de
                         
aplicación con alta disponibilidad en diversas zonas de disponibilidad dentro de una región.
                         
 
54 
 
 
Puede crear clústeres de Amazon ECS dentro de una VPC nueva o existente. Después de
                             
que el clúster esté activo y en ejecución, puede definir servicios y definiciones de tareas
                             
que especifican las imágenes de contenedores Docker que ejecutar en los clústeres. Las
                         
imágenes de contenedor se almacenan y se extraen desde registros de contenedor, que
                         
podrían existir dentro o fuera de la infraestructura de AWS. 
Para más información: 
https://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/Welcome.html 
 
Definiciones de tareas de Amazon ECS 
Para ejecutar contenedores Docker en Amazon ECS se necesita una definición de tarea.
                         
Entre los parámetros que se pueden especificar en una definición de tarea se incluyen: 
 
● La imagen de Docker que se va a utilizar con cada contenedor en su tarea 
● La cantidad de CPU y de memoria que se va a utilizar con cada tarea o cada
                                 
contenedor dentro de una tarea 
● El tipo de lanzamiento que utilizar, que determina la infraestructura en la que se
                           
alojan sus tareas 
● El modo de red de Docker que utilizar para los contenedores en la tarea 
● La configuración de registros que se va a utilizar para sus tareas 
● Si la tarea se debe seguir ejecutando si el contenedor finaliza o falla 
● El comando que el contenedor debe ejecutar al iniciarse 
● Los volúmenes de datos que deben utilizarse con los contenedores en la tarea 
● El rol de IAM que las tareas deben utilizar 
 
Puede definir varios contenedores en una definición de tarea. Los parámetros que usa
                         
dependen del tipo de lanzamiento que elija para la tarea. No todos los parámetros son
                             
válidos. Para obtener más información acerca de los parámetros disponibles y para qué
                         
tipos de lanzamiento son válidos en una definición de tarea, consulte Parámetros de
                         
definición de tarea. 
 
Toda la pila de la aplicación no tiene que existir en una definición de tarea única y, en la
                                     
mayoría de los casos, no debería. La aplicación puede abarcar varias definiciones de tareas
                           
combinando contenedores relacionados en sus propias definiciones de tareas, cada una de
                       
ellas representando un único componente. Para obtener más información, consulte
                   
Arquitectura de aplicaciones. 
 
Para más información: 
https://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/task_definitions.ht
ml 
 
55 
 
 
 
 
 
   
 
56 
 
 
Servicios 
Amazon ECS le permite ejecutar y mantener un número determinado de instancias de una
                           
definición de tarea simultáneamente en un clúster de Amazon ECS. Esto se denomina un
                           
servicio. En caso de que alguna de las tareas falle o se pare por algún motivo, el
                                 
programador de servicio de Amazon ECS lanza otra instancia de la definición de tarea para
                             
sustituirla y mantener el número deseado de tareas en el servicio en función de la
                             
estrategia de programación utilizada. 
 
Además de mantener el recuento deseado de tareas en el servicio, opcionalmente puede
                         
ejecutar el servicio tras un balanceador de carga. El balanceador de carga distribuye el
                           
tráfico entre las tareas que están asociadas al servicio. 
 
Elastic Load Balancing 
Adquiera tolerancia a errores para cualquier aplicación mediante el logro de escalabilidad,
                       
rendimiento y seguridad. 
 
Elastic Load Balancing distribuye automáticamente el tráfico de aplicaciones entrantes a
                     
través de varios destinos, tales como instancias de Amazon EC2, contenedores, direcciones
                       
IP y funciones Lambda. Puede controlar la carga variable del tráfico de su aplicación en una
                               
única zona o en varias zonas de disponibilidad. Elastic Load Balancing ofrece tres tipos de
                             
balanceadores de carga que cuentan con el nivel necesario de alta disponibilidad,
                       
escalabilidad automática y seguridad para que sus aplicaciones sean tolerantes a errores. 
 
Más información: 
https://aws.amazon.com/es/elasticloadbalancing/features/#Details_for_Elastic_Load_Balan
cing_Products 
 
Balanceador de carga clásico 
El balanceador de carga clásico proporciona equilibrio de carga básico en varias instancias
                         
de Amazon EC2 y funciona tanto en el nivel de solicitud como en el nivel de conexión. El
                                   
balanceador de carga clásico está diseñado para aplicaciones que se construyeron dentro
                       
de la red EC2-Classic. 
 
Balanceador de carga de red 
El balanceador de carga de red es el más adecuado para equilibrar la carga del tráfico del
                                 
protocolo de control de transmisión (TCP) y de la seguridad de capa de transporte (TLS)
                             
para la que se requiere un rendimiento extremo. El balanceador de carga de red, en
                             
funcionamiento a nivel de conexión (capa 4), dirige el tráfico hacia destinos dentro de
                           
Amazon Virtual Private Cloud (Amazon VPC) y es capaz de controlar millones de solicitudes
                           
por segundo mientras mantiene las latencias ultrabajas. El balanceador de carga de red
                         
también se optimiza para controlar patrones de tráfico repentinos y volátiles. 
 
 
57 
 
 
 
 
 
Balanceador de carga de aplicaciones 
El balanceador de carga de aplicaciones es el más adecuado para el equilibrio de carga del
                               
tráfico HTTP y HTTPS. Proporciona un direccionamiento de solicitudes avanzado dirigido a
                       
la entrega de arquitecturas de aplicaciones modernas, incluidos microservicios y
                   
contenedores. El balanceador de carga de aplicaciones, en funcionamiento a nivel de
                       
solicitud individual (capa 7), dirige el tráfico a los destinos dentro de Amazon Virtual Private
                             
Cloud (Amazon VPC) en función del contenido de la solicitud. 
 
Beneficios 
● Alta disponibilidad: El acuerdo de nivel de servicios de Amazon Elastic Load
                       
Balancing prevé una disponibilidad del 99,99% para los balanceadores de carga. 
● Seguridad: Elastic Load Balancing interactúa con Amazon Virtual Private Cloud (VPC)
                     
para proporcionar funciones de seguridad sólidas, incluida la administración
                 
integrada de certificados, la autenticación de usuarios y el descifrado SSL/TLS.  
● Elasticidad: Elastic Load Balancing es capaz de controlar cambios rápidos en los
                       
patrones de tráfico de la red. Además, la integración profunda con Auto Scaling
                         
asegura una capacidad de aplicación suficiente para satisfacer diferentes niveles de
                     
carga de aplicaciones sin que haya intervención manual. 
● Flexibilidad: Elastic Load Balancing también le permite utilizar direcciones IP para
                     
direccionar las solicitudes a los destinos de las aplicaciones. Este proceso otorga
                       
flexibilidad en torno a la manera de virtualizar los destinos de sus aplicaciones, lo
                           
que le permite alojar más aplicaciones en la misma instancia. También permite que
                         
estas aplicaciones tengan grupos de seguridad individuales y usen el mismo puerto
                       
de red para simplificar la comunicación entre aplicaciones en la arquitectura basada
                       
en microservicios. 
● Monitorización y auditoría sólidas: Elastic Load Balancing le permite monitorizar las
                     
aplicaciones y su rendimiento en tiempo real con métricas, registros y rastreo de
                         
solicitudes de Amazon CloudWatch. De esta manera se mejora la visibilidad del
                       
comportamiento de las aplicaciones, lo que permite detectar problemas e
                   
identificar cuellos de botella de rendimiento en la pila de aplicaciones en la
                         
granularidad de una solicitud individual.  
● Equilibrio de cargas híbrido: Elastic Load Balancing permite equilibrar cargas entre
                     
recursos locales y de AWS con el mismo balanceador de carga. Esto facilita la
                           
migración, la transmisión en modo burst o la conmutación por error de aplicaciones
                         
locales a la nube. 
 
Características clave 
Equilibrio de carga en la capa 7 
Puede equilibrar la carga de las aplicaciones HTTP/HTTPS y utilizar características
                     
 
58 
 
 
específicas de la capa 7, como encabezados X-Forwarded-For. 
 
Compatibilidad con HTTPS 
Un balanceador de carga de aplicaciones es compatible con la terminación HTTPS entre los
                           
clientes y el balanceador de carga. Los balanceadores de carga de aplicaciones también
                         
ofrecen la administración de certificados SSL a través de AWS Identity and Access
                         
Management (IAM) y AWS Certificate Manager para establecer políticas de seguridad
                     
predefinidas. 
 
Indicación de nombre de servidor (SNI) 
La indicación de nombre de servidor (SNI) es una extensión del protocolo TLS mediante la
                             
cual un cliente indica el nombre de host al cual se debe realizar la conexión al inicio del
                                   
protocolo de enlace TLS. El balanceador de carga puede presentar varios certificados
                       
mediante el mismo agente de escucha seguro, lo que le permite admitir varios sitios web
                             
seguros a través del uso de un único agente de escucha seguro. El balanceador de carga de
                                 
aplicaciones también es compatible con el algoritmo de selección de certificados
                     
inteligentes con SNI. Si el nombre de host indicado por un cliente coincide con varios
                             
certificados, el balanceador de carga establece cuál es el certificado más adecuado en
                         
función de varios factores, entre ellos, las capacidades del cliente. 
 
Direcciones IP como destinos 
Puede equilibrar la carga de cualquier aplicación local o alojada en AWS mediante el uso de
                               
direcciones IP de los backends de las aplicaciones como destinos. Esto permite equilibrar
                         
cargas a un backend de aplicación alojado en cualquier dirección IP y con cualquier interfaz
                             
de una instancia. Cada aplicación alojada en la misma instancia puede tener un grupo de
                             
seguridad asociado y utilizar el mismo puerto. También puede usar direcciones IP como
                         
destinos para equilibrar cargas de aplicaciones alojadas en ubicaciones locales (a través de
                         
una conexión de VPN o de Direct Connect), VPC emparejadas y EC2-Classic (con
                         
ClassicLink). La capacidad para equilibrar cargas entre recursos locales y alojados en AWS
                         
lo ayuda a migrar a la nube, solicitar ráfagas a la nube y conmutar por error en la nube. 
 
Funciones de AWS Lambda como destinos 
Los balanceadores de carga de aplicaciones son compatibles con las funciones de Lambda
                         
para poder atender solicitudes HTTP, permitiendo a los usuarios acceder a aplicaciones sin
                         
servidor desde cualquier cliente HTTP, incluyendo navegadores web. Puede registrar sus
                     
funciones Lambda como destinos para un balanceador de carga y utilizar el soporte para
                           
reglas de direccionamiento basadas en contenido para dirigir solicitudes a distintas
                     
funciones Lambda. Puede utilizar el balanceador de carga de aplicaciones como un punto
                         
de enlace HTTP común para aplicaciones que utilizan servidores e informática sin servidor.
                         
Puede crear un sitio web completo utilizando funciones Lambda o combinar instancias
                       
EC2, contenedores, servidores locales y funciones Lambda para crear aplicaciones. 
 
 
 
59 
 
 
Grupos de destino para los Application Load Balancers 
Cada grupo de destino se utiliza para direccionar solicitudes a uno o varios destinos
                           
registrados. Cuando se crea la regla de cada agente de escucha, se especifican un grupo de
                               
destino y las condiciones. Cuando se cumple la condición de una regla, el tráfico se reenvía
                               
al grupo de destino correspondiente. Puede crear grupos de destino diferentes para los
                         
distintos tipos de solicitudes. Por ejemplo, puede crear un grupo de destino para las
                           
solicitudes generales y otros grupos de destino para las solicitudes destinadas a los
                         
microservicios de la aplicación. Para obtener más información, consulte Componentes de
                     
Balanceador de carga de aplicaciones. 
 
Puede definir la configuración de comprobación de estado del balanceador de carga para
                         
cada grupo de destino. Cada grupo de destino utiliza la configuración de comprobación de
                           
estado predeterminada, a menos que la anule al crear el grupo de destino o la modifique
                               
posteriormente. Después de especificar un grupo de destino en una regla para un agente
                           
de escucha, el balanceador de carga monitoriza constantemente el estado de todos los
                         
destinos registrados en el grupo de destino que se encuentran en una zona de
                           
disponibilidad habilitada para el balanceador de carga. El balanceador de carga direcciona
                       
las solicitudes a los destinos registrados que se encuentran en buen estado. 
 
Más información: 
https://docs.aws.amazon.com/es_es/elasticloadbalancing/latest/application/load-balancer-t
arget-groups.html 
 
Agentes de escucha para Application Load Balancer 
Antes de comenzar a utilizar Balanceador de carga de aplicaciones, debe agregar uno o
                           
varios agentes de escucha. Un agente de escucha es un proceso que comprueba las
                           
solicitudes de conexión utilizando el protocolo y el puerto configurados. Las reglas que se
                           
definen para un agente de escucha determinan cómo el balanceador de carga va a
                           
direccionar las solicitudes a los destinos de uno o varios grupos de destino. 
 
Más información: 
https://docs.aws.amazon.com/es_es/elasticloadbalancing/latest/application/load-balancer-l
isteners.html 
 
Amazon CloudWatch 
Visibilidad completa de sus aplicaciones y recursos de la nube 
Amazon CloudWatch es un servicio de monitoreo y administración creado para
                     
desarrolladores, operadores de sistemas, ingenieros de fiabilidad de sitio (SRE) y gerentes
                       
de TI. CloudWatch le ofrece datos e información procesable para monitorear sus
                       
aplicaciones, comprender cambios de rendimiento que afectan a todo el sistema y tomar
                         
acciones, optimizar el uso de recursos y lograr una vista unificada del estado de las
                             
operaciones. CloudWatch recopila datos de monitoreo y operaciones en formato de
                     
 
60 
 
 
registros, métricas y eventos, lo que le ofrece una vista unificada de los recursos, las
                             
aplicaciones y los servicios de AWS que se ejecutan en servidores locales y de AWS. Puede
                               
usar CloudWatch para definir alarmas de alta resolución, ver registros y métricas lado a
                           
lado, tomar acciones automatizadas, resolver errores y descubrir información para
                   
optimizar sus aplicaciones y asegurarse de que se estén ejecutando sin problemas. 
 
Características de Amazon CloudWatch 
Amazon CloudWatch es un servicio de monitoreo y administración que suministra datos e
                         
información procesable para aplicaciones y recursos de infraestructura locales, híbridos y
                     
de AWS. Con CloudWatch, puede recopilar y obtener acceso a todos los datos de
                           
rendimiento y operaciones en formato de registros y métricas a partir de una sola
                           
plataforma. Esto le permite superar el desafío de monitorear aplicaciones y sistemas
                       
individuales aislados (servidor, red, base de datos, etc.). CloudWatch le permite monitorear
                       
una pila completa (aplicaciones, infraestructura y servicios) y utilizar alarmas, registros y
                       
datos de eventos para tomar acciones automatizadas y disminuir el tiempo de resolución
                         
(MTTR). Esto libera recursos importantes y le permite enfocarse en la creación de
                         
aplicaciones y valor comercial. 
 
CloudWatch le suministra información procesable que lo ayuda a optimizar el rendimiento
                       
de las aplicaciones, a administrar el uso de recursos y a conocer el estado de las
                               
operaciones de todo el sistema. CloudWatch ofrece una visibilidad de hasta 1 segundo de
                           
las métricas y los datos de los registros, 15 meses de retención de datos (métricas) y la
                                 
capacidad para realizar cálculos con las métricas. Esto le permite realizar análisis históricos
                         
para optimizar costos y obtener información en tiempo real sobre los recursos de la
                           
infraestructura y la optimización de las aplicaciones. 
 
Más información: 
https://aws.amazon.com/es/cloudwatch/​ ​https://aws.amazon.com/es/cloudwatch/features/ 
 
Amazon ElastiCache 
Almacén de datos en memoria administrado y compatible con Memcached o Redis. 
Amazon ElastiCache ofrece Redis y Memcached de forma completamente administrada.
                   
Implemente, ejecute y ajuste la escala de almacenes de datos en memoria compatibles, de
                           
código abierto y conocidos sin inconvenientes. Cree aplicaciones con uso intensivo de
                       
datos o mejore el nivel de desempeño de aplicaciones existentes mediante la recuperación
                         
de datos a partir de almacenes de datos en memoria de baja latencia y alto grado de
                                 
procesamiento. Amazon ElastiCache es una excelente opción para videojuegos, tecnología
                   
publicitaria, servicios financieros, sanidad y aplicaciones con IoT. 
   
 
61 
 
 
 
Motores de Amazon ElastiCache 
● ElastiCache para Redis: Administre y analice datos rápidamente cambiantes con un
                     
almacén de datos en memoria. 
● ElastiCache para Memcached: Cree una capa de almacenamiento en caché escalable
                     
para aplicaciones con uso intensivo de datos.  
 
 
 
 
 
62 

Más contenido relacionado

PDF
Libro-Conceptos-AWS.pdf
PDF
TEMARIO-AMAZON-WEB-SERVICES-AWS.pdf
PPTX
AcademyCloudFoundations_Module_00.pptx
PPTX
Redes y seguridad en AWS - CongresoSSI
PPTX
AWSome Day - Conferencia Online
PDF
Redes y seguridad en aws
PDF
Webinar: Comenzando con los servicios de AWS
PDF
2. Amazon Web Services
Libro-Conceptos-AWS.pdf
TEMARIO-AMAZON-WEB-SERVICES-AWS.pdf
AcademyCloudFoundations_Module_00.pptx
Redes y seguridad en AWS - CongresoSSI
AWSome Day - Conferencia Online
Redes y seguridad en aws
Webinar: Comenzando con los servicios de AWS
2. Amazon Web Services

Similar a Practica-AWS-Complete-Course.pdf (20)

PDF
VivaReal en Amazon AWS
PDF
Introducción a Amazon Web Services
PDF
WorkShop Android + Amazon Web Services
PDF
BrainSINS and AWS meetup Keynote
PDF
Mi experiencia con Amazon AWS EC2 y S3
PDF
AWS para torpes - Introducción a AWS
PDF
Amazon Web Services AWS
PDF
El Cloud Computing & Amazon Web Services
PPTX
Uso de Containers y Serverless para acelerar el desarrollo de aplicaciones mo...
PDF
ajkgjgjsftfhfjghjhgjfhjfgkfghjfgghjfghjghj
PPTX
Presentación tecnología, aprovecha esta presentación para tus trabajos
PPTX
Cómputo y Almacenamiento en la nube
PPTX
Cómputo y Almacenamiento en la nube
PDF
SAP en la nube de AWS
PPT
Redes final2
PDF
Introduccion a aws
PPTX
Amazon Web Services
PDF
Índice del libro "Amazon Web Services: Hardening de Infraestructuras Cloud Co...
PPTX
Cómputo y Almacenamiento en la nube
PDF
Startup Day Buenos Aires
VivaReal en Amazon AWS
Introducción a Amazon Web Services
WorkShop Android + Amazon Web Services
BrainSINS and AWS meetup Keynote
Mi experiencia con Amazon AWS EC2 y S3
AWS para torpes - Introducción a AWS
Amazon Web Services AWS
El Cloud Computing & Amazon Web Services
Uso de Containers y Serverless para acelerar el desarrollo de aplicaciones mo...
ajkgjgjsftfhfjghjhgjfhjfgkfghjfgghjfghjghj
Presentación tecnología, aprovecha esta presentación para tus trabajos
Cómputo y Almacenamiento en la nube
Cómputo y Almacenamiento en la nube
SAP en la nube de AWS
Redes final2
Introduccion a aws
Amazon Web Services
Índice del libro "Amazon Web Services: Hardening de Infraestructuras Cloud Co...
Cómputo y Almacenamiento en la nube
Startup Day Buenos Aires
Publicidad

Último (11)

PPTX
Presentación de un estudio de empresa pp
PDF
Herramientaa de google google keep, maps.pdf
PDF
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
PDF
Frases de Fidel Castro. Compilación Norelys Morales Aguilera
PPTX
tema-2-interes-.pptx44444444444444444444
PDF
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
PPT
laser seguridad a la salud humana de piel y vision en laser clase 4
PPTX
FUNCIONES DE CLASSROOM EN EL FUNCIONAMIENTO ESCOLAR
PPTX
Guia de power bi de cero a avanzado detallado
PPTX
presentacion_energias_renovables_renovable_.pptx
PDF
Mesopotamia y Egipto.pptx.pdf historia universal
Presentación de un estudio de empresa pp
Herramientaa de google google keep, maps.pdf
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
Frases de Fidel Castro. Compilación Norelys Morales Aguilera
tema-2-interes-.pptx44444444444444444444
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
laser seguridad a la salud humana de piel y vision en laser clase 4
FUNCIONES DE CLASSROOM EN EL FUNCIONAMIENTO ESCOLAR
Guia de power bi de cero a avanzado detallado
presentacion_energias_renovables_renovable_.pptx
Mesopotamia y Egipto.pptx.pdf historia universal
Publicidad

Practica-AWS-Complete-Course.pdf

  • 1.   Acelera tu éxito en la nube  Amazon Web Services  Trambo Training  Por Brayan Lemus      Introducción  La siguiente guía es una adaptación de diferentes materiales de entrenamiento y                         documentación específica de Amazon Web Services (AWS). El objetivo servir como apoyo en                           la formación de conocimientos de uso práctico e integral de los diferentes servicios que                             AWS ofrece, utilizando arquitecturas confiables, elásticas, tolerante a fallos y de alta                         disponibilidad.      
  • 2.       Indice  Objetivos y expectativas  Amazon Web Services (AWS)  Creación de cuenta  Ingreso a la cuenta de AWS  Consola de AWS  Crear un usuario de IAM  Optimizando flujos de trabajo  ¿Qué es un desarrollador de software?  ¿Qué es un administrador de sistemas?  El esquema convencional  ¿Que es DevOps?  La cultura DevOps y sus herramientas  Herramientas DevOps  Source Code Repository  Servidor de construcción  Gestión de la configuración  Infraestructura virtual  Automatización de pruebas  AWS CloudFormation - Infraestructura as a Code  Anatomía de plantilla  JSON  YAML  Secciones de plantilla  Format Version (optional)  Description (optional)  Metadata (optional)  Parameters (optional)  Mappings (optional)  Conditions (optional)  Transform (optional)  Resources (required)  Outputs (optional)  Definiendo un Parámetro en una Plantilla    2 
  • 3.     Referencia a un parámetro dentro de una plantilla  Resources  ¿Qué es Amazon VPC?  Conceptos de Amazon VPC  VPC y subredes  Acceso a Internet  ¿Qué es Amazon S3?  Uso de buckets de Amazon S3  Trabajo con objetos de Amazon S3  ¿Qué es Amazon EC2?  Recurso de CloudFormation para EC2  Características de Amazon EC2  Instancias Amazon EC2 de Linux  Conectarse a la instancia de Linux  Roles de IAM  CloudFormation Resource:  Políticas y permisos  Docker  Contenedores e imágenes  Contenedores y máquinas virtuales.  Installación  Ejecución y administración de imágenes  Definir un contenedor con Dockerfile  La applicación  Requirements.txt  app.py  Construir la aplicación  Ejecuta la aplicación  Etiqueta la imagen  AWS ECR  Instale la CLI de AWS  Pasos para subir una image Docker a ECR  Amazon Elastic Container Service (ECS)  Definiciones de tareas de Amazon ECS  Servicios    3 
  • 4.     Elastic Load Balancing  Balanceador de carga clásico  Balanceador de carga de red  Balanceador de carga de aplicaciones  Beneficios  Características clave  Equilibrio de carga en la capa 7  Compatibilidad con HTTPS  Indicación de nombre de servidor (SNI)  Direcciones IP como destinos  Funciones de AWS Lambda como destinos  Grupos de destino para los Application Load Balancers  Agentes de escucha para Application Load Balancer    Objetivos y expectativas  No se pretende que el estudiante aprenda a profundidad los diferentes conceptos  practicados en este curso, más bien, se pretende implantar la semilla de curiosidad para  que el estudiante tenga las herramientas necesarias para comenzar el camino de  aprendizaje de esta emergente cultura estructural de una forma práctica.  Por lo tanto, el objetivo general de este taller es crear una perspectiva general sobre las  tendencias tecnológicas actuales sobre el desarrollo, integración e infraestructura de una  manera concreta, práctica y útil.  Los objetivos específicos de este taller consolidan la utilización de infraestructura como  código para crear los distintos componentes que al unificarse constituyen la lógica base de  los sistemas de automatización de infraestructura de funcionamiento integral, estos  conceptos pueden expandirse mediante la exploración individual a necesidades  específicas. Los componentes pueden identificarse de la siguiente manera:  ● Infraestructura como código.  ● Redes virtuales.  ● Sistemas de almacenamiento.  ● Sistemas de cómputo escalables.    4 
  • 5.     ● Seguridad y acceso.  ● Sistemas distribuidos y contenerización.  ● Distribución de carga.  ● Monitoreo.  Al final del curso, el estudiante se llevará consigo infraestructura como código portable y  funcional incluyendo los atributos descritos anteriormente.   Nuevamente se especifica que el objetivo no es la comprensión total de estos temas, si no  la introducción a los mismos.      Amazon Web Services (AWS)  Amazon Web Services ofrece (AWS) un amplio conjunto de productos globales basados en                           la nube, incluidas aplicaciones para cómputo, almacenamiento, bases de datos, análisis,                       redes, dispositivos móviles, herramientas para desarrolladores, herramientas de                 administración, IoT, seguridad y aplicaciones empresariales. Estos servicios ayudan a las                       empresas a avanzar con mayor rapidez, reducir los costos de TI y escalar. AWS cuenta con                                 la confianza de las mayores compañías y las empresas emergentes más innovadoras para                           respaldar una amplia variedad de cargas de trabajo, como las aplicaciones web y móviles,                             el desarrollo de juegos, el almacenamiento y procesamiento de datos, el almacenamiento                         en general o el archivado, entre muchas otras.  Creación de cuenta   La capa gratuita de AWS le permite obtener experiencia práctica gratuita con la plataforma,                             los productos y los servicios de AWS. El proceso de creación sencillo, para comenzar                             ingresar al siguiente link.   https://portal.aws.amazon.com/gp/aws/developer/registration/index.html    5 
  • 6.                       En la parte superior derecha, es posible               seleccionar el idoma predefinido.   Para iniciar, es necesario ingresar todos los               datos solicitados en la forma y luego presionar                 Continuar​ .              En la siguiente página, es necesario             ingresar la información de contacto. Las               6 
  • 7.     cuentas pueden ser profesionales o personales. No existe diferencia alguna entre estas                         opciones, en cuestión de recursos o la capa gratuita. Luego presionar ​Crear cuenta y                             continuar ​.              En la siguiente página, es necesario ingresar la información de pago. La capa gratuita es                               auténticamente gratuita, pero, todos los servicios tienen un límite de consumo. Por lo                           tanto, es necesario ingresar información de pago para poder cubrir la utilización de los                             recursos que excedan el límite establecido.     7 
  • 8.       IMPORTANTE: ​Trambo Cloud o el Campus Tecnológico, no se hacen responsables por la                           utilización o consumo de recursos en AWS, y por defecto, cualquier cargo asociado a los                               mismos. Durante el curso, se darán a conocer los distintos procesos para la eliminación de                               recursos luego su utilización y queda bajo total responsabilidad del estudiante ejecutar                         dichos procesos en su debido tiempo.   Luego, es necesario validar la cuenta utilizando su número telefónico. Es necesario                         ingresar el número y presionar ​Ponerse en contacto conmigo.    8 
  • 9.       Una número se desplegará en la pantalla, debe ingresarlo en su teléfono utilizando las                             teclas de numeración. Luego del ingreso, el sistema automatizado confirmara su ingreso y                           la pantalla de la página web cambiará.     En la siguiente sección, debe presionar ​Basic Plan - Gratis -. Todos los planes incluyen la                                 capa gratuita. La diferencia está en el tipo de soporte adquirido, el cual determina la                               velocidad de respuesta ante distintos incidentes o peticiones.     9 
  • 10.                     Éste es el último paso. AWS validará su cuenta y enviará un correo de confirmación    10 
  • 11.       Ingreso a la cuenta de AWS  AWS cuenta con la consola WEB, la cual provee el acceso a los distintos recursos de AWS.   https://console.aws.amazon.com/        11 
  • 12.     AWS cuenta con dos modalidades de ingreso.   ● Cuenta maestra  ● Usuario de IAM  AWS Identity and Access Management (IAM) le permite administrar el acceso a los servicios                             y recursos de AWS de manera segura. Con IAM, puede crear y administrar usuarios y                               grupos de AWS, así como utilizar permisos para conceder o denegar el acceso de estos a                                 los recursos de AWS. Para iniciar por primera vez, es necesario hacerlo con la cuenta                               maestra. Por lo tanto, debe ingresar el correo electrónico utilizado para crear la cuenta y,                               luego de presionar continuar, la contraseña asociada.  Consola de AWS  La documentación y la consola web de AWS, tienen traducciones a variedad de idiomas,                             mas no por completo. Obviamente dada la diversidad de contenido, recursos y opciones, la                             mayoria de texto se encuentra en inglés.   La navegación en la consola es relativamente intuitiva.    Uno de los objetivos de este curso es dar a conocer la nomenclatura que tienen los                                 distintos servicios de AWS, los cuales servirán para identificar los recursos a utilizar y                             navegar la consola web.    12 
  • 13.     Cuando ya se tiene familiaridad con los recursos y sus iconos, es posible guardar accesos                               rápidos a la pagina de los recursos que más se utilizan dando click a ​pin ​en la parte                                     superior de la página.                   Crear un usuario de IAM    13 
  • 14.       Cómo es posible observar en la figura, es posible cambiar el idioma al español en la parte                                   inferior izquierda. Ésta opción está disponible en muchos recursos, pero no en todos.   La seguridad la cuenta maestra es de suma importancia. Por lo que es importante no                               utilizar esta cuenta para tareas que no requieren los privilegios especiales de la misma. Por                               lo que la primera actividad será crear un usuario administrador, el cual tendrá acceso a                               todos los recursos disponibles.          AWS cuenta con distintos tipos de acceso.      14 
  • 15.     ● Acceso mediante programación​:  ○ Habilita una ID de clave de acceso y una clave de acceso secreta para el SDK,                                 la CLI y la API de AWS, además de otras herramientas de desarrollo.  ● Acceso a la consola de administración de AWS​:  ○ Habilita una contraseña que permite a los usuarios iniciar sesión en la                         consola de administración WEB de AWS.  AWS utiliza políticas de seguridad para permitir o denegar el acceso a distintos recursos.                             Estas políticas pueden ser asociadas a usuarios o roles. Los roles son conjuntos de políticas                               que pueden ser asociadas tanto a usuarios como a recursos de AWS, los cuales veremos                               más adelante. AWS cuenta con ciertas políticas predefinidas, las cuales en este momento                           utilizaremos para dar permisos de administrador al usuario de trabajo.             Para crear un usuario es necesario seguir los siguientes pasos:    15 
  • 16.     1. Seleccionar ​Usuarios​.  2. En la parte superior izquierda, seleccionar ​Añadir Usuario(s)​.  3. Ingresar el nombre de usuario.   4. Seleccionar el tipo de acceso, en este caso los 2.  5. Crear la contraseña o permitir que sea generada automáticamente.   6. Si se ha colocado una contraseña personalizada, no seleccionar el restablecimiento                       de la misma en la próxima sesión.   7. Presionar continuar en la parte inferior izquierda.   8. En establecer permisos, seleccionar ​Asociar directamente las políticas existentes.                   Como se muestra en la imagen anterior.  9. Buscar y seleccionar la política llamada ​AdministratorAccess.  10. Seleccionar etiquetas de nombramiento si se desea.  11. Verificar la información recolectada a efectuar.   12. Presionar ​Crear Usuario.  13. Descargar las claves de acceso.  En esta etapa se mostrarán claves de acceso para application programming interface​(​API).                         Las cuales constan de  ● Identificador de clave de acceso (AWS_ACCESS_KEY_ID)  ● Clave de acceso secreta (AWS_SECRET_ACCESS_KEY)  Es importante recalcar que estas claves pueden ser utilizadas para administrar los                         recursos de AWS al que el usuario asociado tenga permisos de acceder, lo cual puede                               repercutir en cargos inesperados si dichas claves son expuestas públicamente o                       vulnerables a ataques de personas inescrupulosas, por lo que es de suma importancia que                             las mismas se conserven en un lugar seguro y confiable. Por otro lado, es posible invalidar,                                 borrar y generar nuevas claves. Por lo que tampoco es indispensable conservarlas.        16 
  • 17.     Luego de este proceso, es necesario salir de la sesión actual para ingresar con el usuario                                 recién creado. Para esto primero debemos regresar al panel principal de IAM y copiar el                               link de acceso para usuarios específicamente de la cuenta creada.    El link tiene contiene el número de cuenta. Al dar click en las hojas al lado derecho, se                                     copiara el link en el portapapeles de su sistema operativo. El formato es el siguiente:  https//NUMERO_DE_CUENTA.signin.aws.amazon.com/console  Por lo que el número de cuenta puede adquirirlo de esta manera. Evidentemente no es la                                 única. Pero este número es el necesario para el ingreso de usuarios regulares.  Luego de obtener el link, es necesario salir de la sesión actual. Esto se logra en la parte                                     superior derecha en ​Sign Out.          17 
  • 18.     Luego, ingresar al link obtenido. Esto debe enviar su conexión hacia el sitio adecuado de                               autenticación para usuarios.     El número de cuenta debe estar pre populado. Si no fuera el caso, debe ingresar el número                                   de cuenta obtenido en el link. Si ya no cuenta con el link, puede ingresar con la cuenta                                     maestra utilizando el link ​Iniciar ​sesión utilizando credenciales de cuenta raíz ​y obtener el link                               nuevamente en el panel principal de IAM utilizando los pasos anteriormente descritos.   Con estos pasos realizados, puede comenzar a explorar la consola de AWS. Los servicios                             incluidos en la capa gratuita están especificados en el siguiente link.  https://aws.amazon.com/es/free/  Es importante estar familiarizado con este detalle para evitar sorpresas de facturación.  El contenido del curso será utilizando únicamente recursos incluidos en la capa gratuita, se                             impartirá una guia de destrucción de recursos en cada uno de los módulos a seguir para                                 que cada cursante tenga las herramientas necesarias para hacerlo responsable e                       individualmente.    18 
  • 19.     Optimizando flujos de trabajo  El flujo de trabajo es el estudio de los aspectos operacionales de una actividad de trabajo:                                 cómo se estructuran las tareas, cómo se realizan, cuál es su orden correlativo, cómo se                               sincronizan, cómo fluye la información que soporta las tareas y cómo se le hace                             seguimiento al cumplimiento de las tareas  ¿Qué es un desarrollador de software?  La función del desarrollador de software recae en un programador o una compañía                           comercial que se dedica a uno o más aspectos del proceso de desarrollo de software. Se                                 trata de un ámbito más amplio de la programación algorítmica para el desarrollo de:  ● Nuevos productos.  ● Nuevas características.  ● Actualizaciones de seguridad.  ● Corrección de errores.   ¿Qué es un administrador de sistemas?  El administrador de sistemas tiene por objeto garantizar el tiempo de actividad (uptime),                           rendimiento, uso de recursos y la seguridad de los servidores que administra de forma                             dinámica.   En las organizaciones que cuentan con diversos sistemas informáticos, se torna más                         compleja la administración. De esta forma, las funciones del administrador de sistemas se                           dividen en roles: administrador de servidores, de bases de datos, de redes, de correo                             electrónico, de servidores web, de seguridad, de respaldo etc. Cada uno con sus                           correspondientes tareas específicas.          19 
  • 20.     El esquema convencional  Antes del desarrollo de la aplicación DevOps, los equipos de desarrollo se encargaban de                             reunir los requisitos comerciales para un programa de software y escribir un código. Luego,                             un equipo de control de calidad por separado, prueba el programa en un entorno de                               desarrollo aislado, y libera el código, si se cumplen los requisitos, a los operaciones para su                                 implementación. Los equipos de implementación están más fragmentados en grupos                     aislados como redes y bases de datos. Cada vez que un programa de software se "lanza" a                                   un equipo independiente, agrega cuellos de botella. El problema con este paradigma es                           que cuando los equipos trabajan por separado:  ● Los desarrolladores no son conscientes de los obstáculos de control de calidad y                           operaciones que impiden que el programa funcione como se esperaba.  ● El control de calidad y las operaciones normalmente trabajan considerando                     múltiples escenarios funciones y tienen poco contexto del propósito comercial y/o                       el valor del software.  ● Cada grupo tiene objetivos opuestos que pueden conducir a la ineficiencia y se tiene                             la tendencia a culpar a otros equipos de trabajo del mal funcionamiento de                           características del producto.       20 
  • 21.     ¿Que es DevOps?  DevOps se ha convertido en una palabra de moda sobrecargada que significa muchas                           cosas diferentes para mucha gente. Eso es un desafío cuando intenta comprender qué es                             DevOps o definir DevOps. En lugar de tratar de definir DevOps, es mejor describir los                               conceptos fundamentales que diferentes personas asocian con DevOps como una                     evolución pensamiento respecto a la visión integral de flujos de trabajo.  DevOps integra a los desarrolladores y equipos de operaciones para mejorar la                         colaboración y la productividad mediante la automatización de la infraestructura, los flujos                         de trabajo y la medición continua del rendimiento de las aplicaciones.  DevOps aborda los desafíos del desarrollo de una aplicación al establecer equipos de                           colaboración multifuncionales que comparten la responsabilidad de mantener el sistema                     que ejecuta el software y preparar el software para que se ejecute en ese sistema, con una                                   mayor retroalimentación respecto a calidad y automatización.  Por lo tanto, DevOps va más allá de la unión de los equipos que integran los flujos de                                     trabajo y desarrollo. DevOps es la adopción de una cultura de automatización e integración                             de procesos de desarrollo con el objetivo de mejorar la colaboración entre todas las partes                               interesadas por medio de la automatización; desde la planificación hasta proceso de                         entrega. Ésto con el objetivo de:  ● Mejorar la frecuencia de despliegue.  ● Lograr un tiempo de comercialización más rápido.  ● Bajar la tasa de fallos de nuevos lanzamientos.  ● Acortar el tiempo de espera entre correcciones.  ● Mejorar el tiempo medio de recuperación.  ● Incrementar la seguridad de las estructuras.  ● Incrementar la disponibilidad los ambientes de desarrollo y producción.  ● Tener una alta tolerancia a fallos inesperados.        21 
  • 22.       La cultura DevOps y sus herramientas  Una forma útil de percibir la cultura, es ver los diferentes aspectos de DevOps. El eje  horizontal inferior representa lo que las personas perciben como más fundamental.  Algunas personas creen firmemente que los DevOps deberían centrarse en la cultura más  que en herramientas, mientras que en otras personas tienden a valorar las herramientas  sobre la cultura.      22 
  • 23.     El eje vertical representa los tres niveles de la cadena de entrega de DevOps: integración                               continua, entrega continua y despliegue continuo. La comunidad de DevOps se refiere a las                             organizaciones, que han dominado la cultura DevOps, como unicornios rosados porque                       actualmente hay muy pocas de ellas y no se ven en la naturaleza muy a menudo. Ejemplos                                   populares de estos unicornios son compañías como Netflix, Etsy, Amazon, Pinterest, Flicker,                         IMVU y Google.   Herramientas DevOps  Las herramientas de DevOps consisten en administración de configuración, sistemas de                       prueba y compilación, implementación de aplicaciones, control de versiones y                     herramientas de monitoreo. La integración continua, la entrega continua y el despliegue                         continuo requieren herramientas diferentes. Si bien las tres prácticas pueden usar las                         mismas herramientas, necesitará más herramientas a medida que avance en la cadena de                           entrega.          23 
  • 24.     Estas son algunas de las herramientas y prácticas clave que debe conocer.  Source Code Repository  Un repositorio de código fuente es un lugar donde los desarrolladores registran y cambian                             código. El repositorio de código fuente administra las distintas versiones de código que se                             registran, por lo que los desarrolladores no escriben sobre el trabajo de los demás.  El control de la fuente probablemente haya existido durante cuarenta años, pero es un                             componente importante de la integración continua. Las herramientas populares de                     repositorio de código fuente son Git, Subversion, Cloudforce, Bitbucket y TFS.  Servidor de construcción  El servidor de compilación es una herramienta de automatización que compila el código en                             el repositorio de código fuente en una base de código ejecutable. Las herramientas                           populares son Jenkins, SonarQube y Artifactory.  Gestión de la configuración  La gestión de la configuración define la configuración de un servidor o un entorno. Las                               herramientas de gestión de configuración más populares son Puppet y Chef.  Infraestructura virtual  Amazon Web Services y Microsoft Azure son ejemplos de infraestructuras virtuales. Las                         infraestructuras virtuales son proporcionadas por proveedores en la nube que venden                       infraestructura o plataforma como un servicio (PaaS). Estas infraestructuras tienen API que                         le permiten crear nuevas máquinas mediante programación con herramientas de                     administración de configuración como Puppet y Chef.            24 
  • 25.     Automatización de pruebas  La automatización de pruebas ha existido durante mucho tiempo. Las pruebas de DevOps                           se centran en las pruebas automatizadas dentro de su canal de compilación para                           garantizar que, en el momento en que tenga una compilación desplegable, esté seguro de                             que esté listo para implementarse. No puede llegar al punto de entrega continua en el que                                 está bastante seguro sin ninguna intervención humana de que su código se puede                           implementar sin una estrategia de prueba automatizada extensa. Las herramientas                     populares son el Selenium y el Water.    AWS CloudFormation - Infraestructura as a Code  AWS CloudFormation es un servicio de Amazon dedicado a solventar la necesidad de                           estandarizar y replicar las arquitecturas que tenemos dentro de nuestra cuenta en                         diferentes regiones.   El objetivo de AWS CloudFormation es facilitar la ejecución y optimización de                         aprovisionamiento de recursos de AWS, mejorar costos de entrega de aplicaciones.  De la forma en que AWS CloudFormation es implementado es a través de plantillas que                               puede ser formato ​json o ​yaml el cual no debe ser memorizado ya que la documentación                                 de AWS es bastante amplia y sería impráctico e imposible aprenderse todos los recursos y                               sus propiedades. La creación de plantillas nos permite tener una biblioteca propietaria de                           recursos y arquitecturas capaces de entregar en cualquier momento y de manera                         organizada un set de recursos a través del código que las componen.  Más información acerca de AWS CloudFormation (CFN) en la documentación oficial de AWS.                           https://aws.amazon.com/es/cloudformation/?nc1=h_ls          25 
  • 26.     Anatomía de plantilla  Una plantilla es un archivo de texto con formato JSON o YAML que describe su                               infraestructura de AWS. Los siguientes ejemplos muestran una estructura de plantillas de                         AWS CloudFormation y sus secciones.  JSON  { ​"AWSTemplateFormatVersion"​ : ​"version date"​, ​"Description"​ : ​"JSON string"​, ​"Metadata"​ : { ​template​ metadata }, ​"Parameters"​ : { ​set​ ​of​ parameters }, ​"Mappings"​ : { ​set​ ​of​ mappings }, ​"Conditions"​ : { ​set​ ​of​ conditions }, ​"Transform"​ : { ​set​ ​of​ transforms }, ​"Resources"​ : { ​set​ ​of​ resources }, ​"Outputs"​ : { ​set​ ​of​ outputs } }    26 
  • 27.       YAML  --- AWSTemplateFormatVersion: ​"version date" Description: ​String Metadata: ​template​ ​metadata Parameters: ​set​ ​of​ ​parameters Mappings: ​set​ ​of​ ​mappings Conditions: ​set​ ​of​ ​conditions Transform: ​set​ ​of​ ​transforms Resources: ​set​ ​of​ ​resources Outputs: ​set​ ​of​ ​outputs                27 
  • 28.     Secciones de plantilla  Las plantillas incluyen varias secciones principales. La sección de Recursos es la única  sección requerida. Algunas secciones en una plantilla pueden estar en cualquier orden. Sin  embargo, a medida que construye su plantilla, puede ser útil usar el orden lógico que se  muestra en la siguiente lista porque los valores de una sección pueden referirse a los  valores de una sección anterior.  Format Version (optional)  La versión de la plantilla de AWS CloudFormation que cumple la plantilla. La versión del  formato de la plantilla no es la misma que la versión de la API o WSDL. La versión del  formato de la plantilla puede cambiar independientemente de las versiones de API y WSDL.  Description (optional)  Una cadena de texto que describe la plantilla. Esta sección debe seguir siempre la sección  de versión de formato de plantilla.  Metadata (optional)  Objetos que proporcionan información adicional sobre la plantilla.  Parameters (optional)  Valores que se pasan a su plantilla en tiempo de ejecución (cuando crea o actualiza una  pila). Puede consultar los parámetros de las secciones Recursos y Salidas de la plantilla.  Mappings (optional)  Una asignación de claves y valores asociados que puede usar para especificar valores de  parámetros condicionales, similar a una tabla de búsqueda. Puede hacer coincidir una  clave con un valor correspondiente utilizando la función intrínseca Fn :: FindInMap en las  secciones Recursos y Resultados.      28 
  • 29.       Conditions (optional)  Condiciones que controlan si se crean ciertos recursos o si se asigna un valor a ciertas  propiedades de recursos durante la creación o actualización de la pila. Por ejemplo, podría  crear condicionalmente un recurso que depende de si la pila es para un entorno de  producción o prueba.  Transform (optional)  Para aplicaciones sin servidor (también conocidas como aplicaciones basadas en Lambda),  especifica la versión del Modelo de aplicación sin servidor de AWS (AWS SAM) que se debe  usar. Cuando especifica una transformación, puede usar la sintaxis de AWS SAM para  declarar recursos en su plantilla. El modelo define la sintaxis que puede utilizar y cómo se  procesa.  También puede usar las transformaciones de AWS :: Include para trabajar con fragmentos  de plantillas que se almacenan por separado de la plantilla principal de AWS  CloudFormation. Puede almacenar sus archivos de fragmentos en un depósito de Amazon  S3 y luego reutilizar las funciones en varias plantillas.  Resources (required)  Especifica los recursos de la pila y sus propiedades, como una instancia de Amazon Elastic  Compute Cloud o un grupo de Amazon Simple Storage Service. Puede consultar los  recursos en las secciones de Recursos y Resultados de la plantilla.  Outputs (optional)  Describe los valores que se devuelven cuando ves las propiedades de tu pila. Por ejemplo,  puede declarar una salida para un nombre de depósito S3 y luego llamar al comando AWS  CLI de aws cloudformation describe-stacks para ver el nombre.        29 
  • 30.     Definiendo un Parámetro en una Plantilla  El siguiente ejemplo declara un parámetro llamado InstanceTypeParameter. Este  parámetro le permite especificar el tipo de instancia de Amazon EC2 para que la pila la use  cuando cree o actualice la pila.  "Parameters"​ : { ​"InstanceTypeParameter"​ : { ​"Type"​ : ​"String"​, ​"Default"​ : ​"t2.micro"​, ​"AllowedValues"​ : [​"t2.micro"​, ​"m1.small"​, ​"m1.large"​], ​"Description"​ : ​"Enter t2.micro, m1.small, or m1.large. Default is t2.micro." } } Parameters: InstanceTypeParameter: Type: String Default: t2​.micro AllowedValues: - t2​.micro - m1​.small - m1​.large Description: Enter t2​.micro​, m1​.small​, or m1​.large​. Default is t2​.micro​.                                 30 
  • 31.       Referencia a un parámetro dentro de una plantilla  "Ec2Instance"​ : { ​"Type"​ : ​"AWS::EC2::Instance"​, ​"Properties"​ : { ​"InstanceType"​ : { ​"Ref"​ : ​"InstanceTypeParameter"​ }, ​"ImageId"​ : ​"ami-0ff8a91507f77f867" } } Ec2Instance: Type:​ ​AWS::EC2::​Instance Properties: InstanceType: Ref:​ InstanceTypeParameter ImageId:​ ami​-0​ff8a91507f77f867 Mas información:  https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-s tructure.html Resources  La sección de Recursos requeridos declara los recursos de AWS que desea incluir en la pila,  como una instancia de Amazon EC2 o un depósito de Amazon S3.  La sección de Recursos consiste en el nombre clave de Recursos. La siguiente pseudo  plantilla describe la sección de Recursos:  ​"Resources"​ : { ​"MyInstance"​ : { ​"Type"​ : ​"AWS::EC2::Instance"​, ​"Properties"​ : { ​"UserData"​ : { ​"Fn::Base64"​ : { ​"Fn::Join"​ : [ ​""​, [ ​"Queue="​, { ​"Ref"​ : ​"MyQueue"​ } ] ] } }, ​"AvailabilityZone"​ : ​"us-east-1a"​, ​"ImageId"​ : ​"ami-0ff8a91507f77f867" } },   31 
  • 32.     ​"MyQueue"​ : { ​"Type"​ : ​"AWS::SQS::Queue"​, ​"Properties"​ : { } } } Resources: MyInstance: Type:​ ​"AWS::EC2::Instance" Properties: UserData: ​"Fn::Base64"​: !Sub | Queue=${MyQueue} AvailabilityZone:​ ​"us-east-1a" ImageId:​ ​"ami-0ff8a91507f77f867" MyQueue: Type:​ ​"AWS::SQS::Queue" Properties:​ {} Ejemplos estructurados: ​https://github.com/TramboCloud/AWS-101 ¿Qué es Amazon VPC?  Amazon Virtual Private Cloud (Amazon VPC) le permite iniciar los recursos de AWS en una  red virtual que ha definido. Esta red virtual se parece mucho a una red tradicional que  operaría en su propio centro de datos, con los beneficios de usar la infraestructura  escalable de AWS.  Conceptos de Amazon VPC  A medida que vaya utilizando Amazon VPC, comprenderá los conceptos clave de esta red  virtual, así como las similitudes y diferencias con respecto a sus propias redes. Esta sección  proporciona una descripción breve de los conceptos clave de Amazon VPC.  Amazon VPC es la capa de red de Amazon EC2. Si no conoce Amazon EC2, consulte ​¿Qué es  Amazon EC2?​ en la Guía del usuario de Amazon EC2 para instancias de Linux para obtener  información general.    32 
  • 33.     VPC y subredes  Una nube virtual privada (VPC) es una red virtual dedicada para su cuenta de AWS. Esta  infraestructura en la nube está aislada lógicamente de otras redes virtuales de la nube de  AWS. Por lo tanto, puede lanzar a su VPC recursos de AWS como, por ejemplo, instancias de  Amazon EC2. Puede especificar un intervalo de direcciones IP para la VPC, añadir subredes,  asociar grupos de seguridad y configurar tablas de ruteo.  Una subred es un rango de direcciones IP en su VPC. Puede lanzar recursos de AWS a  cualquier subred que especifique. Utilice una subred pública para los recursos que deben  conectarse a Internet y una subred privada para los recursos que no dispondrán de  conexión a Internet. Para obtener más información acerca de las subredes públicas y  privadas, consulte ​Conceptos básicos de VPC y subredes​.  Para proteger los recursos de AWS de cada subred, puede utilizar varias capas de  seguridad, incluidos grupos de seguridad y las listas de control de acceso (ACL) a la red.  Para obtener más información, consulte ​Seguridad​.  Acceso a Internet  Es posible controlar el modo en que las instancias lanzadas en la VPC tienen acceso a los  recursos externos a la VPC.  La VPC predeterminada incluye un gateway de Internet, y las subredes predeterminadas  son subredes públicas. Las instancias que se lanzan en subredes predeterminadas tienen  dirección IPv4 privada y dirección IPv4 pública. Dichas instancias pueden comunicarse con  Internet a través del gateway de Internet. Un gateway de Internet permite que las  instancias se conecten a Internet a través del límite de la red de Amazon EC2.  De forma predeterminada, las instancias que se lanzan en subredes no predeterminadas  disponen de dirección IPv4 privada; sin embargo, no disponen de dirección IPv4 pública a  no ser que asigne específicamente una en el lanzamiento o que modifique el atributo de  dirección IP pública de la subred. Dichas instancias pueden comunicarse entre sí, pero no  pueden tener acceso a Internet.      33 
  • 34.     De manera alternativa, para permitir que una instancia de su VPC inicie conexiones  salientes a Internet y bloquear las conexiones entrantes no deseadas, puede utilizar un  dispositivo de conversión de direcciones de red (NAT) para el tráfico IPv4. El dispositivo NAT  asigna varias direcciones IPv4 privadas a una única dirección IPv4 pública. Los dispositivos  NAT tienen dirección IP elástica y están conectados a Internet a través de gateways de  Internet. Puede conectar una instancia de una subred privada a Internet a través del  dispositivo NAT, que direcciona el tráfico desde la instancia al gateway de Internet y  direcciona las respuestas a la instancia.    Plantilla técnica de CloudFormation:  https://github.com/TramboCloud/AWS-101/blob/master/network/vpc.yaml      34 
  • 35.       ¿Qué es Amazon S3?  Amazon Simple Storage Service es un servicio de almacenamiento para Internet. Está  diseñado para facilitar a los desarrolladores recursos de computación escalables basados  en Web.  Amazon S3 tiene una interfaz de servicios web simple que puede utilizar para almacenar y  recuperar cualquier cantidad de datos, en cualquier momento, desde cualquier parte de la  web. Ofrece a cualquier desarrollador acceso a la misma infraestructura de  almacenamiento de datos económica, altamente escalable, fiable, segura y rápida que  utiliza Amazon para mantener su propia red global de sitios web. Este servicio tiene como  fin maximizar los beneficios del escalado y trasladarlos a los desarrolladores.  En esta guía se explican los conceptos principales de Amazon S3, como los de bucket y  objeto, y cómo trabajar con estos recursos con la interfaz de programación de aplicaciones  (API) de Amazon S3.  Uso de buckets de Amazon S3  Amazon S3 es un almacenamiento en la nube para Internet. Para poder cargar sus datos  (fotos, vídeos, documentos, etc.) primero debe crear un bucket en una de las regiones de  AWS. Luego puede cargar la cantidad de objetos que desee en el bucket​.  En términos de implementación, los buckets y objetos son recursos y Amazon S3  proporciona Application Program Interfaces (API, Interfaces de programación de  aplicaciones) para que pueda administrarlos. Por ejemplo, puede crear un bucket y cargar  objetos con la API de Amazon S3. También puede usar la consola de Amazon S3 para  realizar estas operaciones. La consola utiliza las API de Amazon S3 para enviar solicitudes a  Amazon S3.  Un nombre de bucket de Amazon S3 es globalmente único y todas las cuentas de AWS  comparten el espacio de nombres. Esto significa que, una vez que se crea un bucket,  ninguna otra cuenta de AWS de ninguna otra región de AWS puede usar el nombre de ese    35 
  • 36.     bucket hasta que el bucket se elimina. No debe confiar en convenciones específicas de  nomenclatura de buckets para propósitos de verificación de la seguridad o disponibilidad.  Para conocer las directrices de nomenclatura de buckets, consulte ​Restricciones y  limitaciones de los buckets​.  Trabajo con objetos de Amazon S3  Amazon S3 es un almacén sencillo de valores claves diseñado para almacenar tantos  objetos como quiera. Puede almacenar estos objetos en uno o varios buckets. Un objeto  consiste en lo siguiente:  ● Clave: nombre que se le asigna a un objeto. La clave de objeto se usa para  recuperar el objeto.  ● Para obtener más información, consulte ​Clave y metadatos de objetos​.  ● ID de versión: en un bucket, una clave y un ID de versión identifican exclusivamente  un objeto.  ● El ID de versión es una cadena que genera Amazon S3 cuando se agrega un objeto a  un bucket. Para obtener más información, consulte ​Control de versiones de objetos​.  ● Valor: contenido que se está almacenando.  ● El valor de un objeto puede ser cualquier secuencia de bytes. El tamaño de los  objetos puede variar desde cero hasta 5 TB. Para obtener más información,  consulte ​Carga de objetos​.  ● Metadatos: conjunto de pares nombre-valor con el que puede almacenar  información relativa al objeto.  ● Puede asignar metadatos, que se denominan metadatos definidos por el usuario, a  sus objetos en Amazon S3. Amazon S3 asigna también metadatos de sistema a  estos objetos, que se usan para administrar objetos. Para obtener más información,  consulte ​Clave y metadatos de objetos​.    36 
  • 37.     ● Subrecursos: Amazon S3 usa el mecanismo de subrecursos para almacenar la  información adicional específica al objeto.  ● Dado que los subrecursos están subordinados a los objetos, siempre están  asociados con otras entidades, como objetos o buckets. Para obtener más  información, consulte ​Subrecursos de objeto​.  ● Información de control de acceso: puede controlar el acceso a los objetos que  almacena en Amazon S3.  ● Amazon S3 admite tanto el control de acceso basado en recursos, como con una  lista de control de acceso (ACL) o políticas de bucket, como el control de acceso  basado en usuarios. Para obtener más información, consulte ​Administración de  permisos de acceso para los recursos de Amazon S3​.  Para obtener más información acerca del trabajo con objetos, consulte las siguientes  secciones. Los recursos de Amazon S3 (por ejemplo, buckets y objetos) son privados de  manera predeterminada. Se deben conceder permisos explícitos para que otras personas  puedan obtener acceso a estos recursos. Por ejemplo, puede que quiera compartir un  video o una fotografía almacenada en el bucket de Amazon S3 en su sitio web. Eso solo  funciona si se hace que el objeto sea público o si se usa una URL prefirmada en el sitio web.  Para obtener más información acerca de compartir objetos, consulte ​Compartir un objeto  con otros​.  ¿Qué es Amazon EC2?  Amazon Elastic Compute Cloud (Amazon EC2) proporciona capacidad de computación  escalable en la nube de Amazon Web Services (AWS). El uso de Amazon EC2 elimina la  necesidad de invertir inicialmente en hardware, de manera que puede desarrollar e  implementar aplicaciones en menos tiempo. Puede usar Amazon EC2 para lanzar tantos  servidores virtuales como necesite, configurar la seguridad y las redes y administrar el  almacenamiento. Amazon EC2 le permite escalar hacia arriba o hacia abajo para controlar  cambios en los requisitos o picos de popularidad, con lo que se reduce la necesidad de  prever el tráfico.    37 
  • 38.     Recurso de CloudFormation para EC2  ​Ec2Instance​: ​Type​: ​AWS​::​EC2​::Instance ​Properties​: ​ImageId​: ami-1651d5f8718dfsg6 ​KeyName​: ​Ref​: ​"KeyName" ​NetworkInterfaces​: - ​AssociatePublicIpAddress​: ​"true" ​DeviceIndex​: ​"0" ​GroupSet​: - ​Ref​: ​"myVPCEC2SecurityGroup" ​SubnetId​: ​Ref​: ​"PublicSubnet"  Para más información, puede buscar en google: ​AWS​::​EC2​::Instance   Características de Amazon EC2  Amazon EC2 ofrece las siguientes características:  ● Entornos informáticos virtuales, conocidos como instancias  ● Plantillas preconfiguradas para las instancias, conocidas como imágenes de  máquina de Amazon (AMI), que empaquetan las partes que necesita para el  servidor (incluido el sistema operativo y el software adicional)  ● Varias configuraciones de CPU, memoria, almacenamiento y capacidad de red de las  instancias, conocidos como tipos de instancias  ● Información de inicio de sesión segura para las instancias con pares de claves (AWS  almacena la clave pública y usted guarda la clave privada en un lugar seguro)  ● Volúmenes de almacenamiento para datos temporales que se eliminan cuando  detiene o termina la instancia, conocidos como volúmenes de almacén de instancias    38 
  • 39.     ● Volúmenes de almacenamiento persistente para los datos usando Amazon Elastic  Block Store (Amazon EBS), conocidos como volúmenes de Amazon EBS  ● Varias ubicaciones físicas para los recursos, como las instancias y los volúmenes de  Amazon EBS, conocidas como regiones y zonas de disponibilidad  ● Un firewall que permite especificar los protocolos, los puertos y los rangos de  direcciones IP que pueden alcanzar las instancias mediante el uso de grupos de  seguridad  ● Direcciones IPv4 estáticas para informática en la nube dinámica, conocidas como  direcciones IP elásticas  ● Metadatos, conocidos como etiquetas, que se pueden crear y asignar a los recursos  de Amazon EC2  ● Redes virtuales que puede crear que están aisladas lógicamente del resto de la  nube de AWS y que, opcionalmente, puede conectar a su propia red, conocidas  como nubes privadas virtuales (VPC)  Instancias Amazon EC2 de Linux  La instancia es una instancia con respaldo Amazon EBS (lo que significa que el volumen raíz  es un volumen de EBS). Puede especificar la zona de disponibilidad en la que se ejecuta la  instancia o dejar que Amazon EC2 seleccione una zona de disponibilidad por usted. Al  lanzar la instancia, la protege especificando con un par de claves y un grupo de seguridad.  Al conectarse a la instancia, debe especificar la clave privada del par de claves que  especificó cuando lanzó la instancia.    39 
  • 40.       Conectarse a la instancia de Linux  Para conectarse a la instancia de Linux mediante un cliente SSH, use el siguiente  procedimiento. Si aparece un error al intentar conectarse a la instancia, consulte ​Solución  de problemas con la conexión a la instancia​.  1. En un shell de línea de comandos, cambie los directorios a la ubicación del archivo  de clave privada que creó cuando lanzó la instancia.  2. Use el siguiente comando para configurar los permisos del archivo de clave privada  para que solo usted pueda leerlo.  chmod ​400​ /path/my-​key​-pair.pem  3. Si no configura estos permisos, no podrá conectarse a la instancia con este par de  claves. Para obtener más información, consulte ​Error: Unprotected Private Key File​.  4. Utilice el comando ssh para conectarse a la instancia. Especifique el archivo (.pem)  de clave privada y nombre_de_usuario@nombre_dns_público. Por ejemplo, si ha  utilizado Amazon Linux 2 o la AMI de Amazon Linux, el nombre de usuario es  ec2-user.    40 
  • 41.     ssh -​i​ /path/my-key-pair​.pem ec2-user@ec2-​198​-​51​-​100​-​1​.compute-1.amazonaws.com  5. Debería ver una respuesta como lo siguiente:  The authenticity ​of​ host ​'ec2-198-51-100-1.compute-1.amazonaws.com (10.254.142.33)' can​'t be established. RSA ​key​ fingerprint ​is 1​f:​51​:ae:​28​:bf:​89​:e9:d8:​1​f:​25​:​5​d:​37​:​2​d:​7​d:b8:ca:​9​f:f5:f1:​6​f. Are you sure you want ​to​ ​continue​ connecting (yes/no)?  6. (Solo IPv6) También puede conectarse a la instancia mediante su dirección IPv6.  Especifique el comando ssh con la ruta al archivo de clave privada (.pem), el nombre  de usuario adecuado y la dirección IPv6. Por ejemplo, si ha utilizado Amazon Linux 2  o la AMI de Amazon Linux, el nombre de usuario es ec2-user.  ssh​ ​-i​ /​path​/​my-key-pair​.pem ec2-user​@​2001​:db8:1234:1a00:9691:9503:25ad:1761  7. (Opcional) Verifique que la huella digital en la alerta de seguridad coincide con la  huella digital que obtuvo en el paso 1. Si estas huellas digitales no coinciden, alguien  podría intentar un ataque man-in-the-middle (MITM). Si coinciden, continúe con el  siguiente paso.  8. Escriba yes.  9. Debería ver una respuesta como lo siguiente:  Warning: Permanently added 'ec2​-198-51-100-1​.compute​-1​.amazonaws.com' (RSA) to the list of known hosts.   Para conectarse con windows utilizando Putty:  https://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/putty.html        41 
  • 42.     Roles de IAM  Un rol de IAM es una identidad de IAM que se puede crear en una cuenta y que tiene  permisos específicos. Un rol de IAM es similar a un usuario de IAM, ya que se trata de una  identidad de AWS con políticas de permisos que determinan lo que la identidad puede  hacer o 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.  Puede utilizar roles para delegar el acceso a usuarios, aplicaciones o servicios que  normalmente no tendrían acceso a los recursos de AWS. Por ejemplo, es posible que desee  conceder a los usuarios de la cuenta de AWS el acceso a los recursos que no suelen tener, o  conceder a los usuarios de una cuenta de AWS el acceso a los recursos de otra cuenta. O  también puede que quiera permitir que una aplicación móvil utilice los recursos de AWS,  pero no desea integrar las claves de AWS en la aplicación (donde serían difíciles de cambiar  y donde los usuarios pueden potencialmente extraerlas). En ocasiones, es posible que  quiera conceder acceso a AWS a los usuarios que ya tienen identidades definidas fuera de  AWS, como en su directorio corporativo. O bien, es posible que quiera conceder acceso a  su cuenta a terceros para que puedan realizar una auditoría en los recursos.  En estas situaciones, puede delegar el acceso a los recursos de AWS con un rol de IAM. En  esta sección se presentan los roles y las distintas formas de utilizarlos, cuándo y cómo  elegir entre enfoques y cómo crear, administrar, cambiar (o asumir) y eliminar roles.              42 
  • 43.     CloudFormation Resource:  AWSTemplateFormatVersion:​ ​"2010-09-09" Resources: RootRole: Type:​ ​"AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version:​ ​"2012-10-17" Statement: - Effect:​ ​"Allow" Principal: Service: - ​"ec2.amazonaws.com" Action: - ​"sts:AssumeRole" Path:​ ​"/" Policies: - PolicyName:​ ​"root" PolicyDocument: Version:​ ​"2012-10-17" Statement: - Effect:​ ​"Allow" Action:​ ​"*" Resource:​ ​"*" RootInstanceProfile: Type:​ ​"AWS::IAM::InstanceProfile" Properties: Path:​ ​"/" Roles: - Ref:​ ​"RootRole"        43 
  • 44.     Políticas y permisos  Puede administrar el acceso en AWS creando políticas y asignándoselas a identidades de  IAM (usuarios, grupos de usuarios o roles) o a recursos de AWS. Una política es un objeto  de AWS que, cuando se asocia a una identidad o un recurso, define sus permisos. AWS  evalúa estas políticas cuando una entidad principal (usuario o rol) realiza una solicitud. Los  permisos en las políticas determinan si la solicitud se permite o se deniega. La mayoría de  políticas se almacenan en AWS como documentos JSON. AWS admite seis tipos de políticas:  basadas en identidad, basadas en recursos, límites de permisos, SCP de Organizaciones,  ACL y políticas de sesión.  Las políticas de IAM definen permisos para una acción independientemente del método  que se utilice para realizar la operación. Por ejemplo, si una política permite la acción  GetUser​, un usuario con dicha política puede obtener información de los usuarios desde la  Consola de administración de AWS, la AWS CLI o la API de AWS. Cuando se crea un usuario  de IAM, se le puede permitir el acceso a la consola o el acceso mediante programación. Si  se permite el acceso a la consola, el usuario de IAM pueden iniciar sesión en la consola con  un nombre de usuario y una contraseña. Si se permite acceso mediante programación, el  usuario puede utilizar claves de acceso para trabajar con la CLI o la API.  En este ejemplo se muestra cómo crear una política que puede asociarse a un rol de  servicio. La política permite que la instancia EC2 especificada asocie o desasocie  volúmenes. La instancia se especifica con un ARN en el elemento Condition.Esta política  proporciona los permisos necesarios para llevar a cabo esta acción únicamente desde la  API o la AWS CLI de AWS.Para utilizar esta política, sustituya el texto rojo en cursiva del  ejemplo de política por su propia información.  Las instancias Amazon EC2 pueden ejecutar comandos de AWS con permisos concedidos  por un rol de servicio de AWS ​para una instancia EC2​ que esté asociada al perfil de  instancia. Puede asociar esta política al rol o añadir esta instrucción a una política existente.  Solo la instancia identificada por INSTANCE-ID puede asociar volúmenes, o desasociarlos, a  las instancias de la cuenta, incluida la misma instancia      44 
  • 45.     { "Version": ​"2012-10-17"​, "Statement": [ { "Effect": ​"Allow"​, "Action": [ ​"ec2:AttachVolume"​, ​"ec2:DetachVolume" ], "Resource": [ ​"arn:aws:ec2:*:*:volume/*"​, ​"arn:aws:ec2:*:*:instance/*" ], "Condition": { "ArnEquals": {"ec2:SourceInstanceARN": "arn:aws:ec2:*:*:instance/instance-id"​} } } ] }                    45 
  • 46.     Docker  Docker es una plataforma para desarrolladores y administradores de sistemas para                       desarrollar, implementar y ejecutar aplicaciones con contenedores. El uso de contenedores                       de Linux para implementar aplicaciones se denomina contenedorización. Los contenedores                     no son nuevos, pero su uso para implementar aplicaciones fácilmente sí lo es.  La contenedorización es cada vez más popular porque los contenedores son:  ● Flexible: Incluso las aplicaciones más complejas se pueden transportar en                     contenedores.  ● Ligero: los contenedores aprovechan y comparten el núcleo del host.  ● Intercambiable: puede implementar actualizaciones y actualizaciones sobre la                 marcha.  ● Portátil: puede compilar localmente, implementarlo en la nube y ejecutar en                       cualquier lugar.  ● Escalable: puede aumentar y distribuir automáticamente réplicas de contenedores.  ● Apilable: puede apilar servicios verticalmente y sobre la marcha.  Contenedores e imágenes  Se ejecuta un contenedor ejecutando una imagen. Una imagen es un paquete ejecutable                           que incluye todo lo necesario para ejecutar una aplicación: el código, el tiempo de                             ejecución, las bibliotecas, las variables de entorno y los archivos de configuración.  Un contenedor es una instancia de tiempo de ejecución de una imagen: En lo que se                                 convierte la imagen en la memoria cuando se ejecuta (es decir, una imagen con estado o                                 un proceso de usuario). Puede ver una lista de sus contenedores en ejecución con el                               comando, ​docker ps​, tal como lo haría en Linux.        46 
  • 47.     Contenedores y máquinas virtuales.  Un contenedor se ejecuta de forma nativa en Linux y comparte el kernel de la máquina                                 host con otros contenedores. Ejecuta un proceso discreto, no ocupa más memoria que                           cualquier otro ejecutable, lo que lo hace liviano.  Por el contrario, una máquina virtual (VM) ejecuta un sistema operativo "invitado" completo                           con acceso virtual a los recursos del host a través de un hipervisor. En general, las                                 máquinas virtuales proporcionan un entorno con más recursos de los que necesitan la                           mayoría de las aplicaciones.  Installación  Existen muchas maneras de instalar Docker dependiendo de su sistema operativo  OSX: ​https://docs.docker.com/docker-for-mac/install/  Windows: ​https://docs.docker.com/docker-for-windows/install/  Linux: ​https://docs.docker.com/v17.12/install/#time-based-release-schedule                  47 
  • 48.     Ejecución y administración de imágenes  Una vez instalado   docker --​version Docker ​version​ ​18.06​.​1​-​ce​, build e68fc7a215d7 Pruebe que su instalación funciona ejecutando la imagen simple de Docker, ​hello-world​:  docker run hello-world Unable ​to​ find image ​'hello-world:latest'​ locally latest: Pulling ​from​ library/hello-world 1​b930d010525: Pull complete Digest: sha256:​2557e3​c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535 Status: Downloaded newer image ​for​ hello-world:latest Hello ​from​ Docker! This message shows that your installation appears ​to​ be working correctly. To generate this message, Docker took ​the​ following steps: 1.​ The Docker client contacted ​the​ Docker daemon. 2.​ The Docker daemon pulled ​the​ ​"hello-world"​ image ​from​ ​the​ Docker Hub. (amd64) 3.​ The Docker daemon created ​a​ ​new​ container ​from​ that image which runs ​the executable that produces ​the​ output you are currently reading. 4.​ The Docker daemon streamed that output ​to​ ​the​ Docker client, which sent it ​to​ your terminal. To ​try​ something more ambitious, you can run ​an​ Ubuntu container ​with​: $ docker run -​it​ ubuntu bash Share images, automate workflows, ​and​ more ​with​ ​a​ free Docker ID: https​://hub.docker.com/ For more examples ​and​ ideas, visit: https​://docs.docker.com/​get​-started/   48 
  • 49.     Listar las imágenes descargadas o creadas docker ​image​ ​ls Listar la lista de contenedores. docker container ​ls​ --all Definir un contenedor con Dockerfile  Dockerfile define lo que sucede en el entorno dentro de su contenedor. El acceso a                               recursos como las interfaces de red y las unidades de disco está virtualizado dentro de este                                 entorno, que está aislado del resto de su sistema, por lo que necesita asignar puertos al                                 mundo exterior y ser específico sobre los archivos que desea "copiar" en ese ambiente Sin                               embargo, después de hacer eso, puede esperar que la compilación de su aplicación                           definida en este Dockerfile se comporte exactamente igual donde se ejecute. El archivo                           debe llamarse ​Dockerfile. ​Cree este archivo en una carpeta de cualquier nombre.   # Use an official Python runtime as a parent image FROM​ python:2.7-slim # Set the working directory to /app WORKDIR /app # Copy the current directory contents into the container at /app ADD​ . /app # Install any needed packages specified in requirements.txt RUN​ pip install --trusted-host pypi.python.org -r requirements.txt # Make port 80 available to the world outside this container EXPOSE 80 # Define environment variable ENV NAME World # Run app.py when the container launches CMD [​"python"​, ​"app.py"​]       49 
  • 50.     La applicación  Este Dockerfile se refiere a un par de archivos que aún no hemos creado. Cree dos archivos                                   más, r​equirements.txt y ​app.py​, y colóquelos en la misma carpeta con el Dockerfile. Esto                             completa nuestra aplicación, que como puedes ver es bastante simple. Cuando el                         Dockerfile anterior está integrado en una imagen, app.py y requirements.txt están                       presentes debido al comando ​ADD de Dockerfile, y se puede acceder a la salida desde                               app.py a través de HTTP (puerto 80) gracias al comando ​EXPOSE​.  Requirements.txt  Flask Redis app.py  from flask ​import​ Flask from redis ​import​ Redis, RedisError import​ os import​ socket # Connect to Redis redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2) app = Flask(__name__) @app.route(​"/"​) def hello(): try: visits = redis.incr(​"counter"​) except RedisError: visits = ​"<i>cannot connect to Redis, counter disabled</i>" html = ​"<h3>Hello {name}!</h3>"​ ​"<b>Hostname:</b> {hostname}<br/>"​ ​"<b>Visits:</b> {visits}" return html.format(name=os.getenv("NAME", ​"world"​), hostname=socket.gethostname(), visits=visits) if​ __name__ == ​"__main__"​: app.run(host='0.0.0.0', port=80)   50 
  • 51.     Ahora vemos que ​pip install -r requirements.txt instala las bibliotecas ​Flask y ​Redis para                             Python, y la aplicación imprime la variable de entorno ​NAME​, así como la salida de una                                 llamada a socket.gethostname (). Finalmente, debido a que Redis no se está ejecutando (ya                             que solo hemos instalado la biblioteca de Python y no a Redis en sí), debemos esperar que                                   el intento de usarlo aquí falle y produzca el mensaje de error.  ¡Eso es! No necesita Python ni nada en requirements.txt en tu sistema, ni la construcción o                                 ejecución de esta imagen los instala en tu sistema. No parece que realmente haya                             configurado un entorno con Python y Flask, pero lo ha hecho.  Construir la aplicación  Estamos listos para construir la aplicación. Asegúrese de estar en el nivel superior de su                               nuevo directorio.  docker​ ​build ​-t friendlyhello . ¿Dónde está su imagen construida? Está en el registro local de imágenes Docker de su                               máquina:  docker ​image​ ​ls Ejecuta la aplicación  Ejecute la aplicación, asignando el puerto 4000 de su máquina al puerto 80 publicado del                               contenedor usando -p:  docker ​run​ -p 4000:80 friendlyhello Debería ver un mensaje de que Python está sirviendo su aplicación en ​http://0.0.0.0:80. Pero                             ese mensaje proviene del interior del contenedor, que no sabe que usted asignó el puerto 80                                 de ese contenedor a 4000, lo que hace que la URL correcta sea ​http://localhost:4000​.  Puede terminar la ejecución presionando simultáneamente ​CTRL+​c​.  Ahora ejecutemos la aplicación en segundo plano, en modo separado:  docker ​run​ -d -p 4000:80 friendlyhello   51 
  • 52.     Obtiene el ID de contenedor largo para su aplicación y luego lo devuelven a su terminal. Su                                   contenedor se está ejecutando en segundo plano. También puede ver el ID del contenedor                             abreviado con el contenedor docker ls (y ambos funcionan de manera intercambiable cuando                           se ejecutan comandos):  docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a7109e7dca76 friendlyhello ​"python app.py"​ ​10​ seconds ago ​Up​ ​9​ seconds 0.0​.0.0​:​4000​->​80​/tcp infallible_brown Tenga en cuenta que la ID DEL CONTENEDOR coincide con lo que está en ​http://localhost:4000​.  Ahora use el contenedor de la ventana acoplable para finalizar el proceso, usando la ID DEL                                 CONTENEDOR, de esta manera:  docker container ​stop​ a7109e7dca76 Etiqueta la imagen  La notación para asociar una imagen local con un repositorio en un registro es nombre de                                 usuario / repositorio: etiqueta. La etiqueta es opcional, pero se recomienda, ya que es el                               mecanismo que los registros utilizan para dar una versión a las imágenes de Docker.                             Proporcione al repositorio y etiquetas nombres significativos para el contexto, como                       get-started: part2. Esto coloca la imagen en el repositorio de inicio y la etiqueta como                               parte2.  Ahora, ponlo todo junto para etiquetar la imagen. Ejecute la imagen de la etiqueta docker                               con su nombre de usuario, repositorio y nombres de etiquetas para que la imagen se                               cargue en el destino deseado. La sintaxis del comando es:  docker ​tag​ ​friendlyhello​ john/get-​started​:part2 Sube tu imagen etiquetada al repositorio:  docker​ ​push ​username/repository:tag       52 
  • 53.       AWS ECR  Amazon Elastic Container Registry (ECR) es un registro de contenedores de ​Docker                         completamente administrado que facilita a los desarrolladores las tareas de                     almacenamiento, administración e implementación de imágenes de contenedores de                   Docker. Amazon ECR se integra con ​Amazon Elastic Container Service (ECS)​, lo que permite                             simplificar el desarrollo para el flujo de trabajo de producción. Con Amazon ECR, ya no es                                 necesario que utilice sus propios repositorios de contenedores ni que se preocupe por                           escalar la infraestructura subyacente. Amazon ECR hospeda sus imágenes en una                       arquitectura escalable y de alta disponibilidad, lo que le permite implementar                       contenedores para sus aplicaciones con fiabilidad. La integración con AWS Identity and                         Access Management (IAM) ofrece un control de cada repositorio a nivel de recurso. Con                             Amazon ECR no hay cuotas predefinidas ni compromisos. Solo tiene que pagar por la                             cantidad de datos almacenados en los repositorios y por los datos transferidos a Internet.  Instale la CLI de AWS  Puede utilizar las herramientas de línea de comandos de AWS para emitir comandos en la                               línea de comandos de su sistema para realizar tareas de Amazon ECS y AWS. Esto puede                                 ser más rápido y más conveniente que usar la consola. Las herramientas de la línea de                                 comandos también son útiles para crear scripts que realizan tareas de AWS.  Para utilizar AWS CLI con Amazon ECR, instale la última versión de AWS CLI (la                               funcionalidad de Amazon ECR está disponible en AWS CLI a partir de la versión 1.9.15).                               Puede verificar su versión de AWS CLI con el comando ​aws ​--version. Para obtener                           información sobre la instalación de la CLI de AWS o su actualización a la última versión,                                 consulte Instalación 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​.        53 
  • 54.     Pasos para subir una image Docker a ECR  Recupere el comando de inicio de sesión que se usará para autenticar su cliente Docker en  su registro.  Utilice el CLI de AWS:  $(​aws ecr ​get-login​ ​--no-include-email​ ​--region​ ​us-east-​1) Construya su imagen Docker usando el siguiente comando.   docker​ ​build ​-t ​friendlyhello​ .  Una vez que se complete la compilación, etiquete su imagen para que pueda empujar la                               imagen a este repositorio:  docker tag ​friendlyhello​:latest 470331809785​.dkr.ecr.us-east-1.amazonaws.com​/​friendlyhello​:latest    Ejecute el siguiente comando para enviar esta imagen a su nuevo repositorio de AWS:  docker push 470331809785​.dkr.ecr.us-east-1.amazonaws.com​/​friendlyhello​:latest    Amazon Elastic Container Service (ECS)  Amazon Elastic Container Service (Amazon ECS) es un servicio de administración de                         contenedores altamente escalable y rápido que facilita la tarea de ejecutar, detener y                           administrar contenedores de Docker en un clúster. Puede alojar el clúster en una                           infraestructura sin servidor administrada por Amazon ECS. Para ello, lance los servicios o                           las tareas con el tipo de lanzamiento Fargate. Si desea más control, puede alojar las tareas                                 en un clúster de instancias de Amazon Elastic Compute Cloud (Amazon EC2) administrado                           mediante el tipo de lanzamiento EC2. Para obtener más información acerca de los tipos de                               lanzamiento, consulte ​Tipos de lanzamiento de Amazon ECS​.  Amazon ECS es un servicio regional que simplifica la ejecución de contenedores de                           aplicación con alta disponibilidad en diversas zonas de disponibilidad dentro de una región.                             54 
  • 55.     Puede crear clústeres de Amazon ECS dentro de una VPC nueva o existente. Después de                               que el clúster esté activo y en ejecución, puede definir servicios y definiciones de tareas                               que especifican las imágenes de contenedores Docker que ejecutar en los clústeres. Las                           imágenes de contenedor se almacenan y se extraen desde registros de contenedor, que                           podrían existir dentro o fuera de la infraestructura de AWS.  Para más información:  https://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/Welcome.html    Definiciones de tareas de Amazon ECS  Para ejecutar contenedores Docker en Amazon ECS se necesita una definición de tarea.                           Entre los parámetros que se pueden especificar en una definición de tarea se incluyen:    ● La imagen de Docker que se va a utilizar con cada contenedor en su tarea  ● La cantidad de CPU y de memoria que se va a utilizar con cada tarea o cada                                   contenedor dentro de una tarea  ● El tipo de lanzamiento que utilizar, que determina la infraestructura en la que se                             alojan sus tareas  ● El modo de red de Docker que utilizar para los contenedores en la tarea  ● La configuración de registros que se va a utilizar para sus tareas  ● Si la tarea se debe seguir ejecutando si el contenedor finaliza o falla  ● El comando que el contenedor debe ejecutar al iniciarse  ● Los volúmenes de datos que deben utilizarse con los contenedores en la tarea  ● El rol de IAM que las tareas deben utilizar    Puede definir varios contenedores en una definición de tarea. Los parámetros que usa                           dependen del tipo de lanzamiento que elija para la tarea. No todos los parámetros son                               válidos. Para obtener más información acerca de los parámetros disponibles y para qué                           tipos de lanzamiento son válidos en una definición de tarea, consulte Parámetros de                           definición de tarea.    Toda la pila de la aplicación no tiene que existir en una definición de tarea única y, en la                                       mayoría de los casos, no debería. La aplicación puede abarcar varias definiciones de tareas                             combinando contenedores relacionados en sus propias definiciones de tareas, cada una de                         ellas representando un único componente. Para obtener más información, consulte                     Arquitectura de aplicaciones.    Para más información:  https://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/task_definitions.ht ml    55 
  • 57.     Servicios  Amazon ECS le permite ejecutar y mantener un número determinado de instancias de una                             definición de tarea simultáneamente en un clúster de Amazon ECS. Esto se denomina un                             servicio. En caso de que alguna de las tareas falle o se pare por algún motivo, el                                   programador de servicio de Amazon ECS lanza otra instancia de la definición de tarea para                               sustituirla y mantener el número deseado de tareas en el servicio en función de la                               estrategia de programación utilizada.    Además de mantener el recuento deseado de tareas en el servicio, opcionalmente puede                           ejecutar el servicio tras un balanceador de carga. El balanceador de carga distribuye el                             tráfico entre las tareas que están asociadas al servicio.    Elastic Load Balancing  Adquiera tolerancia a errores para cualquier aplicación mediante el logro de escalabilidad,                         rendimiento y seguridad.    Elastic Load Balancing distribuye automáticamente el tráfico de aplicaciones entrantes a                       través de varios destinos, tales como instancias de Amazon EC2, contenedores, direcciones                         IP y funciones Lambda. Puede controlar la carga variable del tráfico de su aplicación en una                                 única zona o en varias zonas de disponibilidad. Elastic Load Balancing ofrece tres tipos de                               balanceadores de carga que cuentan con el nivel necesario de alta disponibilidad,                         escalabilidad automática y seguridad para que sus aplicaciones sean tolerantes a errores.    Más información:  https://aws.amazon.com/es/elasticloadbalancing/features/#Details_for_Elastic_Load_Balan cing_Products    Balanceador de carga clásico  El balanceador de carga clásico proporciona equilibrio de carga básico en varias instancias                           de Amazon EC2 y funciona tanto en el nivel de solicitud como en el nivel de conexión. El                                     balanceador de carga clásico está diseñado para aplicaciones que se construyeron dentro                         de la red EC2-Classic.    Balanceador de carga de red  El balanceador de carga de red es el más adecuado para equilibrar la carga del tráfico del                                   protocolo de control de transmisión (TCP) y de la seguridad de capa de transporte (TLS)                               para la que se requiere un rendimiento extremo. El balanceador de carga de red, en                               funcionamiento a nivel de conexión (capa 4), dirige el tráfico hacia destinos dentro de                             Amazon Virtual Private Cloud (Amazon VPC) y es capaz de controlar millones de solicitudes                             por segundo mientras mantiene las latencias ultrabajas. El balanceador de carga de red                           también se optimiza para controlar patrones de tráfico repentinos y volátiles.      57 
  • 58.           Balanceador de carga de aplicaciones  El balanceador de carga de aplicaciones es el más adecuado para el equilibrio de carga del                                 tráfico HTTP y HTTPS. Proporciona un direccionamiento de solicitudes avanzado dirigido a                         la entrega de arquitecturas de aplicaciones modernas, incluidos microservicios y                     contenedores. El balanceador de carga de aplicaciones, en funcionamiento a nivel de                         solicitud individual (capa 7), dirige el tráfico a los destinos dentro de Amazon Virtual Private                               Cloud (Amazon VPC) en función del contenido de la solicitud.    Beneficios  ● Alta disponibilidad: El acuerdo de nivel de servicios de Amazon Elastic Load                         Balancing prevé una disponibilidad del 99,99% para los balanceadores de carga.  ● Seguridad: Elastic Load Balancing interactúa con Amazon Virtual Private Cloud (VPC)                       para proporcionar funciones de seguridad sólidas, incluida la administración                   integrada de certificados, la autenticación de usuarios y el descifrado SSL/TLS.   ● Elasticidad: Elastic Load Balancing es capaz de controlar cambios rápidos en los                         patrones de tráfico de la red. Además, la integración profunda con Auto Scaling                           asegura una capacidad de aplicación suficiente para satisfacer diferentes niveles de                       carga de aplicaciones sin que haya intervención manual.  ● Flexibilidad: Elastic Load Balancing también le permite utilizar direcciones IP para                       direccionar las solicitudes a los destinos de las aplicaciones. Este proceso otorga                         flexibilidad en torno a la manera de virtualizar los destinos de sus aplicaciones, lo                             que le permite alojar más aplicaciones en la misma instancia. También permite que                           estas aplicaciones tengan grupos de seguridad individuales y usen el mismo puerto                         de red para simplificar la comunicación entre aplicaciones en la arquitectura basada                         en microservicios.  ● Monitorización y auditoría sólidas: Elastic Load Balancing le permite monitorizar las                       aplicaciones y su rendimiento en tiempo real con métricas, registros y rastreo de                           solicitudes de Amazon CloudWatch. De esta manera se mejora la visibilidad del                         comportamiento de las aplicaciones, lo que permite detectar problemas e                     identificar cuellos de botella de rendimiento en la pila de aplicaciones en la                           granularidad de una solicitud individual.   ● Equilibrio de cargas híbrido: Elastic Load Balancing permite equilibrar cargas entre                       recursos locales y de AWS con el mismo balanceador de carga. Esto facilita la                             migración, la transmisión en modo burst o la conmutación por error de aplicaciones                           locales a la nube.    Características clave  Equilibrio de carga en la capa 7  Puede equilibrar la carga de las aplicaciones HTTP/HTTPS y utilizar características                         58 
  • 59.     específicas de la capa 7, como encabezados X-Forwarded-For.    Compatibilidad con HTTPS  Un balanceador de carga de aplicaciones es compatible con la terminación HTTPS entre los                             clientes y el balanceador de carga. Los balanceadores de carga de aplicaciones también                           ofrecen la administración de certificados SSL a través de AWS Identity and Access                           Management (IAM) y AWS Certificate Manager para establecer políticas de seguridad                       predefinidas.    Indicación de nombre de servidor (SNI)  La indicación de nombre de servidor (SNI) es una extensión del protocolo TLS mediante la                               cual un cliente indica el nombre de host al cual se debe realizar la conexión al inicio del                                     protocolo de enlace TLS. El balanceador de carga puede presentar varios certificados                         mediante el mismo agente de escucha seguro, lo que le permite admitir varios sitios web                               seguros a través del uso de un único agente de escucha seguro. El balanceador de carga de                                   aplicaciones también es compatible con el algoritmo de selección de certificados                       inteligentes con SNI. Si el nombre de host indicado por un cliente coincide con varios                               certificados, el balanceador de carga establece cuál es el certificado más adecuado en                           función de varios factores, entre ellos, las capacidades del cliente.    Direcciones IP como destinos  Puede equilibrar la carga de cualquier aplicación local o alojada en AWS mediante el uso de                                 direcciones IP de los backends de las aplicaciones como destinos. Esto permite equilibrar                           cargas a un backend de aplicación alojado en cualquier dirección IP y con cualquier interfaz                               de una instancia. Cada aplicación alojada en la misma instancia puede tener un grupo de                               seguridad asociado y utilizar el mismo puerto. También puede usar direcciones IP como                           destinos para equilibrar cargas de aplicaciones alojadas en ubicaciones locales (a través de                           una conexión de VPN o de Direct Connect), VPC emparejadas y EC2-Classic (con                           ClassicLink). La capacidad para equilibrar cargas entre recursos locales y alojados en AWS                           lo ayuda a migrar a la nube, solicitar ráfagas a la nube y conmutar por error en la nube.    Funciones de AWS Lambda como destinos  Los balanceadores de carga de aplicaciones son compatibles con las funciones de Lambda                           para poder atender solicitudes HTTP, permitiendo a los usuarios acceder a aplicaciones sin                           servidor desde cualquier cliente HTTP, incluyendo navegadores web. Puede registrar sus                       funciones Lambda como destinos para un balanceador de carga y utilizar el soporte para                             reglas de direccionamiento basadas en contenido para dirigir solicitudes a distintas                       funciones Lambda. Puede utilizar el balanceador de carga de aplicaciones como un punto                           de enlace HTTP común para aplicaciones que utilizan servidores e informática sin servidor.                           Puede crear un sitio web completo utilizando funciones Lambda o combinar instancias                         EC2, contenedores, servidores locales y funciones Lambda para crear aplicaciones.        59 
  • 60.     Grupos de destino para los Application Load Balancers  Cada grupo de destino se utiliza para direccionar solicitudes a uno o varios destinos                             registrados. Cuando se crea la regla de cada agente de escucha, se especifican un grupo de                                 destino y las condiciones. Cuando se cumple la condición de una regla, el tráfico se reenvía                                 al grupo de destino correspondiente. Puede crear grupos de destino diferentes para los                           distintos tipos de solicitudes. Por ejemplo, puede crear un grupo de destino para las                             solicitudes generales y otros grupos de destino para las solicitudes destinadas a los                           microservicios de la aplicación. Para obtener más información, consulte Componentes de                       Balanceador de carga de aplicaciones.    Puede definir la configuración de comprobación de estado del balanceador de carga para                           cada grupo de destino. Cada grupo de destino utiliza la configuración de comprobación de                             estado predeterminada, a menos que la anule al crear el grupo de destino o la modifique                                 posteriormente. Después de especificar un grupo de destino en una regla para un agente                             de escucha, el balanceador de carga monitoriza constantemente el estado de todos los                           destinos registrados en el grupo de destino que se encuentran en una zona de                             disponibilidad habilitada para el balanceador de carga. El balanceador de carga direcciona                         las solicitudes a los destinos registrados que se encuentran en buen estado.    Más información:  https://docs.aws.amazon.com/es_es/elasticloadbalancing/latest/application/load-balancer-t arget-groups.html    Agentes de escucha para Application Load Balancer  Antes de comenzar a utilizar Balanceador de carga de aplicaciones, debe agregar uno o                             varios agentes de escucha. Un agente de escucha es un proceso que comprueba las                             solicitudes de conexión utilizando el protocolo y el puerto configurados. Las reglas que se                             definen para un agente de escucha determinan cómo el balanceador de carga va a                             direccionar las solicitudes a los destinos de uno o varios grupos de destino.    Más información:  https://docs.aws.amazon.com/es_es/elasticloadbalancing/latest/application/load-balancer-l isteners.html    Amazon CloudWatch  Visibilidad completa de sus aplicaciones y recursos de la nube  Amazon CloudWatch es un servicio de monitoreo y administración creado para                       desarrolladores, operadores de sistemas, ingenieros de fiabilidad de sitio (SRE) y gerentes                         de TI. CloudWatch le ofrece datos e información procesable para monitorear sus                         aplicaciones, comprender cambios de rendimiento que afectan a todo el sistema y tomar                           acciones, optimizar el uso de recursos y lograr una vista unificada del estado de las                               operaciones. CloudWatch recopila datos de monitoreo y operaciones en formato de                         60 
  • 61.     registros, métricas y eventos, lo que le ofrece una vista unificada de los recursos, las                               aplicaciones y los servicios de AWS que se ejecutan en servidores locales y de AWS. Puede                                 usar CloudWatch para definir alarmas de alta resolución, ver registros y métricas lado a                             lado, tomar acciones automatizadas, resolver errores y descubrir información para                     optimizar sus aplicaciones y asegurarse de que se estén ejecutando sin problemas.    Características de Amazon CloudWatch  Amazon CloudWatch es un servicio de monitoreo y administración que suministra datos e                           información procesable para aplicaciones y recursos de infraestructura locales, híbridos y                       de AWS. Con CloudWatch, puede recopilar y obtener acceso a todos los datos de                             rendimiento y operaciones en formato de registros y métricas a partir de una sola                             plataforma. Esto le permite superar el desafío de monitorear aplicaciones y sistemas                         individuales aislados (servidor, red, base de datos, etc.). CloudWatch le permite monitorear                         una pila completa (aplicaciones, infraestructura y servicios) y utilizar alarmas, registros y                         datos de eventos para tomar acciones automatizadas y disminuir el tiempo de resolución                           (MTTR). Esto libera recursos importantes y le permite enfocarse en la creación de                           aplicaciones y valor comercial.    CloudWatch le suministra información procesable que lo ayuda a optimizar el rendimiento                         de las aplicaciones, a administrar el uso de recursos y a conocer el estado de las                                 operaciones de todo el sistema. CloudWatch ofrece una visibilidad de hasta 1 segundo de                             las métricas y los datos de los registros, 15 meses de retención de datos (métricas) y la                                   capacidad para realizar cálculos con las métricas. Esto le permite realizar análisis históricos                           para optimizar costos y obtener información en tiempo real sobre los recursos de la                             infraestructura y la optimización de las aplicaciones.    Más información:  https://aws.amazon.com/es/cloudwatch/​ ​https://aws.amazon.com/es/cloudwatch/features/    Amazon ElastiCache  Almacén de datos en memoria administrado y compatible con Memcached o Redis.  Amazon ElastiCache ofrece Redis y Memcached de forma completamente administrada.                     Implemente, ejecute y ajuste la escala de almacenes de datos en memoria compatibles, de                             código abierto y conocidos sin inconvenientes. Cree aplicaciones con uso intensivo de                         datos o mejore el nivel de desempeño de aplicaciones existentes mediante la recuperación                           de datos a partir de almacenes de datos en memoria de baja latencia y alto grado de                                   procesamiento. Amazon ElastiCache es una excelente opción para videojuegos, tecnología                     publicitaria, servicios financieros, sanidad y aplicaciones con IoT.        61 
  • 62.       Motores de Amazon ElastiCache  ● ElastiCache para Redis: Administre y analice datos rápidamente cambiantes con un                       almacén de datos en memoria.  ● ElastiCache para Memcached: Cree una capa de almacenamiento en caché escalable                       para aplicaciones con uso intensivo de datos.             62