Cómo exportar listado de todos los Amazon Workspaces y obtener su última conexión.

Oscar Ivan Ocampo
4 min readSep 22, 2020

--

En ocasiones es importante poder tener un listado exportado de todos los Amazon WorkSpaces de nuestra VPC y así obtener el último inicio de sesión de cada usuario , esto con el fin de poder determinar el uso y análisis estadístico para conocer que usuarios usan o NO el Amazon Workspaces que ha sido desplegado y entregado a cada usuario.

La forma de obtener este reporte es a través del CLI exportando un archivo .CSV donde obtendremos todos los datos.

1. Creación del Rol IAM de la instancia bastión.

Debemos tener creado como prerrequisito una instancia EC2 windows como bastión en la misma VPC de los Workspaces con AWS CLI Versión 2

https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html

Seguidamente ingresamos a AWS IAM y creamos el siguiente Rol que será necesario para que el servidor bastión tenga los permisos necesarios de ejecutar el Shell Scripting.

Escogemos la política administrada “ AmazonWorkspacesAdmin”.

Asignamos un nombre del rol y damos crear Rol.

Hemos finalizado la creación del Rol.

2. Asignación del Rol a la instancia Windows EC2

Agregamos el Rol “WorkspacesAdmin” a la instancia Windows EC2 que usaremos de bastión para ejecutar el Script en Power Shell .

EC2 → → Click Derecho → Instance Settings→Attach/Replace IAM Role

Escogemos el rol WorkspaceAdmin y damos Apply.

Una vez asignamos el Rol tenemos la confirmación y damos Close.

3. Conectamos a la instancia Bastión RDP

A través de la IP pública ó DNS Publico conectamos desde la instancia EC2 y abrimos Power Shell como administrador ejecutando el siguiente Script.

Puedes cambiar el nombre del archivo outputtesttest.csv por el nombre de tu preferencia.

Get-WKSWorkspace | ForEach-Object { $connstat = Get-WKSWorkspacesConnectionStatus -WorkspaceId $_.WorkspaceId  New-Object PSObject -Property @{              WorkspaceId = $_.WorkspaceId; User = $_.UserName; ComputerName = $_.ComputerName; DirectoryId = $_.DirectoryId; IpAddress = $_.IpAddress; State = $_.State; SubnetId  = $_.SubnetId; ConnectionState = $connstat.ConnectionState; LastConnection = $connstat.LastKnownUserConnectionTimestamp; ConnectionStateCheckTimestamp = $connstat.ConnectionStateCheckTimestamp  }  } | Export-Csv outputtesttest.csv –NoTypeInformation

La ejecución del comando se ve algo como esto donde tenemos el archivo “outputtesttest.csv” que contiene toda la información.

El resultado del archivo contiene toda la información de los Amazon Workspaces con su último inicio de sesión de cada usuario.

El resultado del archivo en un Excel se ve como lo siguiente:

Conclusiones

Este es uno de los reportes mas completos que podemos exportar del uso de los Workspaces y nos permitirá tener mucha información relevante a la hora del análisis de uso.

Información como :

  • inventario total de todos los Workspaces con su respectiva IP Privada.
  • El usuario que tiene asignado cada WorkSpaces.
  • El último Login realizado al Workspace.
  • El Workspaces ID , Usuario asignado e Ip privada.

--

--

Oscar Ivan Ocampo

Entrepreneur, travel lover, AWS x3, CIO High Cloud Tec , AWS Community Builder, passionate about cloud learning