当前位置: 首页 > 知识库问答 >
问题:

谷歌应用引擎支持环境变量吗?

钱选
2023-03-14

我注意到开发人员控制台似乎没有公开任何可以配置静态环境变量的地方。

GAE是否期望我将这些变量打包为构建服务器部署的一部分?如果是的话,是否有关于GAE/Google Cloud的任何文档说明了原因或详细说明了这一理念?

共有3个答案

袁鹤轩
2023-03-14

一种解决方案显然https://cloud.google.com/secret-manager/docs,但我选择了这里提供的解决方案

使用应用程序在GAE中安全地存储环境变量。亚马尔

首先,将环境变量放入环境变量中。yaml,例如。,

env_variables:
  SECRET: 'my_secret'

然后,包括这个环境变量。应用程序中的yaml。亚马尔

includes:
  - env_variables.yaml

最后,添加env_变量。yaml to。gitignore,这样存储库中就不会存在秘密变量。

此外,

  • 我提交env_变量。样品yaml,以及下一个开发人员可以填写的说明和占位符值
if (process.env.NODE_ENV === "development") {
  try {
    const fs = require("fs");
    const yaml = require("js-yaml");

    let fileContents = fs.readFileSync("./env_variables.yaml", "utf8");
    let {env_variables} = yaml.load(fileContents);
    console.log({ env_variables });
    Object.keys(env_variables).forEach((v) => {
      process.env[v] = env_variables[v];
    });
  } catch (error) {
    res.status(500).end("500: Problem getting env vars");
    return;
  }
}

我在这里添加我的解决方案,因为引用的问题指定了python,这个问题是通用的。

与其他PAAS解决方案(如Heroku、Netlify)一样,如果用户可以访问App Engine控制台,他们可以看到秘密(在本例中,通过浏览控制台中的源文件)。

何涵忍
2023-03-14

环境变量可以在应用程序的应用程序中定义。yaml

python/php/(可能是go?)应用程序的示例。Java使用不同的格式

env_variables:
  MY_ENV_VAR: 'some value here'

https://cloud.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Defining_environment_variables

如果需要,您也可以在CI过程中设置这些值,方法是在部署之前以编程方式将它们附加到您的app.yaml。

曾嘉祯
2023-03-14

多年过去了,但它仍然没有。

我的解决方法是编译应用程序。部署过程中的yaml(本地或使用CI)。例如,我有一个模板文件应用程序。tml。yaml文件

runtime: python37
handlers:
- url: /static
  static_dir: app/static/
- url: /.*
  script: auto
env_variables:
  DJANGO_GC_DATABASE_PASSWORD: ${DJANGO_GC_DATABASE_PASSWORD}

然后在部署envsubt之前调用envsubt

我还发现了这篇文章中列出的其他方法:https://dev.to/mungell/google-cloud-app-engine-environment-variables-5990但对我来说,它们不够方便或通用。

 类似资料:
  • 我正在app engine上构建一个web应用程序。在我的例子中,这是建立在django Nonl的基础上的,但关键是它使用的是谷歌的数据存储。 我喜欢这样一个事实,即我不需要处理复制、分片、备份等,但有一件事总是妨碍我,那就是最终的一致性,这似乎妨碍了实现一个通用的Web应用程序模式,我称之为“添加 假设我有一个项目管理应用程序。项目是它的中心模型。现在有一个网页页面,我可以在其中看到所有项目的

  • 是否有人有链接或可以提供Java谷歌应用程序引擎项目的代码,该项目只是与谷歌日历交互。假设从日历中获取活动。 Google Sample calendar-app engine-Sample在从HG检出后无法编译,我曾尝试搜索教程并创建自己的教程,只是运气好而已。 我已经设置了一个 API 访问项目来获取客户端机密.json。

  • 我想知道我是否需要Google java客户端库才能从GAE访问我的Google日历。默认情况下,它们是Google App Engine SDK的一部分吗? 此外,我找不到一个很好的示例或教程来展示如何从Google Cloud Platform应用程序创建、读取、更新和删除Google日历事件。 非常感谢,如果您可以提供相同的代码示例或链接到适当的工作教程。

  • 我是谷歌应用引擎服务的新手。我有一个JavaMaven项目,其中一个模块运行在应用引擎flex上,另一个模块运行在应用引擎标准上。我正在为应用引擎Flex API使用JWT身份验证。我想从应用引擎标准向应用引擎Flex发出发布请求。验证服务的最佳方式应该是什么? 此外,我还有一个cron服务,它可以访问我用于某些后端内容的特定URL。如何验证请求是否仅来自Cron服务?

  • 具体到基于Docker的部署,这两者之间有什么区别?由于Google App Engine Flexible现在也支持基于Dockerfile的部署,而且它也是完全管理的服务,所以它似乎比在Container Engine上配置Kubernetes部署更可取,不是吗? 有哪些用例更倾向于使用Google容器引擎而不是灵活的应用引擎?

  • 我想能够从谷歌云功能中调用谷歌应用程序引擎,有可能吗?找不到任何解决办法