验证企业防火墙后面的谷歌云

时间:2017-03-01 19:46:12

标签: python google-cloud-platform google-cloud-nl

我正在尝试使用Google云端的自然语言API,我相信我的公司防火墙阻止了python和google云之间的通信。

在终端输入以下内容后:

gcloud auth application-default login

我的浏览器打开以成功登录我的Google帐户。然而,在我登录后,我得到了

ERROR: There was a problem with web authentication. Try running a
gain with --no-launch-browser.

ERROR: (gcloud.auth.application-default.login) Could not reach th
e login server. A potential cause of this could be because you ar
e behind a proxy. Please set the environment variables HTTPS_PROX
Y and HTTP_PROXY to the address of the proxy in the format "proto
col://address:port" (without quotes) and try again.
Example: HTTPS_PROXY=https://192.168.0.1:8080

我相信我需要联系我的IT部门,为防火墙添加例外。有谁知道google云的自然语言处理API的地址/端口是什么?

1 个答案:

答案 0 :(得分:2)

我无法直接回答您的问题,但我可以提供一些可能解决您问题的一般性指导。

命令

gcloud auth application-default login

是在本地运行示例代码的便利助手,但出于各种原因,它实际上并不是最佳的身份验证策略。它使用的特殊客户端ID并不总是具有您的所有配额。

我建议使用API​​的方式是服务帐户。您可以在API凭据下在云控制台中创建服务帐户,然后下载JSON密钥。然后将环境变量GOOGLE_APPLICATION_CREDENTIALS设置为指向您的文件,假设您使用的是应用程序默认凭据(大多数示例和客户端库使用),它将自动运行。

在App Engine和计算引擎上(假设您创建了具有正确范围的VM)默认情况下存在服务帐户,因此您甚至不需要下载JSON并设置环境变量。

您可以使用API​​的另一种方法是创建API密钥,然后在URL末尾使用?key=api-key命中HTTP端点。 API密钥也不太理想(不知道客户端是谁,没有范围),但这是一个简单的选择。

在您的情况下,我建议使用JSON服务帐户密钥和环境变量,但值得阅读官方authentication guide