Richiamare un servizio Google Cloud utilizzando un connettore

Workflows pubblica connettori per semplificare l'accesso ad altre API Google Cloud all'interno di un flusso di lavoro e per integrare i flussi di lavoro con questi prodotti Google Cloud. Ad esempio, puoi utilizzare i connettori per pubblicare messaggi Pub/Sub, leggere o scrivere dati in un database Firestore o recuperare le chiavi di autenticazione da Secret Manager. Per un riferimento dettagliato dei connettori disponibili, consulta la documentazione di riferimento sui connettori.

I connettori semplificano i servizi di chiamata perché gestiscono la formattazione delle richieste per conto tuo, fornendo metodi e argomenti in modo che non sia necessario conoscere i dettagli di un'API Google Cloud. Per scoprire di più sull'autenticazione e sul comportamento durante i nuovi tentativi e le operazioni a lunga esecuzione, consulta Informazioni sui connettori.

Richiamare una chiamata connettore

Analogamente alla chiamata di un endpoint HTTP, una chiamata connettore richiede i campi call e args. Puoi specificare un valore di timeout e un criterio di polling utilizzando il blocco 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

Sostituisci quanto segue:

  • STEP_NAME: il nome del passaggio.
  • CONNECTOR (obbligatorio): il metodo del connettore nel formato googleapis.gcp_service.version.resource.operation. Ad esempio, googleapis.bigquery.v2.tables.get.
  • ARG e ARG_VALUE (obbligatori): ogni chiamata al connettore richiede argomenti diversi.
  • KEY e KEY_VALUE (facoltativi): campi per fornire l'input all'API.
  • Parametri specifici del connettore (facoltativi):
    • TIMEOUT_IN_SECONDS: tempo in secondi. La durata end-to-end dell'esecuzione della chiamata connettore prima di generare un'eccezione di timeout. Il valore predefinito è 1800 e deve essere il massimo per i metodi del connettore che non sono operazioni a lunga esecuzione. Altrimenti, per le operazioni a lunga esecuzione, il timeout massimo per una chiamata connettore è di 31536000 secondi (un anno).
    • INITIAL_DELAY_IN_SECONDS: parametro del criterio di polling con un valore predefinito di 1.0. Si applica solo alle chiamate operative a lunga esecuzione.
    • MULTIPLIER_VALUE: parametro del criterio di polling con valore predefinito 1.25. Si applica solo alle chiamate a operazione a lunga esecuzione.
    • MAX_DELAY_IN_SECONDS: parametro del criterio di polling con un valore predefinito di 60.0. Si applica solo alle chiamate di operazione a lunga esecuzione.
    • SKIP_POLLING_SWITCH: se è impostato su True, la chiamata di chiamata del connettore non blocca se la richiesta iniziale di gestione o aggiornamento della risorsa ha esito positivo (di solito HTTP POST, HTTP UPDATE o HTTP DELETE). Se la richiesta iniziale non ha esito positivo, potrebbero verificarsi nuovi tentativi. Il polling dello stato (HTTP GET richieste che seguono la richiesta iniziale) viene ignorato per l'operazione a lunga esecuzione dopo il completamento della richiesta iniziale. Il valore predefinito è False.
    • OAUTH2_SCOPE: ambiti OAuth2 da passare all'API di Google. Può essere una stringa, un elenco di stringhe, una stringa separata da spazi o una stringa separata da virgole.
  • RESPONSE_VALUE (facoltativo): nome della variabile in cui è archiviato il risultato di un passaggio di chiamata del connettore.

Esempio

Il seguente flusso di lavoro dimostra l'utilizzo sia del connettore API Cloud Storage che del connettore API Cloud Translation per tradurre due file in francese e in spagnolo, salvando i risultati in un bucket 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

Passaggi successivi