🎃

AWS Systems Manager Windowsでの基礎的な使い方をしてみた

2020/10/16に公開

CodeDeploy AgentやCloudwatch Agentを手動で管理するのが面倒すぎるので、AWS Systems Managerについて調べ始めました。

※EC2インスタンスにSSMを一度セットアップすると、AWSコンソールからOS内の操作を自由にできるようになってしまうので、きちんと権限の設計・設定をしたうえでProduction環境で使わないと危険だと感じました。

Windowsインスタンスの起動

AMIの選択

Microsoft Windows Server 2019 Base Japanese で検索。
今回は、Windows_Server-2019-Japanese-Full-Base-2020.09.09 - ami-0bc9abb24c842f2db を利用。

インスタンスタイプの選択

せっかくだから赤いCPUを選ぶぜ、t3a.small。

インスタンスロールの付与

最低限、AmazonSSMManagedInstanceCore IAMポリシーを付与する必要がある。

今回は、とりあえずのなので、AmazonSSMRoleForInstancesQuickSetup インスタンスプロファイル を付与。
※作成時に付与し忘れたら、インスタンス起動後に付与できる。この際、インスタンス再起動とかしなくてよい。

AmazonSSMRoleForInstancesQuickSetup インスタンスプロファイルには、AmazonSSMManagedInstanceCore IAMポリシーが付与されている。AmazonSSMRoleForInstancesQuickSetup は、名前から察するにSSM Quick Setup(高速セットアップ)で使う(EC2インスタンスに付与する)プロファイルっぽい。

Windowsにリモートデスクトップ接続して、SSM Agentの様子をうかがう

SSM Agentのバージョン確認

PowerShellで下記コマンドを実行。

PS C:\Users\Administrator> Get-WmiObject Win32_Product | Where-Object {$_.Name -eq 'Amazon SSM Agent'} | Select-Object Name,Version

Name             Version
----             -------
Amazon SSM Agent 2.3.1319.0

SSM Agentサービスの確認

PowerShellで下記コマンドを実行。

PS C:\Users\Administrator> Get-Service AmazonSSMAgent

Status   Name               DisplayName
------   ----               -----------
Running  AmazonSSMAgent     Amazon SSM Agent

(参考)SSM Agentサービスの再起動

PowerShellで下記コマンドを実行。

PS C:\Users\Administrator> Restart-Service AmazonSSMAgent
警告: サービス 'Amazon SSM Agent (AmazonSSMAgent)' の停止を待っています...
...

ログの確認

エクスプローラーから下記フォルダを開く
%PROGRAMDATA%\Amazon\SSM\Logs\

下記ログを確認する

  • amazon-ssm-agent.log

(補足)amazon-ssm-agent.logに下記のような原因不明のエラーメッセージが出ているが、ふつうに使えている。

2020-10-09 02:48:20 ERROR [instanceID=i-09849a47494f47429] error occurred trying to start core module. Plugin name: StartupProcessor. Error: Internal error occurred by startup processor: runtime error: invalid memory address or nil pointer dereference

AWSコンソールのSSMからインスタンスを確認する

AWSコンソールでSSMサービスに移動、左メニューから「マネージドインスタンス」を選択

Windows EC2 インスタンスが表示されていればOK

(補足)マネージドインスタンスというのは、SSM用語でSSM管理配下にいるECインスタンス、オンプレサーバのことを指す。

インベントリを使ってみる

インベントリは、OS内の構成情報(インストール済みパッケージなど)の取得、確認ができる。

インベントリの取得

SSMサービスの左メニューから「インベントリ」を選択。すべてのインスタンスでインベントリを有効にするには、ここをクリックします。」をポチ

3分くらい待つ。

インベントリの確認

左メニューから「マネージドインスタンス」を選択。インベントリを見たいインスタンスIDをクリック

「インベントリ」タブを選択

インベントリタイプを変えれば、インストール済みパッケージ一覧なども見られる。

セッションマネージャーを使ってみる

セッションマネージャーは、AWSコンソールからOSのシェルを使える機能(要は、OSの操作がAWSコンソールからできる)。
ログイン時、パスワードが不要なので、OSの管理者パスワードを知らなかったり、忘れていたりしても使える。また、EC2インスタンスでSSHやPowerShellのリモート接続用ポートを閉じていても使えるという、諸刃の剣、機能。

セッションの開始

左メニューから「セッションマネージャー」を選択。セッションを開始するインスタンスを選択して「セッションを開始する」をポチ

PowerShellが起動

Discussion