以下代码成功创建了一个实例。
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.
之前我直接从正在运行的AMI
实例创建了EC2
。
这可能是什么原因?错过了什么?
答案 0 :(得分:3)
Get Windows Password
工具只能用于初始访问Windows EC2实例。
为管理员帐户生成随机密码。然后使用用于启动实例的密钥对的公共一半加密密码。然后,加密的密码通过系统日志提供回EC2。 (您通常可以在管理控制台中使用获取系统日志命令来查看它。)
要访问服务器,需要使用密钥对的私有一半解密密码。这可以通过获取Windows密码操作在控制台中完成。
非常重要:访问服务器后,更改密码!或者,更好的是,将实例添加到Active Directory域。加密密码旨在提供对实例的初始访问。它不应该用作持续的安全机制。
根据您收到的错误消息,该实例似乎未通过系统日志发送加密密码。因此,EC2无法解密它。这可能是因为AMI不是从AWS提供的映像(使用EC2Config
创建加密密码并通过系统日志报告)创建的,或者实例上的配置已经以某种方式更改为运行该实用程序。
答案 1 :(得分:3)
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也不会允许。您只需使用在前一个实例上设置的SAME RDP密码连接到新实例,即可生成当前AMI。
这是CORRECT行为。想象一下,您自定义整个AWS EC2,您不希望任何人轻易覆盖对EC2实例的RDP访问。
这也意味着,在自定义实例并弄乱密码后,您无法从中创建快照,并希望AWS将重置服务器内的密码。
答案 2 :(得分:0)
如果您从自定义AMI(即快照)启动实例,则此功能不再可用。您将需要重设密码。
如果您丢失了Windows管理员密码,并且在Windows Server 2016之前使用Windows AMI,则可以使用EC2Config服务生成新密码-> Resetting windows Admin Pass with EC2Config
如果您丢失了Windows管理员密码并使用Windows Server 2016或更高版本的AMI,则可以使用EC2Rescue工具,该工具使用EC2Launch服务生成新密码-> Resetting windows Admin Pass with EC2Launch