Richiama Cloud Functions o Cloud Run

La chiamata o la chiamata a un servizio Google Cloud come Cloud Functions o Cloud Run da Workflows avviene tramite una richiesta HTTP. I metodi di richiesta HTTP più comuni hanno una scorciatoia di chiamata (come http.get e http.post), ma puoi effettuare qualsiasi tipo di richiesta HTTP impostando il campo call su http.request e specificando il tipo di richiesta utilizzando il campo method. Per ulteriori informazioni, consulta l'articolo Effettuare una richiesta HTTP.

Per inviare richieste autenticate:

  • Il flusso di lavoro deve essere associato a un account di servizio a cui sono stati concessi uno o più ruoli IAM (Identity and Access Management) contenenti le autorizzazioni richieste.

  • Devi aggiungere esplicitamente le informazioni di autenticazione alla definizione del flusso di lavoro. Per impostazione predefinita, le richieste HTTP non contengono token di identità o di accesso per motivi di sicurezza.

Per maggiori informazioni, consulta Concedere l'autorizzazione dei flussi di lavoro per l'accesso alle risorse Google Cloud.

Quando chiamare un servizio

Come fai a sapere quando creare passaggi in YAML o JSON utilizzando la sintassi Workflows o quando creare un servizio, ad esempio un servizio Cloud Run o una Cloud Function, per farlo?

Utilizza Workflows per chiamare i servizi dal flusso di lavoro stesso e gestire i risultati, nonché per eseguire attività semplici come effettuare una chiamata HTTP. Workflows può richiamare servizi, analizzare le risposte e creare input per altri servizi connessi. La chiamata a un servizio consente di evitare le complicazioni dovute a chiamate aggiuntive, dipendenze aggiuntive e servizi di chiamata ai servizi.

Crea servizi per svolgere qualsiasi lavoro troppo complesso per Workflows, ad esempio l'implementazione di una logica di business riutilizzabile, calcoli complessi o trasformazioni non supportate dalle espressioni Workflows e dalla relativa libreria standard. Un caso complicato è in genere più facile da implementare nel codice, anziché utilizzare YAML o JSON e la sintassi di Workflows.

Richiama servizi limitati al traffico in entrata interno

Workflows può richiamare servizi Cloud Functions o Cloud Run nello stesso progetto Google Cloud il cui traffico in entrata è limitato al traffico interno. Con questa configurazione, i tuoi servizi non sono raggiungibili da internet, ma possono essere raggiunti da Workflows.

Per applicare queste restrizioni, devi modificare le impostazioni di traffico in entrata del servizio o della funzione. Tieni presente che il servizio Cloud Run deve essere raggiunto tramite il relativo URL run.app e non presso un dominio personalizzato. Per ulteriori informazioni, consulta Limitazione del traffico in entrata (per Cloud Run) e Configurazione delle impostazioni di rete (per Cloud Functions). Non sono necessarie altre modifiche al flusso di lavoro.

Utilizza un account di servizio con le autorizzazioni richieste

Quando effettui richieste ad altri servizi Google Cloud, il flusso di lavoro deve essere associato a un account di servizio che disponga delle autorizzazioni corrette per accedere alle risorse richieste. Per scoprire quale account di servizio è associato a un flusso di lavoro esistente, vedi Verificare l'account di servizio associato di un flusso di lavoro.

Quando configuri un account di servizio, devi associare l'identità richiedente alla risorsa a cui vuoi concederle l'accesso (rendendo l'identità richiedente un'entità della risorsa) e assegnandole il ruolo appropriato. Il ruolo definisce le autorizzazioni di cui dispone l'identità nel contesto della risorsa.

Ad esempio, per configurare una funzione Cloud Function ricevente in modo che accetti le richieste da una funzione o un servizio di chiamata specifico, devi aggiungere l'account di servizio del chiamante come entità sulla funzione ricevente e concedere a questa entità il ruolo Invoker di Cloud Functions (roles/cloudfunctions.invoker). Analogamente, per configurare un account di servizio per Cloud Run, concedi a quell'account di servizio il ruolo Invoker di Cloud Run (roles/run.invoker). Per saperne di più, consulta le informazioni di autenticazione per Cloud Functions o la panoramica dell'autenticazione di Cloud Run.

Richiama Cloud Functions (2nd gen)

In Cloud Functions (2nd gen), le autorizzazioni di chiamata sono disponibili gestendo il servizio Cloud Run sottostante. Se il tuo flusso di lavoro richiama un servizio Cloud Function (2ª generazione), non è necessario concedere all'account di servizio del chiamante il ruolo Invoker di Cloud Functions (roles/cloudfunctions.invoker). Devi concedere il ruolo Invoker di Cloud Run (roles/run.invoker).

Per maggiori informazioni, consulta Confronto delle versioni di Cloud Functions.

Aggiungi informazioni di autenticazione al flusso di lavoro

Quando effettui richieste a Cloud Functions o Cloud Run, usa OIDC per l'autenticazione.

Per effettuare una richiesta HTTP utilizzando OIDC, aggiungi una sezione auth alla sezione args della definizione del flusso di lavoro, dopo aver specificato l'URL. In questo esempio, viene inviata una richiesta per richiamare una Cloud Function:

YAML

  - step_A:
      call: http.get
      args:
          url: https://us-central1-project.cloudfunctions.net/functionA
          query:
              firstNumber: 4
              secondNumber: 6
              operation: sum
          auth:
              type: OIDC
              audience: OIDC_AUDIENCE
    

JSON

    [
      {
        "step_A": {
          "call": "http.get",
          "args": {
            "url": "https://us-central1-project.cloudfunctions.net/functionA",
            "query": {
              "firstNumber": 4,
              "secondNumber": 6,
              "operation": "sum"
            },
            "auth": {
              "type": "OIDC",
              "audience": "OIDC_AUDIENCE"
            }
          }
        }
      }
    ]
      
Il parametro audience può essere utilizzato per specificare il segmento di pubblico OIDC per il token. Per impostazione predefinita, è impostato lo stesso valore di url, ma deve essere impostato sull'URL principale del tuo servizio. Ad esempio: https://region-project.cloudfunctions.net/hello_world.

Specifica il tipo multimediale per i dati della risposta

Se l'intestazione Content-Type per la risposta specifica un tipo multimediale application/json, la risposta JSON archiviata in una variabile viene automaticamente convertita in una mappa accessibile.

Se necessario, modifica l'API chiamata per specificare un tipo multimediale application/json per l'intestazione della risposta Content-Type. Altrimenti, puoi utilizzare le funzioni json.decode e text.encode per convertire il corpo della risposta in una mappa. Ad esempio:

json.decode(text.encode(RESPONSE_FROM_API))

Per ulteriori informazioni, consulta Accedere ai dati delle risposte HTTP salvati in una variabile.

Esegui job Cloud Run

A differenza dei servizi Cloud Run, i job Cloud Run non ascoltano né forniscono richieste HTTP. Per eseguire job Cloud Run da un flusso di lavoro, utilizza il connettore API Cloud Run Admin.

Per un esempio end-to-end dell'esecuzione di un job Cloud Run che elabora i dati passati come variabili di ambiente al job, consulta Esecuzione di un job Cloud Run utilizzando Workflows.

Per un esempio end-to-end dell'esecuzione di un job Cloud Run che elabora i dati archiviati in un bucket Cloud Storage in modo da criptarli utilizzando chiavi di crittografia gestite dal cliente (CMEK), consulta Eseguire un job Cloud Run che elabora i dati degli eventi in Cloud Storage.

Passaggi successivi