以下代码成功创建了一个实例。
try {
$ec2 = new Ec2Client($options);
$result = $ec2->runInstances([
'ImageId' => 'ami-xxxxxxxx', // REQUIRED
'InstanceInitiatedShutdownBehavior' => 'stop',
'InstanceType' => 't1.micro',
'MaxCount' => 1, // REQUIRED
'MinCount' => 1, // REQUIRED,
'EbsOptimized' => false, // SEE COMMENT
'KeyName' => 'TestCloud',
'Monitoring' => [
'Enabled' => true // REQUIRED
]
]);
}catch(Exception $exc) {
var_dump($exc);
}
但是,当我尝试从aws console
检索连接到该实例的密码(RDP)时,我会得到以下错误:
Password is not available.
This instance was launched from a custom AMI, or the default password has changed.
A password cannot be retrieved for this instance. If you have forgotten your password,
you can reset it using the Amazon EC2 configuration service. For
more information, see Passwords for a Windows Server Instance.
早些时候,我直接从一个正在运行的EC2
实例创建了AMI
。
这可能是什么原因?遗漏了什么?
This instance was launched from a custom AMI!
当您使用CUSTOM AMI时,请通读:http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/troubleshooting-windows-instances.html
提供的帐户和密码基于用于启动实例的AMI。您可以为管理员帐户检索自动生成的密码,也可以使用在创建AMI的原始实例中使用的帐户和密码。
您不需要生成新密码,AWS也不允许。您只需使用上一个实例上设置的相同RDP密码连接到新实例即可生成当前AMI。
这是正确的行为。想象一下,你定制了整个AWS EC2,你不希望任何人轻易覆盖对EC2实例的RDP访问。
这也意味着,在您自定义实例并弄乱密码后,您就无法从中创建快照,并希望AWS在服务器内重置密码。
Get Windows Password
功能应仅用于对Windows EC2实例的初始访问。
将为管理员帐户生成一个随机密码。然后使用用于启动实例的密钥对的公共部分对密码进行加密。然后通过系统日志将加密的密码提供回EC2。(您经常可以使用管理控制台中的GetSystemLog命令来查看它。)
要访问服务器,需要使用密钥对的私有一半对密码进行解密。这可以通过获取Windows密码操作在控制台中完成。
非常重要:访问服务器后,更改密码或者,最好将实例添加到Active Directory域中。加密密码旨在提供对实例的初始访问权限。不应将其用作持续的安全机制。
鉴于您收到的错误消息,实例似乎没有通过系统日志发送加密密码。因此,EC2无法解密它。这可能是因为AMI不是根据AWS提供的映像创建的(该映像使用EC2Config
创建加密密码并通过系统日志报告),或者实例上的配置在某种程度上发生了更改,无法运行该实用程序。
如果您从自定义AMI(即快照)启动实例,则此功能将不再可用。您需要重置密码。
如果您丢失了Windows管理员密码,并且正在使用Windows Server 2016之前的Windows AMI,则可以使用EC2Config服务生成新密码->使用EC2Config 重置Windows管理员通行证
如果您丢失了Windows管理员密码,并且正在使用Windows Server 2016或更高版本的AMI,则可以使用EC2Regue工具,该工具使用EC2Launch服务生成新密码->使用EC2Launch重置Windows管理员通行证
如果您已经从自定义窗口实例创建了AMI然后在创建图像之前:
- 使用pem文件获取密码
- 将密码保存在某个位置
- 现在创建图像并使用您保存的密码
从WIN实例创建AMI后,您以后将不会获得密码。