为实例配置环境变量

本页面介绍了如何为 Cloud Run 实例配置环境变量。

所需的角色

如需获得配置和部署 Cloud Run 实例所需的权限,请让您的管理员为您授予以下 IAM 角色:

如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色Cloud Run IAM 权限。如果您的 Cloud Run 实例与Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限管理访问权限

设置环境变量

您可以使用 Google Cloud CLI 或 YAML 为 Cloud Run 实例设置环境变量:

gcloud

如需在创建实例时指定环境变量,请使用 --set-env-vars 标志:

gcloud beta run instances create INSTANCE --image IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2

替换以下内容:

  • INSTANCE:实例的名称
  • IMAGE_URL:对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/hello:latest
  • KEY1=VALUE1,KEY2=VALUE2:以英文逗号分隔的变量名称和值列表

如需详细了解如何设置多个环境变量或转义特殊字符,请参阅设置多个环境变量

YAML

  1. 如果您要创建新实例,请跳过此步骤。如果您要更新现有实例,请下载其 YAML 配置

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 以下示例包含 YAML 配置:

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - env:
        - name: KEY
          value: VALUE
        - name: KEY2
          value: VALUE2
        image: IMAGE

    替换以下内容:

    • INSTANCE:Cloud Run 实例的名称。
    • KEYVALUE:环境变量的名称和值。
    • IMAGE_URL:对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/hello:latest
  3. 使用以下命令创建或更新实例:

    gcloud beta run instances replace instance.yaml

在容器中设置默认环境变量

您可以使用 Dockerfile 中的 ENV 语句设置环境变量的默认值:

ENV KEY1=VALUE1,KEY2=VALUE2

优先顺序:容器变量与实例变量

如果您在容器中设置默认环境变量,并在 Cloud Run 实例上设置具有相同名称的环境变量,则该实例上设置的值优先。

设置多个环境变量

您可以使用 .env 文件或 --set-env-vars 标志设置多个环境变量。

使用 .env 文件设置多个环境变量

gcloud

如需通过 .env 文件指定多个环境变量,请运行以下命令:

gcloud beta run instances create INSTANCE --image IMAGE_URL --env-vars-file=ENV_FILE_PATH

替换以下内容:

  • INSTANCE:实例的名称。
  • IMAGE_URL:对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/hello:latest
  • ENV_FILE_PATH.env 文件的路径。

使用 --set-env-vars 标志设置多个环境变量

如果您有多个无法以 KEY1=VALUE1,KEY2=VALUE2 格式列出的环境变量,则可以多次重复使用 --set-env-vars 标志:
   [...]
   --set-env-vars "KEY1=VALUE1" \
   --set-env-vars "KEY2=VALUE2" \
   --set-env-vars "KEY3=VALUE3"

转义英文逗号字符

由于英文逗号字符 , 用于分隔环境变量,因此,如果您的环境变量包含英文逗号字符作为值,则您需要将这些分隔符进行转义,方法是指定其他分隔符(例如 @):
--set-env-vars "^@^KEY1=value1,value2,value3@KEY2=..."

更新环境变量

您可以更新现有实例的运行时环境变量。这种方法没有破坏性,也就是说,它只会更改或添加运行时环境变量,但不会删除这些变量。

您可以使用 Google Cloud CLI 或 YAML 更新环境变量:

gcloud

如需更新现有实例的环境变量,请使用 --update-env-vars 标志:

gcloud beta run instances update INSTANCE --update-env-vars KEY1=VALUE1,KEY2=VALUE2

替换以下内容:

  • INSTANCE:实例的名称
  • KEY1=VALUE1,KEY2=VALUE2:以英文逗号分隔的变量名称和值列表

YAML

  1. 下载实例 YAML 配置

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 修改键(名称)和值变量。

  3. 使用以下命令更新实例:

    gcloud beta run instances replace instance.yaml

删除环境变量

gcloud

如需从现有实例中有选择地移除环境变量,请使用 --remove-env-vars 标志:

gcloud beta run instances update INSTANCE --remove-env-vars KEY1,KEY2

替换以下内容:

  • INSTANCE:实例的名称
  • KEY1,KEY2:以英文逗号分隔的变量名称列表

或者,您也可以使用 --clear-env-vars 标志清除所有先前设置的环境变量:

gcloud beta run instances update INSTANCE --clear-env-vars

INSTANCE 替换为您的实例名称。

示例代码

如需查看展示如何访问代码中的环境变量的代码示例,请参阅最终用户身份验证教程中的使用 Secret Manager 处理敏感配置

后续步骤

您可以使用环境变量来设置 buildpack 配置。如需了解特定语言的详细信息,请参阅适用于以下语言的 Buildpack 文档: