快速入门:使用 gcloud 工具创建工作流

本快速入门介绍如何使用 gcloud 命令行工具创建、部署和执行第一个工作流。工作流会向示例 API 发送请求,然后使用响应创建请求并将其发送至公共 API。 然后,工作流会返回公共 API 的响应。

如需查看所有工作流 gcloud 工具命令的列表,请参阅工作流的 gcloud 工具参考页面

准备工作

如果您的组织将限制应用于您的 Google Cloud 环境,则本文档中的某些步骤可能无法正常工作。在这种情况下,您可能无法完成创建公共 IP 地址或服务帐号密钥等任务。如果您发出的请求会返回有关限制条件的错误,请参阅如何在受限的 Google Cloud 环境中开发应用

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 安装并初始化 Cloud SDK
  5. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  6. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  7. 安装并初始化 Cloud SDK
  8. 启用 Workflows API。

    gcloud services enable workflows.googleapis.com
  9. 创建服务帐号并为其命名;例如 sa-name
    gcloud iam service-accounts create sa-name
  10. roles/logging.logWriter 角色授予服务帐号。

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

    PROJECT_ID 替换为您的项目 ID。

创建、部署和执行工作流

  1. 打开终端或 Cloud Shell。
  2. 在您的主目录中,创建一个名为 myFirstWorkflow.yamlmyFirstWorkflow.json 的新文件。
  3. 复制下面其中一个文件并粘贴到新文件中,然后保存该文件:

    YAML

    - getCurrentTime:
        call: http.get
        args:
          url: https://us-central1-workflowsample.cloudfunctions.net/datetime
        result: currentTime
    - readWikipedia:
        call: http.get
        args:
          url: https://en.wikipedia.org/w/api.php
          query:
            action: opensearch
            search: ${currentTime.body.dayOfTheWeek}
        result: wikiResult
    - returnResult:
        return: ${wikiResult.body[1]}

    JSON

    [
      {
        "getCurrentTime": {
          "call": "http.get",
          "args": {
            "url": "https://us-central1-workflowsample.cloudfunctions.net/datetime"
          },
          "result": "currentTime"
        }
      },
      {
        "readWikipedia": {
          "call": "http.get",
          "args": {
            "url": "https://en.wikipedia.org/w/api.php",
            "query": {
              "action": "opensearch",
              "search": "${currentTime.body.dayOfTheWeek}"
            }
          },
          "result": "wikiResult"
        }
      },
      {
        "returnResult": {
          "return": "${wikiResult.body[1]}"
        }
      }
    ]
    此工作流会调用示例 API。一周的返回日期会传递至 Wikipedia API。系统会返回维基百科上有关本周当前日期的相关文章。
  4. 部署工作流并将其与指定的服务帐号关联:
    gcloud workflows deploy myFirstWorkflow --source=myFirstWorkflow.yaml \
    --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com

    请替换以下内容:

    • .yaml:如果您复制了JSON 版示例工作流,请替换为 .json

    • PROJECT_ID:您的项目 ID。

  5. 执行工作流:
    gcloud workflows run myFirstWorkflow

    这将返回执行尝试的结果。输出内容类似如下:

    argument: 'null'
    endTime: '2020-06-23T16:21:35.266171131Z'
    name: projects/123456789012/locations/us-central1/workflows/myFirstWorkflow/executions/f72bc6d4-5ea0-4dfb-bb14-2dae82303120
    result: '["Tuesday","Tuesday Weld","Tuesday Night Music Club","Tuesday (ILoveMakonnen
      song)","Tuesdays with Morrie","Tuesday Group","Tuesday Knight","Tuesday (Burak Yeter
      song)","Tuesday Morning Quarterback","Tuesday Maybe"]'
    startTime: '2020-06-23T16:21:34.826993288Z'
    state: SUCCEEDED
    workflowVersionId: '1'
    
  6. 您已部署并执行了第一个工作流程!

清理

为避免系统因本页中使用的资源向您的 Google Cloud 帐号收取费用,请按照以下步骤操作。

  1. 删除您创建的工作流:
    gcloud workflows delete myFirstWorkflow
  2. 当系统询问您是否要继续时,请输入 y

工作流已删除。

后续步骤