こんにちは、クラウド事業部の小林です。
仕事でAMIからEC2の起動をよく利用しています。基本的に問題ないですが、今回のケースでハマりましたので、備忘録として残しておきます。

現象

Windows Server 2016のAMI作成して、private subnetでAMIから新規インスタンス(private subnet)を起動しまた。リモートデスクトップで接続し、ライセンス認証エラーがありませんでした。(この時はインターネットに接続できない)
その後、private subnetにNAT GateWayのルートテーブルを関連付けてから、デスクトップ右下にライセンス認証エラーが発生しました。(この時点でNAT GateWay経由でインターネットに接続しています。)
「Windows のライセンス認証」メッセージが表示されました。

(下図を参照)

設定画面を開き、「Windows はライセンス認証されていません」が表示されていました。

エラーの原因

Windows インスタンスは、Windows KMS ライセンス認証を使用します。インスタンスから KMS サーバーにアクセスできない場合、"A problem occurred when Windows tried to activate. Error Code 0xC004F074" というメッセージが表示される可能性があります。Windows は 180 日ごとにライセンス認証を行う必要があります。EC2Config では、確実に、引き続き Windows でライセンス認証されるように、ライセンス認証の期限が切れる前に KMS サーバーに接続します。

解決方法

参考リンク:
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/common-messages.html#activate-windows
【手順】
PowerShellを起動し、下記の手順1~4のコマンドを実行することで無事にライセンス認証できました。
手順1:EC2Launch モジュールをインポートします。
コマンド:Import-Module "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1"
手順2:Add-Routes 関数を呼び出します。
コマンド:Add-Routes
手順3:Set-ActivationSettings 関数を呼び出します。
コマンド:Set-Activationsettings
手順4:次のスクリプトを実行して、Windows のライセンス認証を行います。
コマンド:cscript "${env:SYSTEMROOT}\system32\slmgr.vbs" /ato

PowerShell起動とコマンド実行の図を下記に参照

【PowerShell起動】

【手順1~4のコマンド】

認証成功後にエラーメッセージが消えることを確認できました。

うまくいかない場合、参考リンクの「EC2Config と EC2Launch の両方で、それでもまだライセンス認証エラーを受け取る場合は、次の情報を確認します。」を参照

まとめ

今回、ライセンス認証について、原因解明から解決に至るまで時間がかかりました。分かり易いために画像を取得し、皆様へ役に立てればと存じます。

Last modified: 2020-04-03