ドメインコントローラーでセッションマネージャーを使う前に必要な設定


結論

ユーザー名がssm-userのアカウントを作成しておく
(アカウントのパスワードはポリシーに抵触しなければ何でも良い)

環境

・AWSで公式のクイックスタートAMIを使用しました。
Microsoft Windows Server 2019 Base - ami-0f3651a900e33262f
Microsoft Windows 2019 Datacenter edition. [English]
※SSM Agentがデフォルトで入っています。

・インスタンスはpublic subnetに作成しました。

・IAMはSSMに必要な権限が付与されている以下AWS管理ポリシーのみアタッチしたロールをEC2にアタッチしました。
AmazonSSMManagedInstanceCore

こちらを参考にドメインコントローラーに昇格しました。

事象

環境も整えたのでいざ接続してみたら画像のようなエラーが表示され、セッションが開始できませんでした。

エラー内容は以下の通りです。

セッションが次の理由で終了されました。  ----------ERROR------- Unable to start shell: Failed to create user ssm-user: Instance is running active directory domain controller service. Disable the service to continue to use session manager.

理由

ドキュメントには以下の記載がありました。

ssm-user アカウントについて

エージェントはインスタンス上にルートまたは管理者権限 (ssm-user と呼ばれる) を持つユーザーアカウントを作成します。(インスタンスでセッションが最初に開始されたときに ssm-user が作成されます。) セッションは、このユーザーアカウントの管理者認証情報を使用して起動します。

Windows Server ドメインコントローラー上の ssm-user

ssm-user アカウントは Windows Server ドメインコントローラーとして使用されているマネージドインスタンスに自動的には作成されません。ドメインコントローラーとして使用されている Windows Server マシンでセッションマネージャーを使用するには、ssm-user アカウントが存在しない場合は手動でアカウントを作成する必要があります。Windows Server で、SSM エージェント はセッションが開始されるたびに ssm-user アカウントの新しいパスワードを設定するので、アカウントを作成するときにパスワードを指定する必要はありません。

つまり、通常エージェントはセッション毎にユーザーアカウントを作成するけど、ドメインコントローラーだとローカルユーザーアカウントの概念が無く、セッションに使用できるユーザーが存在しない(作れない)のでエラーになってたようです。

実践

エラーの文面通りドメインにssm-userアカウントを作成するだけで、

無事接続できるようになりました!

因みに、SSM エージェント サービスを実行するのには特段アカウントは必要無いようです。

参考