Invoca un servicio de Google Cloud con un conector

Workflows publica conectores para facilitar el acceso a otras APIs de Google Cloud dentro de un flujo de trabajo y, además, integrar los flujos de trabajo en esos productos de 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 los servicios de llamadas porque controlan el formato de las solicitudes por ti y proporcionan métodos y argumentos para que no necesites 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 al conector

Al igual que la invocación de un extremo HTTP, una llamada al conector requiere los campos call y args. Puedes especificar un valor de tiempo 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

Reemplaza lo siguiente:

  • STEP_NAME: Es el nombre del paso.
  • CONNECTOR (obligatorio): Es el método del conector con el formato googleapis.gcp_service.version.resource.operation. Por ejemplo, googleapis.bigquery.v2.tables.get.
  • ARG y ARG_VALUE (obligatorio): Cada llamada al conector requiere argumentos diferentes.
  • KEY y KEY_VALUE (opcional): Son campos para proporcionar entrada a la API.
  • Parámetros específicos del conector (opcional):
    • TIMEOUT_IN_SECONDS: Tiempo en segundos. La duración de extremo a extremo que puede ejecutarse la llamada del conector antes de arrojar una excepción de tiempo de espera. El valor predeterminado es 1800 y debería ser el máximo para los métodos de conector que no son operaciones de larga duración. De lo contrario, para 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: Es el parámetro de la política de sondeo con un valor predeterminado de 1.0. Solo se aplica a las llamadas de operación de larga duración.
    • MULTIPLIER_VALUE: Son el parámetro de la política de sondeo con un valor predeterminado de 1.25. Solo se aplica a las llamadas a operaciones de larga duración.
    • MAX_DELAY_IN_SECONDS: Son el parámetro de la política de sondeo con un valor predeterminado de 60.0. Solo se aplica a llamadas a operaciones de larga duración.
    • SKIP_POLLING_SWITCH: Si se configura como True, la llamada de invocación del conector no bloquea si la solicitud inicial para administrar o actualizar el recurso se realiza correctamente (por lo general, HTTP POST, HTTP UPDATE o HTTP DELETE). Si la solicitud inicial no se realiza de forma correcta, pueden ocurrir reintentos. El sondeo del estado (solicitudes HTTP GET que siguen a la solicitud inicial) se omite para la operación de larga duración después de que se completa la solicitud inicial. El valor predeterminado es False.
    • OAUTH2_SCOPE: Son los permisos de OAuth2 que se pasarán a la API de Google. Puede ser una string, una lista de strings, una string separada por espacios o una separada por comas.
  • RESPONSE_VALUE (opcional): Es el nombre de la variable en la que se almacena el resultado de un paso de invocación de llamada del conector.

Ejemplo

En el siguiente flujo de trabajo, se muestra el uso del conector de la API de Cloud Storage y el conector de la API de Cloud Translation para traducir dos archivos al francés y al español, lo que guarda los resultados en un bucket 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

¿Qué sigue?