EC2实例重新启动 - 实例ID不存在

时间:2012-08-24 10:33:25

标签: amazon-ec2 boto

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

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

看起来我应该连接到region - 如果实例ID是唯一的输入参数,我怎么能得到这个值?

2 个答案:

答案 0 :(得分:0)

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

reservations = ec2_conn.get_all_instances(filters={'instance-id' : 'i-xxxxxxxx'})
new_instance = reservations[0].instances[0]

答案 1 :(得分:0)

应在代码之外配置凭据相关信息,如访问密钥,秘密访问密钥和区域。这是为了确保可移植性。

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

  1. 将凭据作为6/21/2017 2:22:02 AM 方法
  2. 中的参数传递
  3. 在创建会话对象时将凭证作为参数传递
  4. 环境变量
  5. 共享凭据文件(boto.client()
  6. AWS配置文件(~/.aws/credentials
  7. 假设角色提供者
  8. Boto2配置文件(~/.aws/config/etc/boto.cfg
  9. 配置了IAM角色的Amazon EC2实例上的实例元数据服务。
  10. 如果脚本本身在EC2实例中运行,最佳做法是依赖将承担IAM角色的实例元数据。

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

    了解详情:http://boto3.readthedocs.io/en/latest/guide/configuration.html