Als ich ein Python-Skript mit der Boto-Bibliothek zum Spielen mit AWS erstellt habe, habe ich es notiert, da es in die Proxy-Umgebung passt. Bitte beachten Sie, dass es sich um schlechtes Know-how handelt, was nicht die beste Vorgehensweise ist.
・ Linux (RHEL6.5) ・ Python 3.3.6 ・ AWS SDK für Python (boto2.34.0) ・ In der HTTP-Proxy-Umgebung
Wenn Sie Proxy verwenden, wird beim Aufrufen der API die folgende Fehlermeldung angezeigt.
# python3
>>> import boto.ec2
>>> conn = boto.ec2.connect_to_region(‘ap-northeast-1’)
>>> conn.get_only_instances(instance_ids=[‘i-0de8dc14’])
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “/opt/python3.3.6/lib/python3.3/site-packages/boto/ec2/connection.py”, line 623, in get_only_instances
next_token=next_token)
File “/opt/python3.3.6/lib/python3.3/site-packages/boto/ec2/connection.py”, line 682, in get_all_reservations
[(‘item’, Reservation)], verb=‘POST’)
File “/opt/python3.3.6/lib/python3.3/site-packages/boto/connection.py”, line 1166, in get_list
response = self.make_request(action, params, path, verb)
File “/opt/python3.3.6/lib/python3.3/site-packages/boto/connection.py”, line 1112, in make_request
return self._mexe(http_request)
File “/opt/python3.3.6/lib/python3.3/site-packages/boto/connection.py”, line 913, in _mexe
self.is_secure)
File “/opt/python3.3.6/lib/python3.3/site-packages/boto/connection.py”, line 705, in get_http_connection
return self.new_http_connection(host, port, is_secure)
File “/opt/python3.3.6/lib/python3.3/site-packages/boto/connection.py”, line 747, in new_http_connection
connection = self.proxy_ssl(host, is_secure and 443 or 80)
File “/opt/python3.3.6/lib/python3.3/site-packages/boto/connection.py”, line 796, in proxy_ssl
sock.sendall(“CONNECT %s HTTP/1.0\r\n” % host)
TypeError: ‘str’ does not support the buffer interface
Es sieht so aus, als ob die SSL-Kommunikation nicht gut verlaufen ist Beim Herstellen einer Verbindung konnte ich eine Verbindung herstellen, indem ich "is_secure = False" hinzufügte. Wie der Name des Einstellungswerts jedoch andeutet, handelt es sich wahrscheinlich um eine Nicht-SSL-Kommunikation. Sie sollten daher vorsichtig mit der Verwendungsszene sein.
>>> conn = boto.ec2.connect_to_region(‘ap-northeast-1’,is_secure=False)
>>> conn.get_only_instances(instance_ids=[‘i-0de8dc14’])
>>> [Instance:i-0de8dc14]
Es scheint, dass die Boto-Bibliothek zur Laufzeit mit einigen Einstellungen geladen werden kann.
/etc/boto.cfg
- for site-wide settings that all users on this machine > will use~/.boto
- for user-specific settings~/.aws/credentials
- for credentials shared between SDKs
In Bezug auf Proxy scheint es gut zu sein, Folgendes zu beschreiben.
~/.boto
[Boto]
proxy = myproxy.com
proxy_port = 8080
In meiner Umgebung schien dies jedoch aus irgendeinem Grund nicht gut lesbar zu sein, weshalb ich als vorübergehende Maßnahme eine harte Codierung entwickelte. Wenn Sie Know-how in diesem Bereich haben, kommentieren Sie bitte.
Recommended Posts