проблема с получением всех экземпляров ec2 с помощью boto

Я пытаюсь использовать свой файл учетных данных aws в boto, но не могу заставить его работать. Я новичок в python и boto, поэтому просматриваю кучу материалов в Интернете, пытаясь понять это.

Все, что я сейчас пытаюсь сделать, это просто получить все экземпляры ec2 ... вот мой код на Python:

import boto
from boto import ec2

ec2conn = ec2.connection.EC2Connection(profile_name='profile_name')
ec2conn.get_all_instances()

когда я запускаю это, я получаю следующую ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/ec2/connection.py", line 585, in get_all_instances
    max_results=max_results)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/ec2/connection.py", line 681, in get_all_reservations
    [('item', Reservation)], verb='POST')
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/connection.py", line 1170, in get_list
    response = self.make_request(action, params, path, verb)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/connection.py", line 1116, in make_request
    return self._mexe(http_request)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/connection.py", line 913, in _mexe
    self.is_secure)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/connection.py", line 705, in get_http_connection
    return self.new_http_connection(host, port, is_secure)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/connection.py", line 747, in new_http_connection
    connection = self.proxy_ssl(host, is_secure and 443 or 80)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/boto/connection.py", line 835, in proxy_ssl
    ca_certs=self.ca_certificates_file)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 943, in wrap_socket
    ciphers=ciphers)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 611, in __init__
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 840, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:661)

Я тоже пробовал ec2conn.get_all_reservations(), но результат тот же ...

В boto3 я могу сделать это, и это работает:

import boto3
session = boto3.Session(profile_name='dev')
session = boto3.Session(profile_name='profile_name')
dev_ec2 = session.client('ec2')
dev_ec2.describe_instances()

------РЕДАКТИРОВАТЬ--------

Итак, я нашел эту ссылку в стеке ... Рекомендуемый способ управления учетными данными с несколькими учетными записями AWS? и то, что я сделал, экспортировал мою AWS_PROFILE var.

export AWS_PROFILE="profile_nm"

это сработало, когда я сделал это:

>>> import boto
>>> conn = boto.connect_s3()
>>> conn.get_all_buckets()

И мне вернули все ведра s3 ...

но когда я сделал это, чтобы вернуть все экземпляры ec2 ... я все еще получил ssl.SSLEOFError выше. Кажется, теперь он работает с s3, но не с ec2 ... Так я ошибаюсь во всех экземплярах Ec2?


person lightweight    schedule 30.01.2017    source источник
comment
AFAIK boto 2 не использует ~/.aws/credentials, у него есть собственный файл учетных данных. Я бы рекомендовал использовать boto3, особенно как новый пользователь.   -  person Jordon Phillips    schedule 31.01.2017
comment
Не уверен, правильно ли я это читаю, но я думаю, здесь написано, что это так? boto.cloudhackers.com/en/latest/boto_config_tut.html   -  person lightweight    schedule 31.01.2017
comment
эта ссылка помогла использовать имя профиля в файле aws creds (stackoverflow.com/questions/11286479/), и он работал, чтобы перечислить все сегменты s3, но я все равно получаю ssl.SSLEOFError, когда пытаюсь получить все экземпляры ec2 ...   -  person lightweight    schedule 31.01.2017
comment
Прошу прощения, хотя я предварял это с помощью afaik, мне, наверное, все равно следовало поискать. Могу я спросить, какую конкретную версию Python вы используете? В версиях до 2.7.9 были некоторые проблемы с обнаружением TLS. S3 и EC2 имеют разные конфигурации TLS, поэтому одна может не работать, когда другая работает.   -  person Jordon Phillips    schedule 31.01.2017
comment
эй нп ... может быть, я неправильно прочитал, поэтому просто хотел вставить эту ссылку ... вот мои версии для awscli, python и boto ...._ 1_   -  person lightweight    schedule 31.01.2017
comment
для меня это стало проблемой прокси ... Я сделал export no_proxy=169.254.169.254, а потом это сработало   -  person lightweight    schedule 31.01.2017