Richiamare un servizio Google Cloud utilizzando un connettore

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

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

Richiamare una chiamata al connettore

Analogamente all'invocazione di un endpoint HTTP, una chiamata al connettore richiede i campi call e args. Puoi specificare un valore di timeout e una norma 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 input all'API.
  • (Facoltativo) Parametri specifici del connettore:
    • TIMEOUT_IN_SECONDS: tempo in secondi. La durata end-to-end per cui è consentita l'esecuzione della chiamata al connettore prima di generare un'eccezione di timeout. Il valore predefinito è 1800 e deve essere il valore 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 una chiamata al connettore è di 31536000 secondi (un anno).
    • INITIAL_DELAY_IN_SECONDS: parametro della norma di polling con un valore predefinito di 1.0. Si applica solo alle chiamate di operazioni a lunga esecuzione.
    • MULTIPLIER_VALUE: parametro della norma di polling con un valore predefinito di 1.25. Si applica solo alle chiamate di operazione a lunga esecuzione.
    • MAX_DELAY_IN_SECONDS: parametro della norma 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 invocazione del connettore non è bloccante se la richiesta iniziale per gestire o aggiornare la risorsa ha esito positivo (in genere HTTP POST, HTTP UPDATE o HTTP DELETE). Se la richiesta iniziale non va a buon fine, potrebbero verificarsi nuovi tentativi. Il polling dello stato (richieste HTTP GET successive alla richiesta iniziale) viene ignorato per l'operazione a lunga esecuzione al termine 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 invocazione della chiamata al connettore.

Esempio

Il seguente workflow mostra l'utilizzo sia del connettore dell'API Storage Cloud sia del connettore dell'API Cloud Translation per tradurre due file in francese e 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