创建和管理工作流

本页面介绍如何在 Google Cloud 控制台中创建和管理工作流,或者在终端或 Cloud Shell 中使用 Google Cloud CLI 来创建和管理工作流。您还可以通过 Workflows API 管理工作流。

须知事项

贵组织定义的安全限制条件可能会阻止您完成以下步骤。如需了解问题排查相关信息,请参阅在受限的 Google Cloud 环境中开发应用

控制台

  1. 在 Google Cloud 控制台的“项目选择器”页面上,选择或创建 Google Cloud 项目

    前往项目选择器

  2. 确保您的 Google Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能

  3. 启用 Workflows API。

    启用 API

gcloud

  1. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

  2. 确保您的 Google Cloud 项目已启用结算功能。 了解如何检查项目是否已启用结算功能

  3. 启用 Workflows API。

    gcloud services enable workflows.googleapis.com
    

API

如需使用 Workflows API 管理工作流,我们建议您使用 Google 提供的客户端库来调用 workflows.googleapis.com 服务。如需了解详情,请参阅 Workflows API

创建服务账号

Workflows 使用服务帐号向工作流授予对 Google Cloud 资源的访问权限。如果您还没有服务帐号,请创建一个;然后为其授予管理工作流和创建日志所需的角色。如果您在创建工作流的过程中未指定服务帐号,则工作流将使用默认 Compute Engine 服务帐号作为其身份。详细了解如何使用服务帐号部署工作流

请注意,如需创建资源并关联服务帐号,您需要拥有创建该资源以及模拟您将附加到该资源的服务帐号的权限。如需了解详情,请参阅服务帐号权限

控制台

  1. 在 Google Cloud 控制台中,转到服务账号页面。

    转到“服务帐号”

  2. 选择项目,然后点击创建服务账号

  3. 服务账号名称字段中,输入一个名称。

    此名称必须介于 6 到 30 个字符之间,且可以包含小写字母数字字符和短划线。在服务账号创建完毕后,无法再更改其名称。

  4. 点击创建并继续

  5. 点击选择角色

  6. 选择以下角色,然后根据需要点击添加其他角色

    • 如需创建、更新和执行工作流,请选择 Workflows > Workflows Editor
    • 如需将日志发送到 Cloud Logging,请依次选择 Logging > Logs Writer
  7. 点击完成以完成服务账号的创建过程。

gcloud

  1. 创建服务账号。

    gcloud iam service-accounts create NAME
  2. 通过分配角色向服务账号授予权限。

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/logging.logWriter"
    

    请替换以下内容:

    • NAME:服务帐号的名称。该名称必须介于 6 到 30 个字符之间,且可以包含小写字母数字字符和短划线。在服务账号创建完毕后,无法再更改其名称。
    • PROJECT_ID:您的项目的 ID。

    --role 标志用于向您的服务帐号授予资源访问权限。

创建工作流

工作流定义由一系列使用 Workflows 语法描述的步骤组成,该语法可以采用 YAML 或 JSON 格式编写。创建工作流后,可以进行部署,使其可以执行。部署步骤还会验证源文件是否可以执行。如果源文件不包含有效的工作流定义,则会失败。

修改 YAML 文件容易出错。如需创建工作流,您可以使用首选的 IDE 或源代码编辑器,并设置自动补全和语法验证来减少错误。

控制台

  1. 在 Google Cloud 控制台中,进入 Workflows 页面:

    进入 Workflows

  2. 点击 创建

  3. 输入新工作流的名称,例如 myFirstWorkflow。名称可以包含字母、数字、下划线和连字符。必须以字母开头,并以数字或字母结尾。

  4. 区域列表中,选择一个适当的区域。例如 us-central1

  5. 服务账号列表中选择一个服务账号,您的工作流将使用该服务账号向其他 Google Cloud 服务进行身份验证。 我们强烈建议您使用具备访问必需资源所需的最低权限的服务账号。如需了解详情,请参阅本文档中的创建服务账号部分。

    我们强烈建议您使用具备访问必需资源所需的最低权限的服务账号。

  6. 视需要执行下列任一操作:

    1. 指定要应用于工作流定义的调用日志记录级别。在调用日志级别列表中,选择以下选项之一:

      • 未指定:未指定日志记录级别。这是默认设置。 除非未指定执行日志级别(默认),否则执行日志级别优先于任何工作流日志级别;在这种情况下,工作流日志级别适用。
      • 仅限错误:记录所有已捕获的异常;或者调用因异常而停止时。
      • 所有调用:记录对子工作流或库函数及其结果的所有调用。
      • 无日志:无调用日志记录。
    2. 指定可供工作流在运行时访问的环境变量。如需了解详情,请参阅使用环境变量

    3. 指定工作流应该用于数据加密的 Cloud Key Management Service 密钥:选择客户管理的加密密钥 (CMEK)。如需了解详情,请参阅使用客户管理的加密密钥 (CMEK)

    4. 添加标签:标签是可帮助您整理 Google Cloud 实例的键值对。如需了解详情,请参阅创建和管理标签

    5. 安排工作流:选择添加新触发器 > Cloud Scheduler。如需了解详情,请参阅使用 Cloud Scheduler 安排工作流

    6. 通过事件或 Pub/Sub 消息触发工作流:选择添加新触发器 > Eventarc。如需了解详情,请参阅使用事件或 Pub/Sub 消息触发工作流

  7. 点击下一步

  8. 在工作流编辑器中,输入工作流的定义。请参阅示例工作流

  9. 点击部署

