如何配置到GCP服务的HTTP连接以使用代理?



我的Python应用程序需要建立到两个Google Cloud Platform服务的连接:Google Groups和BigQuery。连接到前者需要使用代理,但不允许使用代理连接到后者。

因此,在脚本执行之前或在脚本执行期间,我不想将代理设置为环境变量,而是想专门为连接到Google Groups设置代理。

不知何故,虽然第一种方法有效-证明这不是代理问题-但第二种方法不行,无法找到oauth2服务来授权连接。

下面的示例旨在列出我们组织中的组。连接是按照本期google-api-python-client项目中描述的内容建立的。

import googleapiclient.discovery
import google_auth_httplib2
from google.oauth2 import service_account
from httplib2 import ProxyInfo, Http, socks
from urllib.parse import urlencodeenter code here
CLOUD_IDENTITY_SERVICE_NAME = 'cloudidentity'
CLOUD_IDENTITY_API_VERSION = 'v1'
SCOPES = [
'https://www.googleapis.com/auth/cloud-identity.groups'
]
proxy = ProxyInfo(
proxy_type=socks.PROXY_TYPE_HTTP,
proxy_host='http://proxy.local',
proxy_port=99999
)
http = Http(proxy_info=proxy)

credentials = service_account.Credentials.from_service_account_file(
filename=_PATH_TO_CREDENTIALS,
scopes=SCOPES
)
authorized_http = google_auth_httplib2.AuthorizedHttp(
credentials,
http
)
service = googleapiclient.discovery.build(
CLOUD_IDENTITY_SERVICE_NAME,
CLOUD_IDENTITY_API_VERSION,
http=authorized_http
)
query_params = urlencode({
'page_size': 1000,
'page_token': ''
})
request = service.groups().list(parent=f'customers/{_CUSTOMER_ID}')
request.uri += '&' + query_params
response = request.execute()

但是执行失败,出现以下错误:Unable to find the server at oauth2.googleapis.com

代理按预期工作,因为脚本在运行脚本之前在服务器中设置代理时检索组数据:export HTTP_PROXY=http://proxy.local:99999

ProxyInfoproxy_host参数不需要指定协议。因此,将http://proxy.local更改为proxy.local可以解决问题。

相关内容

  • 没有找到相关文章

最新更新