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

如何在Google App Engine标准环境中使用Google Cloud Build或其他方法设置环境变量?

陶元凯
2023-03-14

是否有必要将云构建中的环境变量注入到App Engine标准环境中?

我不想将我的环境变量推送到应用程序中的GitHub。yaml。env。因此,当Cloud Build拉入并部署时,它缺少。env文件,服务器无法完成某些请求。

我试图避免使用数据存储,因为数据存储的异步特性会使代码更加混乱。我试图使用这里找到的加密机密,但这似乎不起作用,因为我将这些机密添加到了app deploy中,并且它们没有进入部署,所以我假设这不是云构建的用例。

我还尝试了这里的教程,以导入。env文件从存储中导入App Engine Standard,但由于Standard没有本地存储,我认为它将失效。

那么是否无论如何都可以将. env注入App Engine Standard环境而不使用Datastore,或者提交app.yaml. env来更改控制?可能使用Cloud Build、KMS或某种类型的存储?

以下是我尝试的cloudbuild。yaml

steps:
- name: "gcr.io/cloud-builders/gcloud"
  args: ["app", "deploy"]
  secretEnv: ['SECRET1', 'SECRET2', 'SECRET3', 'SECRET4', 'SECRET5']
timeout: "1600s"

secrets:
- kmsKeyName: projects/<Project-Name>/locations/global/keyRings/<Key-Ring-Name>/cryptoKeys/<Key-Name>
  secretEnv:
    SECRET1: <encrypted-key-base64 here>
    SECRET2: <encrypted-key-base64 here>
    SECRET3: <encrypted-key-base64 here> 
    SECRET4: <encrypted-key-base64 here> 
    SECRET5: <encrypted-key-base64 here>

共有3个答案

全卜霸
2023-03-14

高五布里亚式的回答很棒,但我添加了我稍微不同的解决方案。

1). 在根项目文件夹中,我们需要cloudbuild。yaml文件,但我将其称为buildsetttings。yaml,因为第一个名字有问题

buildsetttings.yaml我添加了这段代码

    steps:
  - name: node
    entrypoint: npm
    args: ['install']
  - name: node
    entrypoint: npm
    env:
      - 'DB_URL=${_DB_URL}'
      - 'SENDGRID_API_KEY=${_SENDGRID_API_KEY}'
      - 'CLIENT_ID=${_CLIENT_ID}'
    args: ['run', 'create-app-yaml']
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['app', 'deploy']
秦鹏飞
2023-03-14

我有另一个解决方案,如果有人仍然对此感兴趣。这应该适用于所有语言,因为环境变量直接添加到app.yaml文件中

>

  • 在构建触发器中添加替换变量(如本答案所述)。

    将环境变量添加到应用程序。yaml在某种程度上,它们可以很容易地被构建触发变量替代。这样地:

        env_variables:
         SECRET_KEY: %SECRET_KEY%
    
        - name: 'gcr.io/cloud-builders/gcloud'
          entrypoint: bash
          args:
          - '-c'
          - |
          sed -i 's/%SECRET_KEY%/'${_SECRET_KEY}'/g' app.yaml
          gcloud app deploy  app.yaml
    
    

  • 濮阳安澜
    2023-03-14

    下面是一个关于如何在云构建(触发器)设置中安全存储环境变量并将其导入应用程序的教程。

    基本上有三个步骤:

    >

  • 将环境变量添加到构建触发器设置之一的“variables”部分

    在构建触发器中向何处添加变量的屏幕截图

    按照惯例,在构建触发器中设置的变量必须以下划线(_)开头

    配置cloudbuild.yaml(在代码示例的第二步)以从构建触发器中读取变量,将它们设置为env vars,并将所有env vars写入本地. env文件

    couldbuild.yaml(下图)添加到您的项目根目录

    steps:
    - name: node:10.15.1
      entrypoint: npm
      args: ["install"]
    - name: node:10.15.1
      entrypoint: npm
      args: ["run", "create-env"]
      env:
        - 'MY_SECRET_KEY=${_MY_SECRET_KEY}'
    - name: "gcr.io/cloud-builders/gcloud"
      args: ["app", "deploy"]
    timeout: "1600s"

  •  类似资料:
    • 本文向大家介绍Python环境变量设置方法,包括了Python环境变量设置方法的使用技巧和注意事项,需要的朋友参考一下 Alias Maya中的脚本语言是Mel 和 Python,据说Houdini未来也会把Python作为主要的脚本语言,作为影视特效师,掌握Python语言是必备技能;虽然Maya内置了Python运行时,但是,如果要系统学习Python语言,环境变量还是需要配置一下~ 默认情况

    • 问题内容: 我使用martini在Go中有一个GAE应用程序。我需要能够设置环境变量以告诉martini它应该使用生产设置进行初始化。根据Python文档,您可以在app.yaml中设置环境变量。我没有在Go docs中 看到任何有关此的内容,但我猜想它应该可以正常工作。 我需要能够将环境变量设置为,但是我只想在实际投入生产时(即)进行操作。有什么方法可以告诉您仅在非开发服务器上运行吗? 问题答案

    • 问题内容: 我需要在python脚本中设置一些环境变量,并且我希望从python调用的所有其他脚本(shell脚本)(将是子进程)来查看设置的环境变量。该值为数字。 如果这样做,它会抱怨说1必须是字符串。我也想知道一旦设置它,如何在python(在脚本的后半部分)中读取环境变量。 问题答案: 你可能需要考虑其他方面的代码健壮性; 当你将整数值的变量存储为环境变量时,请尝试 然后为了进行检索,请考虑

    • 问题内容: 如何从内部设置一些环境变量以与类似命令一起使用? 这是我目前所拥有的: 我想在启动脚本中设置环境变量(例如),同时仍然能够仅通过一个命令来启动应用程序。 问题答案: 在脚本命令中设置环境变量: 然后在您的应用中使用。 注意:确保它可以跨平台工作。如果只关心Mac / Linux,则可以忽略它。

    • 问题内容: 我已经开始在Django项目中工作,我想设置一些环境变量,而不必手动设置它们或将bash文件作为源。 我想设置以下变量: 我已经读过这篇文章,但这并不能解决我想要的问题。另外,我尝试在Preferences- > Build,Execution,Deployment- > Console- > Python Console / Django Console中设置环境变量,但是它设置了解

    • 问题内容: 我正在尝试设置一个环境变量,然后将其读回以验证它是否确实被设置。 我有以下内容: 但是,它看起来总是空的,这意味着它可能设置不正确。 我的exec命令正确吗?javadocs声明它可以将字符串参数作为命令。 有任何想法吗? 问题答案: 这行不通。当您开始一个新过程时,该过程将收到环境 的副本 。然后,它对环境变量所做的任何更改都将在该副本中进行,并且在任何时候都不会对调用方可见。 您实