为 Boto3 客户端指定显式代理映射
将 botocore 的 Config.proxies 传入客户端构造函数,在不修改 botocore 内部的前提下选择路由。
Boto3 通过 botocore 的 Config 对象接受显式的代理策略:
import boto3
from botocore.config import Config
network = Config(proxies={
'http': 'http://proxy.example:8080',
'https': 'http://proxy.example:8080',
})
s3 = boto3.client('s3', config=network)
映射的键选择目标协议,值描述代理端点。这个示例通过一个 HTTP 转发代理发送 HTTP 和 HTTPS 两种服务请求。若要在没有代理账户的情况下测试允许访问的公共 AWS 端点,可以从 HTTP 代理列表中取一个 HTTP 条目来提供这两个 URL。
若值使用 https://,则需要一个接受客户端 TLS 连接的代理监听器。不要仅仅为了匹配 HTTPS 键而更改值的协议方案。
Config.proxies 会覆盖该客户端对 HTTP_PROXY 和 HTTPS_PROXY 环境变量的代理选择。其他客户端可以用各自的 Config 对象构建;构建这个对象不会改变进程级的环境变量。
在把它集成进应用时,请保留其他必需的客户端选项,例如区域和重试策略。AWS 凭证仍留在应用常规的凭证配置中。无需修改 EndpointCreator 或 botocore 的其他私有方法。
对于到 HTTPS 代理的 TLS 连接,Config 还有 proxies_config 选项,例如 proxy_ca_bundle 和 proxy_client_cert。这些选项涉及代理连接上的信任和客户端证书认证。它们与选择 AWS 服务端点或签署 AWS API 请求是分开的。