使用 gcloud CLI 创建工作流

本快速入门介绍了如何使用 Google Cloud CLI 创建、部署和执行第一个工作流。示例工作流会向公共 API 发送请求,然后返回该 API 的响应。

如需查看所有 Workflows gcloud CLI 命令的列表,请参阅 Workflows gcloud CLI 参考页面

准备工作

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

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Install the Google Cloud CLI.
  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  9. Make sure that billing is enabled for your Google Cloud project.

  10. 启用 Workflows API。

    gcloud services enable workflows.googleapis.com
  11. 创建服务账号并为其命名;例如 sa-name
    gcloud iam service-accounts create sa-name
  12. 如需将日志发送到 Cloud Logging,请向服务账号授予 roles/logging.logWriter 角色。
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/logging.logWriter"

    如需详细了解服务账号角色和权限,请参阅授予工作流访问 Google Cloud 资源的权限

创建、部署和执行工作流

  1. 在您的主目录中,创建一个名为 myFirstWorkflow.yamlmyFirstWorkflow.json 的新文件。

  2. 将以下工作流复制并粘贴到新文件中,然后保存:

    YAML

    main:
      params: [input]
      steps:
        - checkSearchTermInInput:
            switch:
              - condition: '${"searchTerm" in input}'
                assign:
                  - searchTerm: '${input.searchTerm}'
                next: readWikipedia
        - getLocation:
            call: sys.get_env
            args:
              name: GOOGLE_CLOUD_LOCATION
            result: location
        - setFromCallResult:
            assign:
              - searchTerm: '${text.split(location, "-")[0]}'
        - readWikipedia:
            call: http.get
            args:
              url: 'https://en.wikipedia.org/w/api.php'
              query:
                action: opensearch
                search: '${searchTerm}'
            result: wikiResult
        - returnOutput:
            return: '${wikiResult.body[1]}'

    JSON

    {
      "main": {
        "params": [
          "input"
        ],
        "steps": [
          {
            "checkSearchTermInInput": {
              "switch": [
                {
                  "condition": "${\"searchTerm\" in input}",
                  "assign": [
                    {
                      "searchTerm": "${input.searchTerm}"
                    }
                  ],
                  "next": "readWikipedia"
                }
              ]
            }
          },
          {
            "getLocation": {
              "call": "sys.get_env",
              "args": {
                "name": "GOOGLE_CLOUD_LOCATION"
              },
              "result": "location"
            }
          },
          {
            "setFromCallResult": {
              "assign": [
                {
                  "searchTerm": "${text.split(location, \"-\")[0]}"
                }
              ]
            }
          },
          {
            "readWikipedia": {
              "call": "http.get",
              "args": {
                "url": "https://en.wikipedia.org/w/api.php",
                "query": {
                  "action": "opensearch",
                  "search": "${searchTerm}"
                }
              },
              "result": "wikiResult"
            }
          },
          {
            "returnOutput": {
              "return": "${wikiResult.body[1]}"
            }
          }
        ]
      }
    }
    

    除非您输入自己的搜索字词,否则此工作流会使用您的 Google Cloud 位置构造搜索字词,并将其传递给 Wikipedia API。系统会返回相关 Wikipedia 文章的列表。

  3. 部署工作流并将其与指定的服务账号相关联:

    gcloud workflows deploy myFirstWorkflow --source=myFirstWorkflow.EXTENSION \
        --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com
    

    替换以下内容:

    • EXTENSION:工作流的文件扩展名;对于 YAML 版本,请使用 yaml;对于 JSON 版本,请使用 json
    • PROJECT_ID:您的项目 ID
  4. 执行工作流:

    gcloud workflows run myFirstWorkflow \
        --data='SEARCH_TERM'
    

    SEARCH_TERM 替换为您的搜索字词,例如 {"searchTerm":"North"}。如果您输入 {},系统会使用您的 Google Cloud 位置信息来构建搜索字词。

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

    argument: '{"searchTerm":"North"}'
    duration: 0.210616856s
    endTime: '2023-05-10T21:56:39.465899376Z'
    name: projects/734581694262/locations/us-central1/workflows/workflow-1/executions/eae31f11-a5c3-47e2-8014-05b400820a79
    result: '["North","North America","Northern Ireland","North Korea","North Macedonia","North
      Carolina","Northrop Grumman B-2 Spirit","Northrop F-5","Northern Cyprus","North
      Dakota"]'
    startTime: '2023-05-10T21:56:39.255282520Z'
    state: SUCCEEDED
    status:
      currentSteps:
      - routine: main
        step: returnOutput
    workflowRevisionId: 000001-ac2
    

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

清理

为避免因本页面中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的 Google Cloud 项目。

  1. 删除您创建的工作流:

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

工作流已删除。

后续步骤