gcloud

  1. 确保工作流的源代码保存在 YAML 或 JSON 文件中,例如 MY_WORKFLOW.YAMLMY_WORKFLOW.JSON。请参阅示例工作流

  2. 打开终端。

  3. 输入以下命令以部署工作流:

    gcloud workflows deploy MY_WORKFLOW \
        --source=YAML_OR_JSON_SOURCE_FILE \
        --call-log-level=CALL_LOGGING_LEVEL \
        --set-env-vars=KEY1=VALUE1 \
        --kms-key=KEY \
        --service-account=MY_SERVICE_ACCOUNT@MY_PROJECT.IAM.GSERVICEACCOUNT.COM
    

    请替换以下内容:

    • MY_WORKFLOW:工作流的名称。

    • YAML_OR_JSON_SOURCE_FILE:用于工作流的源文件。例如:myFirstWorkflow.yaml

    • CALL_LOGGING_LEVEL:可选。在执行期间应用的调用日志记录级别。可以是以下之一:

      • none:未指定日志记录级别。这是默认设置。除非未指定执行日志级别(默认),否则执行日志级别优先于任何工作流日志级别;在这种情况下,工作流日志级别适用。
      • log-errors-only:记录所有已捕获的异常;或者调用因异常而停止时。
      • log-all-calls:记录对子工作流或库函数及其调用的所有调用。
      • log-none:无调用日志记录。
    • KEY1=VALUE1:可选。环境变量名称及其值;例如 MONTH=January。如需了解详情,请参阅使用环境变量

    • KEY:可选。工作流用于数据加密的 Cloud KMS 密钥,格式为 projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME。如需了解详情,请参阅使用客户管理的加密密钥 (CMEK)

    • MY_SERVICE_ACCOUNT@MY_PROJECT.IAM.GSERVICEACCOUNT.COM:可选。您的工作流将用于访问其他 Google Cloud 服务的服务账号。我们强烈建议您使用具备访问必需资源所需的最低权限的服务账号。如果留空,则使用默认服务账号。 如需了解详情,请参阅本文档中的创建服务账号部分。

API

调用 projects.locations.workflows.create 方法,并使用 workflowId 参数指定工作流的 ID。

列出工作流

您可以列出工作流,也可以使用过滤条件检索特定工作流。

控制台

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

    进入 Workflows

    本页面列出了您在所有位置的工作流,包括名称、区域、最新修订版本等详细信息。

  2. 如需过滤工作流,请执行以下操作:

    1. 点击 过滤条件过滤工作流字段。
    2. 属性列表中,选择一个选项以过滤工作流。

    您可以选择单个属性,也可以使用逻辑运算符 OR 添加更多属性。

  3. 如需对工作流进行排序,请在任何受支持的列标题旁边点击 排序

gcloud

使用 gcloud workflows list 命令列出工作流:

gcloud workflows list --location=WORKFLOW_NAME

LOCATION 替换为工作流位置的 ID 或完全限定标识符

此命令会列出指定位置的工作流,并包含工作流的 NAMESTATEREVISION_IDUPDATE_TIME 等详细信息。

API

调用 projects.locations.workflows.list 方法以列出给定项目和位置中的工作流。或者,调用 projects.locations.workflows.get 方法以检索单个工作流的详细信息。

更新工作流

您可以更新现有工作流以更改其来源、说明、标签、环境变量、触发器、加密密钥或其关联的服务帐号。更新工作流不会影响正在进行的执行。只有工作流的将来执行才会使用更新后的配置。

