使用环境变量

您可以在部署时为工作流定义环境变量。例如,您可以创建一个根据部署到哪个环境而动态配置的工作流。或者,您可以创建一个可用作模板重复使用的工作流,并根据单独维护的环境变量进行配置。

环境变量可设置为任意键值对字符串,并且可供工作流在运行时访问。它们存储在 Workflows 后端,作用域限定为工作流执行,并且在工作流执行期间不可变。

所有环境变量是在部署工作流时绑定的,并且只能通过部署进行设置或更改。若要创建或更改环境变量,必须成功部署 Cloud Functions 函数。如果部署因任何原因失败,对环境变量进行的任何更改都不会应用。

您可以使用 Google Cloud CLI 添加、更新或移除用户定义的环境变量。

预留名称

为 Workflows 定义的内置环境变量会预留给系统,不得设置。

请注意,在为 Workflows 定义环境变量时,您不能使用以下内容:

说明
空 ('') 键不能是空字符串。
GOOGLE_ 键不能包含 GOOGLE_ 前缀。
WORKFLOWS_ 键不能包含 WORKFLOWS_ 前缀。

设置环境变量

您可以在部署工作流时定义新变量或替换现有变量。如需进行增补性更改,请改为参阅本文档中的更新环境变量

控制台

  1. 在 Google Cloud 控制台中,转到 Workflows 页面:

    进入 Workflows

  2. 工作流页面上,点击 创建

  3. 创建工作流页面上,填写相应字段以配置工作流定义。

  4. 环境变量(可选)部分中,点击添加变量

  5. 名称 1 字段中,指定变量名称。

  6. 值 1 字段中,指定变量值。

  7. 如需添加其他变量,请点击添加变量

  8. 点击下一步

  9. 定义工作流后,如需部署该工作流,请点击部署

gcloud

如需设置环境变量,请使用 --set-env-vars 标志:

gcloud workflows deploy WORKFLOW_NAME \
    --set-env-vars KEY1=VALUE1

替换以下内容:

  • WORKFLOW_NAME:工作流的 ID。
  • KEY1=VALUE1:环境变量名称及其值;例如 MONTH=January

Terraform

如需创建工作流,请使用 google_workflows_workflow 资源并修改 main.tf 文件,如示例所示。如需了解详情,请参阅使用 Terraform 创建工作流

使用 user_env_vars 参数将环境变量与工作流修订版本相关联。

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

设置多个环境变量

如需设置多个环境变量,请使用英文逗号分隔的列表:

gcloud workflows deploy WORKFLOW_NAME \
      --set-env-vars KEY1=VALUE1,KEY2=VALUE2

转义英文逗号字符

由于英文逗号字符 (,) 用于分隔环境变量,因此,如果您的变量值包含英文逗号,则您必须指定其他分隔符字符,例如 @

gcloud workflows deploy WORKFLOW_NAME \
      --set-env-vars ^@^KEY1=VALUE1,VALUE2,VALUE3@KEY2=VALUE2

将变量存储在文件中

如需将变量存储在文件中(例如,存储在源代码控制系统下),请使用 YAML 文件和 --env-vars-file 标志:

gcloud workflows deploy WORKFLOW_NAME \
      --env-vars-file FILE_PATH

FILE_PATH 替换为列出环境变量定义的本地 YAML 文件的路径。请注意,变量名称和值必须是字符串。在添加新的环境变量之前,Workflows 会移除所有现有环境变量。

例如,YAML 文件的内容可能如下所示:

KEY1: "value1"
KEY2: "value2"

如需详细了解 deploy 命令,请参阅 gcloud workflows deploy

访问环境变量

如需访问环境变量,请在表达式中调用 sys.get_env() 函数,并将环境变量的名称作为参数传递。环境变量的名称必须作为字符串传递。

例如,以下工作流将环境变量 KEY1 的值分配给名为 keyValue 的工作流变量,然后输出该值:

main:
  steps:
    - init:
        assign:
          - keyValue: ${sys.get_env("KEY1")}
    - returnResult:
        return: ${keyValue}

更新环境变量

您可以更新现有工作流的用户定义环境变量。这种方法没有破坏性,也就是说,它只会更改或添加环境变量,但不会删除环境变量。

控制台

  1. 在 Google Cloud 控制台中,前往工作流页面。

    进入 Workflows

  2. 点击您要更新的工作流的名称。

    系统随即会显示工作流详情页面。

  3. 如需修改现有环境变量,请执行以下任一操作:

    • 点击详情标签页。

      1. 点击“环境变量”旁边的 图标。
      2. 进行更改。
      3. 如需部署更新后的工作流,请点击保存
    • 点击 修改

      1. 环境变量(可选)部分中进行更改。
      2. 如需部署更新后的工作流,请依次点击下一步部署

gcloud

如需更新变量,请使用 --update-env-vars 标志:

gcloud workflows deploy WORKFLOW_NAME \
    --update-env-vars KEY1=VALUE1

如需更新多个环境变量,请使用英文逗号分隔的列表:

gcloud workflows deploy WORKFLOW_NAME \
    --update-env-vars KEY1=VALUE1,KEY2=VALUE2

删除环境变量

您可以删除现有工作流的用户定义环境变量。

控制台

  1. 在 Google Cloud 控制台中,前往工作流页面。

    进入 Workflows

  2. 点击您要更新的工作流的名称。

    系统随即会显示工作流详情页面。

  3. 如需删除现有环境变量,请执行以下任一操作:

    • 点击详情标签页。

      1. 点击相应的
      2. 点击要删除的环境变量旁边的 图标。
      3. 如需部署更新后的工作流,请点击保存
    • 点击 修改

      1. 点击要删除的环境变量旁边的 图标。
      2. 如需部署更新后的工作流,请依次点击下一步部署

gcloud

如果您想有选择地移除环境变量,请使用 --remove-env-vars 标志:

gcloud workflows deploy WORKFLOW_NAME \
    --remove-env-vars KEY1,KEY2

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

gcloud workflows deploy WORKFLOW_NAME \
    --clear-env-vars

最佳做法

我们建议的最佳做法是,不要依赖或修改任何未明确设置的环境变量。如果您修改了除您明确设置的环境变量之外的环境变量,可能会导致意外后果。

管理 Secret

环境变量可用于配置工作流,但建议不要使用其来存储和使用密钥(例如数据库凭据或 API 密钥)。这些敏感值应与源代码和环境变量分开存储,并且不得无意中发送到日志。

如需了解存储 Secret 方面的最佳实践,建议您查看Secret 管理,并按照说明将 Secret Manager 与工作流搭配使用

命名规则

一般来说,我们建议环境变量键仅包含大写字母、数字和下划线 (_),并且不要以数字开头。考虑为用户定义的环境变量添加一个唯一键作为前缀,以避免与其他变量冲突。

大小限制

最多可以定义 20 个用户定义的环境变量。每个定义字符串 (KEY=value) 不得超过 4 KiB。

后续步骤