使用连接器调用 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 秒(1 年)。
    • 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。可以是字符串、字符串列表、以空格分隔的字符串或以英文逗号分隔的字符串。
  • 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

后续步骤