Richiamare un servizio Google Cloud utilizzando un connettore

Workflows pubblicano 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 il riferimento ai connettori.

I connettori semplificano le chiamate ai servizi perché gestiscono la formattazione delle richieste, fornendo metodi e argomenti in modo da non dover 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 del 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 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): ogni chiamata del 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 consentita per l'esecuzione della chiamata del 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 di lunga durata. In caso contrario, per le operazioni che richiedono molto tempo, il timeout massimo per una chiamata del connettore è di 31536000 secondi (un anno).
    • INITIAL_DELAY_IN_SECONDS: parametro della strategia di polling con un valore predefinito di 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 operazione 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 a lunga esecuzione 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 mostra l'utilizzo sia del connettore API Cloud Storage che 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