使用连接器调用 Google Cloud 服务

Workflows 发布连接器,以更轻松地访问工作流中的其他Google Cloud API,以及将工作流与这些 Google Cloud 产品集成。例如,您可以使用连接器发布 Pub/Sub 消息、在 Firestore 数据库中读取或写入数据,或从 Secret Manager 检索身份验证密钥。如需详细了解可用连接器,请参阅连接器参考

连接器会为您处理请求的格式,从而为您处理请求的格式设置并提供方法和实参,这样您就无需了解 Google Cloud API 的详细信息。如需详细了解身份验证以及重试和长时间运行的操作期间的行为,请参阅了解连接器

调用连接器调用

调用 HTTP 端点类似,连接器调用需要 callargs 字段。您可以使用 connector_params 代码块指定超时值和轮询政策:

- STEP_NAME:
    call: CONNECTOR
    args:
        ARG: ARG_VALUE
        [...]
        body:
            KEY:KEY_VALUE
            [...]
        connector_params:
            timeout: TIMEOUT_IN_SECONDS
            polling_policy:
                initial_delay: INITIAL_DELAY_IN_SECONDS
                multiplier: MULTIPLIER_VALUE
                max_delay: MAX_DELAY_IN_SECONDS
            skip_polling: SKIP_POLLING_SWITCH 
            scopes:  OAUTH2_SCOPE 
    result: RESPONSE_VALUE

替换以下内容:

  • STEP_NAME:步骤的名称。
  • CONNECTOR(必需):连接器方法,格式为 googleapis.gcp_service.version.resource.operation。例如 googleapis.bigquery.v2.tables.get
  • ARGARG_VALUE(必需):每个连接器调用都需要不同的实参。
  • KEYKEY_VALUE(可选):用于向 API 提供输入的字段。
  • 连接器专用参数(可选):
    • TIMEOUT_IN_SECONDS:时间,以秒为单位。 连接器调用在抛出超时异常之前可以运行的端到端时长。默认值为 1800,对于非长时间运行的操作,此值应为连接器方法的上限。否则,对于长时间运行的操作,连接器调用的最长超时时间为 31536000 秒(一年)。
    • INITIAL_DELAY_IN_SECONDS:轮询政策参数,默认值为 1.0。仅适用于长时间运行的操作调用。
    • MULTIPLIER_VALUE:轮询政策参数,默认值为 1.25。仅适用于长时间运行的操作调用。
    • MAX_DELAY_IN_SECONDS:轮询政策参数,默认值为 60.0。仅适用于长时间运行的操作调用。
    • SKIP_POLLING_SWITCH:如果设置为 True,则当管理或更新资源的初始请求成功(通常为 HTTP POSTHTTP UPDATEHTTP DELETE)时,连接器调用是非阻塞的。如果初始请求不成功,可能会进行重试。在初始请求完成后,长时间运行的操作会跳过状态轮询(初始请求之后的 HTTP GET 请求)。默认值为 False
    • OAUTH2_SCOPE:要传递给 Google API 的 OAuth2 范围。可以是字符串、字符串列表、以空格分隔的字符串或以英文逗号分隔的字符串。
  • RESPONSE_VALUE(可选):存储连接器调用执行步骤的结果的变量名称。

示例

以下工作流演示了如何同时使用 Cloud Storage API 连接器Cloud Translation API 连接器将两个文件翻译为法语和西班牙语,并将结果保存在 Cloud Storage 存储桶中。

main:
  steps:
  - init:
      assign:
      - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
      - location: ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
      - inputBucketName: ${projectId + "-input-files"}
      - outputBucketName: ${projectId + "-output-files-" + string(int(sys.now()))}
  - createOutputBucket:
        call: googleapis.storage.v1.buckets.insert
        args:
          project: ${projectId}
          body:
            name: ${outputBucketName}
  - batchTranslateText:
      call: googleapis.translate.v3beta1.projects.locations.batchTranslateText
      args:
          parent: ${"projects/" + projectId + "/locations/" + location}
          body:
              inputConfigs:
                gcsSource:
                  inputUri: ${"gs://" + inputBucketName + "/*"}
              outputConfig:
                  gcsDestination:
                    outputUriPrefix: ${"gs://" + outputBucketName + "/"}
              sourceLanguageCode: "en"
              targetLanguageCodes: ["es", "fr"]
      result: batchTranslateTextResult

后续步骤