En DoiT vas a encontrarte con personas de perfiles muy distintos, todas comprometidas con hacerte el día a día más llevadero. Si alguna vez te tocó conectarte a tus instancias EC2 a través de una VPN, ya sabes lo tedioso que resulta. Poder automatizar la gestión de esas instancias sin tener que conectarte a cada una sería una gran ventaja. Y mejor todavía sería administrar todas esas automatizaciones desde una sola interfaz, en lugar de guardarlas en cada instancia o en una golden image.
En un trabajo anterior me topé con retos parecidos cuando empecé a administrar nuestra flota de servidores AWS Active Directory y, al mismo tiempo, teníamos que dar de alta empleados nuevos a toda velocidad. Ahí fue cuando descubrí System Manager.
¿Qué es Systems Manager?
Systems Manager es la respuesta de AWS para administrar tu infraestructura de forma inteligente. El agente que se instala en la máquina recibe comandos desde las cuentas de AWS y devuelve información, lo que te permite hacer varias cosas:
- Ejecutar comandos en Windows y Linux. Cada agente crea un usuario local llamado ssm-user que sirve para ejecutar comandos contra la instancia en bash, PowerShell y CMD. Puedes apoyarte en IAM para controlar reglas y permisos en lugar de SSH Keys y reglas de red.
- Inventario y gestión de parches. Inventaría tus aplicaciones y parches instalados, y define una política de parches para tus instancias según tus preferencias y calendario.
- Runbooks y Automation. Puedes crear documentos de Systems Manager que contienen una serie de pasos para aplicar en una instancia. También puedes crear Systems Manager Automation, que interactúa con tu infraestructura de AWS mediante un rol de IAM y APIs como EC2 o Step Functions.
- Maintenance Windows te permite programar y controlar la ejecución de runbooks según requisitos específicos de tiempo, disponibilidad y éxito.
Hoy te voy a guiar para habilitar este servicio y conectarte a tus instancias de forma interactiva con SSM, usando Session Manager.
Configuración de System Manager
Para usar SSM, debes cumplir con los siguientes requisitos:
- La máquina debe tener el agente instalado
- Debe tener asociado un rol de IAM con los permisos mínimos para System Manager (llamado AmazonSSMManagedInstanceCore)
- La máquina debe poder salir a internet por el puerto 443 o, en su defecto, contar con 3 endpoints de VPC
Cuando ejecutas una imagen proporcionada por AWS, el agente de System Manager ya viene instalado por defecto en tu instancia. Si no es así, puede que necesites ejecutar uno de los siguientes comandos:
#Si estás en un sistema basado en Red Hat
sudo yum install amazon-ssm-agent
#Si estás en un sistema basado en Debian
sudo apt-get install amazon-ssm-agent
#Una vez instalado, inicia el servicio
sudo systemctl start amazon-ssm-agent
El segundo punto implica asociar o actualizar el rol de instancia que usa tu máquina. Tienes que otorgar un conjunto de permisos administrados llamado AmazonSSMManagedInstanceCore, que permite al recurso interactuar directamente con el servicio de AWS con un alcance limitado. Así evitas almacenar credenciales en la instancia y exponerte a perderlas.
Si nunca antes configuraste un rol, también puedes aprovechar la Default Host Management Configuration:
- Entra a la consola de AWS System Manager y selecciona Fleet Manager en el panel izquierdo. Asegúrate de estar en la región donde tienes la mayoría de tus instancias EC2.
- En Account Management y Configure Default Host Management Configuration, activa Enable Default Host Management Configuration.
- Se te pedirá elegir un rol de IAM; puedes usar la opción recomendada para crear un nuevo rol predeterminado de Instance Management.

Al crear el rol de IAM predeterminado para la gestión de hosts, puedes optar por crear uno nuevo o reutilizar uno existente
- Finaliza la configuración haciendo clic en Configure.
Todas las instancias de la región deberían poder acceder al endpoint de System Manager con el rol predeterminado que acabas de crear.
Sobre el último punto, lo más probable es que la mayoría de tus configuraciones de red ya te permitan salir a internet por el puerto 443. Si no es así, aquí va un resumen de los requisitos de red.
El SSM Agent necesita, como mínimo, poder contactar estas direcciones en el puerto 443:
ssm.==region==.amazonaws.com
ssmmessages.==region==.amazonaws.com
ec2messages.==region==.amazonaws.com
Si no permites el acceso hacia afuera, puedes crear Amazon VPC Endpoints para habilitar el acceso. Eso sí, tendrás que configurarlos en cada región donde los uses, y aun así conviene revisar bien la configuración de red para que la mayoría de las instancias pueda comunicarse con el servicio. Mi recomendación es habilitar estos endpoints en una VPC de servicios.
Cómo usar Session Manager
Si tienes las credenciales correctas y acceso a IAM, ya puedes conectarte a estas instancias directamente desde cualquier lugar.
Si estás ejecutando una instancia de Windows y quieres usar la GUI, ve al Fleet Manager, selecciona tu instancia y haz clic en Connect with Remote Desktop.

La interfaz del Fleet Manager, desde donde puedes ver tus instancias remotas y conectarte a ellas
Como Windows exige una contraseña para la cuenta de administrador, necesitas tener las credenciales o haber configurado la instancia con un Key Pair. AWS lo usa para derivar la contraseña de la cuenta de administrador.

Interfaz para conectarte a las instancias de forma remota mediante Remote Desktop
Tras hacer clic en el botón de conexión, System Manager se encarga del resto: crea un túnel seguro desde tu computadora hasta la instancia que quieres administrar, para que retomes tus tareas desde cualquier parte del mundo.

Interfaz de una conexión remota a un Windows Remote Desktop
Acceder por línea de comandos a instancias de Windows y Linux es aún más sencillo: basta con hacer clic en Start Commandline session para abrir una terminal con acceso de administrador en las máquinas registradas en SSM.
Cada agente configura un usuario local llamado ssm-user que puedes personalizar, dándole o no permisos de nivel administrador en la instancia. Este mismo usuario es el que ejecuta los runbooks llamados Documents, que puedes configurar en System Manager.

Interfaz de una conexión remota con una terminal de línea de comandos en Windows
Espero que este artículo te sea de utilidad. Hay muchas formas de mejorar y personalizar tu experiencia con AWS Systems Manager, y aquí te dejo una vía rápida para empezar a sacarle provecho al servicio.
Si necesitas ayuda para administrar instancias en AWS, no dudes en escribirme a través de DoiT Support o dejarme un comentario en este artículo.
Escríbenos a DoiT. Con un equipo formado exclusivamente por talento senior de Engineering, nos especializamos en consultoría avanzada en la nube, diseño de arquitectura, asesoría en debugging y servicios de consultoría.