2

我正在尝试重新启动远程实例:

ec2 = boto.connect_ec2(aws_access_key_id = key_id, aws_secret_access_key = access_key)
ec2.reboot_instances([instanceId]) 

并得到了错误The instance ID 'i-xxxxx' does not exist

看起来我应该连接到区域 - 如果实例 ID 是唯一的输入参数,我如何获得这个值?

4

2 回答 2

1

凭据相关信息,例如访问密钥、秘密访问密钥和区域,应在您的代码之外配置。这是为了确保便携性。

boto3 查找凭据的机制是搜索可能位置的列表,并在找到凭据后立即停止。Boto3 搜索凭据的顺序是:

  1. boto.client()方法中将凭据作为参数传递
  2. 创建 Session 对象时将凭据作为参数传递
  3. 环境变量
  4. 共享凭证文件 ( ~/.aws/credentials)
  5. AWS 配置文件 ( ~/.aws/config)
  6. 担任角色提供者
  7. Boto2 配置文件(/etc/boto.cfg~/.boto
  8. 配置了 IAM 角色的 Amazon EC2 实例上的实例元数据服务。

如果脚本本身在 EC2 实例中运行,则最佳做法是依赖将承担 IAM 角色的实例元数据。

假设您从本地计算机调用脚本,最简单的方法是~/.aws/credentials通过运行$ aws configure并指定那里的区域来进行修改。

阅读更多:http ://boto3.readthedocs.io/en/latest/guide/configuration.html

于 2017-06-21T01:39:50.193 回答
0

您的实例是否处于运行状态?尝试使用此命令:-

reservations = ec2_conn.get_all_instances(filters={'instance-id' : 'i-xxxxxxxx'})
new_instance = reservations[0].instances[0]
于 2012-08-24T14:10:44.463 回答