EC2 Windows インスタンスで AMI 作成時に Sysprep をしないとどうなるのか、やってみた

Windows Server の EC2 を多数複製する場合は、Sysprep を必ず行うようにしましょう。Sysprep をしないと、思わぬ事象に遭遇する場合があります。
2022.08.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

テクニカルサポートの m.hayakawa です。

突然ですが、Sysprep はご存じですか?

Sysprep とは、Microsoft 社が提供する Windows OS を展開するためのシステム準備ツールです。

Windows インスタンスを複製する際に、そのまま AMI を取得すると、マシンSIDというユニークに付与されるIDが重複し、ライセンス認証に関する問題が発生する可能性があるなど、問題のひとつの要因になりえます。

そのため、展開元のマシンでマシン固有の情報の消去を行い、展開先のマシン上でマシン固有の情報の再設定や初期化を行う必要があります。これを行うのが、Sysprep です。

さて、ここでは Sysprep を行わないとどうなるのか、あえて、禁忌を実行していきたいと思います。

同一リージョンでインスタンスをコピー

Windows 2019 の AMI から東京リージョンに 【EC2 インスタンス 1】を作成します。(方法は割愛します)

【EC2 インスタンス 1】 へセッションマネージャーで接続し、SID を確認します。(SIDは一部加工しています)

PS > whoami /user

USER INFORMATION
----------------

ユーザー名               SID
======================== =============================================
ec2amaz-baknn26\ssm-user S-1-5-21-657127010-1234567890-4111934629-1009

この 【EC2 インスタンス 1】 を停止し、AMI を作成します。

AMI から新しい 【EC2 インスタンス 2】 を作成し、SID を確認します。(SIDは一部加工しています)

PS > whoami /user

USER INFORMATION
----------------

ユーザー名               SID
======================== =============================================
ec2amaz-baknn26\ssm-user S-1-5-21-657127010-1234567890-4111934629-1009

SID が重複していました。

この状態で、【EC2 インスタンス 2】 に対して RDP をするために、パスワードの取得を試みます。

しかし、5 分以上経過してもパスワードの取得ができません。

困ったので、【EC2 インスタンス 1】 の RDP 接続パスワードを使用したところ、【EC2 インスタンス 2】へ RDP 接続ができました。

この時点で、思わしくない事象が発生しているように見えます。

Active Directory へドメイン参加してみる

Managed Microsoft AD を構築します。

【EC2 インスタンス 1】と【EC2 インスタンス 2】をドメイン参加します。

問題なくドメイン参加できました。

SID が重複していても、ドメイン参加をする分にはエラーなどは発生しないようです[1]。

なお、デバイス ID は【EC2 インスタンス 1】と【EC2 インスタンス 2】で異なっていました。

【EC2 インスタンス 1】

【EC2 インスタンス 2】

別リージョンへインスタンスをコピー

東京リージョンの AMI をシンガポールリージョンにコピーします。

シンガポールリージョンにてコピーした AMI から【EC2 インスタンス 3】を作成します。

ここでもパスワードの取得ができません。

試しに、東京リージョンの【EC2 インスタンス 1】の RDP 接続パスワードを使ってみます。

RDP ができてしまいました。

そして、SID が重複していました。

PS C:\Users\Administrator> whoami /user

USER INFORMATION
----------------

ユーザー名                    SID
============================= ============================================
ec2amaz-baknn26\administrator S-1-5-21-657127010-1234567890-4111934629-500

また、ライセンス認証に失敗していました。

トラブルシューティング[2]を元に再度ライセンス認証を行ってみます。

PS C:\Users\Administrator> Import-Module "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1"
PS C:\Users\Administrator> Add-Routes

ifIndex DestinationPrefix                              NextHop                                  RouteMetric ifMetric Po
                                                                                                                     li
                                                                                                                     cy
                                                                                                                     St
                                                                                                                     or
                                                                                                                     e
------- -----------------                              -------                                  ----------- -------- --
5       169.254.169.254/32                             172.31.16.1                                       15 15       Ac
5       169.254.169.254/32                             172.31.16.1                                       15          Pe
5       169.254.169.250/32                             172.31.16.1                                       15 15       Ac
5       169.254.169.250/32                             172.31.16.1                                       15          Pe
5       169.254.169.251/32                             172.31.16.1                                       15 15       Ac
5       169.254.169.251/32                             172.31.16.1                                       15          Pe
5       169.254.169.249/32                             172.31.16.1                                       15 15       Ac
5       169.254.169.249/32                             172.31.16.1                                       15          Pe
5       169.254.169.123/32                             172.31.16.1                                       15 15       Ac
5       169.254.169.123/32                             172.31.16.1                                       15          Pe
5       169.254.169.253/32                             172.31.16.1                                       15 15       Ac
5       169.254.169.253/32                             172.31.16.1                                       15          Pe
再同期コマンドをローカル コンピューターに送信しています
コマンドは正しく完了しました。


PS C:\Users\Administrator> Set-ActivationSettings
PS C:\Users\Administrator> slmgr /ato

ライセンス認証されました。

今回発生したこと

  • RDP をする際に用いる、Administrator のパスワードが重複する(リージョンを問わない)

  • RDP をする際に用いる、Administrator のパスワードの取得ができなくなることがある(リージョンを問わない)

  • ライセンス認証を再度行う必要がある(リージョン間コピーで発生)

まとめ

Sysprep を行わなずに EC2 をコピーした場合の影響について調査をしました。

今回判明したもの以外にも意図しない問題が発生する可能性があるため、複数の EC2 を複製する場合は Sysprep を実施する運用にすることを推奨します。

参考資料

[1] Windows: マシン SID の重複神話 | Microsoft Docs

[2] EC2 Windows インスタンスでの Windows のライセンス認証の失敗を解決する