古いライブラリでは、接続を開くときに、、およびパラメータboto
を使用するのに十分単純でした。ただし、boto3 でプロキシ パラメータをプログラムで定義する同等の方法を見つけることができませんでした。:(proxy
proxy_port
proxy_user
proxy_pass
4 に答える
少なくともバージョン 1.5.79 では、botocore は botocore 構成でproxies
引数を受け入れます。
例えば
import boto3
from botocore.config import Config
boto3.resource('s3', config=Config(proxies={'https': 'foo.bar:3128'}))
boto3 リソース https://boto3.readthedocs.io/en/latest/reference/core/session.html#boto3.session.Session.resource
botocore 設定 https://botocore.readthedocs.io/en/stable/reference/config.html#botocore.config.Config
環境変数の変更とは別に、コードで見つけたものを提示します。
boto3 は botocore を使用しているため、ソース コードを確認しました。
このリンクから、最終的には次のようになります。
def _get_proxies(self, url):
# We could also support getting proxies from a config file,
# but for now proxy support is taken from the environment.
return get_environ_proxies(url)
...クラスで呼び出されproxies = self._get_proxies(final_endpoint_url)
ますEndpointCreator
。
簡単に言うと、python2 を使用している場合は urllib2 のメソッドが使用され、python3 を使用getproxies
している場合は urllib3 が使用されます。
get_environ_proxies
含む辞書を期待しています{'http:' 'url'}
(そして私も推測しhttps
ています)。
いつpatch
でもコードを使用できますが、それはお粗末な方法です。
これは、少なくとも Boto 開発者が接続固有のプロキシ設定を許可するまで、モンキー パッチをお勧めするまれなケースの 1 つです。
import botocore.endpoint
def _get_proxies(self, url):
return {'http': 'http://someproxy:1234/', 'https': 'https://someproxy:1234/'}
botocore.endpoint.EndpointCreator._get_proxies = _get_proxies
import boto3