借助 Workflows,您可以跨 Google Cloud 服务和外部 API 编排和自动执行多步流程。您可以使用 Google Cloud 控制台、本地终端或 Cloud Shell 中的 Google Cloud CLI 或 Workflows API 来部署、更新和管理工作流定义。
准备工作
您的组织定义的安全限制条件可能会导致您无法完成以下步骤。如需了解相关问题排查信息,请参阅在受限的 Google Cloud 环境中开发应用。
控制台
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Workflows API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
gcloud
-
安装 Google Cloud CLI。
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
选择或创建项目所需的角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要拥有 Project Creator 角色 (
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予角色。
-
创建 Google Cloud 项目:
gcloud projects create PROJECT_ID
将
PROJECT_ID替换为您要创建的 Google Cloud 项目的名称。 -
选择您创建的 Google Cloud 项目:
gcloud config set project PROJECT_ID
将
PROJECT_ID替换为您的 Google Cloud 项目名称。
启用 Workflows API(如果尚未启用):
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。gcloud services enable workflows.googleapis.com
REST
如需使用 Workflows API 管理工作流,我们建议您使用 Google 提供的客户端库来调用 workflows.googleapis.com 服务。如需了解详情,请参阅 Workflows API。
创建服务账号
服务账号代表工作流的身份,并决定了工作流拥有的权限以及它可以访问的 Google Cloud 资源。如果您还没有服务账号,请创建一个;然后向其授予访问目标 Google Cloud 资源和创建日志所需的角色。
如果您在创建工作流期间未指定服务账号,则工作流将使用默认 Compute Engine 服务账号作为其身份。如需了解详情,请参阅向工作流授予访问Google Cloud 资源的权限。
如需创建工作流并关联服务账号,您需要具备创建工作流的权限(例如 Workflows Editor 角色)以及充当该服务账号的权限(例如 Service Account User 角色)。在更新工作流的源代码或服务账号时,您还需要拥有以关联服务账号身份执行操作的权限。如需了解详情,请参阅服务账号权限。
控制台
在 Google Cloud 控制台中,前往服务账号页面。
选择项目,然后点击创建服务账号。
在服务账号名称字段中,输入一个名称。
此名称必须介于 6 到 30 个字符之间,且可以包含小写字母数字字符和短划线。服务账号创建完毕后,您无法再更改其名称。
点击创建并继续。
点击选择角色。
选择以下角色,并根据需要点击添加其他角色:
- 选择工作流访问目标Google Cloud 资源所需的角色;例如,如果工作流调用另一个工作流,请选择 Workflows > Workflows Invoker。
- 如需将日志发送到 Cloud Logging,请选择 Logging > Logs Writer。
点击完成以完成服务账号的创建过程。
gcloud
创建服务账号:
gcloud iam service-accounts create SERVICE_ACCOUNT
通过分配工作流访问目标 Google Cloud 资源所需的角色,向服务账号授予权限:
例如,如果您的工作流调用另一个工作流,请分配
roles/workflows.invoker角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT@PROJECT_ID." \ --role "roles/workflows.invoker"
如需将日志发送到 Cloud Logging,请分配
roles/logging.logWriter角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT@PROJECT_ID." \ --role "roles/logging.logWriter"
替换以下内容:
SERVICE_ACCOUNT:服务账号的名称。该名称必须介于 6 到 30 个字符之间,且可以包含小写字母数字字符和短划线。在服务账号创建完毕后,无法再更改其名称。PROJECT_ID:您的 Google Cloud 项目 ID。
REST
您可以使用 serviceAccounts.create 方法创建服务账号。如需了解详情,请参阅创建服务账号。
您可以使用 setIamPolicy 方法修改和设置资源的允许政策,以编程方式授予多个角色。如需了解详情,请参阅以编程方式授予或撤销多个角色。
创建工作流
工作流定义由一系列使用 Workflows 语法描述的步骤组成,该语法可以采用 YAML 或 JSON 格式编写。定义工作流后,您需要部署该工作流,使其可供执行。部署步骤还会验证源文件是否可以执行。如果源文件不包含有效的工作流定义,则会失败。
修改 YAML 文件容易出错。如需创建工作流,您可以使用首选的 IDE 或源代码编辑器,并设置自动补全和语法验证来减少错误。
控制台
在 Google Cloud 控制台中,前往 Workflows 页面。
点击 创建。
输入工作流的名称,例如
myFirstWorkflow。名称可以包含字母、数字、下划线和连字符。必须以字母开头,并以数字或字母结尾。(可选)添加工作流的说明。
在区域列表中,选择一个适当的位置来部署工作流;例如 us-central1。
在服务账号列表中,选择您的工作流将用于访问其他 Google Cloud 服务的服务账号。如需了解详情,请参阅本文档中的创建服务账号部分。
视需要执行下列任一操作:
指定要应用于工作流定义的调用日志记录级别。在调用日志级别列表中,选择以下选项之一:
- 未指定:未指定日志记录级别。这是默认设置。 除非未指定执行日志级别(默认),否则执行日志级别优先于任何工作流日志级别;在这种情况下,工作流日志级别适用。
- 仅限错误:记录所有已捕获的异常;或者调用因异常而停止时。
- 所有调用:记录对子工作流或库函数及其结果的所有调用。
- 无日志:无调用日志记录。
指定要应用于工作流定义的执行历史记录级别。在执行历史记录列表中,选择以下选项之一:
- 基本:启用基本执行历史记录。这是默认设置。
- 详细:启用详细执行历史记录,包括任何范围内变量值和预期迭代次数。
指定工作流应该用于数据加密的 Cloud Key Management Service 密钥:选择客户管理的加密密钥 (CMEK)。如需了解详情,请参阅使用客户管理的加密密钥 (CMEK)。
指定可供工作流在运行时访问的环境变量。如需了解详情,请参阅使用环境变量。
添加标签:标签是可帮助您整理Google Cloud 实例的键值对。如需了解详情,请参阅什么是标签? 工作流标签由工作流的执行作业继承。如需查看执行标签,请使用
workflows.executions.list方法列出和过滤工作流执行。安排工作流:选择添加新触发器 > Cloud Scheduler。如需了解详情,请参阅使用 Cloud Scheduler 安排工作流。
通过事件或 Pub/Sub 消息触发工作流:选择添加新触发器 > Eventarc。如需了解详情,请参阅使用事件或 Pub/Sub 消息触发工作流。
点击下一步。
在工作流编辑器中,输入工作流的定义。请参阅示例工作流。
点击部署。
gcloud
确保工作流的源代码保存在 YAML 或 JSON 文件中,例如
MY_WORKFLOW.YAML或MY_WORKFLOW.JSON。请参阅示例工作流。打开终端。
您可以使用
gcloud workflows deploy命令创建和部署工作流:gcloud workflows deploy WORKFLOW_NAME \ --location=LOCATION \ --call-log-level=CALL_LOGGING_LEVEL \ --description="DESCRIPTION" \ --execution-history-level="EXECUTION_HISTORY_LEVEL" \ --labels="LABEL_KEY=LABEL_VALUE" \ --set-env-vars="ENV_KEY=ENV_VALUE" \ --kms-key=ENCRYPT_KEY \ --service-account=SERVICE_ACCOUNT@PROJECT_ID. \ --source=YAML_OR_JSON_SOURCE_FILE
替换以下内容:
WORKFLOW_NAME:工作流的名称,例如myFirstWorkflow。名称可以包含字母、数字、下划线和连字符。并且必须以字母开头,以数字或字母结尾。LOCATION:要在其中部署工作流的区域;例如us-central1。CALL_LOGGING_LEVEL:可选。在执行期间应用的调用日志记录级别。可以是以下之一:none:未指定日志记录级别。这是默认设置。除非未指定执行日志级别(默认),否则执行日志级别优先于任何工作流日志级别;在这种情况下,工作流日志级别适用。log-errors-only:记录所有已捕获的异常;或者调用因异常而停止时。log-all-calls:记录对子工作流或库函数及其调用的所有调用。log-none:无调用日志记录。
DESCRIPTION:可选。工作流的说明。EXECUTION_HISTORY_LEVEL:可选。在执行期间应用的执行历史记录级别。可以是以下之一:none:未指定执行历史记录级别。这是默认设置。如果未为执行指定执行历史记录级别,则由应用于工作流的级别决定。如果级别不同,则在执行级别应用的设置会覆盖在工作流级别为此执行应用的设置。execution-history-basic:启用基本执行历史记录。execution-history-detailed:启用详细的执行历史记录,包括任何范围内变量值和预期迭代次数。
LABEL_KEY=LABEL_VALUE:可选。 标签键值对列表,可帮助您整理Google Cloud 实例;例如name=wrench。如需了解详情,请参阅什么是标签? 工作流标签由工作流的执行作业继承。如需查看执行标签,请使用workflows.executions.list方法列出和过滤工作流执行。ENV_KEY=ENV_VALUE:可选。环境变量键值对列表;例如MONTH=January。如需了解详情,请参阅使用环境变量。ENCRYPT_KEY:可选。工作流用于数据加密的 Cloud KMS 密钥,格式为projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME。如需了解详情,请参阅使用客户管理的加密密钥 (CMEK)。SERVICE_ACCOUNT@PROJECT_ID.:可选。您的工作流将用于访问其他Google Cloud 服务的服务账号。如需了解详情,请参阅本文档中的创建服务账号部分。YAML_OR_JSON_SOURCE_FILE:工作流定义的源文件。例如:myFirstWorkflow.yaml。
REST
如需创建具有指定名称的新工作流,请使用 projects.locations.workflows.create 方法,并使用 workflowId 查询参数为工作流指定 ID。
在使用任何请求数据之前,请先进行以下替换:
WORKFLOW_NAME:工作流的名称,例如myFirstWorkflow。名称可以包含字母、数字、下划线和连字符。并且必须以字母开头,以数字或字母结尾。DESCRIPTION:可选。工作流的说明。长度不得超过 1000 个 Unicode 字符。LABEL_KEY和LABEL_VALUE:可选。标签键值对映射,可帮助您整理 Google Cloud 实例。例如:{"name": "wrench", "mass": "1kg", "count": "3"}。如需了解详情,请参阅什么是标签?工作流标签由工作流的执行作业继承。如需查看执行标签,请使用workflows.executions.list方法列出和过滤工作流执行。SERVICE_ACCOUNT@PROJECT_ID.:可选。您的工作流将用于访问其他 Google Cloud 服务的服务账号。项目 ID 是您的 Google Cloud 项目 ID。如需了解详情,请参阅本文档中的创建服务账号部分。ENCRYPT_KEY:可选。工作流用于数据加密的 Cloud KMS 密钥,格式为projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME。 如需了解详情,请参阅使用客户管理的加密密钥。CALL_LOGGING_LEVEL:可选。 在执行期间应用的调用日志记录级别。默认情况下,不指定日志记录级别,而是应用工作流日志级别。如需了解详情,请参阅将日志发送到 Logging。以下项之一:CALL_LOG_LEVEL_UNSPECIFIED:未指定日志记录级别,而是应用工作流日志记录级别。这是默认设置。否则,系统会应用执行日志级别,并且其优先级高于工作流日志级别。LOG_ERRORS_ONLY:记录所有已捕获的异常;或者调用因异常而停止时。LOG_ALL_CALLS:记录对子工作流或库函数及其结果的所有调用。LOG_NONE:无通话记录。
EXECUTION_HISTORY_LEVEL:可选。在执行期间应用的工作流执行历史记录级别。如需了解详情,请参阅查看执行步骤的历史记录。以下项之一:EXECUTION_HISTORY_LEVEL_UNSPECIFIED:未指定执行历史记录级别。这是默认设置。如果未为执行指定执行历史记录级别,则由应用于工作流的级别决定。如果级别不同,则在执行级别应用的设置会覆盖在工作流级别为此执行应用的设置。EXECUTION_HISTORY_BASIC:启用基本执行历史记录。EXECUTION_HISTORY_ADVANCED:启用详细的执行历史记录,包括任何范围内变量值和预期迭代次数。
ENV_KEY和ENV_VALUE:可选。环境变量键值对的映射;例如{ "month": "January", "day": "Monday"}。如需了解详情,请参阅使用环境变量。SOURCE_CODE:工作流定义。您必须在 YAML 中转义换行符。例如:main:\n params:\n - input\n steps:\n - returnOutput:\n return: Hello您必须对 JSON 中的引号进行转义。例如:
{\"main\":{\"params\":[\"input\"],\"steps\":[{\"returnOutput\":{\"return\":\"Hello\"}}]}}LOCATION:要部署工作流的区域,例如us-central1。
请求 JSON 正文:
{
"name": "WORKFLOW_NAME",
"description": "DESCRIPTION",
"labels": {"LABEL_KEY":"LABEL_VALUE"},
"serviceAccount": "SERVICE_ACCOUNT@PROJECT_ID.",
"cryptoKeyName": "ENCRYPT_KEY",
"callLogLevel": "CALL_LOGGING_LEVEL",
"executionHistoryLevel": "EXECUTION_HISTORY_LEVEL"
"userEnvVars": {"ENV_KEY":"ENV_VALUE"},
"sourceContents": "SOURCE_CODE"
}
如需发送您的请求,请展开以下选项之一:
如果成功,响应正文将包含一个新创建的 Operation 实例:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.workflows.v1.OperationMetadata",
"createTime": "2023-12-05T14:06:06.338390918Z",
"target": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME",
"verb": "create",
"apiVersion": "v1"
},
"done": false
}
如果 "done" 的值为 false,则表示操作仍在进行中。
列出工作流
您可以列出工作流,也可以使用过滤条件检索特定工作流。
控制台
在 Google Cloud 控制台中,前往 Workflows 页面。
此页面会列出所有位置的工作流,并包含名称、区域、最新修订版本等详细信息。
如需过滤工作流,请执行以下操作:
- 点击 过滤或过滤工作流字段。
- 在属性列表中,选择要作为工作流过滤条件的选项。
您可以选择单个属性,或使用逻辑运算符
OR添加更多属性。如需对工作流进行排序,请点击任意受支持的列标题旁边的 排序。
gcloud
使用 gcloud workflows list 命令列出工作流:
gcloud workflows list --location=LOCATION
将 LOCATION 替换为工作流位置的 ID 或完全限定标识符。
此命令会列出指定位置中的工作流,并包含工作流的 NAME、STATE、REVISION_ID 和 UPDATE_TIME 等详细信息。
REST
如需列出指定项目和位置中的工作流,请使用 projects.locations.workflows.list 方法。
或者,如需检索单个工作流的详细信息,请使用 projects.locations.workflows.get 方法。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID:您的 Google Cloud项目 ID。LOCATION:部署工作流的区域,例如us-central1。
如需发送您的请求,请展开以下选项之一:
如果成功,则响应正文包含 Workflow 的实例,并且响应应类似如下内容:
{
"workflows": [
{
"name": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME",
"state": "ACTIVE",
"revisionId": "000001-0ce",
"createTime": "2023-12-08T13:56:59.306770745Z",
"updateTime": "2023-12-08T13:56:59.547021939Z",
"revisionCreateTime": "2023-12-08T13:56:59.340161044Z",
"serviceAccount": "projects/PROJECT_ID/serviceAccounts/PROJECT_NUMBER-compute@",
"sourceContents": "main:\n params: [input]\n [...] return: '${wikiResult.body[1]}'\n"
},
{
object (Workflow)
}
],
"nextPageToken": string,
"unreachable": [
string
]
}
更新工作流
您可以更新现有工作流的源代码、配置设置或这两者。不过,您无法更改工作流的名称或位置。
更新工作流不会影响正在进行的执行。只有后续执行的工作流才会使用更新后的配置。
如需更新工作流的源代码或服务账号,您需要 iam.serviceAccounts.actAs 权限,该权限包含在 Service Account User (roles/iam.serviceAccountUser) 等角色中。根据更新,您需要对以下服务账号拥有此权限:
- 仅更新工作流源代码(不更新服务账号):您需要对与工作流关联的现有服务账号拥有
iam.serviceAccounts.actAs权限。 - 更新服务账号,或同时更新源代码和服务账号:您需要对与工作流关联的新服务账号拥有
iam.serviceAccounts.actAs权限。
如需了解详情,请参阅服务账号权限。
每次更新工作流的源代码、服务账号、加密密钥、环境变量、调用日志级别或执行历史记录级别时,系统都会创建一个新的工作流修订版本,并更新其 revisionId。仅更新工作流的说明或标签不会创建新的修订版本。revisionId 由两部分组成,并以连字符隔开:
一个六位数的零填充数字,从
000001开始,每次创建新修订版本时都会递增。一个随机的三字符十六进制字符串。
例如,000001-27f 表示工作流的初始修订版本,000002-d52 表示第二个修订版本。
控制台
在 Google Cloud 控制台中,前往 Workflows 页面。
点击要更新的工作流的名称。请注意,您无法更改工作流的名称。
系统会显示工作流详情页面。
您可以通过以下方式修改工作流:
如需修改来源,请执行以下操作:
- 点击来源标签页。
- 点击修改。
- 要保存更改,请点击保存。 已部署更新后的工作流。
如需更新说明、工作流用于身份验证的服务账号、调用日志级别、执行历史记录级别、环境变量、标签或加密密钥,请执行以下操作:
- 点击详情标签页。
- 点击相应的 图标。
- 如果您要更新通话记录级别,请选择以下选项之一:
- 未指定:未指定日志记录级别。这是默认设置。 除非未指定执行日志级别(默认),否则执行日志级别优先于任何工作流日志级别;在这种情况下,工作流日志级别适用。
- 仅限错误:记录所有已捕获的异常;或者调用因异常而停止时。
- 所有调用:记录对子工作流或库函数及其结果的所有调用。
- 无日志:无调用日志记录。
- 如果您要更新执行历史记录级别,请选择以下选项之一:
- 基本:启用基本执行历史记录。这是默认设置。
- 详细:启用详细执行历史记录,包括任何范围内变量值和预期迭代次数。
要保存更改,请点击保存。 已部署更新后的工作流。
如需同时修改上述字段,或添加/更新触发器,请执行以下操作:
- 点击修改。
- 如需修改来源,请点击下一步。
- 如需保存更改并部署更新后的工作流,请点击部署。
可选:如需管理哪些主账号有权访问或调用此工作流资源,请点击权限标签页:
如需更新现有主账号,请执行以下操作:
- 找到包含该主账号的行。
- 点击该行中的 修改主账号。
- 点击 添加其他角色或点击 删除角色。
如果您要添加角色,请在选择角色列表中选择适当的角色。
如需添加其他角色,请点击添加其他角色。
点击保存。
gcloud
打开终端。
找到要更新的工作流的名称。如果您不知道工作流的名称,请输入以下命令以列出某个位置的工作流:
gcloud workflows list --location=LOCATION
将
LOCATION替换为工作流位置的 ID 或完全限定标识符。如果您要更新工作流的源代码,请找到保存工作流源代码的 YAML 或 JSON 文件,例如
WORKFLOW_NAME.yaml或WORKFLOW_NAME.json。通过运行
gcloud workflows deploy命令并使用要更改的属性的标志来更新工作流。您可以更新现有工作流,以更改其来源、说明、标签、环境变量、调用日志级别、执行历史记录级别、加密密钥或关联的服务账号。您必须指定要更新的工作流的名称;其余标志是可选的。如需移除客户管理的加密密钥,请使用
--clear-kms-key标志。gcloud workflows deploy WORKFLOW_NAME \ --location=LOCATION \ --call-log-level=CALL_LOGGING_LEVEL \ --description="DESCRIPTION" \ --execution-history-level="EXECUTION_HISTORY_LEVEL" \ --labels="LABEL_KEY=LABEL_VALUE" \ --set-env-vars="ENV_KEY=ENV_VALUE" \ --kms-key=ENCRYPT_KEY \ --service-account=SERVICE_ACCOUNT@PROJECT_ID. \ --source=YAML_OR_JSON_SOURCE_FILE
替换以下内容:
WORKFLOW_NAME:必填。工作流的名称。LOCATION:如果设置了workflows/location属性,则为可选;否则为必需。工作流的位置;例如us-central1。CALL_LOGGING_LEVEL:可选。在执行期间应用的调用日志记录级别。可以是以下之一:none:未指定日志记录级别。这是默认设置。除非未指定执行日志级别(默认),否则执行日志级别优先于任何工作流日志级别;在这种情况下,工作流日志级别适用。log-errors-only:记录所有已捕获的异常;或者调用因异常而停止时。log-all-calls:记录对子工作流或库函数及其调用的所有调用。log-none:无调用日志记录。
DESCRIPTION:可选。工作流的说明。EXECUTION_HISTORY_LEVEL:可选。在执行期间应用的执行历史记录级别。可以是以下之一:none:未指定执行历史记录级别。这是默认设置。如果未为执行指定执行历史记录级别,则由应用于工作流的级别决定。如果级别不同,则在执行级别应用的设置会覆盖在工作流级别为此执行应用的设置。execution-history-basic:启用基本执行历史记录。execution-history-detailed:启用详细的执行历史记录,包括任何范围内变量值和预期迭代次数。
LABEL_KEY=LABEL_VALUE:可选。 标签键值对列表,可帮助您整理Google Cloud 实例;例如name=wrench。如需了解详情,请参阅什么是标签? 工作流标签由工作流的执行作业继承。如需查看执行标签,请使用workflows.executions.list方法列出和过滤工作流执行。ENV_KEY=ENV_VALUE:可选。环境变量键值对列表;例如MONTH=January。如需了解详情,请参阅使用环境变量。ENCRYPT_KEY:可选。工作流用于数据加密的 Cloud KMS 密钥,格式为projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME。如需了解详情,请参阅使用客户管理的加密密钥 (CMEK)。SERVICE_ACCOUNT@PROJECT_ID.:可选。您的工作流用于访问其他Google Cloud 服务的服务账号。如果您想更新服务账号的角色,请参阅向工作流授予访问Google Cloud 资源的权限和管理对项目、文件夹和组织的访问权限。YAML_OR_JSON_SOURCE_FILE:可选。工作流的源文件,采用 YAML 或 JSON 格式。例如:myFirstWorkflow.yaml。
REST
如需更新现有工作流,请使用 projects.locations.workflows.patch 方法,并视情况使用 updateMask 查询参数指定要更新的字段列表。
在使用任何请求数据之前,请先进行以下替换:
WORKFLOW_NAME:工作流的名称,例如myFirstWorkflow。DESCRIPTION:可选。工作流的说明。长度不得超过 1000 个 Unicode 字符。LABEL_KEY和LABEL_VALUE:可选。标签键值对映射,可帮助您整理 Google Cloud 实例。例如:{"name": "wrench", "mass": "1kg", "count": "3"}。如需了解详情,请参阅什么是标签?工作流标签由工作流的执行作业继承。如需查看执行标签,请使用workflows.executions.list方法列出和过滤工作流执行。SERVICE_ACCOUNT@PROJECT_ID.:可选。您的工作流将用于访问其他 Google Cloud 服务的服务账号。项目 ID 是您的 Google Cloud 项目 ID。如需了解详情,请参阅本文档中的创建服务账号部分。ENCRYPT_KEY:可选。工作流用于数据加密的 Cloud KMS 密钥,格式为projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME。 如需了解详情,请参阅使用客户管理的加密密钥。CALL_LOGGING_LEVEL:可选。 在执行期间应用的调用日志记录级别。默认情况下,不指定日志记录级别,而是应用工作流日志级别。如需了解详情,请参阅将日志发送到 Logging。以下项之一:CALL_LOG_LEVEL_UNSPECIFIED:未指定日志记录级别,而是应用工作流日志记录级别。这是默认设置。否则,系统会应用执行日志级别,并且其优先级高于工作流日志级别。LOG_ERRORS_ONLY:记录所有已捕获的异常;或者调用因异常而停止时。LOG_ALL_CALLS:记录对子工作流或库函数及其结果的所有调用。LOG_NONE:无通话记录。
EXECUTION_HISTORY_LEVEL:可选。在执行期间应用的工作流执行历史记录级别。如需了解详情,请参阅查看执行步骤的历史记录。以下项之一:EXECUTION_HISTORY_LEVEL_UNSPECIFIED:未指定执行历史记录级别。这是默认设置。如果未为执行指定执行历史记录级别,则由应用于工作流的级别决定。如果级别不同,则在执行级别应用的设置会覆盖在工作流级别为此执行应用的设置。EXECUTION_HISTORY_BASIC:启用基本执行历史记录。EXECUTION_HISTORY_ADVANCED:启用详细的执行历史记录,包括任何范围内变量值和预期迭代次数。
ENV_KEY和ENV_VALUE:可选。环境变量键值对的映射;例如{ "month": "January", "day": "Monday"}。如需了解详情,请参阅使用环境变量。SOURCE_CODE:缩减大小的工作流定义。例如:{\"main\":{\"params\":[\"input\"],\"steps\":[{\"returnOutput\":{\"return\":\"Hello\"}}]}}LOCATION:部署工作流的区域,例如us-central1。UPDATE_FIELDS:可选。要更新的字段的逗号分隔列表。如果未提供,则会更新整个工作流。 例如description,callLogLevel。
请求 JSON 正文:
{
"name": "WORKFLOW_NAME",
"description": "DESCRIPTION",
"labels": {"LABEL_KEY":"LABEL_VALUE"},
"serviceAccount": "SERVICE_ACCOUNT@PROJECT_ID.",
"cryptoKeyName": "ENCRYPT_KEY",
"callLogLevel": "CALL_LOGGING_LEVEL",
"executionHistoryLevel": "EXECUTION_HISTORY_LEVEL"
"userEnvVars": {"ENV_KEY":"ENV_VALUE"},
"sourceContents": "SOURCE_CODE"
}
如需发送您的请求,请展开以下选项之一:
如果成功,响应正文将包含一个新创建的 Operation 实例:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.workflows.v1.OperationMetadata",
"createTime": "2023-12-05T14:06:06.338390918Z",
"target": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME",
"verb": "update",
"apiVersion": "v1"
},
"done": false
}
如果 "done" 的值为 false,则表示操作仍在进行中。
删除工作流
您可以删除现有工作流。删除工作流还会删除其执行,并取消该工作流的所有活跃执行。
控制台
在 Google Cloud 控制台中,前往 Workflows 页面。
点击要删除的工作流的名称,然后点击 删除。
在确认删除的提示中,输入工作流名称。
点击确认。
gcloud
打开终端。
找到要删除的工作流的名称。如果您不知道工作流的名称,请输入以下命令以列出某个位置的工作流:
gcloud workflows list --location=LOCATION
使用
gcloud workflows delete命令删除工作流:gcloud workflows delete WORKFLOW_NAME \ --location=LOCATION
替换以下内容:
WORKFLOW_NAME:工作流的名称。LOCATION:工作流位置的 ID 或完全限定标识符。
REST
如需删除具有指定名称的工作流,请使用 projects.locations.workflows.delete 方法。
在使用任何请求数据之前,请先进行以下替换:
WORKFLOW_NAME:要删除的工作流的名称。PROJECT_ID:您的 Google Cloud项目 ID。LOCATION:部署工作流的区域,例如us-central1。
如需发送您的请求,请展开以下选项之一:
如果成功,则响应正文包含一个 Operation 实例:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.workflows.v1.OperationMetadata",
"createTime": "2023-12-05T14:06:06.338390918Z",
"target": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME",
"verb": "delete",
"apiVersion": "v1"
},
"done": false
}
如果 "done" 的值为 false,则表示操作仍在进行中。