使用App Engine golang灵活环境,在测试时访问app.yaml

时间:2018-07-23 21:48:20

标签: google-app-engine go app-engine-flexible

我正在将golang服务从App Engine标准环境移植到灵活环境中,并且对在开发/测试过程中访问app.yaml有疑问。

在我的app.yaml中,我有一个设置环境变量的区域,稍后我可以通过os.GetEnv(...)在代码中访问该区域:

env_variables:
  FORGE_CLIENT_ID: 'my-client-id'
  FORGE_CLIENT_SECRET: 'my-client-secret'

在App Engine标准环境中,此操作运行良好,因为我正在使用App Engine开发服务器dev-server.py,我相信它将负责读取app.yaml文件并使这些环境变量可用。

但是,在开发过程中的灵活环境中,该服务仅通过go run *.go启动,并且该应用程序似乎没有在app.yaml中获取任何信息,这意味着我得到了一个错误,我的环境变量没有设置。

我了解到app.yaml是在灵活环境中的部署期间使用的,但我不了解在开发过程中如何使用或是否使用它。如何从开发服务器访问这些环境变量?

谢谢。

2 个答案:

答案 0 :(得分:0)

您将需要基于是否表示dev vs live的if / else,那么您只需解析yaml文件即可获取并设置这些变量。例如,我的一项服务(仍然以您的标准思维运行)仍在使用旧的SDK,而Yaml需要该版本。我这样解析:

win32api.SetCursorPos(...)

很明显,此文件随后存储在全局文件中,因此我不必每次都打开文件,但是,如果仅在本地开发人员中解析文件,则没有关系。 os.SetEnv可能最适合您的情况。这只是对我有用的一种解决方案。

答案 1 :(得分:0)

对于Google App Engine flexible,开发服务器不使用“ app.yaml”,因为配置是在本地设置的。一种解决方法是在运行开发服务器之前设置环境变量。您可以检查question来设置仅用于该命令的变量。