Invocar um serviço Google Cloud através de um conector

O Workflows publica conectores para facilitar o acesso a outrasGoogle Cloud APIs num fluxo de trabalho e para integrar os seus fluxos de trabalho com esses Google Cloud produtos. Por exemplo, pode usar conetores para publicar mensagens do Pub/Sub, ler ou escrever dados numa base de dados do Firestore ou obter chaves de autenticação do Secret Manager. Para uma referência detalhada dos conetores disponíveis, consulte a Referência de conetores.

Os conetores simplificam os serviços de chamadas porque processam a formatação dos pedidos por si, fornecendo métodos e argumentos para que não precise de conhecer os detalhes de uma API Google Cloud . Para saber mais acerca da autenticação e do comportamento durante as novas tentativas e as operações de longa duração, consulte o artigo Compreender os conetores.

Google Cloud

Invocar uma chamada de conetor

Semelhante à invocação de um ponto final HTTP, uma chamada de conector requer os campos call e args. Pode especificar um valor de limite de tempo e uma política de sondagem através do 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 o seguinte:

  • STEP_NAME: o nome do passo.
  • CONNECTOR (obrigatório): o método de conetor no formulário googleapis.gcp_service.version.resource.operation. Por exemplo, googleapis.bigquery.v2.tables.get.
  • ARG e ARG_VALUE (obrigatório): cada chamada do conector requer argumentos diferentes.
  • KEY e KEY_VALUE (opcional): campos para fornecer entrada à API.
  • Parâmetros específicos do conetor (opcional):
    • TIMEOUT_IN_SECONDS: tempo em segundos. A duração total que a chamada do conector pode ser executada antes de gerar uma exceção de tempo limite. O valor predefinido é 1800 e deve ser o máximo para métodos de conector que não sejam operações de longa duração. Caso contrário, para operações de longa duração, o limite de tempo máximo para uma chamada de conector é de 31536000 segundos (um ano).
    • INITIAL_DELAY_IN_SECONDS: parâmetro de política de sondagem com um valor predefinido de 1.0. Aplica-se apenas a chamadas de operações de longa duração.
    • MULTIPLIER_VALUE: parâmetro da política de sondagem com um valor predefinido de 1.25. Aplica-se apenas a chamadas de operações de longa duração.
    • MAX_DELAY_IN_SECONDS: parâmetro de política de sondagem com um valor predefinido de 60.0. Aplica-se apenas a chamadas de operação de longa duração.
    • SKIP_POLLING_SWITCH: se estiver definido como True, a chamada de invocação do conector não é bloqueadora se o pedido inicial para gerir ou atualizar o recurso for bem-sucedido (normalmente, HTTP POST, HTTP UPDATE ou HTTP DELETE). Se o pedido inicial não for bem-sucedido, podem ocorrer novas tentativas. A sondagem do estado (HTTP GET pedidos que seguem o pedido inicial) é ignorada para a operação de longa duração após a conclusão do pedido inicial. O valor predefinido é False.
    • OAUTH2_SCOPE: âmbitos do OAuth2 a transmitir à API 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 onde o resultado de um passo de invocação de chamada de conetor é armazenado.

Exemplo

O fluxo de trabalho seguinte demonstra a utilização do conector da API Cloud Storage e do conector da API Cloud Translation para traduzir dois ficheiros para francês e espanhol, guardando os resultados num contentor 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

O que se segue?