使用环境变量

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

环境变量可设置为工作流在运行时可访问的任意键值对。它们存储在 Workflows 后端中,其范围限定为工作流执行,并且在工作流执行期间是不变的。

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

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

预留名称

为 Workflows 定义的内置环境变量已预留,无法设置。

请注意,为 Workflows 定义环境变量时,不能使用以下参数:

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

设置环境变量

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

控制台

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

    进入 Workflows

  2. Workflows 页面上,点击 创建

  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

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

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

命名惯例

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

大小限制

最多可以定义 20 个用户定义的环境变量。每个定义字符串 (KEY=value) 的上限为 4 KiB。

后续步骤