Invocar un servicio de Google Cloud mediante un conector

Workflows publica conectores para facilitar el acceso a otrasGoogle Cloud APIs dentro de un flujo de trabajo y para integrar tus flujos de trabajo con esos productos Google Cloud . Por ejemplo, puedes usar conectores para publicar mensajes de Pub/Sub, leer o escribir datos en una base de datos de Firestore o recuperar claves de autenticación de Secret Manager. Para obtener una referencia detallada de los conectores disponibles, consulta la referencia de conectores.

Los conectores simplifican las llamadas a servicios, ya que se encargan de dar formato a las solicitudes, y proporcionan métodos y argumentos para que no tengas que conocer los detalles de una API de Google Cloud . Para obtener más información sobre la autenticación y el comportamiento durante los reintentos y las operaciones de larga duración, consulta Información sobre los conectores.

Invocar una llamada de conector

Al igual que al invocar un endpoint HTTP, una llamada de conector requiere los campos call y args. Puedes especificar un valor de tiempo de espera y una política de sondeo con el bloque 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

Haz los cambios siguientes:

  • STEP_NAME: el nombre del paso.
  • CONNECTOR (obligatorio): el método del conector en el formulario googleapis.gcp_service.version.resource.operation. Por ejemplo, googleapis.bigquery.v2.tables.get.
  • ARG y ARG_VALUE (obligatorios): cada llamada de conector requiere argumentos diferentes.
  • KEY y KEY_VALUE (opcional): campos para proporcionar información a la API.
  • Parámetros específicos del conector (opcional):
    • TIMEOUT_IN_SECONDS: tiempo en segundos. Duración total que se permite que se ejecute la llamada del conector antes de generar una excepción de tiempo de espera. El valor predeterminado es 1800, que debería ser el máximo para los métodos de conectores que no sean operaciones de larga duración. De lo contrario, en el caso de las operaciones de larga duración, el tiempo de espera máximo de una llamada de conector es de 31536000 segundos (un año).
    • INITIAL_DELAY_IN_SECONDS: parámetro de política de votación con el valor predeterminado 1.0. Solo se aplica a las llamadas de operaciones de larga duración.
    • MULTIPLIER_VALUE: parámetro de política de sondeo con el valor predeterminado 1.25. Solo se aplica a las llamadas de operaciones de larga duración.
    • MAX_DELAY_IN_SECONDS: parámetro de política de sondeo con el valor predeterminado 60.0. Solo se aplica a las llamadas de operaciones de larga duración.
    • SKIP_POLLING_SWITCH: si se define como True, la llamada de invocación del conector no se bloquea si la solicitud inicial para gestionar o actualizar el recurso se realiza correctamente (normalmente, HTTP POST, HTTP UPDATE o HTTP DELETE). Si la solicitud inicial no se realiza correctamente, se pueden producir reintentos. El sondeo del estado (HTTP GET solicitudes que siguen a la solicitud inicial) se omite en la operación de larga duración una vez que se completa la solicitud inicial. El valor predeterminado es False.
    • OAUTH2_SCOPE: permisos de OAuth2 que se deben transferir a la API de Google. Puede ser una cadena, una lista de cadenas, una cadena separada por espacios o una cadena separada por comas.
  • RESPONSE_VALUE (opcional): nombre de la variable en la que se almacena el resultado de un paso de invocación de llamada de conector.

Ejemplo

En el siguiente flujo de trabajo se muestra cómo usar el conector de la API Cloud Storage y el conector de la API Cloud Translation para traducir dos archivos al francés y al español, y guardar los resultados en un segmento de 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

Siguientes pasos