Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon...

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

Transcript of Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon...

Page 1: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

 

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.  

 

 

Page 2: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

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 

Page 3: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 4: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 5: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

● 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 

Page 6: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

 

 

 

 

 

 

 

 

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 

Page 7: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 8: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

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 

Page 9: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

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 

Page 10: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

 

 

 

 

 

 

 

Éste es el último paso. AWS validará su cuenta y enviará un correo de confirmación 

 10 

Page 11: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

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 

Page 12: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 13: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 14: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

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 

Page 15: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

● 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 

Page 16: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 17: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 18: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 19: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 20: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 21: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

¿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 

Page 22: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

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 

Page 23: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 24: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 25: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 26: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 27: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 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 

Page 28: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 29: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

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 

Page 30: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 31: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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

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 

Page 32: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

"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 

Page 33: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 34: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 35: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

¿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 

Page 36: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 37: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

● 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 

Page 38: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 39: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

● 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 

Page 40: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

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 

Page 41: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

ssh -i /path/my-key-pair.pem [email protected] 

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 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f. 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 

Page 42: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 43: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 44: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 45: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

{

"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 

Page 46: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 47: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 48: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 1b930d010525: Pull complete

Digest:

sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535 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 

Page 49: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 50: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

La applicación 

Este Dockerfile se refiere a un par de archivos que aún no hemos creado. Cree dos archivos                                 

más, requirements.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 

Page 51: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 52: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 53: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

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 

Page 54: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 55: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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

 55 

Page 56: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 

     

 56 

Page 57: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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

Page 58: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

   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 

Page 59: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 60: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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-target-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-listeners.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 

Page 61: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

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 

Page 62: Acelera tu éxito en la nube Amazon Web Services Trambo ......Acelera tu éxito en la nube Amazon Web Services Trambo Training Por Brayan Lemus Introducción La siguiente guía es

  

 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