Blog de Amazon Web Services (AWS)
Como detectar Amazon WorkSpaces no utilizados
Por Hernán Fernández, Enterprise Support Lead en AWS
Introducción
Amazon WorkSpaces es un servicio que permite aprovisionar escritorios virtuales de manera rápida, segura, escalable y a bajo costo. Con el objetivo de optimizar el consumo del servicio, veremos cómo es posible detectar WorkSpaces que no han sido utilizados, empleando como referencia la fecha de última conexión del usuario final.
Para esto utilizaremos la interfaz de línea de comandos de AWS (AWS CLI) de su computador o de AWS CloudShell, disponible en su consola de AWS.
Ejecutaremos un comando que utiliza la API describe-workspaces-connection-status, reportando la fecha y hora de la última conexión conocida de cada escritorio virtual.
El siguiente comando retorna la lista de WorkSpaces. El campo LastKnownUserConnectionTimestamp, contiene la fecha y hora de última conexión del usuario del respectivo WorkSpaces.
aws workspaces describe-workspaces-connection-status --output table |
Adicionalmente podemos ordenar el resultado por fecha, con el siguiente comando.
aws workspaces describe-workspaces-connection-status --query 'sort_by(WorkspacesConnectionStatus[].{WorkspaceId:WorkspaceId,LastConnection:to_string(LastKnownUserConnectionTimestamp)},&LastConnection)' --output table |
Obtendremos una salida similar a la siguiente:
En este caso, por cada Workspace Id, podemos ver la fecha y hora de última conexión del usuario. Con esta información puede tomar decisiones sobre que WorkSpaces son candidatos a ser dados de baja.
En los casos donde la fecha no se encuentre disponible, significa que el recurso aún no ha sido utilizado. En estos casos recomendamos validar la fecha en que el workspaces fue entregado al usuario, antes de decidir su eliminación.
Reportes periódicos
Adicionalmente, es posible automatizar el reporte de Workspaces no utilizado- con el siguiente código disponible en GitHub.
El siguiente diagrama representa la arquitectura que puede desplegar automáticamente utilizando la plantilla de AWS CloudFormation
1. La solución despliega una regla de Amazon EventBridge que invoca la función AWS Lambda cada cierto número de días, los cuales son definidos por el usuario al momento de implementar la solución.
2. La función Lambda consulta a Amazon WorkSpaces la lista de escritorios virtuales y la fecha de última conexión.
3. Los logs de la función Lambda, son almacenados en AWS CloudWatch Logs.
4. Se envía un reporte al usuario final con el listado de Amazon WorkSpaces con la cantidad de días que no han sido utilizados.
La plantilla de CloudFormation solicitará tres parámetros. La cantidad de días desde los que se reportará un escritorio Workspaces como sin utilización (parámetro: Days), el correo electrónico que recibirá la notificación (parámetro: EmailAddress) y cada cuantos días ejecutará la revisión de manera automatizada (parámetro: ExecutionRate).
Es importante aceptar la solicitud de subscripción al tema SNS para recibir dicho reporte.
Luego de desplegar la solución, recibirá un correo electrónico, para confirmar la notificación al tema SNS, la cual debe confirmar para recibir los reportes.
Finalmente, la solución creará un bucket s3 llamado unusedworkspaces-<AWS Account Number>, para mantener un historial de los reportes generados por la solución, en formato CSV.
Conclusiones
En este artículo mostramos como optimizar el consumo de Amazon Workspaces obteniendo un listado WorkSpaces con su respectiva fecha de última utilización. Esta información le permitirá detectar WorkSpaces que no han sido utilizados por los usuarios.
Soporte y Contribución
Esta solución se encuentra disponible en el siguiente repositorio GitHub. El soporte o requerimiento de nuevas funcionalidades se encuentra disponible en modo mejor esfuerzo.
Cualquier contribución a este proyecto en GitHub es bienvenida y puede ser requerida vía Github pull requests.
Acerca del autor
Hernán Fernández es Enterprise Support Lead en AWS. En su rol, ayuda a clientes en sus procesos de adopción de la nube, así como también a aplicar las mejores practica y reducir riesgos en sus aplicaciones. Se ha desempeñado durante más de 15 años como profesional de tecnologías de la información, su foco es tecnologías Linux, infraestructura y proyectos empresariales.