AWS Systems Manager Windowsでの基礎的な使い方をしてみた
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