1

在 Google 云的一部分 Google shell 中,我设置了环境变量 GOOGLE_APPLICATION_CREDENTIALS 因为 PHP NLP 项目需要它 [信息:https ://cloud.google.com/natural-language/docs/quickstart-client-libraries#客户端库安装 php]。我的项目运行良好,但我注意到变量 GOOGLE_APPLICATION_CREDENTIALS 在我的系统中仅持续一天。这是我第三次设置它。当我缺少必需的变量时,我的项目不起作用。难道我做错了什么?

编辑: 当您在 Google App 引擎上创建新应用程序时,它是默认操作系统(Debian)。当我在 Google shell 中输入帮助时,我会得到以下信息:您的 5GB 主目录将在会话中持续存在,但 VM 是短暂的,将在会话结束后大约 20 分钟重置。除此之外,系统范围内的任何变化都不会持续存在。

4

2 回答 2

2

您完全正确,Cloud Shell 正在一个临时实例上运行,该实例在会话结束后几分钟会重置,这就是您丢失您提到的环境变量内容的原因。

有关Cloud Shell 限制的文档明确指出,它仅用于交互式使用,任何非交互式会话或密集使用都可以在带有(或不带有)警告的情况下自动终止。

因此,从您的问题中了解到您有一个使用Cloud Natural Language的后台脚本,我强烈建议您转移到Compute Engine的“真实”实例,在该实例中您将对正在发生的事情有更多的控制权. 这将提供更大的灵活性,并且您将能够使用更大的机器类型,因为Cloud Shell 在g1-small GCE 实例上运行,这通常不足以运行应用程序。此外,根据您的用例,您甚至可以考虑App Engine

话虽如此,我发现在构造LanguageClient实例时,您也可能不使用应用程序默认凭据,而是使用keyFileorkeyFilePath变量(在PHP 客户端库参考中解释)将 JSON 键的路径直接传递给您的代码,而不是从环境变量中读取它。

于 2018-05-29T14:57:21.890 回答
1

假设您使用的是 Linux,请确保:

于 2018-05-29T12:28:02.293 回答