AWS Systems Managerでオンプレ環境のWindowsを管理する

しばたです。

AWS Systems Manager(以後SSM)ではEC2インスタンスだけでなくオンプレミスのサーバーに対してもSSM Agentをインストールし管理対象とすることができます。
この機能自体はSSMがEC2 Systems Managerの頃から存在し、2016年に弊社菊池により以下の解説記事が公開されています。

EC2 Systems Managerでオンプレ環境のWindowsを管理する #reinvent

2019年8月現在、EC2 Systems ManagerからAWS Systems Managerにサービス名が変わってもこの手順に変更はありませんでした。
今回この手順を実際に確認する必要があったため、せっかくなので2019年度版の手順として改めて本記事を公開します。

やってみた

前述の記事をベースにやっていきます。
公式のドキュメントは以下になります。

検証環境

今回はシンプルにオンプレ環境にあり、インターネットへのアクセスが可能なWindows Server 2016を対象とします。

今回は検証しませんが、インターネットへのアクセスができない閉じたネットワークの場合はVPCエンドポイントを構成してSSMのエンドポイントにアクセス可能にする必要があります。

1. アクティベーションの作成

最初に該当Windows Serverをマネージドインスタンスへ登録するためのアクティベーションを作成します。
現在はSSMの機能はEC2メニュー配下には存在せずSSMのメニューから「アクティベーション」を選択します。

この時点ではまだ1つもアクティベーションが無いためスタートメニューが表示されています。
画面右の「アクティベーションの作成」をクリックすると作成画面に遷移します。

ここで必要な項目を入力して「アクティベーションの作成」をクリックします。
今回は、

  • (Optinal) アクティベーションの説明 : My Activation
  • インスタンス制限 : 1
  • IAM ロール : デフォルトのロール (AmazonEC2RunCommandRoleForManagedInstances)
  • アクティベーションの有効期限 : 未指定 (未指定の場合は1日後が期限になります)
  • (Optinal) デフォルトのインスタンス名 : 未指定

としました。

アクティベーションの作成はサクッと完了し、画面上部に「Activation Code」と「Activation ID」が表示されますのでこれらの内容を記録しておいてください。

2. オンプレサーバーにSSM Agentをインストール

次に該当Windows ServerにSSM Agentをインストールします。
オンプレ環境へのSSM Agentのインストール手順は以下のドキュメントに記載されれています。

EC2インスタンスにインストールする場合と若干手順が異なり、インストール時に前項で取得した「Activation Code」と「Activation ID」を指定する形となります。
ドキュメントからの転載となりますが、管理者としてPowerShellコンソールを起動して以下のコマンドを実行します。

$code = "<前項で取得したActivation Code>"
$id = "<前項で取得したActivation ID>"
$region = "<SSMエンドポイントのリージョンID(ap-northeast-1など)>"
$dir = $env:TEMP + "\ssm"
New-Item -ItemType directory -Path $dir -Force
cd $dir
(New-Object System.Net.WebClient).DownloadFile("https://amazon-ssm-$region.s3.amazonaws.com/latest/windows_amd64/AmazonSSMAgentSetup.exe", $dir + "\AmazonSSMAgentSetup.exe")
Start-Process .\AmazonSSMAgentSetup.exe -ArgumentList @("/q", "/log", "install.log", "CODE=$code", "ID=$id", "REGION=$region") -Wait
Get-Content ($env:ProgramData + "\Amazon\SSM\InstanceData\registration")
Get-Service -Name "AmazonSSMAgent"

実際にやってみた結果が下図になります。

やっていることはインストーラーであるAmazonSSMAgentSetup.exeをダウンロードして引数付きで実行しているだけです。
ダウンロードはすぐ終わりますがインストールに若干時間がかかりますので完了するまで気長に待ってください。
エラー無くすべての手順が完了し、SSM Agentの実体であるAmazonSSMAgentサービスが実行中になっていれば完了です。

3. マネージドインスタンスの確認

これでSSM Agentのインストールと登録が完了しましたので、SSMの「マネージドインスタンス」を確認すると該当サーバーがきちんと登録されているのが確認できます。

詳細情報はこんな感じです。

4. Run Commandを試してみる

以前の記事と同様にRun Command(AWS-ListWindowsInventry)を試してみます。

結果は成功し、対象が日本語Widnows Serverのため結果が一部文字化けしていますが取得内容に問題はありませんでした。