Amazon WorkspacesへのCloudWatchエージェントの利用およびWorkspacesイメージ作成時の注意点
どーも、データアナリティクス事業本部BIチームのsutoです。
Amazon Workspacesで立ち上げたインスタンスに対して、メモリ使用量やシステムログなどのメトリクスとログを取得するためにCloudWatchエージェントをインストールしたり、Workspacesのイメージ作成において、実際にやってみて気づいたことなどがありました。
本記事ではWorkspaces × CloudWatch Agentの設定をする際に、Workspacesの制限事項に基づくCloudWatchエージェントインストール時の構築における注意点について、設定方法を交えて解説していきます。
※WorkspacesへのCloudWatch Agent導入の手順についての過去の記事は以下が参考になります。
【Simple AD、利用中の場合】共存できないVPCエンドポイントがある
公式ドキュメントの前提条件に明記されていますが、WorkspacesのディレクトリにSimpleADを使用している場合、VPC内で以下のVPCエンドポイントを共存させることはできません。
- CloudWatch VPCエンドポイント
- System Manager VPCエンドポイント
- Security Token Service VPC エンドポイント
WorkspacesにCloudWatchエージェントのインストールや、System Managerのマネージドインスタンス登録したい場合、外部(インターネット)接続を制限されているVPCにおいては「Plivate Linkの作成」または「NatGatewayやProxyサーバの設置」が必要になるわけですが、SimpleADを利用している場合はPlivateLink作成の方法は使えません。
「NatGatewayやProxyサーバの設置」または「AWS Managed Microsoft ADの使用」のいずれかで構築する必要があります。
Workspacesイメージ作成時、Agentはサービス停止に状態にする
CloudWatchエージェントの「サービス実行中」のままWorkspacesのカスタムイメージ作成を実行した際、必ずエラーで作成が失敗しました。
カスタムイメージを作成する際、元となるWorkspacesインスタンスではCloudWatchエージェントのサービスを「停止中」にした状態でイメージ作成を実行してください。
こちらのRe:Postの記事にもトラブルシューティングの手順として「イメージの作成を妨げる可能性のあるウイルス対策ソフトウェアまたはセキュリティエージェントを無効にするか、アンインストールします。」とあるので、CloudWatchエージェントもこれに該当するということなのでしょうか。
[おまけ]Workspaces起動時にCloudWatchエージェントのサービスを自動起動する方法を考えてみた
そうなると、組織やユーザーによっての運用ルールによってはカスタムイメージからWorkspacesを追加する手順をとっている場合、逐次、利用ユーザーに「CloudWatchエージェントのサービス起動」を実施させる必要が発生します。
また以下の構成のように、Workspacesの外部接続環境がProxyサーバー経由の接続出会った場合、作成したカスタムイメージには「ブラウザのプロキシ設定」が引き継がれませんでした。
よって、上記2件を自動設定する以下のコマンドを実行するスクリプトを作成して、OS起動時に PowerShell スクリプトを自動実行するよう仕込んでみました。
sc start AmazonCloudWatchAgent sc config "AmazonCloudWatchAgent" start= auto timeout /t 2 > nul reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 1 reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyServer /t reg_sz /d <ProxyサーバのIPアドレス>:<Proxyサーバのポート番号> timeout /t 2 > nul netsh winhttp import proxy source=ie
AmazonCloudWatchAgentのサービス起動コマンド、サービス自動実行コマンド、ブラウザのプロキシ設定の自動設定コマンドを記載しています。
(念のためコマンドの合間に1〜2秒くらいのポーズを挟んでいます)
※この2つを同時に設定したかったので、PowerShell スクリプトの使用というあまりスマートではない方法になってしまいました。より良いやり方を知っている方がいたら是非教えてほしいです。
以上、Amazon Workspacesにおいて、CloudWatchエージェントやProxyサーバーを組み合わせる際に注意するポイントでした。
私のなかで環境構築中に詰まった箇所を備忘録として残しておいたものになりますが、どなたかの参考になれば幸いです。