沢山あるWorkSpacesの棚卸しにAWS CLIを使用する

2023.02.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、岩城です。

コロナ禍に急遽リモートワーク環境を整えるため、社員に対しWorkSpacesを用意したケースがあると思います。

WorkSpacesは、80h/月以上起動しない場合は、AlwaysOnよりもAutoStopの方が利用費が安いですが、AutoStopでもWorkSpaces台あたり$10~26/月の固定費+起動時間料金が発生します。

たとえAutoStopでも、WorkSpacesが沢山作成されている環境では、月額の固定費だけでも結構な金額になります。

徐々にオフライン出社が増える中で、ここらでWorkSpacesの棚卸しを行い、コスト最適化を図ってみてはいかがでしょうか。

やってみた

WorkSpacesへの最終アクセス時間から、直近使用されているWorkSpacesを特定できます。

マネジメントコンソールのWorkSpaces一覧では、各WorkSpacesの最終アクセス時間を確認できないので、

各WorkSpacesの概要で前回アクティブだったユーザーから確認することになります。

WorkSpacesの数が少なければ問題ありませんが、大量にあるWorkSpacesを一括で確認したい場合は、CLIを使用した方が楽です。

CLIのコマンドは以下のとおりです。

$  aws workspaces describe-workspaces-connection-status --output table
---------------------------------------------------------------------------------------------------------------
|                                     DescribeWorkspacesConnectionStatus                                      |
+-------------------------------------------------------------------------------------------------------------+
||                                        WorkspacesConnectionStatus                                         ||
|+-----------------+------------------------------------+------------------------------------+---------------+|
|| ConnectionState |   ConnectionStateCheckTimestamp    | LastKnownUserConnectionTimestamp   |  WorkspaceId  ||
|+-----------------+------------------------------------+------------------------------------+---------------+|
||  UNKNOWN        |  2023-02-03T16:35:52.663000+09:00  |  2022-12-12T08:12:21.712000+09:00  |  ws-xxxxxxxxx ||
||  UNKNOWN        |  2023-02-03T16:36:21.921000+09:00  |  2021-03-12T11:12:25.559000+09:00  |  ws-xxxxxxxxx ||
||  UNKNOWN        |  2023-02-03T16:36:45.133000+09:00  |                                    |  ws-xxxxxxxxx ||
||  UNKNOWN        |  2023-02-03T16:36:05.246000+09:00  |  2021-03-12T14:12:53.918000+09:00  |  ws-xxxxxxxxx ||
||  UNKNOWN        |  2023-02-03T16:36:04.652000+09:00  |  2023-01-12T19:12:44.244000+09:00  |  ws-xxxxxxxxx ||
||  UNKNOWN        |  2023-02-03T16:36:26.118000+09:00  |                                    |  ws-xxxxxxxxx ||
||  UNKNOWN        |  2023-02-03T16:36:38.412000+09:00  |  2022-08-12T19:12:13.591000+09:00  |  ws-xxxxxxxxx ||
||  CONNECTED      |  2023-02-03T16:33:40.602000+09:00  |  2023-02-12T16:12:40.602000+09:00  |  ws-xxxxxxxxx ||
||  UNKNOWN        |  2023-02-03T16:33:51.765000+09:00  |  2022-07-12T17:12:26.194000+09:00  |  ws-xxxxxxxxx ||
||  CONNECTED      |  2023-02-03T16:36:30.213000+09:00  |  2023-02-12T16:12:30.213000+09:00  |  ws-xxxxxxxxx ||
||  UNKNOWN        |  2023-02-03T16:34:35.013000+09:00  |  2020-06-12T15:12:46.421000+09:00  |  ws-xxxxxxxxx ||
|+-----------------+------------------------------------+------------------------------------+---------------+|

LastKnownUserConnectionTimestampで最終アクセス時間を確認できますので、直近アクセスが無いものは削除するといった判断ができると思います。

ちなみに、CSV形式で出力させたい場合は以下のとおりです。

$ aws workspaces describe-workspaces-connection-status | jq -r '.WorkspacesConnectionStatus[] | [.WorkspaceId, .ConnectionState, .ConnectionStateCheckTimestamp, .LastKnownUserConnectionTimestamp] | @csv'
"ws-xxxxxxxxx","UNKNOWN","2023-02-06T09:00:55.146000+09:00","2022-12-12T12:18:21.712000+09:00"
"ws-xxxxxxxxx","UNKNOWN","2023-02-06T08:59:26.873000+09:00","2023-01-12T12:29:10.838000+09:00"
"ws-xxxxxxxxx","UNKNOWN","2023-02-06T09:00:50.507000+09:00",
"ws-xxxxxxxxx","UNKNOWN","2023-02-06T09:00:15.922000+09:00","2023-01-12T12:40:09.982000+09:00"
"ws-xxxxxxxxx","UNKNOWN","2023-02-06T09:01:36.495000+09:00","2022-08-12T12:56:13.591000+09:00"
"ws-xxxxxxxxx","UNKNOWN","2023-02-06T08:59:39.274000+09:00",
"ws-xxxxxxxxx","UNKNOWN","2023-02-06T08:58:31.799000+09:00","2022-07-12T12:43:26.194000+09:00"
"ws-xxxxxxxxx","UNKNOWN","2023-02-06T09:01:36.595000+09:00","2023-02-12T12:56:20.067000+09:00"
"ws-xxxxxxxxx","UNKNOWN","2023-02-06T09:02:01.196000+09:00","2022-08-12T12:46:50.789000+09:00"
"ws-xxxxxxxxx","UNKNOWN","2023-02-06T09:01:03.457000+09:00","2022-07-12T12:58:41.064000+09:00"
"ws-xxxxxxxxx","UNKNOWN","2023-02-06T09:01:33.808000+09:00","2022-09-12T12:07:49.793000+09:00"

おわりに

本エントリがどなかたのお役に立てれば幸いです。