Utilisez AWS SDK for Python (boto) dans un environnement Proxy

Lorsque je créais un script Python en utilisant la bibliothèque boto pour jouer avec AWS, j'en ai pris note car il s'inscrivait dans l'environnement Proxy. Veuillez noter que c'est proche d'un mauvais savoir-faire, ce qui n'est pas la meilleure pratique.

environnement

・ Linux (RHEL6.5) ・ Python 3.3.6 ・ AWS SDK pour Python (boto2.34.0) ・ Sous environnement proxy HTTP

un événement

Si vous utilisez Proxy, vous obtiendrez l'erreur suivante lors de l'appel de l'API.

# 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

Mesures provisoires

Il semble que la communication SSL ne se passe pas bien, donc Lors de la connexion, j'ai pu me connecter en ajoutant ʻis_secure = False`. Cependant, comme le nom de la valeur de paramètre l'indique, il s'agit probablement d'une communication non SSL, vous devez donc faire attention à la scène d'utilisation.

>>> conn = boto.ec2.connect_to_region(‘ap-northeast-1’,is_secure=False)
>>> conn.get_only_instances(instance_ids=[‘i-0de8dc14’])
>>> [Instance:i-0de8dc14]

configuration de boto

Il semble que la bibliothèque boto puisse être chargée avec certains paramètres lors de l'exécution.

  • /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

Boto Config — boto v2.35.1

En ce qui concerne Proxy, il semble bon de décrire comme suit.

~/.boto


[Boto]
proxy = myproxy.com
proxy_port = 8080

Cependant, dans mon environnement, cela ne semblait pas pouvoir être bien lu pour une raison quelconque, alors j'ai proposé un codage en dur comme mesure temporaire. Si vous avez un savoir-faire dans ce domaine, veuillez commenter.

Recommended Posts

Utilisez AWS SDK for Python (boto) dans un environnement Proxy
Remarque sur boto3 (AWS SDK for Python)
Utiliser l'API Resource plutôt que l'API client dans AWS SDK for Python (Boto3)
Informations d'identification utilisées par Boto3 (AWS SDK for Python)
Développement du kit SDK AWS pour Python (Boto3) dans Visual Studio 2017
Utilisez smbus avec python3 sous environnement pyenv
Comment utiliser pip3 sous un environnement proxy Remarque
Appeler Polly à partir du kit SDK AWS pour Python
Docker sous environnement proxy
Maintenance de l'environnement Python pour les projets
Provisionnement de flotte avec AWS IoT SDK for Python v2
Utiliser Python installé par pyenv pour l'environnement d'exécution PL / Python
Construction de l'environnement Python pour Mac
Construction de l'environnement Python3 (pour les débutants)
Construire un environnement Python sous un environnement Windows 7
[Pour organiser] Environnement de développement Python
Exécutez AWS IoT Device SDK for Python sur Raspberry Pi
Installation de Pip (Windows) sous environnement Proxy
python memo pip sous proxy, easy_install
Ensuite, utilisez Python (Flask) pour Heroku!
Installer Networkx dans l'environnement Python 3.7 pour une utilisation dans les livres de science des données sur les logiciels malveillants
Options d'environnement de développement Python pour mai 2020
Paramètres Emacs pour l'environnement de développement Python
Script de création de couche AWS pour python
Construction de l'environnement Python3 TensorFlow pour Mac
Web scraping pour les débutants en Python (1)
Tableau de référence rapide sous environnement Proxy
Web scraping pour les débutants en Python (4) -1
J'ai facilement créé un environnement d'exploitation pour Python3 + Tornado sur AWS EC2.
(Pour moi-même) Flask_AWS_1 (Installer PHP, MySQL, phpMyAdmin, Python dans l'environnement virtuel AWS)
[AWS] Notes pour éviter les problèmes lors de l'installation de awscli et boto3 dans l'environnement Python 2.7
Utilisez la commande pip dans un environnement proxy HTTP qui nécessite une authentification
Créer un environnement pour Python intégré à Blender
Environnement de développement Python pour macOS utilisant venv 2016
Utiliser DeepL avec python (pour la traduction d'articles)
Procédure de construction de l'environnement de projet Python (pour Windows)
AWS ~ Pour ceux qui l'utiliseront ~
Tableau de comparaison des outils d'environnement Python pour Rubyist
Créons un environnement virtuel pour Python
Le paramètre d'environnement Python amateur (pour MAC) est en cours de création
[Mac] Création d'un environnement virtuel pour Python
[Python] Organisation de l'utilisation des instructions
Installez Python3 en utilisant pythonz sous l'environnement macports
Comment utiliser Tensorflow dans un environnement Docker
Comment utiliser "deque" pour les données Python
Utilisez pathlib dans Maya (Python2.7) en préparation du prochain Python3.7
Créer un environnement de développement Python pour le développement de l'IA
Préparation de l'environnement Python (première utilisation de venv)
Préparer l'environnement de développement pour Python sur AWS Cloud9 (installation de pip et changement d'heure)
Selenium + WebDriver (Chrome) + Python | Création d'un environnement pour le scraping
Utiliser le SDK Azure ML Python 2: utiliser un ensemble de données comme entrée - partie 2
Créer un environnement pour exécuter des scripts Python (pour Mac)
Utilisez Logger avec Python pour le moment
Utiliser plusieurs versions de l'environnement python avec pyenv
Envelopper C avec Cython pour une utilisation à partir de Python
Obtenir des informations sur les notes à l'aide du SDK Evernote pour Python 3
Traitement d'image avec la configuration de l'environnement Python pour Windows
Utilisez Python dans votre environnement depuis Win Automation
Gérez bien AWS avec la bibliothèque Python Boto