Richiamare un servizio Google Cloud utilizzando un connettore

Workflows pubblica i connettori per semplificare l'accesso ad altre APIGoogle Cloud all'interno di un flusso di lavoro e per integrare i tuoi 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 chiavi di autenticazione da Secret Manager. Per un riferimento dettagliato dei connettori disponibili, consulta la documentazione di riferimento sui connettori.

I connettori semplificano la chiamata 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'API Google Cloud . 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'richiamo di 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 di connessione nel modulo googleapis.gcp_service.version.resource.operation. Ad esempio googleapis.bigquery.v2.tables.get.
  • ARG e ARG_VALUE (obbligatorio): ogni chiamata al connettore richiede argomenti diversi.
  • KEY e KEY_VALUE (facoltativo): campi per fornire input all'API.
  • (Facoltativo) Parametri specifici del connettore:
    • TIMEOUT_IN_SECONDS: tempo in secondi. La durata end-to-end per cui è consentito eseguire la chiamata al 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 di lunga durata. In caso contrario, per le operazioni di lunga durata, il timeout massimo per una chiamata al connettore è di 31536000 secondi (un anno).
    • INITIAL_DELAY_IN_SECONDS: parametro della policy di polling con un valore predefinito di 1.0. Si applica solo alle chiamate di operazioni a lunga esecuzione.
    • MULTIPLIER_VALUE: parametro della policy 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 policy 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 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 dei nuovi tentativi. Il polling dello stato (HTTP GET richieste successive alla richiesta iniziale) viene ignorato per loperazione 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 viene memorizzato il risultato di un passaggio di chiamata di un connettore.

Esempio

Il seguente flusso di lavoro mostra l'utilizzo sia del connettore dell'API Cloud Storage 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