AWS Managed Microsoft AD のバージョン更新

# AWS Managed Microsoft AD とは

AWSが提供するマネージドサービス **Directory Service** の1つで、Microsoft社のActive Directory(AD)をマネージドサービスとして実行するものです。

AWS Managed Microsoft ADの詳細は以下を参照ください。

[AWSガイド - AWS Managed Microsoft AD](https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/directory_microsoft_ad.html)

## AWS Managed Microsoft ADのバージョン更新って？

2022年10月までに構築されたAWS Managed Microsoft AD（以下、MSAD）は、内部のWindows OSのバージョンが Windows Server 2012 R2 となっています。

AWSからのアナウンスで、2023年3月からは自動アップグレードが開始されることが発表されています。

https://aws.amazon.com/jp/about-aws/whats-new/2022/10/aws-managed-microsoft-ad-available-windows-server-2019/

## 更新時の挙動

ほぼ未設定の状態の AWS Managed Microsoft AD (Windows 2012版) が手元にあったので、アップグレードしてみて、その挙動を整理してみます。

- Standardエディション
- シングルリージョン
- ドメインコントローラが2つ

のMSADです。

更新作業時に、ping を実行し続けて挙動を確認しました。（ドメイン管理の挙動は確認していません）

|時刻|経過時間|ドメインコントローラ1|ドメインコントローラ2|動作の説明|
|----|----|----|----|----|
|17:05|0分後|OS稼働 (ping OK✅)|OS稼働 (ping OK✅)|【更新】ボタン <br>　→ 事前SnapShot無し で開始|
|17:09|4分後|OS停止 (ping ❌)|OS稼働 (ping OK✅)|1つ目のドメコンが停止 (1回目)|
|17:13|8分後|OS稼働 (ping OK✅)|OS稼働 (ping OK✅)|1つ目のドメコンが起動|
|17:24|19分後|OS停止 (ping ❌)|OS稼働 (ping OK✅)|1つ目のドメコンが停止 (2回目)|
|17:38|33分後|OS稼働 (ping OK✅)|OS稼働 (ping OK✅)|1つ目のドメコンが起動|
|18:07|62分後|OS稼働 (ping OK✅)|OS稼働 (ping OK✅)|1つ目のドメコンが更新完了！|
|18:08|63分後|OS稼働 (ping OK✅)|OS停止 (ping ❌)|2つ目のドメコンが停止 (1回目)|
|18:14|69分後|OS稼働 (ping OK✅)|OS稼働 (ping OK✅)|2つ目のドメコンが起動|
|18:25|80分後|OS稼働 (ping OK✅)|OS停止 (ping ❌)|2つ目のドメコンが停止 (2回目)|
|18:38|93分後|OS稼働 (ping OK✅)|OS稼働 (ping OK✅)|2つ目のドメコンが起動|
|19:10|125分後|OS稼働 (ping OK✅)|OS稼働 (ping OK✅)|2つ目のドメコンも更新完了！|


----

更新の進捗はマネージメントコンソールに表示されますが、0% → 50% → 100% という変化でしたので、細かなパーセンテージは分かりません。（以下の図は50%のもの）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204490/181f13e1-babe-fd75-d2fe-b6225a8b0f53.png)

AWS CLIの場合、以下のコマンドで確認できます。

```
ds describe-update-directory --directory-id d-xxxxxxxxxx --update-type OS
```

## 挙動からわかること

各ドメコンで、OS停止が2回ずつ発生しました。

あくまでも今回の例ですが、実績として2つのドメコンの合計時間は、約2時間でした。

結果を受けて最初は結構時間がかかるな、と思ったのですが、2つのドメコンのシーケンシャル処理なので、1つ1時間です。PCでの作業で考えてみると、Windows Server 2012 R2 → Windows Server 2019 のOSアップグレードが1時間というのは、まあ早いんじゃないかと思い直しました。

（可用性という意味で当然なのでしょうが）同時に2つのOSが停止しないようにアップグレードが動作しました。

### 注意点

更新中、OSが起動していた時間のすべてでADのサービスが提供できていたかは不明です。

MSADがほぼ素の設定で、事前のSnapshot無し、という前提で実行しました。
どんな環境でも2時間程度になるかは分かりません。参考程度にしてください。

## OSバージョンの確認方法

2022年10月以降で、マネージメントコンソール上でWindowsバージョンが確認できるようになっていました。

更新前
![ad01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204490/af367009-8a15-b7f0-16ab-60d3193ef12f.png)

更新後
![ad02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204490/108c6d3c-a4b9-9e37-1a01-7c4df17aca08.png)

ちなみに更新後に表示されている【変更】ボタンで、ダウングレードできるようでした。(2023年3月までと推測されます)

合わせて、2022/10/16 以降のAWS CLIでも、**OsVersion** として情報が取得できるように変わっていました。

AWS CLI

```
ds describe-domain-controllers --directory-id d-xxxxxxxxxx
```

MSAD更新前

```json
{
  "DirectoryDescriptions": [
    {
      "DirectoryId": "d-xxxxxxxxxx",
      "xxxxxx": "xxxxxxx",
         ・・(中略)・・

      "OsVersion": "SERVER_2012"
    }
  ]
}
```

MSAD更新後

```json
{
  "DirectoryDescriptions": [
    {
      "DirectoryId": "d-xxxxxxxxxx",
      "xxxxxx": "xxxxxxx",
         ・・(中略)・・

      "OsVersion": "SERVER_2019"
    }
  ]
}
```

OsVersion　が SERVER_2012 → SERVER_2019 に変わっています。
「"OsVersion”なんて項目出てこないよ」という方は AWS CLIを最新にアップグレードしてみてください。


## 参考

AWS コマンドリファレンス

- https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ds/describe-directories.html
- https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ds/describe-update-directory.html