この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
こんにちは、クラウド事業部の小林です。
仕事で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 の両方で、それでもまだライセンス認証エラーを受け取る場合は、次の情報を確認します。」を参照
まとめ
今回、ライセンス認証について、原因解明から解決に至るまで時間がかかりました。分かり易いために画像を取得し、皆様へ役に立てればと存じます。