Sysprep 済み AMI から作成した EC2 インスタンスでパスワード復号化できない原因を教えてください
困っていること
Windows EC2 インスタンスの Sysprep 実行時に、以下の手順で操作したにも関わらず、新規インスタンスにログインできない事象が発生しました。
【実施した手順】
- Amazon EC2Launch settings を開き、Administrator password settingsで 「Random」 を選択
- 「Shutdown with Sysprep」 を実行
- Sysprep 完了後のインスタンスから AMI を作成
- 作成した AMI から新規 EC2 インスタンスを起動
【発生している問題】
新規起動したインスタンスに対して、EC2 コンソールからプライベートキーによるパスワードの復号化ができない
どう対応すればいいの?
「Administrator password settings」 を 「Random」 に指定されているものの、動作としては 「Do Not Set」 となっている状況が考えられます。
たとえば、「Do Not Set」 から 「Random」 に変更し、「Save」 を押下せずに 「Shutdown with Sysprep」 を実行されたために設定が反映されず 「Do Not Set」 として動作してしまった可能性がございます。
この様な状況を回避するためにも、AMI を作成する際は EC2Launch settings にて 「Save」 ボタンを押下した後に、「Shutdown with Sysprep」 を実行する手順を追加してください。
なお、「Save」 ボタン押下後に 「C:\ProgramData\Amazon\EC2Launch\config\agent-config.yml」 を確認することをお勧めします。こちらより設定が反映されているか否かを確認可能です。
YAML ファイルの例
version: 1.0
config:
- stage: boot
tasks:
- task: extendRootPartition
- stage: preReady
tasks:
- task: activateWindows
inputs:
activation:
type: amazon
- task: setDnsSuffix
inputs:
suffixes:
- $REGION.ec2-utilities.amazonaws.com
- task: setAdminAccount
inputs:
password:
type: random
- task: setWallpaper
inputs:
path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg
attributes:
- hostName
- instanceId
- privateIpAddress
- publicIpAddress
- instanceSize
- availabilityZone
- architecture
- memory
- network
- stage: postReady
tasks:
- task: startSsm
参考資料
パスワードの種類は次のとおりです。
Random
EC2Launch は、ユーザーのキーを使用してパスワードを生成し、暗号化します。この設定はインスタンス起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。
Specify
EC2Launch は、adminPassword で指定したパスワードを使用します。指定したパスワードがシステム要件を満たさない場合は、代わりに EC2Launch によってランダムなパスワードが生成されます。このパスワードはクリアテキストとして agent-config.yml に保存され、Sysprep で管理者パスワードが設定されると削除されます。EC2Launch は、ユーザーのキーを使用してパスワードを暗号化します。
Do not set
EC2Launch は、unattend.xml ファイルで指定したパスワードを使用します。unattend.xml でパスワードを指定しないと、管理者アカウントは無効になります。