Я пытаюсь использовать свой файл учетных данных 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?
~/.aws/credentials
, у него есть собственный файл учетных данных. Я бы рекомендовал использовать boto3, особенно как новый пользователь. - person Jordon Phillips   schedule 31.01.2017ssl.SSLEOFError
, когда пытаюсь получить все экземпляры ec2 ... - person lightweight   schedule 31.01.2017export no_proxy=169.254.169.254
, а потом это сработало - person lightweight   schedule 31.01.2017