快速入门:使用 gcloud 工具

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

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

准备工作

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

    转到“项目选择器”

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

  4. 安装并初始化 Cloud SDK
  5. 启用 Workflows API。

    gcloud services enable workflows.googleapis.com
  6. 创建服务帐号。将 [NAME] 替换为服务帐号的名称。

    gcloud iam service-accounts create [NAME]
  7. roles/logging.logWriter 角色授予服务帐号。

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

    替换以下内容:
    • [PROJECT_ID]:您的项目 ID。
    • [NAME]:您刚刚创建的服务帐号的名称。
    注意角色字段为您的服务帐号授予资源访问权限。如需将日志发送到 Cloud Logging,请分配 roles/logging.logWriter 角色。如果您开发的是正式版应用,请始终尽可能授予最小访问权限角色。如需了解详情,请参阅为服务帐号授予角色。如需查看工作流角色列表,请参阅访问权限控制参考文档

创建、部署和执行工作流

  1. 创建名为 myFirstWorkflow.yamlmyFirstWorkflow.json 的新文件。

  2. 复制下面其中一个文件并粘贴到新文件中,然后保存该文件:

    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,然后在 Wikipedia 中搜索当天的相关文章。

  3. 打开终端。

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

    gcloud workflows deploy myFirstWorkflow --source=myFirstWorkflow.yaml \
    --service-account=[NAME]@[PROJECT_ID].iam.gserviceaccount.com

    替换以下内容:

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

    • [NAME]:您之前创建的服务帐号的名称

    • [PROJECT_ID]:您的项目 ID。

    此命令会部署工作流并将其与指定的服务帐号相关联。

  5. 输入以下命令以执行工作流:

    gcloud workflows execute myFirstWorkflow
    

    这将返回一个 workflows executions describe 命令,其中包含工作流执行尝试的唯一 ID。输出类似于以下内容:

    Created [cf1b1883-e271-4371-916a-10337bc1b87a].
    To view the workflow status, you can use following command:
    
    gcloud workflows executions describe cf1b1883-e271-4371-916a-10337bc1b87a --workflow myFirstWorkflow
    
  6. 如需查看执行状态,请输入上一步返回的命令。这将返回有关工作流执行的数据,包括结果:

    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'
    

您已部署并执行了自己的第一个工作流!

清理

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

  1. 输入以下命令删除您创建的工作流:

    gcloud workflows delete myFirstWorkflow
    
  2. 当系统询问您是否要继续时,请输入 y

工作流将被删除。

后续步骤