Invoca un servicio de Google Cloud con un conector

Workflows publica conectores para facilitar el acceso a otros las APIs de Google Cloud en un flujo de trabajo y, además, integrar tus 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 Firestore o recuperar claves de autenticación de Secret Manager. Para un consulta detallada de los conectores disponibles, consulta la Referencia de conectores.

Los conectores simplifican los servicios de llamadas porque manejan 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 Comprende los conectores.

Invocar una llamada del conector

Al igual que la invocación de un extremo HTTP, una llamada del conector requiere los campos call y args. Puedes especificar un tiempo de espera y la 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 conector en el formulario. googleapis.gcp_service.version.resource.operation Por ejemplo, googleapis.bigquery.v2.tables.get.
  • ARG y ARG_VALUE (obligatorios): Cada llamada al conector requiere argumentos diferentes.
  • KEY y KEY_VALUE (opcionales): para proporcionar entradas a la API.
  • Parámetros específicos del conector (opcional):
    • TIMEOUT_IN_SECONDS: Tiempo en segundos. Duración de extremo a extremo durante la que se puede ejecutar la llamada al conector antes de Se produce una excepción de tiempo de espera. El valor predeterminado es 1800 y este debe ser el máximo para los métodos de conector que no son operaciones de larga duración. De lo contrario, para operaciones de larga duración, el tiempo de espera máximo para un de 31536000 segundos (un año).
    • INITIAL_DELAY_IN_SECONDS: política de sondeo parámetro con un valor predeterminado de 1.0. Solo se aplica a aplicaciones de larga duración llamadas de operación.
    • MULTIPLIER_VALUE: Parámetro de la política de sondeo con un valor predeterminado de 1.25. Solo se aplica a llamadas a operaciones de larga duración.
    • MAX_DELAY_IN_SECONDS: Parámetro de la política de sondeo con un valor predeterminado de 60.0. Solo se aplica a las llamadas de operación de larga duración.
    • SKIP_POLLING_SWITCH: Si se establece en True, la de invocación del conector no tiene bloqueo si la solicitud inicial para o la actualización del recurso se realiza correctamente (por lo general, HTTP POST, HTTP UPDATE o HTTP DELETE). Si la solicitud inicial no se realiza correctamente, es posible que de que ocurran cambios. Sondeo de estado (HTTP GET solicitudes después de la solicitud) se omite para la operación de larga duración después de la se completa la solicitud. El valor predeterminado es False.
    • OAUTH2_SCOPE: Son los permisos de OAuth2 que se deben pasar al 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): Es el nombre de la variable en el que el resultante de un paso de invocación de la llamada del conector se almacena.

Ejemplo

En el siguiente flujo de trabajo, se demuestra el uso de Conector de la API de Cloud Storage y las Conector de la API de Cloud Translation para traducir dos archivos al francés y al español, y guardar los resultados en una 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?