Richiamare un servizio Google Cloud utilizzando un connettore

Workflows pubblica i 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 pubblicare messaggi Pub/Sub, leggere o scrivere dati in un file Firestore o recuperare le chiavi di autenticazione da Secret Manager. Per un riferimento dettagliato dei connettori disponibili, consulta il riferimento ai connettori.

I connettori semplificano le chiamate ai servizi perché gestiscono la formattazione richieste per te, 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.

Richiama una chiamata connettore

In modo simile a richiamare un endpoint HTTP, una chiamata al 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 modulo googleapis.gcp_service.version.resource.operation. Ad esempio: googleapis.bigquery.v2.tables.get.
  • ARG e ARG_VALUE (obbligatori): ciascuna chiamata al connettore richiede argomenti diversi.
  • KEY e KEY_VALUE (facoltativo): campi per fornire l'input all'API.
  • Parametri specifici del connettore (facoltativi):
    • TIMEOUT_IN_SECONDS: tempo in secondi. La durata end-to-end consentita per l'esecuzione della chiamata al connettore prima del giorno generando un'eccezione di timeout. Il valore predefinito è 1800 e dovrebbe essere il massimo per i metodi del connettore che non sono operazioni a lunga esecuzione. In caso contrario, per le operazioni a lunga esecuzione, il timeout massimo per un la durata della chiamata al connettore è di 31536000 secondi (un anno).
    • INITIAL_DELAY_IN_SECONDS: criterio di polling con il valore predefinito 1.0. Si applica solo alle chiamate di operazioni di lunga durata.
    • MULTIPLIER_VALUE: parametro del criterio di polling con un valore predefinito di 1.25. Si applica solo alle chiamate di operazione a lunga esecuzione.
    • MAX_DELAY_IN_SECONDS: parametro delle norme di polling con un valore predefinito di 60.0. Si applica solo alle chiamate di operazioni a lunga esecuzione.
    • SKIP_POLLING_SWITCH: se impostato su True, la chiamata di InvocationConnector non è bloccante se la richiesta iniziale di gestione o aggiornamento della risorsa va a buon fine (di solito HTTP POST, HTTP UPDATE o HTTP DELETE). Se la richiesta iniziale non va a buon fine, potrebbero verificarsi ritenta. Il polling dello stato (richieste HTTP GET che seguono la richiesta iniziale) viene ignorato per l'operazione di lunga durata dopo il completamento della richiesta iniziale. Il valore predefinito è False.
    • OAUTH2_SCOPE: ambiti OAuth2 da passare all'API 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 viene memorizzato il risultato di un passaggio di chiamata del connettore.

Esempio

Il seguente flusso di lavoro illustra l'utilizzo sia del modello Connettore API Cloud Storage e ai Connettore API Cloud Translation tradurre due file in francese e spagnolo, salvando i risultati in una nel 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