env变量GOOGLE_APPLICATION_CREDENTIALS仅在Google云上持续一天

时间:2018-05-29 12:14:31

标签: google-cloud-platform google-cloud-shell google-natural-language

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

你是完全正确的,Cloud Shell正在一个短暂的实例上运行,在会话结束后的几分钟内重置,这就是为什么你丢失了你提到的环境变量的内容。

有关limitations in Cloud Shell的文档明确指出它仅供交互式使用,任何非交互式会话或密集使用都可以自动终止(或不发出警告)。

因此,从您的问题中了解到您有一个与Cloud Natural Language一起使用的后台脚本,我强烈建议您转移到真实的" Compute Engine的实例,您可以更好地控制正在发生的事情。这将允许更大的灵活性,并且您将能够使用更大的机器类型,因为Cloud Shell runs on a g1-small GCE instance通常不足以运行应用程序。此外,根据您的使用情况,您甚至可以考虑App Engine

话虽如此,我发现在构建LanguageClient实例时,您可能也不会使用Application Default Credentials,而是使用keyFilekeyFilePath变量(在the PHP Client Library reference)将JSON密钥的路径直接传递给代码,而不是从环境变量中读取它。