使用连接器调用 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

后续步骤