web-dev-qa-db-ja.com

boto3でHTTP / HTTPSプロキシをどのように使用しますか?

古いbotoライブラリでは、proxyproxy_portproxy_userおよびproxy_pass接続を開くときのパラメーター。ただし、boto3でプロキシパラメーターをプログラムで定義する同等の方法は見つかりませんでした。 :(

16
asieira

少なくともバージョン1.5.79以降、botocoreはbotocore configでproxies引数を受け入れます。

例えば.

import boto3
from botocore.config import Config

boto3.resource('s3', config=Config(proxies={'https': 'foo.bar:3128'}))

boto3 resourcehttps://boto3.readthedocs.io/en/latest/reference/core/session.html#boto3.session。 Session.resource

botocore confighttps://botocore.readthedocs.io/en/stable/reference/config.html#botocore.config.Config

16
cblakkan

ユーザープロキシサーバーにパスワードが設定されていない場合は、次のように試してください

import os
os.environ["HTTP_PROXY"] = "http://proxy.com:port"
os.environ["HTTPS_PROXY"] = "https://proxy.com:port"

ユーザーのプロキシサーバーにパスワードがある場合は、次のように試してください

import os
os.environ["HTTP_PROXY"] = "http://user:[email protected]:port"
os.environ["HTTPS_PROXY"] = "https://user:[email protected]:port"
10
user881703

環境変数の変更とは別に、コードで見つけたものを紹介します。

Boto3はbotocoreを使用しているため、ソースコードを確認しました。

https://github.com/boto/botocore/blob/66008c874ebfa9ee7530d944d274480347ac3432/botocore/endpoint.py#L265

このリンクから、次のようになります。

_    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)
_

... EndpointCreatorクラスのproxies = self._get_proxies(final_endpoint_url)によって呼び出されます。

要するに、python2を使用している場合はurllib2のgetproxiesメソッドを使用し、python3を使用している場合はurllib3を使用します。

_get_environ_proxies_は_{'http:' 'url'}_を含むdictを期待しています(そしてhttpsも推測しています)。

コードは常にpatchできますが、それは悪い習慣です。

1
Mani