使用boto连接到预先存在的windows实例

2024-06-08 22:11:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我的密码是我的

import boto.ec2
conn = boto.ec2.connect_to_region("us-west-2",aws_access_key_id='secret1',aws_secret_access_key='secret2')




conn.run_instances(
        'i-41ffc2c0',
        key_name='MyWindowsKey',
        instance_type='t2.micro',
        security_groups=['launch-wizard-3'])


print conn

其中launch-wizard-3允许RDP连接没有问题。在

现在,当我运行上述程序时,我得到以下错误:

^{pr2}$

这是我第一次通过boto连接到这里。在

谢谢你的指点。在


Tags: tokeyimportaws密码accessconnectec2
2条回答

boto库用于管理AWS基础设施,例如启动新的EC2实例,停止它们,并终止它们。它不提供对这些EC2实例的RDP或SSH访问。在

要连接到EC2实例,您将使用常规的Windows客户机,例如远程桌面连接(Remote Desktop Connection,mstsc)或Putty for SSH。见Connecting to your Windows instance using RDP。在

[已经提供了额外的信息,表明OP寻求有关如何“启动、连接、断开和关闭”ec2实例的帮助]

您需要了解的一件事是,旧的AWS帐户有称为“ec2classic”和“VPC”的概念。较新的帐户只有专有网络。我假设你的账号是新的,下面是如何使用boto在一个特定的子网(在VPC中,从子网ID推断)中启动EC2实例:

r = conn.run_instances(
        image_id='ami-xxxxxxxx',
        key_name='MyWindowsKey',
        instance_type='t2.micro',
        subnet_id='subnet-xxxxxxxx',
        security_group_ids=['sg-xxxxxxxx'])

特别注意:

  • 第一个参数是一个AMI ID(不是一个实例ID,如您最初的帖子所示)
  • 您需要提供子网ID(即现有专有网络中现有子网的ID)
  • 您需要提供安全组IDs,而不是名称,并且id的格式为sg-xxxxxxxx,而不是launch-wizard-3(它是“组名”)。在

要停止正在运行的EC2实例,您需要一个实例ID:

^{pr2}$

要终止EC2实例,您需要一个实例ID:

conn.terminate_instances(instance_ids=['i-xxxxxxxx'])

有关在EC2中使用boto的更一般的示例,请参见this tutorial。在

从错误消息来看,似乎只提供security_groups是不够的。在

请在创建新的ec2实例时提供security_group_ids。您也可以创建没有它的实例,并在创建实例之后添加安全组。在

安全组(字符串列表)–要与实例关联的EC2经典安全组的名称

security_group_ids(字符串列表)–要与实例关联的VPC安全组的ID。在

注意,也许你的代码中还有一个问题。@jarmod已经指出

i-41ffc2c0不是ami id,而是ec2实例id。您还需要更新它。在

相关问题 更多 >