Richiama le funzioni Cloud Run o Cloud Run

La chiamata o l'invocazione di un servizio Google Cloud come le funzioni Cloud Run o Cloud Run da Workflows avviene tramite una richiesta HTTP. I metodi di richiesta HTTP più comuni hanno una scorciatoia di chiamata (ad esempio 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 maggiori informazioni, consulta Eseguire 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 Identity and Access Management (IAM) 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 saperne di più, consulta Concedere un'autorizzazione di flusso di lavoro per accedere alle risorse Google Cloud.

Quando chiamare un servizio

Come fai a sapere quando creare i passaggi in YAML o JSON utilizzando la sintassi Workflows o quando creare un servizio, ad esempio un servizio Cloud Run o una funzione Cloud Run, per eseguire il lavoro?

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 possono richiamare servizi, analizzare le risposte e creare input per altri servizi collegati. La chiamata di un servizio ti consente di evitare le complicazioni di chiamate aggiuntive, dipendenze aggiuntive e servizi che chiamano servizi.

Crea servizi per svolgere qualsiasi attività troppo complessa per Workflows, ad esempio l'implementazione di logica di business riutilizzabile, calcoli complessi o trasformazioni non supportate dalle espressioni di Workflows e dalla relativa libreria standard. In genere, è più facile implementare una richiesta complicata nel codice anziché utilizzare YAML o JSON e la sintassi Workflows.

Richiama i servizi limitati all'ingresso interno

Workflows possono richiamare funzioni Cloud Run o servizi Cloud Run nello stesso progetto Google Cloud con l'accesso limitato al traffico interno. Con questa configurazione, i servizi non sono raggiungibili da internet, ma possono essere raggiunti da Workflows.

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

Utilizza un account di servizio con le autorizzazioni richieste

Quando invii 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 sapere quale account di servizio è associato a un flusso di lavoro esistente, consulta Verificare l'account di servizio associato a un flusso di lavoro.

Quando configuri un account di servizio, associ l'identità richiedente alla risorsa a cui vuoi concederle l'accesso, ovvero la rendi un'entità della risorsa, quindi le assegni il ruolo appropriato. Il ruolo definisce le autorizzazioni di cui dispone l'identità nel contesto della risorsa.

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

Richiama le funzioni Cloud Run (2ª generazione.)

Nelle funzioni Cloud Run (2ª generazione.), le autorizzazioni di chiamata sono disponibili tramite la gestione del servizio Cloud Run sottostante. Se il tuo flusso di lavoro richiama un servizio di funzioni Cloud Run (2ª generazione.), non devi concedere all'account di servizio dell'autore della chiamata il ruolo Invoker (roles/cloudfunctions.invoker) per le funzioni Cloud Run. Devi invece concedere il ruolo Invoker di Cloud Run (roles/run.invoker).

Per ulteriori informazioni, consulta Confronto delle versioni di Cloud Run Functions.

Aggiungere informazioni di autenticazione al flusso di lavoro

Quando invii richieste alle funzioni Cloud Run o a Cloud Run, utilizza 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 funzione Cloud Run:

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 sullo stesso valore di url; tuttavia, deve essere impostato sull'URL principale del servizio. Ad esempio: https://region-project.cloudfunctions.net/hello_world.

Specifica il tipo di media per i dati di risposta

Se l'intestazione Content-Type della risposta specifica un tipo di media application/json, la risposta JSON memorizzata in una variabile viene convertita automaticamente in una mappa a cui è possibile accedere.

Se necessario, modifica l'API chiamata per specificare un application/json tipo di media per l'Content-Type intestazione di risposta. In caso contrario, 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 della risposta HTTP salvati in una variabile.

Esegui job Cloud Run

A differenza dei servizi Cloud Run, i job Cloud Run non ascoltano né gestiscono 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 di esecuzione di un job Cloud Run che elabora i dati passati come variabili di ambiente al job, consulta Eseguire un job Cloud Run utilizzando i flussi di lavoro.

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

Passaggi successivi