控制台

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

    进入 Workflows

  2. 点击要更新的工作流的名称。请注意,您无法更改工作流的名称。

    随即会出现工作流程详情页面。

  3. 您可以通过以下方式修改工作流:

    • 若要修改来源,请执行以下操作:

      1. 点击 Source(来源)标签页。
      2. 点击修改
      3. 要保存更改,请点击保存。 系统会部署更新后的工作流。
    • 如需更新说明、工作流用于身份验证的服务帐号、通话记录级别、环境变量、标签或加密密钥,请执行以下操作:

      1. 点击详情标签页。
      2. 点击相应的 图标。
      3. 如果您要更新通话记录级别,请选择以下选项之一:
        • 未指定:未指定日志记录级别。这是默认设置。 除非未指定执行日志级别(默认),否则执行日志级别优先于任何工作流日志级别;在这种情况下,工作流日志级别适用。
        • 仅限错误:记录所有已捕获的异常;或者调用因异常而停止时。
        • 所有调用:记录对子工作流或库函数及其结果的所有调用。
        • 无日志:无调用日志记录。
      4. 要保存更改,请点击保存。 系统会部署更新后的工作流。
    • 如需同时修改之前的字段,或者添加或更新触发器,请执行以下操作:

      1. 点击 修改
      2. 如需修改来源,请点击下一步
      3. 如需保存更改并部署更新后的工作流,请点击部署
  4. 如果要更新服务帐号的角色,请点击权限标签页。

    1. 主帐号是用户、群组、网域或服务帐号。如需更新现有主帐号,请执行以下操作:

      1. 找到包含主帐号的行。
      2. 点击该行中的 修改主帐号
      3. 点击 添加其他角色或点击 删除角色
    2. 如果您要添加角色,请在选择角色列表中选择适当的角色。

    3. 如需添加其他角色,请点击添加其他角色

    4. 点击保存

gcloud

  1. 打开终端。

  2. 找到您要更新的工作流的名称。如果您不知道工作流的名称,则可以输入以下命令列出所有工作流:

    gcloud workflows list
    
  3. 找到保存工作流来源的 YAML 或 JSON 文件,例如 WORKFLOW_NAME.YAMLWORKFLOW_NAME.JSON

  4. 您可以使用 gcloud workflows deploy 命令更新工作流的来源、关联的服务帐号、说明、通话记录级别、环境变量、标签或加密密钥。

    您必须指定要更新的工作流的名称及其来源;但是,其余标志是可选的。如需移除客户管理的加密密钥,请使用 --clear-kms-key 标志。

    gcloud workflows deploy WORKFLOW_NAME \
        --source=YAML_OR_JSON_SOURCE_FILE \
        --service-account=MY_SERVICE_ACCOUNT@MY_PROJECT.IAM.GSERVICEACCOUNT.COM \
        --call-log-level=CALL_LOG_LEVEL \
        --update-env-vars KEY1=VALUE1 \
        --labels=KEY=VALUE... \
        --description='WORKFLOW_DESCRIPTION'
    

    请替换以下内容:

    • WORKFLOW_NAME:必填。工作流的名称。

    • YAML_OR_JSON_SOURCE_FILE:必填。工作流的源文件(采用 YAML 或 JSON 格式)。例如:myFirstWorkflow.yaml

    • MY_SERVICE_ACCOUNT@MY_PROJECT.IAM.GSERVICEACCOUNT.COM:可选。您的工作流将用于访问其他 Google Cloud 服务的服务账号。如果要更新服务帐号的角色,请参阅授予工作流访问 Google Cloud 资源的权限管理对项目、文件夹和组织的访问权限

    • CALL_LOG_LEVEL:可选。要应用于工作流的通话记录级别。必须为以下项之一:

      • none:未指定日志记录级别。这是默认设置。除非未指定执行日志级别(默认),否则执行日志级别优先于任何工作流日志级别;在这种情况下,工作流日志级别适用。
      • log-errors-only:记录所有已捕获的异常;或者调用因异常而停止时。
      • log-all-calls:记录对子工作流或库函数及其调用的所有调用。
      • log-none:无调用日志记录。
    • KEY1=VALUE1:可选。环境变量名称及其值;例如 MONTH=January。如需了解详情,请参阅使用环境变量

    • KEY=VALUE:可选。KEY=VALUE 对标签(如果添加多个标签,则以英文逗号分隔)。标签可帮助您整理 Google Cloud 实例。如需了解详情,请参阅创建和管理标签

    • WORKFLOW_DESCRIPTION:可选。您想要为工作流提供的说明。

API

调用 projects.locations.workflows.patch 方法以更新现有工作流。

每次更新工作流时,系统都会更新其 versionIDversionID 由两部分组成,并以连字符隔开:

  • 这是每次更新工作流时都会递增的数字,从 1 开始。

  • 由三个字符组成的随机字母数字字符串。

例如,000002-d52 表示已更新一次工作流。000001-27f 表示初始版本的工作流。

删除工作流

您可以删除现有工作流。删除工作流会同时删除其执行,并取消工作流的所有活跃执行。

控制台

  1. 在 Google Cloud 控制台中,进入 Workflows 页面:

    进入 Workflows

  2. 点击要删除的工作流的名称,然后点击 删除

  3. 在提示确认删除时,输入工作流名称。

  4. 点击确认

gcloud

  1. 打开终端。

  2. 找到您要删除的工作流的名称。如果您不知道工作流的名称,则可以输入以下命令列出所有工作流:

    gcloud workflows list
    
  3. 使用 gcloud workflows delete 命令删除工作流:

    gcloud workflows delete WORKFLOW_NAME
    

    WORKFLOW_NAME 替换为您的工作流的名称。

API

调用 projects.locations.workflows.delete 方法以删除具有指定名称的工作流。

后续步骤