Python AWS BOTO 错误

1 投票
2 回答
1884 浏览
提问于 2025-04-17 13:27

我正在尝试通过Python检查所有实例的状态。

我在这里找到了一段有人推荐的脚本,内容如下:

from boto.ec2.connection import EC2Connection

conn = EC2Connection('MY Key ID', 'Secret Access Key')

reservations = conn.get_all_instances()
instance = reservations.instances[0]
print instance.status

但是每次我运行这个脚本时,都会出现如下错误:

File "/usr/lib/python2.7/dist-packages/boto/ec2/connection.py", line 466, in get_all_instances
, verb='POST')
File "/usr/lib/python2.7/dist-packages/boto/connection.py", line 882, in get_list
response = self.make_request(action, params, path, verb)
File "/usr/lib/python2.7/dist-packages/boto/connection.py", line 868, in make_request
return self._mexe(http_request)
File "/usr/lib/python2.7/dist-packages/boto/connection.py", line 794, in _mexe
raise e
socket.gaierror: Errno -2 Name or service not known

2 个回答

0

boto的文档其实告诉你要使用AWS CLI工具来处理凭证。

具体可以参考这篇文章:https://boto3.readthedocs.io/en/latest/guide/quickstart.html

    If you have the AWS CLI installed, 
 then you can use it to configure your credentials file:   aws configure

希望这能帮到你。

1

与其直接创建EC2Connection对象,不如试试这样做:

import boto.ec2
conn = boto.ec2.connect_to_region('us-east-1',
                                  aws_access_key_id='<access_key>',
                                  aws_secret_access_key='<secret_key>')

reservations = conn.get_all_instances()
instances = [i for r in reservations for i in r.instances]
for instance in instances:
    print instance.id, instance.state

这样可以吗?

撰写回答