WorkSpaces の資産管理をコマンドでレポート

※自分メモ

4台のWSがいる状態

```
$ aws workspaces describe-workspaces --query 'Workspaces[*].{Directory:DirectoryId,User:UserName,WS:WorkspaceId,Bundle:BundleId,State:State,RunMode:WorkspaceProperties.RunningMode,TimeOut:WorkspaceProperties.RunningMode,Timeout:Workspaces.RunningModeAutoStopTimeoutInMinutes}'  
[
    {
        "Timeout": null, 
        "Bundle": "wsb-xxxxxxxx1", 
        "RunMode": "AUTO_STOP", 
        "State": "STOPPED", 
        "WS": "ws-yyyyyyyy1", 
        "User": "uehara", 
        "TimeOut": "AUTO_STOP", 
        "Directory": "d-zzzzzzzzz1"
    }, 
    {
        "Timeout": null, 
        "Bundle": "wsb-xxxxxxxx2", 
        "RunMode": "AUTO_STOP", 
        "State": "AVAILABLE", 
        "WS": "ws-yyyyyyyy2", 
        "User": "takahashi", 
        "TimeOut": "AUTO_STOP", 
        "Directory": "d-zzzzzzzzz1"
    }, 
    {
        "Timeout": null, 
        "Bundle": "wsb-xxxxxxxx3", 
        "RunMode": "AUTO_STOP", 
        "State": "AVAILABLE", 
        "WS": "ws-yyyyyyyy3", 
        "User": "sato", 
        "TimeOut": "AUTO_STOP", 
        "Directory": "d-zzzzzzzzz1"
    }, 
    {
        "Timeout": null, 
        "Bundle": "wsb-xxxxxxxx4", 
        "RunMode": "AUTO_STOP", 
        "State": "STOPPED", 
        "WS": "ws-yyyyyyyy4", 
        "User": "uehara1", 
        "TimeOut": "AUTO_STOP", 
        "Directory": "d-zzzzzzzzz1"
    }
]
```

ユーザー名からWorkspaces ID検索

```
$ aws workspaces describe-workspaces --query 'Workspaces[*].{User:UserName,WS:WorkspaceId}'  --output text | grep takahashi
takahashi	ws-yyyyyyyy1
```

起動中台数確認

```
$ aws workspaces describe-workspaces --query 'Workspaces[*].{State:State}'  | grep '"State": "AVAILABLE"' | wc -l 
       2
```

停止中台数確認

```
$ aws workspaces describe-workspaces --query 'Workspaces[*].{State:State}'  | grep '"State": "STOPPED"' | wc -l 
       2
```

停止中のノードリスト

```
$ aws workspaces describe-workspaces --query 'Workspaces[*].{Directory:DirectoryId,User:UserName,WS:WorkspaceId,Bundle:BundleId,State:State,RunMode:WorkspaceProperties.RunningMode,TimeOut:WorkspaceProperties.RunningMode,Timeout:Workspaces.RunningModeAutoStopTimeoutInMinutes}' --output table | head -5 ;aws workspaces describe-workspaces --query 'Workspaces[*].{Directory:DirectoryId,User:UserName,WS:WorkspaceId,Bundle:BundleId,State:State,RunMode:WorkspaceProperties.RunningMode,TimeOut:WorkspaceProperties.RunningMode,Timeout:Workspaces.RunningModeAutoStopTimeoutInMinutes}'  --output table | grep STOPPED
------------------------------------------------------------------------------------------------------------------
|                                               DescribeWorkspaces                                               |
+---------------+---------------+------------+------------+------------+----------+-------------+----------------+
|    Bundle     |   Directory   |  RunMode   |   State    |  TimeOut   | Timeout  |    User     |      WS        |
+---------------+---------------+------------+------------+------------+----------+-------------+----------------+
|  wsb-xxxxxxxx1|  d-zzzzzzzzz1 |  AUTO_STOP |  STOPPED   |  AUTO_STOP |  None    |  uehara     |  ws-yyyyyyyy1  |
|  wsb-xxxxxxxx4|  d-zzzzzzzzz1 |  AUTO_STOP |  STOPPED   |  AUTO_STOP |  None    |  uehara1    |  ws-yyyyyyyy4  |
```

実行モードごとの台数確認(AlwaysOnかAutoStop)
以下はAutoStopの実行モードのノード数

```
$ aws workspaces describe-workspaces --query 'Workspaces[*].{Directory:DirectoryId,User:UserName,WS:WorkspaceId,Bundle:BundleId,State:State,RunMode:WorkspaceProperties.RunningMode,TimeOut:WorkspaceProperties.RunningMode,Timeout:Workspaces.RunningModeAutoStopTimeoutInMinutes}'  --output table | grep AUTO_STOP | wc -l
       4
```

ディレクトリ(AD)のリスト

```
$ aws workspaces describe-workspaces --query 'Workspaces[*].{Directory:DirectoryId,User:UserName,WS:WorkspaceId,Bundle:BundleId,State:State,RunMode:WorkspaceProperties.RunningMode,TimeOut:WorkspaceProperties.RunningMode,Timeout:Workspaces.RunningModeAutoStopTimeoutInMinutes}'  | grep Directory | uniq
        "Directory": "d-zzzzzzzzz1"
```

バンドルのリスト

```
$ aws workspaces describe-workspaces --query 'Workspaces[*].{Directory:DirectoryId,User:UserName,WS:WorkspaceId,Bundle:BundleId,State:State,RunMode:WorkspaceProperties.RunningMode,TimeOut:WorkspaceProperties.RunningMode,Timeout:Workspaces.RunningModeAutoStopTimeoutInMinutes}'  | grep Bundle | uniq
        "Bundle": "wsb-xxxxxxxx1", 
        "Bundle": "wsb-xxxxxxxx2", 
        "Bundle": "wsb-xxxxxxxx3", 
        "Bundle": "wsb-xxxxxxxx4", 
```

### QuickSight

台数おおければグラフィカルなレポート

<img width="1270" alt="スクリーンショット 0030-09-07 11.35.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/27932/a1c37ba4-273e-a6f4-b6d4-14653b38ccc6.png">