2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

3ヶ月使ってないWorkspacesを通知と自動削除をやろうとしてみた(失敗)

Last updated at Posted at 2018-09-12

3ヶ月使ってないWorkspacesは、不要とみなして通知して削除する

(注意)やろうとしたけど出来なかった。。Alarmのデータポイントが24時間以内しか入らないです。

スクリーンショット 0030-09-12 18.32.10.png
  • 通知のためのSNSトピック作成
  • 監視のためのCloudWatch Alarm作成
  • 3ヶ月の監視について
  • Workspacesの自動削除のLambda作成
  • 通知と自動削除のテスト

通知のためのSNSトピック作成。

SNSの画面から、左メニューの"トピック"をクリックし[新しいトピックの作成]をクリックする

スクリーンショット 0030-09-12 11.20.27.png

任意のトピック名を入力する
ここでは、test-nonused-ws

スクリーンショット 0030-09-12 11.20.49.png

作成したトピック名をクリック

スクリーンショット 0030-09-12 11.21.12.png

[サブスクリプションの作成]をクリック

スクリーンショット 0030-09-12 11.21.22.png

通知のためのメールアドレスを入力する
プロトコル:Email
エンドポイント:任意のメアド

スクリーンショット 0030-09-12 11.21.38.png

Confirmedメールが送られてくるので、メール内のリンクをクリックしConfirmする。

監視のためのCloudWatch Alarm作成

Cloudwachの画面を開き、左側メニューの"メトリクス"をクリックし、対象のWorkspacesIDの"UserConnected"メトリクスにチェックを入れる。

(補足)
UserConnectedは、ユーザーが接続しているWorkspacesの数
WorkSpacesは定期的に接続ステータスのリクエストを WorkSpace に送信します。ユーザーは、能動的にセッションを使用している場合、接続済みとしてレポートされます。このメトリクスは WorkSpace の粒度で利用でき、組織のすべての WorkSpace で集計されます

スクリーンショット 0030-09-12 11.23.45.png

グラフのオプションタブをクリック、userconnectedの右側のベルマークをクリック

スクリーンショット 0030-09-12 11.24.12.png

アラームの設定を行う
※ちょっと3ヶ月は試せないので15分で

  • アクションはSNSによるメール通知
  • UserConnectedは"1"だとConnected、"0"だとNonConnected
  • しきい値はUserConnected<1にする
  • 5分間隔で、3回連続でしきい値を下回ったらアクションを実施。つまりユーザーの接続が15分間なかった場合にアラームが通知される

スクリーンショット 0030-09-12 11.25.00.png

アラームがOKな時
つまりWorkspacesを使っている状態(15分以上NonUsedではない)

スクリーンショット 0030-09-12 11.25.31.png

アラームがNGな時
つまりWorkspacesを15分以上使ってない状態

スクリーンショット 0030-09-12 11.50.38.png

通知メール

スクリーンショット 0030-09-12 11.54.41.png

3ヶ月の監視について

アラームのデータポイントは最大9999です。3ヶ月間使われてない状態を検知するには5分インターバルではデータポイント数が足りません。

スクリーンショット 0030-09-12 11.57.05.png

最小で13分くらいにする必要があるので、15分間隔にします。
3ヶ月は、3ヶ月30日24時間*60分 = 129600分あるので、
これを15分で割ると、8640
データポイント 8640回連続でしきい値を下回ったらアラートを飛ばすという設定でよさそうです。

スクリーンショット 0030-09-12 12.02.54.png

Workspacesの自動削除のLambda作成

LambdaにアタッチするIAMロール作成

IAMの画面で、左側メニューのロールをクリックし、[ロールの作成]をクリックする

スクリーンショット 0030-09-12 13.47.41.png

"AWSサービス"をクリック、"Lambda"をクリック、[次のステップ]をクリックする

スクリーンショット 0030-09-12 13.47.54.png

以下のポリシーにチェックを入れ、[次のステップ]をクリックする

  • AmazonWorkSpacesAdmin
  • CloudWatchLogsFullAccess
スクリーンショット 0030-09-12 13.48.15.png

ロール名をつけて[ロールの作成]をクリックする
test-terminate-ws1(任意)

スクリーンショット 0030-09-12 16.47.47.png

Lambda関数作成

WorkspacesのTerminateWorkspacesのAPIを叩くコードを書く

Lambdaの画面を開き、[関数の作成]をクリック

スクリーンショット 0030-09-12 13.48.56.png

"一から作成"をクリックし、以下を入力し、[関数の作成]をクリックする
名前:test-terminate-ws1
ランタイム:Python 2.7
既存のロール:test-terminate-ws1

スクリーンショット 0030-09-12 17.05.36.png

左側リストから"SNS"をクリック

スクリーンショット 0030-09-12 17.09.45.png

SNSトピック"test-nonused-ws"を選び、"トリガーの有効化"にチェックを入れ、[追加]をクリックする

スクリーンショット 0030-09-12 17.10.22.png

"test-terminate-ws1"のLambdaアイコンをクリック

スクリーンショット 0030-09-12 17.45.58.png

以下のコードを貼り付けて、右上の[保存]をクリック
(注)今回はテストとしてterminateではなく、stopにしています。アラームも1回しきい値を下回ったらにしてあります。
削除であれば、client.terminate_workspaces
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/workspaces.html#WorkSpaces.Client.terminate_workspaces

from __future__ import print_function

import json
import urllib
import boto3
 
print('Loading function')
 
client = boto3.client('workspaces')

def lambda_handler(event, context):
    message = event['Records'][0]['Sns']['Message']
    message = json.loads(message)

    workspaceId = message['Trigger']['Dimensions'][0]['value']
    stop = client.stop_workspaces(
        StopWorkspaceRequests=[
            {
                'WorkspaceId': workspaceId
            },
        ]
    )
    return stop
スクリーンショット 0030-09-12 17.46.22.png

通知と自動削除のテスト

Workspacesからログアウトします。Workspacesクライアントを閉じます。

数分するとアラームが上がります。

スクリーンショット 0030-09-12 17.56.45.png

対象のWorkspacesがStoppedになりました。

スクリーンショット 0030-09-12 17.57.36.png

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?