【问题标题】:Google App Engine: How to define secret system propertiesGoogle App Engine:如何定义秘密系统属性
【发布时间】:2024-05-16 10:55:01
【问题描述】:

我正在将 SpringBoot 应用程序部署到 GAE,并希望设置一些系统属性以在我的 application.yml 文件中使用。 Azure 或 Heroku 等其他云提供商允许我为每个应用程序定义系统属性,但我不知道如何在 GAE 中执行此操作。我不想要源代码管理中的值,因为它们包含密码。

我想具体做什么:

  • 在 GAE 的某处添加系统属性 MONGODB_URI
  • application.yml 中引用它,如下所示:MONGODB_URI: ${MONGODB_URI}

这对我来说似乎是一个非常标准的用例,但我找不到任何(令人满意的)它。这些问题涉及同一件事:

我知道我可以创建实体并通过代码中的 api 访问它们。但困扰我的是,我需要为这样一个简单的用例进行代码更改,并且应该可以将一些秘密环境属性传递给容器。

【问题讨论】:

    标签: spring spring-boot google-app-engine


    【解决方案1】:

    您可以通过addind them in the appengine-web.xml将环境变量设置为Java 8 App Engine标准环境。

    <env-variables>
      <env-var name="MONGODB_URI" value="MONGODB_URI_VALUE" />
    </env-variables>
    

    编辑:

    如果您不希望在源代码或 App Engine 配置文件中对密钥进行硬编码,推荐的方法是使用 Cloud Key Management ServiceCloud Storage 在 Google Cloud Platform 中存储机密。

    【讨论】:

    • 应该在我的问题中更清楚地说明这一点,但关键是我不想在源代码控制中拥有价值(因此“秘密”环境变量)
    • 感谢您的澄清,我已经更新了我的答案。