Invocar um serviço do Google Cloud usando um conector

O Workflows publica conectores para facilitar o acesso a outras APIs do Google Cloud em um fluxo de trabalho e a integração de seus fluxos com esses produtos do Google Cloud. Por exemplo, é possível usar conectores para publicar mensagens do Pub/Sub, ler ou gravar dados em um banco de dados do Firestore ou recuperar chaves de autenticação do Secret Manager. Para ver uma referência detalhada dos conectores disponíveis, consulte a referência de conectores.

Os conectores simplificam os serviços de chamada porque processam a formatação das solicitações, fornecendo métodos e argumentos para que você não precise conhecer os detalhes de uma API Google Cloud. Para saber mais sobre autenticação e comportamento durante novas tentativas e operações de longa duração, consulte Entender os conectores.

Invocar uma chamada de conector

Assim como a invocação de um endpoint HTTP, uma chamada de conector requer os campos call e args. É possível especificar um valor de tempo limite e uma política de pesquisa usando o bloco 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

Substitua:

  • STEP_NAME: o nome da etapa.
  • CONNECTOR (obrigatório): o método do conector no formato googleapis.gcp_service.version.resource.operation. Por exemplo, googleapis.bigquery.v2.tables.get.
  • ARG e ARG_VALUE (obrigatórios): cada chamada de conector exige argumentos diferentes.
  • KEY e KEY_VALUE (opcional): campos para fornecer entrada para a API.
  • Parâmetros específicos do conector (opcional):
    • TIMEOUT_IN_SECONDS: tempo em segundos. A duração completa pela qual a chamada do conector pode ser executada antes de gerar uma exceção de tempo limite. O valor padrão é 1800, que deve ser o máximo para métodos de conector que não são operações de longa duração. Caso contrário, para operações de longa duração, o tempo limite máximo de uma chamada de conector será de 31536000 segundos (um ano).
    • INITIAL_DELAY_IN_SECONDS: parâmetro de política de pesquisa com um valor padrão de 1.0. Aplicável apenas a chamadas de operação de longa duração.
    • MULTIPLIER_VALUE: parâmetro de política de pesquisa com um valor padrão de 1.25. Aplicável apenas a chamadas de operação de longa duração.
    • MAX_DELAY_IN_SECONDS: parâmetro de política de pesquisa com um valor padrão de 60.0. Aplicável apenas a chamadas de operação de longa duração.
    • SKIP_POLLING_SWITCH: se definido como True, a chamada de invocação do conector não bloqueia se a solicitação inicial para gerenciar ou atualizar o recurso for bem-sucedida (geralmente HTTP POST, HTTP UPDATE ou HTTP DELETE). Se a solicitação inicial não for bem-sucedida, poderão ocorrer novas tentativas. A pesquisa de status (solicitações HTTP GET que seguem a solicitação inicial) é ignorada para a operação de longa duração depois que a solicitação inicial é concluída. O valor padrão é False.
    • OAUTH2_SCOPE: escopos do OAuth2 a serem transmitidos para a API do Google. Pode ser uma string, uma lista de strings, uma string separada por espaços ou uma string separada por vírgulas.
  • RESPONSE_VALUE (opcional): nome da variável em que o resultado de uma etapa de invocação da chamada do conector é armazenado.

Exemplo

O fluxo de trabalho a seguir demonstra o uso dos conectores da API Cloud Storage e da API Cloud Translation para traduzir dois arquivos para o francês e o espanhol, salvando os resultados em um bucket do 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

A seguir