首页 > 解决方案 > Python AWS S3FS API:手动设置代理服务器

问题描述

我无法为 S3FS Python API 设置代理服务器。由于 S3FS 的 Config 类是从 botocore 导入的,因此没有关于它的 S3FS 文档。所以,我已经阅读了这个问题以及botocore 文档

但是,我无法让 botocore Config 类与 S3FS 一起使用。

我努力了:

from s3fs.core import Config
proxy = Config(proxies={'https':<my_proxy>})

fs = s3fs.S3FileSystem(key=MY_S3_KEY, secret=MY_S3_SECRET, config_kwargs=proxy)
fs.put(FILE_NAME, PATH)

我也试过:

from s3fs.core import Config

fs = s3fs.S3FileSystem(key=MY_S3_KEY, secret=MY_S3_SECRET, config_kwargs=Config(proxies={'https':<my_proxy>}))
fs.put(FILE_NAME, PATH)

我也尝试为 http 设置相同的代理。代理在这台计算机上工作正常,我已经从命令行成功测试了几次。

我总是收到连接超时错误消息:

ConnectTimeoutError:端点 URL 上的连接超时:....

任何建议表示赞赏。谢谢

标签: python-3.xamazon-web-servicesproxybotocorepython-s3fs

解决方案


Here are two ways to do it.

1 - Set an environment variable with the proxy:

os.environ['https_proxy'] = 'http://my_proxy_url'
s3 = s3fs.S3FileSystem(anon=False)

2 - pass in the proxy in the constructor:

s3 = s3fs.S3FileSystem(anon=False, config_kwargs={'proxies': {'https': 'http://my_proxy_url'}})

推荐阅读